Firmware download with adaptive lost packet recovery

Information

  • Patent Grant
  • 8787210
  • Patent Number
    8,787,210
  • Date Filed
    Friday, March 15, 2013
    11 years ago
  • Date Issued
    Tuesday, July 22, 2014
    10 years ago
Abstract
Disclosed are methodologies for implementing a firmware download to endpoints in a mesh network. A firmware package is divided into a number of blocks, each block containing a number of packets and sent as a broadcast to endpoints in a wireless mesh network. A number of redundancy packets are sent to permit calculation of lost packets. A maximum number of redundancy packets to be sent is determined and a forward error correction code is developed depending on the maximum number of redundancy packets and the total number of firmware packets to be sent. A first block of redundancy packets, less than the maximum number, is sent followed by additional blocks of redundancy packets depending on reports from the receiving endpoints.
Description
FIELD OF THE SUBJECT MATTER

The presently disclosed subject matter relates to a wireless mesh network technology, and in particular to such networks including firmware image update functionality for network nodes.


BACKGROUND OF THE SUBJECT MATTER

Wireless mesh networks have been employed to good advantage in various environments and often are used to collect and report usage (consumption) and/or generation information for various utilities including, for example, water, gas, and electricity usage. Such mesh networks may incorporate a number of devices (nodes) that operate based on firmware stored within the device (node). In some instances it is desirable from time to time to update such stored firmware for varying purposes including such as adding additional functionality for the node, correcting (patching) errors in existing firmware, or for other reasons.


Generally, firmware (software) updates are accomplished by broadcasting firmware packets to the nodes. Broadcast packets are not acknowledged and often the fact that such broadcasts are conducted in a noisy RF environment means that all packets will not be received by all nodes. Furthermore the broadcast efficiency depends on the environment and is not easy to predict. In addition the ever changing nature of interference levels and network traffic load will make the broadcast efficiency vary with time.


In previously known arrangements, following the broadcast of a number of packets corresponding to, for example, a new or replacement firmware image, the network head (management system) will interrogate the various network nodes to find out which packets are missing in each node. The missing packets are then retransmitted either through a broadcast mechanism or through individual point-to-point communications. As different nodes are usually missing different packets, this process may entail the retransmission of a very large number of packets, slowing down the whole process.


In some systems, redundant broadcasts including systematic repetition of each packet is employed to attempt to mitigate problems associated with broadcast update techniques. Such redundancy increases the probability of reception of the packets but slows down the whole process.


In view of these identified issues, it would be advantageous to provide a firmware (software) updating (downloading) arrangement that provides improved packet reception reliability and recovery.


While various implementations of firmware updating systems have been developed, and while various combinations of error correcting techniques have been developed, no design has emerged that generally encompasses all of the desired characteristics as hereafter presented in accordance with the subject technology.





BRIEF DESCRIPTION OF THE DRAWINGS

A full and enabling disclosure of the presently disclosed subject matter, including the best mode thereof, directed to one of ordinary skill in the art, is set forth in the specification, which makes reference to the appended figures, in which:



FIG. 1 depicts representative network architecture in accordance with the presently disclosed subject matter;



FIG. 2 is a block diagram overview illustration of an Advanced Metering System (AMS) and a representation of corresponding methodology thereof, in accordance with the presently disclosed subject matter;



FIG. 3 schematically illustrates an exemplary methodology and corresponding apparatus for transmitting firmware to end devices in accordance with the presently disclosed subject matter;



FIG. 4 schematically illustrates an exemplary methodology and corresponding apparatus for transmitting differing firmware images to selected end devices;



FIG. 5 depicts an exemplary Reed-Solomon encoder configuration as may be employed in implementing the presently disclosed subject matter;



FIG. 6 is a block diagram of a representative firmware download broadcast;



FIG. 7 is a block diagram illustrating an exemplary block of packets including redundant packets provided for packet recovery in accordance with the presently disclosed subject matter;



FIG. 8 is a block diagram illustrating a block of packets including redundant packets provided for lost packet recovery in accordance with the presently disclosed subject matter;



FIG. 9 is a block diagram illustrating the contents of an exemplary firmware download packet in accordance with the presently disclosed subject matter;



FIG. 10 is a block diagram of a block of packets as may be employed to provide adaptive packet recovery in accordance with the presently disclosed subject matter;



FIG. 11 is a block diagram of a block of packets as may be employed to provide three-step adaptive packet recovery in accordance with the presently disclosed subject matter;



FIG. 12 illustrates representative Reed-Solomon code structure as may be employed for three-step adaptive packet recovery in accordance with the presently disclosed subject matter;



FIG. 13 illustrates representative Reed-Solomon code structure as may be employed for the first phase of a three-step adaptive packet recovery process in accordance with the presently disclosed subject matter;



FIG. 14 is a flow chart representing a firmware download process including multi-step adaptive packet recovery in accordance with the presently disclosed subject matter;



FIG. 15 is a table of exemplary parameters useful for evaluating statistical and CPU requirements estimations;



FIG. 16 is a table illustrating exemplary probabilities of success for single-step packet recovery as relates to presently disclosed subject matter;



FIG. 17 is a table illustrating exemplary probabilities of success for three-step packet recovery with a Broadcast Success Rate (BSR) of 99% as relates to presently disclosed subject matter;



FIG. 18 is a table illustrating exemplary probabilities of success for three-step packet recovery with a Broadcast Success Rate (BSR) of 95% as relates to presently disclosed subject matter; and



FIG. 19 is a table illustrating exemplary probabilities of success for three-step packet recovery with a Broadcast Success Rate (BSR) of 90% as relates to presently disclosed subject matter.





Repeat use of reference characters throughout the present specification and appended drawings is intended to represent same or analogous features, elements, or steps.


DETAILED DESCRIPTION OF THE SUBJECT MATTER

Mesh networks and their associated protocol architecture may be described as based on a tree with four kinds of elements, spread on cells, generally represented by present FIG. 1. At the top of such architecture is a Collection Engine, which acts as a central database. It knows all the cells and their contents, that is, the cell where each meter (endpoint or node) is as well as its address. The Collection Engine collects monthly (or other appropriate interval) data from every endpoint and it allows access to any meter in the network. The user can request or send data to a single meter or broadcast information. The Collection Engine can communicate with the router of the selected cell by TCP/IP protocol inside Internet network.


In such tree hierarchy, just below the Collection Engine stand routers of the cells, referred to as the Cell Relays. There is one Cell Relay for each cell and it is the gateway between individual meters in the cell and the Collection Engine. The Cell Relay contains a routing table of all the meters in its cell. It can also forward data in the two directions, that is, between the Collection Engine and the endpoints. It also assumes the role of synchronizing the cell.


At the bottom of such tree are located so-called Endpoints (EPs). They can transmit and receive metering information. In addition, each one of them can act as a relay for distant endpoints with no additional hardware.


The last indicated module of such four kinds of elements is the Walk-By unit, a Zigbee (or other communications technology) handheld that can communicate with orphan endpoints or configure protocol parameters for endpoints. Therefore, an exemplary network preferably uses three media, which are an RF link, a Zigbee RF Link, and a TCP/IP link, all as represented per present FIG. 1.



FIG. 2 is a block diagram overview illustration of an Advanced Metering System (AMS) in accordance with the presently disclosed subject matter. Advanced Metering System (AMS) generally 100 in accordance with the presently disclosed subject matter is designed to be a comprehensive system for providing advanced metering information and applications to utilities. AMS 100 in pertinent part is designed and built around industry standard protocols and transports, and therefore is intended to work with standards compliant components from third parties.


Major components of AMS 100 include exemplary respective meters (endpoints) 142, 144, 146, 148, 152, 154, 156, and 158; one or more respective radio-based networks including RF neighborhood area network (RF NAN) 162 and its accompanying Radio Relay 172, and power line communications neighborhood area network (PLC NAN) 164 and its accompanying PLC Relay 174; an IP (internet protocol) based Public Backhaul 180; and a Collection Engine 190. Other components within exemplary AMS 100 may include a utility LAN (local area network) 192 and firewall 194 through which communications signals to and from Collection Engine 190 may be transported from and to respective exemplary meters 142, 144, 146, 148, 152, 154, 156, and 158 or other devices including, but not limited to, Radio Relay 172 and PLC Relay 174.


AMS 100 is configured to be transparent in a transportation context, such that exemplary respective meters 142, 144, 146, 148, 152, 154, 156, and 158 may be interrogated using Collection Engine 190 regardless of what network infrastructure exists in-between or among such components. Moreover, due to such transparency, the meters may also respond to Collection Engine 190 in the same manner.


As represented by the illustration in FIG. 2, Collection Engine 190 is capable of integrating Radio, PLC, and IP connected meters. To facilitate such transparency, AMS 100 operates and/or interfaces with ANSI standard C12.22 meter communication protocol for networks. C12.22 is a network transparent protocol, which allows communications across disparate and asymmetrical network substrates. C12.22 details all aspects of communications, allowing C12.22 compliant meters produced by third parties to be integrated into a single advanced metering interface (AMI) solution, AMS 100 is configured to provide meter reading as well as load control/demand response, in home messaging, and outage and restoration capabilities. All data flowing across the system is sent in the form of C12.19 tables. The system provides full two-way messaging to every device; however, many of its functions may be provided through broadcast or multicast messaging and session-less communications.



FIG. 3 schematically illustrates an exemplary configuration (representing both methodology and apparatus) for implementing one or more firmware downloads in accordance with the present technology. While for exemplary purposes, most of the discussion herewith refers to such firmware downloads as new or upgraded firmware, it is to be understood that the presently disclosed subject matter is equally applicable to, and fully encompasses, any firmware downloads, regardless of their characterization. For example, it might be due to particular circumstances and/or needs for which the firmware is to be downloaded or to a particular device that is to be returned to a previous version of firmware for such device. As another example, it might be that the firmware download for a particular device is regarded as being the same version of firmware, or a corrected version thereof, presently resident and operating with such device, as a technique for in effect rebooting the device, or otherwise correcting some corrupted subject matter. All of such variations in the actual constitution and characterization of the nature and/or reasons for the subject downloads, are intended to come within in the spirit and scope of the presently disclosed subject matter.


Generally when new or upgraded firmware is to be installed within a system 400, an image 410 of the firmware to be downloaded will be provided to an Advanced Metering System (AMS) Collection Engine 412 as a binary image file. Further discussion of Collection Engine 412 is included herewith but for the present it is noted that Collection Engine 412 is responsible for breaking up the single binary image into a series 420 of discrete blocks 422 that can be distributed across a communications arrangement such as an RF LAN, or other media. In an exemplary embodiment, an ANSI C12.22 compliant media may be used. Such blocks 422 have previously contained information to verify the block's integrity, as well as a block identifier, which is represented in FIG. 3 by the leading and trailing spaces 424 and 426, respectively.


In general, when transferring blocks, each broken down, discrete block 422 is in its entirety preferably written into a record in a manufacturer's table for firmware images. End devices 440 are configured to evaluate such blocks 422 to determine their discrete integrity by using their block level hashes. The end devices can also validate that such blocks 422 are assembled (that is, reassembled) into the correct order. Finally, each end device is able to evaluate the integrity of the overall image by evaluating the CRC (Cyclic Redundancy Check) or hash for the entire image.


Prior basic process for transferring firmware image blocks 422 involved in part functionality that is similar to that used for reading data from meters. A broadcast containing the image blocks 422 was sent to meters 440. Meters 440 indicated whether they had successfully received the image blocks 422. Meters that don't respond are retried in a recovery process to make up for any failures. Because of the critical nature of firmware images, and the large number of blocks involved, some additional control and feedback mechanisms may be desired in some instances, to logistically handle the volume of traffic.


Managing the transport of firmware blocks 422 in an environment which encounters or involves unreliable media becomes critical when transferring firmware images. When transferring blocks across an RF LAN, for example, it is relatively likely that at least one node within a given cell will fail to successfully receive a block. Such circumstances have been addressed in two manners. First, it was important that blocks be able to be transmitted and received in any order. Second, depending on the practical reliability of the underlying network, it may have been practiced to broadcast a given block several times before resorting to point-to-point transfers of image blocks.


With further reference to FIG. 3, a firmware download process begins with the Collection Engine 412 sending out a broadcast message to all target nodes, calling a manufacturer's stored procedure or writing to a manufacturer's table in the device. In such context, a target node may correspond to an end device such as meter 448, cell relay 430, or meters 440 including representative meters 442, 444, and 446. Such command indicates to the device the number of firmware blocks it should expect to receive, and that it should now be in firmware download mode.


When in such firmware download mode, the device will report the number of blocks it has successfully received as part of any daily read requests. Additionally, being placed in firmware download mode resets to zero a block counter of such device. Moreover, the command includes instructions to the end devices indicating that no direct acknowledgements on the part of the meters should be made. Rather, devices acknowledge such command by reporting their success count as part of the next interrogation cycle.


Collection Engine 412 is responsible for evaluating, based on the presence of the firmware block success count, whether all of the targeted nodes have successfully entered firmware download mode. Nodes that have not switched to firmware download mode eventually are then individually contacted by the Collection Engine 412.


Once the target nodes are in firmware download mode, Collection Engine 412 will begin broadcasting firmware blocks 422 to the target nodes 440. As an alternative to transmission of the firmware blocks 422 exclusively by Collection Engine 412, it may be desirable to transfer the firmware image 410 to the cell relays 430 and then send a command to instruct them to broadcast the firmware image 410 within their respective cell. Such alternative method would be one approach to reducing public carrier back-haul costs and to allowing cell relays to better manage bandwidth within their cells.


Completion of the broadcast transfers is a process that may take several days, or even weeks, depending on whether it is being done in conjunction with other operations. In any event, after such completion, Collection Engine 412 begins evaluating the block success count of each of the target nodes. When a node has a complete set of blocks, it will record a special event in the meter history log indicating such successful completion. Most nodes should have a complete set of blocks once the broadcast transfers are complete. Nodes that are still missing blocks will need to have them transferred point-to-point. Nodes that have excessive missing blocks after the broadcast process is complete may be flagged for possible maintenance or replacement as being potentially defective.


To facilitate point-to-point transfers, Collection Engine 412 will call a second stored procedure in the device. Such second procedure, a manufacturer's stored procedure, will provide a list of missing blocks, by block number. In an exemplary embodiment, the block list will include a predetermined maximum number of blocks, and a status byte indicating whether there is more than the predetermined number of blocks missing. For example, the predetermined maximum number of blocks may be set to twenty blocks. In using such exemplary method, most meters will receive all blocks and will not need to report on individual blocks; however, those meters that are missing blocks can be interrogated for a manifest of what they still require.


Collection Engine 412 will use such missing block data provided by the respective meter 440 to perform point-to-point block transfers. Meter nodes that cannot be contacted will be reported to the system operator. Once the point-to-point retries have been completed, the devices can be instructed to enable the new firmware. The command to activate the firmware may correspond to a C12.22 manufacturer's stored procedure. If a date and time is specified, the device will activate the firmware at the specified date and time. If no date and time is provided, the device normally will be set to activate the firmware download on an immediate basis.


Successful firmware activation can involve two additional aspects. First, selected metrology devices, i.e., meters, may employ not just one, but a plurality of images related to different aspects of the device's operation. In an exemplary configuration, at least three separate firmware images may be employed: one for the meter register board, another for a neighborhood local area network (LAN) microprocessor, and a third for a home area network (HAN) processor. In a more specific exemplary configuration, the neighborhood local area network microprocessor may correspond to an RF LAN microprocessor while the home area network processor may correspond to a Zigbee processor. Each of such components will have its own firmware image that may need to be updated. Additionally, over the course of time, new metrology device versions which require different firmware may be incorporated into existing systems. In such case, a given cell may have a mixture of devices with different firmware needs. For example, the Zigbee protocol may be used for communicating with gas meters, in-home displays, load-control relays, and home thermostats.


With reference presently to FIG. 4, there is illustrated and represented a known exemplary methodology for transmitting differing firmware images to selected end devices.


As illustrated in FIG. 4, for the general group of meters 440 illustrated, a first subset of such meters illustrated with a white background (and generally represented by meters 460, 462, 464, 466, and 468) support one firmware image, while a second subset of generally illustrated meters 440 illustrated with a grey background (and generally represented by meters 450, 452, 454, 456, and 458) support another firmware image. As a result, while meters 462, 464 are under meters 450, 452 in the cell network hierarchy (or tree) and may be able to exchange firmware images with each other, the only way meters 462, 464 can receive their firmware is through meters 450, 452, which in the present example are of another device type.


In order to handle such exemplary circumstances as represented in FIG. 4, the firmware image distribution system is independent of the actual device for which the firmware is intended. Put another way, when an image is delivered to cell relay 430 and distributed over the RF LAN, it is distributed to all of the members of the cell that match the broadcast or multicast address used, regardless of whether the image is compatible with their particular hardware. This means that cell members act as hosts for the firmware. In order to update both types of meters two firmware updates will need to be distributed. Firmware will be transferred first to meters of the first subset (generally represented by meters 460, 462, 464, 466, and 468), and then activated. Secondly, firmware will be transferred to meters of the second subset (generally represented by meters 450, 452, 454, 456, and 458), and then activated. Such same mechanism can be used to download separate firmware images for individual microprocessors within the end node, as needed on a case-by-case basis.


With reference again to both FIGS. 3 and 4, it will be observed that the various meters or nodes 440 are illustrated as being connected to one another by double-headed arrow lines (representatively illustrated at 470, 472, 474, 476, and 478 in FIG. 3, and at 480, 482, 484, 486, and 488 in FIG. 4). Such interconnections schematically illustrate a self-generated network formed by the meters 440 themselves per the presently disclosed subject matter, in concert with each other and cell relay 430 as the individual meters 440 are activated. Because each of the respective meters 440 is self-contained with respect to the RF LAN formed, an opportunity exists to distribute upgrade software (firmware) among the various meters on a viral peer-to-peer basis.


In such foregoing viral peer-to-peer model, a firmware image may be delivered to exemplary cell relay 430. From there, Collection Engine 412 preferably may send a stored procedure command to cell relay 430, indicating that it should distribute such firmware image to the RF LAN. Collection Engine 412 also sends a command to the meter nodes within the cell using a broadcast or multicast message, instructing them that a new firmware image is available. Once such command is received, cell relay 430 makes the firmware available to its local RF LAN processor. Per the presently disclosed subject matter, meter nodes 440 within such cell instruct their RF LAN processors to begin looking for blocks. At such point, the RF LAN processors take over the block transfer process.


Such disclosed viral-type distribution mechanism may be very powerful and very efficient in that it may be able to make better use of the available physical bandwidth. Under such viral peer-to-peer arrangement, individual meter nodes 440 can grab firmware images or portions of firmware images, from their immediate neighbors or parents, rather than needing to get the data directly from cell relay 430 or Collection Engine 412. As a result, one portion of the cell could be exchanging firmware blocks while another portion of the cell could be passing various messages between meter nodes 140 and cell relay 130, all without impacting each other.


As previously employed, the Forward Error Correction (FEC) used to recover missing symbols was a Reed-Solomon code RS(n,k) with symbols in Galois Field GF(256). This means that the symbols of the code are bytes and that for each block of k bytes, there are appended r=n−k additional redundancy bytes. Such a code has a Hamming distance of r+1 and allows the computation of r missing symbols per block, provided the positions of the missing symbols are known (this is called an erasure in coding theory). The code parameters are adapted to the network performance but as a first approximation, a Reed-Solomon RS(255,200) can be suggested.


The steps for encoding include: (1) If the message length is shorter than k bytes, zero-pad the message to make it k-byte long. The zeros are on the most significant symbol side of the message. (2) Compute the r redundancy bytes with the RS(n,k) code.


The steps for decoding are: (1) If no packets are missing, no decoding has to be done because the purpose of this decoding is only to recover missing packets. It plays no role for error detection. The decoding program needs to know how many packets are missing and where they are located in the block. (2) If the message is shorter than k bytes (should be known from the length field of the header), use zero-padding to make it k-byte long as for coding process. (3) If some packets are missing, replace the missing symbols by zeros. (4) Compute the missing packets with the RS(n,k) code.


Each byte of the message is considered as an element of Galois Field GF(256). These elements are called symbols. All the operations made with these symbols (addition, subtraction, multiplication and division) should be made according to the additive and multiplicative laws of the Galois field GF(256), constructed with the primitive polynomial p(x)=x8 x7+x+x+x2+x+1. A symbol of GF(256) has several useful representations: a binary representation {b7b6b5b4b3b2b1b0}, a polynomial representation b7a7+b6a6+b5a5+b4a4+b3a3+b2a2+b1a1+b0 and an exponential representation αm.


In the last two representations, α is a primitive element such that p(α)=0. The binary or polynomial representation is useful for addition and the exponential representation is useful for multiplication. All GF(256) elements, except zero, have an exponential representation, the complete field can be written as the set GF(256)={0, 1, α, α2, α3, . . . , α253, α254}. The conversion between the two representations is done with a look-up table. For the implementation of the encoder/decoder, it is necessary to add and multiply the symbols in GF(256). Addition is easily done with the binary or polynomial representation of the symbols. The operation is equivalent to a modulo 2 addition of each bit, for instance: 0010 1100+1000 1111=1010 0011


Multiplication is more difficult because a conversion to the exponential form of the symbol is necessary. A look-up table is used for this purpose. As an example, one may multiply the two symbols of the previous example: 0010 1100×1000 1111


The first symbol (44) has the exponential representation α190, the second symbol (143) has the exponential representation α90. The product is α190α90280255+2525 because α255=1. One can use the table in the other way to convert the result in binary form and obtain 44*143=226.


Conforming to established convention in coding theory for a Reed-Solomon encoder, the polynomial representation for the messages is used. The k-symbol data block, {uk-1, uk-2, . . . u1, u0}, can be written u(x)+uk-1xk-1+uk-2xk-2+ . . . +u3x3+u2x2+u1x1+u0. The symbol uk-1 is the first symbol sent. The n-symbol code word (message+redundancy symbols) can be written c(x)=ck-1xk-1+ck-2xk-2+ . . . +c3x3+c2x2+c1x1+c0. The Reed-Solomon encoding process is equivalent to a division of the message by a generator polynomial G(x). Such can be implemented with a linear feedback shift register as shown in FIG. 5. Such is similar to the conventional CRC encoder. The difference is that here each multiplication by a coefficient and each addition has to be understood as multiplication and addition in GF(256).


In the shift register implementation shown in FIG. 5, the i g are elements of GF(256). The shift register is first initialized with zeros. The symbols of the message are then shifted into the register, beginning with uk-1 and finishing with u0. After the whole data block has been pushed into the shift register, the content of the register is the remainder of the division. These symbols are the FEC symbols and they are appended to the initial message in the following way:

c={uk-1,uk-2, . . . u1,u0,Pr-1,Pr-2, . . . p2,p1,p0}


As with conventional CRC computing, the multiplicative factors in the shift register are given by the coefficients of a polynomial:

G(x)=g0+g1x+g2X2+g3x3+ . . . +xr


For a Reed-Solomon code this polynomial is defined by its roots in the following way:

G(x)=(x−α)(x−α2)(x−α3)(x−α4) . . . (x−αr)


This polynomial needs to be developed to find the gi coefficients. As an example for a RS(255,200) code the result is:

G(x)=α10123x+α142x2189x3172x417x5120x640x7185x8235x990x10162x1176x12232x13236x1483x15175x16171x1784x18230x19167x2034x212x2277x2343x24100x25201x26118x2790x28117x29215x30102x3180x32204x33180x342x359x3662x3793x3841x39148x40245x41185x42228x433x44130x45219x46113x47167x48191x4932x50131x5192x52244x53169x54+x55


In accordance with the presently disclosed subject matter, further improvements have been made to permit significant improvement in the lost packet recovery aspects of broadcast firmware updates. Thus, in accordance with the presently disclosed subject matter as generally illustrated in present FIG. 6, in order to download a new firmware version into the endpoints of the wireless LAN, the firmware is broken down into small packets that can be sent via an air (wireless) interface. Each one of these packets is sent to the whole network with a broadcast mechanism, Packets sent (broadcast) in this way are not acknowledged. In order to make sure that all the endpoints receive all the packets of the broadcast, the broadcast procedure is configured for a very high degree of reliability.


To make the broadcast very reliable, the packets are relayed through the network with a sufficient number of repetitions. Randomization windows for transmission are also chosen to be large enough to avoid the loss of too many packets through internal collisions. The pace of successive broadcasts is chosen to be slow enough to avoid interference between successive packets.


After the completion of the broadcast, the applicative layer checks the integrity of the download in each endpoint. Missing packets are then retransmitted, either individually to the endpoints which have reported the packet to be missing, or with another broadcast if the packet is missing in too many endpoints.


Such kind of firmware download gives good results but is not the fastest way to make a firmware download. Reasons for these shortcomings include: sending a very large number of packets to a very large number of endpoints with a high success rate requires a very reliable broadcast. The broadcast needs to be slowed down to achieve this reliability. Retransmission of missing packets takes time because different packets are missing in different endpoints and a lot of packets might need to be retransmitted before the firmware is complete in every endpoint.


In accordance with the presently disclosed subject matter, to speed up the firmware download the following mechanisms have been provided. The process to provide such improved download efficiency is elegantly simple in that the process provides for appending some redundancy packets to the firmware download. Such redundant packets will allow each endpoint to compute the missing packets if not too many packets are lost.


For this purpose, and with reference to present FIG. 7, the download blocks are broken down into blocks of k packets. The block size may be optimized for specific situations but for present discussion systems using blocks of 240 packets may be employed as a good starting point. This means that in an exemplary configuration three to four blocks will be enough to download a complete version of the firmware. The amount of redundancy may also be optimized based on the particular network but preliminary estimations indicate that a redundancy of 5% gives good results. FIG. 7 illustrates the structure of a block of packets per the presently disclosed subject matter.


With reference to present FIG. 8, there is illustrated the successive broadcast of all the blocks for a complete firmware download. Each of the blocks contains n packets except that the last block may be shorter, that is, it may be adjusted, to fit the exact number of packets that need to be downloaded.


Present FIG. 9 shows the internal structure of an exemplary single packet. The payload is a succession of symbols D(i,j,l), that will be bytes in most situations but it is possible to use shorter or longer symbols. The L symbols D(i,j,l), 1≦l≦L, form the payload of the packet.


If one considers all the symbols in position l of the packets of block i, there is the following sequence:

{D(i,1,l),D(i,2,l),D(i,3,l), . . . D(i,n,l)}, for l=1,2, . . . ,L and i=1,2, . . . ,M−1


The redundancy symbols, D(i,j,l), k+1≦j≦n, are chosen in such a way that this sequence of n symbols is a word of the Reed-Solomon code C(n,k). It then becomes very easy to recompute a missing packet with the error correction capability of the Reed-Solomon code.


In this instance, the Reed-Solomon decoding involved here is an erasure procedure. Erasure decoding requires much less computation and allows the recovery of twice as many packets, compared to the standard Reed-Solomon decoding. This is made possible because in such case, it is known beforehand which packets need to be recovered. Such is a much simpler problem than finding the location of an unknown error and then correcting the error. For the last, shorter packet, a similar procedure can be applied.

{D(i,1,l),D(i,2,l),D(i,3,l), . . . D(i,n′,l)}, for l=1,2, . . . ,L and i=M


The firmware download with lost packet recovery in accordance with the presently disclosed subject matter is much faster than previous techniques because: if no lost packet recovery is possible, the broadcast has to be slowed down to make sure that every packet is received by every endpoint. Only a small redundancy overhead allows the endpoints to compute several lost packets. This allows a much faster broadcast pace because the system is now fault tolerant.


In accordance with further aspects of the presently disclosed subject matter other improvements over the just described lost packet recovery technique have also been provided. Generally it is expected that the performance of a broadcast strongly depends on the propagation conditions, endpoint density and ongoing traffic in the network. With no prior knowledge of the network and no feedback mechanism, the performance of the broadcast is unknown. One solution is to always send the broadcasts with a maximum efficiency configuration in order to minimize retransmissions. In accordance with such aspect of the presently disclosed subject matter, a feedback mechanism is provided that adapts the broadcast to the actual network.


The first step in such presently disclosed adaptive process is identical to the previously described firmware download with lost packet recovery. After the completion of a block broadcast, the endpoints try to compute missing packets within the block and report the result of their computations reported to the cell relay. If the block has been successfully received, the broadcast of the next block can begin. If some packets are missing within the block, the cell relay will proceed with the broadcast of additional redundancy packets. The benefit of this is that there is no need to retransmit the missing packets which will be different for each endpoint. The additional redundancy packets bring extra information that can be used by any endpoint, whatever the missing packets are.



FIG. 10 is a diagram illustrating the procedure wherein blocks of n packets are broadcast where n is the number of message packets plus the number of redundancy and optional redundancy packets.


Such presently disclosed process can be extended to have several steps as illustrated, for example, in the three-step adaptive packet recovery process shown in FIG. 11. If the first r1 redundancy packets are not enough to allow computation of the missing packets, the cell relay can decide to send r2 additional redundancy packets or to send r2+r3 additional redundancy packets if the broadcast performance has been very poor. The cell master can also decide to retransmit the whole block if this seems appropriate. Such decision preferably will be based on the knowledge of the broadcast success rate gained from the initial block transmission. From an estimation of the broadcast success rate, it is straightforward to evaluate the necessary number of redundancy packets.


For proper operation, such process uses the same Reed-Solomon code for all the steps. In such way, the redundancy packets bring incremental information to the endpoints. At each step, the endpoint can use the previously transmitted redundancy packets as well as the newly received redundancy packets. Therefore, per presently disclosed subject matter, one starts with the maximum number of redundancy packets and choses the code to be C(n,k) with n−k=r1+r2+r3 being the maximum FEC length as illustrated in FIG. 12. Such code can compute r=r1+r2+r3 missing packets.


As illustrated in FIG. 13, during the initial block broadcast, only r1 redundancy symbols are sent. The endpoint will have in the best conditions r2+r3 missing symbols. The recovery capacity of r1+r2+r3 symbols will be reduced to r1 symbols, as expected from a standard Reed-Solomon code.



FIG. 14 illustrates an exemplary multi-step adaptive packet recovery algorithm generally 1400 in accordance with the presently disclosed subject matter including several optional steps thereof. As may be seen from FIG. 14, exemplary multi-step adaptive packet recovery algorithm 1400 provides in a first step 1402 that the Cell Relay Broadcasts a block of k message packets to the various endpoints in the network. Such step is followed by step 1404 where the Cell Relay broadcasts r1 redundancy packets to the endpoints. At step 1406, the various endpoints will compute any lost packets. At step 1408, the Cell Relay may send an optional acknowledgment request to the endpoints. Meanwhile, the endpoints will have completed their computations and, if the optional acknowledgment request has been sent, respond to such request at step 1410 and also report the number of packets successfully received and the result of the packet recovery computation. If the lost packets cannot all be computed, the cell relay will broadcast additional redundancy packets at step 1412. At step 1414, the endpoints will again compute lost packets and, in addition to responding to another optional acknowledgment request (step 1416), the endpoints will at step 1418 acknowledge any optional acknowledgment request and report the number of packets successfully received and the result of the packet recovery computation.


Those of ordinary skill in the art should appreciate that multi-step process 1400 may be extended to include more than the three basic steps illustrated in FIG. 14 by providing additional optional broadcasts similar to those of step 1412 along with additional calculating, acknowledging, and reporting steps similar to steps 1410, 1414, and 1418. Such repeated steps may be performed up to a predetermined maximum number of times with the Reed-Solomon code word initially adjusted to correspond to the predetermined maximum number of times and the associated total number of symbols, both message and redundancy, to be sent.


As an aid to implementing the presently disclosed subject matter, FIG. 15 provides a table summarizing parameters used for statistical requirements estimations.



FIG. 16 provides a table illustrating gain expected from using FEC for a single-step packet recovery process as opposed to results expected where no FEC is applied. The Broadcast Success Rate (BSR) is defined as the probability for a single broadcast packet to be received by any given endpoint. It can be seen that only a small overhead can improve the success rate dramatically. A multi-step adaptive firmware download can cope with a very large range of environments. FIGS. 17-19 illustrate the probability of success for three-step adaptive recovery with Broadcast Success Rates (BSRs) of 99%, 95%, and 90%, respectively.


Simulation results for the presently disclosed subject matter have shown that with a 10% redundancy, the total firmware download time can be expected to be reduced by a factor between two and four using a single-step process. By implementation of the presently disclosed subject matter, lost packet recovery makes the firmware download much faster as the small redundancy overhead allows a fast broadcast pace with the computation of lost packets by the endpoint itself.


Similarly, multi-step adaptive lost packet recovery provides further improvement since additional redundancy is used only in difficult environments and the normal firmware download is not slowed down if the propagation conditions are normal. Further retransmission of lost packets is replaced by transmission of additional redundancy packets. As those are the same for all endpoints, the total time dedicated to retransmission is dramatically reduced; accordingly, there is no need to address packets to individual endpoints. As a consequence, the multi-step procedure in accordance with the presently disclosed subject matter can cope with a very wide range of environments, up to the most difficult ones, thereby significantly increasing overall reliability.

