Transmission of a data packet

The modified Trickle algorithm optimizes data packet transmission on multiple channels by using subsets and defined intervals, addressing redundancy and inefficiencies in the original algorithm, ensuring complete coverage and reduced transmission duration.

WO2026101748A1PCT designated stage Publication Date: 2026-05-15LANDIS GYR TECH INC
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
LANDIS GYR TECH INC
Filing Date
2025-10-28
Publication Date
2026-05-15

AI Technical Summary

Technical Problem

The Trickle algorithm, used for controlling network information transmission, results in redundancy and inefficiencies when data packets need to be transmitted on multiple channels, leading to prolonged transmission times and potential suppression of necessary transmissions.

Method used

A modified Trickle algorithm that transmits data packets on subsets of channels within defined intervals, ensuring all channels are eventually covered, reducing the likelihood of missed incoming transmissions and preventing prolonged suppression.

Benefits of technology

Ensures efficient transmission of data packets on all necessary channels while minimizing the duration of continuous transmission periods, thereby enhancing network performance and reducing the risk of missed communications.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure US2025052774_15052026_PF_FP_ABST
    Figure US2025052774_15052026_PF_FP_ABST
Patent Text Reader

Abstract

A method of transmitting a data packet over a plurality of channels. The method may comprise determining whether the data packet has been transmitted on all of the channels of a plurality of channels, and / or determining whether an interval time period has ended. If the data packet has not been transmitted on all of the channels of the plurality of channels, and if the interval time period has not ended, the method may comprise transmitting the data packet on one or more subsequent subsets of the plurality of channels at respective subsequent times within the interval time period, each respective subsequent subset comprising one or more channels of the plurality of channels that was not included in any preceding subset. A node in a mesh network is also described.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] Transmission of a Data Packet

[0002] TECHNICAL FIELD

[0003] The present application relates to a method for transmitting a data packet, in particular between nodes in a mesh network, and to a node in a mesh network.

[0004] BACKGROUND

[0005] The Trickle algorithm is defined in RFC 6206 (available at https: / / www.rfc- editor.org / rfc / rfc6206, the contents of which are hereby incorporated by reference), and is used to control the transmission of information in a network.

[0006] The Trickle algorithm employs a simple suppression mechanism such that nodes within the network do not all transmit the same information at the same time, leading to redundancy, while also ensuring that messages reach all nodes in the network within an acceptable timeframe.

[0007] SUMMARY

[0008] The present disclosure provides various improvements to the Trickle algorithm. At least some examples according to the present disclosure may enable implementations in which data packets need to be transmitted on multiple channels (e.g. operating frequencies) on a network. For example, where a data packet is to be transmitted on a plurality of channels, the data packet may be transmitted on one or more subsets (also referred to as “bursts”) of channels. By transmitting the data packet on only a subset of channels at any given time (e.g. instead of transmitting the data packet on all channels at the same time), long continuous periods in which the device is unable to listen for incoming transmissions may also be avoided.

[0009] It will be understood that a subset, or burst, of channels according to the present disclosure may comprise one or more channels of the plurality of channels. Described herein is a method of transmitting a data packet over a plurality of channels. The method may comprise beginning a first interval time period (or “interval”). The method may comprise determining whether a first transmission is received during the first interval time period. If the first transmission is received during the first interval time period, the method may comprise determining whether the first transmission is consistent.

[0010] The method may further comprise determining whether a maximum number of consistent transmissions has been received during the first interval time period. If fewer than the maximum number of consistent transmissions has been received, the method may comprise transmitting a data packet on a first subset of the plurality of channels at a first time within the first interval time period.

[0011] The method may comprise determining whether the data packet has been transmitted on all of the channels of the plurality of channels, and / or determining whether the first interval time period has ended. If the data packet has not been transmitted on all of the channels of the plurality of channels, and if the first interval time period has not ended, the method may comprise transmitting the data packet on one or more first subsequent subsets of the plurality of channels at respective first subsequent times within the first interval time period, each respective first subsequent subset comprising one or more channels of the plurality of channels that was not included in any preceding subset.

[0012] Also described herein is a node in a mesh network. The node may comprise a processor, a communication device (e.g. a radio) configured to receive and transmit data on a plurality of channels, and a memory configured to store computer-readable instructions. When executed by the processor, the computer-readable instructions may cause the processor to perform operations.

[0013] The operations may comprise beginning a first interval time period. The operations may comprise determining whether a first transmission is received by the communication device during the first interval time period. If the first transmission is received by the communication device during the first interval time period, the operations may comprise determining whether the first transmission is consistent.

[0014] The operations may further comprise determining whether a maximum number of consistent transmissions has been received by the communication device during the first interval time period. If fewer than the maximum number of consistent transmissions has been received by the communication device during the first interval time period, the operations may comprise causing the node to transmit (e.g. by the communication device), a data packet on a first subset of the plurality of channels at a first time within the first interval time period.

[0015] The operations may further comprise determining whether the data packet has been transmitted on all of the channels of the plurality of channels, and / or determining whether the first interval time period has ended. If the data packet has not been transmitted on all of the channels of the plurality of channels, and if the first interval time period has not ended, the operations may comprise causing the node to transmit, by the communication device, a data packet on one of more first subsequent subsets of the plurality of channels at respective first subsequent times within the first interval time period, each respective first subsequent subset comprising one or more channels of the plurality of channels that was not included in any preceding subset.

