US20050204053A1 - Data transfer to nodes of a communication network using a data channel and a control channel - Google Patents
Data transfer to nodes of a communication network using a data channel and a control channel Download PDFInfo
- Publication number
- US20050204053A1 US20050204053A1 US11/095,147 US9514705A US2005204053A1 US 20050204053 A1 US20050204053 A1 US 20050204053A1 US 9514705 A US9514705 A US 9514705A US 2005204053 A1 US2005204053 A1 US 2005204053A1
- Authority
- US
- United States
- Prior art keywords
- nodes
- data
- control channel
- code
- channel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- E—FIXED CONSTRUCTIONS
- E01—CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
- E01D—CONSTRUCTION OF BRIDGES, ELEVATED ROADWAYS OR VIADUCTS; ASSEMBLY OF BRIDGES
- E01D19/00—Structural or constructional details of bridges
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- E—FIXED CONSTRUCTIONS
- E01—CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
- E01D—CONSTRUCTION OF BRIDGES, ELEVATED ROADWAYS OR VIADUCTS; ASSEMBLY OF BRIDGES
- E01D22/00—Methods or apparatus for repairing or strengthening existing bridges ; Methods or apparatus for dismantling bridges
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Definitions
- 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.
- 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.
- UDP User Datagram Protocol
- viruses 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.
- the parent worm 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.
- 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.
- the 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.
- 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.
- 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.
- 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.
- the code is already installed on the nodes of the communication network.
- 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.
- FIG. 1 illustrates a communication network in an exemplary embodiment of the invention.
- FIG. 2 is a flow chart illustrating a method of transferring data to nodes of a communication network in an exemplary embodiment of the invention.
- FIGS. 3A-3D illustrate how the method of FIG. 2 may work in operation in an exemplary embodiment of the invention.
- FIG. 4 illustrates another communication network in an exemplary embodiment of the invention.
- FIG. 5 illustrates the processes of a swormlet in an exemplary embodiment of the invention.
- FIG. 6 illustrates how swormlets spawn on nodes of the communication network of FIG. 4 in an exemplary embodiment of the invention.
- FIG. 7 illustrates a topology for a control channel and a topology for a data channel in an exemplary embodiment of the invention.
- FIG. 8 illustrates an example of a physical topology for a Local Area Network (LAN) in an exemplary embodiment of the invention.
- LAN Local Area Network
- FIG. 9 is a flow chart illustrating another method of transferring data to nodes of a communication network in an exemplary embodiment of the invention.
- FIGS. 1, 2 , 3 A- 3 D, 4 - 9 and the following description depict specific exemplary embodiments of the invention to teach those skilled in the art how to make and use the best mode of the invention.
- some conventional aspects of the invention have been simplified or omitted.
- Those skilled in the art will appreciate variations from these embodiments that fall within the scope of the invention.
- Those skilled in the art will appreciate that the features described below can be combined in various ways to form multiple variations of the invention. As a result, the invention is not limited to the specific embodiments described below, but only by the claims and their equivalents.
- FIG. 1 illustrates a communication network 100 in an exemplary embodiment of the invention.
- Communication network 100 includes a plurality of nodes 101 - 104 capable of communicating with one another over a network facility 110 .
- Network facility 110 may comprise a LAN, a MAN, a WAN, or another type of network.
- a node may comprise any system, device, component, card, etc, for communication network 100 , such as a computer.
- Communication network 100 may include other nodes, components, devices, or systems not shown in FIG. 1 .
- 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.
- 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.
- FIG. 2 is a flow chart illustrating a method 200 of transferring data to nodes 101 - 104 of communication network 100 in an exemplary embodiment of the invention.
- node 101 is the only node having the code.
- node 101 executes the code to establish a control channel with one or more remote nodes (i.e., one or more of nodes 102 - 104 ).
- Code comprises any instructions executable by a processor, such as machine language instructions, programming language instructions (compiled or non-compiled), interpretive language instructions, etc.
- the code is stored on storage media.
- the code then replicates itself on node 101 , and transmits the replication of the code over the control channel to the remote node(s) (i.e., one or more of nodes 102 - 104 ).
- the remote nodes i.e., one or more of nodes 102 - 104 .
- the replication of the code represents a copy or replica of the code, a substantially similar copy or replica of the code, or a subset or derivative of the code.
- the remote nodes then execute the code as described in step 202 any number of times until the control channel is established with each of the nodes 101 - 104 , and each of the nodes 101 - 104 includes the code.
- FIGS. 3A-3C illustrate how step 202 of method 200 may work in operation in one embodiment of the invention.
- FIG. 3A illustrates nodes 101 - 103 of communication network 100 .
- Node 101 includes code 301 and nodes 102 - 103 do not initially include code resembling or corresponding to code 301 .
- node 101 executes code 301 to establish a control channel 311 with remote nodes 102 and 103 (see FIG. 3B ).
- Node 101 also executes code 301 to replicate itself, and transmit the replication of the code 301 to nodes 102 and 103 over the control channel 311 .
- Node 101 may perform this operation for multiple nodes not shown in FIG. 3B .
- 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 FIG. 3C ).
- Node 102 also executes code 301 to replicate itself, and transmit the replication of the code 301 to node 104 over the control channel 311 . Node 102 may perform this operation for multiple nodes not shown in FIG. 3C .
- step 202 is performed on the nodes 101 - 104 until each of the nodes 101 - 104 includes the code and each of the nodes 101 - 104 is connected to the control channel.
- Method 200 then proceeds to step 204 .
- the nodes 101 - 104 execute the code to establish a data channel with each of the nodes 101 - 104 .
- the data channel is independent of the control channel.
- Nodes 101 - 104 may receive control information over the control channel to assist in establishing the data channel.
- FIG. 3D illustrates how step 204 of method 200 may work in operation in one embodiment of the invention.
- Nodes 101 - 104 execute the code to establish the data channel 312 .
- the data channel is independent of the control channel, and may take on a different topology than the control channel.
- node 101 establishes a data channel 312 with node 102 .
- Node 102 establishes the data channel 312 with node 103 .
- Node 103 establishes the data channel 312 with node 104 .
- the topology of the data channel 312 is a linear chain while the topology of the control channel 311 is a binary tree.
- the topology of the control channel 311 and the data channel 312 is controlled by the originating process to maximize the efficiency of both channels.
- step 206 the originating process executing in node 101 transmits a data stream over the data channel to one or more of the nodes 102 - 104 .
- a data stream may comprise any information, software, instructions, etc, targeted for transfer in the communication network 100 .
- the nodes 102 - 104 executes 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.
- 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 .
- one or more of the nodes may transmit status information over the control channel to the originating process in node 101 .
- 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 .
- 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.
- the code can be used to maintain the same data channel and control channel.
- the original data channel and control channel may be torn down after the data stream is transmitted to the appropriate nodes.
- 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 FIG. 9 .
- FIG. 9 is a flow chart illustrating another method 900 of transferring data to nodes 101 - 104 of communication network 100 in an exemplary embodiment of the invention.
- each of nodes 101 - 104 includes the code need to establish a control channel and a data channel.
- the code may be the result of self-replicating code that previously spawned itself on nodes 101 - 104 (as according to FIG. 2 ).
- the code may also have been installed in another manner.
- each node 101 - 104 executes the code to establish a control channel with each of the nodes 101 - 104 in step 902 .
- the nodes 101 - 104 execute the code to establish a data channel with each of the nodes 101 - 104 .
- Nodes 101 - 104 may receive control information over the control channel to assist in establishing the data channel.
- 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.
- the topology of both the control channel and the data channel once again depends on the originating process.
- Method 200 proceeds to step 906 after the control channel and the data channel are established.
- the originating process executing in node 101 transmits a data stream over the data channel to one or more of the nodes 102 - 104 .
- the nodes 102 - 104 execute the code to handle the data stream.
- 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.
- the originating process may also transmit control information over the control channel to one or more of the nodes 102 - 104 .
- one or more of the nodes 102 - 104 may transmit status information over the control channel to the originating process in node 101 .
- FIG. 4 illustrates another communication network 400 in an exemplary embodiment of the invention.
- Communication network 400 includes a plurality of nodes 401 - 432 capable of communicating with one another over a LAN 440 .
- LAN 440 comprises any kind of trusted network where access to the nodes 401 - 432 from the LAN 440 is not blocked by firewalls or other protection mechanisms.
- LAN 440 may comprise an intranet, a MAN, a WAN, or another type of enterprise network.
- a node may comprise any system, device, component, card, etc, for communication network 400 , such as a computer.
- Nodes 401 - 432 are remote from each other, meaning that they communicate with one another over LAN 440 .
- Communication network 400 may include other nodes, components, devices, or systems not shown in FIG. 4 .
- node 401 is a controller node operated by network personnel.
- network personnel want to transfer a large data stream to all nodes 402 - 432 in communication network 400 .
- 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 .
- self-replicating code may be referred to as a streaming worm.
- a streaming worm 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.
- FIG. 5 illustrates a swormlet 500 in an exemplary embodiment of the invention. A single swormlet is shown in FIG. 5 to illustrate the processes in a swormlet. In actual operation, swormlet 500 has one or more parent swormlets (not shown) and possibly one or more child swormlets (not shown).
- 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 .
- FIFO First In First Out
- 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.
- node 401 includes an originating process (not shown) that originates the hybrid sworm.
- a linear topology may be the most efficient topology for the data channel.
- a linear topology may work the best because the bandwidth of LAN 440 does not have to be split between the swormlets of the hybrid sworm. Only one copy of the large data stream needs to be transferred over the LAN 440 at a time with the linear topology, as is illustrated below. Even though a linear topology may work best for the data channel, the linear topology may not work best for the control channel. Therefore, a different topology is used for the control channel.
- FIG. 6 illustrates a hybrid sworm in an exemplary embodiment of the invention.
- the hybrid sworm originates in an originating program being executed in a node, such as node 401 in this embodiment.
- Node 401 executes the originating program, being stored on a storage media, to initiate an originating process 602 .
- the originating process 602 in node 401 spawns swormlet 610 (referred to in FIG. 6 as S-LET). More particularly, the originating process 602 initiates a transceiver process 611 on node 401 .
- the transceiver process 611 executes on node 401 to establish a control channel with node 402 .
- the transceiver process 611 then transfers a copy of the swormlet code for swormlet 610 over the control channel (illustrated by solid arrows) to node 402 .
- the transceiver process 611 may transfer the copy of the swormlet code to node 402 using a remote shell command, such as remsh, rsh, or ssh.
- the transceiver process 611 may use the remote shell command to transfer and remotely execute an in-line Perl bootstrap script on node 402 that pulls the swormlet code over the control channel from node 401 .
- 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 .
- FIG. 7 illustrates the topology of the control channel as created by the sworm in communication network 400 .
- the solid arrows in FIG. 7 illustrate the control channel.
- the control channel has a binary tree topology in this embodiment.
- the control channel may take on other topologies in other embodiments.
- 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 .
- 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 .
- 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 FIG. 4 ) as designated by the originating process 602 .
- FIG. 7 also illustrates the topology of the data channel in the communication network 400 .
- the dotted arrows in FIG. 7 illustrate the data channel.
- the data channel has a linear topology (as compared to the binary tree topology of the control channel) to most efficiently transfer large data files.
- 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).
- 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 .
- each node 402 - 432 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 .
- LAN 440 includes a plurality of switching hubs connected to different nodes.
- FIG. 8 illustrates a physical topology of LAN 440 in an exemplary embodiment of the invention.
- node 401 is connected to switching hub 801
- nodes 402 - 405 are connected to switching hub 802
- nodes 406 - 409 are connected to switching hub 804 .
- the originating process 602 ensures that the data stream is not transmitted over each segment of LAN 440 more than once.
- the data channel is defined as a linear chain (see dotted arrows) through nodes 402 - 405 of switching hub 802 and then through nodes 406 - 409 of switching hub 804 , etc.
- the code can be used to maintain the same data channel and control channel.
- the original data channel and control channel may be torn down after the data stream is transmitted to the appropriate nodes.
- 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.
- 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.
- 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 FIG. 4 provides many advantages.
- the nodes 402 - 432 do not need to initially have any special code to receive the data stream.
- the swormlets will replicate themselves on the nodes 402 - 432 to provide the needed code.
- the nodes may then execute the code in parallel to more efficiently transfer the data stream over the data channel.
- network personnel can get feedback on the status of the transfer. Each swormlet maintains the control channel and provides status information back to the originating process 602 . Thus, network personnel can view the status information to determine the status of the data stream transfer.
- the bandwidth of the LAN 440 will most likely not be compromised by the data stream transfer. Only one copy of the data stream should be present on the LAN 440 at any one time in a linear topology, as the nodes pass the one copy of the data stream, block by block, from node to node until the final node is reached.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Architecture (AREA)
- Civil Engineering (AREA)
- Structural Engineering (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Information Transfer Between Computers (AREA)
- Small-Scale Networks (AREA)
Abstract
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.
Description
- 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.
- 1. 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.
- The 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.
- The same reference number represents the same element on all drawings.
-
FIG. 1 illustrates a communication network in an exemplary embodiment of the invention. -
FIG. 2 is a flow chart illustrating a method of transferring data to nodes of a communication network in an exemplary embodiment of the invention. -
FIGS. 3A-3D illustrate how the method ofFIG. 2 may work in operation in an exemplary embodiment of the invention. -
FIG. 4 illustrates another communication network in an exemplary embodiment of the invention. -
FIG. 5 illustrates the processes of a swormlet in an exemplary embodiment of the invention. -
FIG. 6 illustrates how swormlets spawn on nodes of the communication network ofFIG. 4 in an exemplary embodiment of the invention. -
FIG. 7 illustrates a topology for a control channel and a topology for a data channel in an exemplary embodiment of the invention. -
FIG. 8 illustrates an example of a physical topology for a Local Area Network (LAN) in an exemplary embodiment of the invention. -
FIG. 9 is a flow chart illustrating another method of transferring data to nodes of a communication network in an exemplary embodiment of the invention. -
FIGS. 1, 2 , 3A-3D, 4-9 and the following description depict specific exemplary embodiments of the invention to teach those skilled in the art how to make and use the best mode of the invention. For the purpose of teaching inventive principles, some conventional aspects of the invention have been simplified or omitted. Those skilled in the art will appreciate variations from these embodiments that fall within the scope of the invention. Those skilled in the art will appreciate that the features described below can be combined in various ways to form multiple variations of the invention. As a result, the invention is not limited to the specific embodiments described below, but only by the claims and their equivalents. -
FIG. 1 illustrates acommunication network 100 in an exemplary embodiment of the invention.Communication network 100 includes a plurality of nodes 101-104 capable of communicating with one another over anetwork facility 110.Network facility 110 may comprise a LAN, a MAN, a WAN, or another type of network. A node may comprise any system, device, component, card, etc, forcommunication network 100, such as a computer.Communication network 100 may include other nodes, components, devices, or systems not shown inFIG. 1 . - 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 incommunication network 100 to establish both the control channel and the data channel for the nodes 101-104, as is described in the following method. -
FIG. 2 is a flow chart illustrating amethod 200 of transferring data to nodes 101-104 ofcommunication network 100 in an exemplary embodiment of the invention. Once again, assumenode 101 is the only node having the code. Formethod 200,node 101 executes the code to establish a control channel with one or more remote nodes (i.e., one or more of nodes 102-104). Code comprises any instructions executable by a processor, such as machine language instructions, programming language instructions (compiled or non-compiled), interpretive language instructions, etc. The code is stored on storage media. The code then replicates itself onnode 101, and transmits the replication of the code over the control channel to the remote node(s) (i.e., one or more of nodes 102-104). When the code “replicates” itself, the replication of the code represents a copy or replica of the code, a substantially similar copy or replica of the code, or a subset or derivative of the code. The remote nodes then execute the code as described instep 202 any number of times until the control channel is established with each of the nodes 101-104, and each of the nodes 101-104 includes the code. -
FIGS. 3A-3C illustrate howstep 202 ofmethod 200 may work in operation in one embodiment of the invention.FIG. 3A illustrates nodes 101-103 ofcommunication network 100.Node 101 includescode 301 and nodes 102-103 do not initially include code resembling or corresponding to code 301. According to step 202 ofmethod 200,node 101 executescode 301 to establish acontrol channel 311 withremote nodes 102 and 103 (seeFIG. 3B ).Node 101 also executescode 301 to replicate itself, and transmit the replication of thecode 301 tonodes control channel 311.Node 101 may perform this operation for multiple nodes not shown inFIG. 3B . - After receiving the code,
nodes code 301 as described instep 202 to establish a control channel with remote nodes.Node 103 does not have a remote node (or child node) in this embodiment, sonode 103 does not performstep 202.Node 102 does have a remote node innode 104. Therefore, according tostep 202,node 102 executescode 301 to establish acontrol channel 311 with remote node 104 (seeFIG. 3C ).Node 102 also executescode 301 to replicate itself, and transmit the replication of thecode 301 tonode 104 over thecontrol channel 311.Node 102 may perform this operation for multiple nodes not shown inFIG. 3C . - Referring back to
FIG. 2 ,step 202 is performed on the nodes 101-104 until each of the nodes 101-104 includes the code and each of the nodes 101-104 is connected to the control channel.Method 200 then proceeds to step 204. Instep 204, the nodes 101-104 execute the code to establish a data channel with each of the nodes 101-104. The data channel is independent of the control channel. Nodes 101-104 may receive control information over the control channel to assist in establishing the data channel. -
FIG. 3D illustrates howstep 204 ofmethod 200 may work in operation in one embodiment of the invention. Nodes 101-104 execute the code to establish thedata channel 312. The data channel is independent of the control channel, and may take on a different topology than the control channel. As shown inFIG. 3D ,node 101 establishes adata channel 312 withnode 102.Node 102 establishes thedata channel 312 withnode 103.Node 103 establishes thedata channel 312 withnode 104. The topology of thedata channel 312 is a linear chain while the topology of thecontrol channel 311 is a binary tree. The topology of thecontrol channel 311 and thedata channel 312 is controlled by the originating process to maximize the efficiency of both channels. - Referring back to
FIG. 2 ,method 200 proceeds to step 206 after the control channel and the data channel are established. Instep 206, the originating process executing innode 101 transmits a data stream over the data channel to one or more of the nodes 102-104. A data stream may comprise any information, software, instructions, etc, targeted for transfer in thecommunication network 100. Responsive to receiving the data stream, the nodes 102-104 executes 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 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 thecommunication network 100. Instep 210, one or more of the nodes may transmit status information over the control channel to the originating process innode 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 thenetwork 100. Also, network personnel do not need to pre-install code on nodes 102-104 ofcommunication network 100 to facilitate the data transfer, as the self-replicating code can spawn itself on the nodes 102-104 of thenetwork 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
FIG. 9 . -
FIG. 9 is a flow chart illustrating anothermethod 900 of transferring data to nodes 101-104 ofcommunication network 100 in an exemplary embodiment of the invention. Assume each of nodes 101-104 includes the code need to establish a control channel and a data channel. The code may be the result of self-replicating code that previously spawned itself on nodes 101-104 (as according toFIG. 2 ). The code may also have been installed in another manner. Formethod 900, each node 101-104 executes the code to establish a control channel with each of the nodes 101-104 instep 902. Instep 904, the nodes 101-104 execute the code to establish a data channel with each of the nodes 101-104. Nodes 101-104 may receive control information over the control channel to assist in establishing the 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. The topology of both the control channel and the data channel once again depends on the originating process. -
Method 200 proceeds to step 906 after the control channel and the data channel are established. Instep 906, the originating process executing innode 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. Instep 908, the originating process may also transmit control information over the control channel to one or more of the nodes 102-104. Instep 910, one or more of the nodes 102-104 may transmit status information over the control channel to the originating process innode 101. -
FIG. 4 illustrates anothercommunication network 400 in an exemplary embodiment of the invention.Communication network 400 includes a plurality of nodes 401-432 capable of communicating with one another over aLAN 440.LAN 440 comprises any kind of trusted network where access to the nodes 401-432 from theLAN 440 is not blocked by firewalls or other protection mechanisms. In other embodiments,LAN 440 may comprise an intranet, a MAN, a WAN, or another type of enterprise network. A node may comprise any system, device, component, card, etc, forcommunication network 400, such as a computer. Nodes 401-432 are remote from each other, meaning that they communicate with one another overLAN 440.Communication network 400 may include other nodes, components, devices, or systems not shown inFIG. 4 . - 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 incommunication 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 ofLAN 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 ofLAN 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.
FIG. 5 illustrates aswormlet 500 in an exemplary embodiment of the invention. A single swormlet is shown inFIG. 5 to illustrate the processes in a swormlet. In actual operation,swormlet 500 has one or more parent swormlets (not shown) and possibly one or more child swormlets (not shown). - The
swormlet 500 spans one ormore parent nodes child node 506 in this embodiment. One of the parent nodes is acontrol parent node 502 that establishes a control channel (illustrated with solid arrows) with thechild node 506. The other parent node is adata parent node 504 that establishes a data channel (illustrated with dotted arrows) with thechild node 506. Thecontrol parent node 502 and thedata parent node 504 are shown as separate nodes in this embodiment, but the two could be the same node. - The
swormlet 500 includes atransceiver process 510, acontrol process 511, astatus process 512, apayload process 513, adata routing process 514, adata transmitter process 515, and adata receiver process 516. Thetransceiver process 510 for theswormlet 500 is executed on thecontrol parent node 502. Thedata transmitter process 515 is executed on thedata parent node 504. The remaining processes are executed on thechild node 506. - The
transceiver process 510 executes on thecontrol parent node 502 and establishes a bi-directional control channel with thecontrol process 511 and/or thestatus process 512 on thechild node 506. Thetransceiver process 510 acts as a conduit for payload code and other program code, control information, status information, and return data from thechild node 506. Thetransceiver process 510 may transmit status information to a status process of a parent swormlet (not shown). Thetransceiver process 510 may also receive control information from a control process of the parent swormlet. - The
control process 511 executes on thechild node 506 and is responsible for distributing the swormlet code and payload code over the control channel. Thecontrol process 511 then initiates thestatus process 512, thepayload process 513, thedata routing process 514, and optionally one or more transceiver processes and the data transmitter processes for additional child swormlets (not shown), if necessary. Thecontrol 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 thelocal status process 512, it maintains a backup status connection to thetransceiver process 510 in case thestatus 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 thechild node 506 and is responsible for packetizing return data received from thelocal 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. Thestatus process 512 then transmits this multiplexed status and return data stream to thetransceiver process 510 of thecontrol parent node 502. - The
payload process 513 executes on thechild node 506 and comprises the code to be locally performed on a node. Thepayload process 513 can do anything allowed by applicable security protocols. Thepayload process 513 reads data sent by the originating process through thedata routing process 514, and sends data and status information back to the originating process through thestatus 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 todata receiver process 516 of thechild node 506. - The
data receiver process 516 executes on thechild node 506 and is responsible for receiving data from thedata transmitter process 515 of thedata parent node 504 and passing it through a First In First Out (FIFO)buffer 518 to thedata routing process 514. TheFIFO 518 is included because thedata receiver process 516 anddata routing process 514 belong to two different process families. - The
data routing process 514 executes on thechild node 506 and is responsible for reading data from theFIFO 518, and routing the data to thepayload 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
FIG. 4 , assume thatnode 401 includes an originating process (not shown) that originates the hybrid sworm. Because network personnel want to transfer a large data stream (i.e., software) to many nodes of thenetwork 400, a linear topology may be the most efficient topology for the data channel. A linear topology may work the best because the bandwidth ofLAN 440 does not have to be split between the swormlets of the hybrid sworm. Only one copy of the large data stream needs to be transferred over theLAN 440 at a time with the linear topology, as is illustrated below. Even though a linear topology may work best for the data channel, the linear topology may not work best for the control channel. Therefore, a different topology is used for the control channel. -
FIG. 6 illustrates a hybrid sworm in an exemplary embodiment of the invention. The hybrid sworm originates in an originating program being executed in a node, such asnode 401 in this embodiment.Node 401 executes the originating program, being stored on a storage media, to initiate anoriginating process 602. The originatingprocess 602 innode 401 spawns swormlet 610 (referred to inFIG. 6 as S-LET). More particularly, the originatingprocess 602 initiates atransceiver process 611 onnode 401. Thetransceiver process 611 executes onnode 401 to establish a control channel withnode 402. Thetransceiver process 611 then transfers a copy of the swormlet code forswormlet 610 over the control channel (illustrated by solid arrows) tonode 402. Thetransceiver process 611 may transfer the copy of the swormlet code tonode 402 using a remote shell command, such as remsh, rsh, or ssh. Thetransceiver process 611 may use the remote shell command to transfer and remotely execute an in-line Perl bootstrap script onnode 402 that pulls the swormlet code over the control channel fromnode 401. -
Node 402 executes the swormlet code to perform acontrol process 612 forswormlet 610. Thecontrol process 612 initiates the other processes forswormlet 610, such as thestatus process 613, thepayload process 614, and thedata routing process 615. Thecontrol process 612 receives the payload code from the originatingprocess 602 over the control channel. Thecontrol process 612 replicates the payload code and forwards the copy of the payload code to thepayload process 614. Thecontrol 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 atransceiver process 621 onnode 402 forswormlet 620. Thetransceiver process 621 executes onnode 402 to establish a control channel withnode 403. Thetransceiver process 621 then transfers a copy of the swormlet code forswormlet 620 over the control channel tonode 403.Control process 612 also initiates atransceiver process 631 onnode 402 forswormlet 630. Thetransceiver process 631 executes onnode 402 to establish a control channel withnode 418. Thetransceiver process 631 then transfers a copy of the swormlet code forswormlet 630 over the control channel tonode 418. -
Node 403 executes the swormlet code to perform acontrol process 622 forswormlet 620. Thecontrol process 622 initiates the other processes forswormlet 620, such as thestatus process 623, thepayload process 624, and thedata routing process 625. Thecontrol process 622 receives the payload code from thecontrol process 612 ofswormlet 610 over the control channel through thetransceiver process 621. Thecontrol process 622 replicates the payload code and forwards the copy of the payload code tonodes -
Node 418 executes the swormlet code to perform acontrol process 632 forswormlet 630. Thecontrol process 632 initiates the other processes forswormlet 630, such as thestatus process 633, thepayload process 634, and thedata routing process 635. Thecontrol process 632 receives the payload code from thecontrol process 612 ofswormlet 610 over the control channel through thetransceiver process 631. Thecontrol process 632 replicates the payload code and forwards the copy of the payload code tonodes - Swormlets are spawned in a similar manner through nodes 404-432 of the communication network 400 (see
FIG. 4 ) as designated by the originatingprocess 602 to establish the control channel between the nodes.FIG. 7 illustrates the topology of the control channel as created by the sworm incommunication network 400. The solid arrows inFIG. 7 illustrate the control channel. The control channel has a binary tree topology in this embodiment. The control channel may take on other topologies in other embodiments. Once the swormlets are spawned and control channel is established between the nodes 401-432, the data channel can then be established between the nodes 401-432. The data channel may be established simultaneous with the control channel in other embodiments. - Originating
process 602 initiates adata originator process 604 onnode 401.Data originator process 604 packetizes each block of data and throttles the transmission of the data stream over the data channel if needed. Theoriginator process 602 initiates adata transmitter process 616 onnode 401 forswormlet 610. Based on the control from the originatingprocess 602, thedata transmitter process 616 executes onnode 401 to establish a data channel (illustrated by dotted arrows) withnode 402. -
Node 402 executes the swormlet code from thedata transmitter process 616 to initiate thedata receiver process 617 fornode 402. Thedata receiver process 617 communicates with thedata transmitter process 616 over the data channel to receive a data stream from thedata transmitter process 616. Thedata receiver process 617 transmits the data stream to theFIFO 618. Thedata routing process 615 then reads the data stream from theFIFO 618 and transmits the data stream to the data transmitter process 626 ofswormlet 620. - Depending on instructions from the
originator process 602 received over the control channel, thecontrol process 612 ofswormlet 610 initiates a data transmitter process 626 forswormlet 620. The data transmitter process 626 executes onnode 402 to establish a data channel withnode 403. The data transmitter process 626 then transfers a copy of the swormlet code for thedata receiver process 627 over the data channel tonode 403.Node 403 executes the swormlet code from the data transmitter process 626 to initiate thedata receiver process 627 fornode 403. Thedata 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. Thedata receiver process 627 transmits the data stream to theFIFO 628. Thedata routing process 625 then reads the data stream from theFIFO 628 and transmits the data stream to the data transmitter process of the swormlet ofnode 404. -
Node 418 also receives a copy of the swormlet code for thedata receiver process 637 over the data channel fromnode 417.Node 418 executes the swormlet code to initiate thedata receiver process 637 fornode 418. Thedata receiver process 637 communicates with a data transmitter process ofnode 417 over the data channel to receive a data stream from the data transmitter process. Thedata receiver process 637 transmits the data stream to theFIFO 638. Thedata routing process 635 then reads the data stream from theFIFO 638 and transmits the data stream to the data transmitter process of the swormlet ofnode 419. - The data channel is established in a similar manner through nodes 405-432 of the communication network 400 (see
FIG. 4 ) as designated by the originatingprocess 602.FIG. 7 also illustrates the topology of the data channel in thecommunication network 400. The dotted arrows inFIG. 7 illustrate the data channel. The data channel has a linear topology (as compared to the binary tree topology of the control channel) to most efficiently transfer large data files. - When in operation,
data originator process 604 transfers a data stream toswormlet 610. The data stream in this embodiment comprises software that is a large data stream. Thedata transmitter process 616 transmits the data stream over the data channel to thedata receiver process 617. Thedata receiver process 617 transmits the data stream to theFIFO 618. Thedata routing process 615 then reads the data stream from theFIFO 618. Thedata routing process 615 replicates the data stream, and forwards a copy of the data stream to thepayload process 614. Thedata routing process 615 forwards the data stream to anotherswormlet 620 as addressed or specified by the originatingprocess 602. Thepayload process 614 receives the copy of the data stream from thedata routing process 615. Thepayload process 614 executes the payload code to locally handle the data stream. For instance, the payload code may direct thepayload process 614 to store the data stream in a known directory onnode 402. - The
control process 612 may receive control instructions from the originatingprocess 602. Thecontrol process 612 may execute the control instructions on thepayload process 614. Thecontrol 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. Thepayload process 614 forwards the output data to thestatus process 613. Thestatus process 613 receives the output data from thepayload process 614 and/or status information from any child swormlets. Thestatus process 613 then transmits the output data and/or status information from thepayload process 614 and child swormlets over the control channel. The status information may comprise feedback on the success of storing the large data stream onnode 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 originatingprocess 602 may address the data stream to one or more swormlets 610, 620 or 630, or broadcast to allswormlets - The topology of the data channel may depend on the physical topology of
LAN 440. For instance, assume thatLAN 440 includes a plurality of switching hubs connected to different nodes.FIG. 8 illustrates a physical topology ofLAN 440 in an exemplary embodiment of the invention. InFIG. 8 ,node 401 is connected to switchinghub 801, nodes 402-405 are connected to switchinghub 802, and nodes 406-409 are connected to switchinghub 804. In defining the topology of the data channel, the originatingprocess 602 ensures that the data stream is not transmitted over each segment ofLAN 440 more than once. For instance, the data channel is defined as a linear chain (see dotted arrows) through nodes 402-405 of switchinghub 802 and then through nodes 406-409 of switchinghub 804, etc. - 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 inFIG. 4 according to the process described above provides many advantages. First, the nodes 402-432 do not need to initially have any special code to receive the data stream. The swormlets will replicate themselves on the nodes 402-432 to provide the needed code. The nodes may then execute the code in parallel to more efficiently transfer the data stream over the data channel. Second, network personnel can get feedback on the status of the transfer. Each swormlet maintains the control channel and provides status information back to theoriginating process 602. Thus, network personnel can view the status information to determine the status of the data stream transfer. Third, the bandwidth of theLAN 440 will most likely not be compromised by the data stream transfer. Only one copy of the data stream should be present on theLAN 440 at any one time in a linear topology, as the nodes pass the one copy of the data stream, block by block, from node to node until the final node is reached.
Claims (20)
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.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/095,147 US20050204053A1 (en) | 2004-02-25 | 2005-03-31 | Data transfer to nodes of a communication network using a data channel and a control channel |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/786,911 US7474656B2 (en) | 2004-02-25 | 2004-02-25 | Data transfer to nodes of a communication network using self-replicating code |
US11/095,147 US20050204053A1 (en) | 2004-02-25 | 2005-03-31 | Data transfer to nodes of a communication network using a data channel and a control channel |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/786,911 Continuation-In-Part US7474656B2 (en) | 2004-02-25 | 2004-02-25 | Data transfer to nodes of a communication network using self-replicating code |
Publications (1)
Publication Number | Publication Date |
---|---|
US20050204053A1 true US20050204053A1 (en) | 2005-09-15 |
Family
ID=34750499
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/786,911 Active 2026-03-30 US7474656B2 (en) | 2004-02-25 | 2004-02-25 | Data transfer to nodes of a communication network using self-replicating code |
US11/095,147 Abandoned US20050204053A1 (en) | 2004-02-25 | 2005-03-31 | Data transfer to nodes of a communication network using a data channel and a control channel |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US10/786,911 Active 2026-03-30 US7474656B2 (en) | 2004-02-25 | 2004-02-25 | Data transfer to nodes of a communication network using self-replicating code |
Country Status (6)
Country | Link |
---|---|
US (2) | US7474656B2 (en) |
EP (1) | EP1569113B1 (en) |
JP (1) | JP4602791B2 (en) |
KR (1) | KR101110584B1 (en) |
CN (1) | CN100527693C (en) |
DE (1) | DE602005000044T2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080080394A1 (en) * | 2006-10-02 | 2008-04-03 | Phonak Ag | Method for controlling a transmission system as well as a transmission system |
US11349557B2 (en) * | 2018-11-30 | 2022-05-31 | At&T Intellectual Property I, L.P. | System model and architecture for mobile integrated access and backhaul in advanced networks |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100287623A1 (en) * | 2005-11-23 | 2010-11-11 | Thomas Banik | Method for distributing a computer data structure to nodes of a network |
CN104348868A (en) * | 2013-08-02 | 2015-02-11 | 华为技术有限公司 | Node installation processing method, device and system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030182398A1 (en) * | 2002-02-14 | 2003-09-25 | Morlang Keven P. | Method of establishing a logical association between connections |
US6782398B1 (en) * | 2000-06-14 | 2004-08-24 | Microsoft Corporation | Method for executing commands on multiple computers of a network |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9412553D0 (en) * | 1994-06-22 | 1994-08-10 | At & T Global Solutions Intern | Method and apparatus for distributing software |
US6233601B1 (en) * | 1996-11-14 | 2001-05-15 | Mitsubishi Electric Research Laboratories, Inc. | Itinerary based agent mobility including mobility of executable code |
JPH10171660A (en) | 1996-12-13 | 1998-06-26 | Nec Corp | Data communication device |
JP3549861B2 (en) | 2000-09-12 | 2004-08-04 | 日本電信電話株式会社 | Distributed denial of service attack prevention method and apparatus, and computer program therefor |
US7162538B1 (en) * | 2000-10-04 | 2007-01-09 | Intel Corporation | Peer to peer software distribution system |
JP2003044637A (en) * | 2001-08-01 | 2003-02-14 | Hitachi Ltd | Workflow system control method and program for executing the workflow system |
DE60300657T2 (en) | 2003-08-04 | 2006-02-02 | Alcatel | A method, a communication network and a software product for distribution of software packages or software updates |
-
2004
- 2004-02-25 US US10/786,911 patent/US7474656B2/en active Active
-
2005
- 2005-02-15 EP EP05250873A patent/EP1569113B1/en not_active Expired - Fee Related
- 2005-02-15 DE DE602005000044T patent/DE602005000044T2/en active Active
- 2005-02-18 KR KR1020050013490A patent/KR101110584B1/en not_active IP Right Cessation
- 2005-02-24 CN CNB2005100509489A patent/CN100527693C/en not_active Expired - Fee Related
- 2005-02-25 JP JP2005049886A patent/JP4602791B2/en not_active Expired - Fee Related
- 2005-03-31 US US11/095,147 patent/US20050204053A1/en not_active Abandoned
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6782398B1 (en) * | 2000-06-14 | 2004-08-24 | Microsoft Corporation | Method for executing commands on multiple computers of a network |
US20030182398A1 (en) * | 2002-02-14 | 2003-09-25 | Morlang Keven P. | Method of establishing a logical association between connections |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080080394A1 (en) * | 2006-10-02 | 2008-04-03 | Phonak Ag | Method for controlling a transmission system as well as a transmission system |
US7698440B2 (en) * | 2006-10-02 | 2010-04-13 | Phonak Ag | Method for controlling a transmission system as well as a transmission system |
US20100172526A1 (en) * | 2006-10-02 | 2010-07-08 | Phonak Ag | Method for controlling a transmission system as well as a transmission system |
US8543709B2 (en) | 2006-10-02 | 2013-09-24 | Phonak Ag | Method for controlling a transmission system as well as a transmission system |
US11349557B2 (en) * | 2018-11-30 | 2022-05-31 | At&T Intellectual Property I, L.P. | System model and architecture for mobile integrated access and backhaul in advanced networks |
Also Published As
Publication number | Publication date |
---|---|
US20050185662A1 (en) | 2005-08-25 |
EP1569113A1 (en) | 2005-08-31 |
EP1569113B1 (en) | 2006-07-19 |
JP2005244985A (en) | 2005-09-08 |
JP4602791B2 (en) | 2010-12-22 |
DE602005000044D1 (en) | 2006-08-31 |
KR20060042975A (en) | 2006-05-15 |
CN1661979A (en) | 2005-08-31 |
DE602005000044T2 (en) | 2007-07-19 |
US7474656B2 (en) | 2009-01-06 |
CN100527693C (en) | 2009-08-12 |
KR101110584B1 (en) | 2012-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7155487B2 (en) | Method, system and article of manufacture for data distribution over a network | |
EP1703701B1 (en) | APIs to build peer to peer messaging applications | |
US7353253B1 (en) | Peer-to-peer messaging system | |
US7543023B2 (en) | Service support framework for peer to peer applications | |
CN101729354B (en) | Accelerating data communication method using tunnels | |
CN1697354B (en) | Method for reliable transmitting data through multicast and unicast protocol, and host of receiving data | |
US8533267B2 (en) | Distribution of XML documents/messages to XML appliances/routers | |
US8279777B2 (en) | Method for secure reliable point to multi-point bi-directional communications | |
Robertson | {Linux-HA} Heartbeat System Design | |
JPH11161622A (en) | Communication system | |
US6697872B1 (en) | Distributed packet processing using encapsulation and decapsulation chains | |
EP1494424B1 (en) | System and method for message-based scalable data transport | |
CN102763359B (en) | The traffic optimization device of SCTP and method in multicast network | |
AU6547599A (en) | Method and apparatus for hierarchical software distribution packages | |
US20050188107A1 (en) | Redundant pipelined file transfer | |
US20050204053A1 (en) | Data transfer to nodes of a communication network using a data channel and a control channel | |
Zhu et al. | MCTCP: Congestion-aware and robust multicast TCP in software-defined networks | |
US8515079B1 (en) | Hybrid rekey distribution in a virtual private network environment | |
JP2006190263A (en) | Mechanism for binding structured data protocol to protocol providing byte stream | |
WO2001077841A3 (en) | Method and apparatus for reliable and scalable distribution of data files in distributed networks | |
US7720973B2 (en) | Message-based scalable data transport protocol | |
WO2008050585A1 (en) | Two-way communication system, server apparatus, relay apparatus, two-way communication method and program | |
US7710881B2 (en) | Apparatus for scalable reliable group communication | |
JP3839967B2 (en) | Broadcast communication method and communication apparatus | |
CN1494289A (en) | Method of implementing business transmission control in medium gateway control protocol |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: LUCENT TECHNOLOGIES INC, NEW JERSEY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SHEEHAN, MICHAEL J.;REEL/FRAME:016441/0700 Effective date: 20050330 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |