Neighbor Discovery Optimization for IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs)
updated by
- rfc-8505 — Registration Extensions for IPv6 over Low-Power Wireless Personal Area Network (6LoWPAN) Neighbor Discovery
- rfc-8929 — IPv6 Backbone Router
- rfc-9010 — Routing for RPL (Routing Protocol for Low-Power and Lossy Networks) Leaves
updates
- rfc-4944 — Transmission of IPv6 Packets over IEEE 802.15.4 Networks
Extracted elements (27)
Context lifecycle management uses a two-phase approach: new context is introduced with C=0 (decompression-only) to allow dissemination before enabling compression with C=1. Conversely, before reusing a CID, the old context must remain in C=0 dissemination for at least MIN_CONTEXT_CHANGE_DELAY to prevent decompression ambiguity.
New ICMPv6 message types (DAR/DAC) were defined instead of reusing NS/NA for multihop DAD because NS/NA carry a hop-limit=255 check that prevents forwarding by intermediate routers, which is necessary for reaching the 6LBR across multiple hops.
Standard RFC 4861 Neighbor Discovery is unsuitable for 6LoWPANs because the network is a Non-Broadcast Multiple Access (NBMA) structure with no LoWPAN-wide multicast, asymmetric and non-transitive radio links, and energy constraints that make periodic multicast RAs and multicast NS messages impractical.
The ABRO carries a 32-bit version number and the originating 6LBR IP address so that 6LRs in a multi-hop route-over topology can determine which of multiple 6LBRs originated a given set of prefix/context information and suppress redistribution of older versions, controlling flooding.
Multihop prefix/context distribution (ABRO + 6CO between routers) and multihop DAD (DAR/DAC) are individually substitutable by routing protocol mechanisms. However, if substitution of ABRO is intended, 6CO MUST also be substituted simultaneously; they cannot be replaced independently.
This specification applies only to homogeneous LoWPANs where all nodes implement these optimizations. Combinations with unmodified RFC 4861 nodes, heterogeneous deployments, or inter-LoWPAN mobility are explicitly out of scope.
A host MUST NOT multicast a Neighbor Solicitation (NS) message. This is the central optimization eliminating multicast-based address resolution for hosts in 6LoWPANs.
A router MUST NOT set the L (on-link) flag in Prefix Information Options, since doing so might trigger hosts to send multicast Neighbor Solicitations.
DAR and DAC multihop DAD messages MUST NOT modify any Neighbor Cache Entries on intermediate routers, since those messages are forwarded and lack the security guarantee of the RFC 4861 hop-limit=255 check.
During multihop prefix distribution, a router MUST silently ignore any received RA that does not contain an ABRO. If the ABRO version number is less than the stored version for that 6LBR, the RA information MUST be silently ignored.
If the LoWPAN has multiple 6LBRs, they MUST be configured with the same context information and CIDs, since maintaining consistency is crucial for correct header decompression across the LoWPAN.
If the M flag is set in a received RA, DHCPv6 MUST be used to assign non-EUI-64 addresses. A host MUST join the all-nodes multicast address but need not join the solicited-node multicast address.
Implementations MUST support multihop prefix/context distribution (Section 8.1) and multihop DAD (Section 8.2), unless the implementation supports an alternative substitute from another specification.
On receiving ARO Status=1 (Duplicate Address), the host MUST NOT use the address it tried to register. Any valid registrations with other routers MUST be removed by sending a zero-lifetime ARO to each.
When sending a Router Solicitation, an SLLAO MUST be included to enable unicast RA responses, and an unspecified source address MUST NOT be used in RS messages.
When the ARO is used by a host in an NS, an SLLAO MUST be included and the address to be registered MUST be the IPv6 source address of the NS.
The 6LoWPAN Context Option (6CO) distributes header compression context (CID-to-prefix mappings per RFC 6282) via Router Advertisements. Up to 16 6COs may be carried in a single RA; a Valid Lifetime of zero signals immediate removal of a context entry.
The Address Registration Option (ARO) enables host-initiated unicast address registration with routers, replacing multicast NS address resolution. The router maintains a Neighbor Cache registry keyed on registered addresses with explicit lifetimes, supporting sleeping hosts.
The Authoritative Border Router Option (ABRO) carries a monotonically increasing version number and the originating 6LBR address, allowing 6LRs to suppress redistribution of stale prefix/context information and associate PIOs and 6COs with their originating 6LBR.
ARO Status values (Table 1): 0=Success, 1=Duplicate Address, 2=Neighbor Cache Full; values 3–255 are allocated by Standards Action (RFC 5226). These same codes are reused in the Status field of DAC messages.
Three new IPv6 Neighbor Discovery option types are registered: 33 (ARO), 34 (6CO), 35 (ABRO). Two new ICMPv6 message types are registered: 157 (Duplicate Address Request, DAR) and 158 (Duplicate Address Confirmation, DAC).
DAR/DAC messages are forwarded by intermediate 6LRs and therefore bypass the hop-limit=255 security check; to mitigate this, they MUST NOT modify NCEs on intermediate routers. Address registration error NAs are sent to the EUI-64-derived link-local address rather than the NS source to avoid L2 address collision risk.
Neighbor Cache Entries have three orthogonal types: Garbage-collectible (standard RFC 4861 eviction), Registered (retained until explicit lifetime expiry or zero-lifetime ARO de-registration), and Tentative (short-lived, created from RS SLLAO, converted to Registered on successful registration). Only one type per IP address is held at a time.
6LoWPAN Context Option (6CO): Type=34, Length 2 or 3. Fields: 8-bit Context Length (0–128), 1-bit Compression flag (C), 4-bit CID, 16-bit Valid Lifetime in units of 60 seconds, and variable-length Context Prefix.
Address Registration Option (ARO): Type=33, Length=2 (16 bytes). Fields: 8-bit Status (set to 0 in NS, error code in NA), 16-bit Registration Lifetime in units of 60 seconds, and 64-bit EUI-64 interface identifier.
Authoritative Border Router Option (ABRO): Type=35, Length=3 (24 bytes). Fields: 32-bit Version Number split as Version Low (LSB 16 bits) and Version High (MSB 16 bits), 16-bit Valid Lifetime in units of 60 seconds, and 128-bit 6LBR Address.
Duplicate Address Request (DAR, ICMPv6 type 157) and Duplicate Address Confirmation (DAC, ICMPv6 type 158) share a format: 8-bit Status (meaningful only in DAC), 16-bit Registration Lifetime, 64-bit EUI-64, and 128-bit Registered Address. Hop Limit is set to MULTIHOP_HOPLIMIT and MUST be ignored on receipt.