turning to the drawings , wherein like reference numerals refer to like elements , the invention is illustrated as being implemented in a suitable computing environment . although not required , the invention will be described in the general context of computer - executable instructions , such as programs , being executed by a computing device . generally , programs include routines , other programs , objects , components , data structures , dynamic - linked libraries ( dlls ), executable code , etc . that perform particular tasks or implement particular abstract data types . moreover , those skilled in the art will appreciate that the invention may be practiced with other computer system configurations , including hand - held devices , multi - processor systems , microprocessor based or programmable consumer electronics , network pcs , minicomputers , mainframe computers , and the like . the invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network . in a distributed computing environment , parts of a program may be located in both local and remote memory storage devices . with reference to fig1 , an exemplary system for implementing the invention is shown . the system includes a general purpose - computing device 20 , including a processing unit 21 , a system memory 22 , and a system bus 23 that couples various system components including the system memory to the processing unit 21 . the system bus 23 may be any of several types of bus structures including a memory bus or memory controller , a peripheral bus , and a local bus using any of a variety of bus architectures . the system memory includes read only memory ( rom ) 24 and random access memory ( ram ) 25 . a basic input / output system ( bios ) 26 , containing the basic routines that help to transfer information between elements within the computing device 20 , such as during start - up , is stored in the rom 24 . the computing device 20 further includes a hard disk drive 27 for reading from and writing to a hard disk 60 , a magnetic disk drive 28 for reading from or writing to a removable magnetic disk 29 , and an optical disk drive 30 for reading from or writing to a removable optical disk 31 such as a cd rom or other optical media . the hard disk drive 27 , magnetic disk drive 28 , and optical disk drive 30 are connected to the system bus 23 by a hard disk drive interface 32 , a magnetic disk drive interface 33 , and an optical disk drive interface 34 , respectively . the drives and their associated computer - readable media provide nonvolatile storage of computer readable instructions , data structures , programs and other data for the computing device 20 . although the exemplary environment described herein employs a hard disk 60 , a removable magnetic disk 29 , and a removable optical disk 31 , it will be appreciated by those skilled in the art that other types of computer readable media which can store data that is accessible by a computer , such as magnetic cassettes , flash memory cards , digital video disks , bernoulli cartridges , random access memories , read only memories , and the like may also be used in the exemplary operating environment . a number of programs may be stored on the hard disk 60 , magnetic disk 29 , optical disk 31 , rom 24 or ram 25 , including an operating system 35 , one or more application programs 36 , other programs 37 , and program data 38 . a user may enter commands and information into the computing device 20 through input devices such as a keyboard 40 , which is typically connected to the computing device 20 via a keyboard controller 62 , and a pointing device , such as a mouse 42 . other input devices ( not shown ) may include a microphone , joystick , game pad , wireless antenna , scanner , or the like . these and other input devices are often connected to the processing unit 21 through a serial port interface 46 that is coupled to the system bus , but may be connected by other interfaces , such as a parallel port , game port , a universal serial bus ( usb ), or a 1394 bus . a monitor 47 or other type of display device is also connected to the system bus 23 via an interface , such as a video adapter 48 . in addition to the monitor , computing devices typically include other peripheral output devices , not shown , such as speakers and printers . the computing device 20 may operate in a networked environment using logical connections to one or more devices within a network 63 , including another computing device , a server , a network pc , a peer device or other network node . these devices typically include many or all of the elements described above relative to the computing device 20 . the logical connections depicted in fig1 include a land - based network link 51 , for which there are many possible implementations , including a local area network ( lan ) link and a wide area network ( wan ) link . land - based network links are commonplace in offices , enterprise - wide computer networks , intranets and the internet and include such physical implementations as coaxial cable , twisted copper pairs , fiber optics , and the like . data may transmitted over the network links 51 according to a variety of well - known transport standards , including ethernet , sonet , dsl , t - 1 , and the like . when used in a lan , the computing device 20 is connected to the network 51 through a network interface card or adapter 53 . when used in a wan , the computing device 20 typically includes a modem 54 or other means for establishing communications over the network link 51 , as shown by the dashed line . the modem 54 , which may be internal or external , is connected to the system bus 23 via the serial port interface 46 . in a networked environment , programs depicted relative to the computing device 20 , or portions thereof , may be stored on other devices within the network 63 . in the description that follows , the invention will be described with reference to acts and symbolic representations of operations that are performed by one or more computing devices , unless indicated otherwise . as such , it will be understood that such acts and operations , which are at times referred to as being computer - executed , include the manipulation by the processing unit of the computer of electrical signals representing data in a structured form . this manipulation transforms the data or maintains it at locations in the memory system of the computer , which reconfigures or otherwise alters the operation of the computer in a manner well understood by those skilled in the art . the data structures where data is maintained are physical locations of the memory that have particular properties defined by the format of the data . however , while the invention is being described in the foregoing context , it is not meant to be limiting as those of skill in the art will appreciate that various of the acts and operation described hereinafter may also be implemented in hardware . referring to fig2 and 3 , a preferred embodiment of the invention is shown as being implemented on an exemplary computer network 63 . as best shown in fig2 , the exemplary computer network 63 includes a plurality of nodes 64 and may be linked to one or more other networks 90 . each of the nodes 64 is a personal computer , server , workstation , or other computing device , and includes many or all of the components shown in fig1 with respect to the computing device 20 . the nodes 64 are linked for network communication with one another through a series of conventional network links 51 . as best shown in fig3 , each node 64 has a processing unit 21 , a system memory 22 , a network interface card 53 linked to one another by a system bus 23 , and may also have several components in addition to those described in fig1 , including a network interface driver 74 , and a wireless interface 79 comprising a wireless interface driver 78 and a wireless interface card 76 . the node 64 is communicatively linked to at least one of the network links 51 . the wireless interface 79 is communicatively linked to an antenna 80 and a transceiver 82 over a network link 51 . a communications program 84 is executable by the processing unit 21 to cooperate with the wireless driver 78 in order to send and receive data over the wireless medium 66 via the wireless interface 79 . specifically , the wireless interface driver 78 converts messages from the communication program 84 into a transmissible format required by the wireless interface card 76 . the wireless interface card 76 , in turn , converts the message into a physical transport format in order to transmit the messages through the wireless medium 66 . the transceiver 82 receives the physical message from the wireless interface card 76 , creates the actual signals required for transmission over the wireless medium 66 and sends those signals to the antenna 80 for transmission . the wireless interface driver 78 also converts signals received through the wireless medium into messages that the communication program 84 can relay to the appropriate part of the node 64 . referring again to fig2 , each node 64 is capable of communicating with a wireless medium 66 in order to send and receive messages in parallel to and from a plurality of other nodes . the wireless medium 66 may include one or more wireless networks , low - earth orbiting satellites , geosynchronous orbiting satellites , cellular transmission sites , microwave relays , and the like , which communicate over one or more portions of the light spectrum . it is contemplated that the network 63 may cover a geographic area of any size . for example , the network 63 may encompass an entire county and require only one transmission tower in the wireless medium 66 , or it may be worldwide , and require multiple satellites . it is also contemplated that the networks 90 may also implement the invention , thereby allowing them to achieve parallel communication internally , while communicating with the network 63 in a conventional manner . to send a message from one of the nodes 64 to a group of other nodes , and to process the message once received , the communication program 84 ( fig3 ) may execute the procedure of fig4 a . at step 98 , the communication program 84 remains in a wait state until a predetermined event , such as a multicast message becoming available to send , or until a predetermined interval of time passes . at step 100 , the communications program 84 attaches a multicast group identifier to the message . the multicast group identifier represents the group of nodes to which the message is intended , and may also represent the entire set of nodes on the network 63 . the communications program 84 then broadcasts the message to the nodes 64 of the network 63 via the wireless medium 66 at step 102 . it then returns to a wait state at step 98 . to handle an incoming multicast message , the communication program 84 may execute the steps of the flowchart of fig4 b . at step 104 , the communication program 84 remains in a wait state until it receives a multicast message . when the multicast message arrives , the communication program 84 proceeds to step 106 , during which the communication program 84 reads the group identifier of the message to determine whether the receiving node is a member of the multicast group . if the receiving node is not a member , the communication program 84 running on that node ignores the message at step 108 . if the receiving node is a member , then the communication program 84 processes the message at step 110 . steps 104 - 108 may also be performed by the wireless card 76 using hardware or software logic on the card the communication program 84 on the sending node may also send the broadcast or multicast message over a wireless channel that is dedicated to a particular multicast group of nodes . similarly , the communication program 84 running on a receiving node in that group may monitor the dedicated multicast channel and treat any message received over that channel as a message that needs to be processed . if a dedicated channel is used in this manner , it would not be necessary for the communication program 84 of the sending node to add a multicast group identifier to the message . having a dedicated multicast channel may be especially useful when the multicast group is relatively stable and well - defined , or when only a small number of multicast groups is required . referring to fig5 , an example of how the invention may be used to maintain a network cache is shown . the illustrated network 63 has a plurality of nodes , but only the nodes 99 , hereinafter referred to as “ cache nodes ,” are used to maintain copies 92 of the network cache . to maintain the coherency of the network cache , each of the cache nodes 99 sends conventional cache updates to the other nodes by multicasting the updates over the wireless medium 66 as described above and shown in fig4 a . since this multicast group is well - defined , it may be preferable to have a dedicated wireless channel over which the updates can be sent and received . each copy 92 of the network cache is typically maintained on a separate computer ( not shown ) coupled to , but not necessarily co - located with the node 99 . the network cache may contain web pages , audio and video files and other information to make it available when needed for speed and consistency . although the logic for actually updating a network cache is well - known , the invention allows the copies 92 of the cache to be updated throughout the network in parallel using a single transmission this results in a very large savings of network bandwidth and processing overhead when , for example , updating large web sites and / or video sites that may consist of hundreds of megabytes of data . it is contemplated that the cache node 99 may be a router or similar device , and that the functions of sending and receiving routing updates as well as sending and receiving broadcast cache updates may be performed by the communication program 84 and wireless interface 79 on the cache node 99 . it is also contemplated that the cache updates may be performed by using the land - based links 51 in the event the wireless link fails . referring to fig6 - 8 , an embodiment of the described method is used to maintain routing information and qos in a network 63 . as best shown in fig6 and 7 , each node 64 of the illustrated network is implemented as a router , gateway , or similar device and communicates via the wireless medium in the same manner as the exemplary node 64 of fig3 . the node 64 also includes a local routing program 71 to conventionally collect local routing data and transmit the local routing data via the communication program 84 and over the wireless medium 66 to a central server 68 . the node 64 may also include a qos program 85 for requesting resources , such as a network route having the needed performance characteristics for a communication session , from the central server 68 in order to maintain the appropriate qos . as shown in fig6 , the maintenance of the routing information is centralized at the central server 68 , and thus it is feasible to implement the central server 68 as a powerful computing device that is optimized to process large quantities of routing data and to make decisions regarding the assignment of network buffers , links , routes , and the like to specific communication sessions based on their qos needs also , each of the nodes 64 in this embodiment would not need to have the ability to make routing decisions although it may be desirable that they retain this ability in case they lose contact with the central server 68 . as best shown in fig8 , the central server 68 includes many or all of the components of the computing device 20 shown in fig1 . like the nodes 64 , the central server 68 includes a wireless interface 79 comprising a wireless interface driver 78 and wireless interface card 76 . the wireless interface 79 is communicatively linked to a wireless antenna 80 via a transceiver 82 . a global routing program 96 sends and receives routing data via the communication program 84 as previously described . while not shown in fig6 , the central server 68 may also be linked to the nodes 64 via land connection in case the wireless communication fails . the central server 68 executes a global routing program 94 and a global qos program 95 . the global routing program 94 uses the local routing data received from the nodes 64 to update a routing database 70 . the routing database 70 represents the current routing topology of the network , including the availability of the routes and the traffic along the routes . the global qos program 95 receives requests for resources from the nodes 64 and , when the resources are available , allocates those resources by communicating with the appropriate nodes 64 in parallel via the wireless link . for example , a node 64 needing to transfer a large file may request that a high - bandwidth data path through the network 63 be reserved . the qos program may then respond by choosing the best available route through the network for the transfer and attempting to allocate the cpu time and buffers needed in the various routers along the route using a standard qos protocol . in order to provide the local routing data to the central server 68 so that the routing database 70 can be maintained , the local routing program 71 ( fig7 ) executes on the node 64 according to the flowchart of fig9 . at step 150 , the local routing program 71 waits for an interval of time to elapse before proceeding to the next step . this interval may correspond to predefined update interval . alternatively , the local routing program 71 may wait for an event , such as a significant change in the data traffic at the node 64 , before proceeding . at step 152 , the local routing program 71 conventionally collects the local routing data , which may include the status of communication between that node and any adjacent nodes , the volume of the data traffic at the node and the latency and error rate being experienced on each link attached to the node . at step 154 , the local routing program 71 creates a message containing the local routing data , and attaches an origin identifier to identify the node from which the message is being sent . at step 156 , the local routing program 71 transmits the message to the central server 68 via the wireless medium 66 , using a broadcast or multicast . to maintain the routing information in the network and to provide the latest version of the routing database 70 to the nodes 64 , the global routing program 96 executes on the central server 68 according to the flowchart of fig1 . it is assumed that the central server 68 starts the procedure with an initial version of the routing database 70 . this initial version may be determined dynamically by the server and represent the current state of the network upon entry into the procedure of fig1 or it may be one that is automatically loaded by the central server 68 at initialization . at step 160 , the global routing program 96 waits for the receipt of local routing data from the nodes 64 . it is contemplated that the global routing program 96 may wait for a predetermined number of updates to be received before continuing to the next step . for example , the global routing program 96 may wait until at least 50 % of the nodes have reported their local routing data . alternatively , the global routing program 96 may wait for a predetermined interval and then proceed with the remaining steps , regardless of how many updates have been received from the nodes 64 . at step 162 , the global routing program 96 updates the routing database 70 with the local routing data received from the nodes 64 . at step 164 , the global routing program 96 creates a routing update message representing the update made to the routing database at step 162 . alternatively , the routing update message may include the updated routing database itself . at step 166 , the global routing program broadcasts the routing update message to the nodes 64 . the program then returns to a wait state at step 160 . to allocate network resources in order to maintain the proper qos on the network 63 , the central server 68 and one or more of the nodes 64 can perform the procedure of fig1 . at step 200 , the qos program 85 on a node 64 forms a request for a resource based on a request received from a personal computer , server , or other client of the network . at step 202 , the qos program 85 transmits the request for a network resource to the central server 68 via the communication program 84 and the wireless medium 66 using a standard qos protocol . the central server 68 receives the request and executes the global qos program 95 to process the request . the global qos program 95 may then wait for a certain interval in order to give other nodes the opportunity to submit requests . at step 206 , the global qos program 95 attempts to allocate the requested resources over the wireless medium 66 using a qos protocol . such an attempt may involve repeatedly contacting the various nodes from which the resources will be required , looking for alternative resources , waiting for acknowledgments from the nodes , and the like . if the attempt is successful , then the global qos program 95 sends a message to the requesting node indicating that the request has been granted at step 212 . if the attempt is unsuccessful , then the global qos program 95 transmits a denial to the requesting node at step 210 . in another embodiment , the nodes 64 of the network depicted in fig6 may transmit and receive local routing data to and from one another without the use of the central reservation server 68 . to maintain the routing database 70 according to this embodiment , the local routing program 71 may execute event loops 182 and 184 asynchronously on a node 64 as shown in fig1 . at step 170 of event loop 182 , the local routing program 71 may be in a wait state until a predetermined event occurs , similar to the wait state described in step 160 of fig1 . at step 172 , the local routing program 71 collects the local routing data in a well known manner . at step 174 , the local routing program 71 creates a local routing message containing the local routing data , and attaches an origin identifier representing the node from which the - message is being sent . if there are other , non - router nodes in the network , the local routing message may also have a multicast group identifier that corresponds to the group of router nodes . the receiving nodes may use the multicast group identifier to determine whether to process or ignore the local routing message . alternatively , the local routing program 71 may select a channel that is dedicated to the router nodes . at step 176 , the local routing program 71 broadcasts the message to each of the other nodes 64 of the network via the wireless medium 66 . the process then returns to step 170 . in event loop 184 , the local routing program waits until it receives local routing messages containing local routing data and having origin identifiers from the other nodes 64 via the wireless medium 66 at step 178 . the local routing program 71 then updates the routing database 70 using the local routing data received from the other nodes 64 at step 180 . the process then returns to step 178 . to maintain the proper qos on the network 63 , the nodes 64 of fig6 may perform the procedure of the flowchart of fig1 . at step 250 , the qos program 85 of a node forms a message that includes a request for a network resource based on the qos needs for the data traffic it is currently handling . the request identifies the nodes from whom the resource is being requested as well as the nature of the resource being requested . at step 252 , the qos program 85 broadcasts the request via the communication program 84 and the wireless medium 66 to the other nodes 64 using a qos protocol . at step 254 , the qos program 85 on each node receiving the request processes the request by referring to the routing database 70 and determining whether the resource is available . at step 256 , each receiving node allocates the requested resource using a standard protocol , such as a two - phase commit protocol . the process then returns to step 250 . in view of the many possible embodiments to which the principals of this invention may be applied , it should be recognized that the embodiment described herein with respect to the drawing figures is meant to be illustrative only and should not be taken as limiting the scope of the invention . for example , a qos resource request and new routing data as described above may be sent in a single message or as separate messages . also , the invention may be used for other broadcasting or multicasting data other than the types of data described herein . it should also be recognized that the ordering and the specific implementation of the program steps described above and depicted in the flowcharts of fig4 , 10 - 13 is may be altered in obvious ways . those of skill in the art will recognize that the elements of the illustrated embodiment shown in software may be implemented in hardware and vice versa or that the illustrated embodiment can be modified in arrangement and detail without departing from the spirit of the invention . therefore , the invention as described herein contemplates all such embodiments as may come within the scope of the following claims and equivalents thereof .