[0016] Therefore, according to at least some examples described herein, it may be advantageously ensured that crucial data packets (e.g. network discovery packets) are transmitted on all necessary channels (e.g. operating frequencies).

[0017] In addition, by transmitting data packet(s) on only a subset of channels at any given time, the probability of further incoming transmissions being missed (e.g. while the communication device is in a transmitting mode rather than a receiving, or listening, mode) is reduced.

[0018] In some examples, time(s) and / or subsequent time(s) within an interval period may be defined based on a size of the data packet(s). In some examples, time(s) and / or subsequent time(s) within an interval period may be defined based on a baud rate. Some examples according to the present disclosure may comprise determining whether a second transmission is received during the first interval time period.

[0019] In some examples, if a second transmission is received during the first interval time period, methods or operations described herein may comprise determining whether the second transmission is consistent.

[0020] In some examples, the first interval time period may end if the second transmission is inconsistent.

[0021] In some examples, the first interval time period may end if the first transmission is inconsistent.

[0022] In some examples, subsequent transmission of the data packet may be suppressed if at least the maximum number of consistent transmissions is received during the first interval time period. That is, any further transmission of the data packet may be prevented.

[0023] In some examples, the first interval time period may end if at least the maximum number of consistent transmissions is received during the first interval time period.

[0024] In some examples, after the first interval time period has ended, a second interval time period may begin.

[0025] The second interval time period may be longer than the first interval time period, shorter than the first interval time period, or have a same duration as the first interval time period.

[0026] Some examples may comprise determining whether a maximum number of consistent transmissions has been received during the second interval time period, and whether the data packet was transmitted on all of the channels of the plurality of channels during the first interval time period. For example, transmission of the data packet on at least some of the channels may have been suppressed due to the first interval time period having ended. If fewer than the maximum number of consistent transmissions has been received during the second interval time period, and if the data packet was not transmitted on all of the channels of the plurality of channels during the first interval time period, some examples according to the present disclosure may comprise transmitting the data packet on a second subset of the plurality of channels at a second time within the second interval time period, wherein the second subset comprises one or more channels of the plurality of channels that was not included in any of the first subset or the first subsequent subsets.

[0027] Therefore, if transmission of the data packet was suppressed during the first interval for one or more channels (i.e. subsets) of the plurality of channels (e.g. due to the first interval having ended), according to at least some examples described herein transmission of the data packet on the remaining channels in the plurality of channels may be carried out during the second interval time period, and / or any further subsequent interval time period(s), such that the algorithm does not prevent eventual transmission of the data packet across all of the channels. For example, if the data packet still has not been transmitted on all of the channels in the plurality of channels when the second interval time period ends, a third interval time period may begin, and so on until the data packet has been transmitted on all of the channels in the plurality of channels.

[0028] For example, some examples according to the present disclosure may comprise determining whether the second interval time period has ended. If the data packet has not been transmitted on all of the channels of the plurality of channels, and if the second interval time period has not ended, some examples according to the present disclosure may comprise transmitting the data packet on one or more second subsequent subsets of the plurality of channels at respective second subsequent times within the second interval time period, each respective second subsequent subset comprising one or more channels of the plurality of channels that was not included in any preceding subset (i.e. any preceding subset during either the first interval time period or the second interval time period).

[0029] In some examples, the second interval time period (or a subsequent interval time period) may end if a transmission received during the second interval time period (or subsequent interval time period) is inconsistent. It will be understood that any interval time period (e.g. first interval time period, second interval time period, or third or subsequent interval time period) may also end upon expiry of said interval time period (i.e. at the end of a predefined interval time period duration).

[0030] In some examples, the channels of any subset (e g. the first subset, the second subset, the first subsequent subset, and / or the second subsequent subset) may be randomized. For example, each subset of channels may comprise a number of channels that are grouped and / or ordered randomly. In other examples, sequential subsets may comprise channels ordered sequentially (e.g. grouped according to frequency bands). Where the channels are grouped and / or ordered randomly, and where the data packet is to be transmitted in an interval time period on subsets of channels on which the data packet was not transmitted in a preceding interval time period, the subsequent subsets may comprise random channels that are selected from those channels on which the data packet has not yet been transmitted.

[0031] Some examples according to the present disclosure may comprise determining whether the data packet has been transmitted on each of the channels of the plurality of channels at least once within a suppression time period. The suppression time period may be a time period during which transmission of the data packet has been suppressed (i.e. not taken place) on one or more channels of the plurality of channels. If the data packet has not been transmitted on each of the channels of the plurality of channels at least once within the suppression time period, some examples may comprise transmitting the data packet on all of the channels of the plurality of channels, and / or transmitting the data packet on each of the channels of the plurality of channels on which the data packet has not been transmitted within the suppression time period. Some examples described herein may therefore ensure that the data packet is transmitted on all of the channels of the plurality of channels at least once within a predefined time period (suppression time period), such that continued suppression of transmission on at least some of the channels is prevented.

[0032] In some examples, the first and / or second subsequent subset(s) of the plurality of channels may comprise all of the channels that were not included in the first and / or second subset(s). Some examples according to the present disclosure may comprise determining whether the data packet has been transmitted on each of the channels of the plurality of channels at least once over predefined number of interval time periods (e g. over the first interval time period, and / or the second interval time period, and / or a number of interval time periods preceding the first interval time period). If the data packet has not been transmitted on each of the channels of the plurality of channels at least once within the predefined number of interval time periods, some examples may comprise transmitting the data packet on all of the channels of the plurality of channels, and / or transmitting the data packet on each of the channels of the plurality of channels on which the data packet has not been transmitted within the predefined number of interval time periods. Some examples described herein may therefore ensure that the data packet is transmitted on all of the channels of the plurality of channels at least once over a certain number of interval time periods, such that continued suppression of transmission on at least some of the channels is prevented.

[0033] It will be understood that, in at least some examples of the methods described herein, transmitting a data packet may comprise causing a communication device (e.g. of a node as described herein) to transmit the data packet.

[0034] In some examples, the node described herein is a utility meter, or part of a utility meter.

[0035] Also described herein is a computer program product comprising instructions that, when executed by a processor of a computing device, cause the processor to execute one or more of the methods described herein.

[0036] Further described herein is a non-transitory computer readable medium comprising instructions which, when executed by a processor of a computing device, cause the processor to execute one or more of the methods described herein.

[0037] BRIEF DESCRIPTION OF THE DRAWINGS

[0038] The invention will now be described, by way of example only, with reference to the following drawings: Figure 1 illustrates a flow diagram of the Trickle algorithm according to RFC 6206;

[0039] Figure 2 schematically illustrates the transmission of a data packet on subsets of channels, referred to as bursts of channels;

[0040] Figure 3 schematically illustrates the suppression of transmission of the data packet on a subsequent subset of channels;

[0041] Figure 4 schematically illustrates an example in which, following suppression of transmission during one interval, the data packet is transmitted on the next subset of channels during a subsequent interval;

[0042] Figure 5 schematically illustrates an example in which transmission suppression is ignored if the data packet has not been transmitted on all of the channels within a predefined time period;

[0043] Figure 6 is a flow diagram of an example of a method according to the present disclosure;

[0044] Figure 7 schematically illustrates an example of a node according to the present disclosure; and

[0045] Figure 8 is a block diagram illustrating an example of a networked system and a mesh network.

[0046] DETAILED DESCRIPTION

[0047] The Trickle algorithm, defined in RFC 6206 (available at https: / / www.rfc- editor.org / rfc / rfc6206, the contents of which are hereby incorporated by reference), enables the exchange of information in a network in an energy efficient manner.

[0048] According to the RFC (Request for Comments), a Trickle timer runs for a defined interval, I, and in each interval, timer ‘t’ is calculated between I / 2 and I. On expiry of t, transmission of a data packet occurs. On expiry of I, the next interval starts whose duration is double that of the previous interval.

[0049] The following configurable parameters are defined for the Trickle algorithm in RFC 6206:

[0050] - Imin: Minimum Interval Size (defined in units of time, e.g. milliseconds, seconds, etc.). The Trickle interval, I, is initialized with the Imin value. - Imax: Maximum Interval Size. This is the maximum duration that can be reached by the Trickle interval, I. According to RFC 6206, Imax may be described as a number of doublings of the minimum interval size (the base-2 log(max / min)).

[0051] - Icrt: Random value between Imin & Imax. Initially Icrt is Imin and can be as high as Imax.

[0052] - t: Time during interval, I, when an event (e.g. transmission of a data packet) will be triggered.

[0053] - k: Redundancy constant.

[0054] - c: Counter, which is incremented whenever any consistent information is received (e.g. by a node in a network). At timer t, the value of c should be less than K.

[0055] According to RFC 6206, the Trickle algorithm has the following rules:

[0056] 1. When the algorithm starts execution, it sets I to a value in the range of [Imin, Imax] - that is, greater than or equal to Imin and less than or equal to Imax. The algorithm then begins the first interval.

[0057] 2. When an interval begins, Trickle resets c to 0 and sets t to a random point in the interval, taken from the range [I / 2, I], that is, values greater than or equal to I / 2 and less than I. The interval ends at I.

[0058] 3. Whenever Trickle hears a transmission that is "consistent", it increments the counter c.

[0059] 4. At time t, Trickle transmits if and only if the counter c is less than the redundancy constant k.

[0060] 5. When the interval I expires, Trickle doubles the interval length. If this new interval length would be longer than the time specified by Imax, Trickle sets the interval length I to be the time specified by Imax.

[0061] 6. If Trickle hears a transmission that is "inconsistent" and I is greater than Imin, it resets the Trickle timer. To reset the timer, Trickle sets I to Imin and starts a new interval as in step 2. If I is equal to Imin when Trickle hears an "inconsistent" transmission, Trickle does nothing. Trickle can also reset its timer in response to external "events".

[0062] The terms “consistent”, “inconsistent”, and “events” depend on the particular protocol employing the algorithm. As used herein, a consistent transmission refers to a message (i.e. a transmission) which is already been received by device and has no new information, and is therefore consistent with a state of the node.

