rfc9703xml2.original.xml | rfc9703.xml | |||
---|---|---|---|---|
<?xml version="1.0"?> | <?xml version="1.0" encoding="utf-8"?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
<!ENTITY RFC2119 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | <!DOCTYPE rfc [ | |||
RFC.2119.xml"> | <!ENTITY nbsp " "> | |||
<!ENTITY RFC8287 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | <!ENTITY zwsp "​"> | |||
RFC.8287.xml"> | <!ENTITY nbhy "‑"> | |||
<!ENTITY RFC8029 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | <!ENTITY wj "⁠"> | |||
RFC.8029.xml"> | ||||
<!ENTITY RFC7705 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.7705.xml"> | ||||
<!ENTITY RFC8690 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.8690.xml"> | ||||
<!ENTITY RFC8174 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.8174.xml"> | ||||
<!ENTITY RFC8403 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.8403.xml"> | ||||
<!ENTITY RFC8664 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.8664.xml"> | ||||
<!ENTITY RFC4271 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.4271.xml"> | ||||
<!ENTITY RFC5065 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.5065.xml"> | ||||
<!ENTITY RFC6286 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.6286.xml"> | ||||
<!ENTITY RFC9086 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.9086.xml"> | ||||
<!ENTITY RFC9087 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.9087.xml"> | ||||
<!ENTITY RFC7942 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.7942.xml"> | ||||
<!ENTITY RFC9256 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.9256.xml"> | ||||
<!ENTITY RFC6793 PUBLIC "" "http://xml.resource.org/public/rfc/bibxml/reference. | ||||
RFC.6793.xml"> | ||||
]> | ]> | |||
<?rfc toc="yes"?> | ||||
<?rfc tocompact="yes"?> | ||||
<?rfc tocdepth="3"?> | ||||
<?rfc tocindent="yes"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="yes"?> | ||||
<?rfc comments="yes"?> | ||||
<?rfc inline="yes"?> | ||||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<rfc category="std" docName="draft-ietf-mpls-sr-epe-oam-19" ipr="trust200902"> | ||||
<front> | ||||
<title abbrev="EPE-OAM">Label Switched Path (LSP) Ping/Traceroute for Segment | ||||
Routing (SR) | ||||
Egress Peer Engineering Segment Identifiers (SIDs) | ||||
with MPLS Data Plane</title> | ||||
<author initials="S." surname="Hegde" fullname="Shraddha Hegde"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie | |||
<organization>Juniper Networks Inc.</organization> | tf-mpls-sr-epe-oam-19" number="9703" consensus="true" ipr="trust200902" obsolete | |||
<address> | s="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth=" | |||
<postal> | 3" symRefs="true" sortRefs="true" version="3"> | |||
<street>Exora Business Park</street> | ||||
<city>Bangalore</city> | ||||
<region>KA</region> | ||||
<code>560103</code> | ||||
<country>India</country> | ||||
</postal> | ||||
<email>shraddha@juniper.net</email> | ||||
</address> | ||||
</author> | ||||
<author initials="M." surname="Srivastava" fullname="Mukul Srivastava"> | ||||
<organization>Juniper Networks Inc.</organization> | ||||
<address> | ||||
<postal> | ||||
<street></street> | ||||
<city></city> | ||||
<region></region> | ||||
<code></code> | ||||
<country></country> | ||||
</postal> | ||||
<email>msri@juniper.net</email> | ||||
</address> | ||||
</author> | ||||
<author initials="K." surname="Arora" fullname="Kapil Arora"> | <front> | |||
<organization>Individual Contributor</organization> | ||||
<address> | ||||
<postal> | ||||
<street></street> | ||||
<city></city> | ||||
<region></region> | ||||
<code></code> | ||||
<country></country> | ||||
</postal> | ||||
<email>kapil.it@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="S." surname="Ninan" fullname="Samson Ninan"> | <!--[rfced] We updated "MPLS Data Plane" to "MPLS Data Planes" in the | |||
<organization>Ciena</organization> | document title. If that is not correct and it should be singular, | |||
<address> | please let us know. We also added a hyphen to "EPE SIDs" in the | |||
<postal> | abbreviated title that spans the PDF to match the running text. | |||
<street></street> | ||||
<city></city> | ||||
<region></region> | ||||
<code></code> | ||||
<country></country> | ||||
</postal> | ||||
<email>samson.cse@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="X." surname="Xu" fullname="Xiaohu Xu"> | ||||
<organization>China Mobile</organization> | ||||
<address> | ||||
<postal> | ||||
<street></street> | ||||
<city>Beijing</city> | ||||
<region></region> | ||||
<code></code> | ||||
<country>China</country> | ||||
</postal> | ||||
<email>xuxiaohu_ietf@hotmail.com </email> | ||||
</address> | ||||
</author> | ||||
<date year="2024"/> | ||||
<area>Routing</area> | ||||
<workgroup>Routing area</workgroup> | ||||
<keyword>OAM</keyword> | ||||
<keyword>EPE</keyword> | ||||
<keyword>BGP-LS</keyword> | ||||
<keyword>BGP</keyword> | ||||
<keyword>SPRING</keyword> | ||||
<keyword>SDN</keyword> | ||||
<keyword>SID</keyword> | ||||
<abstract> | Original: | |||
<t>Egress Peer Engineering (EPE) is an application of Segment Routing to | (title) | |||
solve the problem of egress peer selection. The Segment Routing based | Label Switched Path (LSP) Ping/Traceroute for Segment Routing (SR) | |||
BGP-EPE solution allows a centralized controller, e.g. a Software | Egress Peer Engineering (EPE) Segment Identifiers (SIDs) with MPLS | |||
Defined Network (SDN) controller to program any egress peer. | Data Plane | |||
The EPE solution requires the node or the SDN controller to program | ||||
the PeerNode Segment | ||||
Identifier(SID) describing a session between two nodes, the PeerAdj SID | ||||
describing the link (one or more) that is used by sessions between peer nodes | ||||
, | ||||
and the PeerSet SID describing any connected interface to any peer in the rel | ||||
ated group. | ||||
This document provides new sub-TLVs for EPE Segment | ||||
Identifiers (SID) that would be used in | ||||
the MPLS Target stack TLV (Type 1), in MPLS Ping and Traceroute procedures. | ||||
</t> | (short title) | |||
</abstract> | LSP for SR EPE SIDs with MPLS | |||
</front> | Current: | |||
(title) | ||||
Label Switched Path (LSP) Ping/Traceroute for Segment Routing (SR) | ||||
Egress Peer Engineering (EPE) Segment Identifiers (SIDs) with MPLS | ||||
Data Planes | ||||
<middle> | (short title) | |||
<section title="Introduction" anchor='intro'> | LSP for SR EPE-SIDs with MPLS | |||
<t> Egress Peer Engineering (EPE) as defined in | --> | |||
<xref target ='RFC9087'/> is | ||||
an effective mechanism to select the egress peer link based on different criteri | ||||
a. | ||||
In this scenario, egress peers may belong to a completely different ownership. | ||||
The EPE-SIDs provide means to represent egress peer nodes, links, sets of links | ||||
and sets of nodes. | ||||
Many network | <title abbrev="LSP for SR EPE-SIDs with MPLS">Label Switched Path (LSP) Ping | |||
deployments have built their networks consisting of multiple Autonomous | /Traceroute for | |||
Systems, either for the ease of operations or as a result of network mergers and | Segment Routing (SR) Egress Peer Engineering (EPE) Segment Identifiers (SIDs | |||
acquisitions. | ) | |||
The inter-AS links connecting any two Autonomous Systems could be traffic-engine | with MPLS Data Planes</title> | |||
ered | <seriesInfo name="RFC" value="9703"/> | |||
using EPE-SIDs in this case, where there is single ownership but different AS | <author initials="S." surname="Hegde" fullname="Shraddha Hegde"> | |||
numbers. | <organization>Juniper Networks Inc.</organization> | |||
It is important to validate | <address> | |||
the control plane to forwarding plane synchronization for these SIDs so | <postal> | |||
that any anomaly can be detected easily by the network operator. | <street>Exora Business Park</street> | |||
<city>Bangalore</city> | ||||
<region>Karnataka</region> | ||||
<code>560103</code> | ||||
<country>India</country> | ||||
</postal> | ||||
<email>shraddha@juniper.net</email> | ||||
</address> | ||||
</author> | ||||
<author initials="M." surname="Srivastava" fullname="Mukul Srivastava"> | ||||
<organization>Juniper Networks Inc.</organization> | ||||
<address> | ||||
<email>msri@juniper.net</email> | ||||
</address> | ||||
</author> | ||||
<author initials="K." surname="Arora" fullname="Kapil Arora"> | ||||
<organization>Individual Contributor</organization> | ||||
<address> | ||||
<email>kapil.it@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="S." surname="Ninan" fullname="Samson Ninan"> | ||||
<organization>Ciena</organization> | ||||
<address> | ||||
<email>samson.cse@gmail.com</email> | ||||
</address> | ||||
</author> | ||||
<author initials="X." surname="Xu" fullname="Xiaohu Xu"> | ||||
<organization>China Mobile</organization> | ||||
<address> | ||||
<postal> | ||||
<city>Beijing</city> | ||||
<country>China</country> | ||||
</postal> | ||||
<email>xuxiaohu_ietf@hotmail.com </email> | ||||
</address> | ||||
</author> | ||||
<date year="2024" month="December"/> | ||||
<area>RTG</area> | ||||
<workgroup>mpls</workgroup> | ||||
<keyword>OAM</keyword> | ||||
<keyword>EPE</keyword> | ||||
<keyword>BGP-LS</keyword> | ||||
<keyword>BGP</keyword> | ||||
<keyword>SPRING</keyword> | ||||
<keyword>SDN</keyword> | ||||
<keyword>SID</keyword> | ||||
<abstract> | ||||
<t>Egress Peer Engineering (EPE) is an application of Segment Routing | ||||
(SR) that solves the problem of egress peer selection. The SR-based | ||||
BGP-EPE solution allows a centralized controller, e.g., a | ||||
Software-Defined Network (SDN) controller, to program any egress peer. | ||||
The EPE solution requires the node or the SDN controller to program 1) the | ||||
PeerNode Segment Identifier (SID) describing a session between two | ||||
nodes, 2) the PeerAdj SID describing the link or links that are | ||||
used by the sessions between peer nodes, and 3) the PeerSet SID | ||||
describing any connected interface to any peer in the related group. | ||||
This document provides new sub-TLVs for EPE-SIDs that are used in | ||||
the MPLS Target stack TLV (Type 1) in MPLS Ping and Traceroute | ||||
procedures.</t> | ||||
</abstract> | ||||
</front> | ||||
<middle> | ||||
<section anchor="intro" numbered="true" toc="default"> | ||||
<name>Introduction</name> | ||||
<t> Egress Peer Engineering (EPE), as defined in <xref target="RFC9087" | ||||
format="default"/>, is an effective mechanism that is used to select the e | ||||
gress peer | ||||
link based on different criteria. In this scenario, egress peers may | ||||
belong to a completely different ownership. The EPE-SIDs provide the | ||||
means to represent egress peer nodes, links, sets of links, and sets of | ||||
nodes. Many network deployments have built their networks consisting of | ||||
multiple Autonomous Systems (ASes) either for the ease of operations or as | ||||
a | ||||
result of network mergers and acquisitions. The inter-AS links | ||||
connecting any two ASes could be traffic-engineered using | ||||
EPE-SIDs in this case, where there is single ownership but different | ||||
AS numbers. It is important to validate the control | ||||
plane to forwarding plane synchronization for these SIDs so that any | ||||
anomaly can be easily detected by the network operator. EPE-SIDs may | ||||
also be used in an ingress Segment Routing (SR) policy <xref target="RFC92 | ||||
56" | ||||
format="default"/> to choose exit points where the remote AS has | ||||
a completely different ownership. This scenario is out of scope for this | ||||
document. | ||||
</t> | ||||
<figure anchor="reference_diagram"> | ||||
<name>Reference Diagram</name> | ||||
EPE-SIDs may also be used in ingress SR policy <xref target ='RFC9256'/>to choos | <!-- [rfced] FYI - In Figure 1, we updated "AS 2", "AS 3", and "AS 4" | |||
e exit points | to have no spaces in order to match "AS1" in the diagram and | |||
where the remote AS belongs to completely different | "AS2" and "AS3" in the subsequent text. Please let us know if | |||
ownership. This scenario is out of scope of this document. | there is any objection. | |||
</t> | ||||
<t> | AS 2 > AS2 | |||
<figure anchor="reference_diagram" title="Reference Diagram"> | AS 3 > AS3 | |||
<artwork> | AS 4 > AS4 | |||
--> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
+---------+ +------+ | +---------+ +------+ | |||
| | | | | | | | | | |||
| H B------D G | | H B------D G | |||
| | +---/| AS 2 |\ +------+ | | | +---/| AS2 |\ +------+ | |||
| |/ +------+ \ | |---L/8 | | |/ +------+ \ | |---L/8 | |||
A AS1 C---+ \| | | A AS1 C---+ \| | | |||
| |\\ \ +------+ /| AS 4 |---M/8 | | |\\ \ +------+ /| AS4 |---M/8 | |||
| | \\ +-E |/ +------+ | | | \\ +-E |/ +------+ | |||
| X | \\ | K | | X | \\ | K | |||
| | +===F AS 3 | | | | +===F AS3 | | |||
+---------+ +------+ | +---------+ +------+]]></artwork> | |||
</figure> | ||||
<t>In <xref target="reference_diagram" format="default"/>, EPE-SIDs are | ||||
configured on AS1 towards AS2 and AS3 and advertised in the Border | ||||
Gateway Protocol - Link State (BGP-LS) <xref target="RFC9086" | ||||
format="default"/>. In certain cases, the EPE-SIDs advertised by the | ||||
control plane may not be in synchronization with the label programmed in | ||||
the data plane. For example, on C, a PeerAdj SID could be advertised to | ||||
indicate it is for the link C->D. Due to some software anomaly, the | ||||
actual data forwarding on this PeerAdj SID could be happening over the | ||||
C->E link. If E had relevant data paths for further forwarding the | ||||
packet, this kind of anomaly would go unnoticed by the network operator. | ||||
A detailed example of a correctly programmed state and an incorrectly | ||||
programmed state along with a description of how the incorrect state can | ||||
be detected is described in <xref target="Appendix" format="default"/>. | ||||
A Forwarding Equivalence Class (FEC) definition for the EPE-SIDs will | ||||
detail the control plane association of the SID. The | ||||
data plane validation of the SID will be done during the MPLS traceroute | ||||
procedure. When there is a multi-hop External BGP (EBGP) session | ||||
between the ASBRs, a PeerNode SID is advertised, and the traffic | ||||
<bcp14>MAY</bcp14> be load-balanced between the interfaces connecting | ||||
the two nodes. In <xref target="reference_diagram" format="default"/>, | ||||
C and F could have a PeerNode SID advertised. When the Operations, | ||||
Administration, and Maintenance (OAM) packet is received on F, it needs | ||||
to be validated that the packet came from one of the two interfaces | ||||
connected to C. | ||||
</t> | ||||
<t> This document provides Target Forwarding Equivalence Class (FEC) | ||||
Stack TLV definitions for EPE-SIDs. This solution requires the | ||||
node constructing the target FEC stack to determine the types of | ||||
SIDs along the path of the LSP. Other procedures for MPLS Ping and | ||||
Traceroute, as defined in <xref target="RFC8287" sectionFormat="of" | ||||
section="7"/> and clarified in <xref target="RFC8690" format="default"/>, | ||||
are applicable for EPE-SIDs as well.</t> | ||||
</section> | ||||
<section anchor="operation" numbered="true" toc="default"> | ||||
<name>Theory of Operation</name> | ||||
<t><xref target="RFC9086" format="default"/> provides mechanisms to | ||||
advertise the EPE-SIDs in BGP-LS. | ||||
</artwork> | <!--[rfced] Please clarify this sentence. Are SR paths built using either | |||
</figure> | EPE-SIDs or PCEP extensions? Please let us know which option is preferred. | |||
In this reference diagram, EPE-SIDs are | ||||
configured on AS1 towards AS2 and AS3 and | ||||
advertised in BGP-LS <xref target="RFC9086"/>. | ||||
In certain cases the EPE-SIDs advertised by the control plane may not be in | ||||
synchronization with the label programmed in the data plane. For example, | ||||
on C a PeerAdj SID could be advertised to indicate it is for the link C->D. | ||||
Due to some software anomaly, the actual data forwarding on this PeerAdj SID | ||||
could be happening over the C->E link. If E had relevant data paths for fur | ||||
ther | ||||
forwarding the packet, this kind of anomaly will go unnoticed by the network | ||||
operator. | ||||
A detailed example of a correctly programmed state and an incorrectly progra | ||||
mmed | ||||
state along with a description of how the incorrect state can be detected | ||||
is | ||||
described in <xref target="APPENDIX"/>. | ||||
A FEC definition for the EPE-SIDs will define the details of the control | ||||
plane association of the SID. The data plane validation of the SID will | ||||
be done during the MPLS traceroute procedure. When there is a multi-hop EBG | ||||
P | ||||
session between the ASBRs, PeerNode SID is advertised, and the traffic MAY b | ||||
e | ||||
load-balanced between the interfaces connecting the two nodes. In the refer | ||||
ence | ||||
diagram, C and F could have a PeerNode-SID advertised. When the OAM packet | ||||
is | ||||
received on F, it needs to be validated that the packet came from one of | ||||
the two interfaces connected to C. | ||||
</t> | ||||
<t> This document provides Target Forwarding Equivalence Class (FEC) | ||||
stack TLV definitions for EPE-SIDs. This solution requires that the node | ||||
constructing the target FEC stack can | ||||
determine the type of the SIDs along the path of the | ||||
LSP. Other procedures for MPLS Ping and Traceroute | ||||
as defined in <xref target="RFC8287"/> section 7 and clarified by <xref target | ||||
="RFC8690"/> | ||||
are applicable for EPE-SIDs as well.</t> | ||||
</section> | Original: | |||
These EPE-SIDs may be used to build Segment Routing paths as described | ||||
in [I-D.ietf-idr-segment-routing-te-policy] or using Path Computation | ||||
Element Protocol (PCEP) extensions as defined in [RFC8664]. | ||||
<section title="Theory of Operation" anchor='operation'> | Perhaps A: | |||
<t><xref target ='RFC9086'/> provides | These EPE-SIDs may be used to build SR paths as described | |||
mechanisms to advertise the EPE-SIDs in BGP-LS. These EPE-SIDs | in [SR-TE-POLICY]], or Path Computation Element Protocol (PCEP) | |||
may be used to build Segment Routing paths as | extensions as defined in [RFC8664] may be used. | |||
described in | or | |||
<xref target ='I-D.ietf-idr-segment-routing-te-policy'/> or | ||||
using Path Computation Element Protocol (PCEP) extensions as defined | ||||
in <xref target="RFC8664"/>. Data plane monitoring for such paths which | ||||
consist of EPE-SIDs will use extensions defined in this document to | ||||
build the Target FEC stack TLV. The MPLS Ping and Traceroute procedures | ||||
MAY be initiated by the head-end of the Segment Routing path or a centralized | ||||
topology-aware data plane monitoring system as described in | ||||
<xref target="RFC8403"/>. The extensions in | ||||
<xref target ='I-D.ietf-idr-segment-routing-te-policy'/> and | ||||
<xref target="RFC8664"/> do not define how to carry the details | ||||
of the SID that can be used to construct the FEC. Such | ||||
extensions are out of the scope for this document. | ||||
The node initiating the data plane monitoring | ||||
may acquire the details of EPE-SIDs through BGP-LS advertisements as | ||||
described in <xref target ='RFC9086'/>. There may be other | ||||
possible mechanisms to learn the definition of the SID | ||||
from controller. Details of such mechanisms are | ||||
out of scope for this document.</t> | ||||
<t>The EPE-SIDs are advertised for inter-AS links which run EBGP sessions. | ||||
<xref target ='RFC9086'/> | ||||
does not define the detailed procedures to operate EBGP sessions in a scenario w | ||||
ith | ||||
unnumbered interfaces. Therefore, these scenarios are | ||||
out of scope for this document. | ||||
Anycast and multicast addresses are not in the scope of this document. | ||||
During AS migration scenario procedures | Perhaps B: | |||
described in <xref target="RFC7705"/> may be in force. In these scenarios, | SR paths are built using these EPE-SIDs as described in [SR-TE-POLICY] | |||
if the local and remote AS fields in the FEC | or Path Computation Element Protocol (PCEP) extensions as defined in | |||
as described in <xref target="FEC_definitions"/> carries the | [RFC8664]. | |||
globally configured ASN and not the "local AS" as defined in <xref target="RFC77 | --> | |||
05"/>, | ||||
the FEC validation procedures may fail. </t> | ||||
<t> As described in <xref target="intro"/>, this document defines FEC stack TLVs | ||||
for EPE-SIDs, that can be used in detecting MPLS data plane | ||||
failures <xref target="RFC8029"/>. This mechanism applies to paths created acros | ||||
s | ||||
across ASes of co-operating administrations. If the ping or traceroute packet | ||||
enters a non co-operating AS domain, it might be dropped by the routers in the | ||||
non co-operating domain. Although complete path validation cannot be done across | ||||
, | ||||
non co-operating domains, it still provides useful information that the | ||||
ping/traceroute packet entered a non co-operating domain.</t> | ||||
</section> | These EPE-SIDs may be used to build | |||
<section title="Requirements Language"> | SR paths as described in <xref | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | target="I-D.ietf-idr-segment-routing-te-policy" format="default"/> or | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | using Path Computation Element Protocol (PCEP) extensions as defined in | |||
"OPTIONAL" in this document are to be interpreted as described in BCP 14, | <xref target="RFC8664" format="default"/>. Data plane monitoring for | |||
<xref target="RFC2119"/>, <xref target="RFC8174"/> when, and | such paths that consist of EPE-SIDs will use extensions defined in this | |||
only when, they appear in all capitals, as shown here. </t> | document to build the Target FEC stack TLV. The MPLS Ping and | |||
</section> | Traceroute procedures <bcp14>MAY</bcp14> be initiated by the head-end of | |||
the SR path or a centralized topology-aware data plane | ||||
monitoring system, as described in <xref target="RFC8403" | ||||
format="default"/>. | ||||
<section anchor='FEC_definitions' title='FEC Definitions'> | <!--[rfced] Would it be correct to say that the extensions do not | |||
define how to "acquire" or "acquire and carry" the details of the | ||||
SID, or is the intension to only mention "carry"? We ask because | ||||
the next few sentences discuss how the node can "acquire the | ||||
details". | ||||
<t> | Original: | |||
Three new sub-TLVs are defined for the Target FEC Stack TLV (Type 1), | The extensions in [I-D.ietf-idr-segment-routing-te-policy] and | |||
the Reverse-Path Target FEC Stack TLV (Type 16), and the Reply Path | [RFC8664] do not define how to carry the details of the SID | |||
TLV (Type 21).</t> | that can be used to construct the FEC. | |||
<figure anchor="sub_tlv" title="New sub-TLV types"> | ||||
<artwork> | ||||
Sub-Type Sub-TLV Name | ||||
-------- --------------- | ||||
TBD1 PeerAdj SID Sub-TLV | ||||
TBD2 PeerNode SID Sub-TLV | ||||
TBD3 PeerSet SID Sub-TLV | ||||
</artwork> | Perhaps: | |||
</figure> | The extensions in [SR-TE-POLICY] and [RFC8664] do not define how | |||
to acquire and carry the details of the SID that can be used to | ||||
construct the FEC. | ||||
--> | ||||
<section anchor='peer_node_sid' title='PeerNode SID Sub-TLV'> | The extensions in <xref | |||
target="I-D.ietf-idr-segment-routing-te-policy" format="default"/> and | ||||
<xref target="RFC8664" format="default"/> do not define how to carry the | ||||
details of the SID that can be used to construct the FEC. Such | ||||
extensions are out of scope for this document. The node initiating | ||||
the data plane monitoring may acquire the details of EPE-SIDs through | ||||
BGP-LS advertisements, as described in <xref target="RFC9086" | ||||
format="default"/>. There may be other possible mechanisms that can be us | ||||
ed to learn the | ||||
definition of the SID from the controller. Details of such mechanisms are | ||||
out of scope for this document.</t> | ||||
<t>The EPE-SIDs are advertised for inter-AS links that run EBGP | ||||
sessions. <xref target="RFC9086" format="default"/> does not define the | ||||
detailed procedures of how to operate EBGP sessions in a scenario with | ||||
unnumbered interfaces. Therefore, these scenarios are out of scope for | ||||
this document. Anycast and multicast addresses are not in the scope of | ||||
this document. During the AS migration scenario, procedures described in | ||||
<xref target="RFC7705" format="default"/> may be in force. In these | ||||
scenarios, if the local and remote AS fields in the FEC (as described in | ||||
<xref target="FEC_definitions" format="default"/>) carry the globally | ||||
configured Access Service Network (ASN) and not the "local AS" (as defined | ||||
in <xref | ||||
target="RFC7705" format="default"/>), then the FEC validation procedures m | ||||
ay | ||||
fail. </t> | ||||
<t>As described in <xref target="intro" format="default"/>, this | ||||
document defines FEC stack TLVs for EPE-SIDs that can be used in | ||||
detecting MPLS data plane failures <xref target="RFC8029" | ||||
format="default"/>. This mechanism applies to paths created across | ||||
ASes of cooperating administrations. If the ping or traceroute | ||||
packet enters a non-cooperating AS domain, it might be dropped by the | ||||
routers in the non-cooperating domain. Although a complete path | ||||
validation cannot be done across non-cooperating domains, it still | ||||
provides useful information that the ping or traceroute packet entered a | ||||
non-cooperating domain.</t> | ||||
</section> | ||||
<section numbered="true" toc="default"> | ||||
<name>Requirements Language</name> | ||||
<t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | ||||
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | ||||
to be interpreted as described in BCP 14, <xref target="RFC2119" | ||||
format="default"/>, <xref target="RFC8174" format="default"/> when, and | ||||
only when, they appear in all capitals, as shown here. </t> | ||||
</section> | ||||
<section anchor="FEC_definitions" numbered="true" toc="default"> | ||||
<name>FEC Definitions</name> | ||||
<t> In this document, three new sub-TLVs are defined for the Target FEC St | ||||
ack TLV (Type | ||||
1), the Reverse-Path Target FEC Stack TLV (Type 16), and the Reply Path | ||||
TLV (Type 21).</t> | ||||
<figure anchor="peer_node_sid_tlv" title="PeerNode SID Sub-TLV"> | <!--[rfced] It appears that Table 1 (Section 4) and Table 2 (Section 6) | |||
are the same. Would you like to remove Table 1 and add a link to | ||||
Table 2 (which would then become Table 1) as shown below? | ||||
<artwork> | Current: | |||
In this document, three new sub-TLVs are defined for the Target FEC | ||||
Stack TLV (Type 1), the Reverse-Path Target FEC Stack TLV (Type 16), | ||||
and the Reply Path TLV (Type 21). | ||||
0 1 2 3 | - Table 1 - | |||
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 = TBD2 | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local BGP router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
</artwork> | Perhaps: | |||
</figure> | In this document, three new sub-TLVs are defined for the Target FEC | |||
<t>Type : 2 octets </t> | Stack TLV (Type 1), the Reverse-Path Target FEC Stack TLV (Type 16), | |||
<t> Value:TBD2</t> | and the Reply Path TLV (Type 21); see Table 1. | |||
<t>Length : 2 octets </t> | --> | |||
<t> Value: 16 | ||||
</t> | ||||
<t>Local AS Number : 4 octets</t> | <table anchor="sub_tlv" align="center"> | |||
<name>New Sub-TLV Types</name> | ||||
<thead> | ||||
<tr> | ||||
<th>Sub-Type</th> | ||||
<th>Sub-TLV Name</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>38</td> | ||||
<td>PeerAdj SID</td> | ||||
</tr> | ||||
<tr> | ||||
<td>39</td> | ||||
<td>PeerNode SID</td> | ||||
</tr> | ||||
<tr> | ||||
<td>40</td> | ||||
<td>PeerSet SID</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t>The unsigned integer representing the AS number <xref | <section anchor="peer_node_sid" numbered="true" toc="default"> | |||
target ='RFC6793'/> | <name>PeerNode SID Sub-TLV</name> | |||
of the AS to which the PeerNode SID advertising | <figure anchor="peer_node_sid_tlv"> | |||
node belongs. If Confederations <xref target ='RFC5065'/> are in | <name>PeerNode SID Sub-TLV</name> | |||
use, and if the | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
remote node is a member of a different Member-AS within the local | 0 1 2 3 | |||
Confederation, this is the Member-AS Number inside the Confederat | 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 | |||
ion | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
and not the Confederation Identifier.</t> | |Type = 39 | Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local BGP Router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> | ||||
</figure> | ||||
<t>Remote AS Number : 4 octets</t> | <dl> | |||
<dt>Type:</dt><dd>2 octets</dd> | ||||
<dt>Value:</dt><dd>39</dd> | ||||
<dt>Length:</dt><dd>2 octets</dd> | ||||
<dt>Value:</dt><dd>16</dd> | ||||
<dt>Local AS Number:</dt><dd>4 octets. The unsigned integer | ||||
representing the AS number <xref target="RFC6793" format="default"/> | ||||
of the AS to which the PeerNode SID advertising node belongs. If | ||||
Confederations <xref target="RFC5065" format="default"/> are in use, | ||||
and if the remote node is a member of a different Member-AS within | ||||
the local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</dd> | ||||
<dt>Remote AS Number:</dt><dd>4 octets. The unsigned integer | ||||
representing the AS number <xref target="RFC6793" format="default"/> | ||||
of the AS of the remote node for which the PeerNode SID is | ||||
advertised. If Confederations <xref target="RFC5065" | ||||
format="default"/> are in use, and if the remote node is a member of | ||||
a different Member-AS within the local Confederation, this is the | ||||
Member-AS Number inside the Confederation and not the Confederation | ||||
Identifier.</dd> | ||||
<dt>Local BGP Router ID:</dt><dd>4 octets. Unsigned integer | ||||
representing the BGP Identifier of the PeerNode SID advertising node | ||||
as defined in <xref target="RFC4271" format="default"/> and <xref | ||||
target="RFC6286" format="default"/>. </dd> | ||||
<dt>Remote BGP Router ID:</dt><dd>4 octets. Unsigned integer | ||||
representing the BGP Identifier of the remote node as defined in | ||||
<xref target="RFC4271" format="default"/> and <xref target="RFC6286" | ||||
format="default"/>. </dd> | ||||
</dl> | ||||
<t>The unsigned integer representing the AS number <xref | <t>When there is a multi-hop EBGP session between two ASBRs, a | |||
target ='RFC6793'/> | PeerNode SID is advertised for this session, and traffic can be | |||
of the AS of the remote node for which the | load-balanced across these interfaces. An EPE controller that performs | |||
PeerNode SID is advertised. If Confederations <xref target ='RFC5 | bandwidth management for these links should be aware of the links on | |||
065'/> are in use, | which the traffic will be load-balanced. | |||
and if the remote node is a member of a different Member-AS withi | ||||
n | ||||
the local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</t> | ||||
<t>Local BGP Router ID : 4 octets </t> | <!--[rfced] Is "the OAM packet will be sent out" an example of what is | |||
<t>unsigned integer representing the BGP Identifier | specified? We updated this sentence as reflected below; if that | |||
of the PeerNode SID advertising node as defined in | is not correct, please let us know. | |||
<xref target ='RFC4271'/> and <xref target ='RFC6286'/>. | ||||
</t> | ||||
<t>Remote BGP Router ID : 4 octets</t> | ||||
<t>unsigned integer representing | ||||
the BGP Identifier of the remote node as defined in | ||||
<xref target ='RFC4271'/> and <xref target ='RFC6286'/>. | ||||
</t> | ||||
<t>When there is a multi-hop EBGP session between two ASBRs, PeerNode SID i | Original: | |||
s | As per [RFC8029], the node advertising the EPE SIDs will send | |||
advertised for this session and traffic can be | Downstream Detailed Mapping (DDMAP TLV) specifying the details | |||
load balanced across these interfaces. | of nexthop interfaces, the OAM packet will be sent out. | |||
An EPE controller that does bandwidth management for these links should be | ||||
aware of the links on which the traffic will be load-balanced. As per | ||||
<xref target ='RFC8029'/>, the node advertising the EPE SIDs will send | ||||
Downstream Detailed Mapping TLV (DDMAP TLV) specifying the details of nextho | ||||
p | ||||
interfaces, the OAM packet will be sent out. Based on this information | ||||
controller MAY choose to verify the actual forwarding state with the topolog | ||||
y | ||||
information controller has. On the router, the validation procedures will i | ||||
nclude, | ||||
received DDMAP validation as specified in <xref target ='RFC8029'/> to verif | ||||
y the | ||||
control and forwarding state synchronization on the two routers. Any discrep | ||||
ancies | ||||
between controller's state and forwarding state will not be detected by the | ||||
procedures described in the document.</t> | ||||
</section> | Current: | |||
As per [RFC8029], the node advertising the EPE-SIDs will send a | ||||
Downstream Detailed Mapping (DDMAP) TLV specifying the details | ||||
of the next-hop interfaces, e.g., when the OAM packet will be | ||||
sent out. | ||||
--> | ||||
<section anchor='peer_adj_sid' title='PeerAdj SID Sub-TLV'> | As per <xref | |||
target="RFC8029" format="default"/>, the node advertising the EPE-SIDs | ||||
will send a Downstream Detailed Mapping (DDMAP) TLV specifying the | ||||
details of the next-hop interfaces, e.g, when the OAM packet will be sen | ||||
t | ||||
out. Based on this information, the controller <bcp14>MAY</bcp14> | ||||
choose to verify the actual forwarding state with the topology | ||||
information that the controller has. On the router, the validation | ||||
procedures will include the received DDMAP validation, as specified in | ||||
<xref target="RFC8029" format="default"/>, to verify the control state | ||||
and the forwarding state synchronization on the two routers. Any | ||||
discrepancies between the controller's state and the forwarding state | ||||
will not be detected by the procedures described in this document.</t> | ||||
</section> | ||||
<section anchor="peer_adj_sid" numbered="true" toc="default"> | ||||
<name>PeerAdj SID Sub-TLV</name> | ||||
<figure anchor="peer_adj_sid_tlv"> | ||||
<name>PeerAdj SID Sub-TLV</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
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 = 38 | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Adj-Type | RESERVED | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local BGP Router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local Interface Address (4/16 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote Interface Address (4/16 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> | ||||
</figure> | ||||
<figure anchor="peer_adj_sid_tlv" title="PeerAdj SID Sub-TLV"> | <dl> | |||
<artwork> | <dt>Type:</dt><dd>2 octets </dd> | |||
<dt>Value:</dt><dd>38</dd> | ||||
<dt>Length:</dt><dd>2 octets</dd> | ||||
<dt>Value:</dt><dd>Variable based on the IPv4/IPv6 interface | ||||
address. Length excludes the length of the Type and Length fields. For | ||||
IPv4 interface addresses, the length will be 28 octets. In the case of | ||||
an | ||||
IPv6 address, the length will be 52 octets.</dd> | ||||
<dt>Adj-Type:</dt><dd>1 octet</dd> | ||||
<dt>Value:</dt><dd>Set to 1 when the Adjacency Segment is IPv4. Set to | ||||
2 when the Adjacency Segment is IPv6.</dd> | ||||
<dt>RESERVED:</dt><dd>3 octets. <bcp14>MUST</bcp14> be zero when | ||||
sending and ignored on receiving.</dd> | ||||
<dt>Local AS Number:</dt><dd>4 octets. The unsigned integer | ||||
representing the AS number <xref target="RFC6793" format="default"/> | ||||
of the AS to which the PeerAdj SID advertising node belongs. If | ||||
Confederations <xref target="RFC5065" format="default"/> are in use, | ||||
and if the remote node is a member of a different Member-AS within the | ||||
local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</dd> | ||||
<dt>Remote AS Number:</dt><dd>4 octets. The unsigned integer | ||||
representing the AS number <xref target="RFC6793" format="default"/> of | ||||
the remote node's AS for which the PeerAdj SID is advertised. If | ||||
Confederations <xref target="RFC5065" format="default"/> are in use, | ||||
and if the remote node is a member of a different Member-AS within the | ||||
local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</dd> | ||||
<dt>Local BGP Router ID:</dt><dd>4 octets. The unsigned integer | ||||
representing the BGP Identifier of the PeerAdj SID advertising node as | ||||
defined in <xref target="RFC4271" format="default"/> and <xref | ||||
target="RFC6286" format="default"/>.</dd> | ||||
<dt>Remote BGP Router ID:</dt><dd>4 octets. Unsigned integer | ||||
representing the BGP Identifier of the remote node as defined in <xref | ||||
target="RFC4271" format="default"/> and <xref target="RFC6286" | ||||
format="default"/>.</dd> | ||||
0 1 2 3 | <!--[rfced] We believe that the slash indicates "or" in these | |||
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 | instances, so we updated accordingly for clarity. If that is not | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | correct or desired, please let us know. | |||
|Type = TBD1 | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Adj-Type | RESERVED | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local BGP router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local Interface address (4/16 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote Interface address (4/16 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
</artwork> | Original: | |||
</figure> | Local Interface Address :4 octets/16 octets | |||
<t>Type : 2 octets </t> | ||||
<t> Value: TBD1</t> | ||||
<t>Length : 2 octets</t> | Remote Interface Address :4 octets/16 octets | |||
<t> Value: variable based on IPv4/IPv6 interfac | ||||
e address. | ||||
Length excludes the length of Type and Length | ||||
fields.For IPv4 interface addresses length will | ||||
be 28 octets. In case of IPv6 address length will | ||||
be | ||||
52 octets.</t> | ||||
<t>Adj-Type : 1 octet</t> | ||||
<t> Value: Set to 1 when the Adjacency Segment | ||||
is IPv4 | ||||
Set to 2 when the Adjacency Segment is IPv6 | ||||
</t> | ||||
<t> RESERVED : 3 octets. MUST be zero when sending, and ig | ||||
nored on receiving.</t> | ||||
<t>Local AS Number : 4 octets</t> | ||||
<t>The unsigned integer representing the AS number <xref target ='RFC679 | ||||
3'/> of the AS to which the PeerAdj SID advertising | ||||
node belongs. If Confederations <xref target ='RFC5065'/> are in | ||||
use, and if the | ||||
remote node is a member of a different Member-AS within the local | ||||
Confederation, this is the Member-AS Number inside the Confederat | ||||
ion | ||||
and not the Confederation Identifier.</t> | ||||
<t>Remote AS Number : 4 octets</t> | ||||
<t>The unsigned integer representing the AS number<xref target ='RFC | ||||
6793'/> of the AS of the remote node for which the | ||||
PeerAdj SID is advertised. If Confederations <xref target ='RFC50 | ||||
65'/> are in use, | ||||
and if the remote node is a member of a different Member-AS withi | ||||
n | ||||
the local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</t> | ||||
<t>Local BGP Router ID : 4 octets </t> | ||||
<t> unsigned integer representing the | ||||
BGP Identifier of the PeerAdj SID advertising node as def | ||||
ined in | ||||
<xref target ='RFC4271'/> and <xref target ='RFC6286'/>. | ||||
</t> | ||||
<t>Remote BGP Router ID : 4 octets </t> | ||||
<t> unsigned integer representing | ||||
the BGP Identifier of the remote node | ||||
as defined in <xref target ='RFC4271'/> and <xref target ='RFC628 | ||||
6'/>. </t> | ||||
<t>Local Interface Address :4 octets/16 octets</t> | ||||
<t>In case of PeerAdj SID, Local interface address corresponding | ||||
to the PeerAdj SID should be specified in this field. | ||||
For IPv4,this field is 4 octets; for IPv6, this field is 16 | ||||
octets. | ||||
Link-local IPv6 addresses are not in the scope of this d | ||||
ocument.</t> | ||||
<t>Remote Interface Address :4 octets/16 octets</t> | Current: | |||
<t>In case of PeerAdj SID Remote interface address corresponding | Local Interface Address: 4 octets or 16 octets | |||
to the PeerAdj SID should be apecified in this field. For IPv4, | ||||
this field is 4 octets; for IPv6, this field is 16 | ||||
octets. | ||||
Link-local IPv6 addresses are not in the scope of this d | ||||
ocument..</t> | ||||
<t><xref target ='RFC9086'/> mandates sending | Remote Interface Address: 4 octets or 16 octets | |||
local interface ID and remote interface ID in the Link Descriptors and a | --> | |||
llows | ||||
a value of 0 in the remote descriptors. It is useful to validate the | ||||
incoming interface for an OAM packet and if the remote descriptor is 0 | ||||
this validation is not possible. | ||||
<xref target ='RFC9086'/> allows optional | ||||
link descriptors of local and remote interface addresses as | ||||
described in section 4.2. This document RECOMMENDs sending these option | ||||
al | ||||
descriptors and using them to validate incoming interface. When these | ||||
local and remote interface addresses are not available, an ingress | ||||
node can send 0 in the local and/or remote interface address field. | ||||
The receiver SHOULD skip the validation for the incoming interface | ||||
if the address field contains 0.</t> | ||||
</section> | <dt>Local Interface Address:</dt><dd>4 octets or 16 octets. In the case | |||
of | ||||
PeerAdj SID, the Local interface address corresponding to the PeerAdj SI | ||||
D | ||||
should be specified in this field. For IPv4, this field is 4 octets; | ||||
for IPv6, this field is 16 octets. Link-local IPv6 addresses are not | ||||
in the scope of this document.</dd> | ||||
<dt>Remote Interface Address:</dt><dd>4 octets or 16 octets. In the | ||||
case of PeerAdj SID, the Remote interface address corresponding to the | ||||
PeerAdj SID should be specified in this field. For IPv4, this field | ||||
is 4 octets; for IPv6, this field is 16 octets. Link-local IPv6 | ||||
addresses are not in the scope of this document.</dd> | ||||
</dl> | ||||
<section anchor='peer_set_sid' title='PeerSet SID Sub-TLV'> | <t><xref target="RFC9086" format="default"/> mandates sending a local | |||
<figure anchor="peer_set_sid_tlv" title="PeerSet SID Sub-TLV"> | interface ID and remote interface ID in the Link Descriptors and | |||
allows a value of 0 in the remote descriptors. It is useful to | ||||
validate the incoming interface for an OAM packet, but if the remote | ||||
descriptor is 0, this validation is not possible. | ||||
<artwork> | <!-- [rfced] FYI - For conciseness, we updated this sentence as | |||
follows. Please let us know if there is any objection. | ||||
0 1 2 3 | Original: | |||
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 | [RFC9086] allows optional link descriptors of local and | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | remote interface addresses as described in section 4.2. | |||
|Type = TBD3 | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local BGP router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| No.of elements in set | Reserved | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++ | ||||
One element in set consists of below details | Current: | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Optional link descriptors of local and remote interface | |||
| Remote AS Number (4 octets) | | addresses are allowed as described in Section 4.2 of [RFC9086]. | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | --> | |||
| Remote BGP Router ID (4 octets) | | ||||
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++ | ||||
</artwork> | Optional link descriptors | |||
</figure> | of local and remote interface addresses are allowed as described in <xre | |||
<t>Type : 2 octets </t> | f | |||
<t> Value: TBD3</t> | target="RFC9086" sectionFormat="of" section="4.2"/>. | |||
<t>Length : 2 octets </t> | ||||
<t> Value: Expressed in octets and variable base | ||||
d on the number of | ||||
elements in the set. The length field | ||||
does not include the length of | ||||
Type and Length fields.</t> | ||||
<t>Local AS Number :4 octets </t> | <!-- [rfced] FYI - Since "RECOMMENDED", not "RECOMMENDS", is a BCP 14 | |||
<t>The unsigned integer representing the AS number <xref target ='RFC | key word, we rephrased the text as shown below. | |||
6793'/> of the AS to which the PeerSet SID advertising | ||||
node belongs. If Confederations <xref target ='RFC5065'/> are in | ||||
use, and if the | ||||
remote node is a member of a different Member-AS within the local | ||||
Confederation, this is the Member-AS Number inside the Confederat | ||||
ion | ||||
and not the Confederation Identifier.</t> | ||||
<t>Local BGP Router ID : 4 octets </t> | ||||
<t> unsigned integer representing | ||||
the BGP Identifier of the PeerSet SID advertising node as defined in | ||||
<xref target ='RFC4271'/> and <xref target ='RFC6286'/>. | ||||
</t> | ||||
<t>No.of elements in set: 2 octets</t> | ||||
<t> The number of remote ASes over | ||||
which the set SID performs load balancin | ||||
g.</t> | ||||
<t> Reserved : 2 octets. MUST be zero when sent and ignored when | ||||
received.</t> | ||||
<t>Remote AS Number : 4 octets </t> | Original: | |||
<t>The unsigned integer representing the AS number <xref target ='RF | This document RECOMMENDs sending these optional descriptors and using | |||
C6793'/> of the AS of the remote node for which the | them to validate incoming interface. | |||
PeerSet SID is advertised. If Confederations <xref target ='RFC50 | ||||
65'/> are in use, | ||||
and if the remote node is a member of a different Member-AS withi | ||||
n | ||||
the local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</t> | ||||
<t>Remote BGP Router ID : 4 octets </t> | Current: | |||
<t>unsigned integer representing | In this document, it is RECOMMENDED to send these optional descriptors | |||
the BGP Identifier of the remote node | and use them to validate incoming interfaces. | |||
as defined in <xref target ='RFC4271'/> and <xref target | --> | |||
='RFC6286'/>. </t> | ||||
<t>PeerSet SID may be associated with a number of PeerNode | In this document, it is | |||
SIDs and PeerAdj SIDs. The remote AS number and the Router ID of each o | <bcp14>RECOMMENDED</bcp14> to send these optional descriptors and use th | |||
f these PeerNode SIDs | em to | |||
PeerAdj SIDs MUST be included in the FEC.</t> | validate incoming interfaces. When these local and remote interface | |||
addresses are not available, an ingress node can send 0 in the local | ||||
and/or remote interface address field. The receiver | ||||
<bcp14>SHOULD</bcp14> skip the validation for the incoming interface | ||||
if the address field contains 0.</t> | ||||
</section> | ||||
<section anchor="peer_set_sid" numbered="true" toc="default"> | ||||
</section> | <!--[rfced] Is it intentional that instances of "No.of" do not contain | |||
a space? Please let us know if this should remain as is or if a | ||||
space can be added (e.g., "No. of"). Note that there are seven | ||||
occurrences. | ||||
</section> | Two examples (see the text for more): | |||
<section anchor="validation" title="EPE-SID FEC validation"> | Original: | |||
<t> | No.of elements in set | |||
When a remote ASBR of the EPE-SID advertisement receives the MPLS | ||||
OAM packet with top FEC being the EPE-SID, | ||||
it MUST perform validity checks on the | ||||
content of the EPE-SID FEC sub-TLV. | ||||
The basic length check should be performed on the received FEC. | ||||
<figure anchor="length_check" title="Length Validation"> | Length = (20 + No.of IPv4 interface pairs * 8 | |||
<artwork> | Perhaps: | |||
No. of elements in set | ||||
Length = (20 + No. of IPv4 interface pairs * 8 | ||||
--> | ||||
<name>PeerSet SID Sub-TLV</name> | ||||
<figure anchor="peer_set_sid_tlv"> | ||||
<name>PeerSet SID Sub-TLV</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
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 = 40 | Length | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Local BGP Router ID (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| No.of elements in set | Reserved | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
One element in set consists of the details below | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote AS Number (4 octets) | | ||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| Remote BGP Router ID (4 octets) | | ||||
</figure> | ||||
<dl> | ||||
<dt>Type:</dt><dd>2 octets</dd> | ||||
<dt>Value:</dt><dd>40</dd> | ||||
<dt>Length:</dt><dd>2 octets</dd> | ||||
<!--[rfced] Should "variable" be singular (option A) or plural | ||||
(option B) in the following sentence? | ||||
Original: | ||||
Value: Expressed in octets and variable based on the number of | ||||
elements in the set. | ||||
Perhaps A: | ||||
Value: Expressed in octets and a variable based on the number of | ||||
elements in the set. | ||||
or | ||||
Perhaps B: | ||||
Value: Expressed in octets and variables based on the number of | ||||
elements in the set. | ||||
--> | ||||
<dt>Value:</dt><dd>Expressed in octets and variable based on the | ||||
number of elements in the set. The length field does not include the | ||||
length of Type and Length fields.</dd> | ||||
<dt>Local AS Number:</dt><dd>4 octets. The unsigned integer | ||||
representing the AS number <xref target="RFC6793" format="default"/> | ||||
of the AS to which the PeerSet SID advertising node belongs. If | ||||
Confederations <xref target="RFC5065" format="default"/> are in use, | ||||
and if the remote node is a member of a different Member-AS within the | ||||
local Confederation, this is the Member-AS Number inside the | ||||
Confederation and not the Confederation Identifier.</dd> | ||||
<dt>Local BGP Router ID:</dt><dd>4 octets. The unsigned integer | ||||
representing the BGP Identifier of the PeerSet SID advertising node, as | ||||
defined in <xref target="RFC4271" format="default"/> and <xref | ||||
target="RFC6286" format="default"/>. </dd> | ||||
<dt>No.of elements in set:</dt><dd>2 octets. The number of remote | ||||
ASes over which the set SID performs load-balancing.</dd> | ||||
<dt>Reserved:</dt><dd>2 octets. <bcp14>MUST</bcp14> be zero when sent | ||||
and ignored when received.</dd> | ||||
<dt>Remote AS Number:</dt><dd>4 octets. The unsigned integer | ||||
representing the AS number <xref target="RFC6793" format="default"/> | ||||
of the remote node's AS for which the PeerSet SID is | ||||
advertised. If Confederations <xref target="RFC5065" | ||||
format="default"/> are in use, and if the remote node is a member of a | ||||
different Member-AS within the local Confederation, this is the | ||||
Member-AS Number inside the Confederation and not the Confederation | ||||
Identifier.</dd> | ||||
<dt>Remote BGP Router ID:</dt><dd>4 octets. The unsigned integer | ||||
representing the BGP Identifier of the remote node as defined in <xref | ||||
target="RFC4271" format="default"/> and <xref target="RFC6286" | ||||
format="default"/>. </dd> | ||||
</dl> | ||||
<t>PeerSet SID may be associated with a number of PeerNode | ||||
SIDs and PeerAdj SIDs. The remote AS number and the Router ID of each o | ||||
f these PeerNode SIDs and PeerAdj SIDs <bcp14>MUST</bcp14> be included in the FE | ||||
C.</t> | ||||
</section> | ||||
</section> | ||||
<section anchor="validation" numbered="true" toc="default"> | ||||
<name>EPE-SID FEC Validation</name> | ||||
<t>When a remote ASBR of the EPE-SID advertisement receives the MPLS OAM | ||||
packet with the top FEC being the EPE-SID, it <bcp14>MUST</bcp14> | ||||
perform validity checks on the content of the EPE-SID FEC sub-TLV. The | ||||
basic length check should be performed on the received FEC.</t> | ||||
<figure anchor="length_check"> | ||||
<name>Length Validation</name> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
PeerAdj SID | PeerAdj SID | |||
----------- | ----------- | |||
if Adj type = 1 Length should be 28 octets | If Adj type = 1, Length should be 28 octets | |||
If Adj type =2 Length should be 52 octets | If Adj type = 2, Length should be 52 octets | |||
PeerNode SID | PeerNode SID | |||
------------- | ------------- | |||
Length = ( 20 + No.of IPv4 interface pairs * 8 + | Length = (20 + No.of IPv4 interface pairs * 8 + | |||
No.of IPv6 interface pairs * 32 ) octets | No.of IPv6 interface pairs * 32) octets | |||
PeerSet SID | PeerSet SID | |||
----------- | ----------- | |||
Length = (9 + No.of elements in the set * | Length = (9 + No.of elements in the set * | |||
(8 + No.of IPv4 interface pairs * 8 + | (8 + No.of IPv4 interface pairs * 8 + | |||
No.of IPv6 interface pairs * 32)) octets | No.of IPv6 interface pairs * 32) octets]]></artwork> | |||
</figure> | ||||
</artwork> | <t>If a malformed FEC sub-TLV is received, then a return code of 1, | |||
</figure> | "Malformed echo request received", as defined in <xref target="RFC8029" | |||
</t> | format="default"/> <bcp14>MUST</bcp14> be sent. The section below is | |||
<t> | appended to the procedure given in step 4a of <xref target="RFC8287" | |||
If a malformed FEC sub-TLV | sectionFormat="of" section="7.4"/>. | |||
is received, then a return code of | </t> | |||
1, "Malformed echo request received" as defined in <xref target="RFC8029"/> | ||||
MUST be sent. The below section is appended to the procedure given in Secti | ||||
on 7.4 | ||||
point 4a of <xref target="RFC8287"/>. | ||||
</t> | ||||
<section anchor="fec_validation" title="EPE-SID FEC validiation"> | ||||
<t> | ||||
<t> Segment Routing IGP-Prefix, IGP-Adjacency SID and EPE-SID Validation | <!-- [rfced] We notice that the titles of Sections 5 and 5.1 are the | |||
: | same. How may we update these to avoid confusion? Is Section 5.1 | |||
Receiving node term used in this section implies the node that receives | perhaps the example validation, e.g., "EPE-SID FEC Validation | |||
OAM message | Examples" (option A) or "Segment Routing IGP-Prefix, IGP-Adjacency | |||
with the FEC stack TLV.</t> | SID, and EPE-SID Validation Examples (option B)? | |||
<artwork> | ||||
Else, if the Label-stack-depth is 0 and the Target FEC Stack sub-TLV | ||||
at FEC-stack-depth is TBD1 (PeerAdj SID sub-TLV), { | ||||
Set the Best-return-code to 10, "Mapping for this FEC is not | Original: | |||
the given label at stack-depth if any below | 5. EPE-SID FEC validation | |||
conditions fail: | 5.1. EPE-SID FEC validation | |||
- Validate that the receiving node's BGP Local AS matches | Perhaps A: | |||
with the remote AS field in the received PeerAdj SID | 5. EPE-SID FEC Validation | |||
FEC sub-TLV. | 5.1. EPE-SID FEC Validation Examples | |||
- Validate that the receiving node's BGP Router-ID | or | |||
matches with the Remote Router ID field in the | ||||
received PeerAdj SID FEC. | ||||
- Validate that there is a EBGP session with a peer | Perhaps B: | |||
having local AS number and BGP Router-ID as | 5. EPE-SID FEC Validation | |||
specified in the Local AS number and Local Router-ID | 5.1. Segment Routing IGP-Prefix, IGP-Adjacency SID, | |||
field in the received PeerAdj SID FEC sub-TLV. | and EPE-SID Validation Examples | |||
--> | ||||
If the Remote interface address is not zero, validate the | <!--[rfced] Section 5.1. | |||
incoming interface. | ||||
Set the Best-return-code to 35 "Mapping for this FEC is not | ||||
associated with the incoming interface" [RFC8287] if any below | ||||
conditions fail: | ||||
- Validate the incoming interface on which the OAM | a) Please let us know how we may clarify the first sentence | |||
packet was receieved, matches with the remote | in this section. Are Segment Routing IGP-Prefix, IGP-Adjacency | |||
interface specified in the PeerAdj SID FEC sub-TLV | SID, and EPE-SID being validated, and is the term "receiving node" | |||
implying that the node received the OAM message as shown below? | ||||
If all above validations have passed, set the return code to 3 | Original: | |||
"Replying router is an egress for the FEC at stack-depth" | Segment Routing IGP-Prefix, IGP-Adjacency SID and EPE-SID Validation: | |||
} | Receiving node term used in this section implies the node that | |||
receives OAM message with the FEC stack TLV. | ||||
Else, if the Target FEC sub-TLV at FEC-stack-depth is TBD2 | Perhaps: | |||
(PeerNode SID sub-TLV), { | This is an example of Segment Routing IGP-Prefix, IGP-Adjacency SID, and | |||
EPE-SID validations. Note that the term "receiving node" in this section | ||||
implies that the node receives the OAM message with the FEC stack TLV. | ||||
Set the Best-return-code to 10, "Mapping for this FEC is not | b) For clarity, may we update "If any below conditions fail" to "Check if any | |||
the given label at stack-depth if any below | conditions below fail" (note that there are 4 instances)? | |||
conditions fail: | ||||
Original: | ||||
If any below conditions fail: | ||||
- Validate that the receiving node's BGP... | ||||
Perhaps: | ||||
Check if any conditions below fail: | ||||
- Validate that the receiving node's BGP... | ||||
c) Should the text reflect "the receiving node's BGP" or | ||||
"the Receiving Node BGP" for consistency (note that there | ||||
are multiple instances)? | ||||
d) Should "the remote AS field" or "one of the remote AS | ||||
fields" be used for consistency? | ||||
Original: | ||||
- Validate that the receiving node's BGP Local AS matches | ||||
with the remote AS field in the received PeerNode SID | ||||
FEC sub-TLV. | ||||
- Validate that the Receiving Node BGP Local AS matches | ||||
with one of the remote AS field in the received | ||||
PeerSet SID FEC sub-TLV. | ||||
e) Should citations be included for return codes 3 and 10? Should | ||||
"<RSC>" be added to the descriptions to match how they appear in | ||||
RFC 8029? | ||||
Original: | ||||
Set the Best-return-code to 10, "Mapping for this FEC is not | ||||
the given label at stack-depth". If any below conditions fail: | ||||
If all above validations have passed, set the return code to 3, | ||||
"Replying router is an egress for the FEC at stack-depth". | ||||
Perhaps: | ||||
Set the Best-return-code to 10, "Mapping for this FEC is not | ||||
the given label at stack-depth <RSC>" [RFC8029]. If any below | ||||
conditions fail: | ||||
If all above validations have passed, set the return code to 3, | ||||
"Replying router is an egress for the FEC at stack-depth <RSC>" | ||||
[RFC8029]. | ||||
--> | ||||
<section anchor="fec_validation" numbered="true" toc="default"> | ||||
<name>EPE-SID FEC Validation</name> | ||||
<t>Segment Routing IGP-Prefix, IGP-Adjacency SID, and EPE-SID Validatio | ||||
n: | ||||
Receiving node term used in this section implies the node that receives | ||||
OAM message | ||||
with the FEC stack TLV.</t> | ||||
<artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
Else, if the Label-stack-depth is 0 and the Target FEC Stack sub-TLV | ||||
at FEC-stack-depth is 38 (PeerAdj SID sub-TLV), { | ||||
Set the Best-return-code to 10, "Mapping for this FEC is not | ||||
the given label at stack-depth". If any below conditions fail: | ||||
- Validate that the receiving node's BGP Local AS matches | - Validate that the receiving node's BGP Local AS matches | |||
with the remote AS field in the | with the remote AS field in the received PeerAdj SID | |||
received PeerNode SID FEC sub-TLV. | FEC sub-TLV. | |||
- Validate that the receiving node's BGP Router-ID matches | - Validate that the receiving node's BGP Router-ID | |||
with the Remote Router ID field in the received | matches with the Remote Router ID field in the | |||
PeerNode SID FEC. | received PeerAdj SID FEC. | |||
- Validate that there is a EBGP session with a peer | - Validate that there is an EBGP session with a peer | |||
having local AS number and BGP Router-ID as | having a local AS number and BGP Router-ID as | |||
specified in the Local AS number and Local Router-ID | specified in the Local AS number and Local Router-ID | |||
field in the received PeerNode SID FEC sub-TLV. | field in the received PeerAdj SID FEC sub-TLV. | |||
If all above validations have passed, set the return code to 3 | If the Remote interface address is not zero, validate the | |||
"Replying router is an egress for the FEC at stack-depth". | incoming interface. Set the Best-return-code to 35, | |||
"Mapping for this FEC is not associated with the incoming | ||||
interface" [RFC8287]. If any below conditions fail: | ||||
- Validate that the incoming interface on which the | ||||
OAM packet was received matches with the remote | ||||
interface specified in the PeerAdj SID FEC sub-TLV. | ||||
If all above validations have passed, set the return code to 3, | ||||
"Replying router is an egress for the FEC at stack-depth". | ||||
} | } | |||
Else, if the Target FEC sub-TLV at FEC-stack-depth is TBD3 | ||||
(PeerSet SID sub-TLV), { | ||||
Set the Best-return-code to 10, "Mapping for this FEC is not | Else, if the Target FEC sub-TLV at FEC-stack-depth is 39 | |||
the given label at stack-depth" if any below | (PeerNode SID sub-TLV), { | |||
conditions fail: | ||||
- Validate that the Receiving Node BGP Local AS matches | Set the Best-return-code to 10, "Mapping for this FEC is not | |||
with one of the remote AS field in the received PeerSet | the given label at stack-depth". If any below conditions | |||
SID FEC sub-TLV. | fail: | |||
- Validate that the Receiving Node BGP Router-ID matches | - Validate that the receiving node's BGP Local AS matches | |||
with one of the Remote Router ID field in the received | with the remote AS field in the received PeerNode SID | |||
PeerSet SID FEC sub-TLV. | FEC sub-TLV. | |||
- Validate that there is a EBGP session with a peer having | - Validate that the receiving node's BGP Router-ID matches | |||
local AS number and BGP Router-ID as | with the Remote Router ID field in the received | |||
specified in the Local AS number and Local Router-ID | PeerNode SID FEC. | |||
field in the received PeerSet SID FEC sub-TLV. | ||||
If all above validations have passed, set the return code to 3 | - Validate that there is an EBGP session with a peer | |||
"Replying router is an egress for the FEC at stack-depth" | having a local AS number and BGP Router-ID as | |||
} | specified in the Local AS number and Local Router-ID | |||
</artwork> | field in the received PeerNode SID FEC sub-TLV. | |||
</t> | If all above validations have passed, set the return code to 3, | |||
</section> | "Replying router is an egress for the FEC at stack-depth". | |||
} | ||||
Else, if the Target FEC sub-TLV at FEC-stack-depth is 40 | ||||
(PeerSet SID sub-TLV), { | ||||
</section> | Set the Best-return-code to 10, "Mapping for this FEC is not | |||
<section anchor="IANA" title="IANA Considerations"> | the given label at stack-depth". If any below conditions | |||
<t>IANA is requested to allocate three new Target FEC stack sub-TLVs | fail: | |||
from the "Sub-TLVs for TLV types 1,16 and 21" subregistry in the | ||||
"TLVs" registry of the "Multi-Protocol Label switching (MPLS) | ||||
Label Switched Paths (LSPs) Ping parameters" namespace. | ||||
<list> | - Validate that the Receiving Node BGP Local AS matches | |||
<t>PeerAdj SID Sub-TLV : TBD1</t> | with one of the remote AS fields in the received | |||
<t>PeerNode SID Sub-TLV: TBD2</t> | PeerSet SID FEC sub-TLV. | |||
<t>PeerSet SID Sub-TLV : TBD3</t> | ||||
</list> | ||||
The three lowest free values from the Standard Tracks range should be | ||||
allocated if possible. | ||||
</t> | - Validate that the Receiving Node BGP Router-ID matches | |||
with one of the Remote Router ID fields in the | ||||
received PeerSet SID FEC sub-TLV. | ||||
</section> | - Validate that there is an EBGP session with a peer having | |||
<section title='Security Considerations' anchor='sec-con'> | a local AS number and BGP Router-ID as specified in the | |||
<t>The EPE-SIDs are advertised for egress links for Egress Peer Engineering | Local AS number and Local Router-ID fields in the received | |||
purposes or for inter-AS links between co-operating ASes. | PeerSet SID FEC sub-TLV. | |||
When co-operating domains are involved, they can allow the packets | ||||
If all above validations have passed, set the return code to 3, | ||||
"Replying router is an egress for the FEC at stack-depth". | ||||
}]]></artwork> | ||||
</section> | ||||
</section> | ||||
<section anchor="IANA" numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<!-- [rfced] We have included some specific questions about the IANA | ||||
text below. In addition to responding to those questions, please | ||||
review all of the IANA-related updates carefully and let us know | ||||
if any further updates are needed. | ||||
a) It appears that the "IANA Considerations" section references the | ||||
"Sub-TLVs for TLV Types 1, 16, and 21" registry in the "Multiprotocol | ||||
Label Switching (MPLS) Label Switched Paths (LSPs) Ping Parameters" | ||||
registry group, but it does not include a citation for this registry | ||||
here or in the references section. | ||||
May we add the following citation as a normative or informative | ||||
reference as shown below? | ||||
Original: | ||||
IANA is requested to allocate three new Target FEC stack sub-TLVs | ||||
from the "Sub-TLVs for TLV types 1,16 and 21" subregistry in the | ||||
"TLVs" registry of the "Multi-Protocol Label switching (MPLS) Label | ||||
Switched Paths (LSPs) Ping parameters" namespace. | ||||
Perhaps: | ||||
IANA has allocated three new Target FEC stack sub-TLVs in the | ||||
"Sub-TLVs for TLV Types 1, 16, and 21" registry | ||||
[IANA-MPLS-LSP-PING-Parameters] within the "TLVs" registry of the | ||||
"Multiprotocol Label Switching (MPLS) Label Switched Paths (LSPs) | ||||
Ping Parameters" registry group. | ||||
Reference: | ||||
[IANA-MPLS-LSP-PING-Parameters] | ||||
IANA, "Sub-TLVs for TLV Types 1, 16, and 21", | ||||
<https://www.iana.org/assignments/mpls-lsp-ping-parameters>. | ||||
b) We have removed "Sub-TLV" from the entries in Tables 1 and 2 per | ||||
IANA's note. Please let us know if "Sub-TLV" should be | ||||
removed from any other instances in the running text for consistency. | ||||
We note the following variations: | ||||
PeerAdj SID | ||||
PeerAdj SID FEC | ||||
PeerAdj SID FEC sub-TLV | ||||
PeerAdj SID Sub-TLV | ||||
PeerAdj SID sub-TLV | ||||
PeerSet SID sub-TLV | ||||
PeerNode SID sub-TLV | ||||
--> | ||||
<t>IANA has allocated three new Target FEC stack sub-TLVs | ||||
in the "Sub-TLVs for TLV Types 1, 16, and 21" registry | ||||
within the "TLVs" registry of the "Multiprotocol Label Switching (MPLS) | ||||
Label Switched Paths (LSPs) Ping Parameters" registry group. </t> | ||||
<table> | ||||
<name>Sub-TLVs for TLV Types 1, 16, and 21 Registry</name> | ||||
<thead> | ||||
<tr> | ||||
<th>Sub-Type</th> | ||||
<th>Sub-TLV Name</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td>38</td> | ||||
<td>PeerAdj SID</td> | ||||
</tr> | ||||
<tr> | ||||
<td>39</td> | ||||
<td>PeerNode SID</td> | ||||
</tr> | ||||
<tr> | ||||
<td>40</td> | ||||
<td>PeerSet SID</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
</section> | ||||
<section anchor="sec-con" numbered="true" toc="default"> | ||||
<name>Security Considerations</name> | ||||
<t>The EPE-SIDs are advertised for egress links for EPE | ||||
purposes or for inter-AS links between cooperating ASes. | ||||
When cooperating domains are involved, they can allow the packets | ||||
arriving on trusted interfaces to reach the control plane | arriving on trusted interfaces to reach the control plane | |||
and get processed.</t> | and be processed.</t> | |||
<t> When EPE-SIDs are created for egress | <t> When EPE-SIDs are created for egress | |||
TE links where the neighbor AS is an independent entity, it may | TE links where the neighbor AS is an independent entity, it may | |||
not allow packets arriving from external world to reach the | not allow the packets arriving from the external world to reach the | |||
control plane. In such deployments MPLS OAM packets will be | control plane. In such deployments, the MPLS OAM packets will be | |||
dropped by the neighboring AS that receives the MPLS OAM packet.</t> | dropped by the neighboring AS that receives the MPLS OAM packet.</t> | |||
<t>In MPLS traceroute applications, when the AS boundary is | <t>In MPLS traceroute applications, when the AS boundary is | |||
crossed with the EPE-SIDs, the FEC stack is changed. | crossed with the EPE-SIDs, the FEC stack is changed. | |||
<xref target="RFC8287"/> does not mandate that the initiator | <xref target="RFC8287" format="default"/> does not mandate that the initi ator, | |||
upon receiving an MPLS Echo Reply message that includes the | upon receiving an MPLS Echo Reply message that includes the | |||
FEC Stack Change TLV with one or more of the original | FEC Stack Change TLV with one or more of the original | |||
segments being popped remove a corresponding FEC(s) from | segments being popped, remove the corresponding FEC(s) from | |||
the Target FEC Stack TLV in the next (TTL+1) traceroute | the Target FEC Stack TLV in the next (TTL+1) traceroute | |||
request. </t> | request. </t> | |||
<t>If an initiator does not remove the FECs belonging | <t>If an initiator does not remove the FECs belonging | |||
to the previous AS that has traversed, it may expose the | to the previous AS that has traversed, it may expose the | |||
internal AS information to the following AS being traversed in | internal AS information to the following AS being traversed in | |||
traceroute. | the traceroute. | |||
</t> | </t> | |||
</section> | ||||
</section> | </middle> | |||
<section title='Implementation Status'> | <back> | |||
<t> This section is to be removed before publishing as an RFC. | <displayreference target="I-D.ietf-idr-segment-routing-te-policy" to="SR-TE- | |||
</t> | POLICY"/> | |||
<t> | <references> | |||
RFC-Editor: Please clean up the references cited by this section | <name>References</name> | |||
before publication. | <references> | |||
</t> | <name>Normative References</name> | |||
<t> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
This section records the status of known implementations of the | 287.xml"/> | |||
protocol defined by this specification at the time of posting of this | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
Internet-Draft, and is based on a proposal described in | 029.xml"/> | |||
<xref target ='RFC7942'/>. | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | |||
The description of implementations in this section is intended to | 086.xml"/> | |||
assist the IETF in its decision processes in progressing drafts to | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
RFCs. Please note that the listing of any individual implementation | 119.xml"/> | |||
here does not imply endorsement by the IETF. Furthermore, no effort | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
has been spent to verify the information presented here that was | 174.xml"/> | |||
supplied by IETF contributors. This is not intended as, and must not | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
be construed to be, a catalog of available implementations or their | 690.xml"/> | |||
features. Readers are advised to note that other implementations may | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
exist. | 793.xml"/> | |||
</t> | </references> | |||
<section title='Juniper Networks'> | <references> | |||
<name>Informative References</name> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
087.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 | ||||
705.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
403.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
664.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
271.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
065.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | ||||
286.xml"/> | ||||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 | ||||
256.xml"/> | ||||
<t>Juniper networks reported a prototype implementation of this draft.</t> | <!-- [Note to the RE] XML for the "Sub-TLVs for TLV Types 1, 16, and 21" | |||
registry (Note: this reference needs a cite tag/reference anchor in the IANA Sec | ||||
tion): | ||||
</section> | <reference anchor="" target="https://www.iana.org/assignments/mpls-lsp-ping-para | |||
</section> | meters"/> | |||
<section title='Acknowledgments'> | <front> | |||
<t>Thanks to Loa Andersson, Dhruv Dhody, Ketan Talaulikar, | <title>Sub-TLVs for TLV Types 1, 16, and 21</title> | |||
Italo Busi and Alexander Vainshtein, Deepti Rathi for | <author> | |||
careful review and comments. Thanks to Tarek Saad for providing the example | <organization>IANA</organization> | |||
described in Appendix section. </t> | </author> | |||
</section> | </front> | |||
</reference> | ||||
--> | ||||
</middle> | <!-- [rfced] Since 'draft-ietf-idr-segment-routing-te-policy' | |||
is expired and has been replaced by | ||||
'draft-ietf-idr-bgp-sr-segtypes-ext' and | ||||
'draft-ietf-idr-sr-policy-safi', may we replace the current | ||||
reference entry with the entries for these two drafts? | ||||
<back> | Note that this would include adding two reference tags to the | |||
<references title='Normative References'> | text in Section 2. | |||
&RFC8287; | ||||
&RFC8029; | ||||
&RFC9086; | ||||
&RFC2119; | ||||
&RFC8174; | ||||
&RFC8690; | ||||
&RFC6793; | ||||
</references> | ||||
<references title='Informative References'> | ||||
&RFC9087; | ||||
&RFC7705; | ||||
&RFC8403; | ||||
&RFC8664; | ||||
&RFC4271; | ||||
&RFC5065; | ||||
&RFC6286; | ||||
&RFC7942; | ||||
&RFC9256; | ||||
<?rfc include="reference.I-D.ietf-idr-segment-routing-te-policy"?> | ||||
</references> | Original: | |||
[SR-TE-POLICY] | ||||
Previdi, S., Filsfils, C., Talaulikar, K., Mattes, P., and | ||||
D. Jain, "Advertising Segment Routing Policies in BGP", | ||||
Work in Progress, Internet-Draft, draft-ietf-idr-segment- | ||||
routing-te-policy-26, 23 October 2023, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-idr- | ||||
segment-routing-te-policy-26>. | ||||
<section title='APPENDIX' anchor='APPENDIX'> | Perhaps: | |||
<t> This section describes an example of correctly programmed state and incorr | [BGP-SR-SEGTYPES-EXT] | |||
ectly | Talaulikar, K., Filsfils, C., Previdi, S., Mattes, P., and | |||
programmed state and provides details on how the new sub-TLVs described in thi | D. Jain, "Segment Routing Segment Types Extensions for BGP | |||
s | SR Policy", Work in Progress, Internet-Draft, draft-ietf- | |||
document can be used to validate the correctness. | idr-bgp-sr-segtypes-ext-06, 7 November 2024, | |||
Consider the diagram from <xref target ='reference_diagram'/>, | <https://datatracker.ietf.org/doc/html/draft-ietf-idr-bgp- | |||
<t>Correctly programed state:</t> | sr-segtypes-ext-06>. | |||
<list> | ||||
<t>• C assigns label 16001 and binds it to adjacency C->E </t> | [SR-BGP-POLICY] | |||
<t>• C signals label 16001 is bound to adjacency C->E (e.g. via BGP-LS)</t> | Previdi, S., Filsfils, C., Talaulikar, K., Mattes, P., and | |||
<t>• Controller/Ingress programs an SR path that has SID/label 16001 | D. Jain, "Advertising Segment Routing Policies in BGP", | |||
to steer packet on the exit point from C onto adjacency C->E</t> | Work in Progress, Internet-Draft, draft-ietf-idr-sr- | |||
<t>• Using MPLS trace procedures defined in this document, the PeerAdj SID | policy-safi-10, 7 November 2024, | |||
Sub-TLV is populates with entities to be validated by C when OAM packet reaches | <https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr- | |||
it.</t> | policy-safi-10>. | |||
<t>• C receives the OAM packet, it validates the top label (16001) | --> | |||
is indeed corresponding to the entities populated in the PeerAdj SID Sub-TLV</t> | ||||
</list> | <!--ietf-idr-segment-routing-te-policy; Expired --> | |||
<t>Incorrectly programed state:</t> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
<list> | .ietf-idr-segment-routing-te-policy.xml"/> | |||
<t>• C assigns label 16001 and binds it to adjacency C->D</t> | ||||
<t>• The controller learns of PeerAdj SID label 16001 is bound to | </references> | |||
adjacency C->E (e.g. via BGP-LS) – this could be a software bug on C or on contr | </references> | |||
oller</t> | <section anchor="Appendix" numbered="true" toc="default"> | |||
<t>• Controller/Ingress programs an SR path that has SID/label | ||||
16001 to steer packet on the exit point from C onto adjacency C->E</t> | <!-- [rfced] May we update the title of the appendix to avoid the | |||
<t>• Using MPLS trace procedures defined in this document, the PeerAdj SID | repetition of "Appendix A: Appendix"? Perhaps "Examples of | |||
Sub-TLV is populates with entities to be validated by C | Correctly and Incorrectly Programmed States" or "Examples of | |||
(including local/remote interface address of C->E) when OAM packet reaches it.</ | Programmed States? | |||
t> | ||||
<t>• C receives the OAM packet, it validates the top label (16001) is NOT boun | Current: | |||
d | Appendix A. Appendix | |||
to C->E as populated in the PeerAdj SID Sub-TLV and can respond with the | ||||
respective error code</t> | Perhaps: | |||
</list> | Appendix A. Examples of Programmed States | |||
</t> | --> | |||
<name>Appendix</name> | ||||
<t> This section describes examples of both a correctly and an | ||||
incorrectly programmed state and provides details on how the new | ||||
sub-TLVs described in this document can be used to validate the | ||||
correctness. Consider the diagram from <xref target="reference_diagram" | ||||
format="default"/>.</t> | ||||
<t>Correctly programmed state:</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<t>C assigns label 16001 and binds it to adjacency C->E </t> | ||||
</li> | ||||
<li> | ||||
<t>C signals that label 16001 is bound to adjacency C->E (e.g., via | ||||
BGP-LS)</t> | ||||
</li> | ||||
<li> | ||||
<t>The controller/ingress programs an SR path that has SID/label 16001 | ||||
to steer the packet on the exit point from C onto adjacency C->E</t | ||||
> | ||||
</li> | ||||
<li> | ||||
<t>Using MPLS trace procedures defined in this document, the PeerAdj | ||||
SID Sub-TLV is populated with entities to be validated by C when the | ||||
OAM packet reaches it</t> | ||||
</li> | ||||
<li> | ||||
<t>C receives the OAM packet and validates that the top label | ||||
(16001) is indeed corresponding to the entities populated in the | ||||
PeerAdj SID Sub-TLV</t> | ||||
</li> | ||||
</ul> | ||||
<t>Incorrectly programmed state:</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<t>C assigns label 16001 and binds it to adjacency C->D</t> | ||||
</li> | ||||
<li> | ||||
<t>The controller learns that PeerAdj SID label 16001 is bound to | ||||
adjacency C->E (e.g., via BGP-LS) -- this could be a software bug | ||||
on C or on the controller</t> | ||||
</li> | ||||
<li> | ||||
<t>The controller/ingress programs an SR path that has SID/label | ||||
16001 to steer the packet on the exit point from C onto adjacency | ||||
C->E</t> | ||||
</li> | ||||
<li> | ||||
<t>Using MPLS trace procedures defined in this document, the PeerAdj | ||||
SID Sub-TLV is populated with entities to be validated by C | ||||
(including a local/remote interface address of C->E) when the OAM | ||||
packet reaches it</t> | ||||
</li> | ||||
<li> | ||||
<t>C receives the OAM packet and validates that the top label | ||||
(16001) is NOT bound to C->E as populated in the PeerAdj SID | ||||
Sub-TLV and then responds with the respective error code</t> | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
<section numbered="false" toc="default"> | ||||
<name>Acknowledgments</name> | ||||
<t>Thanks to <contact fullname="Loa Andersson"/>, <contact | ||||
fullname="Dhruv Dhody"/>, <contact fullname="Ketan Talaulikar"/>, | ||||
<contact fullname="Italo Busi"/>, <contact fullname="Alexander | ||||
Vainshtein"/>, and <contact fullname="Deepti Rathi"/> for careful reviews | ||||
and | ||||
comments. Thanks to <contact fullname="Tarek Saad"/> for providing the | ||||
example described in <xref target="Appendix"/>.</t> | ||||
</section> | ||||
</back> | ||||
<!-- [rfced] Terminology and Abbreviations | ||||
a) Throughout the text, the following terminology appears to be capitalized | ||||
inconsistently. Please review these occurrences and let us know if/how they | ||||
may be made consistent. | ||||
Adj-Type vs. Adj type | ||||
Integer vs. integer | ||||
Local AS number vs. local AS number | ||||
Local interface vs. local interface | ||||
Link Descriptors vs. link descriptors | ||||
Remote interface vs. remote interface | ||||
b) How may we make these terms consistent? For the case, we suggest | ||||
capitalizing "Target" and "Stack" to match use in RFC 8287 and | ||||
other past RFCs. | ||||
Target FEC Stack TLV vs. | ||||
Target FEC stack TLV vs. | ||||
target FEC stack TLV vs. | ||||
target FEC stack | ||||
[Note: should the last instance contain "TLV"?] | ||||
FEC stack TLV vs. | ||||
FEC stack | ||||
[Note: should "Target" be added to these instances? And | ||||
should the last instance contain "TLV"?] | ||||
Target FEC Stack sub-TLV vs. | ||||
Target FEC stack sub-TLV vs. | ||||
Target FEC sub-TLV | ||||
[Note: should "Stack" be added to the last instance?] | ||||
c) In the text, "Type 1" appears to have two different names. Are these meant | ||||
to be the same or different? We see "Target FEC Stack TLV (Type 1)" in RFC 8287. | ||||
Please let us know how/if we may update. Note that we recommend making "stack" | ||||
uppercase for consistency. | ||||
Abstract: | ||||
MPLS Target stack TLV (Type 1) | ||||
Section 4: | ||||
Target FEC Stack TLV (Type 1) | ||||
d) It appears that in past RFCs, the term "FEC stack-depth" is used instead of | ||||
"FEC-stack-depth". Should we update to only one hyphen? | ||||
e) We see "MPLS Ping and Traceroute procedures" and "ping or traceroute packets" | ||||
in the running text. Should 1 instance of "MPLS traceroute procedure" perhaps be | ||||
"MPLS Ping and Traceroute procedures" for consistency? | ||||
Original: | ||||
The data plane validation of the SID will be done during the | ||||
MPLS traceroute procedure. | ||||
Perhaps: | ||||
The data plane validation of the SID will be done during the | ||||
MPLS Ping and Traceroute procedures. | ||||
f) FYI - We added expansions for the following abbreviations in the text. | ||||
Please review for accuracy. | ||||
ASN: Access Service Network | ||||
BGP-LS: Border Gateway Protocol - Link State | ||||
EBGP: External BGP | ||||
OAM: Operations, Administration, and Maintenance | ||||
--> | ||||
<!-- [rfced] Please review the "Inclusive Language" portion of the online | ||||
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> | ||||
and let us know if any changes are needed. Updates of this nature typically | ||||
result in more precise language, which is helpful for readers. | ||||
Note that our script did not flag any words in particular, but this should | ||||
still be reviewed as a best practice. | ||||
--> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 103 change blocks. | ||||
751 lines changed or deleted | 1134 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |