The invention relates to the rapid dissemination of information to widely dispersed nodes on a network. More specifically, the invention relates to using a patch method to rapidly disseminate information to widely dispersed nodes on a network.
The transfer of information such as firmware/software downloads and upgrades is practiced widely in communications networks, where a central server transmits information to nodes in the network via broadcast or unicast messages transmitted on a scheduled or unscheduled basis. A network node can also request a download at any time. In one technique, communication sessions are set up in a point-to-point mode or a point-to-multipoint mode to facilitate the transfer of information.
In networks with limited bandwidth and/or a large number of widely dispersed nodes, unicast methods can be punitive in terms of bandwidth and network resources, since a separate message is sent to each node. The broadcast mode can be more efficient, but can tie up the network for a considerable period of time, since all nodes typically have to listen to the central node at the same time in order to receive the desired information. The transfer of information to each requesting node may demand considerable time and bandwidth resources, possibly disrupting normal network operations.
Based at least in part upon these and other limitations of existing methods for transfer of information to nodes in a network, new systems and methods for such transfer of information are welcome additions to the art.
In one embodiment, the invention provides a method of distributing information to a plurality of nodes in a network. The method includes selecting a node of the plurality of nodes as a seed node, providing a patch image to the seed node, creating, by the seed node, a second image from the patch image, and disseminating the second image to a plurality of neighbor nodes.
In another embodiment, the invention provides a method of distributing information to a plurality of nodes in a network. The method includes receiving a first patch image by a first node of the plurality of nodes, the first node having a first firmware type, building, by the first node, a first complete image using the first patch image, informing the plurality of nodes that the first complete image is available, receiving a request for the first complete image from another of the plurality of nodes, and sending the first complete image from the first node to the node which requested the first complete image.
In a further embodiment, the invention provides a method of updating a network having nodes with two or more incompatible firmware types. The method includes selecting a first node in the network having a first firmware-type as a first seed node, selecting a second node in the network having a second firmware-type as a second seed node, providing a first firmware-type patch image to the first node, providing a second-firmware-type patch image to the second node, recreating, by the first node, a first firmware-type complete image, recreating, by the second node, a second firmware-type complete image, disseminating, by the first node, the first firmware-type complete image to a first plurality of nodes on the network having the first firmware-type, and disseminating, by the second node, the second firmware-type complete image to a second plurality of nodes on the network having the second firmware-type.
Other aspects of the invention will become apparent by consideration of the detailed description and accompanying drawings.
a and 3b depict two phases of a bulk information transfer to nodes of an exemplary network.
Before any embodiments of the present invention are explained in detail, it is to be understood that the invention is not limited in its application to the details of construction and the arrangement of components set forth in the following description or illustrated in the accompanying drawings. The invention is capable of other embodiments and of being practiced or of being carried out in various ways.
U.S. Pat. No. 7,961,741 (the '741 Patent), filed Oct. 23, 2008, issued Jun. 14, 2011, and entitled “Rapid Dissemination of Bulk Information to Widely Dispersed Network Nodes,” the entire contents of which are hereby incorporated by reference, discloses methods for disseminating images to widely dispersed nodes on one or more networks using seeding.
An exemplary embodiment of bulk image downloading is presented for two cases as shown in
The technique for transferring an image to all of the nodes in networks of the types illustrated in
In the second phase, shown in
When transferring relatively large images (e.g., firmware upgrades), the methods described in the '741 Patent can still consume large amounts of network bandwidth. In some instances, the network may include nodes which have different hardware and/or firmware, requiring multiple images to be seeded and disseminated, even though the nodes are all on the same network, and/or geographically near each other. In such cases, additional overhead is required to enable nodes N and/or seeds S to determine which image is the correct image for the node N. For example, an electric utility may provide some neighborhoods with first electric meters, and at a later date, switch meter suppliers and provide second electric meters to other neighborhoods. These neighborhoods can be closely situated, resulting in “islands” of first meters surrounded by areas of second meters.
The need to transfer multiple versions of potentially relatively large images can result in consumption of even greater amounts of network bandwidth, reducing performance of the network. Embodiments of the present invention improve performance of the network by transferring “patch images.” Patch images include the section of firmware (or other program/data stored in memory) that is being updated, and possibly some additional code as needed (e.g., to complete memory blocks, to complete a subsection of the code, etc.), but does not include the entire firmware image. In most instances, patch images are significantly smaller than the entire firmware image. For example, in an extreme circumstance, the patch image can be a single byte, while the entire firmware image can run to many megabytes. The messages containing the patch image can also contain information regarding where the patch image belongs in the entire firmware image (e.g., an address, an offset, a block boundary, etc.).
Next, the BOS 110/210 transmits a message containing the patch image, along with any overhead information, to the seed nodes S (step 410). The transmission can be a unicast message (i.e., an individual message sent to each seed node individually) or can be a broadcast message (i.e., one message sent to all seed nodes simultaneously). Broadcast messages can include information regarding the type of firmware/hardware the patch image is for, enabling seed nodes S to determine if the message is intended for them.
In the embodiment shown in
In an individual node implementation, the BOS 110/210 can return to step 415 to receive responses from additional seed nodes S that they have recreated the firmware image. In some embodiments, the seed nodes S provide the patch image to the non-seed nodes N, which then generate the complete image individually.
Once the seed node S has generated the full image, the seed node S sends a communication to the BOS 110/210 that the full image has been generated (step 520). Then, while the BOS 110/210 informs other nodes N on the network that the full image is available, the seed node S waits to receive a request for the full image from another node N (step 525). When a request is received, the seed node S transmits the full image to the requesting node N (step 530).
In some embodiments, the seed node S does not recreate the full image, instead the seed node S transmits the patch image to the other nodes N, and the other nodes N each recreate the full image on their own.
In an alternative embodiment, the seed node S pushes the regenerated full image to other nodes N on the network. After the full image is determined to be ready (step 510), the seed node S transmits (via unicast or broadcast messages) the full image to nodes N in its area (step 530).
As described in the '741 Patent, the node N looks for the update image in a plurality of neighbor nodes, requesting the update image from a successively larger number of neighbor nodes N when the update image is not located at one of the neighbor nodes N.
The devices M determine if a patch has been received from the BOS 110/210 (step 710). If a patch image intended for the device M is received, the device M generates the full image (step 715). Next the device M determines if it is able to generate the full image (step 720). If the device M is unable to generate the full image (e.g., there was a communication error in receiving the patch image), the device M finds another device M (or the BOS 110/210) that has the patch, and obtains the patch image from that device M (step 725). The device M then attempts to generate the full image (step 720) again. Once the device M has generated the full image, the device M begins using the update image (step 730).
In some embodiments, nodes N download the image in chunks from multiple seed nodes S, thereby speeding up the download process.
Various features and advantages of the invention are set forth in the following claims.