[0063] As used herein, a non-consistent, or inconsistent, transmission refers to message (i.e. a transmission) which has new information and has not been received previously, and is therefore not consistent with the state of the node.

[0064] Examples of transmissions and data packets described herein may include software / firmware version numbers and updates, and information relating to the number of nodes in a network and / or their locations, statuses, security parameters, or other properties.

[0065] Figure 1 illustrates a flow diagram of the Trickle algorithm according to RFC 6206.

[0066] The Trickle algorithm defined in RFC 6206 can be used under various conditions and with various configurations. For example, the algorithm can be used to transmit messages such as DIS and DIO for discovery of RPL networks. The algorithm can also be used to transmit network discovery solicit messages such as EBR in the IEEE 802.15.4 standard, and to respond with network discovery messages such as EB in IEEE 802.15.4.

[0067] However, in some implementations, data packets (e.g. network discovery messages / packets, and / or network solicit messages / packets) need to be transmitted on multiple operating frequencies. For example, a device (e.g. a utility meter, such as a smart meter)) in the North America region may have an operating frequency in the range 902-929 MHz, with a channel bandwidth of 100 KHz at 50 kbps, giving a total of 129 channels. Such a device therefore needs to be able to transmit data packets on all of these channels.

[0068] Examples of data packets that may need to be transmitted on all channels, under any suitable specification, may include unsecured network solicit packets, unsecured network advertisement packets, secured network solicit packets, and / or secured network advertisement packets. However, using the known Trickle algorithm for transmissions on multiple channels may cause various network issues. For example, a device may spend a lot of time in transmission mode to transmit the data packets, which may impact network performance. In another example, the device may be prevented from transmitting at all due to the suppression effects of the Trickle algorithm.

[0069] The present disclosure therefore provides an improved algorithm for transmitting data packets on multiple channels in a mesh network that may address one or more of the above deficiencies.

[0070] Non-limiting examples according to the present disclosure will now be described.

[0071] Transmitting a Data Packet on Subsets of Channels

[0072] As described above in relation to the known Trickle algorithm, at some time t within an interval time period I, a data packet is transmitted on a subset of channels (e.g. N channels). This is illustrated schematically in Figure 2.

[0073] In the example illustrated in Figure 2, at (or just after) time t, the data packet is transmitted on N channels in a “burst”, where in this example N = 3. Subsequently, after some time (e.g. at time t + T1), the data packet is transmitted on a further subset of channels in another burst, and then again at a further subsequent time (e.g. t + T1 + T1), until the data packet has been transmitted on all of the channels in the plurality of channels, or at least until the interval / has ended.

[0074] In the example illustrated in Figure 2, each burst comprises N = 3 channels, and is separated in time from the preceding burst by a time T1. However, it will be understood that the bursts may not necessarily comprise the same number of channels, and may not necessarily be separated from one another by the same amount of time. A device carrying out the methods described herein may perform other operations, such as network operations, sensing operations, etc., during the time between bursts. For example, the device may listen for incoming transmissions or communications.

[0075] The number of channels in a burst (i.e. the number of channels in a subset of channels), e.g. N, may be decided based on the size of the data packet, and / or a baud rate, in some examples, such that the device is not prevented from listening for incoming transmissions for too long due to spending too much time in a transmission mode.

[0076] There may be at least some cases where the interval / expires between transmission bursts (i.e. before the data packet has been transmitted on all channels of the plurality of channels). In such a scenario, burst transmissions may stop for that interval (because the interval has ended), but may continue burst transmissions in a subsequent interval with those channels on which the data packet was not transmitted in the preceding (or any preceding) interval, so that eventually the data packet is transmitted on all of the channels.

[0077] In some examples, subsets (bursts) of channels may comprise continuous (i.e. consecutive) channels, e.g. a first subset of channels may comprise channels 1 -8, a second subset may comprise channels 9-16, and so on. In some examples, subsets of channels may comprise continuous (consecutive) channels but the subsets may be ordered randomly, e.g. 1 -8, 65-72, 49-56... etc. In some examples, each burst may comprise randomly ordered channels, e.g. (1 , 7, 9, 10, 16, 20, 108, 120), (3, 8, 48, 61 , 93, 23, 105, 104)... etc. It will be understood that, within one interval and / or across multiple intervals, the data packet is preferably transmitted on all of the channels before transmission on any particular channel is repeated.

[0078] Suppression of Ongoing Transmission

[0079] In some examples, as illustrated schematically in Figure 3, if a maximum number of consistent transmissions is received (e.g. if c becomes greater than or equal to k according as in the Trickle algorithm), burst transmission may be suppressed, such that no further transmission of the data packet takes place before the interval ends.

[0080] However, continued suppression of transmission of the data packet on some channels may mean that, if additional measures are not taken, transmission of the data packet may never take place on those channels.

[0081] Therefore, as discussed above and further illustrated schematically in Figure 4, in some examples those channels on which the data packet was not transmitted in the preceding interval may form one or more bursts in a subsequent interval. As illustrated in Figure 4, in a first interval the data packet is transmitted on a first subset of channels at or after time ti, and on the next subset some time later, but further transmissions within the first interval are prevented by some suppression step (e.g. the receiving of a maximum number of consistent transmissions). A second (“next”) interval subsequently begins, and at or after time t2in the second interval, the data packet is transmitted on the next subset of channels on which the data packet would have been transmitted during the first interval had the interval not ended.

[0082] In another example, illustrated schematically in Figure 5, if the data packet has not been transmitted on all of the channels of the plurality of channels within some predefined time duration D, transmission on all remaining channels of the plurality of channels, or on all of the channels of the plurality of channels, may be forced (i.e. any further suppression may be ignored until the data packet has been transmitted at least once on all of the channels of the plurality of channels).

[0083] The examples illustrated in Figures 4 and 5 may therefore ensure that suppression of transmission to save network resources does not unduly prevent transmission of a data packet at least once on all channels.

[0084] It will be understood that t and t2in Figures 4 and 5 are times within different interval time periods.

[0085] In some examples, similarly to the example illustrated in Figure 5, suppression may be ignored if the data packet has not been transmitted on all of the channels following a certain number of interval time periods (i.e. rather than, or as well as, after the predefined time duration D).

[0086] It will be further understood that, as discussed above, where random channel ordering is employed, a subset of channels in an interval time period on which the data packet was not transmitted in the previous interval time period may be made up of those channels which may not necessarily be consecutive with the channels on any subset(s) in any preceding interval time period(s).

[0087] Example Algorithm

[0088] Figure 6 illustrates a flow diagram of an example of a method 200 according to the present disclosure. The method 200 may be implemented as an algorithm. For example, the method 200 may be carried out by a processor 704 of a node 700 as described below (see also Figure 7).

[0089] In a step S202 of the method 200, an interval time period is begun. The interval time period may correspond to the interval / of the Trickle algorithm according to RFC 6206, and may have a duration defined between a minimum interval size and a maximum interval size.

[0090] In a step S206, the method 200 comprises determining whether a transmission is received (e.g. by the communication device of a node such as the communication device 706 of the node 700 illustrated in Figure 7 and described below).

[0091] If a transmission is received, the method 200 comprises, in a step S206, determining if the transmission is consistent (e.g. with a state of the node). If the transmission is inconsistent, the interval time period may end (S221).

[0092] The method further comprises determining, in a step S208, whether a maximum number of consistent transmissions has been received (e.g., by the node). If the maximum number of consistent transmissions has been received, the interval time period may end (S225), e.g. upon expiry of the interval time period. The method 200 further comprises determining, in a step S215, whether the interval time period has expired. If the interval time period has expired, the interval time period may end for the purposes of the method 200 (S223).

[0093] It will be understood that further transmissions may be received while the method 200 is ongoing (as shown by the dashed arrow in Figure 6), and these further transmissions may also cause the interval time period to end if any of the transmissions are inconsistent, or if the maximum number of consistent transmissions is reached for that interval time period.

[0094] If the interval time period has not ended, the method 200 comprises, in a step S210, transmitting (e.g. by the communication device of the node) a data packet on a subset of channels of the plurality of channels. As described herein, the subset of channels may comprise any number of channels selected from the channels on which the node is configured to transmit.

[0095] The method 200 comprises, in a step S212, determining whether the data packet has been transmitted on all of the channels of the plurality of channels. If the data packet has not been transmitted on all of the channels of the plurality of channels, the method 200 comprises, in a step S214, transmitting the data packet on a subsequent subset of channels. As described herein, the subsequent subset of channels may comprise one or more channels on which the data packet was not transmitted in the preceding subset. Once it is determined that the data packet has been transmitted on all of the channels of the plurality of channels, the interval time period may end (e.g. upon expiry of the interval time period, S225).

[0096] It will be understood that the end of the interval time period S221 , S223, S225, according to the present disclosure, does not necessarily occur any sooner when transmission is suppressed (e.g. when the maximum number of consistent transmissions has been received), or when a received transmission is inconsistent, in comparison with when the interval time period ends due to expiry. For example, either the end of the interval time period S223 illustrated in Figure 6 may take place upon expiry of the interval time period. That is, for example, if the maximum number of consistent transmissions has been received, further transmission of the data packet (e.g. on any more subsets of channels) may be suppressed, but the interval time period may still continue for its full duration and only end upon expiry of the interval time period.

[0097] General Considerations

[0098] It will be understood that each of the examples described and illustrated herein may be combined with any other of the examples described and illustrated herein, as appropriate.

[0099] It will be further understood that the descriptions and illustrations of methods described herein are for illustrative purposes only, and that the steps of the methods may be performed in any suitable order.

[0100] One or more of the methods and processes described herein (including the method 200 illustrated in Figure 6 and described herein) may be carried out as an algorithm or computer program. Generally, any of the functions described herein can be implemented using software, firmware, hardware (e.g., fixed logic circuitry), or a combination of these implementations. The apparatuses and methods described herein may be implemented generally by software, firmware, hardware, or a combination thereof. In the case of a software implementation, the method represents program code that performs specified tasks when executed by a processing system (e.g. CPU or CPUs), such as the processing system described herein. The program code can be stored in one or more computer readable memory devices. The features of the techniques described herein are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.

[0101] Figure 7 schematically illustrates an example of a node 700 according to the present disclosure. The node 700 comprises a memory 702 configured to store computer- readable instructions (e.g. software). The node 700 further comprises a processor 704. As described herein, the processor 704 may be provided with the computer-readable instructions stored in the memory 702 which, when executed by the processor 704, cause the processor 704 to carry out one or more of the methods described herein (including the method 200 illustrated in Figure 6 and described herein). The instructions may be stored on a non-transitory computer readable medium. A non-transitory computer readable medium can include any electronic, optical, magnetic, or other storage devices capable of providing a processor with computer readable instructions or other program code. Non-limiting examples of a computer readable medium include a magnetic disk, a memory chip, a ROM, a RAM, an ASIC, optical storage, magnetic tape or other magnetic storage, or any other medium from which a processing device can read instructions. The instructions may include processor-specific instructions generated by a compiler or an interpreter from code written in any suitable computerprogramming language, including, for example, C, C++, C#, Visual Basic, Java, Python, Perl, JavaScript, and ActionScript.

[0102] In general, the node 700 may be connected or connectable to a network (e.g. a mesh network), such as the internet, a local area network, or a PAN. The node 700 may comprise a communication device 706 such as an antenna and / or a radio to enable the node 700 to connect to the network. The communication device 706 can include any device or group of devices suitable for establishing a wired or wireless data connection to one or more data networks, e.g. a transceiver device, such as a radio frequency (RF) transceiver, capable of transmitting and receiving RF communication from other nodes in the network (e.g. mesh network). The communication device 706 may comprise a network interface device. Non-limiting examples of a network interface device include an Ethernet network adapter, a modem, and / or the like. The processor 702 is able to communicate with processors of other nodes via the network (e.g. the internet, and / or a local area network, and / or PAN) using the communication device 706. Communications with the processors of other nodes may comprise transmissions as described herein (e.g. the first and / or the second transmission) as well as the transmission of data packets. For example, the node 700 may receive transmissions (e.g. the first and / or second transmission) via the communication device 706. For example, the node 700 may transmit one or more data packets to other nodes in the network via the communication device 706.

[0103] The node 700, along with any other nodes in the network may comprise smart devices (e.g., resource consumption meters such as utility meters, vehicles, home appliances, etc. that include communication technology). Figure 8 is a block diagram illustrating an example of a networked system 100 and a mesh network 101. The networked system 100 and the mesh network 101 provides a network infrastructure for smart devices (e.g., resource consumption meters, vehicles, home appliances, etc. that include communication technology) to communicate across a network of nodes (i.e., other smart devices), the internet, and / or an intranet. The networked system 100 includes a head-end system 102, which may function as a central processing system that receives a stream of data from a network 104. The network 104 may be the internet, an intranet, or any other data communication network. The mesh network 101 may include a root node 106 and other nodes 108a- 108h collecting data associated with the nodes 106 and 108a-108h, and the root node 106 transmits the collected data to the network 104 and ultimately to the head-end 102 of the networked system 100. In addition, the root node 106 may also receive from the head-end 102 network management messages and transmit the network management messages to the nodes 108a-108h. Likewise, the root node 106 itself or other nodes 108a-108h may also issue and transmit network management messages to other nodes 108a-108h. The data and network management transmitted between the nodes 106, 108a-108h may be collectively referred to herein as “transmissions” (e.g. “first transmission”, “second transmission”, etc.), “communications” and / or “data packets”. These transmissions (and / or communications, and / or data packets) are transmitted and routed through data links 110 between the nodes 106, 108a-108h. The root node 106 may be a personal area network (PAN) coordinator, an internet gateway, or any other device capable of connecting to the network 104.

[0104] The root node 106 may generally be referred to as a parent node due to data links with the nodes 108a and 108b that are located at a node layer (e.g., layer one) below the root node 106. For example, the root node 106 is illustrated as communicating directly with the network 104. As illustrated, nodes 108a and 108b may also be referred to as parent nodes due to data links with nodes 108c, 108d, 108e, and 108g that are located at a node layer (e.g., layer two) below the nodes 108a and 108b. Further, nodes 108e and 108g may be referred to as parent nodes due to data links with nodes 108f and 108h that are located at a node layer (e.g., layer three) below the nodes 108e and 108g. The nodes 108a-108h may all funnel information up through the node layers to the root node 106 and ultimately to the head-end 102. Each of the nodes 106 and 108a-108h are linked with at least one of the other nodes 106 and 108a-108h. Links 110 may be created by storing neighboring node information in neighbor caches of the nodes 106 and 108a-108h that provide indications to the nodes 106 and 108a-108h of the other nodes 106 and 108a-108h through which data may be routed. For example, the neighbor cache of the node 108h may include neighboring node information identifying that data collected at the node 108h should be transmitted to the node 108g. Likewise, the neighbor cache of the node 108g may include neighboring node information identifying that the node 108g should transmit relevant information to the node 108h (e.g., network management messages or other information from the head-end 102) and also identifying that the node 108g should transmit data collected by the node 108g and data received from the node 108h to the node 108b. Such a data transmission scheme may continue up through the node layers of the mesh network 101 .

