Data transfer to nodes of a communication network using a data channel and a control channel
Methods and software products are described for efficiently transferring a data stream to nodes of a communication network. According to the invention, one of the nodes executes code to establish a control channel with one or more remote nodes. The code then replicates itself on the node, and transmits the replication of the code over the control channel to the remote node(s). The remote nodes then execute the code as described any number of times until the control channel is established with each of the nodes in the communication network, and each of the nodes includes the code. The nodes then execute the code to establish a data channel for the nodes. With the control channel and the data channel established, an originating process may then transmit a data stream over the data channel to one or more of the nodes.
Latest Patents:
This patent application is a continuation-in-part of the co-pending patent application having the Ser. No. 10/786,911, filed on Feb. 25, 2004, and entitled “Data Transfer to Nodes of a Communication Network Using Self-Replicating Code”, which is incorporated by reference herein.
BACKGROUND OF THE INVENTION1. Field of the Invention
The invention is related to the field of communications, and in particular, to transferring data to nodes of a communication network using a data channel and a control channel.
2. Statement of the Problem
Businesses, companies, universities, etc, commonly have a network that interconnects hundreds or thousands of devices. The network may be a Local Area Network (LAN), a Metropolitan Area Network (MAN), a Wide Area Network (WAN) or another network. Network personnel may want to transfer data, such as information, files, software, instructions, etc, to multiple devices on the network. On large networks, it may be inefficient for network personnel to transfer the data individually to each device. If the network personnel tried to transfer the data simultaneously to multiple devices, the network bandwidth may be quickly used up, particularly if the data size is large. Thus, network personnel are continually searching for ways to transfer data to multiple devices on a network to increase efficiency without sacrificing the bandwidth of the network.
One way to transfer data to multiple devices on the network is by multicasting the data over the network. The term “multicast” may be used to describe broadcasting messages or packets to a selected group of devices situated on the network. Typical applications that may benefit from such a system may include video and music broadcasting. Network personnel may use multicasting to transfer data to multiple devices on a LAN. This may solve the problem of handling each device individually. For instance, if network personnel want to install new software on multiple devices connected to the LAN, the network personnel may multicast the software over the LAN to the devices.
One problem with multicasting is that the receiving devices need the appropriate software to receive the multicast. If the receiving devices do not have the appropriate software, then the appropriate software needs to be installed on the receiving devices prior to receiving the data. Also, it is difficult to transmit data securely with multicasting.
Another problem with multicasting is that the sender may not know whether or not the receiving devices received the software. User Datagram Protocol (UDP) is one protocol used for multicasting, and UDP does not guarantee delivery of a message or require an acknowledgment from the receiving device. Thus, the sender is unaware of the transfer status of data. Network personnel may want some type of acknowledgment to ensure that the transfer of the software was successful.
Another concern of network personnel may be viruses. One of the more famous viruses is the Internet worm. Because of the Internet worm, the term “worm” is commonly received in a negative sense as being software that replicates itself repeatedly on a network to “infect” the network (i.e., a virus). However, a worm, as understood by many skilled in the art, is simply code that is self-replicating. Worms do not have to be programmed to propagate uncontrollably or to do harm to a network.
A traditional worm may replicate itself on a series of devices. A worm (parent worm) on a first device may replicate itself (child worm) on another remote device, then on another remote device, etc. After the parent worm replicates itself on another device to generate the child worm, the parent worm generally does not maintain a communication channel with the child worm. Thus, the parent worm and the child worm are not able to communicate with one another to transfer data. It may be desirable to use worms, or other self-replicating code or software, in a positive manner to transfer data through a network.
SUMMARY OF THE SOLUTIONThe invention solves the above and other problems by using self-replicating code in a communication network to transfer data to nodes of the communication network. The nodes of the communication network do not initially have the code required for the data transfer. The self-replicating code of the invention replicates itself on nodes of the communication network while establishing a control channel and a data channel for the nodes. An originating process of the code can then transfer control information over the control channel to the nodes, receive status information over the control channel from the nodes, and transfer a data stream over the data channel to the nodes.
Advantageously, network personnel may use the self-replicating code to establish the data channel and to transfer data efficiently over the data channel to multiple nodes on a communication network without sacrificing the bandwidth of the network. Network personnel do not need to pre-install code on the nodes of the communication network to facilitate the data transfer. Network personnel may also monitor the status of a data transfer in real time as the nodes transmit status information over the control channel to the originating process.
One embodiment of the invention includes a method of transferring a data stream to nodes of a communication network. For the method, one of the nodes executes code to establish a control channel with one or more remote nodes. The code then replicates itself on the node, and transmits the replication of the code over the control channel to the remote node(s). The remote nodes then execute the code as described any number of times until the control channel is established with each of the nodes, and each of the nodes includes the code.
The nodes then execute the code to establish a data channel with each of the nodes. The data channel is independent of the control channel. The data channel may have a topology that is different than the topology of the control channel. For instance, the data channel may have a linear chain topology, while the control channel has a binary tree topology.
With the control channel and the data channel established, an originating process may then transmit a data stream over the data channel to one or more of the nodes. The originating process may also transmit control information over the control channel to one or more of the nodes. The originating process may also receive status information over the control channel from one or more of the nodes.
In other embodiments, the code is already installed on the nodes of the communication network. As described above, the nodes execute the code to establish a control channel with each of the nodes. The nodes then execute the code to establish a data channel with each of the nodes. The data channel is independent of the control channel.
The invention may include other exemplary embodiments described below.
DESCRIPTION OF THE DRAWINGSThe same reference number represents the same element on all drawings.
To efficiently transfer data, such as a large data stream, to the nodes 101-104 of communication network 100, self-replicating code is used to establish a control channel for the nodes 101-104, to spawn itself on the nodes 101-104, and to establish a data channel for the nodes 101-104. The control channel and the data channel are independent channels. The control channel is used for transferring control information, status information, etc. The data channel is used for transferring data streams.
Assume that node 101 includes an originating process that spawns the self-replicating code. Also assume that the other nodes 102-104 do not have the code. According to the invention, the code replicates itself onto successive nodes 102-104 in communication network 100 to establish both the control channel and the data channel for the nodes 101-104, as is described in the following method.
After receiving the code, nodes 102 and 103 may then execute the code 301 as described in step 202 to establish a control channel with remote nodes. Node 103 does not have a remote node (or child node) in this embodiment, so node 103 does not perform step 202. Node 102 does have a remote node in node 104. Therefore, according to step 202, node 102 executes code 301 to establish a control channel 311 with remote node 104 (see
Referring back to
Referring back to
In step 208, the originating process may also transmit control information over the control channel to one or more of the nodes 102-104. Control information comprises any operations, administration, or management information used by the nodes in the communication network 100. In step 210, one or more of the nodes may transmit status information over the control channel to the originating process in node 101.
Advantageously, network personnel may use the self-replicating code as described in this embodiment to efficiently transfer a data stream to multiple nodes 101-104 on communication network 100, without sacrificing the bandwidth of the network 100. Also, network personnel do not need to pre-install code on nodes 102-104 of communication network 100 to facilitate the data transfer, as the self-replicating code can spawn itself on the nodes 102-104 of the network 100 to facilitate the data transfer.
Once the code is spawned on each node 101-104, the code can be used to maintain the same data channel and control channel. Alternatively, the original data channel and control channel may be torn down after the data stream is transmitted to the appropriate nodes. To subsequently transfer another data stream, the code, which is already resident on each node, may be executed on the nodes to establish a new control channel and a new data channel, as is illustrated in
Method 200 proceeds to step 906 after the control channel and the data channel are established. In step 906, the originating process executing in node 101 transmits a data stream over the data channel to one or more of the nodes 102-104. Responsive to receiving the data stream, the nodes 102-104 execute the code to handle the data stream. For instance, the nodes 102-104 may execute the code to perform one or more local processes on the data stream, such as storing the data stream. In step 908, the originating process may also transmit control information over the control channel to one or more of the nodes 102-104. In step 910, one or more of the nodes 102-104 may transmit status information over the control channel to the originating process in node 101.
Assume that node 401 is a controller node operated by network personnel. Further assume that network personnel want to transfer a large data stream to all nodes 402-432 in communication network 400. For instance, the network personnel may need to install new software on nodes 402-432, where the software comprises a large data stream. It would be inefficient for the network personnel to install the software individually on each machine. If the network personnel tried to simultaneously transfer the software as a large data stream to multiple nodes 402-432, then the bandwidth of LAN 440 may be compromised. The network personnel may use self-replicating code according to the invention to efficiently transfer the software to nodes 402-432 without compromising the bandwidth of LAN 440.
In this embodiment, self-replicating code may be referred to as a streaming worm. A streaming worm (sworm) comprises any software, code, or instructions that can replicate itself, as well as a chunk of arbitrary payload code, on a set of nodes in a communication network, while streaming data, control information, and/or status information between the nodes. A hybrid sworm is described in this embodiment that streams data on a data channel while transmitting the control and status information over a independent control channel.
Each hybrid sworm is composed of one or more swormlets. Each swormlet spans at least two nodes and includes a plurality of processes.
The swormlet 500 spans one or more parent nodes 502 and 504 and a child node 506 in this embodiment. One of the parent nodes is a control parent node 502 that establishes a control channel (illustrated with solid arrows) with the child node 506. The other parent node is a data parent node 504 that establishes a data channel (illustrated with dotted arrows) with the child node 506. The control parent node 502 and the data parent node 504 are shown as separate nodes in this embodiment, but the two could be the same node.
The swormlet 500 includes a transceiver process 510, a control process 511, a status process 512, a payload process 513, a data routing process 514, a data transmitter process 515, and a data receiver process 516. The transceiver process 510 for the swormlet 500 is executed on the control parent node 502. The data transmitter process 515 is executed on the data parent node 504. The remaining processes are executed on the child node 506.
The transceiver process 510 executes on the control parent node 502 and establishes a bi-directional control channel with the control process 511 and/or the status process 512 on the child node 506. The transceiver process 510 acts as a conduit for payload code and other program code, control information, status information, and return data from the child node 506. The transceiver process 510 may transmit status information to a status process of a parent swormlet (not shown). The transceiver process 510 may also receive control information from a control process of the parent swormlet.
The control process 511 executes on the child node 506 and is responsible for distributing the swormlet code and payload code over the control channel. The control process 511 then initiates the status process 512, the payload process 513, the data routing process 514, and optionally one or more transceiver processes and the data transmitter processes for additional child swormlets (not shown), if necessary. The control process 511 then locally processes and/or routes any control operations that it receives to its child swormlets, and reports whenever any of its child processes dies. Although it normally sends status information to the local status process 512, it maintains a backup status connection to the transceiver process 510 in case the status process 512 dies. Control operations may be addressed to one or more individual swormlets, or broadcast to all swormlets.
The status process 512 executes on the child node 506 and is responsible for packetizing return data received from the local payload process 513, and multiplexing it with status packets from other processes in the local swormlet, as well as return data and status packets from its child swormlets. The status process 512 then transmits this multiplexed status and return data stream to the transceiver process 510 of the control parent node 502.
The payload process 513 executes on the child node 506 and comprises the code to be locally performed on a node. The payload process 513 can do anything allowed by applicable security protocols. The payload process 513 reads data sent by the originating process through the data routing process 514, and sends data and status information back to the originating process through the status process 512.
The data transmitter process 515 executes on the data parent node 504 (which may be the same or different than the control parent node 502) and is responsible for transmitting the data it receives from a data routing process of a parent swormlet to data receiver process 516 of the child node 506.
The data receiver process 516 executes on the child node 506 and is responsible for receiving data from the data transmitter process 515 of the data parent node 504 and passing it through a First In First Out (FIFO) buffer 518 to the data routing process 514. The FIFO 518 is included because the data receiver process 516 and data routing process 514 belong to two different process families.
The data routing process 514 executes on the child node 506 and is responsible for reading data from the FIFO 518, and routing the data to the payload process 513 and/or a data transmitter process of any of child swormlets as appropriate. The maximum rate at which data is sent downstream may be optionally throttled as directed by the main originator process.
Referring back to
Node 402 executes the swormlet code to perform a control process 612 for swormlet 610. The control process 612 initiates the other processes for swormlet 610, such as the status process 613, the payload process 614, and the data routing process 615. The control process 612 receives the payload code from the originating process 602 over the control channel. The control process 612 replicates the payload code and forwards the copy of the payload code to the payload process 614. The control process 612 forwards the payload code to another swormlet (if necessary) as is described below.
Swormlet 610 then spawns two child swormlets 620 and 630. Control process 612 initiates a transceiver process 621 on node 402 for swormlet 620. The transceiver process 621 executes on node 402 to establish a control channel with node 403. The transceiver process 621 then transfers a copy of the swormlet code for swormlet 620 over the control channel to node 403. Control process 612 also initiates a transceiver process 631 on node 402 for swormlet 630. The transceiver process 631 executes on node 402 to establish a control channel with node 418. The transceiver process 631 then transfers a copy of the swormlet code for swormlet 630 over the control channel to node 418.
Node 403 executes the swormlet code to perform a control process 622 for swormlet 620. The control process 622 initiates the other processes for swormlet 620, such as the status process 623, the payload process 624, and the data routing process 625. The control process 622 receives the payload code from the control process 612 of swormlet 610 over the control channel through the transceiver process 621. The control process 622 replicates the payload code and forwards the copy of the payload code to nodes 404 and 411.
Node 418 executes the swormlet code to perform a control process 632 for swormlet 630. The control process 632 initiates the other processes for swormlet 630, such as the status process 633, the payload process 634, and the data routing process 635. The control process 632 receives the payload code from the control process 612 of swormlet 610 over the control channel through the transceiver process 631. The control process 632 replicates the payload code and forwards the copy of the payload code to nodes 419 and 426.
Swormlets are spawned in a similar manner through nodes 404-432 of the communication network 400 (see
Originating process 602 initiates a data originator process 604 on node 401. Data originator process 604 packetizes each block of data and throttles the transmission of the data stream over the data channel if needed. The originator process 602 initiates a data transmitter process 616 on node 401 for swormlet 610. Based on the control from the originating process 602, the data transmitter process 616 executes on node 401 to establish a data channel (illustrated by dotted arrows) with node 402.
Node 402 executes the swormlet code from the data transmitter process 616 to initiate the data receiver process 617 for node 402. The data receiver process 617 communicates with the data transmitter process 616 over the data channel to receive a data stream from the data transmitter process 616. The data receiver process 617 transmits the data stream to the FIFO 618. The data routing process 615 then reads the data stream from the FIFO 618 and transmits the data stream to the data transmitter process 626 of swormlet 620.
Depending on instructions from the originator process 602 received over the control channel, the control process 612 of swormlet 610 initiates a data transmitter process 626 for swormlet 620. The data transmitter process 626 executes on node 402 to establish a data channel with node 403. The data transmitter process 626 then transfers a copy of the swormlet code for the data receiver process 627 over the data channel to node 403. Node 403 executes the swormlet code from the data transmitter process 626 to initiate the data receiver process 627 for node 403. The data receiver process 627 communicates with the data transmitter process 626 over the data channel to receive a data stream from the data transmitter process 626. The data receiver process 627 transmits the data stream to the FIFO 628. The data routing process 625 then reads the data stream from the FIFO 628 and transmits the data stream to the data transmitter process of the swormlet of node 404.
Node 418 also receives a copy of the swormlet code for the data receiver process 637 over the data channel from node 417. Node 418 executes the swormlet code to initiate the data receiver process 637 for node 418. The data receiver process 637 communicates with a data transmitter process of node 417 over the data channel to receive a data stream from the data transmitter process. The data receiver process 637 transmits the data stream to the FIFO 638. The data routing process 635 then reads the data stream from the FIFO 638 and transmits the data stream to the data transmitter process of the swormlet of node 419.
The data channel is established in a similar manner through nodes 405-432 of the communication network 400 (see
When in operation, data originator process 604 transfers a data stream to swormlet 610. The data stream in this embodiment comprises software that is a large data stream. The data transmitter process 616 transmits the data stream over the data channel to the data receiver process 617. The data receiver process 617 transmits the data stream to the FIFO 618. The data routing process 615 then reads the data stream from the FIFO 618. The data routing process 615 replicates the data stream, and forwards a copy of the data stream to the payload process 614. The data routing process 615 forwards the data stream to another swormlet 620 as addressed or specified by the originating process 602. The payload process 614 receives the copy of the data stream from the data routing process 615. The payload process 614 executes the payload code to locally handle the data stream. For instance, the payload code may direct the payload process 614 to store the data stream in a known directory on node 402.
The control process 612 may receive control instructions from the originating process 602. The control process 612 may execute the control instructions on the payload process 614. The control process 612 may also forward the control instructions to another swormlet (if necessary).
In executing the payload code, the payload process 614 may generate output data. The output data may comprise periodic progress information about storing the large data file. The payload process 614 forwards the output data to the status process 613. The status process 613 receives the output data from the payload process 614 and/or status information from any child swormlets. The status process 613 then transmits the output data and/or status information from the payload process 614 and child swormlets over the control channel. The status information may comprise feedback on the success of storing the large data stream on node 402.
The same process occurs in each node 402-432 to transmit the data stream to each node 402-432. Alternatively, the originating process 602 may designate which nodes are to receive the data stream, and in which order, based on a map, a set of instructions, an addressing scheme, etc. The originating process 602 may address the data stream to one or more swormlets 610, 620 or 630, or broadcast to all swormlets 610, 620, and 630.
The topology of the data channel may depend on the physical topology of LAN 440. For instance, assume that LAN 440 includes a plurality of switching hubs connected to different nodes.
Once the code is spawned on each node 401-432, the code can be used to maintain the same data channel and control channel. Alternatively, the original data channel and control channel may be torn down after the data stream is transmitted to the appropriate nodes. To subsequently transfer another data stream, the code, which is already resident on each node, may be executed on the nodes to establish a new control channel and a new data channel. Once again, the new control channel and the new data channel are independent channels. The new control channel and new data channel may be the same as before, or may be different depending on which data stream needs to be transmitted to which nodes. When the new control channel and new data channel are established, the channels can advantageously be used as described above to transmit the data stream.
Transferring the data stream to the nodes 402-432 of the communication network 400 in
Claims
1. A method of transferring a data stream to a plurality of nodes of a communication network, the method comprising:
- executing code from an originating process that establishes a control channel with a remote node, generates a replication of itself, and transmits the replication over the control channel to the remote node, wherein the code is executed on one or more of the plurality of nodes until the control channel is established with each of the plurality of nodes and each of the plurality of nodes includes the code;
- executing the code on the plurality of nodes to establish a data channel with each of the plurality of nodes; and
- transmitting a data stream over the data channel from the originating process to at least one of the plurality of nodes.
2. The method of claim 1 further comprising:
- transmitting control information over the control channel from the originating process to at least one of the plurality of nodes.
3. The method of claim 2 further comprising:
- transmitting status information over the control channel from at least one of the plurality of nodes to the originating process.
4. The method of claim 1 wherein the data channel is independent from the control channel.
5. The method of claim 1 wherein a topology of the control channel is different than a topology of the data channel.
6. The method of claim 5 wherein the topology of the control channel comprises a binary tree, and the topology of the data channel comprises a linear chain.
7. The method of claim 1 wherein the code comprises a streaming worm.
8. The method of claim 1 further comprising:
- tearing-down the control channel and the data channel;
- executing the code to establish a new control channel; and
- executing the code to establish a new data channel.
9. A software product for transferring a data stream to a plurality of nodes of a communication network, the software product comprising:
- storage media that stores an originating program; and
- the originating program executable by processing systems to spawn code that: establishes a control channel with a remote node, generates a replication of itself, and transmits the replication over the control channel to the remote node, until the control channel is established with each of the plurality of nodes and each of the plurality of nodes includes the code; and establishes a data channel with each of the plurality of nodes to facilitate the transmission of a data stream over the data channel from the originating process to at least one of the plurality of nodes.
10. The software product of claim 9 wherein the originating program executes an originating process, and the code transmits control information over the control channel from the originating process to at least one of the plurality of nodes.
11. The software product of claim 10 wherein the code transmits status information over the control channel from at least one of the plurality of nodes to the originating process.
12. The software product of claim 9 wherein the data channel is independent from the control channel.
13. The software product of claim 9 wherein a topology of the control channel is different than a topology of the data channel.
14. The software product of claim 13 wherein the topology of the control channel comprises a binary tree, and the topology of the data channel comprises a linear chain.
15. The software product of claim 9 wherein the code comprises a streaming worm.
16. A method of transferring a data stream to a plurality of nodes of a communication network, the method comprising:
- executing code on the plurality of nodes to establish a control channel with each of the plurality of nodes;
- executing the code on the plurality of nodes to establish a data channel with each of the plurality of nodes; and
- transmitting a data stream over the data channel from an originating process operating in one of the nodes to at least one of the other nodes;
- wherein the data channel is independent from the control channel.
17. The method of claim 16 further comprising:
- transmitting control information over the control channel from the originating process to the at least one the other nodes.
18. The method of claim 17 further comprising:
- transmitting status information over the control channel from the at least one of the other nodes to the originating process.
19. The method of claim 16 wherein a topology of the control channel is different than a topology of the data channel.
20. The method of claim 19 wherein the topology of the control channel comprises a binary tree, and the topology of the data channel comprises a linear chain.
Type: Application
Filed: Mar 31, 2005
Publication Date: Sep 15, 2005
Applicant:
Inventor: Michael Sheehan (Naperville, IL)
Application Number: 11/095,147