rfc9631xml2.original.xml | rfc9631.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='UTF-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | ||||
<?rfc toc="yes"?> | <!DOCTYPE rfc [ | |||
<?rfc tocompact="yes"?> | <!ENTITY nbsp " "> | |||
<?rfc tocdepth="3"?> | <!ENTITY zwsp "​"> | |||
<?rfc tocindent="yes"?> | <!ENTITY nbhy "‑"> | |||
<?rfc symrefs="yes"?> | <!ENTITY wj "⁠"> | |||
<?rfc sortrefs="yes"?> | ]> | |||
<?rfc comments="yes"?> | ||||
<?rfc inline="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="exp" docName="draft-ie | |||
<?rfc compact="yes"?> | tf-6man-comp-rtg-hdr-10" number="9631" consensus="true" ipr="trust200902" obsole | |||
<?rfc subcompact="no"?> | tes="" updates="" submissionType="IETF" xml:lang="en" tocInclude="true" tocDepth | |||
<rfc category="exp" docName="draft-ietf-6man-comp-rtg-hdr-10" | ="3" symRefs="true" sortRefs="true" version="3"> | |||
ipr="trust200902"> | ||||
<front> | <front> | |||
<title abbrev="IPv6 Compact Routing Header">The IPv6 Compact Routing | <title abbrev="IPv6 Compact Routing Header">The IPv6 Compact Routing | |||
Header (CRH)</title> | Header (CRH)</title> | |||
<seriesInfo name="RFC" value="9631"/> | ||||
<author fullname="Ron Bonica" initials="R." surname="Bonica"> | <author fullname="Ron Bonica" initials="R." surname="Bonica"> | |||
<organization>Juniper Networks</organization> | <organization>Juniper Networks</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>2251 Corporate Park Drive</street> | <street>2251 Corporate Park Drive</street> | |||
<city>Herndon</city> | <city>Herndon</city> | |||
<code>20171</code> | <code>20171</code> | |||
<region>VA</region> | ||||
<region>Virginia</region> | <country>United States of America</country> | |||
<country>USA</country> | ||||
</postal> | </postal> | |||
<email>rbonica@juniper.net</email> | <email>rbonica@juniper.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Yuji Kamite" initials="Y. " surname="Kamite"> | <author fullname="Yuji Kamite" initials="Y. " surname="Kamite"> | |||
<organization>NTT Communications Corporation</organization> | <organization>NTT Communications Corporation</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>3-4-1 Shibaura, Minato-ku</street> | <street>3-4-1 Shibaura, Minato-ku</street> | |||
<region>Tokyo</region> | ||||
<city>Tokyo</city> | ||||
<code>108-8118</code> | <code>108-8118</code> | |||
<country>Japan</country> | <country>Japan</country> | |||
</postal> | </postal> | |||
<email>y.kamite@ntt.com</email> | <email>y.kamite@ntt.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Andrew Alston" initials="A." surname="Alston"> | <author fullname="Andrew Alston" initials="A." surname="Alston"> | |||
<organization>Liquid Telecom</organization> | <organization>Alston Networks</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street/> | ||||
<city>Nairobi</city> | <city>Nairobi</city> | |||
<country>Kenya</country> | <country>Kenya</country> | |||
</postal> | </postal> | |||
<email>aa@alstonnetworks.net</email> | ||||
<email>Andrew.Alston@liquidtelecom.com</email> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Daniam Henriques" initials="D." surname="Henriques"> | <author fullname="Daniam Henriques" initials="D." surname="Henriques"> | |||
<organization>Liquid Telecom</organization> | <organization>Liquid Telecom</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street/> | ||||
<city>Johannesburg</city> | <city>Johannesburg</city> | |||
<country>South Africa</country> | <country>South Africa</country> | |||
</postal> | </postal> | |||
<email>daniam.henriques@liquidtelecom.com</email> | <email>daniam.henriques@liquidtelecom.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Luay Jalil" initials="L." surname="Jalil"> | <author fullname="Luay Jalil" initials="L." surname="Jalil"> | |||
<organization>Verizon</organization> | <organization>Verizon</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street/> | ||||
<city>Richardson</city> | <city>Richardson</city> | |||
<region>TX</region> | ||||
<region>Texas</region> | <country>United States of America</country> | |||
<country>USA</country> | ||||
</postal> | </postal> | |||
<email>luay.jalil@one.verizon.com</email> | <email>luay.jalil@one.verizon.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="August" year="2024"/> | ||||
<date day="30" month="May" year="2024"/> | <area>INT</area> | |||
<area>INT Area</area> | ||||
<workgroup>6man</workgroup> | <workgroup>6man</workgroup> | |||
<keyword>IPv6</keyword> | <keyword>IPv6</keyword> | |||
<keyword>Routing header</keyword> | <keyword>Routing header</keyword> | |||
<abstract> | <abstract> | |||
<t>This document describes an experiment in which two new IPv6 Routing | <t>This document describes an experiment in which two new IPv6 Routing | |||
headers are implemented and deployed. Collectively, they are called the | headers are implemented and deployed. Collectively, they are called the | |||
Compact Routing Headers (CRH). Individually, they are called CRH-16 and | Compact Routing Header (CRH). Individually, they are called CRH-16 and | |||
CRH-32.</t> | CRH-32.</t> | |||
<t>One purpose of this experiment is to demonstrate that the CRH can be | <t>One purpose of this experiment is to demonstrate that the CRH can be | |||
implemented and deployed in a production network. Another purpose is to | implemented and deployed in a production network. Another purpose is to | |||
demonstrate that the security considerations, described in this | demonstrate that the security considerations described in this | |||
document, can be addressed with access control lists. Finally, this | document can be addressed with Access Control Lists (ACLs). Finally, this | |||
document encourages replication of the experiment.</t> | document encourages replication of the experiment.</t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section anchor="Intro" title="Introduction"> | <section anchor="Intro" numbered="true" toc="default"> | |||
<t><xref target="RFC8200">IPv6 </xref> source nodes use Routing headers | <name>Introduction</name> | |||
<t>IPv6 <xref target="RFC8200" format="default"></xref> source nodes use R | ||||
outing headers | ||||
to specify the path that a packet takes to its destination(s). The IETF ha s | to specify the path that a packet takes to its destination(s). The IETF ha s | |||
defined several <xref target="IANA-RH">Routing types</xref>. This | defined several Routing Types; see <xref target="IANA-RT" format="default" | |||
document defines two new Routing types. Collectively, they are | ></xref>. This | |||
called the Compact Routing Headers (CRH). Individually, they are called | document defines two new Routing Types. Collectively, they are | |||
called the Compact Routing Header (CRH). Individually, they are called | ||||
CRH-16 and CRH-32.</t> | CRH-16 and CRH-32.</t> | |||
<t>The CRH allows IPv6 source nodes to specify the path that a packet | <t>The CRH allows IPv6 source nodes to specify the path that a packet | |||
takes to its destination. The CRH can be encoded in relatively few | takes to its destination. The CRH can be encoded in relatively few | |||
bytes. The following are reasons for encoding the CRH in as few bytes as | bytes. The following are reasons for encoding the CRH in as few bytes as | |||
possible:</t> | possible:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li> | |||
<t>Many ASIC-based forwarders copy headers from buffer memory to | <t> Many forwarders based on Application-Specific Integrated | |||
on-chip memory. As header sizes increase, so does the cost of this | Circuits (ASICs) copy headers from buffer memory to on-chip | |||
copy.</t> | memory. As header sizes increase, so does the cost of this copy.</t> | |||
</li> | ||||
<t>Because <xref target="RFC8201">Path MTU Discovery (PMTUD)</xref> | <li> | |||
is not entirely reliable, many IPv6 hosts refrain from sending | <t>Because Path MTU Discovery (PMTUD) <xref target="RFC8201" | |||
packets larger than the IPv6 minimum link MTU (i.e., 1280 bytes). | format="default"></xref> is not entirely reliable, many IPv6 hosts | |||
When packets are small, the overhead imposed by large Routing | refrain from sending packets larger than the IPv6 minimum link MTU | |||
Headers is excessive.</t> | (i.e., 1280 bytes). When packets are small, the overhead imposed by | |||
</list>This document describes an experiment whose purposes are:</t> | large Routing headers is excessive.</t> | |||
</li> | ||||
<t><list style="symbols"> | </ul> | |||
<t>To demonstrate that the CRH can be implemented and deployed.</t> | <t>This document describes an experiment with the following purposes:</t> | |||
<ul spacing="normal"> | ||||
<t>To demonstrate that the security considerations, described in | <li> | |||
this document, can be addressed with access control lists.</t> | <t>To demonstrate that the CRH can be implemented and deployed</t> | |||
</li> | ||||
<t>To encourage replication of the experiment.</t> | <li> | |||
</list></t> | <t>To demonstrate that the security considerations described in | |||
this document can be addressed with ACLs</t> | ||||
</li> | ||||
<li> | ||||
<t>To encourage replication of the experiment</t> | ||||
</li> | ||||
</ul> | ||||
</section> | </section> | |||
<section anchor="ReqLang" numbered="true" toc="default"> | ||||
<section anchor="ReqLang" title="Requirements Language"> | <name>Requirements Language</name> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <t> | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
"OPTIONAL" in this document are to be interpreted as described in <xref | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
target="RFC2119">BCP 14</xref> <xref target="RFC8174"/> when, and only | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
when, they appear in all capitals, as shown here.</t> | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="The Compact Routing Headers (CRH)"> | <name>The Compact Routing Header (CRH)</name> | |||
<t>Both CRH versions (i.e., CRH-16 and CRH-32) contain the following | <t>Both CRH versions (i.e., CRH-16 and CRH-32) contain the following | |||
fields:</t> | fields:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li>Next Header, as defined in <xref target="RFC8200" | |||
<t>Next Header - Defined in <xref target="RFC8200"/>.</t> | format="default"/></li> | |||
<li>Hdr Ext Len, as defined in <xref target="RFC8200" | ||||
<t>Hdr Ext Len - Defined in <xref target="RFC8200"/>.</t> | format="default"/></li> | |||
<li>Routing Type, as defined in <xref target="RFC8200" | ||||
<t>Routing Type - Defined in <xref target="RFC8200"/>. (CRH-16 value | format="default"/> (CRH-16 value is 5, and CRH-32 value is 6.)</li> | |||
is 5. CRH-32 value is 6).</t> | <li>Segments Left, as defined in <xref target="RFC8200" | |||
format="default"/></li> | ||||
<t>Segments Left - Defined in <xref target="RFC8200"/>.</t> | <li>type-specific data, as described in <xref target="RFC8200" format= | |||
"default"/></li> | ||||
<t>Type-specific Data - Described in <xref target="RFC8200"/>.</t> | </ul> | |||
</list></t> | <t>In the CRH, the type-specific data field contains a list of CRH Segment | |||
Identifiers (CRH SIDs). Each CRH SID identifies an entry in the CRH Forwar | ||||
<t>In the CRH, the Type-specific data field contains a list of CRH Segment | ding Information Base (CRH-FIB) (<xref target="crh-fib" format="default"></xref> | |||
Identifiers (CRH SIDs). Each CRH SID identifies an entry in the <xref | ). Each | |||
target="crh-fib">CRH Forwarding Information Base (CRH-FIB) </xref>. Each | ||||
CRH-FIB entry identifies an interface on the path that the packet takes | CRH-FIB entry identifies an interface on the path that the packet takes | |||
to its destination.</t> | to its destination.</t> | |||
<t>CRH SIDs are listed in reverse order. So, the first CRH SID in the list | <t>CRH SIDs are listed in reverse order. So, the first CRH SID in the list | |||
represents the final interface in the path. Because CRH SIDs are listed | represents the final interface in the path. Because CRH SIDs are listed | |||
in reverse order, the Segments Left field can be used as an index into | in reverse order, the Segments Left field can be used as an index into | |||
the CRH SID list. In this document, the "current CRH SID" is the CRH SID l ist entry | the CRH SID list. In this document, the "current CRH SID" is the CRH SID l ist entry | |||
referenced by the Segments Left field.</t> | referenced by the Segments Left field.</t> | |||
<t>The first CRH SID in the path is omitted from the list unless there | ||||
<t>The first CRH SID in the path is omitted from the list unless there is | is some reason to preserve it. See <xref target="Examples" | |||
some | format="default"> </xref> for an example.</t> | |||
reason to preserve it. See <xref | <t>In the CRH-16 (<xref target="CRHFig16" format="default"></xref>), | |||
target="Examples"> </xref> for an example.</t> | each CRH SID is encoded in 16 bits. In the CRH-32 (<xref | |||
target="CRHFig32" format="default"></xref>), each CRH SID is encoded in | ||||
<t>In the <xref target="CRHFig16">CRH-16</xref>, each CRH SID is encoded i | 32 bits.</t> | |||
n | <t>In all cases, the CRH <bcp14>MUST</bcp14> end on a 64-bit boundary. So, | |||
16-bits. In the <xref target="CRHFig32">CRH-32</xref>, each CRH SID is | the type-specific data field <bcp14>MUST</bcp14> be padded with zeros if the CR | |||
encoded in 32-bits.</t> | H would otherwise | |||
<t>In all cases, the CRH MUST end on a 64-bit boundary. So, the Type- | ||||
specific data field MUST be padded with zeros if the CRH would otherwise | ||||
not end on a 64-bit boundary.</t> | not end on a 64-bit boundary.</t> | |||
<figure anchor="CRHFig16"> | ||||
<figure align="left" anchor="CRHFig16" title="CRH-16"> | <name>CRH-16</name> | |||
<artwork><![CDATA[ 0 1 2 | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Header | Hdr Ext Len | Routing Type | Segments Left | | | Next Header | Hdr Ext Len | Routing Type | Segments Left | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| SID[0] | SID[1] | | | SID[0] | SID[1] | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-| | |||
| ......... | | ......... | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<figure anchor="CRHFig32"> | ||||
<figure align="left" anchor="CRHFig32" title="CRH-32"> | <name>CRH-32</name> | |||
<artwork><![CDATA[ 0 1 2 | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
3 | 0 1 2 3 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Header | Hdr Ext Len | Routing Type | Segments Left | | | Next Header | Hdr Ext Len | Routing Type | Segments Left | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+ SID[0] + | + SID[0] + | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+ SID[1] + | + SID[1] + | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ......... | | ......... | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- | |||
skipping to change at line 242 ¶ | skipping to change at line 201 ¶ | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Next Header | Hdr Ext Len | Routing Type | Segments Left | | | Next Header | Hdr Ext Len | Routing Type | Segments Left | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+ SID[0] + | + SID[0] + | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+ SID[1] + | + SID[1] + | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ......... | | ......... | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
</section> | </section> | |||
<section anchor="crh-fib" numbered="true" toc="default"> | ||||
<section anchor="crh-fib" | <name>The CRH Forwarding Information Base (CRH-FIB)</name> | |||
title="The CRH Forwarding Information Base (CRH-FIB)"> | ||||
<t>Each CRH SID identifies a CRH-FIB entry.</t> | <t>Each CRH SID identifies a CRH-FIB entry.</t> | |||
<t>Each CRH-FIB entry contains:</t> | <t>Each CRH-FIB entry contains:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li> | |||
<t>An IPv6 address.</t> | <t>An IPv6 address</t> | |||
</li> | ||||
<t>A topological function.</t> | <li> | |||
<t>A topological function</t> | ||||
<t>Arguments for the topological function. (Optional).</t> | </li> | |||
</list></t> | <li> | |||
<t>Arguments for the topological function (optional)</t> | ||||
<t>The IPv6 address can be a Global Unicast Address (GUA), a Link Local Un | </li> | |||
icast address (LLU), or | </ul> | |||
<t>The IPv6 address can be a Global Unicast Address (GUA), a Link-Local Un | ||||
icast (LLU) address, or | ||||
a Unique Local Address (ULA). When the IPv6 address is the final address i n a path, it | a Unique Local Address (ULA). When the IPv6 address is the final address i n a path, it | |||
can also be a multicast address.</t> | can also be a multicast address.</t> | |||
<t>The topological function specifies how the processing node forwards | <t>The topological function specifies how the processing node forwards | |||
the packet to the interface identified by the IPv6 address. The | the packet to the interface identified by the IPv6 address. The | |||
following are examples:</t> | following are examples:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li> | |||
<t>Forward the packet through the least-cost path to the interface | <t>Forward the packet through the least-cost path to the interface | |||
identified by the IPv6 address (i.e., loose source routing).</t> | identified by the IPv6 address (i.e., loose source routing).</t> | |||
</li> | ||||
<li> | ||||
<t>Forward the packet through a specified interface to the interface | <t>Forward the packet through a specified interface to the interface | |||
identified by the IPv6 address (i.e.,strict source routing)</t> | identified by the IPv6 address (i.e., strict source routing).</t> | |||
</list></t> | </li> | |||
</ul> | ||||
<t>Some topological functions require parameters. For example, a | <t>Some topological functions require parameters. For example, a | |||
topological function might require a parameter that identifies the | topological function might require a parameter that identifies the | |||
interface through which the packet is forwarded.</t> | interface through which the packet is forwarded.</t> | |||
<t>The CRH-FIB can be populated by:</t> | ||||
<t>The CRH-FIB can be populated:</t> | <ul spacing="normal"> | |||
<li> | ||||
<t><list style="symbols"> | <t>An operator, using a Command Line Interface (CLI)</t> | |||
<t>By an operator, using a Command Line Interface (CLI).</t> | </li> | |||
<li> | ||||
<t>By a controller, using the <xref target="RFC5440">Path | <t>A controller, using the Path | |||
Computation Element (PCE) Communication Protocol (PCEP) </xref> or | Computation Element Communication Protocol (PCEP) <xref target="RFC544 | |||
the <xref target="RFC6241">Network Configuration Protocol | 0" format="default"></xref> or | |||
(NETCONF)</xref>.</t> | the Network Configuration Protocol | |||
(NETCONF) <xref target="RFC6241" format="default"></xref></t> | ||||
<t>By a distributed routing protocol <xref | </li> | |||
target="ISO10589-Second-Edition"/>, <xref target="RFC5340"/>, <xref | <li> | |||
target="RFC4271"/>.</t> | <t>A distributed routing protocol, such as those defined in <xref targ | |||
</list></t> | et="ISO10589-Second-Edition" format="default"/>, <xref target="RFC5340" format=" | |||
default"/>, and <xref target="RFC4271" format="default"/></t> | ||||
<t>The above-mentioned mechanisms are not defined here and are beyond the | </li> | |||
scope of this document</t> | </ul> | |||
<t>The above-mentioned mechanisms are not defined here and are beyond the | ||||
scope of this document.</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Processing Rules"> | <name>Processing Rules</name> | |||
<t>The following rules describe CRH processing:<list style="symbols"> | <t>The following rules describe CRH processing:</t> | |||
<ul spacing="normal"> | ||||
<li> | ||||
<t>If Hdr Ext Len indicates that the CRH is larger than the | <t>If Hdr Ext Len indicates that the CRH is larger than the | |||
implementation can process, discard the packet and send an <xref | implementation can process, discard the packet and send an ICMPv6 | |||
target="RFC4443">ICMPv6 </xref> Parameter Problem, Code 0, message | <xref target="RFC4443" format="default"></xref> Parameter Problem, | |||
to the Source Address, pointing to the Hdr Ext Len field.</t> | Code 0, message to the Source Address, pointing to the Hdr Ext Len | |||
field.</t> | ||||
<t>Compute L, the minimum CRH length ( <xref target="SLLeng"> | </li> | |||
</xref>).</t> | <li> | |||
<t>Compute L, the minimum CRH length (<xref target="SLLeng" format="de | ||||
fault"> | ||||
</xref>).</t> | ||||
</li> | ||||
<li> | ||||
<t>If L is greater than Hdr Ext Len, discard the packet and send an | <t>If L is greater than Hdr Ext Len, discard the packet and send an | |||
ICMPv6 Parameter Problem, Code 6, message to the Source Address, | ICMPv6 Parameter Problem, Code 6, message to the Source Address, | |||
pointing to the Segments Left field.</t> | pointing to the Segments Left field.</t> | |||
</li> | ||||
<li> | ||||
<t>Decrement Segments Left.</t> | <t>Decrement Segments Left.</t> | |||
</li> | ||||
<li> | ||||
<t>Search for the current CRH SID in the CRH-FIB. In this document, th e | <t>Search for the current CRH SID in the CRH-FIB. In this document, th e | |||
"current CRH SID" is the CRH SID list entry referenced by the Segments Left | "current CRH SID" is the CRH SID list entry referenced by the Segments Left | |||
field.</t> | field.</t> | |||
</li> | ||||
<li> | ||||
<t>If the search does not return a CRH-FIB entry, discard the packet | <t>If the search does not return a CRH-FIB entry, discard the packet | |||
and send an ICMPv6 Parameter Problem, Code 0, message to the Source | and send an ICMPv6 Parameter Problem, Code 0, message to the Source | |||
Address, pointing to the current SID.</t> | Address, pointing to the current SID.</t> | |||
</li> | ||||
<li> | ||||
<t>If Segments Left is greater than 0 and the CRH-FIB entry contains | <t>If Segments Left is greater than 0 and the CRH-FIB entry contains | |||
a multicast address, discard the packet and send an ICMPv6 Parameter | a multicast address, discard the packet and send an ICMPv6 Parameter | |||
Problem, Code 0, message to the Source Address, pointing to the | Problem, Code 0, message to the Source Address, pointing to the | |||
current SID. (This prevents packet storms.)</t> | current SID. (This prevents packet storms.)</t> | |||
</li> | ||||
<li> | ||||
<t>Copy the IPv6 address from the CRH-FIB entry to the Destination | <t>Copy the IPv6 address from the CRH-FIB entry to the Destination | |||
Address field in the IPv6 header.</t> | Address field in the IPv6 header.</t> | |||
</li> | ||||
<li> | ||||
<t>Submit the packet, its topological function, and its parameters to | ||||
the IPv6 module.</t> | ||||
</li> | ||||
</ul> | ||||
<t>Submit the packet, its topological function and its parameters to | <aside><t>NOTE: By default, the IPv6 module determines the next hop and | |||
the IPv6 module. See NOTE.</t> | ||||
</list>NOTE: By default, the IPv6 module determines the next-hop and | ||||
forwards the packet. However, the topological function may elicit | forwards the packet. However, the topological function may elicit | |||
another behavior. For example, the IPv6 module may forward the packet | another behavior. For example, the IPv6 module may forward the packet | |||
through a specified interface.</t> | through a specified interface.</t> | |||
</aside> | ||||
<section anchor="SLLeng" title="Computing Minimum CRH Length"> | <section anchor="SLLeng" numbered="true" toc="default"> | |||
<name>Computing Minimum CRH Length</name> | ||||
<t>The algorithm described in this section accepts the following CRH | <t>The algorithm described in this section accepts the following CRH | |||
fields as its input parameters:</t> | fields as its input parameters:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li> | |||
<t>Routing Type (i.e., CRH-16 or CRH-32).</t> | <t>Routing Type (i.e., CRH-16 or CRH-32)</t> | |||
</li> | ||||
<t>Segments Left.</t> | <li> | |||
</list></t> | <t>Segments Left</t> | |||
</li> | ||||
</ul> | ||||
<t>It yields L, the minimum CRH length. The minimum CRH length is | <t>It yields L, the minimum CRH length. The minimum CRH length is | |||
measured in 8-octet units, not including the first 8 octets.</t> | measured in 8-octet units, not including the first 8 octets.</t> | |||
<figure> | <sourcecode name="" type="pseudocode" markers="true"><![CDATA[ | |||
<artwork align="center"><![CDATA[<CODE BEGINS> | ||||
switch(Routing Type) { | switch(Routing Type) { | |||
case CRH-16: | case CRH-16: | |||
if (Segments Left <= 2) | if (Segments Left <= 2) | |||
return(0) | return(0) | |||
sidsBeyondFirstWord = Segments Left - 2; | sidsBeyondFirstWord = Segments Left - 2; | |||
sidPerWord = 4; | sidPerWord = 4; | |||
case CRH-32: | case CRH-32: | |||
if (Segments Left <= 1) | if (Segments Left <= 1) | |||
return(0) | return(0) | |||
sidsBeyondFirstWord = Segments Left - 1; | sidsBeyondFirstWord = Segments Left - 1; | |||
sidsPerWord = 2; | sidsPerWord = 2; | |||
case default: | case default: | |||
return(0xFF); | return(0xFF); | |||
} | } | |||
words = sidsBeyondFirstWord div sidsPerWord; | words = sidsBeyondFirstWord div sidsPerWord; | |||
if (sidsBeyondFirstWord mod sidsPerWord) | if (sidsBeyondFirstWord mod sidsPerWord) | |||
words++; | words++; | |||
return(words) | return(words) | |||
]]></sourcecode> | ||||
<CODE ENDS> | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Mutability"> | <name>Mutability</name> | |||
<t>In the CRH, the Segments Left field is mutable. All remaining fields | <t>In the CRH, the Segments Left field is mutable. All remaining fields | |||
are immutable.</t> | are immutable.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Applications And SIDs"> | <name>Applications and CRH SIDs</name> | |||
<t>A CRH contains one or more CRH SIDs. Each CRH SID is processed by exact ly one CRH-configured | <t>A CRH contains one or more CRH SIDs. Each CRH SID is processed by exact ly one CRH-configured | |||
router whose one address matches the packet destination address.</t> | router whose one address matches the packet Destination Address.</t> | |||
<t>Therefore, a CRH SID is not required to have domain-wide significance. | <t>Therefore, a CRH SID is not required to have domain-wide | |||
Applications can:<list style="symbols"> | significance. Applications can allocate CRH SIDs so that they have | |||
<t>Allocate CRH SIDs so that they have domain-wide significance.</t> | either domain-wide or node-local significance.</t> | |||
<t>Allocate CRH SIDs so that they have node-local significance.</t> | ||||
</list></t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Operational Considerations"> | <name>Operational Considerations</name> | |||
<t><xref target="RFC2151">PING and TRACEROUTE </xref> both operate | <t>PING and Traceroute <xref target="RFC2151" format="default"></xref> bot | |||
h operate | ||||
correctly in the presence of the CRH. TCPDUMP and Wireshark have been | correctly in the presence of the CRH. TCPDUMP and Wireshark have been | |||
extended to support the CRH.</t> | extended to support the CRH.</t> | |||
<t>PING and Traceroute report 16-bit CRH SIDs for CRH-16 and | ||||
<t>PING and TRACEROUTE report 16-bit CRH SIDs for CRH-16, and | ||||
32-bit CRH SIDs for CRH-32. It is recommended that the | 32-bit CRH SIDs for CRH-32. It is recommended that the | |||
experimental versions of PING use the text representations | experimental versions of PING use the textual representations | |||
described in <xref target="TR"> </xref>.</t> | described in <xref target="TR" format="default"> </xref>.</t> | |||
</section> | </section> | |||
<section anchor="TR" numbered="true" toc="default"> | ||||
<section anchor="TR" title="Textual Representation"> | <name>Textual Representations</name> | |||
<t>A 16-bit CRH SID can be represented by four lower-case hexadecimal digi | <t>A 16-bit CRH SID can be represented by four lowercase hexadecimal digit | |||
ts. Leading | s. Leading | |||
zeros SHOULD be omitted. However, the all-zeros CRH SID MUST be represente | zeros <bcp14>SHOULD</bcp14> be omitted. However, the all-zeros CRH SID <bc | |||
d | p14>MUST</bcp14> be represented | |||
by a single 0. The following are examples:</t> | by a single 0. The following are examples:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li> | |||
<t>beef</t> | <t>beef</t> | |||
</li> | ||||
<li> | ||||
<t>eef</t> | <t>eef</t> | |||
</li> | ||||
<li> | ||||
<t>0</t> | <t>0</t> | |||
</list></t> | </li> | |||
</ul> | ||||
<t>A 16-bit CRH SID also can be represented in dotted-decimal notation. Th e | <t>A 16-bit CRH SID also can be represented in dotted-decimal notation. Th e | |||
following are examples:<list style="symbols"> | following are examples:</t> | |||
<ul spacing="normal"> | ||||
<li> | ||||
<t>192.0</t> | <t>192.0</t> | |||
</li> | ||||
<li> | ||||
<t>192.51</t> | <t>192.51</t> | |||
</list></t> | </li> | |||
</ul> | ||||
<t>A 32-bit CRH SID can be represented by four lower-case hexadecimal digi | <t>A 32-bit CRH SID can be represented by four lowercase hexadecimal digit | |||
ts, a colon | s, a colon | |||
(:), and another four lower-case hexadecimal digits. Leading zeros MUST be | (:), and another four lowercase hexadecimal digits. Leading zeros <bcp14>M | |||
omitted. | UST</bcp14> be omitted. | |||
The following are examples:</t> | The following are examples:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li> | |||
<t>dead:beef</t> | <t>dead:beef</t> | |||
</li> | ||||
<li> | ||||
<t>ead:eef</t> | <t>ead:eef</t> | |||
</li> | ||||
<li> | ||||
<t>:beef</t> | <t>:beef</t> | |||
</li> | ||||
<li> | ||||
<t>beef:</t> | <t>beef:</t> | |||
</li> | ||||
<li> | ||||
<t>:</t> | <t>:</t> | |||
</list>A 32-bit CRH SID can also be represent in dotted-decimal notation | </li> | |||
. | </ul> | |||
The following are examples:<list style="symbols"> | <t>A 32-bit CRH SID can also be represented in dotted-decimal notation. | |||
The following are examples:</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<t>192.0.2.1</t> | <t>192.0.2.1</t> | |||
</li> | ||||
<li> | ||||
<t>192.0.2.2</t> | <t>192.0.2.2</t> | |||
</li> | ||||
<li> | ||||
<t>192.0.2.3</t> | <t>192.0.2.3</t> | |||
</list></t> | </li> | |||
</ul> | ||||
</section> | </section> | |||
<section anchor="Security" numbered="true" toc="default"> | ||||
<section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
<t>In this document, one node trusts another only if both nodes are | <t>In this document, one node trusts another only if both nodes are | |||
operated by the same party. A node determines whether it trusts another | operated by the same party. A node determines whether it trusts another | |||
node by examining its IP address. In many networks, operators number their nodes | node by examining its IP address. In many networks, operators number their nodes | |||
from a small number of prefixes. This facilitates identification of truste | using a small number of prefixes. This facilitates identification of trust | |||
d nodes.</t> | ed nodes.</t> | |||
<t>A node can encounter security vulnerabilities when it processes a Routi | ||||
<t>A node can encounter security vulnerabilities when it processes a Routi | ng header that | |||
ng Header that | originated on an untrusted node <xref target="RFC5095" format="default"/>. | |||
originated on an untrusted node <xref | Therefore, nodes <bcp14>MUST</bcp14> deploy ACLs that discard packets containin | |||
target="RFC5095"/>. Therefore, nodes MUST deploy ACLs that discard packets | g the | |||
containing the | ||||
CRH when both of the following conditions are true:</t> | CRH when both of the following conditions are true:</t> | |||
<ul spacing="normal"> | ||||
<list style="symbols"> | <li> | |||
<t>The Source Address does not identify an interface on a trusted | <t>The Source Address does not identify an interface on a trusted | |||
node.</t> | node.</t> | |||
</li> | ||||
<li> | ||||
<t>The Destination Address identifies an interface on the local | <t>The Destination Address identifies an interface on the local | |||
node.</t> | node.</t> | |||
</list> | </li> | |||
</ul> | ||||
<t>The above-mentioned ACLs do not protect the node from attack packets | <t>The above-mentioned ACLs do not protect the node from attack packets | |||
that contain a forged (i.e., spoofed) Source Address. In order to | that contain a forged (i.e., spoofed) Source Address. In order to | |||
mitigate this risk, nodes MAY also discard packets containing the CRH | mitigate this risk, nodes <bcp14>MAY</bcp14> also discard packets containi ng the CRH | |||
when all of the following conditions are true:</t> | when all of the following conditions are true:</t> | |||
<ul spacing="normal"> | ||||
<list style="symbols"> | <li> | |||
<t>The Source Address identifies an interface on a trusted node.</t> | <t>The Source Address identifies an interface on a trusted node.</t> | |||
</li> | ||||
<li> | ||||
<t>The Destination Address identifies an interface on the local | <t>The Destination Address identifies an interface on the local | |||
node.</t> | node.</t> | |||
</li> | ||||
<li> | ||||
<t>The packet does not pass an <xref target="RFC8704">Enhanced | <t>The packet does not pass an Enhanced | |||
Feasible-Path Unicast Reverse Path Forwarding (RPF) </xref>,</t> | Feasible-Path Unicast Reverse Path Forwarding (EFP-uRPF) <xref target= | |||
</list> | "RFC8704" format="default"></xref> check.</t> | |||
</li> | ||||
<t>The RPF check eliminates some, but not all packets with forged | </ul> | |||
source addresses. Therefore, a network operator that deploys CRH MUST | <t>The EFP-uRPF check eliminates some, but not all, packets with forged | |||
implement Access Control Lists (ACL) on each of its edge nodes. The ACL | Source Addresses. Therefore, a network operator that deploys CRH <bcp14>MU | |||
discards packets whose source address identifies an interface on a | ST</bcp14> | |||
implement ACLs on each of its edge nodes. The ACL | ||||
discards packets whose Source Address identifies an interface on a | ||||
trusted node.</t> | trusted node.</t> | |||
<t>The CRH is compatible with end-to-end IPv6 Authentication Header (AH) | ||||
<t>The CRH is compatible with end-to-end IPv6 Authentication Header (AH) | <xref target="RFC4302" format="default"/> processing. This is because the s | |||
<xref target="RFC4302"></xref> processing. This is becasue the source node | ource node calculates | |||
calculates | ||||
the Integrity Check Value (ICV) over the packet as it arrives at the | the Integrity Check Value (ICV) over the packet as it arrives at the | |||
destination node.</t> | destination node.</t> | |||
</section> | ||||
<section title="Implementation and Deployment Status"> | ||||
<t>Juniper Networks has produced experimental implementations of the CRH | ||||
on the MX-series (ASIC-based) router</t> | ||||
<t>Liquid Telecom has produced experimental implementations of the CRH | ||||
on software based routers.</t> | ||||
<t>The CRH has carried non-production traffic in CERNET and Liquid | ||||
Telecom.</t> | ||||
<t>Interoperability among these implementations has not yet been demonstra | ||||
ted.</t> | ||||
</section> | </section> | |||
<section title="Experimental Results"> | <section numbered="true" toc="default"> | |||
<name>Experimental Results</name> | ||||
<t>Parties participating in this experiment should publish experimental | <t>Parties participating in this experiment should publish experimental | |||
results within one year of the publication of this document. | results within one year of the publication of this document. | |||
Experimental results should address the following:</t> | Experimental results should address the following:</t> | |||
<ul spacing="normal"> | ||||
<t><list style="symbols"> | <li> | |||
<t>Effort required to deploy<list style="symbols"> | <t>Effort required to deploy</t> | |||
<ul spacing="normal"> | ||||
<li> | ||||
<t>Was deployment incremental or network-wide?</t> | <t>Was deployment incremental or network-wide?</t> | |||
</li> | ||||
<t>Was there a need to synchronize configurations at each node | <li> | |||
or could nodes be configured independently</t> | <t>Was there a need to synchronize configurations at each node, | |||
or could nodes be configured independently?</t> | ||||
<t>Did the deployment require hardware upgrade?</t> | </li> | |||
<li> | ||||
<t>Did the deployment require a hardware upgrade?</t> | ||||
</li> | ||||
<li> | ||||
<t>Did the CRH SIDs have domain-wide or node-local significance?</ t> | <t>Did the CRH SIDs have domain-wide or node-local significance?</ t> | |||
</list></t> | </li> | |||
</ul> | ||||
</li> | ||||
<li> | ||||
<t>Effort required to secure</t> | <t>Effort required to secure</t> | |||
</li> | ||||
<li> | ||||
<t>Performance impact</t> | <t>Performance impact</t> | |||
</li> | ||||
<li> | ||||
<t>Effectiveness of risk mitigation with ACLs</t> | <t>Effectiveness of risk mitigation with ACLs</t> | |||
</li> | ||||
<li> | ||||
<t>Cost of risk mitigation with ACLs</t> | <t>Cost of risk mitigation with ACLs</t> | |||
</li> | ||||
<t>Mechanism used to populate the FIB</t> | <li> | |||
<t>Mechanism used to populate the CRH-FIB</t> | ||||
</li> | ||||
<li> | ||||
<t>Scale of deployment</t> | <t>Scale of deployment</t> | |||
</li> | ||||
<t>Interoperability<list style="symbols"> | <li> | |||
<t>Did you deploy two inter-operable implementations?</t> | <t>Interoperability</t> | |||
<ul spacing="normal"> | ||||
<li> | ||||
<t>Did you deploy two interoperable implementations?</t> | ||||
</li> | ||||
<li> | ||||
<t>Did you experience interoperability problems?</t> | <t>Did you experience interoperability problems?</t> | |||
</li> | ||||
<li> | ||||
<t>Did implementations generally implement the same topological | <t>Did implementations generally implement the same topological | |||
functions with identical arguments?</t> | functions with identical arguments?</t> | |||
</li> | ||||
<li> | ||||
<t>Were topological function semantics identical on each | <t>Were topological function semantics identical on each | |||
implementation?</t> | implementation?</t> | |||
</list></t> | </li> | |||
</ul> | ||||
<t>Effectiveness and sufficiency of OAM mechanism<list | </li> | |||
style="symbols"> | <li> | |||
<t>Effectiveness and sufficiency of Operations, Administration, and | ||||
Maintenance (OAM) mechanisms</t> | ||||
<ul spacing="normal"> | ||||
<li> | ||||
<t>Did PING work?</t> | <t>Did PING work?</t> | |||
</li> | ||||
<t>Did TRACEROUTE work?</t> | <li> | |||
<t>Did Traceroute work?</t> | ||||
</li> | ||||
<li> | ||||
<t>Did Wireshark work?</t> | <t>Did Wireshark work?</t> | |||
</li> | ||||
<li> | ||||
<t>Did TCPDUMP work?</t> | <t>Did TCPDUMP work?</t> | |||
</list></t> | </li> | |||
</list></t> | </ul> | |||
</li> | ||||
</ul> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<name>IANA Considerations</name> | ||||
<section title="IANA Considerations"> | <t>IANA has registered the following in the "Routing Types" | |||
<t>This document makes the following registrations in the "Internet | subregistry within the "Internet Protocol Version 6 (IPv6) Parameters" | |||
Protocol Version 6 (IPv6) Parameters" "Routing Types" subregistry | registry:</t> | |||
maintained by IANA:</t> | <table anchor="iana-table"> | |||
<name></name> | ||||
<figure> | <thead> | |||
<artwork><![CDATA[ +-------+------------------------------+----- | <tr> | |||
----------+ | <th>Value</th> | |||
| Value | Description | Reference | | <th>Description</th> | |||
+=======+==============================+===============+ | <th>Reference</th> | |||
| 5 | CRH-16 | This document | | </tr> | |||
+-------+------------------------------+---------------+ | </thead> | |||
| 6 | CRH-32 | This document | | <tbody> | |||
+-------+------------------------------+---------------+ | <tr> | |||
]]></artwork> | <td>5</td> | |||
</figure> | <td>CRH-16</td> | |||
<td>RFC 9631</td> | ||||
<t/> | </tr> | |||
</section> | <tr> | |||
<td>6</td> | ||||
<td>CRH-32 </td> | ||||
<td>RFC 9631</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<section anchor="Acknowledgements" title="Acknowledgements"> | ||||
<t>Thanks to Dr. Vanessa Ameen, Dale Carder, Brian Carpenter, Adrian | ||||
Farrel, Fernando Gont, Naveen Kottapalli, Joel Halpern, Mark Smith, Reji | ||||
Thomas, Tony Li, Xing Li, Gerald Schmidt, Nancy Shaw, Ketan Talaulikar, | ||||
and Chandra Venkatraman for their contributions to this document.</t> | ||||
</section> | </section> | |||
<section title="Contributors"> | ||||
<t><list style="empty"> | ||||
<t>Gang Chen</t> | ||||
<t>Baidu</t> | ||||
<t>No.10 Xibeiwang East Road Haidian District</t> | ||||
<t>Beijing 100193 P.R. China</t> | ||||
<t>Email: phdgang@gmail.com</t> | ||||
</list><list style="empty"> | ||||
<t/> | ||||
</list><list style="empty"> | ||||
<t>Yifeng Zhou</t> | ||||
<t>ByteDance</t> | ||||
<t>Building 1, AVIC Plaza, 43 N 3rd Ring W Rd Haidian District</t> | ||||
<t>Beijing 100000 P.R. China</t> | ||||
<t>Email: yifeng.zhou@bytedance.com</t> | ||||
</list><list style="empty"> | ||||
<t/> | ||||
</list><list style="empty"> | ||||
<t>Gyan Mishra</t> | ||||
<t>Verizon</t> | ||||
<t>Silver Spring, Maryland, USA</t> | ||||
<t>Email: hayabusagsm@gmail.com</t> | ||||
</list></t> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Normative References"> | <references> | |||
<?rfc include="reference.RFC.2119"?> | <name>References</name> | |||
<references> | ||||
<?rfc include='reference.RFC.8174'?> | <name>Normative References</name> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | ||||
<?rfc include='reference.RFC.8200'?> | 119.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
<?rfc include='reference.RFC.4443'?> | 174.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | ||||
<?rfc include='reference.RFC.5095'?> | 200.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | ||||
<?rfc include='reference.RFC.4302'?> | 443.xml"/> | |||
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | ||||
<?rfc ?> | 095.xml"/> | |||
</references> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | |||
302.xml"/> | ||||
<references title="Informative References"> | </references> | |||
<?rfc include='reference.RFC.2151'?> | <references> | |||
<name>Informative References</name> | ||||
<?rfc include='reference.RFC.5440'?> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 | |||
151.xml"/> | ||||
<?rfc include='reference.RFC.6241'?> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
440.xml"/> | ||||
<?rfc include='reference.RFC.5340'?> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.6 | |||
241.xml"/> | ||||
<?rfc include='reference.RFC.4271'?> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 | |||
340.xml"/> | ||||
<?rfc include='reference.RFC.8201'?> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 | |||
271.xml"/> | ||||
<?rfc include='reference.RFC.8704'?> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
201.xml"/> | ||||
<?rfc ?> | <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 | |||
704.xml"/> | ||||
<reference anchor="IANA-RH" | ||||
target="https://www.iana.org/assignments/ipv6-parameters/ipv6-p | ||||
arameters.xhtml#ipv6-parameters-3"> | ||||
<front> | ||||
<title>Routing Headers</title> | ||||
<author fullname="" initials="" surname=""> | ||||
<organization>IANA</organization> | ||||
</author> | ||||
<date month="" year=""/> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="ISO10589-Second-Edition" target=""> | <reference anchor="IANA-RT" target="https://www.iana.org/assignments/ipv | |||
<front> | 6-parameters"> | |||
<title>"Intermediate system to Intermediate system intra-domain | <front> | |||
routeing information exchange protocol for use in conjunction with | <title>Routing Types</title> | |||
the protocol for providing the connectionless-mode Network Service | <author> | |||
(ISO 8473)", ISO/IEC 10589:2002, Second Edition,</title> | <organization>IANA</organization> | |||
</author> | ||||
</front> | ||||
</reference> | ||||
<author fullname="" initials="" surname=""> | <reference anchor="ISO10589-Second-Edition" target="https://www.iso.org/ | |||
<organization>International Organization for | standard/30932.html"> | |||
Standardization</organization> | <front> | |||
</author> | <title>Information technology - Telecommunications and information e | |||
xchange between systems - Intermediate System to Intermediate System intra-domai | ||||
n routeing information exchange protocol for use in conjunction with the protoco | ||||
l for providing the connectionless-mode network service (ISO 8473)</title> | ||||
<author> | ||||
<organization>ISO/IEC</organization> | ||||
</author> | ||||
<date month="November" year="2002"/> | ||||
</front> | ||||
<refcontent>Second Edition</refcontent> | ||||
<seriesInfo name="ISO/IEC" value="10589:2002"/> | ||||
</reference> | ||||
<date month="November" year="2001"/> | </references> | |||
</front> | ||||
</reference> | ||||
</references> | </references> | |||
<section anchor="Examples" numbered="true" toc="default"> | ||||
<name>CRH Processing Examples</name> | ||||
<section anchor="Examples" title="CRH Processing Examples"> | ||||
<t>This appendix demonstrates CRH processing in the following | <t>This appendix demonstrates CRH processing in the following | |||
scenarios:</t> | scenarios:</t> | |||
<ul spacing="normal"> | ||||
<li> | ||||
<t>The CRH SID list contains one entry for each segment in the path | ||||
(<xref target="LSRP" format="default"></xref>).</t> | ||||
</li> | ||||
<li> | ||||
<t>The CRH SID list omits the first entry in the path (<xref | ||||
target="LSR" format="default"></xref>).</t> | ||||
</li> | ||||
</ul> | ||||
<t><xref target="RefTopo" format="default"/> provides a reference | ||||
topology that is used in all examples, and <xref target="lsid" | ||||
format="default"/> describes two entries that appear in each | ||||
node's CRH-FIB.</t> | ||||
<t><list style="symbols"> | <figure anchor="RefTopo"> | |||
<t><xref target="LSRP">The CRH SID list contains one entry for each | <name>Reference Topology</name> | |||
segment in the path </xref>.</t> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<t><xref target="LSR">The CRH SID list omits the first entry in the pa | ||||
th | ||||
</xref>.</t> | ||||
</list></t> | ||||
<figure align="center" anchor="RefTopo" title="Reference Topology"> | ||||
<artwork><![CDATA[ | ||||
----------- ----------- ----------- | ----------- ----------- ----------- | |||
|Node: S | |Node: I1 | |Node: I2 | | |Node: S | |Node: I1 | |Node: I2 | | |||
|Loopback: |---------------|Loopback: |---------------|Loopback: | | |Loopback: |---------------|Loopback: |---------------|Loopback: | | |||
|2001:db8::a| |2001:db8::1| |2001:db8::2| | |2001:db8::a| |2001:db8::1| |2001:db8::2| | |||
----------- ----------- ----------- | ----------- ----------- ----------- | |||
| | | | | | |||
| ----------- | | | ----------- | | |||
| |Node: D | | | | |Node: D | | | |||
---------------------|Loopback: |--------------------- | ---------------------|Loopback: |--------------------- | |||
|2001:db8::b| | |2001:db8::b| | |||
----------- | ----------- | |||
]]></artwork> | ]]></artwork> | |||
</figure> | </figure> | |||
<table anchor="lsid" align="center"> | ||||
<name>Node SIDs</name> | ||||
<thead> | ||||
<tr> | ||||
<th align="left">SID</th> | ||||
<th align="left">IPv6 Address</th> | ||||
<th align="left">Forwarding Method</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">2</td> | ||||
<td align="left">2001:db8::2</td> | ||||
<td align="left">Least-cost path</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">11</td> | ||||
<td align="left">2001:db8::b</td> | ||||
<td align="left">Least-cost path</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<section anchor="LSRP" numbered="true" toc="default"> | ||||
<name>The CRH SID list contains one entry for each segment in the path.< | ||||
/name> | ||||
<t/> | <t>In this example, Node S sends a packet to Node D via I2, and | |||
I2 appears in the CRH segment list.</t> | ||||
<t><xref target="RefTopo"/> provides a reference topology that is used | <table align="center"> | |||
in all examples.</t> | <name>Packet Travels from S to I2</name> | |||
<tbody> | ||||
<texttable anchor="lsid" title="Node SIDs"> | <tr> | |||
<ttcol>SID</ttcol> | <td align="left">Source Address = 2001:db8::a</td> | |||
<td align="left">Segments Left = 1</td> | ||||
<ttcol>IPv6 Address</ttcol> | </tr> | |||
<tr> | ||||
<ttcol>Forwarding Method</ttcol> | <td align="left">Destination Address = 2001:db8::2</td> | |||
<td align="left">SID[0] = 11</td> | ||||
<c>2</c> | </tr> | |||
<tr> | ||||
<c>2001:db8::2</c> | <td align="left"/> | |||
<td align="left">SID[1] = 2</td> | ||||
<c>Least-cost path</c> | </tr> | |||
</tbody> | ||||
<c>11</c> | </table> | |||
<table align="center"> | ||||
<c>2001:db8::b</c> | <name>Packet Travels from I2 to D</name> | |||
<tbody> | ||||
<c>Least-cost path</c> | <tr> | |||
</texttable> | <td align="left">Source Address = 2001:db8::a</td> | |||
<td align="left">Segments Left = 0</td> | ||||
<t><xref target="lsid"/> describes two entries that appear in each | </tr> | |||
node's CRH-FIB.</t> | <tr> | |||
<td align="left">Destination Address = 2001:db8::b</td> | ||||
<t/> | <td align="left">SID[0] = 11</td> | |||
</tr> | ||||
<section anchor="LSRP" | <tr> | |||
title="The CRH SID List Contains One Entry For Each Segment In Th | <td align="left"/> | |||
e Path"> | <td align="left">SID[1] = 2</td> | |||
<t>In this example, Node S sends a packet to Node D, via I2. In this | </tr> | |||
example, I2 appears in the CRH segment list.</t> | </tbody> | |||
</table> | ||||
<texttable> | ||||
<ttcol>As the packet travels from S to I2:</ttcol> | ||||
<ttcol/> | ||||
<c>Source Address = 2001:db8::a</c> | ||||
<c>Segments Left = 1</c> | ||||
<c>Destination Address = 2001:db8::2</c> | ||||
<c>SID[0] = 11</c> | ||||
<c/> | ||||
<c>SID[1] = 2</c> | ||||
</texttable> | ||||
<texttable> | ||||
<ttcol>As the packet travels from I2 to D:</ttcol> | ||||
<ttcol/> | ||||
<c>Source Address = 2001:db8::a</c> | ||||
<c>Segments Left = 0</c> | ||||
<c>Destination Address = 2001:db8::b</c> | ||||
<c>SID[0] = 11</c> | ||||
<c/> | ||||
<c>SID[1] = 2</c> | ||||
</texttable> | ||||
</section> | </section> | |||
<section anchor="LSR" numbered="true" toc="default"> | ||||
<name>The CRH SID list omits the first entry in the path.</name> | ||||
<t>In this example, Node S sends a packet to Node D via I2, and | ||||
I2 does not appear in the CRH segment list.</t> | ||||
<table align="center"> | ||||
<name>Packet Travels from S to I2</name> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left">Source Address = 2001:db8::a</td> | ||||
<td align="left">Segments Left = 1</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left">Destination Address = 2001:db8::2</td> | ||||
<td align="left">SID[0] = 11</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<section anchor="LSR" | <table align="center"> | |||
title="The CRH SID List Omits The First Entry In The Path "> | <name>Packet Travels from I2 to D</name> | |||
<t>In this example, Node S sends a packet to Node D, via I2. In this | <tbody> | |||
example, I2 does not appear in the CRH segment list.</t> | <tr> | |||
<td align="left">Source Address = 2001:db8::a</td> | ||||
<texttable> | <td align="left">Segments Left = 0</td> | |||
<ttcol>As the packet travels from S to I2:</ttcol> | </tr> | |||
<tr> | ||||
<ttcol/> | <td align="left">Destination Address = 2001:db8::b</td> | |||
<td align="left">SID[0] = 11</td> | ||||
<c>Source Address = 2001:db8::a</c> | </tr> | |||
</tbody> | ||||
<c>Segments Left = 1</c> | </table> | |||
<c>Destination Address = 2001:db8::2</c> | ||||
<c>SID[0] = 11</c> | ||||
</texttable> | ||||
<t/> | ||||
<texttable> | ||||
<ttcol>As the packet travels from I2 to D:</ttcol> | ||||
<ttcol/> | ||||
<c>Source Address = 2001:db8::a</c> | ||||
<c>Segments Left = 0</c> | ||||
<c>Destination Address = 2001:db8::b</c> | </section> | |||
</section> | ||||
<c>SID[0] = 11</c> | <section anchor="Acknowledgements" numbered="false" toc="default"> | |||
</texttable> | <name>Acknowledgements</name> | |||
<t>Thanks to <contact fullname="Dr. Vanessa Ameen"/>, <contact | ||||
fullname="Dale Carder"/>, <contact fullname="Brian Carpenter"/>, | ||||
<contact fullname="Adrian Farrel"/>, <contact fullname="Fernando | ||||
Gont"/>, <contact fullname="Joel Halpern"/>, <contact fullname="Naveen | ||||
Kottapalli"/>, <contact fullname="Tony Li"/>, <contact fullname="Xing | ||||
Li"/>, <contact fullname="Gerald Schmidt"/>, <contact fullname="Nancy | ||||
Shaw"/>, <contact fullname="Mark Smith"/>, <contact fullname="Ketan | ||||
Talaulikar"/>, <contact fullname="Reji Thomas"/>, and <contact | ||||
fullname="Chandra Venkatraman"/> for their contributions to this | ||||
document.</t> | ||||
</section> | ||||
<section numbered="false" toc="default"> | ||||
<name>Contributors</name> | ||||
<contact fullname="Gang Chen" > | ||||
<organization>Baidu</organization> | ||||
<address> | ||||
<postal> | ||||
<street>No.10 Xibeiwang East Road</street> | ||||
<city>Beijing</city> | ||||
<cityarea>Haidian District</cityarea> | ||||
<region></region><code>100193</code> | ||||
<country>China</country> | ||||
</postal> | ||||
<email>phdgang@gmail.com</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Yifeng Zhou" > | ||||
<organization>ByteDance</organization> | ||||
<address> | ||||
<postal> | ||||
<street>43 N 3rd Ring W Rd</street> | ||||
<extaddr>Building 1, AVIC Plaza</extaddr> | ||||
<cityarea>Haidian District</cityarea> | ||||
<city>Beijing</city> | ||||
<region></region><code>100000</code> | ||||
<country>China</country> | ||||
</postal> | ||||
<email>yifeng.zhou@bytedance.com</email> | ||||
</address> | ||||
</contact> | ||||
<contact fullname="Gyan Mishra" > | ||||
<organization>Verizon</organization> | ||||
<address> | ||||
<postal> | ||||
<street></street> | ||||
<city>Silver Spring</city> | ||||
<region>MD</region><code></code> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>hayabusagsm@gmail.com</email> | ||||
</address> | ||||
</contact> | ||||
<t/> | ||||
</section> | ||||
</section> | </section> | |||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 143 change blocks. | ||||
584 lines changed or deleted | 607 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |