Internet-Draft | SRv6 mLDP/RSVP P2MP | December 2022 |
Zhang, et al. | Expires 3 July 2023 | [Page] |
This document specifies extensions to mLDP and RSVP-TE P2MP protocols to set up mLDP and RSVP-TE P2MP tunnels with SRv6 SIDs intead of MPLS labels.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 3 July 2023.¶
Copyright (c) 2022 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.¶
[I-D.ietf-spring-sr-replication-segment] specifies an SR replication segment as a logical construct which connects a Replication Node to a set of Downstream Nodes. A replicaiton segment is identified by <replication-id, node-id> in control plane.¶
SR replication segments are building blocks of SR-P2MP replication trees. As specified in [I-D.ietf-pim-sr-p2mp-policy], an SR-P2MP tree is the concatenation of replication segments installed on tree nodes (the packets carried by the tree do not carry a concatenation of replication SIDs for those segments). A controller calculates the P2MP tree, and signals individual replication segments onto tree nodes via PCEP [I-D.ietf-pce-sr-p2mp-policy], BGP [I-D.ietf-bess-bgp-multicast-controller], Netconf [RFC6241] or other means.¶
Each tree is identified by a <root-id, tree-id> tuple and has a corresponing SR P2MP Policy, which may have multiple candidate paths. As such, the replication-id of a replication segment is a <root-id, tree-id, candidate-path-id> tuple.¶
With MPLS data plane, the forwarding state for a replication segment is identical to the forwarding state on mLDP/RSVP-TE P2MP tree nodes ([RFC6388], [RFC4875]), i.e., in the form of "incoming label -> (labeled) replication branches". In other words, the only difference between mLDP/RSVP-TE P2MP and SR-MPLS P2MP is in the control plane - instead of hop-by-hop signaling, SR-P2MP signaling is from a controller and with a different control plane identification.¶
With SRv6 data plane, while SRv6 SID instead of MPLS labels are used, the FUNCT bits in the LOC:FUNCT:ARG format of SID encoding [RFC8986] are the equivalent of MPLS label, while the LOC bits get the packet to local or downstream nodes. Nonetheless, for operators who does not use MPLS data palne, SRv6 P2MP is a natural choice.¶
However, even an SRv6-only operator may want to use another option to set up its P2MP trees, instead of using controller-based signaling with <root-id, tree-id, candidate-path-id> identification.¶
Consider an existing MVPN deployment with PE-PE mLDP or RSVP-TE P2MP tunnels and the provider network is being transitioned from MPLS to SRv6 part by part incrementally. Considering the following three factors:¶
Therefore, it is desired to have P2MP trees identified by mLDP FEC or RSVP Session Object in the control plane but with SRv6 data plane, and there are two options for that:¶
The first option will be specified in [I-D.ietf-bess-bgp-multicast-controller] and [I-D.li-pce-multicast] for BGP and PCEP signaling respectively, and this document specifies the second option.¶
There are two options to use mLDP protocol and procedures to signal mLDP tunnels for SRv6 data plane, as specified in the following two sections.¶
In this simpliest option, no protocol extension is needed. MPLS labels in various mLDP messages are treated as the FUNCT bits of the LOC:FUNCT:ARG format of SRv6 SID encoding.¶
All tree nodes MUST have the following provisioned:¶
With the above provisioning, a node determines if a signaled label is a real MPLS label for MPLS data planes, or is to be treated as the FUNCT bits of an SRv6 SID, and installs forwarding state accordingly.¶
With this options, mLDP signaling is extended as following.¶
A new V-bit is defined in the P2MP Capability TLV to indicate that this node uses SRv6 SIDs:¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |1|0| P2MP Capability (0x0508) | Length (= 1) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |S|V| Reserved | +-+-+-+-+-+-+-+-+¶
An SRv6 SID TLV is defined to signal the SRv6 SID instead of a label:¶
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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |0|0| SRv6 SID (TBD) | Length (24) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ SRv6 SID Value ~ +---------------------------------------------------------------+ | SRv6 Endpoint Behavior | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Locator Block | Locator Node | Function | Argument | | Length | Length | Length | Length | +-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+¶
The SRv6 SID TLV is used in place of Generic Label TLV if and only if the neighbor has indicated via the V-bit in the P2MP Capability TLV that it uses SRv6 SIDs.¶
This field encodes the SRv6 Endpoint Behavior codepoint value that is associated with the SRv6 SID. The codepoints used are from IANA's "SRv6 Endpoint Behaviors" subregistry under the "Segment Routing" registry that was introduced by [RFC8986]. The opaque SRv6 Endpoint Behavior (i.e., value 0xFFFF) MAY be used when the advertising router wishes to abstract the actual behavior of its locally instantiated SRv6 SID.¶
This field MUST be set to 0 by the sender and ignored by the receiver.¶
This field contains the length of the SRv6 SID Locator Block in bits.¶
This field contains the length of the SRv6 SID Locator Node in bits.¶
This field contains the length of the SRv6 SID Function in bits.¶
This field contains the length of the SRv6 SID Argument in bits.¶
The choice of SRv6 Endpoint Behavior of the SRv6 SID is entirely up to the originator of the TLV. While this document expects End.Replicate [I-D.ietf-spring-sr-replication-segment], the reception of other SRv6 Endpoint Behaviors (e.g., new behaviors that may be introduced in the future) is not considered an error. An unrecognized SRv6 Endpoint Behavior MUST NOT be considered invalid by the receiver. An implementation MAY log a rate-limited warning when it receives an unexpected behavior.¶
To be added.¶
To be added.¶
Similarly, there are two options to use RSVP-TE P2MP protocol and procedures to signal RSVP-TE P2MP tunnels for SRv6 data plane, as specified in the following two sections.¶
This is the same as Section 2.1.¶
Similar to Section 2.2, RSVP-TE P2MP signaling is extended as following:¶
This is to indicate a node uses SRv6 SIDs. To be expanded.¶
A new C-type (TBD) is defined for the Label Object to indicate an IPv6 address as SRv6 SID:¶
0 1 2 3 +-------------+-------------+-------------+-------------+ | Length (28) | Class (16) | C-Type (TBD)| +-------------+-------------+-------------+-------------+ // SRv6 SID Value // +-------------+-------------+-------------+-------------+ | SRv6 Endpoint Behavior | RESERVED | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Locator | Locator Node| Function | Argument | | Block Length| Length | Length | Length | +-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+¶
The C-Type TBD Label Object is used in place of C-Type 1 Label Object if and only if the neighbor has indicated via Hello that it uses SRv6 SIDs.¶
This field encodes the SRv6 Endpoint Behavior codepoint value that is associated with the SRv6 SID. The codepoints used are from IANA's "SRv6 Endpoint Behaviors" subregistry under the "Segment Routing" registry that was introduced by [RFC8986]. The opaque SRv6 Endpoint Behavior (i.e., value 0xFFFF) MAY be used when the advertising router wishes to abstract the actual behavior of its locally instantiated SRv6 SID.¶
This field MUST be set to 0 by the sender and ignored by the receiver.¶
This field contains the length of the SRv6 SID Locator Block in bits.¶
This field contains the length of the SRv6 SID Locator Node in bits.¶
This field contains the length of the SRv6 SID Function in bits.¶
This field contains the length of the SRv6 SID Argument in bits.¶
The choice of SRv6 Endpoint Behavior of the SRv6 SID is entirely up to the originator of the TLV. While this document expects End.Replicate [I-D.ietf-spring-sr-replication-segment], the reception of other SRv6 Endpoint Behaviors (e.g., new behaviors that may be introduced in the future) is not considered an error. An unrecognized SRv6 Endpoint Behavior MUST NOT be considered invalid by the receiver. An implementation MAY log a rate-limited warning when it receives an unexpected behavior.¶
To be added.¶
To be added.¶