[0105] In operation, fewer or more nodes 108 may be included in the mesh network 101 , and more root nodes 106 may also be included in the networked system 100. Additionally, while the mesh network 101 depicted in Figure 8 includes a root node layer (i.e., the root node 106), layer one (i.e., the nodes 108a and 108b), layer two (i.e., the nodes 108c, 108d, 108e, and 108g), and layer three (i.e., the nodes 108f and 108h), fewer or more node layers are also contemplated. Moreover, while Figure 8 depicts a specific network topology (e.g., a DODAG tree topology), other network topologies are also possible (e.g., a ring topology, a mesh topology, a star topology, etc.).

[0106] It will be understood that any of the nodes 106, 108a-108h of the mesh network 101 may comprise a node 700 of the kind illustrated in Figure 7 and described herein.

[0107] Although the disclosure has been described in terms of preferred embodiments as set forth above, it should be understood that these embodiments are illustrative only and that the claims are not limited to those embodiments. Those skilled in the art will be able to make modifications and alternatives in view of the disclosure, which are contemplated as falling within the scope of the appended claims. Each feature disclosed or illustrated in the present specification may be incorporated in any embodiments, whether alone or in any appropriate combination with any other feature disclosed or illustrated herein.

Claims

CLAIMS:1 . A method of transmitting a data packet over a plurality of channels, the method comprising: beginning a first interval time period; determining whether a first transmission is received during the first interval time period; and if the first transmission is received during the first interval time period, determining whether the first transmission is consistent; the method further comprising: determining whether a maximum number of consistent transmissions has been received during the first interval time period; and if fewer than the maximum number of consistent transmissions has been received: transmitting a data packet on a first subset of the plurality of channels at a first time within the first interval time period; determining whether the data packet has been transmitted on all of the channels of the plurality of channels; determining whether the first interval time period has ended; and if the data packet has not been transmitted on all of the channels of the plurality of channels, and if the first interval time period has not ended: transmitting the data packet on one or more first subsequent subsets of the plurality of channels at respective first subsequent times within the first interval time period, each respective first subsequent subset comprising one or more channels of the plurality of channels that was not included in any preceding subset.

2. A method according to claim 1 , further comprising: determining whether a second transmission is received during the first interval time period; and if the second transmission is received during the first interval time period, determining whether the second transmission is consistent.

3. A method according to claim 2 comprising, if the second transmission is inconsistent: ending the first interval time period.

4. A method according to any one of the preceding claims comprising, if the first transmission is inconsistent: ending the first interval time period.

5. A method according to any one of the preceding claims, further comprising: if at least the maximum number of consistent transmissions is received during the first interval time period: preventing any further transmission of the data packet.

6. A method according to any one of the preceding claims, further comprising: after the first interval time period has ended, beginning a second interval time period; determining whether a maximum number of consistent transmissions has been received during the second interval time period; determining whether the data packet was transmitted on all of the channels of the plurality of channels during the first interval time period; and if fewer than the maximum number of consistent transmissions has been received during the second interval time period, and if the data packet was not transmitted on all of the channels of the plurality of channels during the first interval time period: transmitting the data packet on a second subset of the plurality of channels at a second time within the second interval time period, wherein the second subset comprises one or more channels of the plurality of channels that was not included in any of the first subset or the first subsequent subsets.

7. A method according to claim 6, further comprising: determining whether the second interval time period has ended; and if the data packet has not been transmitted on all of the channels of the plurality of channels, and if the second interval time period has not ended: transmitting the data packet on one or more second subsequent subsets of the plurality of channels at respective second subsequent times within the second interval time period, each respective secondsubsequent subset comprising one or more channels of the plurality of channels that was not included in any preceding subset.

8. A method according to claim 7, comprising randomizing the channels of the second subsequent subset(s).

9. A method according to any one of claims 6 to 8, comprising randomizing the channels of the second subset.

10. A method according to any one of the preceding claims, comprising randomizing the channels of the first subset.

11. A method according to any one of the preceding claims, comprising randomizing the channels of the first subsequent subset(s).

12. A method according to any one of the preceding claims, further comprising: determining whether the data packet has been transmitted on each of the channels of the plurality of channels at least once within a suppression time period; and if the data packet has not been transmitted on each of the channels of the plurality of channels at least once within the suppression time period: transmitting the data packet on all of the channels of the plurality of channels.

13. A method according to any one of claims 1 to 11 , further comprising: determining whether the data packet has been transmitted on each of the channels of the plurality of channels at least once within a suppression time period; and if the data packet has not been transmitted on each of the channels of the plurality of channels at least once within the suppression time period: transmitting the data packet on each of the channels of the plurality of channels on which the data packet has not been transmitted within the suppression time period.

14. A method according to any one of the preceding claims, further comprising:determining whether the data packet has been transmitted on each of the channels of the plurality of channels at least once over a predefined number of interval time periods; and if the data packet has not been transmitted on each of the channels of the plurality of channels at least once over the predefined number of interval time periods: transmitting the data packet on all of the channels of the plurality of channels.

15. A method according to any one of claims 1 to 13, further comprising: determining whether the data packet has been transmitted on each of the channels of the plurality of channels at least once over a predefined number of interval time periods; and if the data packet has not been transmitted on each of the channels of the plurality of channels at least once over the predefined number of interval time periods: transmitting the data packet on each of the channels of the plurality of channels on which the data packet has not been transmitted over the predefined number of interval time periods.

16. A node in a mesh network, the node comprising: a processor; a communication device configured to receive and transmit data on a plurality of channels; and a memory configured to store computer-readable instructions that, when executed by the processor, cause the processor to perform operations comprising: beginning a first interval time period; determining whether a first transmission is received by the communication device during the first interval time period; and if the first transmission is received by the communication device during the first interval time period, determining whether the first transmission is consistent; wherein the operations further comprise:determining whether a maximum number of consistent transmissions has been received by the communication device during the first interval time period; and if fewer than the maximum number of consistent transmissions has been received by the communication device during the first interval time period: causing the node to transmit, by the communication device, a data packet on a first subset of the plurality of channels at a first time within the first interval time period; determining whether the data packet has been transmitted on all of the channels of the plurality of channels; determining whether the first interval time period has ended; and if the data packet has not been transmitted on all of the channels of the plurality of channels, and if the first interval time period has not ended: causing the node to transmit, by the communication device, a data packet on one of more first subsequent subsets of the plurality of channels at respective first subsequent times within the first interval time period, each respective first subsequent subset comprising one or more channels of the plurality of channels that was not included in any preceding subset.

17. A node according to claim 16, wherein the operations comprise: determining whether a second transmission is received by the communication device during the first interval time period; and if the second transmission is received during the first interval time period, determining whether the second transmission is consistent.

18. A node according to claim 17, wherein the operations comprise, if the second transmission is inconsistent: ending the first interval time period.

19. A node according to any one of claims 16 to 18, wherein the operations comprise, if the first transmission is inconsistent: ending the first interval time period.

20. A node according to any one of claims 16 to 19, wherein the operations comprise, if at least the maximum number of consistent transmissions is received during the first interval time period: preventing any further transmission of the data packet.

21. A node according to any one of claims 16 to 20, wherein the operations comprise: after the first interval time period has ended, beginning a second interval time period; determining whether a maximum number of consistent transmissions has been received during the second interval time period; determining whether the data packet was transmitted on all of the channels during the first interval time period; and if fewer than the maximum number of consistent transmissions has been received during the second interval time period, and if the data packet was not transmitted on all of the channels of the plurality of channels during the first interval time period: causing the node to transmit, by the communication device, the data packet on a second subset of the plurality of channels at a second time within the second interval time period, wherein the second subset comprises one or more channels of the plurality of channels that was not included in any of the first subset or the first subsequent subsets.

22. A node according to claim 21 , wherein the operations comprise: determining whether the second interval time period has ended; and if the data packet has not been transmitted on all of the channels of the plurality of channels, and if the second interval time period has not ended: causing the node to transmit, by the communication device, the data packet on one or more second subsequent subsets of the plurality of channels at respective second subsequent times within the second interval time period, each respective second subsequent subsetcomprising one or more channels of the plurality of channels that was not included in any preceding subset.

23. A node according to claim 22, wherein the operations comprise randomizing the channels of the second subsequent subset(s).

24. A node according to any one of claims 21 to 23, wherein the operations comprise randomizing the channels of the second subset.

25. A node according to any one of claims 16 to 24, wherein the operations comprise randomizing the channels of the first subset.

26. A node according to any one of claims 16 to 25, wherein the operations comprise randomizing the channels of the first subsequent subset(s).

27. A node according to any one of claims 16 to 26, wherein the operations comprise: determining whether the data packet has been transmitted on each of the channels of the plurality of channels at least once within a suppression interval time period; and if the data packet has not been transmitted on each of the channels of the plurality of channels at least once within the suppression interval time period: causing the node to transmit, by the communication device, the data packet on all of the channels of the plurality of channels.

28. A node according to any one of claims 16 to 26, wherein the operations comprise: determining whether the data packet has been transmitted on each of the channels of the plurality of channels at least once within a suppression interval time period; and if the data packet has not been transmitted on each of the channels of the plurality of channels at least once within the suppression interval time period:causing the node to transmit, by the communication device, the data packet on all of the channels of the plurality of channels on which the data packet has not been transmitted within the suppression interval time period.

29. A node according to any one of claims 16 to 28, wherein the operations comprise: determining whether the data packet has been transmitted on each of the channels of the plurality of channels at least once over a predefined number of interval time periods; and if the data packet has not been transmitted on each of the channels of the plurality of channels at least once over the predefined number of interval time periods: causing the node to transmit the data packet on all of the channels of the plurality of channels.

30. A node according to any one of claims 16 to 28, wherein the operations comprise: determining whether the data packet has been transmitted on each of the channels of the plurality of channels at least once over a predefined number of interval time periods; and if the data packet has not been transmitted on each of the channels of the plurality of channels at least once over the predefined number of interval time periods: causing the node to transmit the data packet on each of the channels of the plurality of channels on which the data packet has not been transmitted over the predefined number of interval time periods.

31. A node according to any one of claims 16 to 30, wherein the node is a utility meter.

32. A computer program product comprising instructions that, when executed by a processor of a computing device, cause the processor to execute the method of any one of claims 1 to 15.

33. A non-transitory computer readable medium comprising instructions which, when executed by a processor of a computing device, cause the computing device to carry out the method of any one of claims 1 to 15.