Abstract:
Embodiments of a system and method for distributing network data to multiple nodes in a data communications network is described. Two data communication channels are provided for each node in the network. While one of the communication channels carries routing and flow control protocol messages, as well as data, in both directions between network nodes, the other communication channel is configured to transmit data traffic—and only data traffic—in a single direction from the network data server toward all of the other nodes in the network. By using 100% of the available bandwidth for data traffic only, the speed at which data may be distributed throughout the network is maximized and the performance degradation caused by the congestion, collisions or packet loss that typically occurs in two-way data communication channels is avoided.

Description:
BACKGROUND INFORMATION  
       [0001]     Data communications networks are typically comprised of a set of nodes (e.g., computers, routers and/or switches) connected by a set of two-way data communications links (e.g., wires, cable, fiber, microwave or radio wave channels, etc.). In a data communications network, a node is a connection point, either a redistribution point or an end point, for data transmissions. In existing data communications networks, each node in the network (especially if the node is a switch or router) typically requires a programmed or engineered capability to recognize, process and/or forward data traffic to other nodes in the network according to various network routing and flow control protocols designed to allow sharing the bandwidth available in each interface link in the network as data travels in both directions across that interface link.  
         [0002]     In a two-way data communications network, routing protocols are used by a device or, in some cases, by software in a computer, to determine the next connection point to which a packet of data should be forwarded toward its final destination. A hardware or software “router,” which is typically connected to at least two two-way interface links, determines which way to send each data packet based on its current understanding of the status (e.g., bandwidth available, congestion level, collision potential, etc.) of the links to which it is connected. Thus, routers use routing protocols to determine the route for a data flow and, more specifically, to which adjacent connection points in a network each data packet in the data flow should be sent. A router is often included as part of a network “switch,” which is also a network device that selects a path or circuit for sending a packet of data to its next destination.  
         [0003]     “Flow control” is the management of data flow between computers or devices or between nodes in a data communications network so that the data is transmitted at an optimum rate and in a preferred order. Too much data arriving before a device or interface link can handle it can cause congestion, collisions and/or queue overflow conditions, the result of which can be that some of the data is either lost or must be retransmitted. In existing data communications networks, flow control protocols are necessary in order to slow down or cease data transmissions across a congested two-way network interface link until the congestion in the two-way interface link eases.  
         [0004]     When routing and flow control protocols are used in a data communications network to manage and control data traffic moving in both directions over two-way links (also called “channels”), a significant amount of bandwidth in each two-way data communication channel must be consumed by the many routing and flow control messages that must be moved from node to node around the data communications network along with the actual data. When there is a very large number of nodes in the network, or when there is a sizable number of data requests that must be processed and put through the network, the degradation in actual data transmission speeds resulting from the fact that significant amounts of bandwidth are being used to exchange routing and flow control protocol messages can become unacceptably high.  
         [0005]     Accordingly, there is a need for a network data distribution system that maximizes the speed at which actual data may be retrieved and distributed throughout the network. There is a further need for network data distribution systems and methods that use 100% of the available bandwidth in a data communications channel for transmitting actual data. There is still a further need for systems and methods that achieve maximum data transmission speeds without having to account for or worry about congestion, collisions or packet loss in each link. 
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0006]     The following detailed description will be best understood in conjunction with the attached drawings, which are incorporated in and constitute part of the specification.  
         [0007]      FIG. 1  depicts a high-level block diagram illustrating an arrangement of some of the physical components in a network data distribution system configured to operate according to an embodiment of the present invention.  
         [0008]      FIG. 2  depicts a high-level flow diagram illustrating an example of an algorithm that might be performed by a network data distribution system according to embodiments of the present invention.  
         [0009]      FIG. 3  is a block diagram of a computer system that may be used to implement a network data server or a network node in an embodiment of the present invention. 
     
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS  
       [0010]     Reference will now be made in detail to preferred embodiments according to the present invention(s), examples of which are illustrated in the drawings. Notably, the present invention(s) may be implemented using software, hardware, or any combination thereof, as would be apparent to those of ordinary skill in the art. Therefore, the figures and examples below are not meant to limit the scope of the present invention or its embodiments or equivalents.  
         [0011]     Systems and methods implemented in accordance with the present invention may facilitate operation of a network database. In the preferred embodiments according to the present invention, a plurality of nodes are connected via two network connections. A first one of the networks is considered the existing network for communication between the nodes, and the second network is added for data only traffic between the nodes. This dual network connection configuration forms a network database, for example. The data (second) network handles data broadcasts from, for example, a node designated a data server, to all nodes in the network in a unidirectional (one-way) mode. The terms “broadcast” is used herein to mean that data packets transmits along the network connection (e.g., bus) and may or may not have a specific destination node; nodes monitor the connection and acquire only the data packets that they have an interest in. This interest may be predetermined or specified by information in the data packet.  
         [0012]     The traffic back to the data server always travels on the first network. This configuration enables the data network to push data to nodes that have a need for the data and consume all of the available bandwidth on the data network. One-way traffic avoids the network congestion likely to exist on the first network, which handles bidirectional traffic between the nodes.  
         [0013]     The multi-network multi-node configuration according to one implementation of the present invention facilitates data replication between data servers (e.g., multiple nodes), thereby forming the backbone for a disaster recovery plan for data. Partitioning data transmission between two networks, one of which handling one-way traffic and the second handling two-way traffic, enables fast, reliable distribution of data among the network nodes. This way a data store may be distributed among the network nodes using known distribution and redundancy techniques, and in the event of a node failure or problem accessing a particular node, the data on that node may be recovered from a node designated by the particular distribution and redundancy technique employed as a backup for the problem node. Using the multi-network multi-node configuration according to one implementation of the present invention, users have a higher confidence that the backup node contains a complete and accurate image of the data in the problem node because the data located in the node travels to the backup node, from the problem node or some other node in the network where it originates, using the higher transmission speed afforded by the data network.  
         [0014]      FIG. 1  depicts a high-level block diagram illustrating an arrangement of some of the physical components in a network data distribution system configured to operate according to an embodiment of the present invention. As shown in  FIG. 1 , a network data distribution system  100  configured to operate according to a preferred embodiment of the present invention comprises a two-way data communication channel  140 , a one-way data communication channel  150 , which are both coupled to a network data server  110  and to each node in a plurality of network nodes (shown in  FIG. 1  as nodes  160 A,  160 B,  160 C through  160 N) in the network. Two-way data communication channel  140  is configured to carry actual data, as well as routing and flow control messages, in both directions, back and forth from one node to another node connected to the channel, including the network data server  110 . One-way data communication channel  150 , on the other hand, is configured to carry nothing but actual data (i.e., no protocol messages will be transmitted on the one-way channel), and only in one direction, namely away from network data server  110  and toward nodes  160 A through  160 N.  
         [0015]     Two-way data communication channel  140  may be constructed, for example, using wire or cable (e.g., Ethernet cable), fiber optics, a phone line (e.g., over the PSTN), a cellular phone link, an RF link and other communications technology. One-way data communication channel  150  may be constructed from the same kind of communications devices, but it may also be advantageous, depending on the application, to use cable television wire technology, since cable television wire technology is very mature and particularly well suited for transferring data in a single downstream direction to all other nodes in the network.  
         [0016]     Network data server  110  includes a network interface adapter  115 , which provides a connection to the two-way data communication channel  140  via two-way communications link  113 . Network data server  110  also includes a second network interface adapter  120 , which provides a one-way connection to one-way data communication channel  150  via one-way communications link  127 . Links  113  and  127  may or may not be implemented using the same communication devices used to implement two-way data communication channel  140  and one-way data communication channel  150 .  
         [0017]     As shown in the embodiment depicted in  FIG. 1 , network data server  110  also includes a data request processor  125 , which is configured to receive and process data requests generated by nodes  160 A through  160 N and transmitted to network data server  110  over two-way data communication channel  140 , communications link  113  and network interface adapter  115 . In preferred embodiments, data request processor  125  carries out the processing by accessing one or more data stores (designated  130 A,  130 B,  130 C . . .  130 N in  FIG. 1 ), which are coupled to or incorporated within network data server  110 . Preferably, although not necessarily, network data server  110  is configured (using high-speed caching technology, for example) to move and/or copy large volumes of data, under the control of data request processor  125 , from the actual data stores  130 A through  130 N (such as, for example, disk drives) to one-way data communication channel  150  at very high speeds.  
         [0018]     In some embodiments, nodes  160 A through  160 N each contain a network interface adapter (shown in  FIG. 1  as  165 A through  165 N), which couples each node  160 A through  160 N to two-way data communication channel  140  via two-way communications links  162 A,  162 B,  162 C through  162 N, respectively. Each node  160 A through  160 N also contains a second network interface adapter (shown in  FIG. 1  as  170 A through  170 N), which couple nodes  160 A through  160 N to one-way data communication channel  150  via one-way communications links  173 A,  173 B,  173 C through  173 N, respectively. Each node  160 A through  160 N may also include data processors (designated  180 A,  180 B,  180 C through  180 N in  FIG. 1 ), which may comprise operating system or user-level application programs configured to generate the data requests that are sent to network data server  110  over two-way data communication channel  140 . Each data request may comprise a request to receive, update, modify, delete or move data stored on data stores  130 A through  130 N, or some combination of two or more of these operations.  
         [0019]     Data modifications may take place on any of the nodes  160 A through  160 N. Suppose, for example, that a node in the network learns that a customer “A” has just made a $100 charge to his account. The information about the charge would flow to network data server  110  over the 2-way data channel  140 . Then, if node  160 N is used to create a new monthly billing statement for customer A, it will retrieve the current data concerning customer A&#39;s account (i.e., the $100 charge, as well as the current balance) from network data server  110  over one-way channel  150 , so it can produce the correct bill.  
         [0020]     One-way communications links  173 A,  173 B,  173 C through  173 N, as well as network interface adapters  170 A through  170 N, are optimally configured to operate under the control of data processors  180 A,  180 B,  180 C through  180 N, to move data in only one direction, namely from one-way data communication channel  150  and into memory storage areas ( 185 A,  185 B,  185 C through  185 N), where the data may then be accessed by any applications running on those nodes. Data processors  180 A through  180 N are also configured to identify and capture data traversing one-way data communication channel  150 , which is responsive to the generated data request and to ignore all data traversing one-way data communication channel  150  which is not responsive to a pending data request.  
         [0021]      FIG. 2  depicts a high-level flow diagram illustrating an example of an algorithm that might be performed by a network data distribution system, such as the one described above with reference to  FIG. 1 , according to embodiments of the present invention. Beginning with step  205 , network data server  110  may be configured to continuously monitor two-way data communication channel  140  in order to determine whether a data request has been received (the test is shown at step  210  in  FIG. 2 ). As described below, and as shown at step  240  in  FIG. 2 , network data server  110  also determines whether a confirmation associated with an earlier data request has been received. Preferably, the system continues to check the two-way channel (shown as the flow control loop consisting of steps  205 ,  210  and  240 ) until either a new data request or a confirmation is received.  
         [0022]     Returning to step  210 , if a data request is received, the system, at step  215 , retrieves the requested data item from one or more data stores ( 130 A through  130 N in  FIG. 1 ) attached to network data server  110 . Preferably, the data retrieval occurs very rapidly under the control of a data request processor (designated  125  in  FIG. 1 ), which generates a response to the data request containing the requested data item (step  220 ). Next, at step  225 , the network data server broadcasts the response to all of the nodes in the network over the one-way data communication channel. Preferably, although not necessarily, the system then sends a notification to the appropriate node over the two-way data communication channel, said notification indicating that the requested data is being, will be, or has been, broadcasted over the high-speed one-way data communication channel (see step  230 ). Next, at step  235 , the system resets a timeout counter, which determines when the system will re-broadcast the response. At this point, control passes back to step  205 , where the system again monitors the two-way data communication channel until a data request or confirmation is received (depicted as the control loop consisting of steps  205 ,  210  and  240 ).  
         [0023]     At step  240 , the system tests incoming data on the two-way data communication channel to determine whether a confirmation associated with an earlier-broadcasted response has been received. The confirmation serves as an indication to the network data server that the network node that generated a data request has received the response over the one-way data communication channel. If the answer is yes, the system returns to step  205  and continues to monitor the two-way data communication channel. If, on the other hand, the answer is no, the system first determines, at step  245 , whether the timeout has expired. If the timeout has expired, then control passes again to step  225 , where the response is re-broadcasted to all nodes on the network. If the timeout has not expired, then the system determines whether the data item has changed, step  250 . Such change might occur, for example, when another program, another node or process, modifies or updates the data item, or when the retrieval of the item by the network data server requires a modification to the item. If the data item has been changed, then control passes again to step  220 , where a new response is generated and then, in step  225 , broadcasted over the one-way data communication channel. If, however, the data item has not changed, then control passes back to step  205 , where the system continues to monitor the two-way data communication channel until the timeout does expire, a new data request or confirmation is received, or the data item is changed.  
         [0024]      FIG. 3  is a block diagram of a computer system that may be used to implement a network data server or a network node in an embodiment of the present invention. The computer system  302  includes one or more processors, such as a processor  304 . The processor  304  is connected to a communication bus  306 . Various software embodiments are described in terms of this exemplary computer system. After reading this description, it will become apparent to a person skilled in the relevant art how to implement the invention using other computer systems and/or computer architectures.  
         [0025]     The computer system  302  also includes a main memory  308 , preferably random access memory (RAM), and can also include a secondary memory  310 . The secondary memory  310  can include, for example, a hard disk drive  312  and/or a removable storage drive  314 , representing a floppy disk drive, a magnetic tape drive, an optical disk drive, etc. The removable storage drive  314  reads from and/or writes to a removable storage unit  318  in a well-known manner. The removable storage unit  318 , represents a floppy disk, magnetic tape, optical disk, etc. which is read by and written to by the removable storage drive  314 . As will be appreciated, the removable storage unit  318  includes a computer usable storage medium having stored therein computer software and/or data.  
         [0026]     In alternative embodiments, the secondary memory  310  may include other similar means for allowing computer programs or other instructions to be loaded into the computer system  302 . Such means can include, for example, a removable storage unit  322  and an interface  320 . Examples of such can include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, and other removable storage units  322  and interfaces  320 , which allow software and data to be transferred from the removable storage unit  322  to the computer system  302 .  
         [0027]     The computer system  302  can also include a communications interface  324 . The communications interface  324  allows software and data to be transferred between the computer system  302  and external devices. Examples of the communications interface  324  can include a modem, a network interface adapter (such as an Ethernet card), a communications port, a PCMCIA slot and card, etc. Software and data transferred via the communications interface  324  are in the form of signals  326  that can be electronic, electromagnetic, optical or other signals capable of being received by the communications interface  324 . Signals  326  are provided to communications interface via a channel  328 , which can be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link and other communications channels.  
         [0028]     In this document, the term “computer-readable storage medium” is used to generally refer to media such as the removable storage device  318 , a hard disk installed in hard disk drive  312 , and signals  326 . These media are means for providing software and operating instructions to the computer system  302 .  
         [0029]     Computer programs (also called computer control logic) are stored in the main memory  308  and/or the secondary memory  310 . Computer programs can also be received via the communications interface  324 . Such computer programs, when executed, enable the computer system  302  (e.g., through processor  304 ) to implement the systems and methods that include the present invention.  
         [0030]     In an embodiment where the invention is implemented using software, the software may be stored in a computer-readable storage medium and loaded into the computer system  302  using the removable storage drive  314 , the hard drive  312  or the communications interface  324 . The control logic (software), when executed by the processor  304 , causes the processor  304  to perform the functions of the invention as described herein.  
         [0031]     In another embodiment, the invention is implemented primarily in hardware using, for example, hardware components such as application specific integrated circuits (ASICs). Implementation of a hardware state machine that implements the embodiments described herein will be apparent to persons skilled in the relevant art(s). In yet another embodiment, the invention is implemented using a combination of both hardware and software.  
         [0032]     The above-described embodiments are by no means meant to limit the scope of the invention. Though preferred embodiments according to the present invention have been described herein, many variations and modifications will become apparent to those skilled in the art upon reading this disclosure and the following claims, as well as practicing the claimed inventions. It is therefore the intention that the claims be interpreted as broadly as possible in view of the prior art, to include all such variations and modifications.