Claims
  • 1. A method for downloading firmware, comprising: dividing an image of firmware to be downloaded into a plurality of blocks, each block containing a plurality of packets;broadcasting, by at least one transmitting apparatus, the plurality of blocks;appending at least one redundancy packet to the broadcast of each of the plurality of blocks; andcomputing missing packets within the blocks based on the at least one redundancy packet;wherein the last block of the plurality of blocks is adjusted in length to fit an exact number of packets to be downloaded.
  • 2. A method as in claim 1, wherein the number of redundancy packets is a percentage of the total number of packets broadcast.
  • 3. A method as in claim 2, wherein the percentage is about 5%.
  • 4. A method as in claim 1, wherein the combined length of the plurality of packets and the at least one redundancy packet corresponds to the length of a forward error correcting code word.
  • 5. A method as in claim 4, wherein the forward error correcting code word is a Reed-Solomon code word.
  • 6. A method as in claim 5, wherein computing missing packets comprises Reed-Solomon decoding using an erasure procedure.
  • 7. A method as in claim 1, further comprising: reporting computation of missing packet results; andbroadcasting at least one additional redundancy packet based on the reported results.
  • 8. A method as in claim 7, wherein each broadcast and computation step uses the same Reed-Solomon code.
  • 9. A method as in claim 8, wherein the Reed-Solomon code is based on a predetermined maximum number of packets to be broadcast.
  • 10. A method as in claim 1, further comprising sending an acknowledgment request.
  • 11. A method for transferring software, comprising: dividing the software into a plurality of blocks, each block containing a plurality of packets;establishing a predetermined maximum number of redundancy packets to be downloaded with the plurality of packets;setting a forward error correction code word to a length equal to that of the total of the plurality of software packets and the predetermined maximum number of redundancy packets;transferring, by at least one transmitting apparatus a first block of a subset of the plurality of software packets;transferring a first block of a subset of the predetermined maximum number of redundancy packets; andcomputing missing software packets based on the first block of the subset of redundancy packets using the forward error correction code word.
  • 12. A method as in claim 11, wherein the forward error correction code word is a Reed-Solomon code word.
  • 13. A method 11 as in claim 12, further comprising: transferring at least one second block of a subset of the predetermined maximum number of redundancy packets; andcomputing missing software packets based on the first and at least one second blocks of the subsets of redundancy packets.
  • 14. A method as in claim 11, wherein the predetermined maximum number of redundancy packets is a percentage of the total number of software packets to be transferred.
  • 15. A method as in claim 14, wherein the percentage is about 5%.
  • 16. In a wireless mesh network including a head end and at least one cell relay configured to provide communications between the head end and one or more endpoints, a method for updating endpoint firmware, comprising: dividing an image of firmware to be downloaded into a plurality of blocks, each block containing a plurality of packets;broadcasting, by at least one transmitting apparatus the plurality of blocks;appending at least one redundancy packet to the broadcast of each of the plurality of blocks;computing missing packets within the block based on the at least one redundancy packet;reporting computation of missing packet results to the cell relay; andbroadcasting, by at least one transmitting apparatus, from the cell relay at least, one additional redundancy packet based on the reported results.
  • 17. A method as in claim 16, wherein the number of redundancy packets is a percentage of the total number of packets broadcast.
  • 18. A method as in claim 17, wherein redundancy is about 5%.
  • 19. A method as in claim 16, wherein the plurality of packets is broadcast from the cell relay to the one or more endpoints.
  • 20. A method as in claim 16, wherein the last block of the plurality of blocks is adjusted in length to fit an exact number of packets to be downloaded.
  • 21. A method as in claim 16, wherein the combined length of the plurality of packets and the at least one redundancy packet corresponds to the length of a forward error correcting code word.
  • 22. A method as in claim 21, wherein the forward error correcting code word is a Reed-Solomon code word.
  • 23. A method as in claim 22, wherein computing missing packets comprises Reed-Solomon decoding using an erasure procedure.
  • 24. A method as in claim 16, wherein each broadcast and computation step uses the same Reed-Solomon code.
  • 25. A method as in claim 24, wherein the Reed-Solomon code is based on a predetermined maximum number of packets to be broadcast.
  • 26. A method as in claim 16, further comprising sending an acknowledgment request from the cell relay.
  • 27. A method as in claim 16, wherein at least one of the endpoints comprises a meter.
PRIORITY CLAIM

This application is a continuation-in-part of pending U.S. patent application Ser. No. 13/780,001 filed Feb. 28, 2013, which is a continuation of U.S. patent application Ser. No. 12/902,853 filed Oct. 12, 2010, issued Mar. 5, 2013 as U.S. Pat. No. 8,391,177 entitled “USE OF MINIMAL PROPAGATION DELAY PATH TO OPTIMIZE A MESH NETWORK”, which is a continuation of U.S. patent application Ser. No. 11/900,202 filed Sep. 10, 2007, issued Nov. 30, 2010 as U.S. Pat. No. 7,843,834 and bearing the same title, which claims the benefit of two previously filed U.S. Provisional patent applications entitled “METERING RF LAN PROTOCOL AND CELL/NODE UTILIZATION AND MANAGEMENT,” respectively assigned U.S. Ser. No. 60/845,056, as filed Sep. 15, 2006, and assigned U.S. Ser. No. 60/845,994, as filed Sep. 20, 2006, all of which are hereby incorporated herein by reference in their entireties for all purposes. Any disclaimer that may have occurred during prosecution of the above-referenced applications is hereby expressly rescinded.

