rfc8679xml2.original.xml | rfc8679.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | ||||
<!-- [rfced] updated by Chris /08/19/19 --> | nsus="true" docName="draft-ietf-mpls-egress-protection-framework-07" indexInclud | |||
e="true" ipr="trust200902" number="8679" prepTime="2019-12-04T22:12:35" scripts= | ||||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | "Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" | |||
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | tocInclude="true" xml:lang="en"> | |||
.2119.xml"> | <link href="https://datatracker.ietf.org/doc/draft-ietf-mpls-egress-protection | |||
<!ENTITY RFC4090 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | -framework-07" rel="prev"/> | |||
.4090.xml"> | <link href="https://dx.doi.org/10.17487/rfc8679" rel="alternate"/> | |||
<!ENTITY RFC5286 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
.5286.xml"> | ||||
<!ENTITY RFC7490 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.7490.xml"> | ||||
<!ENTITY RFC7812 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.7812.xml"> | ||||
<!ENTITY RFC8104 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.8104.xml"> | ||||
<!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.8174.xml"> | ||||
<!ENTITY RFC8400 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.8400.xml"> | ||||
<!ENTITY RFC8402 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC | ||||
.8402.xml"> | ||||
]> | ||||
<!-- [rfced] The sortrefs PI was set to "no" in the original. Please review. -- | ||||
> | ||||
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> | ||||
<?rfc strict="yes" ?> | ||||
<?rfc toc="yes"?> | ||||
<?rfc tocdepth="4"?> | ||||
<?rfc symrefs="yes"?> | ||||
<?rfc sortrefs="no" ?> | ||||
<?rfc compact="yes" ?> | ||||
<?rfc subcompact="no" ?> | ||||
<rfc submissionType="IETF" category="std" consensus="yes" number="XXXX" ipr="tru | ||||
st200902"> | ||||
<front> | <front> | |||
<title>MPLS Egress Protection Framework</title> | ||||
<title>MPLS Egress Protection Framework | <seriesInfo name="RFC" value="8679" stream="IETF"/> | |||
</title> | <author fullname="Yimin Shen" surname="Shen" initials="Y"> | |||
<organization showOnFrontPage="true">Juniper Networks</organization> | ||||
<author fullname="Yimin Shen" surname="Yimin Shen"> | ||||
<organization>Juniper Networks</organization> | ||||
<address> | <address> | |||
<postal> | <postal> | |||
<street>10 Technology Park Drive</street> | <street>10 Technology Park Drive</street> | |||
<city>Westford</city> | <city>Westford</city> | |||
<region>MA</region> | <region>MA</region> | |||
<code>01886</code> | <code>01886</code> | |||
<country>USA</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<phone>+1 9785890722</phone> | <phone>+1 978 589 0722</phone> | |||
<email>yshen@juniper.net</email> | <email>yshen@juniper.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Minto Jeyananth" surname="Jeyananth" initials="M"> | ||||
<author fullname="Minto Jeyananth" surname="Minto Jeyananth"> | <organization showOnFrontPage="true">Juniper Networks</organization> | |||
<organization>Juniper Networks</organization> | ||||
<address> | <address> | |||
<postal> | <postal> | |||
<street>1133 Innovation Way</street> | <street>1133 Innovation Way</street> | |||
<city>Sunnyvale</city> | <city>Sunnyvale</city> | |||
<region>CA</region> | <region>CA</region> | |||
<code>94089</code> | <code>94089</code> | |||
<country>USA</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<phone>+1 4089367563</phone> | <phone>+1 408 936 7563</phone> | |||
<email>minto@juniper.net</email> | <email>minto@juniper.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Bruno Decraene" surname="Decraene" initials="B"> | ||||
<author fullname="Bruno Decraene" surname="Bruno Decraene"> | <organization showOnFrontPage="true">Orange</organization> | |||
<organization>Orange</organization> | ||||
<address> | <address> | |||
<email>bruno.decraene@orange.com</email> | <email>bruno.decraene@orange.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Hannes Gredler" surname="Gredler" initials="H"> | ||||
<author fullname="Hannes Gredler" surname="Hannes Gredler"> | <organization showOnFrontPage="true">RtBrick Inc.</organization> | |||
<organization>RtBrick Inc</organization> | ||||
<address> | <address> | |||
<email>hannes@rtbrick.com</email> | <email>hannes@rtbrick.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Carsten Michel" surname="Michel" initials="C"> | ||||
<author fullname="Carsten Michel" surname="Carsten Michel"> | <organization showOnFrontPage="true">Deutsche Telekom</organization> | |||
<organization>Deutsche Telekom</organization> | ||||
<address> | <address> | |||
<email>c.michel@telekom.de</email> | <email>c.michel@telekom.de</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Huaimo Chen" surname="Chen" initials="H"> | ||||
<author fullname="Huaimo Chen" surname="Huaimo Chen"> | <organization showOnFrontPage="true">Futurewei</organization> | |||
<organization>Huawei Technologies Co., Ltd.</organization> | ||||
<address> | <address> | |||
<email>huaimo.chen@huawei.com</email> | <postal> | |||
<street/> | ||||
<city>Boston</city> | ||||
<region>MA</region> | ||||
<code/> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>Huaimo.chen@futurewei.com</email> | ||||
</address> | </address> | |||
</author> | </author> | |||
<date month="12" year="2019"/> | ||||
<date year="2019" month="September"/> | <area>RTG</area> | |||
<workgroup>Multiprotocol Label Switching</workgroup> | ||||
<area>General</area> | ||||
<workgroup>Internet Engineering Task Force</workgroup> | ||||
<keyword>fast reroute</keyword> | <keyword>fast reroute</keyword> | |||
<keyword>egress protection</keyword> | <keyword>egress protection</keyword> | |||
<keyword>local repair</keyword> | <keyword>local repair</keyword> | |||
<abstract pn="section-abstract"> | ||||
<abstract> | <t pn="section-abstract-1"> | |||
<t> | This document specifies a fast reroute framework for protecting IP/MPLS s | |||
This document specifies a fast reroute framework for protecting IP/MPLS s | ervices and MPLS transport tunnels against egress node and egress link failures. | |||
ervices and MPLS transport tunnels against egress node and egress link failures. | For each type of egress failure, it defines the roles of Point of Local Repair | |||
For each type of egress failure, it defines the roles of point of local repair | (PLR), protector, and backup egress router and the procedures of establishing a | |||
(PLR), protector, and backup egress router, and the procedures of establishing a | bypass tunnel from a PLR to a protector. It describes the behaviors of these rou | |||
bypass tunnel from a PLR to a protector. It describes the behaviors of these ro | ters in handling an egress failure, including local repair on the PLR and contex | |||
uters in handling an egress failure, including local repair on the PLR, and cont | t-based forwarding on the protector. The framework can be used to develop egress | |||
ext-based forwarding on the protector. The framework can be used to develop egre | protection mechanisms to reduce traffic loss before global repair reacts to an | |||
ss protection mechanisms to reduce traffic loss before global repair reacts to a | egress failure and control-plane protocols converge on the topology changes due | |||
n egress failure and control plane protocols converge on the topology changes du | to the egress failure. | |||
e to the egress failure. | ||||
</t> | </t> | |||
</abstract> | </abstract> | |||
<boilerplate> | ||||
<section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | ||||
"exclude" pn="section-boilerplate.1"> | ||||
<name slugifiedName="name-status-of-this-memo">Status of This Memo</name | ||||
> | ||||
<t pn="section-boilerplate.1-1"> | ||||
This is an Internet Standards Track document. | ||||
</t> | ||||
<t pn="section-boilerplate.1-2"> | ||||
This document is a product of the Internet Engineering Task Force | ||||
(IETF). It represents the consensus of the IETF community. It has | ||||
received public review and has been approved for publication by | ||||
the Internet Engineering Steering Group (IESG). Further | ||||
information on Internet Standards is available in Section 2 of | ||||
RFC 7841. | ||||
</t> | ||||
<t pn="section-boilerplate.1-3"> | ||||
Information about the current status of this document, any | ||||
errata, and how to provide feedback on it may be obtained at | ||||
<eref target="https://www.rfc-editor.org/info/rfc8679" brackets="non | ||||
e"/>. | ||||
</t> | ||||
</section> | ||||
<section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | ||||
ude" pn="section-boilerplate.2"> | ||||
<name slugifiedName="name-copyright-notice">Copyright Notice</name> | ||||
<t pn="section-boilerplate.2-1"> | ||||
Copyright (c) 2019 IETF Trust and the persons identified as the | ||||
document authors. All rights reserved. | ||||
</t> | ||||
<t pn="section-boilerplate.2-2"> | ||||
This document is subject to BCP 78 and the IETF Trust's Legal | ||||
Provisions Relating to IETF Documents | ||||
(<eref target="https://trustee.ietf.org/license-info" brackets="none | ||||
"/>) 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 Simplified BSD License text as described in | ||||
Section 4.e of the Trust Legal Provisions and are provided without | ||||
warranty as described in the Simplified BSD License. | ||||
</t> | ||||
</section> | ||||
</boilerplate> | ||||
<toc> | ||||
<section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | ||||
n="section-toc.1"> | ||||
<name slugifiedName="name-table-of-contents">Table of Contents</name> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | ||||
c.1-1"> | ||||
<li pn="section-toc.1-1.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent | ||||
="1" format="counter" sectionFormat="of" target="section-1"/>. <xref derivedCon | ||||
tent="" format="title" sectionFormat="of" target="name-introduction">Introductio | ||||
n</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent | ||||
="2" format="counter" sectionFormat="of" target="section-2"/>. <xref derivedCon | ||||
tent="" format="title" sectionFormat="of" target="name-specification-of-requirem | ||||
en">Specification of Requirements</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.3"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent | ||||
="3" format="counter" sectionFormat="of" target="section-3"/>. <xref derivedCon | ||||
tent="" format="title" sectionFormat="of" target="name-terminology">Terminology< | ||||
/xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.4"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.4.1"><xref derivedContent | ||||
="4" format="counter" sectionFormat="of" target="section-4"/>. <xref derivedCon | ||||
tent="" format="title" sectionFormat="of" target="name-requirements">Requirement | ||||
s</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.1"><xref derivedContent | ||||
="5" format="counter" sectionFormat="of" target="section-5"/>. <xref derivedCon | ||||
tent="" format="title" sectionFormat="of" target="name-egress-node-protection">E | ||||
gress Node Protection</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.5.2"> | ||||
<li pn="section-toc.1-1.5.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.2.1.1"><xref derive | ||||
dContent="5.1" format="counter" sectionFormat="of" target="section-5.1"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-reference-top | ||||
ology">Reference Topology</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.2.2.1"><xref derive | ||||
dContent="5.2" format="counter" sectionFormat="of" target="section-5.2"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-egress-node-f | ||||
ailure-and-det">Egress Node Failure and Detection</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.3"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.2.3.1"><xref derive | ||||
dContent="5.3" format="counter" sectionFormat="of" target="section-5.3"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-protector-and | ||||
-plr">Protector and PLR</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.4"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.2.4.1"><xref derive | ||||
dContent="5.4" format="counter" sectionFormat="of" target="section-5.4"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-protected-egr | ||||
ess">Protected Egress</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.5"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.2.5.1"><xref derive | ||||
dContent="5.5" format="counter" sectionFormat="of" target="section-5.5"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-egress-protec | ||||
ted-tunnel-and">Egress-Protected Tunnel and Service</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.6"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.2.6.1"><xref derive | ||||
dContent="5.6" format="counter" sectionFormat="of" target="section-5.6"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-egress-protec | ||||
tion-bypass-tu">Egress-Protection Bypass Tunnel</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.7"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.2.7.1"><xref derive | ||||
dContent="5.7" format="counter" sectionFormat="of" target="section-5.7"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-context-id-co | ||||
ntext-label-an">Context ID, Context Label, and Context-Based Forwarding</xref></ | ||||
t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.8"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.2.8.1"><xref derive | ||||
dContent="5.8" format="counter" sectionFormat="of" target="section-5.8"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-advertisement | ||||
-and-path-reso">Advertisement and Path Resolution for Context ID</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.9"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.2.9.1"><xref derive | ||||
dContent="5.9" format="counter" sectionFormat="of" target="section-5.9"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-egress-protec | ||||
tion-bypass-tun">Egress-Protection Bypass Tunnel Establishment</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.10"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.2.10.1"><xref deriv | ||||
edContent="5.10" format="counter" sectionFormat="of" target="section-5.10"/>. <x | ||||
ref derivedContent="" format="title" sectionFormat="of" target="name-local-repai | ||||
r-on-plr">Local Repair on PLR</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.11"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.2.11.1"><xref deriv | ||||
edContent="5.11" format="counter" sectionFormat="of" target="section-5.11"/>. <x | ||||
ref derivedContent="" format="title" sectionFormat="of" target="name-service-lab | ||||
el-distribution-">Service Label Distribution from Egress Router to Protector</xr | ||||
ef></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5.2.12"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.5.2.12.1"><xref deriv | ||||
edContent="5.12" format="counter" sectionFormat="of" target="section-5.12"/>. <x | ||||
ref derivedContent="" format="title" sectionFormat="of" target="name-centralized | ||||
-protector-mode">Centralized Protector Mode</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.6"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.6.1"><xref derivedContent | ||||
="6" format="counter" sectionFormat="of" target="section-6"/>. <xref derivedCon | ||||
tent="" format="title" sectionFormat="of" target="name-egress-link-protection">E | ||||
gress Link Protection</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.7.1"><xref derivedContent | ||||
="7" format="counter" sectionFormat="of" target="section-7"/>. <xref derivedCon | ||||
tent="" format="title" sectionFormat="of" target="name-global-repair">Global Rep | ||||
air</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.8.1"><xref derivedContent | ||||
="8" format="counter" sectionFormat="of" target="section-8"/>. <xref derivedCon | ||||
tent="" format="title" sectionFormat="of" target="name-operational-consideration | ||||
s">Operational Considerations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.9"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.9.1"><xref derivedContent | ||||
="9" format="counter" sectionFormat="of" target="section-9"/>. <xref derivedCon | ||||
tent="" format="title" sectionFormat="of" target="name-general-context-based-for | ||||
wa">General Context-Based Forwarding</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.10"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.10.1"><xref derivedConten | ||||
t="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedC | ||||
ontent="" format="title" sectionFormat="of" target="name-example-layer-3-vpn-egr | ||||
ess-">Example: Layer 3 VPN Egress Protection</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.10.2"> | ||||
<li pn="section-toc.1-1.10.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.10.2.1.1"><xref deriv | ||||
edContent="10.1" format="counter" sectionFormat="of" target="section-10.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-egress-nod | ||||
e-protection-2">Egress Node Protection</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.10.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.10.2.2.1"><xref deriv | ||||
edContent="10.2" format="counter" sectionFormat="of" target="section-10.2"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-egress-lin | ||||
k-protection-2">Egress Link Protection</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.10.2.3"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.10.2.3.1"><xref deriv | ||||
edContent="10.3" format="counter" sectionFormat="of" target="section-10.3"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-global-rep | ||||
air-2">Global Repair</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.10.2.4"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.10.2.4.1"><xref deriv | ||||
edContent="10.4" format="counter" sectionFormat="of" target="section-10.4"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-other-mode | ||||
s-of-vpn-label-al">Other Modes of VPN Label Allocation</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.11"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.11.1"><xref derivedConten | ||||
t="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedC | ||||
ontent="" format="title" sectionFormat="of" target="name-iana-considerations">IA | ||||
NA Considerations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.12"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.12.1"><xref derivedConten | ||||
t="12" format="counter" sectionFormat="of" target="section-12"/>. <xref derivedC | ||||
ontent="" format="title" sectionFormat="of" target="name-security-considerations | ||||
">Security Considerations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.13.1"><xref derivedConten | ||||
t="13" format="counter" sectionFormat="of" target="section-13"/>. <xref derivedC | ||||
ontent="" format="title" sectionFormat="of" target="name-references">References< | ||||
/xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.13.2"> | ||||
<li pn="section-toc.1-1.13.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.13.2.1.1"><xref deriv | ||||
edContent="13.1" format="counter" sectionFormat="of" target="section-13.1"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-normative- | ||||
references">Normative References</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.13.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.13.2.2.1"><xref deriv | ||||
edContent="13.2" format="counter" sectionFormat="of" target="section-13.2"/>. < | ||||
xref derivedContent="" format="title" sectionFormat="of" target="name-informativ | ||||
e-references">Informative References</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.14"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.14.1"><xref derivedConten | ||||
t="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-acknowledgements">Ackn | ||||
owledgements</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.15"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.15.1"><xref derivedConten | ||||
t="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-authors-addresses">Aut | ||||
hors' Addresses</xref></t> | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
</toc> | ||||
</front> | </front> | |||
<middle> | ||||
<middle> | <section anchor="intro" numbered="true" toc="include" removeInRFC="false" pn | |||
="section-1"> | ||||
<section anchor="intro" title="Introduction"> | <name slugifiedName="name-introduction">Introduction</name> | |||
<t> | <t pn="section-1-1"> | |||
In MPLS networks, label switched paths (LSPs) are widely used as transpor | In MPLS networks, Label Switched Paths (LSPs) are widely used as transpor | |||
t tunnels to carry IP and MPLS services across MPLS domains. Examples of MPLS se | t tunnels to carry IP and MPLS services across MPLS domains. Examples of MPLS se | |||
rvices are layer-2 VPNs, layer-3 VPNs, hierarchical LSPs, and others. In general | rvices are Layer 2 VPNs, Layer 3 VPNs, hierarchical LSPs, and others. In general | |||
, a tunnel may carry multiple services of one or multiple types, if the tunnel s | , a tunnel may carry multiple services of one or multiple types, if the tunnel s | |||
atisfies both individual and aggregate requirements (e.g., CoS, QoS) of these se | atisfies both individual and aggregate requirements (e.g., Class of Service (CoS | |||
rvices. The egress router of the tunnel hosts the service instances of the servi | ) and QoS) of these services. The egress router of the tunnel hosts the service | |||
ces. An MPLS service instance forwards service packets via an egress link to the | instances of the services. An MPLS service instance forwards service packets via | |||
service destination, based on a service label. An IP service instance does the | an egress link to the service destination, based on a service label. An IP serv | |||
same based on a service IP address. The egress link is often called a PE-CE (pro | ice instance does the same, based on an IP service address. The egress link is o | |||
vider edge - customer edge) link or attachment circuit (AC). | ften called a Provider Edge - Customer Edge (PE-CE) link or Attachment Circuit ( | |||
</t> | AC). | |||
</t> | ||||
<t> | <t pn="section-1-2"> | |||
Today, local-repair-based fast reroute mechanisms (<xref | Today, local-repair-based fast reroute mechanisms (see <xref target="RFC4 | |||
target="RFC4090"/>, <xref target="RFC5286"/>, <xref target="RFC7490"/>, and | 090" format="default" sectionFormat="of" derivedContent="RFC4090"/>, <xref targe | |||
<xref target="RFC7812"/>) have been widely deployed to protect MPLS tunnels agai | t="RFC5286" format="default" sectionFormat="of" derivedContent="RFC5286"/>, <xre | |||
nst transit link/node failures, with traffic restoration time in the order of te | f target="RFC7490" format="default" sectionFormat="of" derivedContent="RFC7490"/ | |||
ns of milliseconds. Local repair refers to the scenario where the router upstrea | >, and | |||
m to an anticipated failure, a.k.a. PLR (point of local repair), pre-establishes | <xref target="RFC7812" format="default" sectionFormat="of" derivedContent="RFC78 | |||
a bypass tunnel to the router downstream of the failure, a.k.a. MP (merge point | 12"/>) have been widely deployed to protect MPLS tunnels against transit link/no | |||
), pre-installs the forwarding state of the bypass tunnel in the data plane, and | de failures, with traffic restoration time in the order of tens of milliseconds. | |||
uses a rapid mechanism (e.g., link layer OAM, BFD, and others) to locally detec | Local repair refers to the scenario where the router upstream to an anticipated | |||
t the failure in the data plane. When the failure occurs, the PLR reroutes traff | failure, a.k.a., PLR, pre-establishes a bypass tunnel to the router downstream | |||
ic through the bypass tunnel to the MP, allowing the traffic to continue to flow | of the failure, a.k.a., Merge Point (MP), pre-installs the forwarding state of t | |||
to the tunnel's egress router. | he bypass tunnel in the data plane, and uses a rapid mechanism (e.g., link-layer | |||
</t> | Operations, Administration, and Maintenance (OAM), Bidirectional Forwarding Det | |||
ection (BFD), and others) to locally detect the failure in the data plane. When | ||||
<t> | the failure occurs, the PLR reroutes traffic through the bypass tunnel to the MP | |||
This document specifies a fast reroute framework for egress node and egre | , allowing the traffic to continue to flow to the tunnel's egress router. | |||
ss link protection. Similar to transit link/node protection, this framework also | </t> | |||
relies on a PLR to perform local failure detection and local repair. In egress | <t pn="section-1-3"> | |||
node protection, the PLR is the penultimate-hop router of a tunnel. In egress li | This document specifies a fast reroute framework for egress node and egre | |||
nk protection, the PLR is the egress router of the tunnel. The framework further | ss link protection. Similar to transit link/node protection, this framework also | |||
uses a so-called "protector" to serve as the tailend of a bypass tunnel. The pr | relies on a PLR to perform local failure detection and local repair. In egress | |||
otector is a router that hosts "protection service instances" and has its own co | node protection, the PLR is the penultimate hop router of a tunnel. In egress li | |||
nnectivity or paths to service destinations. When a PLR does local repair, the p | nk protection, the PLR is the egress router of the tunnel. The framework further | |||
rotector performs "context label switching" for rerouted MPLS service packets an | uses a so-called "protector" to serve as the tail end of a bypass tunnel. The p | |||
d "context IP forwarding" for rerouted IP service packets, to allow the service | rotector is a router that hosts "protection service instances" and has its own c | |||
packets to continue to reach the service destinations. | onnectivity or paths to service destinations. When a PLR does local repair, the | |||
</t> | protector performs "context label switching" for rerouted MPLS service packets a | |||
nd "context IP forwarding" for rerouted IP service packets, to allow the service | ||||
<t> | packets to continue to reach the service destinations. | |||
This framework considers an egress node failure as a failure of a tunnel, | </t> | |||
and a failure of all the services carried by the tunnel, as service packets can | <t pn="section-1-4"> | |||
no longer reach the service instances on the egress router. Therefore, the fram | This framework considers an egress node failure as a failure of a tunnel | |||
ework addresses egress node protection at both tunnel level and service level si | and a failure of all the services carried by the tunnel as service packets that | |||
multaneously. Likewise, the framework considers an egress link failure as a fail | can no longer reach the service instances on the egress router. Therefore, the f | |||
ure of all the services traversing the link, and addresses egress link protectio | ramework addresses egress node protection at both the tunnel level and service l | |||
n at the service level. | evel, simultaneously. Likewise, the framework considers an egress link failure a | |||
</t> | s a failure of all the services traversing the link and addresses egress link pr | |||
otection at the service level. | ||||
<t> | </t> | |||
This framework requires that the destination (a CE or site) of a service | <t pn="section-1-5"> | |||
MUST be dual-homed or have dual paths to an MPLS network, via two MPLS edge rout | This framework requires that the destination (a CE or site) of a service | |||
ers. One of the routers is the egress router of the service's transport tunnel, | <bcp14>MUST</bcp14> be dual-homed or have dual paths to an MPLS network, via two | |||
and the other is a backup egress router which hosts a "backup service instance". | MPLS edge routers. One of the routers is the egress router of the service's tra | |||
In the "co-located" protector mode in this document, the backup egress router s | nsport tunnel, and the other is a backup egress router that hosts a "backup serv | |||
erves as the protector, and hence the backup service instance acts as the protec | ice instance". In the "co-located" protector mode in this document, the backup e | |||
tion service instance. In the "centralized" protector mode (<xref target="centra | gress router serves as the protector; hence, the backup service instance acts as | |||
lized" />), the protector and the backup egress router are decoupled, and the pr | the protection service instance. In the "centralized" protector mode (<xref tar | |||
otection service instance and the backup service instance are hosted separately | get="centralized" format="default" sectionFormat="of" derivedContent="Section 5. | |||
by the two routers. | 12"/>), the protector and the backup egress router are decoupled, and the protec | |||
</t> | tion service instance and the backup service instance are hosted separately by t | |||
he two routers. | ||||
<t> | </t> | |||
The framework is described by mainly referring to P2P (point-to-point) tu | <t pn="section-1-6"> | |||
nnels. However, it is equally applicable to P2MP (point-to-multipoint), MP2P (mu | The framework is described by mainly referring to point-to-point (P2P) tu | |||
ltipoint-to-point), and MP2MP (multipoint-to-multipoint) tunnels, as the sub-LSP | nnels. However, it is equally applicable to point-to-multipoint (P2MP), multipoi | |||
s of these tunnels can be viewed as P2P tunnels. | nt-to-point (MP2P), and multipoint-to-multipoint (MP2MP) tunnels, as the sub-LSP | |||
</t> | s of these tunnels can be viewed as P2P tunnels. | |||
</t> | ||||
<t> | <t pn="section-1-7"> | |||
The framework is a multi-service and multi-transport framework. It assume | The framework is a multi-service and multi-transport framework. It assume | |||
s a generic model where each service is comprised of a common set of components, | s a generic model where each service is comprised of a common set of components, | |||
including a service instance, a service label, a service label distribution pro | including a service instance, a service label, a service label distribution pro | |||
tocol, and an MPLS transport tunnel. The framework also assumes the service labe | tocol, and an MPLS transport tunnel. The framework also assumes that the service | |||
l to be downstream assigned, i.e., assigned by an egress router. Therefore, the | label is downstream assigned, i.e., assigned by an egress router. Therefore, th | |||
framework is generally applicable to most existing and future services. However, | e framework is generally applicable to most existing and future services. Howeve | |||
there are services with certain modes, where a protector is unable to pre-estab | r, there are services with certain modes, where a protector is unable to pre-est | |||
lish forwarding state for egress protection, or a PLR is not allowed to reroute | ablish the forwarding state for egress protection, or a PLR is not allowed to re | |||
traffic to other routers in order to avoid traffic duplication, e.g., the broadc | route traffic to other routers in order to avoid traffic duplication, e.g., the | |||
ast, multicast, and unknown unicast traffic in VPLS and EVPN. These cases are le | broadcast, multicast, and unknown unicast traffic in Virtual Private LAN Service | |||
ft for future study. Services which use upstream-assigned service labels are als | (VPLS) and Ethernet VPN (EVPN). These cases are left for future study. Services | |||
o out of scope of this document and left for future study. | that use upstream-assigned service labels are also out of scope of this documen | |||
</t> | t and left for future study. | |||
</t> | ||||
<t> | <t pn="section-1-8"> | |||
The framework does not require extensions for the existing signaling and | The framework does not require extensions for the existing signaling and | |||
label distribution protocols (e.g., RSVP, LDP, BGP, etc.) of MPLS tunnels. It | label distribution protocols (e.g., RSVP, LDP, BGP, etc.) of MPLS tunnels. It | |||
assumes transport tunnels and bypass tunnels to be established by using the | assumes that transport tunnels and bypass tunnels are to be established by using the | |||
generic procedures provided by the protocols. On the other hand, it does not | generic procedures provided by the protocols. On the other hand, it does not | |||
preclude extensions to the protocols which may facilitate the procedures. One | preclude extensions to the protocols that may facilitate the procedures. One | |||
example of such extension is <xref target="RFC8400"/>. The framework does see th | example of such extension is <xref target="RFC8400" format="default" sectionForm | |||
e need for extensions of IGPs and service label distribution protocols in some p | at="of" derivedContent="RFC8400"/>. The framework does see the need for extensio | |||
rocedures, particularly for supporting protection establishment and context labe | ns of IGPs and service label distribution protocols in some procedures, particul | |||
l switching. This document provides guidelines for these extensions, but leaves | arly for supporting protection establishment and context label switching. This d | |||
the specific details to separate documents. | ocument provides guidelines for these extensions, but it leaves the specific det | |||
</t> | ails to separate documents. | |||
</t> | ||||
<t> | <t pn="section-1-9"> | |||
The framework is intended to complement control-plane convergence and | The framework is intended to complement control-plane convergence and | |||
global repair. Control-plane convergence relies on control protocols to react | global repair. Control-plane convergence relies on control protocols to react | |||
on the topology changes due to a failure. Global repair relies an ingress | on the topology changes due to a failure. Global repair relies on an ingress | |||
router to remotely detect a failure and switch traffic to an alternative | router to remotely detect a failure and switch traffic to an alternative | |||
path. An example of global repair is the BGP Prefix Independent Convergence | path. An example of global repair is the BGP prefix independent convergence | |||
mechanism <xref target="BGP-PIC"/> for BGP established services. Compared with t | mechanism <xref target="I-D.ietf-rtgwg-bgp-pic" format="default" sectionFormat=" | |||
hese mechanisms, this framework is considered as faster in traffic restoration, | of" derivedContent="BGP-PIC"/> for BGP-established services. Compared with these | |||
due to the nature of local failure detection and local repair. It is RECOMMENDED | mechanisms, this framework is considered faster in traffic restoration, due to | |||
that the framework be used in conjunction with control-plane convergence or glo | the nature of local failure detection and local repair. It is <bcp14>RECOMMENDED | |||
bal repair, in order to take the advantages of both approaches. That is, the fra | </bcp14> that the framework be used in conjunction with control-plane convergenc | |||
mework provides fast and temporary repair, while control-plane convergence or gl | e or global repair, in order to take the advantages of both approaches. That is, | |||
obal repair provides ultimate and permanent repair. | the framework provides fast and temporary repair, while control-plane convergen | |||
</t> | ce or global repair provides ultimate and permanent repair. | |||
</section> | </t> | |||
</section> | ||||
<section title="Specification of Requirements"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-2"> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <name slugifiedName="name-specification-of-requiremen">Specification of Re | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | quirements</name> | |||
document are to be interpreted as described in <xref target="RFC2119"/> | <t pn="section-2-1"> The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NO | |||
and <xref target="RFC8174"/>.</t> | T</bcp14>", | |||
</section> | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | |||
", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
<section anchor="terms" title="Terminology"> | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are | ||||
<t> | to be interpreted as described in BCP 14 <xref target="RFC2119" format="defa | |||
Egress router - A router at the egress endpoint of a tunnel. It hosts ser | ult" sectionFormat="of" derivedContent="RFC2119"/> | |||
vice instances for all the services carried by the tunnel, and has connectivity | <xref target="RFC8174" format="default" sectionFormat="of" derivedConten | |||
with the destinations of the services. | t="RFC8174"/> when, and only when, they appear in all capitals, | |||
</t> | as shown here. </t> | |||
</section> | ||||
<t> | <section anchor="terms" numbered="true" toc="include" removeInRFC="false" pn | |||
Egress node failure - A failure of an egress router. | ="section-3"> | |||
</t> | <name slugifiedName="name-terminology">Terminology</name> | |||
<dl newline="true" spacing="normal" pn="section-3-1"> | ||||
<t> | <dt pn="section-3-1.1">Egress router:</dt> | |||
Egress link failure - A failure of the egress link (e.g., PE-CE link, att | <dd pn="section-3-1.2">A router at the egress endpoint of a tunnel. It h | |||
achment circuit) of a service. | osts service instances for all the services carried by the tunnel and has connec | |||
</t> | tivity with the destinations of the services. | |||
</dd> | ||||
<t> | <dt pn="section-3-1.3">Egress node failure:</dt> | |||
Egress failure - An egress node failure or an egress link failure. | <dd pn="section-3-1.4">A failure of an egress router. | |||
</t> | </dd> | |||
<dt pn="section-3-1.5"> | ||||
<t> | Egress link failure:</dt> | |||
Egress-protected tunnel - A tunnel whose egress router is protected by a | <dd pn="section-3-1.6">A failure of the egress link (e.g., PE-CE link, a | |||
mechanism according to this framework. The egress router is hence called a prote | ttachment circuit) of a service. | |||
cted egress router. | </dd> | |||
</t> | <dt pn="section-3-1.7"> | |||
Egress failure:</dt> | ||||
<t> | <dd pn="section-3-1.8"> An egress node failure or an egress link failure | |||
Egress-protected service - An IP or MPLS service which is carried by an e | . | |||
gress-protected tunnel, and hence protected by a mechanism according to this fra | </dd> | |||
mework. | <dt pn="section-3-1.9"> | |||
</t> | Egress-protected tunnel:</dt> | |||
<dd pn="section-3-1.10">A tunnel whose egress router is protected by a m | ||||
<t> | echanism according to this framework. The egress router is hence called a protec | |||
Backup egress router - Given an egress-protected tunnel and its egress ro | ted egress router. | |||
uter, this is another router which has connectivity with all or a subset of the | </dd> | |||
destinations of the egress-protected services carried by the egress-protected tu | <dt pn="section-3-1.11"> | |||
nnel. | Egress-protected service:</dt> | |||
</t> | <dd pn="section-3-1.12">An IP or MPLS service that is carried by an egre | |||
ss-protected tunnel and hence protected by a mechanism according to this framewo | ||||
<t> | rk. | |||
Backup service instance - A service instance which is hosted by a backup | </dd> | |||
egress router, and corresponding to an egress-protected service on a protected e | <dt pn="section-3-1.13"> | |||
gress router. | Backup egress router:</dt> | |||
</t> | <dd pn="section-3-1.14">Given an egress-protected tunnel and its egress | |||
router, this is another router that has connectivity with all or a subset of the | ||||
<t> | destinations of the egress-protected services carried by the egress-protected t | |||
Protector - A role acted by a router as an alternate of a protected egres | unnel. | |||
s router, to handle service packets in the event of an egress failure. A protect | </dd> | |||
or may be physically co-located with or decoupled from a backup egress router, d | <dt pn="section-3-1.15"> | |||
epending on the co-located or centralized protector mode. | Backup service instance:</dt> | |||
</t> | <dd pn="section-3-1.16">A service instance that is hosted by a backup eg | |||
ress router and corresponds to an egress-protected service on a protected egress | ||||
<t> | router. | |||
Protection service instance - A service instance hosted by a protector, c | </dd> | |||
orresponding to the service instance of an egress-protected service on a protect | <dt pn="section-3-1.17"> | |||
ed egress router. A protection service instance is a backup service instance, if | Protector:</dt> | |||
the protector is co-located with a backup egress router. | <dd pn="section-3-1.18">A role acted by a router as an alternate of a pr | |||
</t> | otected egress router, to handle service packets in the event of an egress failu | |||
re. A protector may be physically co-located with or decoupled from a backup egr | ||||
<t> | ess router, depending on the co-located or centralized protector mode. | |||
PLR - A router at the point of local repair. In egress node protection, i | </dd> | |||
t is the penultimate-hop router on an egress-protected tunnel. In egress link pr | <dt pn="section-3-1.19"> | |||
otection, it is the egress router of the egress-protected tunnel. | Protection service instance:</dt> | |||
</t> | <dd pn="section-3-1.20">A service instance hosted by a protector that co | |||
rresponds to the service instance of an egress-protected service on a protected | ||||
<t> | egress router. A protection service instance is a backup service instance, if th | |||
Protected egress {E, P} - A virtual node consisting of an ordered pair of | e protector is co-located with a backup egress router. | |||
egress router E and protector P. It serves as the virtual destination of an egr | </dd> | |||
ess-protected tunnel, and as the virtual location of the egress-protected servic | <dt pn="section-3-1.21"> | |||
es carried by the tunnel. | PLR:</dt> | |||
</t> | <dd pn="section-3-1.22"> A router at the point of local repair. In egres | |||
s node protection, it is the penultimate hop router on an egress-protected tunne | ||||
<t> | l. In egress link protection, it is the egress router of the egress-protected tu | |||
Context identifier (ID) - A globally unique IP address assigned to a prot | nnel. | |||
ected egress {E, P}. | </dd> | |||
</t> | <dt pn="section-3-1.23"> | |||
Protected egress {E, P}:</dt> | ||||
<t> | <dd pn="section-3-1.24"> A virtual node consisting of an ordered pair of | |||
Context label - A non-reserved label assigned to a context ID by a protec | egress router E and protector P. It serves as the virtual destination of an egr | |||
tor. | ess-protected tunnel and as the virtual location of the egress-protected service | |||
</t> | s carried by the tunnel. | |||
</dd> | ||||
<t> | <dt pn="section-3-1.25"> | |||
Egress-protection bypass tunnel - A tunnel used to reroute service packet | Context identifier (ID):</dt> | |||
s around an egress failure. | <dd pn="section-3-1.26">A globally unique IP address assigned to a prote | |||
</t> | cted egress {E, P}. | |||
</dd> | ||||
<t> | <dt pn="section-3-1.27"> | |||
Co-located protector mode - The scenario where a protector and a backup e | Context label:</dt> | |||
gress router are co-located as one router, and hence each backup service instanc | <dd pn="section-3-1.28">A non-reserved label assigned to a context ID by | |||
e serves as a protection service instance. | a protector. | |||
</t> | </dd> | |||
<dt pn="section-3-1.29"> | ||||
<t> | Egress-protection bypass tunnel:</dt> | |||
Centralized protector mode - The scenario where a protector is a dedicate | <dd pn="section-3-1.30">A tunnel used to reroute service packets around | |||
d router, and is decoupled from backup egress routers. | an egress failure. | |||
</t> | </dd> | |||
<dt pn="section-3-1.31"> | ||||
<t> | Co-located protector mode:</dt> | |||
Context label switching - Label switching performed by a protector, in th | <dd pn="section-3-1.32">The scenario where a protector and a backup egre | |||
e label space of an egress router indicated by a context label. | ss router are co-located as one router; hence, each backup service instance serv | |||
</t> | es as a protection service instance. | |||
</dd> | ||||
<t> | <dt pn="section-3-1.33"> | |||
Context IP forwarding - IP forwarding performed by a protector, in the IP | Centralized protector mode:</dt> | |||
address space of an egress router indicated by a context label. | <dd pn="section-3-1.34">The scenario where a protector is a dedicated ro | |||
</t> | uter and is decoupled from backup egress routers. | |||
</dd> | ||||
</section> | <dt pn="section-3-1.35"> | |||
Context label switching:</dt> | ||||
<section anchor="req" title="Requirements"> | <dd pn="section-3-1.36">Label switching performed by a protector in the | |||
<t> | label space of an egress router indicated by a context label. | |||
</dd> | ||||
<dt pn="section-3-1.37"> | ||||
Context IP forwarding:</dt> | ||||
<dd pn="section-3-1.38">IP forwarding performed by a protector in the IP | ||||
address space of an egress router indicated by a context label. | ||||
</dd> | ||||
</dl> | ||||
</section> | ||||
<section anchor="req" numbered="true" toc="include" removeInRFC="false" pn=" | ||||
section-4"> | ||||
<name slugifiedName="name-requirements">Requirements</name> | ||||
<t pn="section-4-1"> | ||||
This document considers the following as the design requirements of this egress protection framework. | This document considers the following as the design requirements of this egress protection framework. | |||
</t> | </t> | |||
<ul spacing="normal" bare="false" empty="false" pn="section-4-2"> | ||||
<t> | <li pn="section-4-2.1"> | |||
<list style ="symbols"> | The framework must support P2P tunnels. It should equally support P2MP | |||
<t> | , MP2P, and MP2MP tunnels, by treating each sub-LSP as a P2P tunnel. | |||
The framework must support P2P tunnels. It should equally support P2MP | </li> | |||
, MP2P and MP2MP tunnels, by treating each sub-LSP as a P2P tunnel. | <li pn="section-4-2.2"> | |||
</t> | The framework must support multi-service and multi-transport networks. | |||
It must accommodate existing and future signaling and label-distribution protoc | ||||
<t> | ols of tunnels and bypass tunnels, including RSVP, LDP, BGP, IGP, Segment Routin | |||
The framework must support multi-service and multi-transport networks. | g, and others. It must also accommodate existing and future IP/MPLS services, in | |||
It must accommodate existing and future signaling and label-distribution protoc | cluding Layer 2 VPNs, Layer 3 VPNs, hierarchical LSP, and others. It <bcp14>MUST | |||
ols of tunnels and bypass tunnels, including RSVP, LDP, BGP, IGP, segment routin | </bcp14> provide a general solution for networks where different types of servic | |||
g, and others. It must also accommodate existing and future IP/MPLS services, in | es and tunnels co-exist. | |||
cluding layer-2 VPNs, layer-3 VPNs, hierarchical LSP, and others. It MUST provid | </li> | |||
e a general solution for networks where different types of services and tunnels | <li pn="section-4-2.3"> | |||
co-exist. | The framework must consider minimizing disruption during deployment. I | |||
</t> | t should only involve routers close to the egress and be transparent to ingress | |||
routers and other transit routers. | ||||
<t> | </li> | |||
The framework must consider minimizing disruption during deployment. I | <li pn="section-4-2.4"> | |||
t should only involve routers close to egress, and be transparent to ingress rou | In egress node protection, for scalability and performance reasons, a | |||
ters and other transit routers. | PLR must be agnostic to services and service labels. It must maintain bypass tun | |||
</t> | nels and bypass forwarding state on a per-transport-tunnel basis rather than on | |||
a per-service-destination or per-service-label basis. It should also support byp | ||||
<t> | ass tunnel sharing between transport tunnels. | |||
In egress node protection, for scalability and performance reasons, a | </li> | |||
PLR must be agnostic to services and service labels. It must maintain bypass tun | <li pn="section-4-2.5"> | |||
nels and bypass forwarding state on a per-transport-tunnel basis, rather than on | ||||
a per-service-destination or per-service-label basis. It should also support by | ||||
pass tunnel sharing between transport tunnels. | ||||
</t> | ||||
<t> | ||||
A PLR must be able to use its local visibility or information of routi ng or TE topology to compute or resolve a path for a bypass tunnel. | A PLR must be able to use its local visibility or information of routi ng or TE topology to compute or resolve a path for a bypass tunnel. | |||
</t> | </li> | |||
<li pn="section-4-2.6"> | ||||
<t> | A protector must be able to perform context label switching for rerout | |||
A protector must be able to perform context label switching for rerout | ed MPLS service packets, based on a service label(s) assigned by an egress route | |||
ed MPLS service packets, based on service label(s) assigned by an egress router. | r. It must be able to perform context IP forwarding for rerouted IP service pack | |||
It must be able to perform context IP forwarding for rerouted IP service packet | ets, in the public or private IP address space used by an egress router. | |||
s, in the public or private IP address space used by an egress router. | </li> | |||
</t> | <li pn="section-4-2.7"> | |||
<t> | ||||
The framework must be able to work seamlessly with transit link/node p rotection mechanisms to achieve end-to-end coverage. | The framework must be able to work seamlessly with transit link/node p rotection mechanisms to achieve end-to-end coverage. | |||
</t> | </li> | |||
<li pn="section-4-2.8"> | ||||
<t> | The framework must be able to work in conjunction with global repair a | |||
The framework must be able to work in conjunction with global repair a | nd control-plane convergence. | |||
nd control plane convergence. | </li> | |||
</t> | </ul> | |||
</list> | </section> | |||
</t> | <section anchor="egress-node-protection" numbered="true" toc="include" remov | |||
</section> | eInRFC="false" pn="section-5"> | |||
<name slugifiedName="name-egress-node-protection">Egress Node Protection</ | ||||
<section anchor="egress-node-protection" title = "Egress node protection"> | name> | |||
<section anchor="ref-topo" numbered="true" toc="include" removeInRFC="fals | ||||
<section anchor="ref-topo" title = "Reference topology"> | e" pn="section-5.1"> | |||
<t> | <name slugifiedName="name-reference-topology">Reference Topology</name> | |||
<t pn="section-5.1-1"> | ||||
This document refers to the following topology when describing the proce dures of egress node protection. | This document refers to the following topology when describing the proce dures of egress node protection. | |||
</t> | </t> | |||
<figure anchor="Figure-1" align="left" suppress-title="false" pn="figure | ||||
<figure align="center" anchor="Figure-1"> | -1"> | |||
<preamble></preamble> | <artwork align="center" name="" type="ascii-art" alt="" pn="section-5. | |||
1-2.1"> | ||||
<artwork align="center"><![CDATA[ | ||||
services 1, ..., N | services 1, ..., N | |||
=====================================> tunnel | =====================================> tunnel | |||
I ------ R1 ------- PLR --------------- E ---- | I ------ R1 ------- PLR --------------- E ---- | |||
ingress penultimate-hop egress \ | ingress penultimate hop egress \ | |||
| . (primary \ | | . (primary \ | |||
| . service \ | | . service \ | |||
| . instances) \ | | . instances ) \ | |||
| . \ | | . \ | |||
| . \ service | | . \ service | |||
| . destinations | | . destinations | |||
| . / (CEs, sites) | | . / (CEs, sites) | |||
| . / | | . / | |||
| . bypass / | | . bypass / | |||
| . tunnel / | | . tunnel / | |||
| . / | | . / | |||
| ............... / | | ............... / | |||
R2 --------------- P ---- | R2 --------------- P ---- | |||
protector | protector | |||
(protection | (protection | |||
service | service | |||
instances) | instances) </artwork> | |||
</figure> | ||||
]]></artwork> | </section> | |||
<postamble></postamble> | <section anchor="egress-node-failure" numbered="true" toc="include" remove | |||
</figure> | InRFC="false" pn="section-5.2"> | |||
<name slugifiedName="name-egress-node-failure-and-det">Egress Node Failu | ||||
</section> | re and Detection</name> | |||
<t pn="section-5.2-1"> | ||||
<section anchor="egress-node-failure" title = "Egress node failure and dete | ||||
ction"> | ||||
<t> | ||||
An egress node failure refers to the failure of an MPLS tunnel's egress router. At the service level, it is also a service instance failure for each IP/ MPLS service carried by the tunnel. | An egress node failure refers to the failure of an MPLS tunnel's egress router. At the service level, it is also a service instance failure for each IP/ MPLS service carried by the tunnel. | |||
</t> | </t> | |||
<t pn="section-5.2-2"> | ||||
<t> | An egress node failure can be detected by an adjacent router (i.e., PLR | |||
An egress node failure can be detected by an adjacent router (i.e., PLR | in this framework) through a node liveness detection mechanism or a mechanism ba | |||
in this framework) through a node liveness detection mechanism, or a mechanism b | sed on a collective failure of all the links to that node. The mechanisms <bcp14 | |||
ased on a collective failure of all the links to that node. The mechanisms MUST | >MUST</bcp14> be reasonably fast, i.e., faster than control-plane failure detect | |||
be reasonably fast, i.e., faster than control plane failure detection and remote | ion and remote failure detection. Otherwise, local repair will not be able to pr | |||
failure detection. Otherwise, local repair will not be able to provide much ben | ovide much benefit compared to control-plane convergence or global repair. In ge | |||
efit compared to control plane convergence or global repair. In general, the spe | neral, the speed, accuracy, and reliability of a failure detection mechanism are | |||
ed, accuracy, and reliability of a failure detection mechanism are the key facto | the key factors to decide its applicability in egress node protection. This doc | |||
rs to decide its applicability in egress node protection. This document provides | ument provides the following guidelines for network operators to choose a proper | |||
the following guidelines for network operators to choose a proper type of prote | type of protection on a PLR. | |||
ction on a PLR. | </t> | |||
</t> | <ul spacing="normal" bare="false" empty="false" pn="section-5.2-3"> | |||
<t> | <li pn="section-5.2-3.1"> | |||
<list style ="symbols"> | If the PLR has a mechanism to detect and differentiate a link failur | |||
<t> | e (of the link between the PLR and the egress node) and an egress node failure, | |||
If the PLR has a mechanism to detect and differentiate a link failur | it <bcp14>SHOULD</bcp14> set up both link protection and egress node protection | |||
e (of the link between the PLR and the egress node) and an egress node failure, | and trigger one and only one protection upon a corresponding failure. | |||
it SHOULD set up both link protection and egress node protection, and trigger on | </li> | |||
e and only one protection upon a corresponding failure. | <li pn="section-5.2-3.2"> | |||
</t> | <t pn="section-5.2-3.2.1"> | |||
If the PLR has a fast mechanism to detect a link failure and an egre | ||||
<t> | ss node failure, but it cannot distinguish them, or if the PLR has a fast mechan | |||
If the PLR has a fast mechanism to detect a link failure and an egre | ism to detect a link failure only, but not an egress node failure, the PLR has t | |||
ss node failure, but cannot distinguish them; or, if the PLR has a fast mechanis | wo options: | |||
m to detect a link failure only, but not an egress node failure, the PLR has two | ||||
options: | ||||
<list style ="numbers"> | ||||
<t> | ||||
It MAY set up link protection only, and leave the egress node fa | ||||
ilure to be handled by global repair and control plane convergence. | ||||
</t> | ||||
<t> | ||||
It MAY set up egress node protection only, and treat a link fail | ||||
ure as a trigger for the egress node protection. The assumption is that treating | ||||
a link failure as an egress node failure MUST NOT have a negative impact on ser | ||||
vices. Otherwise, it SHOULD adopt the previous option. | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</list> | ||||
</t> | ||||
</section> | ||||
<section anchor="protector" title = "Protector and PLR"> | ||||
<t> | ||||
A router is assigned to the "protector" role to protect a tunnel and the | ||||
services carried by the tunnel against an egress node failure. The protector is | ||||
responsible for hosting a protection service instance for each protected servic | ||||
e, serving as the tailend of a bypass tunnel, and performing context label switc | ||||
hing and/or context IP forwarding for rerouted service packets. | ||||
</t> | ||||
<t> | </t> | |||
<ol spacing="normal" type="1" start="1" pn="section-5.2-3.2.2"> | ||||
<li pn="section-5.2-3.2.2.1" derivedCounter="1."> | ||||
It <bcp14>MAY</bcp14> set up link protection only and leave the | ||||
egress node failure to be handled by global repair and control-plane convergence | ||||
. | ||||
</li> | ||||
<li pn="section-5.2-3.2.2.2" derivedCounter="2."> | ||||
It <bcp14>MAY</bcp14> set up egress node protection only and tre | ||||
at a link failure as a trigger for the egress node protection. The assumption is | ||||
that treating a link failure as an egress node failure <bcp14>MUST NOT</bcp14> | ||||
have a negative impact on services. Otherwise, it <bcp14>SHOULD</bcp14> adopt th | ||||
e previous option. | ||||
</li> | ||||
</ol> | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
<section anchor="protector" numbered="true" toc="include" removeInRFC="fal | ||||
se" pn="section-5.3"> | ||||
<name slugifiedName="name-protector-and-plr">Protector and PLR</name> | ||||
<t pn="section-5.3-1"> | ||||
A router is assigned to the "protector" role to protect a tunnel and the | ||||
services carried by the tunnel against an egress node failure. The protector is | ||||
responsible for hosting a protection service instance for each protected servic | ||||
e, serving as the tail end of a bypass tunnel, and performing context label swit | ||||
ching and/or context IP forwarding for rerouted service packets. | ||||
</t> | ||||
<t pn="section-5.3-2"> | ||||
A tunnel is protected by only one protector. Multiple tunnels to a given egress router may be protected by a common protector or different protectors. A protector may protect multiple tunnels with a common egress router or different egress routers. | A tunnel is protected by only one protector. Multiple tunnels to a given egress router may be protected by a common protector or different protectors. A protector may protect multiple tunnels with a common egress router or different egress routers. | |||
</t> | </t> | |||
<t pn="section-5.3-3"> | ||||
<t> | For each tunnel, its penultimate hop router acts as a PLR. The PLR pre-e | |||
For each tunnel, its penultimate-hop router acts as a PLR. The PLR pre-e | stablishes a bypass tunnel to the protector and pre-installs bypass forwarding s | |||
stablishes a bypass tunnel to the protector, and pre-installs bypass forwarding | tate in the data plane. Upon detection of an egress node failure, the PLR rerout | |||
state in the data plane. Upon detection of an egress node failure, the PLR rerou | es all the service packets received on the tunnel through the bypass tunnel to t | |||
tes all the service packets received on the tunnel though the bypass tunnel to t | he protector. For MPLS service packets, the PLR keeps service labels intact in t | |||
he protector. For MPLS service packets, the PLR keeps service labels intact in t | he packets. In turn, the protector forwards the service packets towards the ulti | |||
he packets. The protector in turn forwards the service packets towards the ultim | mate service destinations. Specifically, it performs context label switching for | |||
ate service destinations. Specifically, it performs context label switching for | MPLS service packets, based on the service labels assigned by the protected egr | |||
MPLS service packets, based on the service labels assigned by the protected egre | ess router; it performs context IP forwarding for IP service packets, based on t | |||
ss router; it performs context IP forwarding for IP service packets, based on th | heir destination addresses. | |||
eir destination addresses. | </t> | |||
</t> | <t pn="section-5.3-4"> | |||
The protector <bcp14>MUST</bcp14> have its own connectivity with each se | ||||
<t> | rvice destination, via a direct link or a multi-hop path, which <bcp14>MUST NOT< | |||
The protector MUST have its own connectivity with each service destinati | /bcp14> traverse the protected egress router or be affected by the egress node f | |||
on, via a direct link or a multi-hop path, which MUST NOT traverse the protected | ailure. This also means that each service destination <bcp14>MUST</bcp14> be dua | |||
egress router or be affected by the egress node failure. This also means that e | l-homed or have dual paths to the egress router and a backup egress router that | |||
ach service destination MUST be dual-homed or have dual paths to the egress rout | may serve as the protector. Each protection service instance on the protector re | |||
er and a backup egress router which may serve as the protector. Each protection | lies on such connectivity to set up forwarding state for context label switching | |||
service instance on the protector relies on such connectivity to set up forwardi | and context IP forwarding. | |||
ng state for context label switching and context IP forwarding. | </t> | |||
</t> | </section> | |||
</section> | <section anchor="protected-egress" numbered="true" toc="include" removeInR | |||
FC="false" pn="section-5.4"> | ||||
<section anchor="protected-egress" title = "Protected egress"> | <name slugifiedName="name-protected-egress">Protected Egress</name> | |||
<t> | <t pn="section-5.4-1"> | |||
This document introduces the notion of "protected egress" as a virtual n | This document introduces the notion of "protected egress" as a virtual n | |||
ode consisting of the egress router E of a tunnel and a protector P. It is denot | ode consisting of the egress router E of a tunnel and a protector P. It is denot | |||
ed by an ordered pair of {E, P}, indicating the primary-and-protector relationsh | ed by an ordered pair of {E, P}, indicating the primary-and-protector relationsh | |||
ip between the two routers. It serves as the virtual destination of the tunnel, | ip between the two routers. It serves as the virtual destination of the tunnel a | |||
and the virtual location of service instances for the services carried by the tu | nd the virtual location of service instances for the services carried by the tun | |||
nnel. The tunnel and services are considered as being "associated" with the prot | nel. The tunnel and services are considered as being "associated" with the prote | |||
ected egress {E, P}. | cted egress {E, P}. | |||
</t> | </t> | |||
<t pn="section-5.4-2"> | ||||
<t> | A given egress router E may be the tail end of multiple tunnels. In gener | |||
A given egress router E may be the tailend of multiple tunnels. In genera | al, the tunnels may be protected by multiple protectors, e.g., P1, P2, and so on | |||
l, the tunnels may be protected by multiple protectors, e.g., P1, P2, and so on, | , with each Pi protecting a subset of the tunnels. Thus, these routers form mult | |||
with each Pi protecting a subset of the tunnels. Thus, these routers form multi | iple protected egresses, i.e., {E, P1}, {E, P2}, and so on. Each tunnel is assoc | |||
ple protected egresses, i.e., {E, P1}, {E, P2}, and so on. Each tunnel is associ | iated with one and only one protected egress {E, Pi}. All the services carried | |||
ated with one and only one protected egress {E, Pi}. All the services carried by | by the tunnel are then automatically associated with the protected egress {E, Pi | |||
the tunnel are then automatically associated with the protected egress {E, Pi}. | }. Conversely, a service associated with a protected egress {E, Pi} <bcp14>MUST< | |||
Conversely, a service associated with a protected egress {E, Pi} MUST be carrie | /bcp14> be carried by a tunnel associated with the protected egress {E, Pi}. Thi | |||
d by a tunnel associated with the protected egress {E, Pi}. This mapping MUST be | s mapping <bcp14>MUST</bcp14> be ensured by the ingress router of the tunnel and | |||
ensured by the ingress router of the tunnel and the service (<xref target="ep-t | the service (<xref target="ep-tunnel-service" format="default" sectionFormat="o | |||
unnel-service" />). | f" derivedContent="Section 5.5"/>). | |||
</t> | </t> | |||
<t pn="section-5.4-3"> | ||||
<t> | The two routers X and Y may be protectors for each other. In this case, | |||
Two routers X and Y may be protectors for each other. In this case, they | they form two distinct protected egresses: {X, Y} and {Y, X}. | |||
form two distinct protected egresses {X, Y} and {Y, X}. | </t> | |||
</t> | </section> | |||
<section anchor="ep-tunnel-service" numbered="true" toc="include" removeIn | ||||
</section> | RFC="false" pn="section-5.5"> | |||
<name slugifiedName="name-egress-protected-tunnel-and">Egress-Protected | ||||
<section anchor="ep-tunnel-service" title = "Egress-protected tunnel and se | Tunnel and Service</name> | |||
rvice"> | <t pn="section-5.5-1"> | |||
<t> | A tunnel, which is associated with a protected egress {E, P}, is called | |||
A tunnel, which is associated with a protected egress {E, P}, is called | an egress-protected tunnel. It is associated with one and only one protected egr | |||
an egress-protected tunnel. It is associated with one and only one protected egr | ess {E, P}. Multiple egress-protected tunnels may be associated with a given pr | |||
ess {E, P}. Multiple egress-protected tunnels may be associated with a given pro | otected egress {E, P}. In this case, they share the common egress router and pr | |||
tected egress {E, P}. In this case, they share the common egress router and prot | otector, but they may or may not share a common ingress router or a common PLR ( | |||
ector, but may or may not share a common ingress router, or a common PLR (i.e., | i.e., penultimate hop router). | |||
penultimate-hop router). | </t> | |||
</t> | <t pn="section-5.5-2"> | |||
An egress-protected tunnel is considered as logically "destined" for its | ||||
<t> | protected egress {E, P}. Its path <bcp14>MUST</bcp14> be resolved and establis | |||
An egress-protected tunnel is considered as logically "destined" for its | hed with E as the physical tail end. | |||
protected egress {E, P}. Its path MUST be resolved and established with E as th | </t> | |||
e physical tailend. | <t pn="section-5.5-3"> | |||
</t> | A service, which is associated with a protected egress {E, P}, is called | |||
an egress-protected service. Egress router E hosts the primary instance of the | ||||
<t> | service, and protector P hosts the protection instance of the service. | |||
A service, which is associated with a protected egress {E, P}, is called | </t> | |||
an egress-protected service. The egress router E hosts the primary instance of | <t pn="section-5.5-4"> | |||
the service, and the protector P hosts the protection instance of the service. | An egress-protected service is associated with one and only one protecte | |||
</t> | d egress {E, P}. Multiple egress-protected services may be associated with a gi | |||
ven protected egress {E, P}. In this case, these services share the common egre | ||||
<t> | ss router and protector, but they may or may not be carried by a common egress-p | |||
An egress-protected service is associated with one and only one protecte | rotected tunnel or a common ingress router. | |||
d egress {E, P}. Multiple egress-protected services may be associated with a giv | </t> | |||
en protected egress {E, P}. In this case, these services share the common egress | <t pn="section-5.5-5"> | |||
router and protector, but may or may not be carried by a common egress-protecte | An egress-protected service <bcp14>MUST</bcp14> be mapped to an egress-p | |||
d tunnel or a common ingress router. | rotected tunnel by its ingress router, based on the common protected egress {E, | |||
</t> | P} of the service and the tunnel. This is achieved by introducing the notion of | |||
a "context ID" for a protected egress {E, P}, as described in <xref target="cid" | ||||
<t> | format="default" sectionFormat="of" derivedContent="Section 5.7"/>. | |||
An egress-protected service MUST be mapped to an egress-protected tunnel | </t> | |||
by its ingress router, based on the common protected egress {E, P} of the servi | </section> | |||
ce and the tunnel. This is achieved by introducing the notion of "context ID" fo | <section anchor="ep-bypass" numbered="true" toc="include" removeInRFC="fal | |||
r protected egress {E, P}, as described in (<xref target="cid" />). | se" pn="section-5.6"> | |||
</t> | <name slugifiedName="name-egress-protection-bypass-tu">Egress-Protection | |||
</section> | Bypass Tunnel</name> | |||
<t pn="section-5.6-1"> | ||||
<section anchor="ep-bypass" title = "Egress-protection bypass tunnel"> | An egress-protected tunnel destined for a protected egress {E, P} <bcp14 | |||
>MUST</bcp14> have a bypass tunnel from its PLR to protector P. This bypass tunn | ||||
<t> | el is called an egress-protection bypass tunnel. The bypass tunnel is considered | |||
An egress-protected tunnel destined for a protected egress {E, P} MUST h | as logically "destined" for the protected egress {E, P}. Due to its bypass natu | |||
ave a bypass tunnel from its PLR to the protector P. This bypass tunnel is calle | re, it <bcp14>MUST</bcp14> be established with P as the physical tail end and E | |||
d an egress-protection bypass tunnel. The bypass tunnel is considered as logical | as the node to avoid. | |||
ly "destined" for the protected egress {E, P}. Due to its bypass nature, it MUST | ||||
be established with P as the physical tailend and E as the node to avoid. The b | ||||
ypass tunnel MUST have the property that it MUST NOT be affected by the topology | ||||
change caused by an egress node failure. | ||||
</t> | ||||
<t> | The bypass tunnel <bcp14>MUST NOT</bcp14> be affected by the topology change cau | |||
sed by an egress node failure; thus, it <bcp14>MUST</bcp14> contain a property t | ||||
hat protects it from this scenario. | ||||
</t> | ||||
<t pn="section-5.6-2"> | ||||
An egress-protection bypass tunnel is associated with one and only one p rotected egress {E, P}. A PLR may share an egress-protection bypass tunnel for m ultiple egress-protected tunnels associated with a common protected egress {E, P }. | An egress-protection bypass tunnel is associated with one and only one p rotected egress {E, P}. A PLR may share an egress-protection bypass tunnel for m ultiple egress-protected tunnels associated with a common protected egress {E, P }. | |||
</t> | </t> | |||
</section> | ||||
</section> | <section anchor="cid" numbered="true" toc="include" removeInRFC="false" pn | |||
="section-5.7"> | ||||
<section anchor="cid" title = "Context ID, context label, and context-based | <name slugifiedName="name-context-id-context-label-an">Context ID, Conte | |||
forwarding"> | xt Label, and Context-Based Forwarding</name> | |||
<t pn="section-5.7-1"> | ||||
<t> | In this framework, a globally unique IPv4 or IPv6 address is assigned as | |||
In this framework, a globally unique IPv4 or IPv6 address is assigned to | the identifier of the protected egress {E, P}. It is called a "context ID" due | |||
a protected egress {E, P} as the identifier of the protected egress {E, P}. It | to its specific usage in context label switching and context IP forwarding on th | |||
is called a "context ID" due to its specific usage in context label switching an | e protector. It is an IP address that is logically owned by both the egress rout | |||
d context IP forwarding on the protector. It is an IP address that is logically | er and the protector. For the egress router, it indicates the protector. For the | |||
owned by both the egress router and the protector. For the egress router, it ind | protector, it indicates the egress router, particularly the egress router's for | |||
icates the protector. For the protector, it indicates the egress router, particu | warding context. For other routers in the network, it is an address reachable vi | |||
larly the egress router's forwarding context. For other routers in the network, | a both the egress router and the protector (<xref target="adv" format="default" | |||
it is an address reachable via both the egress router and the protector (<xref t | sectionFormat="of" derivedContent="Section 5.8"/>), similar to an anycast addres | |||
arget="adv" />), similar to an anycast address. | s. | |||
</t> | </t> | |||
<t pn="section-5.7-2"> | ||||
<t> | The main purpose of a context ID is to coordinate the ingress router, eg | |||
The main purpose of a context ID is to coordinate ingress router, egress | ress router, PLR, and protector to establish egress protection. The procedures a | |||
router, PLR and protector to establish egress protection. The procedures are de | re described below, given an egress-protected service associated with a protecte | |||
scribed below, given an egress-protected service associated with a protected egr | d egress {E, P} with a context ID. | |||
ess {E, P} with context ID. | </t> | |||
</t> | <ul spacing="normal" bare="false" empty="false" pn="section-5.7-3"> | |||
<t> | <li pn="section-5.7-3.1"> | |||
<list style ="symbols"> | If the service is an MPLS service, when E distributes a service labe | |||
<t> | l binding message to the ingress router, E attaches the context ID to the messag | |||
If the service is an MPLS service, when E distributes a service labe | e. If the service is an IP service, when E advertises the service destination ad | |||
l binding message to the ingress router, E attaches the context ID to the messag | dress to the ingress router, E attaches the context ID to the advertisement mess | |||
e. If the service is an IP service, when E advertises the service destination ad | age. The service protocol chooses how the context ID is encoded in the messages. | |||
dress to the ingress router, E attaches the context ID to the advertisement mess | A protocol extension of a "context ID" object may be needed, if there is no exi | |||
age. How the context ID is encoded in the messages is a choice of the service pr | sting mechanism for this purpose. | |||
otocol. A protocol extension of a "context ID" object may be needed, if there is | </li> | |||
no existing mechanism for this purpose. | <li pn="section-5.7-3.2"> | |||
</t> | ||||
<t> | ||||
The ingress router uses the service's context ID as the destination to establish or resolve an egress-protected tunnel. The ingress router then maps the service to the tunnel for transportation. The semantics of the context ID i s transparent to the ingress router. The ingress router only treats the context ID as an IP address of E, in the same manner as establishing or resolving a regu lar transport tunnel. | The ingress router uses the service's context ID as the destination to establish or resolve an egress-protected tunnel. The ingress router then maps the service to the tunnel for transportation. The semantics of the context ID i s transparent to the ingress router. The ingress router only treats the context ID as an IP address of E, in the same manner as establishing or resolving a regu lar transport tunnel. | |||
</t> | </li> | |||
<t> | <li pn="section-5.7-3.3"> | |||
The context ID is conveyed to the PLR by the signaling protocol of t | The context ID is conveyed to the PLR by the signaling protocol of t | |||
he egress-protected tunnel, or learned by the PLR via an IGP (i.e., OSPF or ISIS | he egress-protected tunnel or learned by the PLR via an IGP (i.e., OSPF or IS-IS | |||
) or a topology-driven label distribution protocol (e.g., LDP). The PLR uses the | ) or a topology-driven label distribution protocol (e.g., LDP). The PLR uses the | |||
context ID as destination to establish or resolve an egress-protection bypass t | context ID as the destination to establish or resolve an egress-protection bypa | |||
unnel to P while avoiding E. | ss tunnel to P while avoiding E. | |||
</t> | </li> | |||
<t> | <li pn="section-5.7-3.4"> | |||
P maintains a dedicated label space and a dedicated IP address space for E. They are referred to as "E's label space" and "E's IP address space", re spectively. P uses the context ID to identify the label space and IP address spa ce. | P maintains a dedicated label space and a dedicated IP address space for E. They are referred to as "E's label space" and "E's IP address space", re spectively. P uses the context ID to identify the label space and IP address spa ce. | |||
</t> | </li> | |||
<t> | <li pn="section-5.7-3.5"> | |||
If the service is an MPLS service, E also distributes the service la | If the service is an MPLS service, E also distributes the service la | |||
bel binding message to P. This is the same label binding message that E advertis | bel binding message to P. This is the same label binding message that E advertis | |||
es to the ingress router, which includes the context ID. Based on the context ID | es to the ingress router, which includes the context ID. Based on the context ID | |||
, P installs the service label in an MPLS forwarding table corresponding to E's | , P installs the service label in an MPLS forwarding table corresponding to E's | |||
label space. If the service is an IP service, P installs an IP route in an IP fo | label space. If the service is an IP service, P installs an IP route in an IP fo | |||
rwarding table corresponding to E's IP address space. In either case, the protec | rwarding table corresponding to E's IP address space. In either case, the protec | |||
tion service instance on P constructs forwarding state for the label route or IP | tion service instance on P constructs the forwarding state for the label route o | |||
route based on P's own connectivity with the service's destination. | r IP route based on P's own connectivity with the service's destination. | |||
</t> | </li> | |||
<t> | <li pn="section-5.7-3.6"> | |||
P assigns a non-reserved label to the context ID. In the data plane, this label represents the context ID and indicates E's label space and IP addre ss space. Therefore, it is called a "context label". | P assigns a non-reserved label to the context ID. In the data plane, this label represents the context ID and indicates E's label space and IP addre ss space. Therefore, it is called a "context label". | |||
</t> | </li> | |||
<t> | <li pn="section-5.7-3.7"> | |||
The PLR may establish the egress-protection bypass tunnel to P in se | The PLR may establish the egress-protection bypass tunnel to P in se | |||
veral manners. If the bypass tunnel is established by RSVP, the PLR signals the | veral manners. If the bypass tunnel is established by RSVP, the PLR signals the | |||
bypass tunnel with the context ID as destination, and P binds the context label | bypass tunnel with the context ID as the destination, and P binds the context la | |||
to the bypass tunnel. If the bypass tunnel is established by LDP, P advertises t | bel to the bypass tunnel. If the bypass tunnel is established by LDP, P advertis | |||
he context label for the context ID as an IP prefix FEC. If the bypass tunnel is | es the context label for the context ID as an IP prefix Forwarding | |||
established by the PLR in a hierarchical manner, the PLR treats the context lab | Equivalence Class (FEC). If the bypass tunnel is established by the PLR in a | |||
el as a one-hop LSP over a regular bypass tunnel to P (e.g., a bypass tunnel to | hierarchical manner, the PLR treats the context label as a one-hop LSP over a re | |||
P's loopback IP address). If the bypass tunnel is constructed by using segment r | gular bypass tunnel to P (e.g., a bypass tunnel to P's loopback IP address). If | |||
outing, the bypass tunnel is represented by a stack of SID labels with the conte | the bypass tunnel is constructed by using Segment Routing, the bypass tunnel is | |||
xt label as the inner-most SID label (<xref target="bypass-estb" />). In any cas | represented by a stack of Segment Identifier (SID) labels with the context label | |||
e, the bypass tunnel is a ultimate-hop-popping (UHP) tunnel whose incoming label | as the inner-most SID label (<xref target="bypass-estb" format="default" sectio | |||
on P is the context label. | nFormat="of" derivedContent="Section 5.9"/>). In any case, the bypass tunnel is | |||
</t> | an ultimate hop-popping (UHP) tunnel whose incoming label on P is the context la | |||
<t> | bel. | |||
During local repair, all the service packets received by P on the by | </li> | |||
pass tunnel have the context label as the top label. P first pops the context la | <li pn="section-5.7-3.8"> | |||
bel. For an MPLS service packet, P further looks up the service label in E's lab | During local repair, all the service packets received by P on the by | |||
el space indicated by the context label. Such kind of forwarding is called conte | pass tunnel have the context label as the top label. P first pops the context la | |||
xt label switching. For an IP service packet, P looks up the IP destination addr | bel. For an MPLS service packet, P looks up the service label in E's label space | |||
ess in E's IP address space indicated by the context label. Such kind of forward | indicated by the context label. Such kind of forwarding is called context label | |||
ing is called context IP forwarding. | switching. For an IP service packet, P looks up the IP destination address in E | |||
</t> | 's IP address space indicated by the context label. Such kind of forwarding is c | |||
</list> | alled context IP forwarding. | |||
</t> | </li> | |||
</section> | </ul> | |||
</section> | ||||
<section anchor="adv" title = "Advertisement and path resolution for contex | <section anchor="adv" numbered="true" toc="include" removeInRFC="false" pn | |||
t ID"> | ="section-5.8"> | |||
<name slugifiedName="name-advertisement-and-path-reso">Advertisement and | ||||
<t> | Path Resolution for Context ID</name> | |||
Path resolution and computation for a context ID are done on ingress rou | <t pn="section-5.8-1"> | |||
ters for egress-protected tunnels, and on PLRs for egress-protection bypass tunn | Path resolution and computation for a context ID are done on ingress rou | |||
els. Given a protected egress {E, P} and its context ID, E and P MUST coordinate | ters for egress-protected tunnels and on PLRs for egress-protection bypass tunne | |||
on the reachability of the context ID in the routing domain and the TE domain. | ls. Given a protected egress {E, P} and its context ID, E and P <bcp14>MUST</bcp | |||
The context ID MUST be advertised in such a manner that all egress-protected tun | 14> coordinate on the reachability of the context ID in the routing domain and t | |||
nels MUST have E as tailend, and all egress-protection bypass tunnels MUST have | he TE domain. The context ID <bcp14>MUST</bcp14> be advertised in such a manner | |||
P as tailend while avoiding E. | that all egress-protected tunnels <bcp14>MUST</bcp14> have E as the tail end, an | |||
</t> | d all egress-protection bypass tunnels <bcp14>MUST</bcp14> have P as the tail en | |||
d while avoiding E. | ||||
<t> | </t> | |||
<t pn="section-5.8-2"> | ||||
This document suggests three approaches: | This document suggests three approaches: | |||
</t> | </t> | |||
<ul empty="true" bare="false" spacing="normal" pn="section-5.8-3"> | ||||
<t> | <li pn="section-5.8-3.1"> | |||
<list style ="numbers"> | <ol spacing="normal" type="1" start="1" pn="section-5.8-3.1.1"> | |||
<t> | <li pn="section-5.8-3.1.1.1" derivedCounter="1."> | |||
The first approach is called "proxy mode". It requires E and P, but | The first approach is called "proxy mode". It requires E and P, but | |||
not the PLR, to have the knowledge of the egress protection schema. E and P adve | not the PLR, to have the knowledge of the egress protection schema. E and P adve | |||
rtise the context ID as a virtual proxy node (i.e., a logical node) connected to | rtise the context ID as a virtual proxy node (i.e., a logical node) connected to | |||
the two routers, with the link between the proxy node and E having more prefera | the two routers, with the link between the proxy node and E having more prefera | |||
ble IGP and TE metrics than the link between the proxy node and P. Therefore, al | ble IGP and TE metrics than the link between the proxy node and P. Therefore, al | |||
l egress-protected tunnels destined for the context ID will automatically follow | l egress-protected tunnels destined for the context ID will automatically follow | |||
the IGP or TE paths to E. Each PLR will no longer view itself as a penultimate- | the IGP or TE paths to E. Each PLR will no longer view itself as a penultimate | |||
hop, but rather two hops away from the proxy node, via E. The PLR will be able t | hop but rather as two hops away from the proxy node, via E. The PLR will be able | |||
o find a bypass path via P to the proxy node, while the bypass tunnel is actuall | to find a bypass path via P to the proxy node, while the bypass tunnel is actua | |||
y be terminated by P. | lly terminated by P. | |||
</t> | </li> | |||
<li pn="section-5.8-3.1.1.2" derivedCounter="2."> | ||||
<t> | ||||
The second approach is called "alias mode". It requires P and the | The second approach is called "alias mode". It requires P and the | |||
PLR, but not E, to have the knowledge of the egress protection schema. E simply | PLR, but not E, to have the knowledge of the egress protection schema. E simply | |||
advertises the context ID as an IP address. P advertises the context ID and the | advertises the context ID as an IP address. P advertises the context ID and the | |||
context label by using a "context ID label binding" advertisement. In both | context label by using a "context ID label binding" advertisement. In both | |||
routing domain and TE domain, the context ID is only reachable via | the routing domain and TE domain, the context ID is only reachable via | |||
E. Therefore, all egress-protected tunnels destined for the context ID will | E. Therefore, all egress-protected tunnels destined for the context ID will | |||
have E as tailend. Based on the "context ID label binding" advertisement, the | have E as the tail end. Based on the "context ID label binding" advertisement, t | |||
PLR can establish an egress-protection bypass tunnel in several manners (<xref | he | |||
target="bypass-estb"/>). The "context ID label binding" advertisement is | PLR can establish an egress-protection bypass tunnel in several manners (<xref t | |||
defined as IGP mirroring context segment in <xref target="RFC8402"/> and <xref t | arget="bypass-estb" format="default" sectionFormat="of" derivedContent="Section | |||
arget="RFCYYYY"/>. These IGP extensions are generic in nature, and hence can be | 5.9"/>). The "context ID label binding" advertisement is | |||
used for egress protection purposes. It is RECOMMENDED that a similar advertisem | defined as the IGP Mirroring Context segment in <xref target="RFC8402" format="d | |||
ent be defined for OSPF as well. | efault" sectionFormat="of" derivedContent="RFC8402"/> and <xref target="RFC8667" | |||
</t> | format="default" sectionFormat="of" derivedContent="RFC8667"/>. These IGP exten | |||
sions are generic in nature and hence can be used for egress protection purposes | ||||
<t> | . It is <bcp14>RECOMMENDED</bcp14> that a similar advertisement be defined for O | |||
The third approach is called "stub link mode". In this mode, both E | SPF as well. | |||
and P advertise the context ID as a link to a stub network, essentially modellin | </li> | |||
g the context ID as an anycast IP address owned by the two routers. E, P and the | <li pn="section-5.8-3.1.1.3" derivedCounter="3."> | |||
PLR do not need to have the knowledge of the egress protection schema. The corr | The third approach is called "stub link mode". In this mode, both E | |||
ectness of the egress-protected tunnels and the bypass tunnels relies on the pat | and P advertise the context ID as a link to a stub network, essentially modeling | |||
h computations for the anycast IP address performed by the ingress routers and P | the context ID as an anycast IP address owned by the two routers. E, P, and the | |||
LR. Therefore, care MUST be taken for the applicability of this approach to a ne | PLR do not need to have the knowledge of the egress protection schema. The corr | |||
twork. | ectness of the egress-protected tunnels and the bypass tunnels relies on the pat | |||
</t> | h computations for the anycast IP address performed by the ingress routers and P | |||
</list> | LR. Therefore, care <bcp14>MUST</bcp14> be taken for the applicability of this a | |||
</t> | pproach to a network. | |||
</li> | ||||
<t> | </ol> | |||
This framework considers the above approaches as technically equal, and | </li> | |||
the feasibility of each approach in a given network as dependent on the topology | </ul> | |||
, manageability, and available protocols of the network. For a given context ID, | <t pn="section-5.8-4"> | |||
all relevant routers, including primary PE, protector, and PLR, MUST support an | This framework considers the above approaches as technically equal and t | |||
d agree on the chosen approach. The coordination between these routers can be ac | he feasibility of each approach in a given network as dependent on the topology, | |||
hieved by configuration. | manageability, and available protocols of the network. For a given context ID, | |||
</t> | all relevant routers, including the primary PE, protector, and PLR, <bcp14>MUST< | |||
/bcp14> support and agree on the chosen approach. The coordination between these | ||||
<t> | routers can be achieved by configuration. | |||
In a scenario where an egress-protected tunnel is an inter-area or inter | </t> | |||
-AS tunnel, its associated context ID MUST be propagated by IGP or BGP from the | <t pn="section-5.8-5"> | |||
original area or AS to the area or AS of the ingress router. The propagation pro | In a scenario where an egress-protected tunnel is an inter-area or inter | |||
cess of the context ID SHOULD be the same as that of an IP address in an inter-a | -Autonomous-System (inter-AS) tunnel, its associated context ID <bcp14>MUST</bcp | |||
rea or inter-AS environment. | 14> be propagated by IGP or BGP from the original area or AS to the area or AS o | |||
</t> | f the ingress router. The propagation process of the context ID <bcp14>SHOULD</b | |||
</section> | cp14> be the same as that of an IP address in an inter-area or inter-AS environm | |||
ent. | ||||
<section anchor="bypass-estb" title = "Egress-protection bypass tunnel esta | </t> | |||
blishment"> | </section> | |||
<t> | <section anchor="bypass-estb" numbered="true" toc="include" removeInRFC="f | |||
A PLR MUST know the context ID of a protected egress {E, P} in order to | alse" pn="section-5.9"> | |||
establish an egress-protection bypass tunnel. The information is obtained from t | <name slugifiedName="name-egress-protection-bypass-tun">Egress-Protectio | |||
he signaling or label distribution protocol of the egress-protected tunnel. The | n Bypass Tunnel Establishment</name> | |||
PLR may or may not need to have the knowledge of the egress protection schema. A | <t pn="section-5.9-1"> | |||
ll it does is to set up a bypass tunnel to a context ID while avoiding the next- | A PLR <bcp14>MUST</bcp14> know the context ID of a protected egress {E, | |||
hop router (i.e., egress router). This is achievable by using a constraint-based | P} in order to establish an egress-protection bypass tunnel. The information is | |||
computation algorithm similar to those commonly used for traffic engineering pa | obtained from the signaling or label distribution protocol of the egress-protect | |||
ths and loop-free alternate (LFA) paths. Since the context ID is advertised in t | ed tunnel. The PLR may or may not need to have the knowledge of the egress-prote | |||
he routing domain and the TE domain by IGP according to <xref target="adv" />, t | ction schema. All it does is set up a bypass tunnel to a context ID while avoidi | |||
he PLR is able to resolve or establish such a bypass path with the protector as | ng the next-hop router (i.e., egress router). This is achievable by using a cons | |||
tailend. In the case of proxy mode, the PLR may do so in the same manner as tran | traint-based computation algorithm similar to those commonly used for traffic en | |||
sit node protection. | gineering paths and Loop-Free Alternate (LFA) paths. Since the context ID is adv | |||
</t> | ertised in the routing domain and in the TE domain by IGP according to <xref tar | |||
get="adv" format="default" sectionFormat="of" derivedContent="Section 5.8"/>, th | ||||
<t> | e PLR is able to resolve or establish such a bypass path with the protector as t | |||
he tail end. In the case of proxy mode, the PLR may do so in the same manner as | ||||
transit node protection. | ||||
</t> | ||||
<t pn="section-5.9-2"> | ||||
An egress-protection bypass tunnel may be established via several method s: | An egress-protection bypass tunnel may be established via several method s: | |||
</t> | </t> | |||
<ul empty="true" bare="false" spacing="normal" pn="section-5.9-3"> | ||||
<t> | <li pn="section-5.9-3.1"> | |||
(1) It may be established by a signaling protocol (e.g., RSVP), with the | <ol spacing="normal" type="1" start="1" pn="section-5.9-3.1.1"> | |||
context ID as destination. The protector binds the context label to the bypass | <li pn="section-5.9-3.1.1.1" derivedCounter="1.">It may be establi | |||
tunnel. | shed by a signaling protocol (e.g., RSVP), with the context ID as the destinatio | |||
</t> | n. The protector binds the context label to the bypass tunnel. | |||
</li> | ||||
<t> | <li pn="section-5.9-3.1.1.2" derivedCounter="2."> It may be formed | |||
(2) It may be formed by a topology driven protocol (e.g., LDP with vario | by a topology-driven protocol (e.g., LDP with various LFA mechanisms). The prot | |||
us LFA mechanisms). The protector advertises the context ID as an IP prefix FEC, | ector advertises the context ID as an IP prefix FEC, with the context label boun | |||
with the context label bound to it. | d to it. | |||
</t> | </li> | |||
<li pn="section-5.9-3.1.1.3" derivedCounter="3.">It may be constru | ||||
<t> | cted as a hierarchical tunnel. When the protector uses the alias mode (<xref tar | |||
(3) It may be constructed as a hierarchical tunnel. When the protector u | get="adv" format="default" sectionFormat="of" derivedContent="Section 5.8"/>), t | |||
ses the alias mode (<xref target="adv" />), the PLR will have the knowledge of t | he PLR will have the knowledge of the context ID, context label, and protector ( | |||
he context ID, context label, and protector (i.e., the advertiser). The PLR can | i.e., the advertiser). The PLR can then establish the bypass tunnel in a hierarc | |||
then establish the bypass tunnel in a hierarchical manner, with the context labe | hical manner, with the context label as a one-hop LSP over a regular bypass tunn | |||
l as a one-hop LSP over a regular bypass tunnel to the protector's IP address (e | el to the protector's IP address (e.g., loopback address). This regular bypass t | |||
.g., loopback address). This regular bypass tunnel may be established by RSVP, L | unnel may be established by RSVP, LDP, Segment Routing, or another protocol. | |||
DP, segment routing, or another protocol. | </li> | |||
</t> | </ol> | |||
</li> | ||||
</section> | </ul> | |||
</section> | ||||
<section anchor="local-repair" title = "Local repair on PLR"> | <section anchor="local-repair" numbered="true" toc="include" removeInRFC=" | |||
<t> | false" pn="section-5.10"> | |||
In this framework, a PLR is agnostic to services and service labels. Thi | <name slugifiedName="name-local-repair-on-plr">Local Repair on PLR</name | |||
s obviates the need to maintain bypass forwarding state on a per-service basis, | > | |||
and allows bypass tunnel sharing between egress-protected tunnels. The PLR may s | <t pn="section-5.10-1"> | |||
hare an egress-protection bypass tunnel for multiple egress-protected tunnels as | In this framework, a PLR is agnostic to services and service labels. Thi | |||
sociated with a common protected egress {E, P}. During local repair, the PLR rer | s obviates the need to maintain bypass forwarding state on a per-service basis a | |||
outes all service packets received on the egress-protected tunnels to the egress | nd allows bypass tunnel sharing between egress-protected tunnels. The PLR may sh | |||
-protection bypass tunnel. Service labels remain intact in MPLS service packets. | are an egress-protection bypass tunnel for multiple egress-protected tunnels ass | |||
</t> | ociated with a common protected egress {E, P}. During local repair, the PLR rero | |||
utes all service packets received on the egress-protected tunnels to the egress- | ||||
<t> | protection bypass tunnel. Service labels remain intact in MPLS service packets. | |||
Label operation performed by the PLR depends on the bypass tunnel's char | </t> | |||
acteristics. If the bypass tunnel is a single level tunnel, the rerouting will i | <t pn="section-5.10-2"> | |||
nvolve swapping the incoming label of an egress-protected tunnel to the outgoing | Label operation performed by the PLR depends on the bypass tunnel's char | |||
label of the bypass tunnel. If the bypass tunnel is a hierarchical tunnel, the | acteristics. If the bypass tunnel is a single level tunnel, the rerouting will i | |||
rerouting will involve swapping the incoming label of an egress-protected tunnel | nvolve swapping the incoming label of an egress-protected tunnel to the outgoing | |||
to a context label, and pushing the outgoing label of a regular bypass tunnel. | label of the bypass tunnel. If the bypass tunnel is a hierarchical tunnel, the | |||
If the bypass tunnel is constructed by segment routing, the rerouting will invol | rerouting will involve swapping the incoming label of an egress-protected tunnel | |||
ve swapping the incoming label of an egress-protected tunnel to a context label, | to a context label and pushing the outgoing label of a regular bypass tunnel. I | |||
and pushing the stack of SID labels of the bypass tunnel. | f the bypass tunnel is constructed by Segment Routing, the rerouting will involv | |||
</t> | e swapping the incoming label of an egress-protected tunnel to a context label a | |||
nd pushing the stack of SID labels of the bypass tunnel. | ||||
</section> | </t> | |||
</section> | ||||
<section anchor="upstream-label-distrib" title = "Service label distributio | <section anchor="upstream-label-distrib" numbered="true" toc="include" rem | |||
n from egress router to protector"> | oveInRFC="false" pn="section-5.11"> | |||
<name slugifiedName="name-service-label-distribution-">Service Label Dis | ||||
<t> | tribution from Egress Router to Protector</name> | |||
When a protector receives a rerouted MPLS service packet, it performs co | <t pn="section-5.11-1"> | |||
ntext label switching based on the packet's service label which is assigned by t | When a protector receives a rerouted MPLS service packet, it performs co | |||
he corresponding egress router. In order to achieve this, the protector MUST mai | ntext label switching based on the packet's service label, which is assigned by | |||
ntain the labels of egress-protected services in dedicated label spaces on a per | the corresponding egress router. In order to achieve this, the protector <bcp14> | |||
protected egress {E, P} basis, i.e., one label space for each egress router tha | MUST</bcp14> maintain the labels of egress-protected services in dedicated label | |||
t it protects. | spaces on a per-protected-egress {E, P} basis, i.e., one label space for each e | |||
</t> | gress router that it protects. | |||
</t> | ||||
<t> | <t pn="section-5.11-2"> | |||
Also, there MUST be a service label distribution protocol session betwee | Also, there <bcp14>MUST</bcp14> be a service label distribution protocol | |||
n each egress router and the protector. Through this protocol, the protector lea | session between each egress router and the protector. Through this protocol, th | |||
rns the label binding of each egress-protected service. This is the same label b | e protector learns the label binding of each egress-protected service. This is t | |||
inding that the egress router advertises to the service's ingress router, which | he same label binding that the egress router advertises to the service's ingress | |||
includes a context ID. The corresponding protection service instance on the prot | router, which includes a context ID. The corresponding protection service insta | |||
ector recognizes the service, and resolves forwarding state based on its own con | nce on the protector recognizes the service and resolves forwarding state based | |||
nectivity with the service's destination. It then installs the service label wit | on its own connectivity with the service's destination. It then installs the ser | |||
h the forwarding state in the label space of the egress router, which is indicat | vice label with the forwarding state in the label space of the egress router, wh | |||
ed by the context ID (i.e., context label). | ich is indicated by the context ID (i.e., context label). | |||
</t> | </t> | |||
<t pn="section-5.11-3"> | ||||
<t> | ||||
Different service protocols may use different mechanisms for such kind | Different service protocols may use different mechanisms for such kind | |||
of label distribution. Specific extensions may be needed on a per-protocol | of label distribution. Specific extensions may be needed on a per-protocol | |||
basis or per-service-type basis. The details of the extensions should be | or per-service-type basis. The details of the extensions should be | |||
specified in separate documents. As an example, <xref target="RFC8104"/> specifi | specified in separate documents. As an example, the LDP extensions for pseudowir | |||
es the LDP extensions for pseudowire services. | e services are specified in <xref target="RFC8104" format="default" sectionForma | |||
</t> | t="of" derivedContent="RFC8104"/>. | |||
</t> | ||||
</section> | </section> | |||
<section anchor="centralized" numbered="true" toc="include" removeInRFC="f | ||||
<section anchor="centralized" title = "Centralized protector mode"> | alse" pn="section-5.12"> | |||
<name slugifiedName="name-centralized-protector-mode">Centralized Protec | ||||
<t> | tor Mode</name> | |||
In this framework, it is assumed that the service destination of an egre | <t pn="section-5.12-1"> | |||
ss-protected service MUST be dual-homed to two edge routers of an MPLS network. | In this framework, it is assumed that the service destination of an egre | |||
One of them is the protected egress router, and the other is a backup egress rou | ss-protected service <bcp14>MUST</bcp14> be dual-homed to two edge routers of an | |||
ter. So far in this document, the discussion has been focusing on the scenario w | MPLS network. One of them is the protected egress router, and the other is a ba | |||
here a protector and a backup egress router are co-located as one router. Theref | ckup egress router. So far in this document, the focus of discussion has been on | |||
ore, the number of protectors in a network is equal to the number of backup egre | the scenario where a protector and a backup egress router are co-located as one | |||
ss routers. As another scenario, a network may assign a small number of routers | router. Therefore, the number of protectors in a network is equal to the number | |||
to serve as dedicated protectors, each protecting a subset of egress routers. Th | of backup egress routers. As another scenario, a network may assign a small num | |||
ese protectors are called centralized protectors. | ber of routers to serve as dedicated protectors, each protecting a subset of egr | |||
</t> | ess routers. These protectors are called centralized protectors. | |||
</t> | ||||
<t> | <t pn="section-5.12-2"> | |||
Topologically, a centralized protector may be decoupled from all backup egress routers, or it may be co-located with one backup egress router while deco upled from the other backup egress routers. The procedures in this section assum e that a protector and a backup egress router are decoupled. | Topologically, a centralized protector may be decoupled from all backup egress routers, or it may be co-located with one backup egress router while deco upled from the other backup egress routers. The procedures in this section assum e that a protector and a backup egress router are decoupled. | |||
</t> | </t> | |||
<figure anchor="Figure-2" align="left" suppress-title="false" pn="figure | ||||
<figure align="center" anchor="Figure-2"> | -2"> | |||
<preamble></preamble> | <artwork align="center" name="" type="ascii-art" alt="" pn="section-5. | |||
12-3.1"> | ||||
<artwork align="center"><![CDATA[ | ||||
services 1, ..., N | services 1, ..., N | |||
=====================================> tunnel | =====================================> tunnel | |||
I ------ R1 ------- PLR --------------- E ---- | I ------ R1 ------- PLR --------------- E ---- | |||
ingress penultimate-hop egress \ | ingress penultimate hop egress \ | |||
| . (primary \ | | . (primary \ | |||
| . service \ | | . service \ | |||
| . instances) \ | | . instances) \ | |||
| . \ | | . \ | |||
| . bypass \ service | | . bypass \ service | |||
R2 . tunnel destinations | R2 . tunnel destinations | |||
| . / (CEs, sites) | | . / (CEs, sites) | |||
| . / | | . / | |||
| . / | | . / | |||
| . / | | . / | |||
| . tunnel / | | . tunnel / | |||
| =============> / | | =============> / | |||
P ---------------- E' --- | P ---------------- E' --- | |||
protector backup egress | protector backup egress | |||
(protection (backup | (protection (backup | |||
service service | service service | |||
instances) instances) | instances) instances) </artwork> | |||
</figure> | ||||
]]></artwork> | <t pn="section-5.12-4"> | |||
<postamble></postamble> | Like a co-located protector, a centralized protector hosts protection se | |||
</figure> | rvice instances, receives rerouted service packets from PLRs, and performs conte | |||
xt label switching and/or context IP forwarding. For each service, instead of se | ||||
<t> | nding service packets directly to the service destination, the protector <bcp14> | |||
Like a co-located protector, a centralized protector hosts protection se | MUST</bcp14> send them via another transport tunnel to the corresponding backup | |||
rvice instances, receives rerouted service packets from PLRs, and performs conte | service instance on a backup egress router. The backup service instance in turn | |||
xt label switching and/or context IP forwarding. For each service, instead of se | forwards the service packets to the service destination. Specifically, if the se | |||
nding service packets directly to the service destination, the protector MUST se | rvice is an MPLS service, the protector <bcp14>MUST</bcp14> swap the service lab | |||
nd them via another transport tunnel to the corresponding backup service instanc | el in each received service packet to the label of the backup service advertised | |||
e on a backup egress router. The backup service instance in turn forwards the se | by the backup egress router, and then push the label (or label stack) of the tr | |||
rvice packets to the service destination. Specifically, if the service is an MPL | ansport tunnel. | |||
S service, the protector MUST swap the service label in each received service pa | </t> | |||
cket to the label of the backup service advertised by the backup egress router, | <t pn="section-5.12-5"> | |||
and then push the label (or label stack) of the transport tunnel. | In order for a centralized protector to map an egress-protected MPLS ser | |||
</t> | vice to a service hosted on a backup egress router, there <bcp14>MUST</bcp14> be | |||
a service label distribution protocol session between the backup egress router | ||||
<t> | and the protector. Through this session, the backup egress router advertises the | |||
In order for a centralized protector to map an egress-protected MPLS ser | service label of the backup service, attached with the FEC of the egress-protec | |||
vice to a service hosted on a backup egress router, there MUST be a service labe | ted service and the context ID of the protected egress {E, P}. Based on this inf | |||
l distribution protocol session between the backup egress router and the protect | ormation, the protector associates the egress-protected service with the backup | |||
or. Through this session, the backup egress router advertises the service label | service, resolves or establishes a transport tunnel to the backup egress router, | |||
of the backup service, attached with the FEC of the egress-protected service and | and sets up forwarding state for the label of the egress-protected service in t | |||
the context ID of the protected egress {E, P}. Based on this information, the p | he label space of the egress router. | |||
rotector associates the egress-protected service with the backup service, resolv | </t> | |||
es or establishes a transport tunnel to the backup egress router, and sets up fo | <t pn="section-5.12-6"> | |||
rwarding state for the label of the egress-protected service in the label space | The service label that the backup egress router advertises to the protec | |||
of the egress router. | tor can be the same as the label that the backup egress router advertises to the | |||
</t> | ingress router(s), if and only if the forwarding state of the label does not di | |||
rect service packets towards the protected egress router. Otherwise, the label < | ||||
<t> | bcp14>MUST NOT</bcp14> be used for egress protection, because it would create a | |||
The service label which the backup egress router advertises to the prote | loop for the service packets. In this case, the backup egress router <bcp14>MUST | |||
ctor can be the same as the label which the backup egress router advertises to t | </bcp14> advertise a unique service label for egress protection and set up the f | |||
he ingress router(s), if and only if the forwarding state of the label does not | orwarding state of the label to use the backup egress router's own connectivity | |||
direct service packets towards the protected egress router. Otherwise, the label | with the service destination. | |||
MUST NOT be used for egress protection, because it would create a loop for the | </t> | |||
service packets. In this case, the backup egress router MUST advertise a unique | </section> | |||
service label for egress protection, and set up the forwarding state of the labe | </section> | |||
l to use the backup egress router's own connectivity with the service destinatio | <section anchor="link-protection" numbered="true" toc="include" removeInRFC= | |||
n. | "false" pn="section-6"> | |||
</t> | <name slugifiedName="name-egress-link-protection">Egress Link Protection</ | |||
name> | ||||
</section> | <t pn="section-6-1"> | |||
</section> | Egress link protection is achievable through procedures similar to that o | |||
f egress node protection. In normal situations, an egress router forwards servic | ||||
<section anchor="link-protection" title = "Egress link protection"> | e packets to a service destination based on a service label, whose forwarding st | |||
ate points to an egress link. In egress link protection, the egress router acts | ||||
<t> | as the PLR and performs local failure detection and local repair. Specifically, | |||
Egress link protection is achievable through procedures similar to that o | the egress router pre-establishes an egress-protection bypass tunnel to a protec | |||
f egress node protection. In normal situations, an egress router forwards servic | tor and sets up the bypass forwarding state for the service label to point to th | |||
e packets to a service destination based on a service label, whose forwarding st | e bypass tunnel. During local repair, the egress router reroutes service packets | |||
ate points to an egress link. In egress link protection, the egress router acts | via the bypass tunnel to the protector. The protector in turn forwards the pack | |||
as the PLR, and performs local failure detection and local repair. Specifically, | ets to the service destination (in the co-located protector mode, as shown in <x | |||
the egress router pre-establishes an egress-protection bypass tunnel to a prote | ref target="Figure-3" format="default" sectionFormat="of" derivedContent="Figure | |||
ctor, and sets up the bypass forwarding state for the service label to point to | 3"/>) or forwards the packets to a backup egress router (in the centralized pro | |||
the bypass tunnel. During local repair, the egress router reroutes service packe | tector mode, as shown in <xref target="Figure-4" format="default" sectionFormat= | |||
ts via the bypass tunnel to the protector. The protector in turn forwards the pa | "of" derivedContent="Figure 4"/>). | |||
ckets to the service destination (in the co-located protector mode, as shown in | </t> | |||
Figure 3), or forwards the packets to a backup egress router (in the centralized | <figure anchor="Figure-3" align="left" suppress-title="false" pn="figure-3 | |||
protector mode, as shown in Figure 4). | "> | |||
</t> | <artwork align="center" name="" type="ascii-art" alt="" pn="section-6-2. | |||
1"> | ||||
<figure align="center" anchor="Figure-3"> | ||||
<preamble></preamble> | ||||
<artwork align="center"><![CDATA[ | ||||
service | service | |||
=====================================> tunnel | =====================================> tunnel | |||
I ------ R1 ------- R2 --------------- E ---- | I ------ R1 ------- R2 --------------- E ---- | |||
ingress | ............. egress \ | ingress | ............. egress \ | |||
| . PLR \ | | . PLR \ | |||
| . (primary \ | | . (primary \ | |||
| . service \ | | . service \ | |||
| . instance) \ | | . instance) \ | |||
| . \ | | . \ | |||
| . bypass service | | . bypass service | |||
| . tunnel destination | | . tunnel destination | |||
| . / (CE, site) | | . / (CE, site) | |||
| . / | | . / | |||
| . / | | . / | |||
| . / | | . / | |||
| . / | | . / | |||
| ............... / | | ............... / | |||
R3 --------------- P ---- | R3 --------------- P ---- | |||
protector | protector | |||
(protection | (protection | |||
service | service | |||
instance) | instance) </artwork> | |||
]]></artwork> | </figure> | |||
<postamble></postamble> | <figure anchor="Figure-4" align="left" suppress-title="false" pn="figure-4 | |||
</figure> | "> | |||
<artwork align="center" name="" type="ascii-art" alt="" pn="section-6-3. | ||||
<figure align="center" anchor="Figure-4"> | 1"> | |||
<preamble></preamble> | ||||
<artwork align="center"><![CDATA[ | ||||
service | service | |||
=====================================> tunnel | =====================================> tunnel | |||
I ------ R1 ------- R2 --------------- E ---- | I ------ R1 ------- R2 --------------- E ---- | |||
ingress | ............. egress \ | ingress | ............. egress \ | |||
| . PLR \ | | . PLR \ | |||
| . (primary \ | | . (primary \ | |||
| . service \ | | . service \ | |||
| . instance) \ | | . instance) \ | |||
| . \ | | . \ | |||
| . bypass service | | . bypass service | |||
| . tunnel destination | | . tunnel destination | |||
| . / (CE, site) | | . / (CE, site) | |||
| . / | | . / | |||
| . / | | . / | |||
| . / | | . / | |||
| . tunnel / | | . tunnel / | |||
| =============> / | | =============> / | |||
R3 --------------- P ---- | R3 --------------- P ---- | |||
protector backup egress | protector backup egress | |||
(protection (backup | (protection (backup | |||
service service | service service | |||
instance) instance) | instance) instance) </artwork> | |||
</figure> | ||||
]]></artwork> | <t pn="section-6-4"> | |||
<postamble></postamble> | There are two approaches for setting up the bypass forwarding state on t | |||
</figure> | he egress router, depending on whether the egress router knows the service label | |||
allocated by the backup egress router. The difference is that one approach requ | ||||
<t> | ires the protector to perform context label switching, and the other one does no | |||
There are two approaches to set up the bypass forwarding state on the eg | t. Both approaches are equally supported by this framework. | |||
ress router, depending on whether the egress router knows the service label allo | </t> | |||
cated by the backup egress router. The difference is that one approach requires | <ul empty="true" spacing="normal" bare="false" pn="section-6-5"> | |||
the protector to perform context label switching, and the other one does not. Bo | <li pn="section-6-5.1"> | |||
th approaches are equally supported by this framework. | <ol spacing="normal" type="1" start="1" pn="section-6-5.1.1"> | |||
</t> | <li pn="section-6-5.1.1.1" derivedCounter="1.">The first approach ap | |||
plies when the egress router does not know the service label allocated by the ba | ||||
<t> | ckup egress router. In this case, the egress router sets up the bypass forwardin | |||
<list> | g state as a label push with the outgoing label of the egress-protection bypass | |||
<t> | tunnel. Rerouted packets will have the egress router's service label intact. The | |||
(1) The first approach applies when the egress router does not know th | refore, the protector <bcp14>MUST</bcp14> perform context label switching, and t | |||
e service label allocated by the backup egress router. In this case, the egress | he bypass tunnel <bcp14>MUST</bcp14> be destined for the context ID of the prote | |||
router sets up the bypass forwarding state as a label push with the outgoing lab | cted egress {E, P} and established as described in <xref target="bypass-estb" fo | |||
el of the egress-protection bypass tunnel. Rerouted packets will have the egress | rmat="default" sectionFormat="of" derivedContent="Section 5.9"/>. This approach | |||
router's service label intact. Therefore, the protector MUST perform context la | is consistent with egress node protection. Hence, a protector can serve in egres | |||
bel switching, and the bypass tunnel MUST be destined for the context ID of the | s node protection and egress link protection in a consistent manner, and both th | |||
protected egress {E, P} and established as described in <xref target="bypass-est | e co-located protector mode and the centralized protector mode are supported (se | |||
b" />. This approach is consistent with egress node protection. Hence, a protect | e Figures <xref target="Figure-3" format="counter" sectionFormat="of" derivedCon | |||
or can serve in egress node protection and egress link protection in a consisten | tent="3"/> and <xref target="Figure-4" format="counter" sectionFormat="of" deriv | |||
t manner, and both the co-located protector mode and the centralized protector m | edContent="4"/>). | |||
ode are supported (Figure 3 and Figure 4). | </li> | |||
</t> | <li pn="section-6-5.1.1.2" derivedCounter="2."> The second approach | |||
applies when the egress router knows the service label allocated by the backup e | ||||
<t> | gress router, via a label distribution protocol session. In this case, the backu | |||
(2) The second approach applies when the egress router knows the servic | p egress router serves as the protector for egress link protection, regardless o | |||
e label allocated by the backup egress router, via a label distribution protocol | f the protector of egress node protection, which will be the same router in the | |||
session. In this case, the backup egress router serves as the protector for egr | co-located protector mode but a different router in the centralized protector mo | |||
ess link protection, regardless of the protector of egress node protection, whic | de. The egress router sets up the bypass forwarding state as a label swap from t | |||
h will be the same router in the co-located protector mode but a different route | he incoming service label to the service label of the backup egress router (i.e. | |||
r in the centralized protector mode. The egress router sets up the bypass forwar | , protector), followed by a push with the outgoing label (or label stack) of the | |||
ding state as a label swap from the incoming service label to the service label | egress link protection bypass tunnel. The bypass tunnel is a regular tunnel des | |||
of the backup egress router (i.e., protector), followed by a push with the outgo | tined for an IP address of the protector, instead of the context ID of the prote | |||
ing label (or label stack) of the egress link protection bypass tunnel. The bypa | cted egress {E, P}. The protector simply forwards rerouted service packets based | |||
ss tunnel is a regular tunnel destined for an IP address of the protector, inste | on its own service label rather than performing context label switching. In thi | |||
ad of the context ID of the protected egress {E, P}. The protector simply forwar | s approach, only the co-located protector mode is applicable. | |||
ds rerouted service packets based on its own service label, rather than performi | </li> | |||
ng context label switching. In this approach, only the co-located protector mode | </ol> | |||
is applicable. | </li> | |||
</t> | </ul> | |||
<t pn="section-6-6"> | ||||
</list> | Note that for a bidirectional service, the physical link of an egress lin | |||
</t> | k may carry service traffic bidirectionally. Therefore, an egress link failure m | |||
ay simultaneously be an ingress link failure for the traffic in the opposite dir | ||||
<t> | ection. Protection for ingress link failure <bcp14>SHOULD</bcp14> be provided by | |||
Note that for a bidirectional service, the physical link of an egress lin | a separate mechanism and hence is out of the scope of this document. | |||
k may carry service traffic bi-directionally. Therefore, an egress link failure | </t> | |||
may simultaneously be an ingress link failure for the traffic in the opposite di | </section> | |||
rection. Protection for ingress link failure SHOULD be provided by a separate me | <section numbered="true" toc="include" removeInRFC="false" pn="section-7"> | |||
chanism, and hence is out of the scope of this document. | <name slugifiedName="name-global-repair">Global Repair</name> | |||
</t> | <t pn="section-7-1"> | |||
This framework provides a fast but temporary repair for egress node and e | ||||
</section> | gress link failures. For permanent repair, the services affected by a failure <b | |||
cp14>SHOULD</bcp14> be moved to an alternative tunnel, or replaced by alternativ | ||||
<section title = "Global repair"> | e services, which are fully functional. This is referred to as global repair. Po | |||
ssible triggers of global repair include control-plane notifications of tunnel s | ||||
<t> | tatus and service status, end-to-end OAM and fault detection at the tunnel and s | |||
This framework provides a fast but temporary repair for egress node and e | ervice level, and others. The alternative tunnel and services may be pre-establi | |||
gress link failures. For permanent repair, the services affected by a failure SH | shed in standby state or dynamically established as a result of the triggers or | |||
OULD be moved to an alternative tunnel, or replaced by alternative services, whi | network protocol convergence. | |||
ch are fully functional. This is referred to as global repair. Possible triggers | </t> | |||
of global repair include control plane notifications of tunnel status and servi | </section> | |||
ce status, end-to-end OAM and fault detection at tunnel and service level, and o | <section numbered="true" toc="include" removeInRFC="false" pn="section-8"> | |||
thers. The alternative tunnel and services may be pre-established in standby sta | <name slugifiedName="name-operational-considerations">Operational Consider | |||
te, or dynamically established as a result of the triggers or network protocol c | ations</name> | |||
onvergence. | <t pn="section-8-1"> | |||
</t> | When a PLR performs local repair, the router <bcp14>SHOULD</bcp14> genera | |||
</section> | te an alert for the event. The alert may be logged locally for tracking purposes | |||
, or it may be sent to the operator at a management station. The communication c | ||||
<section title = "Operational Considerations"> | hannel and protocol between the PLR and the management station may vary dependin | |||
<t> | g on networks and are out of the scope of this document. | |||
When a PLR performs local repair, the router SHOULD generate an alert for | </t> | |||
the event. The alert may be logged locally for tracking purposes, or it may be | </section> | |||
sent to the operator at a management station. The communication channel and prot | <section numbered="true" toc="include" removeInRFC="false" pn="section-9"> | |||
ocol between the PLR and the management station may vary depending on networks, | <name slugifiedName="name-general-context-based-forwa">General Context-Bas | |||
and are out of the scope of this document. | ed Forwarding</name> | |||
</t> | <t pn="section-9-1"> | |||
</section> | So far, this document has been focusing on the cases where service | |||
packets are MPLS or IP packets, and protectors perform context label | ||||
<section title = "General context-based forwarding"> | switching or context IP forwarding. | |||
<t> | ||||
So far, this document has been focusing on the cases where service packet | ||||
s are MPLS or IP packets and protectors perform context label switching or conte | ||||
xt IP forwarding. Although this should cover most common services, it is worth m | ||||
entioning that the framework is also applicable to services or sub-modes of serv | ||||
ices where service packets are layer-2 packets or encapsulated in non-IP/MPLS fo | ||||
rmats. The only specific in these cases is that a protector MUST perform context | ||||
-based forwarding based on the layer-2 table or corresponding lookup table which | ||||
is indicated by a context ID (i.e., context label). | ||||
</t> | ||||
</section> | ||||
<section title = "Example: Layer-3 VPN egress protection"> | ||||
<t> | ||||
This section shows an example of egress protection for layer-3 IPv4 and I | ||||
Pv6 VPNs. | ||||
</t> | ||||
<figure align="center" anchor="Figure-5"> | ||||
<preamble></preamble> | ||||
<artwork align="center"><![CDATA[ | ||||
Although this should cover most common services, it is worth mentioning that the | ||||
framework is also applicable to services or sub-modes of services where service | ||||
packets are Layer 2 packets or encapsulated in non-IP and non-MPLS formats. The | ||||
only specific in these cases is that a protector <bcp14>MUST</bcp14> perform co | ||||
ntext-based forwarding based on the Layer 2 table or corresponding lookup table, | ||||
which is indicated by a context ID (i.e., context label). | ||||
</t> | ||||
</section> | ||||
<section numbered="true" toc="include" removeInRFC="false" pn="section-10"> | ||||
<name slugifiedName="name-example-layer-3-vpn-egress-">Example: Layer 3 VP | ||||
N Egress Protection</name> | ||||
<t pn="section-10-1"> | ||||
This section shows an example of egress protection for Layer 3 IPv4 and I | ||||
Pv6 VPNs. | ||||
</t> | ||||
<figure anchor="Figure-5" align="left" suppress-title="false" pn="figure-5 | ||||
"> | ||||
<artwork align="center" name="" type="ascii-art" alt="" pn="section-10-2 | ||||
.1"> | ||||
---------- R1 ----------- PE2 - | ---------- R1 ----------- PE2 - | |||
/ (PLR) (PLR) \ | / (PLR) (PLR) \ | |||
( ) / | | ( ) | ( ) / | | ( ) | |||
( ) / | | ( ) | ( ) / | | ( ) | |||
( site 1 )-- PE1 < | R3 ( site 2 ) | ( site 1 )-- PE1 < | R3 ( site 2 ) | |||
( ) \ | | ( ) | ( ) \ | | ( ) | |||
( ) \ | | ( ) | ( ) \ | | ( ) | |||
\ | | / | \ | | / | |||
---------- R2 ----------- PE3 - | ---------- R2 ----------- PE3 - | |||
(protector) | (protector) </artwork> | |||
</figure> | ||||
]]></artwork> | <t pn="section-10-3"> | |||
<postamble></postamble> | In this example, the core network is IPv4 and MPLS. Both of the IPv4 and | |||
</figure> | IPv6 VPNs consist of sites 1 and 2. Site 1 is connected to PE1, and site 2 is du | |||
al-homed to PE2 and PE3. Site 1 includes an IPv4 subnet 203.0.113.64/26 and an I | ||||
<t> | Pv6 subnet 2001:db8:1:1::/64. Site 2 includes an IPv4 subnet 203.0.113.128/26 an | |||
In this example, the core network is IPv4 and MPLS. Both of the IPv4 VPN | d an IPv6 subnet 2001:db8:1:2::/64. PE2 is the primary PE for site 2, and PE3 is | |||
and the IPv6 VPN consist of site 1 and site 2. Site 1 is connected to PE1, and s | the backup PE. Each of PE1, PE2, and PE3 hosts an IPv4 VPN instance and an IPv6 | |||
ite 2 is dual-homed to PE2 and PE3. Site 1 includes an IPv4 subnet 203.0.113.64/ | VPN instance. The PEs use BGP to exchange VPN prefixes and VPN labels between e | |||
26 and an IPv6 subnet 2001:db8:1:1::/64. Site 2 includes an IPv4 subnet 203.0.11 | ach other. In the core network, R1 and R2 are transit routers, OSPF is used as t | |||
3.128/26 and an IPv6 subnet 2001:db8:1:2::/64. PE2 is the primary PE for site 2, | he routing protocol, and RSVP-TE is used as the tunnel signaling protocol. | |||
and PE3 is the backup PE. Each of PE1, PE2 and PE3 hosts an IPv4 VPN instance a | </t> | |||
nd an IPv6 VPN instance. The PEs use BGP to exchange VPN prefixes and VPN labels | <t pn="section-10-4"> | |||
between each other. In the core network, R1 and R2 are transit routers, OSPF is | Using the framework in this document, the network assigns PE3 to be the p | |||
used as the routing protocol, and RSVP-TE as the tunnel signaling protocol. | rotector of PE2 to protect the VPN traffic in the direction from site 1 to site | |||
</t> | 2. This is the co-located protector mode. PE2 and PE3 form a protected egress {P | |||
E2, PE3}. Context ID 198.51.100.1 is assigned to the protected egress {PE2, PE3} | ||||
<t> | . (If the core network is IPv6, the context ID would be an IPv6 address.) The IP | |||
Using the framework in this document, the network assigns PE3 to be the p | v4 and IPv6 VPN instances on PE3 serve as protection instances for the correspon | |||
rotector of PE2 to protect the VPN traffic in the direction from site 1 to site | ding VPN instances on PE2. On PE3, context label 100 is assigned to the context | |||
2. This is the co-located protector mode. PE2 and PE3 form a protected egress {P | ID, and a label table pe2.mpls is created to represent PE2's label space. PE3 in | |||
E2, PE3}. A context ID 198.51.100.1 is assigned to the protected egress {PE2, PE | stalls label 100 in its MPLS forwarding table, with the next hop pointing to the | |||
3}. (If the core network is IPv6, the context ID would be an IPv6 address.) The | label table pe2.mpls. PE2 and PE3 are coordinated to use the proxy mode to adve | |||
IPv4 and IPv6 VPN instances on PE3 serve as protection instances for the corresp | rtise the context ID in the routing domain and the TE domain. | |||
onding VPN instances on PE2. On PE3, a context label 100 is assigned to the cont | </t> | |||
ext ID, and a label table pe2.mpls is created to represent PE2's label space. PE | <t pn="section-10-5"> | |||
3 installs label 100 in its MPLS forwarding table, with nexthop pointing to the | PE2 uses the label allocation mode per Virtual Routing and Forwarding (VR | |||
label table pe2.mpls. PE2 and PE3 are coordinated to use the proxy mode to adver | F) for both of its IPv4 and IPv6 VPN instances. It assigns label 9000 to the IPv | |||
tise the context ID in the routing domain and the TE domain. | 4 VRF, and label 9001 to the IPv6 VRF. For the IPv4 prefix 203.0.113.128/26 in s | |||
</t> | ite 2, PE2 advertises it with label 9000 and NEXT_HOP 198.51.100.1 to PE1 and PE | |||
3 via BGP. Likewise, for the IPv6 prefix 2001:db8:1:2::/64 in site 2, PE2 advert | ||||
<t> | ises it with label 9001 and NEXT_HOP 198.51.100.1 to PE1 and PE3 via BGP. | |||
PE2 uses per-VRF label allocation mode for both of its IPv4 and IPv6 VPN | </t> | |||
instances. It assigns label 9000 to the IPv4 VRF, and label 9001 to the IPv6 VRF | <t pn="section-10-6"> | |||
. For the IPv4 prefix 203.0.113.128/26 in site 2, PE2 advertises it with label 9 | PE3 also uses per-VRF VPN label allocation mode for both of its IPv4 and | |||
000 and NEXT_HOP 198.51.100.1 to PE1 and PE3 via BGP. Likewise, for the IPv6 pre | IPv6 VPN instances. It assigns label 10000 to the IPv4 VRF and label 10001 to th | |||
fix 2001:db8:1:2::/64 in site 2, PE2 advertises it with label 9001 and NEXT_HOP | e IPv6 VRF. For the prefix 203.0.113.128/26 in site 2, PE3 advertises it with la | |||
198.51.100.1 to PE1 and PE3 via BGP. | bel 10000 and NEXT_HOP as itself to PE1 and PE2 via BGP. For the IPv6 prefix 200 | |||
</t> | 1:db8:1:2::/64 in site 2, PE3 advertises it with label 10001 and NEXT_HOP as its | |||
elf to PE1 and PE2 via BGP. | ||||
<t> | </t> | |||
PE3 also uses per-VRF VPN label allocation mode for both of its IPv4 and | <t pn="section-10-7"> | |||
IPv6 VPN instances. It assigns label 10000 to the IPv4 VRF, and label 10001 to t | Upon receipt of the above BGP advertisements from PE2, PE1 uses the conte | |||
he IPv6 VRF. For the prefix 203.0.113.128/26 in site 2, PE3 advertises it with l | xt ID 198.51.100.1 as the destination to compute a path for an egress-protected | |||
abel 10000 and NEXT_HOP as itself to PE1 and PE2 via BGP. For the IPv6 prefix 20 | tunnel. The resultant path is PE1->R1->PE2. PE1 then uses RSVP to signal t | |||
01:db8:1:2::/64 in site 2, PE3 advertises it with label 10001 and NEXT_HOP as it | he tunnel, with the context ID 198.51.100.1 as the destination, with the "node p | |||
self to PE1 and PE2 via BGP. | rotection desired" flag set in the SESSION_ATTRIBUTE of the RSVP Path message. O | |||
</t> | nce the tunnel comes up, PE1 maps the VPN prefixes 203.0.113.128/26 and 2001:db8 | |||
:1:2::/64 to the tunnel and installs a route for each prefix in the correspondin | ||||
<t> | g IPv4 or IPv6 VRF. The next hop of route 203.0.113.128/26 is a push of the VPN | |||
Upon receipt of the above BGP advertisements from PE2, PE1 uses the conte | label 9000, followed by a push of the outgoing label of the egress-protected tun | |||
xt ID 198.51.100.1 as destination to compute a path for an egress-protected tunn | nel. The next hop of route 2001:db8:1:2::/64 is a push of the VPN label 9001, fo | |||
el. The resultant path is PE1->R1->PE2. PE1 then uses RSVP to signal the tunnel, | llowed by a push of the outgoing label of the egress-protected tunnel. | |||
with the context ID 198.51.100.1 as destination, and with the "node protection | </t> | |||
desired" flag set in the SESSION_ATTRIBUTE of RSVP Path message. Once the tunnel | <t pn="section-10-8"> | |||
comes up, PE1 maps the VPN prefixes 203.0.113.128/26 and 2001:db8:1:2::/64 to t | Upon receipt of the above BGP advertisements from PE2, PE3 recognizes the | |||
he tunnel, and installs a route for each prefix in the corresponding IPv4 or IPv | context ID 198.51.100.1 in the NEXT_HOP attribute and installs a route for labe | |||
6 VRF. The nexthop of the route 203.0.113.128/26 is a push of the VPN label 9000 | l 9000 and a route for label 9001 in the label table pe2.mpls. PE3 sets the next | |||
, followed by a push of the outgoing label of the egress-protected tunnel. The n | hop of route 9000 to the IPv4 protection VRF and the next hop of route 9001 to | |||
exthop of the route 2001:db8:1:2::/64 is a push of the VPN label 9001, followed | the IPv6 protection VRF. The IPv4 protection VRF contains the routes to the IPv4 | |||
by a push of the outgoing label of the egress-protected tunnel. | prefixes in site 2. The IPv6 protection VRF contains the routes to the IPv6 pre | |||
</t> | fixes in site 2. The next hops of these routes must be based on PE3's connectivi | |||
ty with site 2, even if the connectivity may not have the best metrics (e.g., Mu | ||||
<t> | lti-Exit Discriminator (MED), local preference, etc.) to be used in PE3's own VR | |||
Upon receipt of the above BGP advertisements from PE2, PE3 recognizes the | F. The next hops must not use any path traversing PE2. Note that the protection | |||
context ID 198.51.100.1 in the NEXT_HOP attribute, and installs a route for lab | VRFs are a logical concept, and they may simply be PE3's own VRFs if they satisf | |||
el 9000 and a route for label 9001 in the label table pe2.mpls. PE3 sets the nex | y the requirement. | |||
thop of the route 9000 to the IPv4 protection VRF, and the nexthop of the route | </t> | |||
9001 to the IPv6 protection VRF. The IPv4 protection VRF contains the routes to | <section numbered="true" toc="include" removeInRFC="false" pn="section-10. | |||
the IPv4 prefixes in site 2. The IPv6 protection VRF contains the routes to the | 1"> | |||
IPv6 prefixes in site 2. The nexthops of these routes must be based on PE3's con | <name slugifiedName="name-egress-node-protection-2">Egress Node Protecti | |||
nectivity with site 2, even if the connectivity may not have the best metrics (e | on</name> | |||
.g., MED, local preference, etc.) to be used in PE3's own VRF. The nexthops must | <t pn="section-10.1-1"> | |||
not use any path traversing PE2. Note that the protection VRFs are a logical co | R1, i.e., the penultimate hop router of the egress-protected tunnel, ser | |||
ncept, and they may simply be PE3's own VRFs if they satisfies the requirement. | ves as the PLR for egress node protection. Based on the "node protection desired | |||
</t> | " flag and the destination address (i.e., context ID 198.51.100.1) of the tunnel | |||
, R1 computes a bypass path to 198.51.100.1 while avoiding PE2. The resultant by | ||||
<section title = "Egress node protection"> | pass path is R1->R2->PE3. R1 then signals the path (i.e., egress-protectio | |||
<t> | n bypass tunnel), with 198.51.100.1 as the destination. | |||
R1, i.e., the penultimate-hop router of the egress-protected tunnel, ser | </t> | |||
ves as the PLR for egress node protection. Based on the "node protection desired | <t pn="section-10.1-2"> | |||
" flag and the destination address (i.e., context ID 198.51.100.1) of the tunnel | Upon receipt of an RSVP Path message of the egress-protection bypass tun | |||
, R1 computes a bypass path to 198.51.100.1 while avoiding PE2. The resultant by | nel, PE3 recognizes the context ID 198.51.100.1 as the destination and responds | |||
pass path is R1->R2->PE3. R1 then signals the path (i.e., egress-protection bypa | with context label 100 in an RSVP Resv message. | |||
ss tunnel), with 198.51.100.1 as destination. | </t> | |||
</t> | <t pn="section-10.1-3"> | |||
After the egress-protection bypass tunnel comes up, R1 installs a bypass | ||||
<t> | next hop for the egress-protected tunnel. The bypass next hop is a label swap f | |||
Upon receipt of an RSVP Path message of the egress-protection bypass tun | rom the incoming label of the egress-protected tunnel to the outgoing label of t | |||
nel, PE3 recognizes the context ID 198.51.100.1 as the destination, and responds | he egress-protection bypass tunnel. | |||
with the context label 100 in an RSVP Resv message. | </t> | |||
</t> | <t pn="section-10.1-4"> | |||
When R1 detects a failure of PE2, it will invoke the above bypass next h | ||||
<t> | op to reroute VPN packets. Each IPv4 VPN packet will have the label of the bypas | |||
After the egress-protection bypass tunnel comes up, R1 installs a bypass | s tunnel as outer label, and the IPv4 VPN label 9000 as inner label. Each IPv6 V | |||
nexthop for the egress-protected tunnel. The bypass nexthop is a label swap fro | PN packet will have the label of the bypass tunnel as the outer label and the IP | |||
m the incoming label of the egress-protected tunnel to the outgoing label of the | v6 VPN label 9001 as the inner label. When the packets arrive at PE3, they will | |||
egress-protection bypass tunnel. | have the context label 100 as the outer label and the VPN label 9000 or 9001 as | |||
</t> | the inner label. The context label will first be popped, and then the VPN label | |||
will be looked up in the label table pe2.mpls. The lookup will cause the VPN lab | ||||
<t> | el to be popped and the IPv4 and IPv6 packets to be forwarded to site 2 based on | |||
When R1 detects a failure of PE2, it will invoke the above bypass nextho | the IPv4 and IPv6 protection VRFs, respectively. | |||
p to reroute VPN packets. Each IPv4 VPN packet will have the label of the bypass | </t> | |||
tunnel as outer label, and the IPv4 VPN label 9000 as inner label. Each IPv6 VP | </section> | |||
N packets will have the label of the bypass tunnel as outer label, and the IPv6 | <section numbered="true" toc="include" removeInRFC="false" pn="section-10. | |||
VPN label 9001 as inner label. When the packets arrive at PE3, they will have th | 2"> | |||
e context label 100 as outer label, and the VPN label 9000 or 9001 as inner labe | <name slugifiedName="name-egress-link-protection-2">Egress Link Protecti | |||
l. The context label will first be popped, and then the VPN label will be looked | on</name> | |||
up in the label table pe2.mpls. The lookup will cause the VPN label to be poppe | <t pn="section-10.2-1"> | |||
d, and the IPv4 and IPv6 packets to be forwarded to site 2 based on the IPv4 and | PE2 serves as the PLR for egress link protection. It has already learned | |||
IPv6 protection VRFs, respectively. | PE3's IPv4 VPN label 10000 and IPv6 VPN label 10001. Hence, it uses approach (2 | |||
</t> | ) as described in <xref target="link-protection" format="default" sectionFormat= | |||
"of" derivedContent="Section 6"/> to set up the bypass forwarding state. It sign | ||||
</section> | als an egress-protection bypass tunnel to PE3, by using the path PE2->R3-> | |||
PE3, and PE3's IP address as the destination. After the bypass tunnel comes up, | ||||
<section title = "Egress link protection"> | PE2 installs a bypass next hop for the IPv4 VPN label 9000 and a bypass next hop | |||
<t> | for the IPv6 VPN label 9001. For label 9000, the bypass next hop is a label swa | |||
PE2 serves as the PLR for egress link protection. It has already learned | p to label 10000, followed by a label push with the outgoing label of the bypass | |||
PE3's IPv4 VPN label 10000 and IPv6 VPN label 10001. Hence it uses the approach | tunnel. For label 9001, the bypass next hop is a label swap to label 10001, fol | |||
(2) described in <xref target="link-protection" /> to set up bypass forwarding | lowed by a label push with the outgoing label of the bypass tunnel. | |||
state. It signals an egress-protection bypass tunnel to PE3, by using the path P | </t> | |||
E2->R3->PE3, and PE3's IP address as destination. After the bypass tunnel comes | <t pn="section-10.2-2"> | |||
up, PE2 installs a bypass nexthop for the IPv4 VPN label 9000, and a bypass next | When PE2 detects a failure of the egress link, it will invoke the above | |||
hop for the IPv6 VPN label 9001. For label 9000, the bypass nexthop is a label s | bypass next hop to reroute VPN packets. Each IPv4 VPN packet will have the label | |||
wap to label 10000, followed by a label push with the outgoing label of the bypa | of the bypass tunnel as the outer label and label 10000 as the inner label. Eac | |||
ss tunnel. For label 9001, the bypass nexthop is a label swap to label 10001, fo | h IPv6 VPN packet will have the label of the bypass tunnel as the outer label an | |||
llowed by a label push with the outgoing label of the bypass tunnel. | d label 10001 as the inner label. When the packets arrive at PE3, the VPN label | |||
</t> | 10000 or 10001 will be popped, and the exposed IPv4 and IPv6 packets will be for | |||
warded based on PE3's IPv4 and IPv6 VRFs, respectively. | ||||
<t> | </t> | |||
When PE2 detects a failure of the egress link, it will invoke the above | </section> | |||
bypass nexthop to reroute VPN packets. Each IPv4 VPN packet will have the label | <section numbered="true" toc="include" removeInRFC="false" pn="section-10. | |||
of the bypass tunnel as outer label, and label 10000 as inner label. Each IPv6 V | 3"> | |||
PN packet will have the label of the bypass tunnel as outer label, and label 100 | <name slugifiedName="name-global-repair-2">Global Repair</name> | |||
01 as inner label. When the packets arrive at PE3, the VPN label 10000 or 10001 | <t pn="section-10.3-1"> | |||
will be popped, and the exposed IPv4 and IPv6 packets will be forwarded based on | Eventually, global repair will take effect, as control-plane protocols c | |||
PE3's IPv4 and IPv6 VRFs, respectively. | onverge on the new topology. PE1 will choose PE3 as a new entrance to site 2. Be | |||
</t> | fore that happens, the VPN traffic has been protected by the above local repair. | |||
</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-10. | ||||
<section title = "Global repair"> | 4"> | |||
<t> | <name slugifiedName="name-other-modes-of-vpn-label-al">Other Modes of VP | |||
Eventually, global repair will take effect, as control plane protocols c | N Label Allocation</name> | |||
onverge on the new topology. PE1 will choose PE3 as a new entrance to site 2. Be | <t pn="section-10.4-1"> | |||
fore that happens, the VPN traffic has been protected by the above local repair. | It is also possible that PE2 may use per-route or per-interface VPN labe | |||
</t> | l allocation mode. In either case, PE3 will have multiple VPN label routes in th | |||
</section> | e pe2.mpls table, corresponding to the VPN labels advertised by PE2. PE3 forward | |||
s rerouted packets by popping a VPN label and performing an IP lookup in the cor | ||||
<section title = "Other modes of VPN label allocation"> | responding protection VRF. PE3's forwarding behavior is consistent with the abov | |||
e case where PE2 uses per-VRF VPN label allocation mode. PE3 does not need to kn | ||||
<t> | ow PE2's VPN label allocation mode or construct a specific next hop for each VPN | |||
It is also possible that PE2 may use per-route or per-interface VPN labe | label route in the pe2.mpls table. | |||
l allocation mode. In either case, PE3 will have multiple VPN label routes in th | </t> | |||
e pe2.mpls table, corresponding to the VPN labels advertised by PE2. PE3 forward | </section> | |||
s rerouted packets by popping a VPN label and performing an IP lookup in the cor | </section> | |||
responding protection VRF. PE3's forwarding behavior is consistent with the abov | <section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn= | |||
e case where PE2 uses per-VRF VPN label allocation mode. PE3 does not need to kn | "section-11"> | |||
ow PE2's VPN label allocation mode, or construct a specific nexthop for each VPN | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
label route in the pe2.mpls table. | <t pn="section-11-1"> | |||
</t> | This document has no IANA actions. | |||
</section> | </t> | |||
</section> | </section> | |||
<section anchor="Security" numbered="true" toc="include" removeInRFC="false" | ||||
<section anchor="IANA" title="IANA Considerations"> | pn="section-12"> | |||
<t> | <name slugifiedName="name-security-considerations">Security Considerations | |||
This document has no request for new IANA allocation. | </name> | |||
</t> | <t pn="section-12-1"> | |||
</section> | ||||
<section anchor="Security" title="Security Considerations"> | ||||
<t> | ||||
The framework in this document involves rerouting traffic around an egres s node or link failure, via a bypass path from a PLR to a protector, and ultimat ely to a backup egress router. The forwarding performed by the routers in the da ta plane is anticipated, as part of the planning of egress protection. | The framework in this document involves rerouting traffic around an egres s node or link failure, via a bypass path from a PLR to a protector, and ultimat ely to a backup egress router. The forwarding performed by the routers in the da ta plane is anticipated, as part of the planning of egress protection. | |||
</t> | </t> | |||
<t pn="section-12-2"> | ||||
<t> | Control-plane protocols <bcp14>MAY</bcp14> be used to facilitate the prov | |||
Control plane protocols MAY be used to facilitate the provisioning of the | isioning of the egress protection on the routers. In particular, the framework | |||
egress protection on the routers. In particular, the framework requires a serv | requires a service label distribution protocol between an egress router and a pr | |||
ice label distribution protocol between an egress router and a protector over a | otector over a secure session. The security properties of this provisioning and | |||
secure session. The security properties of this provisioning and label distribu | label distribution depend entirely on the underlying protocol chosen to impleme | |||
tion depend entirely on the underlying protocol chosen to implement these activi | nt these activities. Their associated security considerations apply. This framew | |||
ties . Their associated security considerations apply. This framework introduces | ork introduces no new security requirements or guarantees relative to these acti | |||
no new security requirements or guarantees relative to these activities. | vities. | |||
</t> | </t> | |||
<t pn="section-12-3"> | ||||
<t> | Also, the PLR, protector, and backup egress router are located close to t | |||
Also, the PLR, protector, and backup egress router are located close to t | he protected egress router, which is normally in the same administrative domain. | |||
he protected egress router, and normally in the same administrative domain. If | If they are not in the same administrative domain, a certain level of trust <b | |||
they are not in the same administrative domain, a certain level of trust MUST be | cp14>MUST</bcp14> be established between them in order for the protocols to run | |||
established between them in order for the protocols to run securely across the | securely across the domain boundary. The basis of this trust is the security mo | |||
domain boundary. The basis of this trust is the security model of the protocols | del of the protocols (as described above), and further security considerations f | |||
(as described above), and further security considerations for inter-domain scen | or inter-domain scenarios should be addressed by the protocols as a common requi | |||
arios should be addressed by the protocols as a common requirement. | rement. | |||
</t> | </t> | |||
<t pn="section-12-4"> | ||||
<t> | Security attacks may sometimes come from a customer domain. Such attacks | |||
Security attacks may sometimes come from a customer domain. Such kind of | are not introduced by the framework in this document and may occur regardless of | |||
attacks are not introduced by the framework in this document, and may occur rega | the existence of egress protection. In one possible case, the egress link betwe | |||
rdless of the existence of egress protection. In one possible case, the egress l | en an egress router and a CE could become a point of attack. An attacker that g | |||
ink between an egress router and a CE could become a point of attack. An attack | ains control of the CE might use it to simulate link failures and trigger consta | |||
er that gains control of the CE might use it to simulate link failures and trigg | nt and cascading activities in the network. If egress link protection is in plac | |||
er constant and cascading activities in the network. If egress link protection i | e, egress link protection activities may also be triggered. As a general solutio | |||
s in place, egress link protection activities may also be triggered. As a genera | n to defeat the attack, a damping mechanism <bcp14>SHOULD</bcp14> be used by the | |||
l solution to defeat the attack, a damping mechanism SHOULD be used by the egres | egress router to promptly | |||
s router to promptly | ||||
suppress the services associated with the link or CE. The egress router woul d stop advertising the services, essentially detaching them from the network and eliminating the effect of the simulated link failures. | suppress the services associated with the link or CE. The egress router woul d stop advertising the services, essentially detaching them from the network and eliminating the effect of the simulated link failures. | |||
</t> | </t> | |||
<t pn="section-12-5"> | ||||
<t> | ||||
From the above perspectives, this framework does not introduce any new se curity threat to networks. | From the above perspectives, this framework does not introduce any new se curity threat to networks. | |||
</t> | </t> | |||
</section> | </section> | |||
</middle> | ||||
<section anchor="ack" title="Acknowledgements"> | <back> | |||
<t> | <displayreference target="I-D.ietf-rtgwg-bgp-pic" to="BGP-PIC"/> | |||
This document leverages work done by Yakov Rekhter, Kevin Wang and Zhaohu | <references pn="section-13"> | |||
i Zhang on MPLS egress protection. Thanks to Alexander Vainshtein, Rolf Winter, | <name slugifiedName="name-references">References</name> | |||
Lizhong Jin, Krzysztof Szarkowicz, Roman Danyliw, and Yuanlong Jiang for their v | <references pn="section-13.1"> | |||
aluable comments that helped to shape this document and improve its clarity. | <name slugifiedName="name-normative-references">Normative References</na | |||
</t> | me> | |||
</section> | <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | |||
119" quoteTitle="true" derivedAnchor="RFC2119"> | ||||
</middle> | <front> | |||
<title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
<back> | le> | |||
<author initials="S." surname="Bradner" fullname="S. Bradner"> | ||||
<references title="Normative References"> | <organization showOnFrontPage="true"/> | |||
</author> | ||||
&RFC2119; | <date year="1997" month="March"/> | |||
&RFC8174; | <abstract> | |||
&RFC8402; | <t>In many standards track documents several words are used to sig | |||
nify the requirements in the specification. These words are often capitalized. | ||||
<!-- <reference anchor="SR-ISIS"> value="draft-ietf-isis-segment-routing-extensi | This document defines these words as they should be interpreted in IETF document | |||
ons"; companion document RFC YYYY --> | s. This document specifies an Internet Best Current Practices for the Internet | |||
Community, and requests discussion and suggestions for improvements.</t> | ||||
<reference anchor='RFCYYYY'> | </abstract> | |||
<front> | </front> | |||
<title>IS-IS Extensions for Segment Routing</title> | <seriesInfo name="BCP" value="14"/> | |||
<seriesInfo name="RFC" value="2119"/> | ||||
<author initials='S' surname='Previdi' fullname='Stefano Previdi'> | <seriesInfo name="DOI" value="10.17487/RFC2119"/> | |||
<organization /> | </reference> | |||
</author> | <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | |||
174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
<author initials='L' surname='Ginsberg' fullname='Les Ginsberg'> | <front> | |||
<organization /> | <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | |||
</author> | tle> | |||
<author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
<author initials='C' surname='Filsfils' fullname='Clarence Filsfils'> | <organization showOnFrontPage="true"/> | |||
<organization /> | </author> | |||
</author> | <date year="2017" month="May"/> | |||
<abstract> | ||||
<author initials='A' surname='Bashandy' fullname='Ahmed Bashandy'> | <t>RFC 2119 specifies common key words that may be used in protoco | |||
<organization /> | l specifications. This document aims to reduce the ambiguity by clarifying tha | |||
</author> | t only UPPERCASE usage of the key words have the defined special meanings.</t> | |||
</abstract> | ||||
<author initials='H' surname='Gredler' fullname='Hannes Gredler'> | </front> | |||
<organization /> | <seriesInfo name="BCP" value="14"/> | |||
</author> | <seriesInfo name="RFC" value="8174"/> | |||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
<author initials='B' surname='Decraene' fullname='Bruno Decraene'> | </reference> | |||
<organization /> | <reference anchor="RFC8402" target="https://www.rfc-editor.org/info/rfc8 | |||
</author> | 402" quoteTitle="true" derivedAnchor="RFC8402"> | |||
<front> | ||||
<date month='May' day='19' year='2019' /> | <title>Segment Routing Architecture</title> | |||
<author initials="C." surname="Filsfils" fullname="C. Filsfils" role | ||||
<abstract><t>Segment Routing (SR) allows for a flexible definition of end-to-end | ="editor"> | |||
paths within IGP topologies by encoding paths as sequences of topological sub-p | <organization showOnFrontPage="true"/> | |||
aths, called "segments". These segments are advertised by the link-state routin | </author> | |||
g protocols (IS-IS and OSPF). This draft describes the necessary IS-IS extensio | <author initials="S." surname="Previdi" fullname="S. Previdi" role=" | |||
ns that need to be introduced for Segment Routing operating on an MPLS data-plan | editor"> | |||
e.</t></abstract> | <organization showOnFrontPage="true"/> | |||
</author> | ||||
</front> | <author initials="L." surname="Ginsberg" fullname="L. Ginsberg"> | |||
<organization showOnFrontPage="true"/> | ||||
<seriesInfo name="RFC" value="YYYY"/> | </author> | |||
<seriesInfo name="DOI" value="10.17487/RFCYYYY"/> | <author initials="B." surname="Decraene" fullname="B. Decraene"> | |||
<organization showOnFrontPage="true"/> | ||||
</reference> | </author> | |||
<author initials="S." surname="Litkowski" fullname="S. Litkowski"> | ||||
</references> | <organization showOnFrontPage="true"/> | |||
</author> | ||||
<references title="Informative References"> | <author initials="R." surname="Shakir" fullname="R. Shakir"> | |||
&RFC4090; | <organization showOnFrontPage="true"/> | |||
&RFC5286; | </author> | |||
&RFC7490; | <date year="2018" month="July"/> | |||
&RFC7812; | <abstract> | |||
&RFC8104; | <t>Segment Routing (SR) leverages the source routing paradigm. A | |||
&RFC8400; | node steers a packet through an ordered list of instructions, called "segments". | |||
A segment can represent any instruction, topological or service based. A segm | ||||
<!-- <reference anchor="BGP-PIC"> value="draft-ietf-rtgwg-bgp-pic-09.txt"; I-D E | ent can have a semantic local to an SR node or global within an SR domain. SR p | |||
xists --> | rovides a mechanism that allows a flow to be restricted to a specific topologica | |||
l path, while maintaining per-flow state only at the ingress node(s) to the SR d | ||||
<reference anchor='BGP-PIC'> | omain.</t> | |||
<front> | <t>SR can be directly applied to the MPLS architecture with no cha | |||
<title>BGP Prefix Independent Convergence</title> | nge to the forwarding plane. A segment is encoded as an MPLS label. An ordered | |||
list of segments is encoded as a stack of labels. The segment to process is on | ||||
<author initials='A' surname='Bashandy' fullname='Ahmed Bashandy'> | the top of the stack. Upon completion of a segment, the related label is poppe | |||
<organization /> | d from the stack.</t> | |||
</author> | <t>SR can be applied to the IPv6 architecture, with a new type of | |||
routing header. A segment is encoded as an IPv6 address. An ordered list of se | ||||
<author initials='C' surname='Filsfils' fullname='Clarence Filsfils'> | gments is encoded as an ordered list of IPv6 addresses in the routing header. T | |||
<organization /> | he active segment is indicated by the Destination Address (DA) of the packet. T | |||
</author> | he next active segment is indicated by a pointer in the new routing header.</t> | |||
</abstract> | ||||
<author initials='P' surname='Mohapatra' fullname='Prodosh Mohapatra'> | </front> | |||
<organization /> | <seriesInfo name="RFC" value="8402"/> | |||
</author> | <seriesInfo name="DOI" value="10.17487/RFC8402"/> | |||
</reference> | ||||
<date month='April' day='1' year='2019' /> | <reference anchor="RFC8667" target="https://www.rfc-editor.org/info/rfc8 | |||
667" quoteTitle="true" derivedAnchor="RFC8667"> | ||||
<abstract><t>In the network comprising thousands of iBGP peers exchanging millio | <front> | |||
ns of routes, many routes are reachable via more than one next-hop. Given the la | <title>IS-IS Extensions for Segment Routing</title> | |||
rge scaling targets, it is desirable to restore traffic after failure in a time | <seriesInfo name="RFC" value="8667"/> | |||
period that does not depend on the number of BGP prefixes. In this document we p | <seriesInfo name="DOI" value="10.17487/RFC8667"/> | |||
roposed an architecture by which traffic can be re-routed to ECMP or pre-calcula | <author initials="S" surname="Previdi" fullname="Stefano Previdi"> | |||
ted backup paths in a timeframe that does not depend on the number of BGP prefix | <organization showOnFrontPage="true"/> | |||
es. The objective is achieved through organizing the forwarding data structures | </author> | |||
in a hierarchical manner and sharing forwarding elements among the maximum possi | <author initials="L" surname="Ginsberg" fullname="Les Ginsberg"> | |||
ble number of routes. The proposed technique achieves prefix independent converg | <organization showOnFrontPage="true"/> | |||
ence while ensuring incremental deployment, complete automation, and zero manage | </author> | |||
ment and provisioning effort. It is noteworthy to mention that the benefits of B | <author initials="C" surname="Filsfils" fullname="Clarence Filsfils" | |||
GP-PIC are hinged on the existence of more than one path whether as ECMP or prim | > | |||
ary-backup.</t></abstract> | <organization showOnFrontPage="true"/> | |||
</author> | ||||
</front> | <author initials="A" surname="Bashandy" fullname="Ahmed Bashandy"> | |||
<organization showOnFrontPage="true"/> | ||||
<seriesInfo name='Work in Progress,' value='draft-ietf-rtgwg-bgp-pic-09' /> | </author> | |||
</reference> | <author initials="H" surname="Gredler" fullname="Hannes Gredler"> | |||
<organization showOnFrontPage="true"/> | ||||
</references> | </author> | |||
<author initials="B" surname="Decraene" fullname="Bruno Decraene"> | ||||
</back> | <organization showOnFrontPage="true"/> | |||
</author> | ||||
<date month="December" year="2019"/> | ||||
<abstract> | ||||
<t>Segment Routing (SR) allows for a flexible definition of end-to | ||||
-end paths within IGP topologies by encoding paths as sequences of topological s | ||||
ub-paths, called "segments". These segments are advertised by the link-state ro | ||||
uting protocols (IS-IS and OSPF). This draft describes the necessary IS-IS exte | ||||
nsions that need to be introduced for Segment Routing operating on an MPLS data- | ||||
plane.</t> | ||||
</abstract> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
<references pn="section-13.2"> | ||||
<name slugifiedName="name-informative-references">Informative References | ||||
</name> | ||||
<reference anchor="I-D.ietf-rtgwg-bgp-pic" quoteTitle="true" target="htt | ||||
ps://tools.ietf.org/html/draft-ietf-rtgwg-bgp-pic-10" derivedAnchor="BGP-PIC"> | ||||
<front> | ||||
<title>BGP Prefix Independent Convergence</title> | ||||
<author initials="A" surname="Bashandy" fullname="Ahmed Bashandy"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C" surname="Filsfils" fullname="Clarence Filsfils" | ||||
> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="P" surname="Mohapatra" fullname="Prodosh Mohapatra | ||||
"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="October" day="2" year="2019"/> | ||||
<abstract> | ||||
<t>In the network comprising thousands of iBGP peers exchanging mi | ||||
llions of routes, many routes are reachable via more than one next-hop. Given th | ||||
e large scaling targets, it is desirable to restore traffic after failure in a t | ||||
ime period that does not depend on the number of BGP prefixes. In this document | ||||
we proposed an architecture by which traffic can be re-routed to ECMP or pre-cal | ||||
culated backup paths in a timeframe that does not depend on the number of BGP pr | ||||
efixes. The objective is achieved through organizing the forwarding data structu | ||||
res in a hierarchical manner and sharing forwarding elements among the maximum p | ||||
ossible number of routes. The proposed technique achieves prefix independent con | ||||
vergence while ensuring incremental deployment, complete automation, and zero ma | ||||
nagement and provisioning effort. It is noteworthy to mention that the benefits | ||||
of BGP-PIC are hinged on the existence of more than one path whether as ECMP or | ||||
primary-backup.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-rtgwg-bgp-pic-10"/ | ||||
> | ||||
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-i | ||||
etf-rtgwg-bgp-pic-10.txt"/> | ||||
<refcontent>Work in Progress</refcontent> | ||||
</reference> | ||||
<reference anchor="RFC4090" target="https://www.rfc-editor.org/info/rfc4 | ||||
090" quoteTitle="true" derivedAnchor="RFC4090"> | ||||
<front> | ||||
<title>Fast Reroute Extensions to RSVP-TE for LSP Tunnels</title> | ||||
<author initials="P." surname="Pan" fullname="P. Pan" role="editor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="G." surname="Swallow" fullname="G. Swallow" role=" | ||||
editor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="A." surname="Atlas" fullname="A. Atlas" role="edit | ||||
or"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2005" month="May"/> | ||||
<abstract> | ||||
<t>This document defines RSVP-TE extensions to establish backup la | ||||
bel-switched path (LSP) tunnels for local repair of LSP tunnels. These mechanis | ||||
ms enable the re-direction of traffic onto backup LSP tunnels in 10s of millisec | ||||
onds, in the event of a failure.</t> | ||||
<t>Two methods are defined here. The one-to-one backup method cre | ||||
ates detour LSPs for each protected LSP at each potential point of local repair. | ||||
The facility backup method creates a bypass tunnel to protect a potential fail | ||||
ure point; by taking advantage of MPLS label stacking, this bypass tunnel can pr | ||||
otect a set of LSPs that have similar backup constraints. Both methods can be u | ||||
sed to protect links and nodes during network failure. The described behavior a | ||||
nd extensions to RSVP allow nodes to implement either method or both and to inte | ||||
roperate in a mixed network. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4090"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4090"/> | ||||
</reference> | ||||
<reference anchor="RFC5286" target="https://www.rfc-editor.org/info/rfc5 | ||||
286" quoteTitle="true" derivedAnchor="RFC5286"> | ||||
<front> | ||||
<title>Basic Specification for IP Fast Reroute: Loop-Free Alternates | ||||
</title> | ||||
<author initials="A." surname="Atlas" fullname="A. Atlas" role="edit | ||||
or"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="A." surname="Zinin" fullname="A. Zinin" role="edit | ||||
or"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2008" month="September"/> | ||||
<abstract> | ||||
<t>This document describes the use of loop-free alternates to prov | ||||
ide local protection for unicast traffic in pure IP and MPLS/LDP networks in the | ||||
event of a single failure, whether link, node, or shared risk link group (SRLG) | ||||
. The goal of this technology is to reduce the packet loss that happens while r | ||||
outers converge after a topology change due to a failure. Rapid failure repair | ||||
is achieved through use of precalculated backup next-hops that are loop-free and | ||||
safe to use until the distributed network convergence process completes. This s | ||||
imple approach does not require any support from other routers. The extent to wh | ||||
ich this goal can be met by this specification is dependent on the topology of t | ||||
he network. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5286"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5286"/> | ||||
</reference> | ||||
<reference anchor="RFC7490" target="https://www.rfc-editor.org/info/rfc7 | ||||
490" quoteTitle="true" derivedAnchor="RFC7490"> | ||||
<front> | ||||
<title>Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)</title> | ||||
<author initials="S." surname="Bryant" fullname="S. Bryant"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C." surname="Filsfils" fullname="C. Filsfils"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Previdi" fullname="S. Previdi"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Shand" fullname="M. Shand"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="N." surname="So" fullname="N. So"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2015" month="April"/> | ||||
<abstract> | ||||
<t>This document describes an extension to the basic IP fast rerou | ||||
te mechanism, described in RFC 5286, that provides additional backup connectivit | ||||
y for point-to-point link failures when none can be provided by the basic mechan | ||||
isms.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7490"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7490"/> | ||||
</reference> | ||||
<reference anchor="RFC7812" target="https://www.rfc-editor.org/info/rfc7 | ||||
812" quoteTitle="true" derivedAnchor="RFC7812"> | ||||
<front> | ||||
<title>An Architecture for IP/LDP Fast Reroute Using Maximally Redun | ||||
dant Trees (MRT-FRR)</title> | ||||
<author initials="A." surname="Atlas" fullname="A. Atlas"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="C." surname="Bowers" fullname="C. Bowers"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="G." surname="Enyedi" fullname="G. Enyedi"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2016" month="June"/> | ||||
<abstract> | ||||
<t>This document defines the architecture for IP and LDP Fast Rero | ||||
ute using Maximally Redundant Trees (MRT-FRR). MRT-FRR is a technology that giv | ||||
es link-protection and node-protection with 100% coverage in any network topolog | ||||
y that is still connected after the failure.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7812"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7812"/> | ||||
</reference> | ||||
<reference anchor="RFC8104" target="https://www.rfc-editor.org/info/rfc8 | ||||
104" quoteTitle="true" derivedAnchor="RFC8104"> | ||||
<front> | ||||
<title>Pseudowire (PW) Endpoint Fast Failure Protection</title> | ||||
<author initials="Y." surname="Shen" fullname="Y. Shen"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Aggarwal" fullname="R. Aggarwal"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="W." surname="Henderickx" fullname="W. Henderickx"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="Y." surname="Jiang" fullname="Y. Jiang"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="March"/> | ||||
<abstract> | ||||
<t>This document specifies a fast mechanism for protecting pseudow | ||||
ires (PWs) transported by IP/MPLS tunnels against egress endpoint failures, incl | ||||
uding egress attachment circuit (AC) failure, egress provider edge (PE) failure, | ||||
multi-segment PW terminating PE failure, and multi-segment PW switching PE fail | ||||
ure. Operating on the basis of multihomed customer edge (CE), redundant PWs, up | ||||
stream label assignment, and context-specific label switching, the mechanism ena | ||||
bles local repair to be performed by the router upstream adjacent to a failure. | ||||
The router can restore a PW in the order of tens of milliseconds, by rerouting | ||||
traffic around the failure to a protector through a pre-established bypass tunne | ||||
l. Therefore, the mechanism can be used to reduce traffic loss before global re | ||||
pair reacts to the failure and the network converges on the topology changes due | ||||
to the failure.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8104"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8104"/> | ||||
</reference> | ||||
<reference anchor="RFC8400" target="https://www.rfc-editor.org/info/rfc8 | ||||
400" quoteTitle="true" derivedAnchor="RFC8400"> | ||||
<front> | ||||
<title>Extensions to RSVP-TE for Label Switched Path (LSP) Egress Pr | ||||
otection</title> | ||||
<author initials="H." surname="Chen" fullname="H. Chen"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="A." surname="Liu" fullname="A. Liu"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="T." surname="Saad" fullname="T. Saad"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="F." surname="Xu" fullname="F. Xu"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="L." surname="Huang" fullname="L. Huang"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2018" month="June"/> | ||||
<abstract> | ||||
<t>This document describes extensions to Resource Reservation Prot | ||||
ocol - Traffic Engineering (RSVP-TE) for locally protecting the egress node(s) o | ||||
f a Point-to-Point (P2P) or Point-to-Multipoint (P2MP) Traffic Engineered (TE) L | ||||
abel Switched Path (LSP).</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8400"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8400"/> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section anchor="ack" numbered="false" toc="include" removeInRFC="false" pn= | ||||
"section-appendix.a"> | ||||
<name slugifiedName="name-acknowledgements">Acknowledgements</name> | ||||
<t pn="section-appendix.a-1"> | ||||
This document leverages work done by Yakov Rekhter, Kevin Wang, and Zhaoh | ||||
ui Zhang on MPLS egress protection. Thanks to Alexander Vainshtein, Rolf Winter, | ||||
Lizhong Jin, Krzysztof Szarkowicz, Roman Danyliw, and Yuanlong Jiang for their | ||||
valuable comments that helped to shape this document and improve its clarity. | ||||
</t> | ||||
</section> | ||||
<section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
="include" pn="section-appendix.b"> | ||||
<name slugifiedName="name-authors-addresses">Authors' Addresses</name> | ||||
<author fullname="Yimin Shen" surname="Shen" initials="Y"> | ||||
<organization showOnFrontPage="true">Juniper Networks</organization> | ||||
<address> | ||||
<postal> | ||||
<street>10 Technology Park Drive</street> | ||||
<city>Westford</city> | ||||
<region>MA</region> | ||||
<code>01886</code> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<phone>+1 978 589 0722</phone> | ||||
<email>yshen@juniper.net</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Minto Jeyananth" surname="Jeyananth" initials="M"> | ||||
<organization showOnFrontPage="true">Juniper Networks</organization> | ||||
<address> | ||||
<postal> | ||||
<street>1133 Innovation Way</street> | ||||
<city>Sunnyvale</city> | ||||
<region>CA</region> | ||||
<code>94089</code> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<phone>+1 408 936 7563</phone> | ||||
<email>minto@juniper.net</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Bruno Decraene" surname="Decraene" initials="B"> | ||||
<organization showOnFrontPage="true">Orange</organization> | ||||
<address> | ||||
<email>bruno.decraene@orange.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Hannes Gredler" surname="Gredler" initials="H"> | ||||
<organization showOnFrontPage="true">RtBrick Inc.</organization> | ||||
<address> | ||||
<email>hannes@rtbrick.com</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Carsten Michel" surname="Michel" initials="C"> | ||||
<organization showOnFrontPage="true">Deutsche Telekom</organization> | ||||
<address> | ||||
<email>c.michel@telekom.de</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Huaimo Chen" surname="Chen" initials="H"> | ||||
<organization showOnFrontPage="true">Futurewei</organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<city>Boston</city> | ||||
<region>MA</region> | ||||
<code/> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>Huaimo.chen@futurewei.com</email> | ||||
</address> | ||||
</author> | ||||
</section> | ||||
</back> | ||||
</rfc> | </rfc> | |||
End of changes. 62 change blocks. | ||||
1391 lines changed or deleted | 1909 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |