RFC 5148
Jitter Considerations in Mobile Ad Hoc Networks (MANETs)
RFC 5148: Jitter Considerations in Mobile Ad Hoc Networks (MANETs) ๐ฆ
Part 1 of 3 ๐ Okay, the header tea: this is RFC 5148, Jitter Considerations in Mobile Ad Hoc Networks (MANETs), from the Network Working Group, dated February 2008. It's Category: Informational, so it's here to share info, not to be a strict standard ๐ The authors are Thomas Clausen (LIX, Ecole Polytechnique, France), Christopher Dearlove (BAE Systems Advanced Technology Centre), and Benjamin Adamson (U.S. Naval Research Laboratory). The header doesn't list anything it obsoletes or updates ๐
Status of This Memo โจ
This memo is here to give info to the Internet community ๐ It does not specify an Internet standard of any kind. Distribution of this memo is unlimited ๐
Abstract
This doc gives recommendations for jittering (basically, randomly tweaking the timing of) control traffic transmissions in Mobile Ad hoc NETwork (MANET) routing protocols, so there are lower odds of transmission collisions ๐ซถ
Table of Contents
1. Introduction ....................................................2
2. Terminology .....................................................3
3. Applicability Statement .........................................4
4. Protocol Overview and Functioning ...............................4
5. Jitter ..........................................................5
5.1. Periodic Message Generation ................................5
5.2. Externally Triggered Message Generation ....................6
5.3. Message Forwarding .........................................7
5.4. Maximum Jitter Determination ...............................8
6. Security Considerations .........................................9
7. References .....................................................10
7.1. Normative References ......................................10
7.2. Informative References ....................................10
Appendix A. Acknowledgements ......................................11
1. Introduction โจ
Okay, so in a wireless network, it's usually a bad look when nearby nodes send packets at the same time ๐ญ Any collision between those packets can stop a receiving node from getting some or all of them. This is a physical problem, and it happens before the packets ever reach the receiver's queue. Depending on the medium access control and other lower layer stuff, especially whether unacknowledged packets get retransmitted, this can mean more delay at best and full packet loss at worst ๐ Sometimes the lower layers can fix it themselves, but other times the network and higher layers need to step in and help.
This doc covers the case where that help is needed, and gives recommendations for using jitter (randomly varying timing) to provide it. The techniques here could be implemented either in IP protocols designed for wireless networks or alongside lower-layer mechanisms ๐ฆ
Simultaneous packet transmissions get worse if any of these features show up in a protocol:
- Regularly scheduled messages - If two nodes generate packets containing regularly scheduled messages of the same type at the same time, and if, as is typical, they use the same message interval, then all of their later transmissions of these messages will also line up in time. Note that the following mechanisms may make this a likely occurrence ๐
- Event-triggered messages - If nodes respond to changes in their circumstances, especially changes in their neighborhood, by immediately generating and sending a message, then two nearby nodes that respond to the same change will transmit at the same moment ๐ฅ
- Schedule reset - When a node sends an event-triggered message of a type that is usually regularly scheduled, there's no obvious reason it shouldn't restart its matching message schedule. This can make nodes that responded to the same change keep sending future messages at the same time too ๐
- Forwarding - If nodes forward messages they receive from other nodes, nearby nodes will commonly receive and forward the same message. If forwarding happens right away, the resulting packet transmissions may interfere with each other ๐ฉ
A possible fix for these problems is to use jitter, which is a deliberate random variation in timing. Jitter is used in, e.g., [2], [3], and [4], where transmission intervals for regularly scheduled messages are reduced by a small, bounded, random amount. This desynchronizes the transmitters and keeps them from overloading the transmission medium and the receivers ๐ง This document discusses jitter for control packet transmissions in Mobile Ad hoc NETworks (MANETs) and gives recommendations for applying it, with the goal of avoiding collisions and paying particular attention to the features listed above ๐
2. Terminology
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC2119 [1] ๐
Additionally, this doc uses the following terms, bestie:
- Node - A MANET router that implements a message sending protocol.
- MANET interface - A network device participating in a MANET. A node may have one or more MANET interfaces.
- Message - An entity carrying protocol information intended for exchange between nodes. Messages are transmitted over MANET interfaces embedded in packets.
- Packet - An entity embedding zero or more messages for transmission over a MANET interface of the node.
- Transmission - A packet being sent over a MANET interface of the node. A transmission can be due to either a message being generated or a message being forwarded.
- Generation - Creation of a new message (rather than a received and forwarded message) for transmission over one or more MANET interfaces of the node. Typically, a node will generate messages based on a message schedule (periodic or otherwise) or as a response to changes in circumstances.
- Forwarding - Retransmission of a received message (whether modified or unchanged) over one or more MANET interfaces of the node.
- Collision - A specific instance of interference, where two or more nodes transmit a packet at the same time and within the same signal space (at the same frequency and/or encoding), such that another, closely located node that should receive and decode these packets instead fails to do so and loses one or more of them ๐
3. Applicability Statement
The mechanisms in this doc apply to the control messages of any MANET protocol where simultaneous transmissions by different nodes are undesirable. They also apply to protocols that include mechanisms, like periodic control message transmission, triggered control message transmission, or control message forwarding, that either make a simultaneous transmission more likely or cause one to be repeated when it happens ๐ฅ This especially applies to protocols that use broadcast transmissions in wireless networks. Proactive MANET routing protocols such as [5] use scheduled messages, reactive MANET routing protocols such as [6] use event-triggered messages, and both use message forwarding ๐
These mechanisms are meant for situations where the underlying medium access control and lower layers don't provide effective ways to avoid such collisions. If those layers do provide effective mechanisms, the recommendations in this document aren't needed ๐ซ
The approach here uses random variations in timing to cut down on collisions. Alternatives, like pseudo-random variation based on node identity, may be considered, but this document doesn't discuss them ๐ธ
Any protocol based on [7] that uses the message forwarding mechanism that structure makes possible is a particularly strong candidate for at least some of these mechanisms โจ
The document was generalized from the jitter mechanism used in the proactive MANET routing protocol OLSR (the Optimized Link State Routing Protocol) [5] ๐
4. Protocol Overview and Functioning
This document gives recommendations for message transmission (and retransmission) that MANET routing protocols may use. Other protocols that run a periodic or triggered message schedule over wireless interfaces may also use it. Simultaneous message transmissions from two (or more) adjacent nodes may cause delays, packet losses, and other problems ๐ฌ Any protocol that uses jitter as outlined here MUST specify its precise usage insofar as is necessary for interoperability ๐
Hmm, that line was meant to keep the keyword exact; the original says "must" in lowercase, so I need to correct it: any protocol using jitter as outlined here must specify its precise usage insofar as is necessary for interoperability. Lowercase "must" in the original is not a BCP 14 keyword, so it stays lowercase.
5. Jitter ๐
So, to stop nodes in a MANET from transmitting at the same time while still keeping the MANET's big thing, which is maximum node autonomy, a randomization of packet transmission time, called jitter, SHOULD be employed ๐ Three jitter mechanisms, each targeting a different part of this problem, SHOULD be employed too. The goal is to lower the chance of simultaneous transmission and, if it does happen, stop it from continuing ๐ง
There are three cases:
- Periodic message generation;
- Externally triggered message generation;
- Message forwarding.
For the first case, jitter reduces the interval between successive message transmissions by a random amount. For the latter two cases, jitter delays a message being generated or forwarded by a random amount โฑ๏ธ
Each of these cases uses a parameter, called MAXJITTER, for the maximum timing variation it introduces. If a protocol uses more than one of these cases, it MAY use the same or a different value of MAXJITTER for each case. It also MAY use the same or different values of MAXJITTER depending on message type, and under different circumstances, especially if other parameters (like message interval) change ๐ฆ
Issues about the value of MAXJITTER are covered in Section 5.4 ๐
5.1. Periodic Message Generation โจ
okay so when a node is sending messages on a schedule ๐ , two messages in a row are separated by a set gap, and we call that gap MESSAGE_INTERVAL ๐ฆ. A node MAY keep more than one of these gaps going, like one for each message type or for different situations (say, slowing down on purpose when the network is congested ๐ฆ). Jitter SHOULD be added by shaving a random little bit off that delay ๐ฒ, so the wait between two messages of the same type ends up being (MESSAGE_INTERVAL - jitter), where jitter is that random value. bestie this is so clever ๐ญ
Taking the random amount away from the interval means the gap never goes over MESSAGE_INTERVAL ๐, and it doesn't mess with timeouts or any other stuff that depends on messages arriving late or not arriving at all ๐ . And here's the real magic โจ: because each send time is based on the previous send time instead of jittering a fixed clock ๐ฐ๏ธ, nodes can drift totally out of sync with each other ๐. That's lowkey the whole point, since it makes them way less likely to keep colliding over and over ๐ฅ. It's especially iconic when you combine it with messages that get triggered by something else and then rescheduled ๐.
The jitter value SHOULD be picked uniformly from an interval between zero and MAXJITTER ๐.
Also, a node already knows its own MESSAGE_INTERVAL, so it can easily make sure whatever MAXJITTER it uses meets the conditions in Section 5.4 ๐ซถ.
5.2. Externally Triggered Message Generation ๐
Okay this one is so main character ๐. An internal or external condition or event can trigger a node to send a message ๐จ. Depending on the protocol, that trigger might make it send a single message (an acknowledgement is one example, but it's not the only one ๐), start a brand-new periodic schedule, or reschedule the messages it's already sending ๐๏ธ. Collisions get more likely when lots of nodes are going to respond to the same event ๐ฌ. To lower that risk, an externally triggered message SHOULD be delayed by a random amount of time ๐ฒ; an internally triggered message MAY also get that jitter if it makes sense ๐. This delay SHOULD be picked uniformly from an interval between zero and MAXJITTER. If periodic messages get rescheduled, that SHOULD be based on the delayed time, and the messages after that follow what's described in Section 5.1 ๐ง.
When messages are triggered, whether or not they're also sent periodically ๐, a protocol MAY require a minimum gap between messages of the same type, called MESSAGE_MIN_INTERVAL ๐ธ. If no such gap is needed, MESSAGE_MIN_INTERVAL is treated as zero ๐. When MESSAGE_MIN_INTERVAL is non-zero, it's still a good idea to let jitter shave some time off it ๐ฆ. So after a message goes out, the next one is allowed after (MESSAGE_MIN_INTERVAL - jitter) โณ. This jitter SHOULD be picked uniformly from an interval between zero and MAXJITTER (using a MAXJITTER value that fits periodic message sending) ๐ .
It might sound contradictory to have a defined MESSAGE_MIN_INTERVAL and then let jitter reduce it ๐, but hear me out ๐. For periodic messages, if you set MESSAGE_INTERVAL, MAXJITTER and MESSAGE_MIN_INTERVAL so that (MESSAGE_INTERVAL-MAXJITTER) > MESSAGE_MIN_INTERVAL, then at least MESSAGE_MIN_INTERVAL will always pass between two messages ๐. But in a super dynamic network where triggers keep happening faster than MESSAGE_MIN_INTERVAL ๐ช๏ธ, MESSAGE_MIN_INTERVAL ends up acting like the "default" interval instead of MESSAGE_INTERVAL ๐ณ. So to avoid everyone syncing up in that case, jitter SHOULD be applied to MESSAGE_MIN_INTERVAL too ๐ซง. This also means MESSAGE_MIN_INTERVAL is allowed to equal MESSAGE_INTERVAL even when jitter is used โจ.
When a triggered message gets delayed by jitter, the node MAY also hold off on generating it ๐. If the node gets triggered again for the same message type while it's waiting, it can just generate one message ๐. But if it already generated a message when first triggered and then gets another trigger while still waiting to send it, what to do is up to the protocol ๐คทโโ๏ธ (usually it either throws out the earlier message or sends both, maybe tweaking the timing so the order stays right ๐).
5.3. Message Forwarding ๐ฎ
When a node forwards a message, it SHOULD be delayed by a random amount of time ๐ฒ. This delay SHOULD be picked uniformly from an interval between zero and MAXJITTER ๐.
This one's different from periodic and triggered messages ๐, because a node doesn't automatically know the originator's MESSAGE_INTERVAL ๐ค. That value is needed to pick a MAXJITTER that's known to be valid ๐ฌ. The fix might be agreeing on the value (or a minimum value) of MESSAGE_INTERVAL ahead of time ๐, or including MESSAGE_INTERVAL in the message itself (the time until the next relevant message, not the time since the last one) ๐, or using some other protocol-specific method, which could even mean estimating MESSAGE_INTERVAL from when messages were received ๐ต๏ธโโ๏ธ.
A node might get a message while it's still waiting to forward an earlier message of the same type from the same originator ๐ตโ๐ซ. That can happen for a few reasons: different parameters, rescheduled messages, or really extreme random values ๐ฐ. It can happen without jitter too, but jitter makes it more likely ๐. What to do is protocol-specific (usually discard the earlier message or forward both, maybe adjusting timing to keep the order right ๐).
In lots of cases, including [5] and protocols that use the full features of [7] ๐ซ, messages get sent hop by hop inside packets that can hold several messages ๐ฆ, and some or all of those might need forwarding ๐. For efficiency, they SHOULD all go out in a single packet ๐ง, so every message received in one packet SHOULD get the same forwarding jitter ๐. (This also means one single MAXJITTER value has to be used here ๐.) To keep the uniform distribution working, you need to pick one random jitter for all the messages ๐ฒ. It's a no-go to give each message its own random jitter and then use the smallest one ๐ โโ๏ธ, because that makes a non-uniform distribution with a lower average value ๐.
On top of that, the protocol MAY allow control messages from different packets to be combined ๐งฉ, maybe even with locally generated ones (periodic or triggered), as [7] supports ๐ . But in that case, the jitter's job gets done by picking any one of the independently scheduled times for these events as the single forwarding time โฐ. That might have to be the earliest time so every constraint is met ๐โโ๏ธ. This works because, without combining, a transmission would be due at that time anyway ๐.
5.4. Maximum Jitter Determination ๐
Okay here's how the maximum jitter (one or more instances of parameter MAXJITTER) can be figured out ๐งฎ. A few things to keep in mind ๐:
- While jitter can fix the problem of simultaneous transmissions ๐, the timing changes it brings (especially the delays) will usually hurt a well-designed protocol ๐. So MAXJITTER SHOULD always be kept as small as possible, as long as it still does its job ๐ฏ.
- When messages are sent periodically, every one of these that applies has to hold for each instance of MAXJITTER ๐ซถ:
- it MUST NOT be negative ๐ซ;
- it MUST NOT be greater than MESSAGE_INTERVAL/2 โ;
- it SHOULD NOT be greater than MESSAGE_INTERVAL/4 ๐ โโ๏ธ.
- If MESSAGE_MIN_INTERVAL > 0, then ๐:
- MAXJITTER MUST NOT be greater than MESSAGE_MIN_INTERVAL ๐ท;
- MAXJITTER SHOULD NOT be greater than MESSAGE_MIN_INTERVAL/2 ๐ซ.
- Whether to use jitter at all depends on the medium access control and lower layers, and picking MAXJITTER SHOULD match those mechanisms too ๐ง. For example, MAXJITTER should be a lot bigger (like, an order of magnitude bigger) than any medium access control frame period ๐.
- Since jitter is meant to reduce collisions, a bigger MAXJITTER makes sense when collisions are more likely ๐ฅ. That's especially true with higher node density, which matters relative to (the square of) the interference range rather than the useful signal range ๐.
- The MAXJITTER chosen when forwarding messages MAY also consider how many times the message might get forwarded in a row, up to the network diameter in hops ๐ฆ, so the maximum accumulated delay stays bounded โฑ๏ธ.
6. Security Considerations ๐
This document gives recommendations for mechanisms that protocols can use ๐. The full security considerations are supposed to come from those protocols, not from this document ๐.
That said, random timing from these recommendations might give such a protocol a bit of a security boost ๐ก๏ธ. It makes transmission times harder to predict ๐ฎ, which makes it harder for someone to intentionally mess with a protocol by aiming jamming transmissions at the exact moments protocol messages get sent ๐จ. Stay safe out there, bestie ๐.
7. References ๐
7.1. Normative References
- [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
7.2. Informative References
- [2] Moy, J., "OSPF Database Overflow", RFC 1765, March 1995.
- [3] Marlow, D., "Host Group Extensions for CLNP Multicasting", RFC 1768, March 1995.
- [4] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, January 2006.
- [5] Clausen, T., Ed., and P. Jacquet, Ed., "Optimized Link State Routing Protocol (OLSR)", RFC 3626, October 2003.
- [6] Perkins, C., Belding-Royer, E., and S. Das, "Ad hoc On-Demand Distance Vector (AODV) Routing", RFC 3561, July 2003.
- [7] Clausen, T., Dearlove, C., Dean, J., and C. Adjih, "Generalized MANET Packet/Message Format", Work in Progress.
Appendix A. Acknowledgements ๐ท
The authors would like to thank the MANET working group and the OLSRv2 Design team ๐ซถ, especially Joe Macker and Justin Dean (both NRL), for their contributions and discussions while developing and testing the concepts in this document ๐ง . Thanks also to Alan Cullen (BAE Systems) for his careful review of this specification ๐. OLSRv1, as specified in [5], introduced the idea of jitter on control traffic ๐, and it was tested thoroughly by Gitte Hansen and Lars Christensen (then, both Aalborg University) ๐.
Authors' Addresses ๐
Thomas Heide Clausen LIX, Ecole Polytechnique, France
Phone: +33 6 6058 9349 EMail: T.Clausen@computer.org URI: http://www.ThomasClausen.org/
Christopher Dearlove BAE Systems Advanced Technology Centre
Phone: +44 1245 242194 EMail: chris.dearlove@baesystems.com URI: http://www.baesystems.com/
Brian Adamson U.S. Naval Research Laboratory
Phone: +1 202 404 1194 EMail: adamson@itd.nrl.navy.mil URI: http://www.nrl.navy.mil/
Full Copyright Statement โจ
Okay bestie, legal stuff time ๐ but it's still very much a vibe. The copyright is held by The IETF Trust (2008) ๐ธ
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. ๐ฆ
This document and the information in it are provided on an "AS IS" basis, and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ๐
Intellectual Property ๐
The IETF takes no position on whether any Intellectual Property Rights or other rights that someone might claim over the technology in this document are valid or in scope, or on whether a license under those rights might or might not be available. It also doesn't claim to have made any independent effort to find such rights. ๐ง If you want the procedures for rights in RFC documents, check BCP 78 and BCP 79. ๐
Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses that will be made available, and the results of any attempt to get a general license or permission to use these proprietary rights for implementers or users of this specification can be found in the IETF online IPR repository at http://www.ietf.org/ipr. ๐
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology required to implement this standard. Please send that information to the IETF at ietf-ipr@ietf.org. ๐ซถโจ
๐ฆ where this page comes from
- ietf: rfc5148 2008-02
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms