IPv6 Backbone Router
updates
Extracted elements (29)
Explicit address registration via NS/EARO is preferred over snooping because snooping is unreliable: a silent node may not be discovered immediately due to packet loss, and state changes due to mobility may be missed or misordered, leading to unreliable connectivity and incomplete knowledge of network state.
Optimistic DAD (ODAD, RFC 4429) is used to enable immediate connectivity during the DAD period. The 6BBR sends an RS using the Registered Address as source without an SLLAO (to avoid invalidating existing NCEs), allowing the default router to create a Binding and begin forwarding before DAD completes.
Routing Proxy mode is required when the LLN uses a link-layer address format incompatible with the backbone (e.g., EUI-64 vs EUI-48) and preferred when Layer 2 mobility signaling over a wide-area IP underlay is expensive. It avoids exposing LLN link-layer addresses on the backbone, reducing Layer 2 table size, instability, and gratuitous frames on roaming.
The MLSN approach with ND proxying is chosen as a middle ground: deploying a single large flat subnet causes excessive multicast/broadcast on wireless, while assigning per-host /64 prefixes (RFC 8273) avoids that but forces renumbering and loses subnet cohesion for large mobile deployments in a bounded area.
The 6BBR coexists with classical IPv6 ND on the backbone: classical ND messages are interpreted as emitted by the address owner and take precedence over 6BBR proxy responses. An NS(DAD) cannot be confused with a proxy registration because RFC 4862 requires NS(DAD) to be sent from the unspecified address, precluding an SLLAO, while RFC 8505 registration NS(EARO) requires an SLLAO.
The registration mechanism may coexist with proprietary snooping or traditional AP bridging to support legacy LLN nodes that do not implement this specification. The 6BBR assumes that if a node registers at least one address, it registers all of its addresses, enabling the 6BBR to suppress multicast NS messages to that node.
A Registering Node MUST implement RFC 8505 to interact with a 6BBR. A 6LN MUST register all of its IPv6 addresses to its 6LR (which is the 6BBR when directly connected at Layer 2); failure to register an address may result in that address being unreachable from other nodes on the subnet.
An implementation of a Routing Proxy that creates a Binding MUST also create an associated host route pointing to the Registering Node on the LLN interface. When a Binding is removed, the associated host route MUST also be removed.
For a Binding in Reachable state, arrival of a fresher registration (same ROVR, fresher TID) over the backbone MUST trigger removal of the Binding with a status-4 ('Removed') asynchronous NA. NS(DAD) with different ROVR MUST be answered with a status-1 ('Duplicate') NA; older TID messages MUST be answered with status-3 ('Moved').
For a Binding in Stale state, the 6BBR MUST attempt NUD per RFC 7048 to the Registering Node before answering any NS(Lookup) or NS(NUD); if NUD succeeds, Reachable-state operations apply; if NUD fails, the 6BBR refrains from answering. When STALE_DURATION elapses, the Binding MUST be removed.
For a Binding in Tentative state, the Binding MUST be removed and a status-3 ('Moved') NA returned if an NA or NS(DAD) with the same ROVR but a fresher TID is received. Conversely, if an older TID for the same ROVR is received, the Binding MUST be kept and the message answered with a status-3 NA with Override not set.
The 6BBR MUST join the SNMA group corresponding to each Registered Address as soon as it creates a Binding and maintain that membership for the life of the registration. The 6BBR MUST place an EARO unchanged from the registration in all IPv6 ND messages it generates on behalf of the Registered Node over the backbone, including NS(DAD).
The MTU MUST have the same value on the backbone and on all federated LLNs in the MLSN. The 6BBR MUST advertise the same MTU value in RAs over the backbone and toward all LLN links, because legacy nodes will not perform Path MTU Discovery for intra-subnet destinations.
The Registering Node MUST refrain from using multicast NS(Lookup) when the destination is not known as on-link, e.g., when the PIO L flag is not set. In that case, the Registering Node sends packets directly to its 6LR instead of multicasting.
When a node receives multiple NA messages with an EARO and the same ROVR, it MUST favor the NA with the freshest EARO over the others. A 6LBR deployed on the backbone MUST be capable of maintaining state for each 6BBR that has registered with the same TID and ROVR (since an address may be registered to more than one 6BBR).
When a Registering Node loses connectivity to a 6BBR and retries registration to available 6BBR(s), it MUST increment the TID to force migration of state to the new 6BBR and trigger reselection of the primary 6BBR if the lost node was the primary.
When operating as a Bridging Proxy, the 6BBR MUST use the Registering Node's Layer 2 address in the SLLAO of NS/RS messages and the TLLAO of NA messages advertising Registered Addresses. If a destination is seen as on-link, the 6BBR MUST either answer NS(Lookup) directly or reinject it on the backbone as unicast or multicast.
When operating as a Routing Proxy, the 6BBR MUST use its own Layer 2 address on its backbone interface in the SLLAO of RS messages and the TLLAO of NA messages advertising Registered Addresses. A MLSN prefix MUST NOT be advertised as on-link in RAs sent toward the LLN in Routing Proxy mode.
A Bridging Proxy provides IPv6 ND proxy functions while preserving Layer 2 forwarding continuity, including for link-local addresses. It advertises the Registering Node's link-layer address in the TLLAO of proxied NAs and preferably forwards NS(Lookup) and NUD messages as unicast to the Registering Node rather than responding directly on its behalf.
A Routing Proxy provides IPv6 ND proxy functions for Global and Unique Local Addresses between LLN and backbone, but not for link-local addresses. It advertises its own link-layer address as the TLLA in proxied NAs and routes at Layer 3 between federated links, providing full link-layer isolation of LLN devices from the backbone.
Primary 6BBR selection: when multiple 6BBRs share a registration for the same address (same ROVR, same TID), the primary is the one with the highest EUI-64 address treated as an unsigned 64-bit integer. Only the primary 6BBR sends unsolicited NAs over the backbone; a given 6BBR may be primary for one address and secondary for another.
The Binding Table is an abstract database maintained by each 6BBR to store registration state. Each Binding holds the Registered Address, Registering Node anchor info (connecting interface, link-local address, LLA), the EARO including ROVR and TID, a state (Tentative, Reachable, or Stale), and optional trust level. The combined Binding Tables of all 6BBRs on a backbone form a distributed database.
The EARO (Extended Address Registration Option) from RFC 8505 is used over the backbone in NS, NA, and RS messages to carry ROVR (distinguishes duplication from movement) and TID (orders registrations). 6BBRs also exchange EDAR/EDAC messages with an optional 6LBR for pre-DAD duplicate checking; EDAR SHOULD carry an SLLAO and EDAC SHOULD carry a TLLAO.
The Multi-Link Subnet (MLSN) federates a backbone with multiple LLN access links via 6BBRs acting as ND proxies. Each link is its own broadcast domain; link-local unicast, link-scope multicast, and hop-limit-1 traffic do not transit between links, which may produce unexpected behavior in software assuming a single-link subnet.
A possible backbone attack is sending an NS with EARO to elicit an NA(EARO) that reveals the TID and ROVR of an existing Binding; with that information, an attacker can increment the TID and take over the Binding. Disabling classical ND on the backbone and mandating RFC 8928 with a 6LBR eliminates this by providing ROVR-based ownership proof throughout the MLSN.
Any node on the backbone can take over any address (including LLN addresses) by sending an NA with Override set, forge traffic from addresses it does not own, or present itself as a preferred router. Therefore rogue access to the backbone must be prevented at all times and backbone nodes must be fully trusted.
Compromised 6LRs, 6LBRs, and 6BBRs represent critical attack vectors: a compromised 6LR can modify ROVR fields in EDAR messages to transfer address ownership; a compromised 6LBR can unduly accept ownership transfers or block newcomers by faking duplicates; a compromised 6BBR can accept registrations but block traffic. All three router types must be fully trusted.
When classical ND is disabled on the backbone and RFC 8928 plus a 6LBR are mandated, the network gains zero-trust ND security (address theft becomes impossible), avoidance of remote ND DoS via multicast NS(Lookup) (the 6LBR knows all addresses), reduced multicast on the backbone, and more reliable DAD on large Wi-Fi infrastructures.
A Binding transitions among three states: Tentative (during backbone DAD, lasts TENTATIVE_DURATION=800ms), Reachable (after successful DAD, lasts for Registration Lifetime), and Stale (post-expiry tracking, STALE_DURATION default 24h for LPWANs or 5min for rapid-renewal). Transitions: new registration creates Tentative; DAD timeout → Reachable; Registration Lifetime expires → Stale; STALE_DURATION expires → removed.