US Referenced Citations (220)
Number Name Date Kind
4799062 Sanderford, Jr. et al. Jan 1989 A
4977577 Arthur et al. Dec 1990 A
4998102 Wyler et al. Mar 1991 A
5005142 Lipchak et al. Apr 1991 A
5067136 Arthur et al. Nov 1991 A
5095493 Arthur et al. Mar 1992 A
5119396 Snderford, Jr. Jun 1992 A
5166927 Iida et al. Nov 1992 A
5198796 Hessling, Jr. Mar 1993 A
5265120 Sanderford, Jr. Nov 1993 A
5310075 Wyler May 1994 A
5311541 Sanderford, Jr. May 1994 A
5377222 Sanderford, Jr. Dec 1994 A
5377232 Davidov et al. Dec 1994 A
5457713 Sanderford, Jr. et al. Oct 1995 A
5486805 Mak Jan 1996 A
5509027 Vook et al. Apr 1996 A
5598427 Arthur et al. Jan 1997 A
5604768 Fulton Feb 1997 A
5626755 Keyser et al. May 1997 A
5661750 Fulton Aug 1997 A
5668828 Sanderford, Jr. et al. Sep 1997 A
5696441 Mak et al. Dec 1997 A
RE35829 Sanderford, Jr. Jun 1998 E
5802311 Wronski Sep 1998 A
5907491 Canada et al. May 1999 A
5907559 Shuman et al. May 1999 A
5920589 Rouquette et al. Jul 1999 A
5926531 Petite Jul 1999 A
5933072 Kelley Aug 1999 A
5953368 Sanderford et al. Sep 1999 A
5987058 Sanderford et al. Nov 1999 A
6028522 Petite Feb 2000 A
6031883 Sanderford, Jr. et al. Feb 2000 A
6044062 Brownrigg et al. Mar 2000 A
6047016 Ramberg et al. Apr 2000 A
6078251 Landt et al. Jun 2000 A
6088689 Kohn et al. Jul 2000 A
6100816 Moore Aug 2000 A
6163276 Irving et al. Dec 2000 A
6178197 Froelich et al. Jan 2001 B1
6181258 Summers et al. Jan 2001 B1
6195018 Ragle et al. Feb 2001 B1
6204808 Bloebaum et al. Mar 2001 B1
6218953 Petite Apr 2001 B1
6232885 Ridenour et al. May 2001 B1
6233327 Petite May 2001 B1
6246677 Nap et al. Jun 2001 B1
6249516 Brownrigg et al. Jun 2001 B1
6263009 Ramberg et al. Jul 2001 B1
6321271 Kodialam et al. Nov 2001 B1
6335953 Sanderford, Jr. et al. Jan 2002 B1
6349094 Vastano et al. Feb 2002 B1
6363057 Ardalan et al. Mar 2002 B1
6369769 Nap et al. Apr 2002 B1
6377609 Brennan, Jr. Apr 2002 B1
6396839 Ardalan et al. May 2002 B1
6424270 Ali Jul 2002 B1
6426027 Scarborough, III et al. Jul 2002 B1
6430268 Petite Aug 2002 B1
6437692 Petite et al. Aug 2002 B1
6452986 Luxford et al. Sep 2002 B1
6456644 Ramberg et al. Sep 2002 B1
6538577 Ehrke et al. Mar 2003 B1
6604434 Hamilton et al. Aug 2003 B1
6612188 Hamilton Sep 2003 B2
6617879 Chung Sep 2003 B1
6617976 Walden et al. Sep 2003 B2
6617978 Ridenour et al. Sep 2003 B2
6618578 Petite Sep 2003 B1
6626048 Dam Es et al. Sep 2003 B1
6628764 Petite Sep 2003 B1
6639939 Naden et al. Oct 2003 B1
6650249 Meyer et al. Nov 2003 B2
6657552 Belski et al. Dec 2003 B2
6671586 Davis et al. Dec 2003 B2
6700902 Meyer Mar 2004 B1
6704301 Chari et al. Mar 2004 B2
6734663 Fye et al. May 2004 B2
6735178 Srivastava et al. May 2004 B1
6747557 Petite et al. Jun 2004 B1
6747981 Ardalan et al. Jun 2004 B2
6763013 Kennedy Jul 2004 B2
6778099 Meyer et al. Aug 2004 B1
6784806 Lee et al. Aug 2004 B1
6784807 Petite et al. Aug 2004 B2
6816538 Shuey et al. Nov 2004 B2
6836108 Balko et al. Dec 2004 B1
6836737 Petite et al. Dec 2004 B2
6842460 Olkkonen et al. Jan 2005 B1
6850197 Paun Feb 2005 B2
6859186 Lizalek et al. Feb 2005 B2
6862498 David et al. Mar 2005 B2
6867707 Kelley et al. Mar 2005 B1
6885309 Van Heteren Apr 2005 B1
6891838 Petite et al. May 2005 B1
6894975 Partyka May 2005 B1
6900737 Ardalan et al. May 2005 B1
6914533 Petite Jul 2005 B2
6914893 Petite Jul 2005 B2
6918311 Nathan Jul 2005 B2
6931445 Davis Aug 2005 B2
6940396 Hammond et al. Sep 2005 B2
6965575 Srikrishna et al. Nov 2005 B2
6972555 Balko et al. Dec 2005 B2
6982651 Fischer Jan 2006 B2
7012546 Zigdon et al. Mar 2006 B1
7020701 Gelvin et al. Mar 2006 B1
7031945 Donner Apr 2006 B1
7046682 Carpenter et al. May 2006 B2
7054271 Brownrigg et al. May 2006 B2
7062227 Chevalier et al. Jun 2006 B2
7065045 Jeffries et al. Jun 2006 B2
7103511 Petite Sep 2006 B2
7126494 Ardalan et al. Oct 2006 B2
7142123 Kates Nov 2006 B1
7234000 McEachern et al. Jun 2007 B2
7498953 Salser et al. Mar 2009 B2
7583202 Robinson et al. Sep 2009 B2
7653394 McMillin Jan 2010 B2
7676195 Ratiu et al. Mar 2010 B2
7802015 Cheifot et al. Sep 2010 B2
7840178 Hellman Nov 2010 B2
7843834 Picard Nov 2010 B2
20010046225 Schwaller et al. Nov 2001 A1
20020010641 Stevens et al. Jan 2002 A1
20020019725 Petite Feb 2002 A1
20020037716 McKenna et al. Mar 2002 A1
20020146985 Naden Oct 2002 A1
20020159385 Susnow et al. Oct 2002 A1
20020169643 Petite et al. Nov 2002 A1
20020186749 Jones Dec 2002 A1
20030033394 Stine Feb 2003 A1
20030037167 Garcia-Luna-Aceves et al. Feb 2003 A1
20030048199 Zigdon et al. Mar 2003 A1
20030063723 Booth et al. Apr 2003 A1
20030078029 Petite Apr 2003 A1
20030093484 Petite May 2003 A1
20030103486 Salt et al. Jun 2003 A1
20030179149 Savage et al. Sep 2003 A1
20040004555 Martin Jan 2004 A1
20040008663 Srikrishna et al. Jan 2004 A1
20040040368 Guckenberger et al. Mar 2004 A1
20040053639 Petite et al. Mar 2004 A1
20040061623 Tootoonian Mashhad et al. Apr 2004 A1
20040062224 Brownrigg et al. Apr 2004 A1
20040085928 Chari et al. May 2004 A1
20040088083 Davis et al. May 2004 A1
20040131125 Sanderford, Jr. et al. Jul 2004 A1
20040170217 Ho Sep 2004 A1
20040183687 Petite et al. Sep 2004 A1
20040192415 Luglio et al. Sep 2004 A1
20040193998 Blackburn et al. Sep 2004 A1
20040215412 Yoshida et al. Oct 2004 A1
20040218616 Ardalan et al. Nov 2004 A1
20040246907 Hoffmann Dec 2004 A1
20040252701 Anandakumar et al. Dec 2004 A1
20040264379 Srikrishna et al. Dec 2004 A1
20040264435 Chari et al. Dec 2004 A1
20050018751 Roy et al. Jan 2005 A1
20050024235 Shuey et al. Feb 2005 A1
20050030199 Petite et al. Feb 2005 A1
20050036487 Srikrishna Feb 2005 A1
20050043059 Petite et al. Feb 2005 A1
20050043860 Petite Feb 2005 A1
20050052290 Naden et al. Mar 2005 A1
20050052328 De Angelis Mar 2005 A1
20050053047 Osterloh et al. Mar 2005 A1
20050068970 Srikrishna et al. Mar 2005 A1
20050074015 Chari et al. Apr 2005 A1
20050105524 Stevens et al. May 2005 A1
20050129005 Srikrishna et al. Jun 2005 A1
20050147097 Chari et al. Jul 2005 A1
20050163144 Srikrishna et al. Jul 2005 A1
20050169020 Knill Aug 2005 A1
20050171696 Naden et al. Aug 2005 A1
20050172024 Cheifot et al. Aug 2005 A1
20050190055 Petite Sep 2005 A1
20050195768 Petite et al. Sep 2005 A1
20050195775 Petite et al. Sep 2005 A1
20050201397 Petite Sep 2005 A1
20050218873 Shuey et al. Oct 2005 A1
20050226179 Behroozi Oct 2005 A1
20050227615 Sakoda Oct 2005 A1
20050243867 Petite Nov 2005 A1
20050251401 Shuey Nov 2005 A1
20050251403 Shuey Nov 2005 A1
20050270173 Boaz Dec 2005 A1
20050271006 Chari et al. Dec 2005 A1
20050278440 Scoggins Dec 2005 A1
20060002350 Behroozi Jan 2006 A1
20060007863 Naghian Jan 2006 A1
20060012935 Murphy Jan 2006 A1
20060018303 Sugiarto et al. Jan 2006 A1
20060038548 Shuey Feb 2006 A1
20060039280 Anandakumar et al. Feb 2006 A1
20060043961 Loy Mar 2006 A1
20060071810 Scoggins et al. Apr 2006 A1
20060071812 Mason, Jr. et al. Apr 2006 A1
20060195610 Cole et al. Aug 2006 A1
20060203105 Srinivasan Sep 2006 A1
20060205358 Itoh et al. Sep 2006 A1
20060217936 Mason et al. Sep 2006 A1
20060246913 Merboth et al. Nov 2006 A1
20060253700 Della-Libera et al. Nov 2006 A1
20070028122 Chuang Feb 2007 A1
20070050523 Emeott et al. Mar 2007 A1
20070067121 Przydatek et al. Mar 2007 A1
20070073866 Rudran et al. Mar 2007 A1
20070076649 Lin et al. Apr 2007 A1
20070121521 D'Amico et al. May 2007 A1
20070176789 Kim Aug 2007 A1
20070229256 Seal et al. Oct 2007 A1
20070236362 Brian et al. Oct 2007 A1
20080068212 Tay et al. Mar 2008 A1
20080095075 Monier Apr 2008 A1
20080250154 Sun et al. Oct 2008 A1
20090016293 Kang et al. Jan 2009 A1
20090146839 Reddy et al. Jun 2009 A1
20100164719 George et al. Jul 2010 A1
Foreign Referenced Citations (4)
Number Date Country
WO 03015452 Feb 2003 WO
WO 03090411 Oct 2003 WO
WO 2006083696 Aug 2006 WO
WO 2006096854 Sep 2006 WO
Non-Patent Literature Citations (18)
Entry
Luigi Iannone et al., “Cross-Layer Routing in Wireless Mesh Networks”, Université Pierre et Marie Curie (no date available).
A. Ebenezer Jeyakumar et al., “Genetic Algorithm for Optimal Design of Delay Bounded WDM Multicast Networks”, Government College of Technology (no date available).
Tanenbaum, A.S., “Computer Networks, Shortest Path Routing, Multipath Routing” Section 5.2 (Routing Algorithms), pp. 289-307, Jan. 1, 1988, Computer Networks, Prentice Hall, Englewood Cliffs, NJ.
Hui Zang et al., “Dynamic Lightpath Establishment in Wavelength-Routed WDM Networks”, IEEE Communications, Sep. 2001.
Younis, M. et al., “Energy-Aware Routing in Cluster-Based Sensor Networks”, Oct. 11, 2002, Proceedings of the 10th IEEE International Symposium on Modeling, Analysis & Simulation of Computer & Telecommunications Systems (MASCOTS'02), Piscataway, New Jersey.
Mario Catalani, “Polymatrix and Generalized Polynacci Numbers”, Department of Economics, University of Torino, Torino, Italy, Oct. 14, 2002.
Ula C. Kozat et al, “Network Layer Support for Service Discovery in Mobile Ad Hoc Networks”, INFOCOM 2003, Twenty-Second Annual Joint Conference of the IEE Computer and Communications, IEEE Societies, Mar. 30-Apr. 3, 2003.
Marco Conti et al., “MobileMAN Architecture, Protocols and Services”, Mobile Metropolitan Ad hoc Networks, Sep. 2003.
Yu, Gwo-Jong et al., “A Minimum Delay Routing Protocol for Bluetooth Radio Networks”, presented at the Aletheia International Symposium of Mathematical Sciences, Aletheia University, Taiwan, pp. 291-314, Tamsui Oxford Journal of Mathematical Sciences, vol. 20, No. 2, 2004.
“Technical Overview of Time Synchronized Mesh Protocol (TSMP)”, Dust Networks, Document No. 025-0003-01, Jun. 20, 2006.
International Search Report and Written Opinion of the ISA for PCT International Application No. PCT/US07/20022 issued Jun. 26, 2008.
European Search Report for European Application No. EP 09 15 6694 dated Apr. 22, 2010.
Extended European Search Report dated Sep. 7, 2010 for EP Application No. 09156691.9 (search completed Aug. 24, 2010).
Chia-Bin Jerry Hsiung, “Optimal Topology Discovery for Automatic Meter Reading Using Power Line Carrier”, University of Auckland, Auckland, New Zealand (date of publication unavailable).
Sudha Krishnamurthy et al., “RESTORE: A Real-Time Event Correlation and Storage Service for Sensor Networks” (date of publication unavailable).
Jan. 13, 2014 Office Action issued for U.S. Appl. No. 13/780,001.
Feb. 18, 2014 Office Action issued in EP Patent Application No. 09 156 691.9.
Apr. 30, 2014 Office Action issued in U.S. Appl. No. 13/295,435.
Related Publications (1)
Number Date Country
20130208627 A1 Aug 2013 US
Provisional Applications (2)
Number Date Country
60845056 Sep 2006 US
60845994 Sep 2006 US
Continuations (2)
Number Date Country
Parent 12902853 Oct 2010 US
Child 13780001 US
Parent 11900202 Sep 2007 US
Child 12902853 US
Continuation in Parts (1)
Number Date Country
Parent 13780001 Feb 2013 US
Child 13833252 US