RFC 10038

Distributing the Segment Routing over IPv6 (SRv6) Locator Using DHCPv6

๐Ÿ“… published August 2026, from ietf

Distributing the Segment Routing over IPv6 (SRv6) Locator Using DHCPv6 ๐Ÿฆ‹

okay bestie, this RFC is about handing out SRv6 Locators through DHCPv6, and it's giving main character energy ๐ŸŒˆ

Here's the cover-page tea โ˜•

  • RFC number: 10038 ๐ŸŽ€
  • Issuing body: Internet Engineering Task Force (IETF) ๐Ÿ’–
  • Category: Standards Track โœจ
  • Date: August 2026 ๐ŸŒธ
  • ISSN: 2070-1721 ๐Ÿงš
  • Authors: W. Cheng, Ed.; R. Han; C. Lin, Ed.; D. Voyer; G. Zhang ๐Ÿ’…
    • R. Han and G. Zhang are with China Mobile ๐Ÿ“ฑ
    • C. Lin, Ed. is with New H3C Technologies ๐Ÿฆ‹
    • D. Voyer is with Cisco Systems ๐Ÿซถ
  • Obsoletes / Updates: the title block doesn't list any RFCs this one obsoletes or updates, so nothing gets replaced here ๐Ÿ™ˆ

Abstract โœจ

okay so in an SRv6 network, each SRv6 Segment Endpoint Node must be assigned an SRv6 Locator, and the segment identifiers (SIDs) get generated inside the address space of that Locator ๐Ÿ’Œ. This document describes a method for assigning SRv6 Locators to SRv6 Segment Endpoint Nodes through the Dynamic Host Configuration Protocol for IPv6 (DHCPv6) ๐ŸŽ€.

Status of This Memo ๐Ÿ“œ

This is an Internet Standards Track document ๐Ÿ”ฅ.

This document is a product of the Internet Engineering Task Force (IETF) ๐ŸŒˆ. It represents the consensus of the IETF community ๐Ÿซถ. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG) ๐Ÿ‘‘. Further information on Internet Standards is available in Section 2 of RFC 7841 ๐Ÿ’–.

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc10038 ๐Ÿฆ‹.

Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved ๐Ÿ’….

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License ๐ŸŒธ.

Table of Contents ๐Ÿ“š

   1.  Introduction
     1.1.  Requirements Language
   2.  Terminology
   3.  Motivation
   4.  DHCPv6 Extensions
     4.1.  Identity Association for SRv6 Locator Option
     4.2.  IA Locator Option
   5.  Process of Assigning the SRv6 Locator
     5.1.  Procedure of the SRv6 Locator
     5.2.  DHCPv6 Client Behavior
     5.3.  DHCPv6 Server Behavior
     5.4.  DHCPv6 Relay Agent Behavior
     5.5.  Advertisement of the SRv6 Locator Route
   6.  Operational Considerations
   7.  IANA Considerations
   8.  Security Considerations
   9.  References
     9.1.  Normative References
     9.2.  Informative References
   Acknowledgements
   Contributors
   Authors' Addresses

1. Introduction ๐ŸŒธ

okay so the Segment Routing (SR) architecture [RFC8402] explains how a node can steer a packet using an ordered list of instructions called "segments" ๐Ÿ›ค๏ธ. These segments are identified using segment identifiers (SIDs) โœจ.

SR can be instantiated on the IPv6 data plane using either the Segment Routing Header (SRH) defined in [RFC8754] or compressed segment lists defined in [RFC9800] ๐Ÿ’…. SR instantiation on the IPv6 data plane is referred to as SRv6 ๐Ÿ’–.

[RFC8986] introduces the SRv6 Network Programming concept and specifies the base set of SRv6 behaviors ๐Ÿ‘‘.

Anyway, in an SRv6 network, each SRv6 Segment Endpoint Node must be assigned an SRv6 Locator, and SIDs are generated within the address space of this SRv6 Locator ๐Ÿงš. This document describes a method for assigning SRv6 Locators to SRv6 Segment Endpoint Nodes through the Dynamic Host Configuration Protocol for IPv6 (DHCPv6) ๐ŸŽ€.

1.1. Requirements Language ๐Ÿ”‘

ngl this is the VIP list ๐Ÿ‘‘. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here ๐Ÿ’….

2. Terminology ๐Ÿงš

This document leverages the terms defined in [RFC9915] and [RFC8986] ๐Ÿ“–. The reader is assumed to be familiar with this terminology ๐Ÿซถ.

3. Motivation ๐Ÿ’…

