RFC 5148

Jitter Considerations in Mobile Ad Hoc Networks (MANETs)

๐Ÿ“… published February 2008, from ietf

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/

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