7. Updating RFC 8505
Questo documento aggiorna IPv6 Neighbor Discovery e le specifiche 6LoWPAN/RPL correlate per consentire a un nodo di registrare un IPv6 prefix presso router vicini. I dettagli di protocollo essenziali sono conservati sotto dal testo RFC.
7. Updating RFC 8505
This specification updates the EARO and EDAR messages to enable the
registration of prefixes and updates the registration operation in
the case of a prefix, in particular from the standpoint of the 6LR,
e.g., to enable the registration of overlapping prefixes.
7.1. New P-Field Value
[RFC9685] defines a 2-bit P-Field with values 0 through 2 and
reserves the value 3 for future use. This specification defines the
semantics of P-Field value 3.
When the P-Field is set to 3, it indicates that the Registered
Address represents a prefix rather than a single address. Upon
receiving an NS(EARO) message with the P-Field set to 3, the receiver
MUST install a route to the indicated prefix via the source address
of the NS(EARO) message.
This specification assigns the value 3 to the P-Field, resulting in
the following complete set of defined values:
+=======+======================================+
| Value | Meaning |
+=======+======================================+
| 0 | Registration for a Unicast Address |
+-------+--------------------------------------+
| 1 | Registration for a Multicast Address |
+-------+--------------------------------------+
| 2 | Registration for an Anycast Address |
+-------+--------------------------------------+
| 3 | Registration for a Unicast Prefix |
+-------+--------------------------------------+
Table 1: P-Field Values
7.2. New EARO Prefix Length Field and F flag
Section 4.1 of [RFC8505] defines the EARO as an extension to the ARO
option defined in [RFC6775].
The Status field is used only when the EARO is placed in an NA
message. This specification repurposes that field to carry the
prefix length when the EARO is placed in an NS message as illustrated
in Figure 2. The prefix length is expressed as 7 bits, and the most
significant bit of the field is reserved. A 7-bit value of 0 is
understood as a truncated 128, meaning that this registration is for
an address as opposed to a prefix. This approach is backward
compatible with [RFC8505] and spans both addresses and prefixes.
This specification adds a new F flag to signal that the Registered
Prefix is topologically correct through the Registering Node. This
means that the Registering Node relays packets that are sourced in
the Registered Prefix to the outside, in accordance with "Network
Ingress Filtering: Defeating Denial of Service Attacks which employ
IP Source Address Spoofing" [BCP38]. The receiver forwards packets
to the Registering Node address when the source address of the
packets derives from the Registered Prefix. Note that to avoid
loops, the receiver must be in the inside so packets sent by the
sender towards the outside may never reach the receiver. The notion
of "inside" and "outside" are administratively defined, e.g.,
"inside" is a particular L2 network such as an Ethernet fabric.
When the F flag is not set, the Registering Node owns the prefix and
will deliver packets to the destination if the destination address
derives from the prefix. Conversely, if the F flag is set, the
Registering Node will forward traffic whose source address derives
from the Registered Prefix into a network location (e.g., to an ISP
Provider Edge) where this source address is topologically correct
(e.g., derives from a prefix assigned by that ISP). The F flag is
encoded in the most significant bit of the EARO Status field when the
Status field is used to transport a Prefix Length as shown in
Figure 2.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length |F|Prefix Length| Opaque |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|r|C| P | I |R|T| TID | Registration Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
... ROVR ...
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2: EARO Format for Use in NS Messages
New and updated Option Fields:
F: (Forwarding Flag) A 1-bit flag. When set to 1, it indicates that
the sender expects other routers to forward packets to the sender
when those packets are sourced from within the registered prefix.
Prefix Length: A 7-bit unsigned integer. When the P-Field is set to
3 and the EARO is included in an NS message, this field MUST
contain a prefix length expressed in bits, with a value in the
inclusive range of 16 to 120. When the EARO is included in an NA
message, this field MUST carry a status value, regardless of the
setting of the P-Field. In all other cases, this field is
reserved; it MUST be set to zero by the sender and MUST be ignored
by the receiver.
r (reserved): A 1-bit reserved field. It MUST be set to zero by the
sender and MUST be ignored by the receiver.
7.3. New EDAR Prefix Length Field
This specification adds the new value of 3 to the P-Field to signal
that the Registered Address is a prefix. When that is the case, the
prefix is assumed to be at most 120 bits long, padded with zeros up
to 120 bits, and the remaining byte is dedicated to one reserved bit
and the Prefix Length.
Figure 3 illustrates the EDAR message when the value of the P-Field
is 3. Figure 4 shows the response EDAC message, with the Status
field and the echoed Prefix.
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type |CodePfx|CodeSfx| Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|P=3| Reserved | TID | Registration Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
... ROVR ...
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Prefix +
| |
+ (up to 120 bits, padded with zeros) +
| |
+ +-+-+-+-+-+-+-+-+
| |r|Prefix Length|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options ...
+-+-+-+-+-+-+-+-+-+-+-+-
Figure 3: EDAR Message Format with P == 3
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type |CodePfx|CodeSfx| Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Status | TID | Registration Lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
... ROVR ...
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Prefix +
| |
+ (up to 120 bits, padded with zeros) +
| |
+ +-+-+-+-+-+-+-+-+
| |r|Prefix Length|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options ...
+-+-+-+-+-+-+-+-+-+-+-+-
Figure 4: EDAC Message Format
New and updated EDAR/EDAC Message Fields:
Prefix: A 15-byte field that carries up to 120 bits of the prefix.
If the prefix is shorter than 120 bits, the remaining bits MUST be
padded with zeros. The receiver MUST treat the padding as zeroed
and MUST overwrite any unused bits with zeros before using the
prefix.
r (reserved): A 1-bit reserved field. It MUST be set to zero by the
sender and MUST be ignored by the receiver.
Prefix Length: A 7-bit unsigned integer indicating the length of the
prefix in bits. The value MUST be in the inclusive range of 16 to
120.
The capability to place the P-Field and the contiguous "Reserved"
field in the EDAR message is specified in Section 7.2 of [RFC9685].
The capability to append ND options to the EDAR and EDAC messages is
introduced in Section 3.1 of [RFC8929].
All other fields follow the same definition as specified in
[RFC8505]. The values for these fields and RFC references are
maintained by IANA under the "Internet Control Message Protocol
version 6 (ICMPv6) Parameters" [IANA.ICMP] registry group.
7.4. Updating the Registration Operation
With [RFC8505]:
* A router that expects to reboot may send a final RA message, upon
which nodes should register elsewhere or redo the registration to
the same router upon reboot. In all other cases, a node reboot is
silent. When the node comes back to life, existing registration
state might be lost if it was not safely stored, e.g., in
persistent memory.
* Only unicast addresses can be registered.
* The 6LN must register all its Unique Local Addresses (ULAs) and
Global Unicast Addresses (GUAs) with a NS(EARO).
* The 6LN may set the R flag in the EARO to obtain return
reachability services from the 6LR, e.g., through ND proxy
operations or by injecting the route in a route-over subnet.
* The 6LR maintains a registration state per Registered Address,
including an NCE with the Link Layer Address (LLA) of the
Registered Node (the 6LN here).
The operation for registering prefixes is similar to that for
addresses from the perspective of the 6LN, but shows important
differences on the router side, which maintains a separate state for
each origin and merges them in its own advertisements. This
specification adds the following behavior, similar to that introduced
by [RFC9685] for multicast addresses:
* The EARO status indicating a "Registration Refresh Request"
applies to prefixes as well.
This status is used in asynchronous NA(EARO) messages to indicate
to peer 6LNs that they are requested to reregister all addresses
and prefixes that were previously registered to the originating
node. The NA message MAY be sent to a unicast or a multicast
link-scope address and SHOULD be contained within the L2 range
where nodes may effectively have registered/subscribed to this
router, e.g., a radio broadcast domain to preserve energy and
spectrum.
A device that wishes to refresh its state, e.g., upon reboot if it
may have lost some registration state, SHOULD send an asynchronous
NA(EARO) with this new status value. That asynchronous NA(EARO)
SHOULD be sent to the all-nodes link-scope multicast address
(ff02::1), and Target MUST be set to the link-local address that
was exposed previously by this node to accept registrations, and
the TID MUST be set to 0; the ROVR field MUST be set to all zeros
and ignored by the receiver.
In an environment with unreliable transmissions, the multicast
NA(EARO) message may be resent in a fast sequence, in which case
the TID is incremented each time. A 6LN that has recently
processed the NA(EARO) indicating a "Registration Refresh Request"
ignores the additional NA(EARO) also indicating a "Registration
Refresh Request" within the duration of the fast sequence. That
duration depends on the environment and has to be configured. By
default, it is 10 seconds.
* Registration for prefixes is now supported. The value of 3 in the
P-Field of the EARO and the EDAR message signals when the
registration is for a prefix as opposed to an address. DAD for
prefixes and addresses becomes a prefix overlap match. Whether
overlapping addresses and prefixes may be registered is a network
policy decision and out of scope. The same prefix may be injected
twice (multiple routes) as long as they use the same value of the
ROVR.
Overlaps may be desirable. For instance, it may happen that a
router or a proxy (see Section 10) registers a prefix or an
aggregation while a host using an address from that prefix or a
prefix from that aggregation also registers its piece.
In case of an overlapping registration, the longest prefix match
wins, meaning that if the network policy allows for overlapping
registrations, then the routes for the registered prefixes are
installed towards the node that registered with the longest prefix
match, all the way to /128.
* If the 6LR acts as a border router to external prefixes or owns
the prefixes entirely, it SHOULD register all those prefixes on
all interfaces from which it might be needed to relay traffic to
that prefix. It MUST set the P-Field in the EARO to 3 for those
prefixes and set the R flag to receive the traffic associated to
the prefixes. It MAY refrain from registering a prefix on one
interface if that prefix is already successfully registered on
another interface, or the router handled the EDAR/EDAC flow by
itself, to ensure that the prefix ownership is known and validated
by the 6LBR. Additionally, if the router expects to receive
traffic for that prefix on that interface, it needs to ensure that
the prefix is advertised some other way, e.g., over a routing
protocol such as RPL.
* The 6LN MAY set the R flag in the EARO to request the 6LR to
redistribute the prefix on other links using a routing protocol.
The 6LR MUST NOT reregister that prefix to yet another router
unless loops are avoided some way, e.g., following a tree
structure.
* The 6LR and the 6LBR are extended to accept more than one
registration for the same prefix, since multiple 6LNs may register
it. The ROVR in the EARO identifies uniquely a registration
within the namespace of the Registered Prefix.
* The 6LR MUST maintain a registration state per tuple (IPv6 prefix,
prefix length, ROVR) for all registered prefixes. It SHOULD
notify the 6LBR with an EDAR message, unless it determined that
the 6LBR is legacy and does not support this specification (see
Section 5). In turn, the 6LBR MUST maintain a registration state
per tuple (IPv6 prefix, ROVR) for all prefixes.