As shown in Figure 1, in the IP backbone network, access network devices are deployed for access users in different regions ๐ŸŒ. This deployment assumes that all of the relevant components in Figure 1 are part of a single trusted SR domain ๐Ÿ”’. The Customer Premises Equipment (CPE) must be managed by the operator providing services or by a trusted partner. If the CPE is located within the customer premises, it must ensure that the device itself and its ports are under the same operator's administrative domain; otherwise, security risks may arise.

โš ๏ธ bestie, this part is serious: if the CPE sits inside the customer premises, the device and its ports need to be under the same operator's administrative domain, or security risks may pop up ๐Ÿ™ˆ

CPEs for access users are connected to the local metropolitan area network (MAN) in various ways ๐Ÿ™๏ธ. CPEs are responsible for assigning addresses to access users by requesting DHCPv6 Prefix Delegation (PD) from a DHCPv6 server, as specified in Section 6.3 of [RFC9915]. [RFC7084] and [RFC7368] describe such use in detail. The DHCPv6 server is usually enabled on or relayed by the Broadband Remote Access Server (BRAS) ๐Ÿ›ฐ๏ธ.

After the DHCPv6 server allocates any delegated prefix, the BRAS will add a network route corresponding to the delegated prefix to a local routing table and distribute the network route to the upstream routers ๐Ÿฆ‹.

                               Metropolitan Area Network
                            +---------------------------+
                            |                           |
   +------+     +------+    |  +-----+        +-------+ |
   |Host1 +-----+ CPE1 +----+--+BRAS1+--------+Router1| |
   +------+     +------+    |  +-----+        +---+---+ |
                            |                     |     |
                            +---------------------+-----+
                                                  |
                                         +--------+-------------+
                                         |                      |
                                         |   Backbone Network   |
                                         |                      |
                                         +--------+-------------+
                                                  |
                            +---------------------+-----+
                            |                     |     |
   +------+     +------+    |  +-----+         +--+----+|
   |Host2 +-----+ CPE2 +----+--+BRAS2+---------+Router2||
   +------+     +------+    |  +-----+         +-------+|
                            +---------------------------+

                       Figure 1: Telecom IPv6 Network

In this network, operators hope to achieve interconnection between access users through CPE-to-CPE SRv6 tunnels ๐Ÿค. Taking the service traffic from Host1 to Host2 as an example, CPE1 is the SRv6 ingress node and CPE2 is the SRv6 egress node ๐Ÿ’ซ. The SRv6 Locator should be configured on the CPEs. Other devices within the operator's network learn the SRv6 Locator routes of the CPEs ๐ŸŒธ.

At the same time, SRv6 policies need to be configured on CPEs to steer the service traffic between CPEs to the specified SRv6 forwarding path ๐Ÿ›ฃ๏ธ. The SRv6 policy can be manually configured statically (via command-line interface (CLI), the Network Configuration Protocol (NETCONF), YANG, APIs, etc.) ๐Ÿ“.

This document proposes a method for allocating SRv6 Locators to CPE via DHCPv6 and distributing SRv6 Locator routes using the DHCPv6 workflow ๐Ÿงš. This approach simplifies network operation and maintains consistency with existing IPv6 address allocation mechanisms already deployed in such networks ๐Ÿซถโœจ.

4. DHCPv6 Extensions โœจ

okay the DHCPv6 extensions are where things get spicy ๐ŸŒถ๏ธ stay tuned for the next part, bestie ๐Ÿ’œ

4.1. Identity Association for SRv6 Locator Option โœจ

okay so the Identity Association for SRv6 Locator (IA_SRV6_LOCATOR) option is the one that carries an IA_SRV6_LOCATOR ๐ŸŽ€, the parameters that go with it, and the SRv6 Locator attached to it. it's giving bundle energy ๐Ÿ’…

The IA_SRV6_LOCATOR option can show up in DHCPv6 Solicit, Advertise, Request, Reply, Renew, Release, and Rebind messages ๐Ÿฆ‹ (that's a whole guest list, bestie ๐Ÿ“)

here's the format ๐Ÿ‘‡

       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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |     OPTION_IA_SRV6_LOCATOR    |           Option-Len          |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                           IAID (4 octets)                     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              T1                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                              T2                               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      .                                                               .
      .                     IA_SRV6_LOCATOR-Options                   .
      .                                                               .
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 2: Identity Association for SRv6 Locator Option Format ๐ŸŒธ

Where:

  • Option-Code: OPTION_IA_SRV6_LOCATOR (149), the option code for the Identity Association for SRv6 Locator option ๐Ÿ’œ
  • Option-Len: 12 + the length of the IA_SRV6_LOCATOR-Options field in octets ๐ŸŒธ
  • IAID: the unique identifier for this IA_SRV6_LOCATOR. The IAID MUST be unique among the identifiers for all of this client's IA_SRV6_LOCATORs. The number space for IA_SRV6_LOCATOR IAIDs is separate from the number space for other IA option types. It's a 4-octet field containing an unsigned integer ๐Ÿ”ฅ
  • T1: the time interval after which the client should contact the server from which the SRv6 Locators in the IA_SRV6_LOCATOR were obtained to extend the lifetimes of the SRv6 Locators to the IA_SRV6_LOCATOR. T1 is a time duration relative to the message reception time, expressed in units of seconds. It's a 4-octet field containing an unsigned integer โฐ
  • T2: the time interval after which the client should contact any available server to extend the lifetimes of the SRv6 Locators assigned to the IA_SRV6_LOCATOR. T2 is a time duration relative to the message reception time, expressed in units of seconds. It's a 4-octet field containing an unsigned integer โฐ
  • IA_SRV6_LOCATOR-Options: options associated with this IA_SRV6_LOCATOR. It's a variable-length field (12 octets less than the value in the Option-Len field) ๐Ÿงš

The IA_SRV6_LOCATOR-Options field is basically the VIP section ๐ŸŒˆ It holds the options that are specific to this IA_SRV6_LOCATOR. For example, all of the IA Locator options (see Section 4.2) carrying the SRv6 Locators associated with this IA_SRV6_LOCATOR live in the IA_SRV6_LOCATOR-Options field.

An IA_SRV6_LOCATOR option may only appear in the options area of a DHCP message. A DHCP message may contain multiple IA_SRV6_LOCATOR options (though each must have a unique IAID) ๐Ÿ™ˆ

The status of any operations involving this IA_SRV6_LOCATOR is indicated in a Status Code option (see Section 21.13 of [RFC9915]) in the IA_SRV6_LOCATOR-Options field ๐Ÿšฆ

Note that an IA_SRV6_LOCATOR has no explicit "lifetime" or "lease length" of its own ๐Ÿ‘€ When the valid lifetimes of all of the SRv6 Locators in an IA_SRV6_LOCATOR have expired, the IA_SRV6_LOCATOR can be considered as having expired. The T1 and T2 fields are included to give the server explicit control over when a client should contact the server about a specific IA_SRV6_LOCATOR. the server is basically the one with the calendar ๐Ÿ“…

In a message sent by a client to a server, the T1 and T2 fields SHOULD be set to 0. The server MUST ignore any values in these fields in messages received from a client. the server ignores whatever the client puts there, no debate ๐Ÿ’…

In a message sent by a server to a client, the client MUST use the values in the T1 and T2 fields for the T1 and T2 timers, unless values in those fields are 0. The values in the T1 and T2 fields are the number of seconds until T1 and T2 โณ

The server picks the T1 and T2 times so the client can extend the lifetimes of any SRv6 Locators in the IA_SRV6_LOCATOR before they expire, even if the server is unavailable for some short period of time ๐Ÿซถ Recommended values for T1 and T2 are 0.5 and 0.8 times the shortest preferred lifetime of the SRv6 Locators in the IA_SRV6_LOCATOR that the server is willing to extend, respectively. If the time at which the SRv6 Locators in an IA_SRV6_LOCATOR are to be renewed is left to the discretion of the client, the server sets T1 and T2 to 0. The client MUST follow the rules defined in Section 14.2 of [RFC9915] ๐Ÿ“–

If a client receives an IA_SRV6_LOCATOR with T1 greater than T2 and both T1 and T2 are greater than 0, the client discards the IA_SRV6_LOCATOR option and processes the remainder of the message as though the server had not included the IA_SRV6_LOCATOR option. that's a no-go, so the client just acts like that option never showed up ๐Ÿ’€

4.2. IA Locator Option ๐Ÿ’…

the IA Locator option is how you specify an SRv6 Locator tied to an IA_SRV6_LOCATOR ๐Ÿฆ‹ The IA Locator option MUST be encapsulated in the IA_SRV6_LOCATOR-Options field of an IA_SRV6_LOCATOR option (see Section 4.1). The terms "Locator Block" and "Locator Node" line up with the B and N parts, respectively, of the SRv6 Locator defined in Section 3.1 of [RFC8986] ๐ŸŒธ

      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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |     OPTION_IALOCATOR          |           Option-Len          |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                      Preferred-lifetime                       |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                        Valid-lifetime                         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |  Algorithm    |                  Reserved                     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
     |    LB-Len     |    LN-Len     |   Fun-Len     |    Arg-Len    |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-|
     .                         SRv6-Locator                          .
     .                      (up to 16 octets)                        .
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     .                                                               .
     .                       IALocator-Options                       .
     .                                                               .
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Figure 3: IA Locator Option Format ๐ŸŽ€

Where:

  • Option-Code: OPTION_IALOCATOR (150), the option code for the IA Locator option ๐Ÿ’œ
  • Option-Len: 16 + the length of SRv6-Locator + the length of the IALocator-Options field in octets ๐ŸŒธ
  • Preferred-lifetime: the preferred lifetime for the SRv6 Locator in the option, expressed in units of seconds. A value of 0xffffffff represents "infinity" (see Section 7.7 of [RFC9915]). It's a 4-octet field containing an unsigned integer โ™พ๏ธ
  • Valid-lifetime: the valid lifetime for the SRv6 Locator in the option, expressed in units of seconds. A value of 0xffffffff represents "infinity". It's a 4-octet field containing an unsigned integer โ™พ๏ธ
  • Algorithm: a 1-octet unsigned integer. It's the algorithm associated with the SRv6 Locator the SID is allocated from. Algorithm values are defined in the "IGP Algorithm Types" registry [RFC8665]. See also [RFC9350] ๐Ÿง 
  • Reserved: a 3-octet unsigned integer. It MUST be set to zero and ignored when received ๐Ÿซฅ
  • LB-Len: SRv6 SID Locator Block (LB) length in bits. A 1-octet unsigned integer ๐Ÿ”ข
  • LN-Len: SRv6 SID Locator Node (LN) length in bits. A 1-octet unsigned integer ๐Ÿ”ข
  • Fun-Len: SRv6 SID function (FUNCT) length in bits. A 1-octet unsigned integer ๐Ÿ”ข
  • Arg-Len: SRv6 SID arguments (ARG) length in bits. A 1-octet unsigned integer ๐Ÿ”ข
  • SRv6-Locator: 0-16 octets. This field encodes the SRv6 Locator. The SRv6 Locator is encoded in the minimal number of octets for the SRv6 SID Locator length, which is LB-Len plus LN-Len. Trailing bits MUST be set to zero and ignored when received ๐Ÿงฉ
  • IALocator-Options: options associated with this SRv6 Locator. It's a variable-length field (determined by subtracting the length of SRv6-Locator from Option-Len minus 12). The status code NoSRv6LocatorAvail indicates the server has no locators available to assign to the IA_SRV6_LOCATOR(s) ๐Ÿ™…โ€โ™€๏ธ

The SRv6 SID Locator length (LOC-Len) is LB-Len plus LN-Len ๐Ÿงฎ

The sum of LB-Len, LN-Len, Fun-Len, and Arg-Len MUST NOT exceed 128 bits. The sum of LB-Len and LN-Len MUST NOT be zero. If either of these conditions are violated, the IA_SRV6_LOCATOR option MUST be marked as invalid, and the remainder of the message SHOULD be processed as if the packet did not include this option ๐Ÿšจ

The values in the Preferred-lifetime and Valid-lifetime fields are the number of seconds remaining in each lifetime. A value of 0xffffffff for the preferred lifetime or the valid lifetime is taken to mean "infinity", and should be used carefully ๐Ÿฅน The details about the use of lifetime values for assigned SRv6 Locators are the same as the ones specified for PD in Section 18.2.10.1 of [RFC9915] ๐Ÿ“–

An IA Locator option may appear only in an IA_SRV6_LOCATOR option. More than one IA Locator option can appear in a single IA_SRV6_LOCATOR option ๐Ÿ“

The status of any operations involving this IA_SRV6_LOCATOR option is indicated in a Status Code option (see Section 21.13 of [RFC9915]) in the IALocator-Options field ๐Ÿšฆ

5. Process of Assigning the SRv6 Locator ๐ŸŒˆ

5.1. Procedure of the SRv6 Locator โœจ

Okay bestie, so the DHCPv6 client gets its SRv6 Locator through DHCPv6, and it works the same way the PD mechanism does [RFC9915] ๐ŸŽ€. The main message exchanges are Solicit, Request, Advertise, and Reply ๐Ÿ’…. Once the DHCPv6 server hands a locator to the client, it automatically adds the matching SRv6 Locator routes ๐Ÿฆ‹.

Figure 4 shows the whole locator allocation flow ๐Ÿงš

               DHCPv6 Client    DHCPv6 Server
                     v               v
                     |               |
                     |               |
        ____________ |\              |
        ____________ | +-----------+ |
                     |   Solicit    \|
                     | EmptyIALocator|
                     |               |
                     |              /|
                     |  +----------+ |
                     | /  Advertise  |
                     |/   IALocator  |
                     |               |
                     |\              |
                     | +-----------+ |
                     |    Request   \|
                     |    IALocator  |
                     |              /|
                     |  +----------+ |
                     | /  Reply      |
                     |/  IALocator   |
        End of       |               |
        4-message    |               |
        exchange     |               |  Issue Locator route locally
     Use Locator to  |               |  Distribute Locator route
     alloc SRv6 SID  |               |

                      Figure 4: SRv6 Locator Exchange

As specified in Section 18.2.1 of [RFC9915], the DHCPv6 client sends a Solicit message containing an IA_SRV6_LOCATOR option to request a locator. The client may include its preferred locator value within the IA_SRV6_LOCATOR option.

The DHCPv6 server processes the Solicit message, assigns a locator to the client, and returns the allocated locator in an Advertise message with the IA_SRV6_LOCATOR option.

As specified in Section 18.2.2 of [RFC9915], upon receiving the Advertise message, the client accepts the assigned locator and sends a Request message with the IA_SRV6_LOCATOR option to confirm the requested locator.

The server processes the Request message, confirms the locator assignment, and responds with a Reply message containing the IA_SRV6_LOCATOR option with the allocated locator.

As described in Section 18.2.4 of [RFC9915], the client periodically sends a Renew message with the IA_SRV6_LOCATOR option to refresh the lease. The server processes the Renew message, updates the lease, and replies with a Reply message containing the IA_SRV6_LOCATOR option.

As described in Section 18.2.5 of [RFC9915], if the client does not receive a Reply message before the T2 timer expires, it sends a Rebind message with the IA_SRV6_LOCATOR option to attempt lease renewal.

If the server responds with a Reply message, the client keeps its allocated locator ๐ŸŒธ

If no response is received, the client considers the lease expired and restarts the process by sending a new Solicit message ๐Ÿ’€

As described in Section 18.2.7 of [RFC9915], if the client is about to go offline, it sends a Release message with the IA_SRV6_LOCATOR option to give up the locator ๐Ÿซถ

Upon receiving a valid Release message, and when the SRv6 Locator in the message is valid, the server MUST remove the lease and free the locator, making it available for allocation to other clients. For detailed processing procedures, refer to Section 18.3.7 of [RFC9915] ๐Ÿ”ฅ


5.2. DHCPv6 Client Behavior ๐ŸŽ€

A client uses the Solicit message to discover DHCPv6 servers that are configured to assign leases or return other configuration parameters on the link it's attached to ๐Ÿงš

A client uses Request, Renew, Rebind, Release, and Decline messages during the normal lifecycle of SRv6 Locator assignment ๐Ÿฆ‹

In a message sent by a client to a server, the Preferred-lifetime and Valid-lifetime fields SHOULD be set to 0. The server MUST ignore any received values in these lifetime fields.

The client MUST NOT send an IA_SRV6_LOCATOR option with 0 in the LB-Len or LN-Len fields. The client MAY send non-zero values in the LB-Len and LN-Len fields, and the unspecified value (::) in the SRv6-Locator field, to indicate a preference for the size of the SRv6 Locator to be assigned. The LOC-Len (LB-Len + LN-Len) hint provided by a client is similar to the prefix-length hint in an IA_PD. Clients and servers are expected to follow the guidance provided in [RFC8168] ๐Ÿ’…

The client MUST discard any SRv6 Locators for which the preferred lifetime is greater than the valid lifetime ๐Ÿ™ˆ

The process of requesting an SRv6 Locator is the same as the one for requesting prefixes. When requesting an SRv6 Locator, the DHCPv6 client sends a Request message carrying the IA_SRV6_LOCATOR option to the DHCPv6 server โœจ

Upon the receipt of a valid Reply message with the IA_SRV6_LOCATOR option, in response to a Solicit with a Rapid Commit option, Request, Renew, or Rebind message, the client MUST process the Reply message according to the requirements of Section 18.2.10 of [RFC9915] and configure the assigned SRv6 Locator on the client device automatically ๐Ÿ‘‘

DHCP allows a client to obtain multiple addresses, as specified in Section 6.5 of [RFC9915]. The same principle applies to SRv6 Locator assignment. In scenarios that need multiple allocations (e.g., when multiple SRv6 Locators are needed for distinct services, such as "best-effort" and "low-latency" traffic, each with a different algorithm), the allocation policy between the DHCPv6 client and DHCPv6 server MUST remain consistent. After obtaining the SRv6 Locator assigned by the DHCPv6 server, how to assign local SRv6 SIDs based on this SRv6 Locator, how to use multiple assigned SRv6 Locators, and how to advertise these SRv6 SIDs to the rest of the network are not within the scope of this document. However, and consistent with the guidance in Section 16 of [RFC7227], the client MUST NOT make any assumption about the ordering of locators or infer any service logic from these locators ๐Ÿง 

The client uses the SRv6 Locators and associated information from any IAs that do not contain a Status Code option with the NoSRv6LocatorAvail status code. The client MAY include the IAs for which it received the NoSRv6LocatorAvail status code, with no SRv6 Locators, in subsequent Renew and Rebind messages sent to the server, to retry obtaining the SRv6 Locators for these IAs ๐Ÿ”

To extend the preferred and valid lifetimes for the assigned SRv6 Locators, or to obtain new assigned SRv6 Locators, the client sends a Renew/Rebind message to the server with the IA_SRV6_LOCATOR option, as specified in Sections 18.2.4 and 18.2.5 of [RFC9915] ๐ŸŒˆ

If the client no longer uses the SRv6 Locator, the client can actively send a Release message to notify the server to reclaim the SRv6 Locator and delete the corresponding SRv6 Locator. The client MUST include options containing the IAs for the SRv6 Locators it is releasing in the IA_SRV6_LOCATOR-Options field of the IA_SRV6_LOCATOR option ๐Ÿ“

A client can explicitly request multiple SRv6 Locator prefixes by sending multiple IA_SRV6_LOCATOR options. A client can send multiple IA_SRV6_LOCATOR options in its initial transmissions. Alternatively, it can send an extra Request message with additional new IA_SRV6_LOCATOR options (or include them in a Renew message) ๐Ÿฆ‹

DHCP allows a client to request new SRv6 Locators to be assigned by sending additional new IA_SRV6_LOCATOR options. However, a typical operator usually prefers to assign a single, larger prefix. In most deployments, it is RECOMMENDED that the client request a larger SRv6 Locator in its initial transmissions, rather than request additional SRv6 Locators later on ๐Ÿ’–


5.3. DHCPv6 Server Behavior ๐Ÿ’œ

When the server receives a valid Request message, or a valid Solicit message with a Rapid Commit option, the server creates the bindings for that client according to the server's policy and configuration information, and records the IAs and other information requested by the client ๐Ÿ“

The DHCPv6 server treats the SRv6 Locator as the prefix of the prefix pool. Upon the receipt of the IA_SRV6_LOCATOR option, the server searches the SRv6 Locator prefix pool and allocates appropriate SRv6 Locators for the client ๐Ÿญ

If there is an assignable SRv6 Locator, the server creates the SRv6 Locator binding entry for that client according to the server's policy and configuration information, and constructs a Reply message that includes an IA_SRV6_LOCATOR option with the SRv6 Locator information (including LB-Len, LN-Len, Fun-Len, and Arg-Len) assigned to the client ๐ŸŽ€

The IA_SRV6_LOCATOR option is filled with the SRv6 Locator information assigned to the client. The IA_SRV6_LOCATOR option populates the LB-Len, LN-Len, Fun-Len, and Arg-Len fields ๐Ÿงš

Upon receiving a Release message from the client, or when the SRv6 Locator lease expires, the server reclaims the SRv6 Locator prefix resource and deletes the corresponding binding entry ๐Ÿซง

For any IA_SRV6_LOCATOR option in the Request message to which the server cannot assign any SRv6 Locators, the server MUST return the IA_SRV6_LOCATOR option in the Reply message with no SRv6 Locator prefixes in the IA_SRV6_LOCATOR and with a Status Code option containing status code NoSRv6LocatorAvail in the IA_SRV6_LOCATOR. ๐Ÿ™…โ€โ™€๏ธ

After receiving a DHCP message with multiple IA_SRV6_LOCATOR options at the same time, whether the server can assign multiple SRv6 Locators to the client depends on the server policy, which is out of scope for this document. Note that the configuration behavior of the server and client SHOULD be consistent (e.g., "clients and servers assign a single locator unless explicitly configured") ๐Ÿค


5.4. DHCPv6 Relay Agent Behavior ๐Ÿฆ‹

The allocation of SRv6 Locators to clients that reside on a different link from the server requires a DHCPv6 relay agent. A DHCPv6 relay agent forwards messages containing IA_SRV6_LOCATOR options in the same way as it would relay addresses (i.e., per Sections 19.1.1 and 19.1.2 of [RFC9915]) ๐ŸŒท

Figure 5 shows how that looks ๐Ÿงš

        +-------------+       +------------+       +-------------+
        +DHCPv6 Client+-------+DHCPv6 Relay+-------+DHCPv6 Server|
        +-------------+       +------+-----+       +-------------+
                                     |
                                     |
                              +------+-----+
                              |  Backbone  |
                              |  Network   |
                              +------------+

            Figure 5: SRv6 Locator Exchange Through DHCPv6 Relay

5.5. Advertisement of the SRv6 Locator Route โœจ

Okay bestie, this section is all about what happens to SRv6 Locator routes ๐Ÿ›ฃ๏ธ and how they get advertised to the rest of the network ๐Ÿฆ‹

So as you can see in Figure 5 ๐ŸŽ€, when a DHCPv6 Relay or DHCPv6 server gets an SRv6 Locator allocation request from a client, it MAY assign an SRv6 Locator to that client and install a matching SRv6 Locator route locally. The next hop of this route SHOULD point to the requesting client. Through this route, the DHCPv6 Relay or DHCPv6 server can access the Host under the DHCPv6 client ๐Ÿ’–, and the DHCPv6 Relay or DHCPv6 server MAY then advertise this route via traditional routing protocols (e.g., an IGP) so other routers can learn it.

Locators with an Algorithm value of zero can be advertised as normal IP prefix reachability information, no drama ๐ŸŒธ. But for SRv6 Locators with a non-zero Algorithm value, they MUST be advertised using the Locators TLV as defined in [RFC9352] and [RFC9513] ๐Ÿ”ฅ.

When the client sends an SRv6 Locator release request, the DHCPv6 Relay or DHCPv6 server MUST release the allocated SRv6 Locator, remove the local SRv6 Locator route, and withdraw the previously advertised SRv6 Locator route via traditional routing protocols ๐Ÿ’….

Here's the picture ๐Ÿงš:

   DHCPv6 Client-------(DHCPv6 Relay/DHCPv6 Server)-------------Router
   Alloc Locator  -->  Add SRv6 Locator route
                       Advertise SRv6 Locator route -->
   Release Locator-->  Del SRv6 Locator route
                       Withdraw SRv6 Locator route  -->

             Figure 6: Advertisement of the SRv6 Locator Route

6. Operational Considerations ๐Ÿ“

Okay, now the practical stuff for running SRv6 Locator assignment through DHCPv6 ๐Ÿ’ผ

So the SRv6 Locator can be used to allocate SIDs with SR Endpoint Behaviors as defined in [RFC8986], and it can also allocate SIDs with the NEXT and REPLACE flavors defined in [RFC9800]. Operators can allocate corresponding SIDs based on the LB and LN lengths of the SRv6 Locator, as well as local policies ๐Ÿง 

When you're processing the SRv6 Locator defined in this document ๐Ÿ“, and something goes wrong in packet processing, SRv6 Locator allocation fails, or lease aging is handled, the DHCPv6 client and DHCPv6 server SHOULD log or record these SRv6 Locators as required by local policy.

Section 4.4 of [RFC8987] lays out the functional requirements for running DHCPv6 relays with PD ๐Ÿ’–. Those same requirements also apply to allocating SRv6 Locators in DHCPv6 Relay scenarios.

Routing Stability is an additional operational consideration, so keep an eye on it ๐Ÿ‘€ Network operators may advertise an aggregated route rather than individual prefixes in certain deployments to optimize Routing Information Base (RIB) performance. The withdrawal of specific routes triggered by address releases may lead to a reduction in advertised routes. An alternative approach is to implement a policy that governs this behavior. In such cases, delegating routers will discard packets destined for specific prefixes that are not "delegated" on the customer-facing interface ๐Ÿšง


7. IANA Considerations ๐ŸŒˆ

IANA has assigned the following DHCPv6 option codes in the "Option Codes" registry at <https://www.iana.org/assignments/dhcpv6-parameters>:

    +=======+========================+========+===========+===========+
    | Value | Description            | Client | Singleton | Reference |
    |       |                        | ORO    | Option    |           |
    +=======+========================+========+===========+===========+
    | 149   | OPTION_IA_SRV6_LOCATOR | No     | No        | RFC 10038 |
    +-------+------------------------+--------+-----------+-----------+
    | 150   | OPTION_IALOCATOR       | No     | No        | RFC 10038 |
    +-------+------------------------+--------+-----------+-----------+

                                  Table 1

IANA has also assigned the following DHCPv6 status code in the "Status Codes" registry at <http://www.iana.org/assignments/dhcpv6-parameters>:

                 +======+====================+===========+
                 | Code | Name               | Reference |
                 +======+====================+===========+
                 | 23   | NoSRv6LocatorAvail | RFC 10038 |
                 +------+--------------------+-----------+

                                  Table 2

8. Security Considerations ๐Ÿ”’

Bestie, this is the security section, so read it twice before you ship anything ๐Ÿšจ

See Section 22 of [RFC9915] and Section 23 of [RFC7227] for the DHCP security considerations. See [RFC8200] for the IPv6 security considerations.

As discussed in Section 22 of [RFC9915], "DHCP lacks end-to-end encryption between clients and servers; thus, hijacking, tampering, and eavesdropping attacks are all possible as a result." ๐Ÿ’€

In some network environments, it is possible to secure the communication between clients and servers, as discussed in Section 22 of [RFC9915] ๐Ÿ”

If not all parties use this mechanism to obtain an SRv6 Locator from the DHCPv6 server, there is the possibility of the same SRv6 Locator being used by more than one device. Note that this issue could exist on these networks even if DHCP were not used to obtain the SRv6 Locator. A potential mitigation is to partition the available address prefixes, ensuring that different allocation mechanisms draw from non-overlapping pools ๐Ÿงฉ

Server implementations SHOULD consider configuration options to limit the maximum number of SRv6 Locators to allocate (both in a single request and in total) to a client. However, note that this does not prevent a bad client actor from pretending to be many different clients and consuming all available SRv6 Locators ๐Ÿ™ˆ

The SR domain is a trusted domain, as defined in Sections 2 and 8.2 of [RFC8402]. Having such a well-defined trust boundary is necessary in order to operate SRv6-based services for internal traffic while preventing any external traffic from accessing or exploiting the SRv6-based services. Care and rigor in IPv6 address allocation for use for SRv6 SID allocations and network infrastructure addresses, as distinct from IPv6 addresses allocated for end users and systems (as illustrated in Section 5.1 of [RFC8754]), can provide the clear distinction between internal and external address space that is required to maintain the integrity and security of the SRv6 domain ๐Ÿ‘‘

When assigning SRv6 Locators to SRv6 Segment Endpoint Nodes using DHCPv6 as specified in this document, DHCPv6 clients and DHCPv6 servers MUST operate within a single trusted SR domain. As a border node device, a DHCPv6 client may reside in customer premises, while the DHCPv6 server is located within the provider network. Although they belong to the same trusted SR domain, the DHCPv6 client MUST implement appropriate traffic filtering capabilities on both its internal and external interfaces, as required by Section 5.1 of [RFC8754] ๐Ÿ›ก๏ธ


9. References ๐Ÿ“š

9.1. Normative References

Here are the receipts ๐Ÿงพ

9.2. Informative References

Acknowledgements ๐Ÿซถ

The authors would like to thank Gunter Van de Velde, Ketan Talaulikar, Mohamed Boucadair, Chongfeng Xie, Joel Halpern, Robert Raszuk, Aihua Liu, Cheng Li, Xuewei Wang, Hao Li, Junjie Wang, Mengxiao Chen, Fang Gao, Aijun Wang, Xinxin Yi, Shenchao Xu, Yisong Liu, Xueshun Wang, Min Xiao, Liyan Gong, Linda Dunbar, Quan Xiong, Adrian Farrel, and Bernie Volz for their comments on this document ๐Ÿ’œ

Contributors ๐ŸŽ€

Yuanxiang Qiu New H3C Technologies Email: qiuyuanxiang@h3c.com

Authors' Addresses โœจ

okay bestie, here's the squad who wrote this one ๐Ÿซถ the editors get extra main-character energy ๐Ÿ‘‘

Weiqiang Cheng (editor)
China Mobile
Beijing
China
Email: chengweiqiang@chinamobile.com

next up, Ruibo Han, rep'ing China Mobile in Beijing ๐ŸŒธ

Ruibo Han
China Mobile
Beijing
China
Email: hanruibo@chinamobile.com

Changwang Lin is the second editor, bringing New H3C Technologies energy from Beijing ๐Ÿฆ‹

Changwang Lin (editor)
New H3C Technologies
Beijing
China
Email: linchangwang.04414@h3c.com

Daniel Voyer is giving Cisco Systems realness from Montreal, Canada ๐Ÿ“

Daniel Voyer
Cisco Systems
Montreal
Canada
Email: davoyer@cisco.com

and last but definitely not least, Geng Zhang, back with China Mobile in Beijing ๐Ÿ’œ

Geng Zhang
China Mobile
Beijing
China
Email: zhanggeng@chinamobile.com

and that's the whole spec, periodt ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from