rfc8754xml2.original.xml | rfc8754.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | |||
<?rfc toc="yes"?> | nsus="true" docName="draft-ietf-6man-segment-routing-header-26" indexInclude="tr | |||
<?rfc tocompact="yes"?> | ue" ipr="trust200902" number="8754" prepTime="2020-03-13T22:03:40" scripts="Comm | |||
<?rfc tocdepth="3"?> | on,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocI | |||
<?rfc tocindent="yes"?> | nclude="true" xml:lang="en"> | |||
<?rfc symrefs="yes"?> | <link href="https://datatracker.ietf.org/doc/draft-ietf-6man-segment-routing-h | |||
<?rfc sortrefs="yes"?> | eader-26" rel="prev"/> | |||
<?rfc comments="yes"?> | <link href="https://dx.doi.org/10.17487/rfc8754" rel="alternate"/> | |||
<?rfc inline="yes"?> | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<rfc category="std" docName="draft-ietf-6man-segment-routing-header-26" | ||||
ipr="trust200902"> | ||||
<front> | <front> | |||
<title abbrev="IPv6 Segment Routing Header (SRH)">IPv6 Segment Routing | <title abbrev="IPv6 Segment Routing Header (SRH)">IPv6 Segment Routing Heade | |||
Header (SRH)</title> | r (SRH)</title> | |||
<seriesInfo name="RFC" value="8754" stream="IETF"/> | ||||
<author fullname="Clarence Filsfils" initials="C." role="editor" | <author fullname="Clarence Filsfils" initials="C." role="editor" surname="Fi | |||
surname="Filsfils"> | lsfils"> | |||
<organization>Cisco Systems, Inc.</organization> | <organization showOnFrontPage="true">Cisco Systems, Inc.</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street/> | <street/> | |||
<city>Brussels</city> | <city>Brussels</city> | |||
<region/> | <region/> | |||
<code/> | <code/> | |||
<country>BE</country> | <country>BE</country> | |||
</postal> | </postal> | |||
<email>cfilsfil@cisco.com</email> | <email>cfilsfil@cisco.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Darren Dukes" initials="D." role="editor" surname="Dukes"> | ||||
<author fullname="Darren Dukes" initials="D." role="editor" | <organization showOnFrontPage="true">Cisco Systems, Inc.</organization> | |||
surname="Dukes"> | ||||
<organization>Cisco Systems, Inc.</organization> | ||||
<address> | <address> | |||
<postal> | <postal> | |||
<street/> | <street/> | |||
<city>Ottawa</city> | <city>Ottawa</city> | |||
<region/> | <region/> | |||
<code/> | <code/> | |||
<country>CA</country> | <country>CA</country> | |||
</postal> | </postal> | |||
<email>ddukes@cisco.com</email> | <email>ddukes@cisco.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Stefano Previdi" initials="S." surname="Previdi"> | <author fullname="Stefano Previdi" initials="S." surname="Previdi"> | |||
<organization>Huawei</organization> | <organization showOnFrontPage="true">Huawei</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street/> | <street/> | |||
<city/> | <city/> | |||
<code/> | <code/> | |||
<country>Italy</country> | <country>Italy</country> | |||
</postal> | </postal> | |||
<email>stefano@previdi.net</email> | <email>stefano@previdi.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="John Leddy" initials="J." surname="Leddy"> | <author fullname="John Leddy" initials="J." surname="Leddy"> | |||
<organization>Individual</organization> | <organization showOnFrontPage="true">Individual</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street/> | <street/> | |||
<city/> | <city/> | |||
<region/> | <region/> | |||
<code/> | <code/> | |||
<country>US</country> | <country>US</country> | |||
</postal> | </postal> | |||
<email>john@leddy.net</email> | <email>john@leddy.net</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Satoru Matsushima" initials="S." surname="Matsushima"> | <author fullname="Satoru Matsushima" initials="S." surname="Matsushima"> | |||
<organization>Softbank</organization> | <organization showOnFrontPage="true">SoftBank</organization> | |||
<address> | <address> | |||
<email>satoru.matsushima@g.softbank.co.jp</email> | <email>satoru.matsushima@g.softbank.co.jp</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Daniel Voyer" initials="D." surname="Voyer"> | <author fullname="Daniel Voyer" initials="D." surname="Voyer"> | |||
<organization>Bell Canada</organization> | <organization showOnFrontPage="true">Bell Canada</organization> | |||
<address> | <address> | |||
<email>daniel.voyer@bell.ca</email> | <email>daniel.voyer@bell.ca</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="03" year="2020"/> | ||||
<date year="2019"/> | ||||
<workgroup>Network Working Group</workgroup> | <workgroup>Network Working Group</workgroup> | |||
<keyword>SRv6</keyword> | ||||
<abstract> | <keyword>source-routing</keyword> | |||
<t>Segment Routing can be applied to the IPv6 data plane using a new | <keyword>network-programming</keyword> | |||
type of Routing Extension Header called the Segment Routing Header. This | <abstract pn="section-abstract"> | |||
document describes the Segment Routing Header and how it is used by | <t pn="section-abstract-1">Segment Routing can be applied to the IPv6 data | |||
Segment Routing capable nodes.</t> | plane using a new | |||
type of Routing Extension Header called the Segment Routing Header (SRH). | ||||
This | ||||
document describes the SRH and how it is used by nodes that are | ||||
Segment Routing (SR) capable.</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/rfc8754" 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) 2020 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> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.1.2"> | ||||
<li pn="section-toc.1-1.1.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.1.2.1.1"><xref derive | ||||
dContent="1.1" format="counter" sectionFormat="of" target="section-1.1"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-terminology"> | ||||
Terminology</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.1.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.1.2.2.1"><xref derive | ||||
dContent="1.2" format="counter" sectionFormat="of" target="section-1.2"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-requirements- | ||||
language">Requirements Language</xref></t> | ||||
</li> | ||||
</ul> | ||||
</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-segment-routing-header">S | ||||
egment Routing Header</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.2.2"> | ||||
<li pn="section-toc.1-1.2.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.2.2.1.1"><xref derive | ||||
dContent="2.1" format="counter" sectionFormat="of" target="section-2.1"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-srh-tlvs">SRH | ||||
TLVs</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.2.2.1.2"> | ||||
<li pn="section-toc.1-1.2.2.1.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.2.2.1.2.1.1"><xre | ||||
f derivedContent="2.1.1" format="counter" sectionFormat="of" target="section-2.1 | ||||
.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-p | ||||
adding-tlvs">Padding TLVs</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.2.2.1.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.2.2.1.2.2.1"><xre | ||||
f derivedContent="2.1.2" format="counter" sectionFormat="of" target="section-2.1 | ||||
.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-h | ||||
mac-tlv">HMAC TLV</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
</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-sr-nodes">SR Nodes</xref> | ||||
</t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.3.2"> | ||||
<li pn="section-toc.1-1.3.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.3.2.1.1"><xref derive | ||||
dContent="3.1" format="counter" sectionFormat="of" target="section-3.1"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-sr-source-nod | ||||
e">SR Source Node</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.3.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.3.2.2.1"><xref derive | ||||
dContent="3.2" format="counter" sectionFormat="of" target="section-3.2"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-transit-node" | ||||
>Transit Node</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.3.2.3"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.3.2.3.1"><xref derive | ||||
dContent="3.3" format="counter" sectionFormat="of" target="section-3.3"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-sr-segment-en | ||||
dpoint-node">SR Segment Endpoint Node</xref></t> | ||||
</li> | ||||
</ul> | ||||
</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-packet-processing">Packet | ||||
Processing</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.4.2"> | ||||
<li pn="section-toc.1-1.4.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.4.2.1.1"><xref derive | ||||
dContent="4.1" format="counter" sectionFormat="of" target="section-4.1"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-sr-source-nod | ||||
e-2">SR Source Node</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.4.2.1.2"> | ||||
<li pn="section-toc.1-1.4.2.1.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.4.2.1.2.1.1"><xre | ||||
f derivedContent="4.1.1" format="counter" sectionFormat="of" target="section-4.1 | ||||
.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-r | ||||
educed-srh">Reduced SRH</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.4.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.4.2.2.1"><xref derive | ||||
dContent="4.2" format="counter" sectionFormat="of" target="section-4.2"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-transit-node- | ||||
2">Transit Node</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.4.2.3"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.4.2.3.1"><xref derive | ||||
dContent="4.3" format="counter" sectionFormat="of" target="section-4.3"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-sr-segment-en | ||||
dpoint-node-2">SR Segment Endpoint Node</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.4.2.3.2"> | ||||
<li pn="section-toc.1-1.4.2.3.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.4.2.3.2.1.1"><xre | ||||
f derivedContent="4.3.1" format="counter" sectionFormat="of" target="section-4.3 | ||||
.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-f | ||||
ib-entry-is-a-locally-inst">FIB Entry Is a Locally Instantiated SRv6 SID</xref>< | ||||
/t> | ||||
</li> | ||||
<li pn="section-toc.1-1.4.2.3.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.4.2.3.2.2.1"><xre | ||||
f derivedContent="4.3.2" format="counter" sectionFormat="of" target="section-4.3 | ||||
.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-f | ||||
ib-entry-is-a-local-interf">FIB Entry Is a Local Interface</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.4.2.3.2.3"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.4.2.3.2.3.1"><xre | ||||
f derivedContent="4.3.3" format="counter" sectionFormat="of" target="section-4.3 | ||||
.3"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-f | ||||
ib-entry-is-a-nonlocal-rou">FIB Entry Is a Nonlocal Route</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.4.2.3.2.4"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.4.2.3.2.4.1"><xre | ||||
f derivedContent="4.3.4" format="counter" sectionFormat="of" target="section-4.3 | ||||
.4"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-f | ||||
ib-entry-is-a-no-match">FIB Entry Is a No Match</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
</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-intra-sr-domain-deploymen | ||||
t-">Intra-SR-Domain Deployment Model</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-securing-the- | ||||
sr-domain">Securing the SR Domain</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-sr-domain-as- | ||||
a-single-syste">SR Domain as a Single System with Delegation among Components</x | ||||
ref></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-mtu-considera | ||||
tions">MTU Considerations</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-icmp-error-pr | ||||
ocessing">ICMP Error Processing</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-load-balancin | ||||
g-and-ecmp">Load Balancing and ECMP</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-other-deploym | ||||
ents">Other Deployments</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-illustrations">Illustrati | ||||
ons</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.6.2"> | ||||
<li pn="section-toc.1-1.6.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.6.2.1.1"><xref derive | ||||
dContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-abstract-repr | ||||
esentation-of-">Abstract Representation of an SRH</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.6.2.2.1"><xref derive | ||||
dContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-example-topol | ||||
ogy">Example Topology</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.3"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.6.2.3.1"><xref derive | ||||
dContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-sr-source-nod | ||||
e-3">SR Source Node</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.6.2.3.2"> | ||||
<li pn="section-toc.1-1.6.2.3.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.6.2.3.2.1.1"><xre | ||||
f derivedContent="6.3.1" format="counter" sectionFormat="of" target="section-6.3 | ||||
.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-i | ||||
ntra-sr-domain-packet">Intra-SR-Domain Packet</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.3.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.6.2.3.2.2.1"><xre | ||||
f derivedContent="6.3.2" format="counter" sectionFormat="of" target="section-6.3 | ||||
.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-i | ||||
nter-sr-domain-packet-tran">Inter-SR-Domain Packet -- Transit</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.3.2.3"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.6.2.3.2.3.1"><xre | ||||
f derivedContent="6.3.3" format="counter" sectionFormat="of" target="section-6.3 | ||||
.3"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-i | ||||
nter-sr-domain-packet-inte">Inter-SR-Domain Packet -- Internal to External</xref | ||||
></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.4"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.6.2.4.1"><xref derive | ||||
dContent="6.4" format="counter" sectionFormat="of" target="section-6.4"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-transit-node- | ||||
3">Transit Node</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.5"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.6.2.5.1"><xref derive | ||||
dContent="6.5" format="counter" sectionFormat="of" target="section-6.5"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-sr-segment-en | ||||
dpoint-node-3">SR Segment Endpoint Node</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.6"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.6.2.6.1"><xref derive | ||||
dContent="6.6" format="counter" sectionFormat="of" target="section-6.6"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-delegation-of | ||||
-function-with">Delegation of Function with HMAC Verification</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
ction-toc.1-1.6.2.6.2"> | ||||
<li pn="section-toc.1-1.6.2.6.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.6.2.6.2.1.1"><xre | ||||
f derivedContent="6.6.1" format="counter" sectionFormat="of" target="section-6.6 | ||||
.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-s | ||||
id-list-verification">SID List Verification</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
</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-security-considerations"> | ||||
Security Considerations</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.7.2"> | ||||
<li pn="section-toc.1-1.7.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.7.2.1.1"><xref derive | ||||
dContent="7.1" format="counter" sectionFormat="of" target="section-7.1"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-sr-attacks">S | ||||
R Attacks</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.7.2.2.1"><xref derive | ||||
dContent="7.2" format="counter" sectionFormat="of" target="section-7.2"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-service-theft | ||||
">Service Theft</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.3"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.7.2.3.1"><xref derive | ||||
dContent="7.3" format="counter" sectionFormat="of" target="section-7.3"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-topology-disc | ||||
losure">Topology Disclosure</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.4"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.7.2.4.1"><xref derive | ||||
dContent="7.4" format="counter" sectionFormat="of" target="section-7.4"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-icmp-generati | ||||
on">ICMP Generation</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.7.2.5"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.7.2.5.1"><xref derive | ||||
dContent="7.5" format="counter" sectionFormat="of" target="section-7.5"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-applicability | ||||
-of-ah">Applicability of AH</xref></t> | ||||
</li> | ||||
</ul> | ||||
</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-iana-considerations">IANA | ||||
Considerations</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.8.2"> | ||||
<li pn="section-toc.1-1.8.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.8.2.1.1"><xref derive | ||||
dContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-segment-routi | ||||
ng-header-flag">Segment Routing Header Flags Registry</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.8.2.2.1"><xref derive | ||||
dContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-segment-routi | ||||
ng-header-tlvs">Segment Routing Header TLVs Registry</xref></t> | ||||
</li> | ||||
</ul> | ||||
</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-references">References</x | ||||
ref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.9.2"> | ||||
<li pn="section-toc.1-1.9.2.1"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.9.2.1.1"><xref derive | ||||
dContent="9.1" format="counter" sectionFormat="of" target="section-9.1"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-normative-ref | ||||
erences">Normative References</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.9.2.2"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.9.2.2.1"><xref derive | ||||
dContent="9.2" format="counter" sectionFormat="of" target="section-9.2"/>. <xre | ||||
f derivedContent="" format="title" sectionFormat="of" target="name-informative-r | ||||
eferences">Informative References</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.10"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.10.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.11"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.11.1"><xref derivedConten | ||||
t="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-contributors">Contribu | ||||
tors</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.12"> | ||||
<t keepWithNext="true" pn="section-toc.1-1.12.1"><xref derivedConten | ||||
t="" format="none" sectionFormat="of" target="section-appendix.c"/><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" title="Introduction"> | <section anchor="INTRO" numbered="true" toc="include" removeInRFC="false" pn | |||
<t>Segment Routing can be applied to the IPv6 data plane using a new | ="section-1"> | |||
type of Routing Header called the Segment Routing Header. This document | <name slugifiedName="name-introduction">Introduction</name> | |||
describes the Segment Routing Header and how it is used by Segment | <t pn="section-1-1">Segment Routing (SR) can be applied to the IPv6 data p | |||
Routing capable nodes.</t> | lane using a new | |||
type of routing header called the Segment Routing Header (SRH). This docum | ||||
<t>The Segment Routing Architecture <xref target="RFC8402"/> describes | ent | |||
Segment Routing and its instantiation in two data planes; MPLS and | describes the SRH and how it is used by nodes that are SR capable.</t> | |||
<t pn="section-1-2">"Segment Routing Architecture" <xref target="RFC8402" | ||||
format="default" sectionFormat="of" derivedContent="RFC8402"/> describes | ||||
Segment Routing and its instantiation in two data planes: MPLS and | ||||
IPv6.</t> | IPv6.</t> | |||
<t pn="section-1-3">The encoding of IPv6 segments in the SRH is | ||||
<t>The encoding of IPv6 segments in the Segment Routing Header is | ||||
defined in this document.</t> | defined in this document.</t> | |||
<section anchor="TERMS" numbered="true" toc="include" removeInRFC="false" | ||||
<t>This document uses the terms Segment Routing, SR Domain, SRv6, | pn="section-1.1"> | |||
Segment ID (SID), SRv6 SID, Active Segment, and SR Policy as defined in | <name slugifiedName="name-terminology">Terminology</name> | |||
<xref target="RFC8402"/>.</t> | <t pn="section-1.1-1">This document uses the terms Segment Routing (SR), | |||
SR domain, SR over | ||||
<section title="Requirements Language"> | IPv6 (SRv6), Segment Identifier (SID), SRv6 SID, Active Segment, and SR Po | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | licy as defined in | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | <xref target="RFC8402" format="default" sectionFormat="of" derivedContent= | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "RFC8402"/>.</t> | |||
14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | </section> | |||
when, they appear in all capitals, as shown here.</t> | <section numbered="true" toc="include" removeInRFC="false" pn="section-1.2 | |||
"> | ||||
<name slugifiedName="name-requirements-language">Requirements Language</ | ||||
name> | ||||
<t pn="section-1.2-1"> | ||||
The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | ||||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14> | ||||
", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", | ||||
"<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | ||||
be interpreted as | ||||
described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="o | ||||
f" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFor | ||||
mat="of" derivedContent="RFC8174"/> | ||||
when, and only when, they appear in all capitals, as shown here. | ||||
</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="SRH" numbered="true" toc="include" removeInRFC="false" pn=" | ||||
<section anchor="SRH" title="Segment Routing Header"> | section-2"> | |||
<t>Routing Headers are defined in <xref target="RFC8200"/>. The Segment | <name slugifiedName="name-segment-routing-header">Segment Routing Header</ | |||
Routing Header has a new Routing Type (suggested value 4) to be assigned | name> | |||
by IANA.</t> | <t pn="section-2-1">Routing headers are defined in <xref target="RFC8200" | |||
format="default" sectionFormat="of" derivedContent="RFC8200"/>. The Segment | ||||
<t>The Segment Routing Header (SRH) is defined as follows:<figure | Routing Header (SRH) has a new Routing Type (4).</t> | |||
align="left" anchor="SRHFIG" suppress-title="true"> | <t pn="section-2-2">The SRH is defined as follows:</t> | |||
<artwork> | <artwork name="" type="" align="left" alt="" pn="section-2-3"> | |||
0 1 2 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 | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Last Entry | Flags | Tag | | | Last Entry | Flags | Tag | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
| Segment List[0] (128 bits IPv6 address) | | | Segment List[0] (128-bit IPv6 address) | | |||
| | | | | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
| | | | | | |||
... | ... | |||
| | | | | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
| Segment List[n] (128 bits IPv6 address) | | | Segment List[n] (128-bit IPv6 address) | | |||
| | | | | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
// // | // // | |||
// Optional Type Length Value objects (variable) // | // Optional Type Length Value objects (variable) // | |||
// // | // // | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
</artwork> | ||||
where:</artwork> | <t pn="section-2-4">where:</t> | |||
</figure><list style="symbols"> | <dl spacing="normal" newline="false" pn="section-2-5"> | |||
<t>Next Header: Defined in <xref target="RFC8200"/> Section 4.4</t> | <dt pn="section-2-5.1">Next Header:</dt> | |||
<dd pn="section-2-5.2">Defined in <xref target="RFC8200" sectionFormat=" | ||||
<t>Hdr Ext Len: Defined in <xref target="RFC8200"/> Section 4.4</t> | comma" section="4.4" format="default" derivedLink="https://rfc-editor.org/rfc/rf | |||
c8200#section-4.4" derivedContent="RFC8200"/>.</dd> | ||||
<t>Routing Type: TBD, to be assigned by IANA (suggested value: | <dt pn="section-2-5.3">Hdr Ext Len:</dt> | |||
4).</t> | <dd pn="section-2-5.4">Defined in <xref target="RFC8200" sectionFormat=" | |||
comma" section="4.4" format="default" derivedLink="https://rfc-editor.org/rfc/rf | ||||
<t>Segments Left: Defined in <xref target="RFC8200"/> Section | c8200#section-4.4" derivedContent="RFC8200"/>.</dd> | |||
4.4</t> | <dt pn="section-2-5.5">Routing Type:</dt> | |||
<dd pn="section-2-5.6">4.</dd> | ||||
<t>Last Entry: contains the index (zero based), in the Segment List, | <dt pn="section-2-5.7">Segments Left:</dt> | |||
of the last element of the Segment List.</t> | <dd pn="section-2-5.8">Defined in <xref target="RFC8200" sectionFormat=" | |||
comma" section="4.4" format="default" derivedLink="https://rfc-editor.org/rfc/rf | ||||
<t>Flags: 8 bits of flags. <xref target="SRHFLAGSREG"/> creates an | c8200#section-4.4" derivedContent="RFC8200"/>.</dd> | |||
<dt pn="section-2-5.9">Last Entry:</dt> | ||||
<dd pn="section-2-5.10">contains the index (zero based), in the Segment | ||||
List, | ||||
of the last element of the Segment List.</dd> | ||||
<dt pn="section-2-5.11">Flags:</dt> | ||||
<dd pn="section-2-5.12">8 bits of flags. <xref target="SRHFLAGSREG" form | ||||
at="default" sectionFormat="of" derivedContent="Section 8.1"/> creates an | ||||
IANA registry for new flags to be defined. The following flags are | IANA registry for new flags to be defined. The following flags are | |||
defined:<figure align="left" anchor="SRHFLAGS" suppress-title="true"> | defined:</dd> | |||
<artwork align="left"> | </dl> | |||
<artwork align="left" name="" type="" alt="" pn="section-2-6"> | ||||
0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
|U U U U U U U U| | |U U U U U U U U| | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
</artwork> | </artwork> | |||
</figure><list style="hanging"> | <dl newline="false" spacing="normal" pn="section-2-7"> | |||
<t>U: Unused and for future use. MUST be 0 on transmission and | <dt pn="section-2-7.1"/> | |||
ignored on receipt.</t> | <dd pn="section-2-7.2">U: Unused and for future use. <bcp14>MUST</bcp14> | |||
</list></t> | be 0 on transmission and | |||
ignored on receipt.</dd> | ||||
<t>Tag: tag a packet as part of a class or group of packets, e.g., | </dl> | |||
packets sharing the same set of properties. When tag is not used at | <dl spacing="normal" newline="false" pn="section-2-8"> | |||
source it MUST be set to zero on transmission. When tag is not used | <dt pn="section-2-8.1">Tag:</dt> | |||
during SRH Processing it SHOULD be ignored. Tag is not used when | <dd pn="section-2-8.2">Tag a packet as part of a class or group of packe | |||
processing the SID defined in <xref target="pktENDSID"/>. It may be | ts -- e.g., | |||
packets sharing the same set of properties. When Tag is not used at th | ||||
e | ||||
source, it <bcp14>MUST</bcp14> be set to zero on transmission. When | ||||
Tag is not used during SRH processing, it <bcp14>SHOULD</bcp14> be | ||||
ignored. Tag is not used when | ||||
processing the SID defined in <xref target="pktENDSID" format="default | ||||
" sectionFormat="of" derivedContent="Section 4.3.1"/>. It may be | ||||
used when processing other SIDs that are not defined in this | used when processing other SIDs that are not defined in this | |||
document. The allocation and use of tag is outside the scope of this | document. The allocation and use of tag is outside the scope of this | |||
document.</t> | document.</dd> | |||
<dt pn="section-2-8.3">Segment List[0..n]:</dt> | ||||
<t>Segment List[n]: 128 bit IPv6 addresses representing the nth | <dd pn="section-2-8.4">128-bit IPv6 addresses representing the nth | |||
segment in the Segment List. The Segment List is encoded starting | segment in the Segment List. The Segment List is encoded starting | |||
from the last segment of the SR Policy. I.e., the first element of | from the last segment of the SR Policy. That is, the first element of | |||
the segment list (Segment List [0]) contains the last segment of the | the Segment List (Segment List[0]) contains the last segment of the | |||
SR Policy, the second element contains the penultimate segment of | SR Policy, the second element contains the penultimate segment of | |||
the SR Policy and so on.</t> | the SR Policy, and so on.</dd> | |||
<dt pn="section-2-8.5">TLV:</dt> | ||||
<t>Type Length Value (TLV) are described in <xref | <dd pn="section-2-8.6">Type Length Value (TLV) is described in <xref tar | |||
target="TLVS"/>.</t> | get="TLVS" format="default" sectionFormat="of" derivedContent="Section 2.1"/>.</ | |||
</list></t> | dd> | |||
</dl> | ||||
<t>In the SRH, the Next Header, Hdr Ext Len, Routing Type, and Segments | <t pn="section-2-9">In the SRH, the Next Header, Hdr Ext Len, Routing Type | |||
Left fields are defined in Section 4.4 of <xref target="RFC8200"/>. | , and Segments | |||
Left fields are defined in <xref target="RFC8200" sectionFormat="of" secti | ||||
on="4.4" format="default" derivedLink="https://rfc-editor.org/rfc/rfc8200#sectio | ||||
n-4.4" derivedContent="RFC8200"/>. | ||||
Based on the constraints in that section, Next Header, Header Ext Len, | Based on the constraints in that section, Next Header, Header Ext Len, | |||
and Routing Type are not mutable while Segments Left is mutable.</t> | and Routing Type are not mutable while Segments Left is mutable.</t> | |||
<t pn="section-2-10">The mutability of the TLV value is defined by the mos | ||||
<t>The mutability of the TLV value is defined by the most significant | t significant | |||
bit in the type, as specified in <xref target="TLVS"/>.</t> | bit in the type, as specified in <xref target="TLVS" format="default" sect | |||
ionFormat="of" derivedContent="Section 2.1"/>.</t> | ||||
<t><xref target="ENDSID"/> defines the mutability of the remaining | <t pn="section-2-11"><xref target="ENDSID" format="default" sectionFormat= | |||
"of" derivedContent="Section 4.3"/> defines the mutability of the remaining | ||||
fields in the SRH (Flags, Tag, Segment List) in the context of the SID | fields in the SRH (Flags, Tag, Segment List) in the context of the SID | |||
defined in this document.</t> | defined in this document.</t> | |||
<t pn="section-2-12">New SIDs defined in the future <bcp14>MUST</bcp14> sp | ||||
<t>New SIDs defined in the future MUST specify the mutability properties | ecify the mutability properties | |||
of the Flags, Tag, and Segment List and indicate how the HMAC TLV (<xref | of the Flags, Tag, and Segment List and indicate how the Hashed Message | |||
target="HMACTLV"/>) verification works. Note, that in effect these | Authentication Code (HMAC) TLV (<xref target="HMACTLV" format="default" se | |||
ctionFormat="of" derivedContent="Section 2.1.2"/>) verification works. Note that | ||||
, in effect, these | ||||
fields are mutable.</t> | fields are mutable.</t> | |||
<t pn="section-2-13">Consistent with the SR model, the source of the SRH | ||||
<t>Consistent with the source routing model, the source of the SRH | always knows how to set the Segment List, Flags, Tag, and TLVs of the SRH | |||
always knows how to set the segment list, Flags, Tag and TLVs of the SRH | for use within the SR domain. How it achieves this is outside the scope | |||
for use within the SR Domain. How it achieves this is outside the scope | of this document but may be based on topology, available SIDs and their | |||
of this document, but may be based on topology, available SIDs and their | ||||
mutability properties, the SRH mutability requirements of the | mutability properties, the SRH mutability requirements of the | |||
destination, or any other information.</t> | destination, or any other information.</t> | |||
<section anchor="TLVS" numbered="true" toc="include" removeInRFC="false" p | ||||
<section anchor="TLVS" title="SRH TLVs"> | n="section-2.1"> | |||
<t>This section defines TLVs of the Segment Routing Header.</t> | <name slugifiedName="name-srh-tlvs">SRH TLVs</name> | |||
<t pn="section-2.1-1">This section defines TLVs of the Segment Routing H | ||||
<t>A TLV provides meta-data for segment processing. The only TLVs | eader.</t> | |||
defined in this document are the HMAC (<xref target="HMACTLV"/>) and | <t pn="section-2.1-2">A TLV provides metadata for segment processing. Th | |||
PAD (<xref target="PADDINGTLV"/>) TLVs. While processing the SID | e only TLVs | |||
defined in <xref target="pktENDSID"/>, all TLVs are ignored unless | defined in this document are the HMAC (<xref target="HMACTLV" format="de | |||
local configuration indicates otherwise (<xref target="TLVPROCESS"/>). | fault" sectionFormat="of" derivedContent="Section 2.1.2"/>) and | |||
Thus, TLV and HMAC support is optional for any implementation, | padding TLVs (<xref target="PADDINGTLV" format="default" sectionFormat=" | |||
however, an implementation adding or parsing TLVs MUST support PAD | of" derivedContent="Section 2.1.1"/>). While processing the SID | |||
defined in <xref target="pktENDSID" format="default" sectionFormat="of" | ||||
derivedContent="Section 4.3.1"/>, all TLVs are ignored unless | ||||
local configuration indicates otherwise (<xref target="TLVPROCESS" forma | ||||
t="default" sectionFormat="of" derivedContent="Section 4.3.1.1.1"/>). | ||||
Thus, TLV and HMAC support is optional for any implementation; | ||||
however, an implementation adding or parsing TLVs <bcp14>MUST</bcp14> su | ||||
pport PAD | ||||
TLVs. Other documents may define additional TLVs and processing rules | TLVs. Other documents may define additional TLVs and processing rules | |||
for them.</t> | for them.</t> | |||
<t pn="section-2.1-3">TLVs are present when the Hdr Ext Len is greater t | ||||
<t>TLVs are present when the Hdr Ext Len is greater than (Last | han (Last | |||
Entry+1)*2.</t> | Entry+1)*2.</t> | |||
<t pn="section-2.1-4">While processing TLVs at a segment endpoint, TLVs | ||||
<t>While processing TLVs at a segment endpoint, TLVs MUST be fully | <bcp14>MUST</bcp14> be fully | |||
contained within the SRH as determined by the Hdr Ext Len. Detection | contained within the SRH as determined by the Hdr Ext | |||
Len. Detection | ||||
of TLVs exceeding the boundary of the SRH Hdr Ext Len results in an | of TLVs exceeding the boundary of the SRH Hdr Ext Len results in an | |||
ICMP Parameter Problem, Code 0, message to the Source Address, | ICMP Parameter Problem, Code 0, message to the Source Address, | |||
pointing to the Hdr Ext Len field of the SRH, and the packet being | pointing to the Hdr Ext Len field of the SRH, and the packet being | |||
discarded.</t> | discarded.</t> | |||
<t pn="section-2.1-5">An implementation <bcp14>MAY</bcp14> limit the num | ||||
<t>An implementation MAY limit the number and/or length of TLVs it | ber and/or length of TLVs it | |||
processes based on local configuration. It MAY:<list style="symbols"> | processes based on local configuration. It <bcp14>MAY</bcp14> limit:</t> | |||
<t>Limit the number of consecutive Pad1 (<xref target="PAD1"/>) | <ul spacing="normal" bare="false" empty="false" pn="section-2.1-6"> | |||
<li pn="section-2.1-6.1">the number of consecutive Pad1 (<xref target= | ||||
"PAD1" format="default" sectionFormat="of" derivedContent="Section 2.1.1.1"/>) | ||||
options to 1. If padding of more than one byte is required, then | options to 1. If padding of more than one byte is required, then | |||
PadN (<xref target="PADN"/>) should be used.</t> | PadN (<xref target="PADN" format="default" sectionFormat="of" derive | |||
dContent="Section 2.1.1.2"/>) should be used.</li> | ||||
<t>Limit the length in PadN to 5.</t> | <li pn="section-2.1-6.2">The length in PadN to 5.</li> | |||
<li pn="section-2.1-6.3">The maximum number of non-Pad TLVs to be proc | ||||
<t>Limit the maximum number of non-Pad TLVs to be processed.</t> | essed.</li> | |||
<li pn="section-2.1-6.4">The maximum length of all TLVs to be processe | ||||
<t>Limit the maximum length of all TLVs to be processed.</t> | d.</li> | |||
</list> The implementation MAY stop processing additional TLVs in | </ul> | |||
<t pn="section-2.1-7"> The implementation <bcp14>MAY</bcp14> stop proces | ||||
sing additional TLVs in | ||||
the SRH when these configured limits are exceeded.</t> | the SRH when these configured limits are exceeded.</t> | |||
<artwork name="" type="" align="left" alt="" pn="section-2.1-8"> | ||||
<figure> | ||||
<artwork> | ||||
0 1 | 0 1 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----------------------- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----------------------- | |||
| Type | Length | Variable length data | | Type | Length | Variable-length data | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----------------------- | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+----------------------- | |||
</artwork> | </artwork> | |||
</figure> | <dl spacing="normal" newline="false" pn="section-2.1-9"> | |||
<dt pn="section-2.1-9.1">Type:</dt> | ||||
<t>Type: An 8 bit codepoint from Segment Routing Header TLVs Registry | <dd pn="section-2.1-9.2">An 8-bit codepoint from the "Segment Routing | |||
TBD IANA Reference. Unrecognized Types MUST be ignored on receipt.</t> | Header TLVs" <xref target="IANA-SRHTLV" format="default" sectionFormat="of" deri | |||
vedContent="IANA-SRHTLV"/>. | ||||
<t>Length: The length of the Variable length data in bytes.</t> | ||||
<t>Variable length data: Length bytes of data that is specific to the | ||||
Type.</t> | ||||
<t>Type Length Value (TLV) entries contain OPTIONAL information that | Unrecognized Types <bcp14>MUST</bcp14> be ignored on receipt.</dd> | |||
<dt pn="section-2.1-9.3">Length:</dt> | ||||
<dd pn="section-2.1-9.4">The length of the variable-length data field | ||||
in bytes.</dd> | ||||
<dt pn="section-2.1-9.5">Variable-length data:</dt> | ||||
<dd pn="section-2.1-9.6">data that is specific to the | ||||
Type.</dd> | ||||
</dl> | ||||
<t pn="section-2.1-10">Type Length Value (TLV) entries contain <bcp14>OP | ||||
TIONAL</bcp14> information that | ||||
may be used by the node identified in the Destination Address (DA) of | may be used by the node identified in the Destination Address (DA) of | |||
the packet.</t> | the packet.</t> | |||
<t pn="section-2.1-11">Each TLV has its own length, format, and semantic | ||||
<t>Each TLV has its own length, format and semantic. The codepoint | . The codepoint | |||
allocated (by IANA) to each TLV Type defines both the format and the | allocated (by IANA) to each TLV Type defines both the format and the | |||
semantic of the information carried in the TLV. Multiple TLVs may be | semantic of the information carried in the TLV. Multiple TLVs may be | |||
encoded in the same SRH.</t> | encoded in the same SRH.</t> | |||
<t pn="section-2.1-12">The highest-order bit of the TLV type (bit 0) spe | ||||
<t>The highest-order bit of the TLV type (bit 0) specifies whether or | cifies whether or | |||
not the TLV data of that type can change en route to the packet's | not the TLV data of that type can change en route to the packet's | |||
final destination: <list> | final destination: </t> | |||
<t>0: TLV data does not change en route</t> | <ul empty="true" spacing="normal" bare="false" pn="section-2.1-13"> | |||
<li pn="section-2.1-13.1">0: TLV data does not change en route</li> | ||||
<t>1: TLV data does change en route</t> | <li pn="section-2.1-13.2">1: TLV data does change en route</li> | |||
</list></t> | </ul> | |||
<t pn="section-2.1-14">All TLVs specify their alignment requirements usi | ||||
<t>All TLVs specify their alignment requirements using an xn+y format. | ng an xn+y format. | |||
The xn+y format is defined as per <xref target="RFC8200"/>. The SR | The xn+y format is defined as per <xref target="RFC8200" format="default | |||
Source nodes use the xn+y alignment requirements of TLVs and Padding | " sectionFormat="of" derivedContent="RFC8200"/>. The SR | |||
source nodes use the xn+y alignment requirements of TLVs and Padding | ||||
TLVs when constructing an SRH.</t> | TLVs when constructing an SRH.</t> | |||
<t pn="section-2.1-15">The Length field of the TLV is used to skip the T | ||||
<t>The "Length" field of the TLV is used to skip the TLV while | LV while | |||
inspecting the SRH in case the node doesn't support or recognize the | inspecting the SRH in case the node doesn't support or recognize the | |||
Type. The "Length" defines the TLV length in octets, not including the | Type. The Length defines the TLV length in octets, not including the | |||
"Type" and "Length" fields.</t> | Type and Length fields.</t> | |||
<t pn="section-2.1-16">The following TLVs are defined in this document:< | ||||
<t>The following TLVs are defined in this document:<list> | /t> | |||
<t>Padding TLVs</t> | <ul empty="true" spacing="normal" bare="false" pn="section-2.1-17"> | |||
<li pn="section-2.1-17.1">Padding TLVs</li> | ||||
<t>HMAC TLV</t> | <li pn="section-2.1-17.2">HMAC TLV</li> | |||
</list></t> | </ul> | |||
<t pn="section-2.1-18">Additional TLVs may be defined in the future.</t> | ||||
<t>Additional TLVs may be defined in the future.</t> | <section anchor="PADDINGTLV" numbered="true" toc="include" removeInRFC=" | |||
false" pn="section-2.1.1"> | ||||
<section anchor="PADDINGTLV" title="Padding TLVs"> | <name slugifiedName="name-padding-tlvs">Padding TLVs</name> | |||
<t>There are two types of Padding TLVs, pad1 and padN, the following | <t pn="section-2.1.1-1">There are two types of Padding TLVs, Pad1 and | |||
applies to both:<list> | PadN, and the following | |||
<t>Padding TLVs are used for meeting the alignment requirement | applies to both:</t> | |||
of the subsequent TLVs.</t> | <ul empty="true" spacing="normal" bare="false" pn="section-2.1.1-2"> | |||
<li pn="section-2.1.1-2.1">Padding TLVs are used for meeting the ali | ||||
<t>Padding TLVs are used to pad the SRH to a multiple of 8 | gnment requirement | |||
octets.</t> | of the subsequent TLVs.</li> | |||
<li pn="section-2.1.1-2.2">Padding TLVs are used to pad the SRH to a | ||||
<t>Padding TLVs are ignored by a node processing the SRH | multiple of 8 | |||
TLV.</t> | octets.</li> | |||
<li pn="section-2.1.1-2.3">Padding TLVs are ignored by a node proces | ||||
<t>Multiple Padding TLVs MAY be used in one SRH</t> | sing the SRH | |||
</list></t> | TLV.</li> | |||
<li pn="section-2.1.1-2.4">Multiple Padding TLVs <bcp14>MAY</bcp14> | ||||
<section anchor="PAD1" title="PAD1"> | be used in one SRH.</li> | |||
<t>Alignment requirement: none</t> | </ul> | |||
<section anchor="PAD1" numbered="true" toc="exclude" removeInRFC="fals | ||||
<figure> | e" pn="section-2.1.1.1"> | |||
<artwork> | <name slugifiedName="name-pad1">Pad1</name> | |||
0 1 2 3 4 5 6 7 | <t pn="section-2.1.1.1-1">Alignment requirement: none</t> | |||
<artwork name="" type="" align="left" alt="" pn="section-2.1.1.1-2"> | ||||
0 1 2 3 4 5 6 7 | ||||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Type | | | Type | | |||
+-+-+-+-+-+-+-+-+</artwork> | +-+-+-+-+-+-+-+-+</artwork> | |||
</figure> | <dl spacing="normal" newline="false" pn="section-2.1.1.1-3"> | |||
<dt pn="section-2.1.1.1-3.1">Type:</dt> | ||||
<t><list> | <dd pn="section-2.1.1.1-3.2">0</dd> | |||
<t>Type: to be assigned by IANA (Suggested value 0)</t> | </dl> | |||
</list></t> | <t pn="section-2.1.1.1-4">A single Pad1 TLV <bcp14>MUST</bcp14> be u | |||
sed when a single byte of padding is | ||||
<t>A single Pad1 TLV MUST be used when a single byte of padding is | required. A Pad1 TLV <bcp14>MUST NOT</bcp14> be used if more than on | |||
required. A Pad1 TLV MUST NOT be used if more than one consecutive | e consecutive | |||
byte of padding is required.</t> | byte of padding is required.</t> | |||
</section> | </section> | |||
<section anchor="PADN" numbered="true" toc="exclude" removeInRFC="fals | ||||
<section anchor="PADN" title="PADN"> | e" pn="section-2.1.1.2"> | |||
<t>Alignment requirement: none</t> | <name slugifiedName="name-padn">PadN</name> | |||
<t pn="section-2.1.1.2-1">Alignment requirement: none</t> | ||||
<figure> | <artwork name="" type="" align="left" alt="" pn="section-2.1.1.2-2"> | |||
<artwork> | ||||
0 1 2 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Length | Padding (variable) | | | Type | Length | Padding (variable) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
// Padding (variable) // | // Padding (variable) // | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+</artwork> | |||
</figure> | <dl spacing="normal" newline="false" pn="section-2.1.1.2-3"> | |||
<dt pn="section-2.1.1.2-3.1">Type:</dt> | ||||
<t><list> | <dd pn="section-2.1.1.2-3.2">4</dd> | |||
<t>Type: to be assigned by IANA (suggested value 4).</t> | <dt pn="section-2.1.1.2-3.3">Length:</dt> | |||
<dd pn="section-2.1.1.2-3.4">0 to 5. The length of the Padding fie | ||||
<t>Length: 0 to 5</t> | ld in bytes.</dd> | |||
<dt pn="section-2.1.1.2-3.5">Padding:</dt> | ||||
<t>Padding: Length octets of padding. Padding bits have no | <dd pn="section-2.1.1.2-3.6">Padding bits have no | |||
semantic. They MUST be set to 0 on transmission and ignored on | semantic. They <bcp14>MUST</bcp14> be set to 0 on transmission a | |||
receipt.</t> | nd ignored on | |||
</list></t> | receipt.</dd> | |||
</dl> | ||||
<t>The PadN TLV MUST be used when more than one byte of padding is | <t pn="section-2.1.1.2-4">The PadN TLV <bcp14>MUST</bcp14> be used w | |||
hen more than one byte of padding is | ||||
required.</t> | required.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="HMACTLV" numbered="true" toc="include" removeInRFC="fal | ||||
<section anchor="HMACTLV" title="HMAC TLV"> | se" pn="section-2.1.2"> | |||
<t>Alignment requirement: 8n</t> | <name slugifiedName="name-hmac-tlv">HMAC TLV</name> | |||
<t pn="section-2.1.2-1">Alignment requirement: 8n</t> | ||||
<t>The keyed Hashed Message Authentication Code (HMAC) TLV is | <t pn="section-2.1.2-2">The keyed Hashed Message Authentication Code ( | |||
OPTIONAL and has the following format:<figure> | HMAC) TLV is | |||
<artwork> 0 1 2 | <bcp14>OPTIONAL</bcp14> and has the following format:</t> | |||
3 | <artwork name="" type="" align="left" alt="" pn="section-2.1.2-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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Type | Length |D| RESERVED | | | Type | Length |D| RESERVED | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| HMAC Key ID (4 octets) | | | HMAC Key ID (4 octets) | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| // | | // | |||
| HMAC (Variable) // | | HMAC (variable) // | |||
| // | | // | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
where:</artwork> | where:</artwork> | |||
</figure> <list style="symbols"> | <dl spacing="normal" newline="false" pn="section-2.1.2-4"> | |||
<t>Type: to be assigned by IANA (suggested value 5).</t> | <dt pn="section-2.1.2-4.1">Type:</dt> | |||
<dd pn="section-2.1.2-4.2">5.</dd> | ||||
<t>Length: The length of the variable length data in bytes.</t> | <dt pn="section-2.1.2-4.3">Length:</dt> | |||
<dd pn="section-2.1.2-4.4">The length of the variable-length data in | ||||
<t>D: 1 bit. 1 indicates the Destination Address verification is | bytes.</dd> | |||
disabled due to use of reduced segment list, <xref | <dt pn="section-2.1.2-4.5">D:</dt> | |||
target="REDUCED"/>.</t> | <dd pn="section-2.1.2-4.6">1 bit. 1 indicates that the Destination A | |||
ddress verification is | ||||
<t>RESERVED: 15 bits. MUST be 0 on transmission.</t> | disabled due to use of a reduced Segment List (see <xref target="R | |||
EDUCED" format="default" sectionFormat="of" derivedContent="Section 4.1.1"/>).</ | ||||
<t>HMAC Key ID: A 4 octet opaque number which uniquely | dd> | |||
<dt pn="section-2.1.2-4.7">RESERVED:</dt> | ||||
<dd pn="section-2.1.2-4.8">15 bits. <bcp14>MUST</bcp14> be 0 on tran | ||||
smission.</dd> | ||||
<dt pn="section-2.1.2-4.9">HMAC Key ID:</dt> | ||||
<dd pn="section-2.1.2-4.10">A 4-octet opaque number that uniquely | ||||
identifies the pre-shared key and algorithm used to generate the | identifies the pre-shared key and algorithm used to generate the | |||
HMAC.</t> | HMAC.</dd> | |||
<dt pn="section-2.1.2-4.11">HMAC:</dt> | ||||
<t>HMAC: Keyed HMAC, in multiples of 8 octets, at most 32 | <dd pn="section-2.1.2-4.12">Keyed HMAC, in multiples of 8 octets, at | |||
octets.</t> | most 32 | |||
</list></t> | octets.</dd> | |||
</dl> | ||||
<t>The HMAC TLV is used to verify that the SRH applied to a packet | <t pn="section-2.1.2-5">The HMAC TLV is used to verify that the SRH ap | |||
was selected by an authorized party, and to ensure that the segment | plied to a packet | |||
was selected by an authorized party and to ensure that the segment | ||||
list is not modified after generation. This also allows for | list is not modified after generation. This also allows for | |||
verification that the current segment (by virtue of being in the | verification that the current segment (by virtue of being in the | |||
authorized segment list) is authorized for use. The SR Domain | authorized Segment List) is authorized for use. The SR domain | |||
ensures the source node is permitted to use the source address in | ensures that the source node is permitted to use the source address in | |||
the packet via ingress filtering mechanisms as defined in BCP 84 | the packet via ingress filtering mechanisms as defined in BCP 84 | |||
<xref target="RFC3704"/>, or other strategies as appropriate.</t> | <xref target="RFC3704" format="default" sectionFormat="of" derivedCont | |||
ent="RFC3704"/> or other strategies as appropriate.</t> | ||||
<section title="HMAC Generation and Verification"> | <section numbered="true" toc="exclude" removeInRFC="false" pn="section | |||
<t>Local configuration determines when to check for an HMAC. This | -2.1.2.1"> | |||
<name slugifiedName="name-hmac-generation-and-verific">HMAC Generati | ||||
on and Verification</name> | ||||
<t pn="section-2.1.2.1-1">Local configuration determines when to che | ||||
ck for an HMAC. This | ||||
local configuration is outside the scope of this document. It may | local configuration is outside the scope of this document. It may | |||
be based on the active segment at an SR Segment endpoint node, the | be based on the active segment at an SR Segment endpoint node, the | |||
result of an ACL that considers incoming interface, HMAC Key ID, | result of an Access Control List (ACL) that considers incoming inter face, HMAC Key ID, | |||
or other packet fields.</t> | or other packet fields.</t> | |||
<t pn="section-2.1.2.1-2">An implementation that supports the genera | ||||
<t>An implementation that supports the generation and verification | tion and verification | |||
of the HMAC supports the following default behavior, as | of the HMAC supports the following default behavior, as | |||
defined in the remainder of this section.</t> | defined in the remainder of this section.</t> | |||
<t pn="section-2.1.2.1-3">The HMAC verification begins by checking t | ||||
<t>The HMAC verification begins by checking the current segment is | hat the current segment is | |||
equal to the destination address of the IPv6 header. The check is | equal to the destination address of the IPv6 header. The check is | |||
successful when either<list style="symbols"> | successful when either:</t> | |||
<t>HMAC D bit is 1 and Segments Left is greater than Last | <ul spacing="normal" bare="false" empty="false" pn="section-2.1.2.1- | |||
Entry.</t> | 4"> | |||
<li pn="section-2.1.2.1-4.1">HMAC D bit is 1 and Segments Left is | ||||
<t>HMAC Segments Left is less than or equal to Last Entry and | greater than Last | |||
destination address is equal to Segment List [Segments | Entry, or</li> | |||
Left].</t> | <li pn="section-2.1.2.1-4.2">HMAC Segments Left is less than or eq | |||
</list></t> | ual to Last Entry, and the | |||
destination address is equal to Segment List[Segments | ||||
<t>The HMAC field is the output of the HMAC computation as defined | Left].</li> | |||
in <xref target="RFC2104"/>, using:<list style="symbols"> | </ul> | |||
<t>key: the pre-shared key identified by HMAC Key ID</t> | <t pn="section-2.1.2.1-5">The HMAC field is the output of the HMAC c | |||
omputation as defined | ||||
<t>HMAC algorithm: identified by the HMAC Key ID</t> | in <xref target="RFC2104" format="default" sectionFormat="of" derive | |||
dContent="RFC2104"/>, using:</t> | ||||
<t>Text: a concatenation of the following fields from the IPv6 | <ul spacing="normal" bare="false" empty="false" pn="section-2.1.2.1- | |||
6"> | ||||
<li pn="section-2.1.2.1-6.1">key: The pre-shared key identified by | ||||
HMAC Key ID</li> | ||||
<li pn="section-2.1.2.1-6.2">HMAC algorithm: Identified by the HMA | ||||
C Key ID</li> | ||||
<li pn="section-2.1.2.1-6.3"> | ||||
<t pn="section-2.1.2.1-6.3.1">Text: A concatenation of the follo | ||||
wing fields from the IPv6 | ||||
header and the SRH, as it would be received at the node | header and the SRH, as it would be received at the node | |||
verifying the HMAC:<list style="symbols"> | verifying the HMAC:</t> | |||
<t>IPv6 header: source address (16 octets)</t> | <ul spacing="normal" bare="false" empty="false" pn="section-2.1. | |||
2.1-6.3.2"> | ||||
<t>SRH: Last Entry (1 octet)</t> | <li pn="section-2.1.2.1-6.3.2.1">IPv6 header: Source address ( | |||
16 octets)</li> | ||||
<t>SRH: Flags (1 octet)</t> | <li pn="section-2.1.2.1-6.3.2.2">SRH: Last Entry (1 octet)</li | |||
> | ||||
<t>SRH: HMAC 16 bits following Length</t> | <li pn="section-2.1.2.1-6.3.2.3">SRH: Flags (1 octet)</li> | |||
<li pn="section-2.1.2.1-6.3.2.4">SRH: HMAC 16 bits following L | ||||
<t>SRH: HMAC Key ID (4 octets)</t> | ength</li> | |||
<li pn="section-2.1.2.1-6.3.2.5">SRH: HMAC Key ID (4 octets)</ | ||||
<t>SRH: all addresses in the Segment List (variable | li> | |||
octets)</t> | <li pn="section-2.1.2.1-6.3.2.6">SRH: All addresses in the Seg | |||
</list></t> | ment List (variable | |||
</list></t> | octets)</li> | |||
</ul> | ||||
<t>The HMAC digest is truncated to 32 octets and placed in the | </li> | |||
</ul> | ||||
<t pn="section-2.1.2.1-7">The HMAC digest is truncated to 32 octets | ||||
and placed in the | ||||
HMAC field of the HMAC TLV.</t> | HMAC field of the HMAC TLV.</t> | |||
<t pn="section-2.1.2.1-8">For HMAC algorithms producing digests less | ||||
<t>For HMAC algorithms producing digests less than 32 octets, the | than 32 octets long, the | |||
digest is placed in the lowest order octets of the HMAC field. | digest is placed in the lowest-order octets of the HMAC field. | |||
Subsequent octets MUST be set to zero such that the HMAC length is | Subsequent octets <bcp14>MUST</bcp14> be set to zero such that the H | |||
MAC length is | ||||
a multiple of 8 octets.</t> | a multiple of 8 octets.</t> | |||
<t pn="section-2.1.2.1-9">If HMAC verification is successful, proces | ||||
<t>If HMAC verification is successful, processing proceeds as | sing proceeds as | |||
normal.</t> | normal.</t> | |||
<t pn="section-2.1.2.1-10">If HMAC verification fails, an ICMP error | ||||
<t>If HMAC verification fails, an ICMP error message (parameter | message (parameter | |||
problem, error code 0, pointing to the HMAC TLV) SHOULD be | problem, error code 0, pointing to the HMAC TLV) <bcp14>SHOULD</bcp1 | |||
generated (but rate limited) and SHOULD be logged and the packet | 4> be | |||
discarded.</t> | generated (but rate limited) and logged, and the packet | |||
<bcp14>SHOULD</bcp14> be discarded.</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="exclude" removeInRFC="false" pn="section | ||||
<section title="HMAC Pre-Shared Key Algorithm"> | -2.1.2.2"> | |||
<t>The HMAC Key ID field allows for the simultaneous existence of | <name slugifiedName="name-hmac-pre-shared-key-algorit">HMAC Pre-shar | |||
ed Key Algorithm</name> | ||||
<t pn="section-2.1.2.2-1">The HMAC Key ID field allows for the simul | ||||
taneous existence of | ||||
several hash algorithms (SHA-256, SHA3-256 ... or future ones) as | several hash algorithms (SHA-256, SHA3-256 ... or future ones) as | |||
well as pre-shared keys.</t> | well as pre-shared keys.</t> | |||
<t pn="section-2.1.2.2-2">The HMAC Key ID field is opaque -- i.e., i | ||||
<t>The HMAC Key ID field is opaque, i.e., it has neither syntax | t has neither syntax | |||
nor semantic except as an identifier of the right combination of | nor semantic except as an identifier of the right combination of | |||
pre-shared key and hash algorithm.</t> | pre-shared key and hash algorithm.</t> | |||
<t pn="section-2.1.2.2-3">At the HMAC TLV generating and verificatio | ||||
<t>At the HMAC TLV generating and verification nodes, the Key ID | n nodes, the Key ID | |||
uniquely identifies the pre-shared key and HMAC algorithm.</t> | uniquely identifies the pre-shared key and HMAC algorithm.</t> | |||
<t pn="section-2.1.2.2-4">At the HMAC TLV generating node, the Text | ||||
<t>At the HMAC TLV generating node, the Text for the HMAC | for the HMAC | |||
computation is set to the IPv6 header fields and SRH fields as | computation is set to the IPv6 header fields and SRH fields as | |||
they would appear at the verification node(s), not necessarily the | they would appear at the verification node(s), not necessarily the | |||
same as the source node sending a packet with the HMAC TLV.</t> | same as the source node sending a packet with the HMAC TLV.</t> | |||
<t pn="section-2.1.2.2-5">Pre-Shared key rollover is supported by ha | ||||
<t>Pre-shared key roll-over is supported by having two key IDs in | ving two key IDs in | |||
use while the HMAC TLV generating node and verifying node converge | use while the HMAC TLV generating node and verifying node converge | |||
to a new key.</t> | to a new key.</t> | |||
<t pn="section-2.1.2.2-6">The HMAC TLV generating node may need to r | ||||
<t>The HMAC TLV generating node may need to revoke an SRH for | evoke an SRH for | |||
which it previously generated an HMAC. Revocation is achieved by | which it previously generated an HMAC. Revocation is achieved by | |||
allocating a new key and key ID, then rolling over the key ID | allocating a new key and key ID, then rolling over the key ID | |||
associated with the SRH to be revoked. The HMAC TLV verifying node | associated with the SRH to be revoked. The HMAC TLV verifying node | |||
drops packets with the revoked SRH.</t> | drops packets with the revoked SRH.</t> | |||
<t pn="section-2.1.2.2-7">An implementation supporting HMAC can supp | ||||
<t>An implementation supporting HMAC can support multiple hash | ort multiple hash | |||
functions. An implementation supporting HMAC MUST implement SHA-2 | functions. An implementation supporting HMAC <bcp14>MUST</bcp14> imp | |||
<xref target="FIPS180-4"/> in its SHA-256 variant.</t> | lement SHA-2 | |||
<xref target="FIPS180-4" format="default" sectionFormat="of" derived | ||||
<t>The selection of pre-shared key and algorithm, and their | Content="FIPS180-4"/> in its SHA-256 variant.</t> | |||
<t pn="section-2.1.2.2-8">The selection of pre-shared key and algori | ||||
thm and their | ||||
distribution is outside the scope of this document. Some options | distribution is outside the scope of this document. Some options | |||
may include: <list style="symbols"> | may include: </t> | |||
<t>in the configuration of the HMAC generating or verifying | <ul spacing="normal" bare="false" empty="false" pn="section-2.1.2.2- | |||
nodes, either by static configuration or any SDN oriented | 9"> | |||
approach</t> | <li pn="section-2.1.2.2-9.1">setting these items in the configurat | |||
ion of the HMAC generating or verifying | ||||
<t>dynamically using a trusted key distribution protocol such | nodes, either by static configuration or any | |||
as <xref target="RFC6407"/></t> | SDN-oriented | |||
</list></t> | approach</li> | |||
<li pn="section-2.1.2.2-9.2">dynamically using a trusted key distr | ||||
<t>While key management is outside the scope of this document, the | ibution protocol such | |||
recommendations of BCP 107 <xref target="RFC4107"/> should be | as <xref target="RFC6407" format="default" sectionFormat="of" de | |||
rivedContent="RFC6407"/></li> | ||||
</ul> | ||||
<t pn="section-2.1.2.2-10">While key management is outside the scope | ||||
of this document, the | ||||
recommendations of BCP 107 <xref target="RFC4107" format="default" s | ||||
ectionFormat="of" derivedContent="RFC4107"/> should be | ||||
considered when choosing the key management system.</t> | considered when choosing the key management system.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="SRNODES" numbered="true" toc="include" removeInRFC="false" | ||||
<section anchor="SRNODES" title="SR Nodes"> | pn="section-3"> | |||
<t>There are different types of nodes that may be involved in segment | <name slugifiedName="name-sr-nodes">SR Nodes</name> | |||
routing networks: source SR nodes originate packets with a segment in | <t pn="section-3-1">There are different types of nodes that may be involve | |||
d in segment | ||||
routing networks: SR source nodes that originate packets with a segment in | ||||
the destination address of the IPv6 header, transit nodes that forward | the destination address of the IPv6 header, transit nodes that forward | |||
packets destined to a remote segment, and SR segment endpoint nodes that | packets destined to a remote segment, and SR segment endpoint nodes that | |||
process a local segment in the destination address of an IPv6 | process a local segment in the destination address of an IPv6 | |||
header.</t> | header.</t> | |||
<section anchor="SOURCE" numbered="true" toc="include" removeInRFC="false" | ||||
<section anchor="SOURCE" title="Source SR Node"> | pn="section-3.1"> | |||
<t>A Source SR Node is any node that originates an IPv6 packet with a | <name slugifiedName="name-sr-source-node">SR Source Node</name> | |||
segment (i.e. SRv6 SID) in the destination address of the IPv6 header. | <t pn="section-3.1-1">A SR source node is any node that originates an IP | |||
The packet leaving the source SR Node may or may not contain an SRH. | v6 packet with a | |||
This includes either: <list style="hanging"> | segment (i.e., SRv6 SID) in the destination address of the IPv6 header. | |||
<t>A host originating an IPv6 packet.</t> | The packet leaving the SR source node may or may not contain an SRH. | |||
This includes either: </t> | ||||
<t>An SR domain ingress router encapsulating a received packet in | <ul spacing="normal" bare="false" empty="false" pn="section-3.1-2"> | |||
an outer IPv6 header, followed by an optional SRH.</t> | <li pn="section-3.1-2.1">A host originating an IPv6 packet, or</li> | |||
</list></t> | <li pn="section-3.1-2.2">An SR domain ingress router encapsulating a r | |||
eceived packet in | ||||
<t>The mechanism through which a segment in the destination address of | an outer IPv6 header, followed by an optional SRH.</li> | |||
the IPv6 header and the Segment List in the SRH, is derived is outside | </ul> | |||
the scope of this document.</t> | <t pn="section-3.1-3">It is out of the scope of this document to describ | |||
e the mechanism | ||||
through which a segment in the destination address of | ||||
the IPv6 header and the Segment List in the SRH are derived.</t> | ||||
</section> | </section> | |||
<section anchor="TRANSIT" numbered="true" toc="include" removeInRFC="false | ||||
<section anchor="TRANSIT" title="Transit Node"> | " pn="section-3.2"> | |||
<t>A transit node is any node forwarding an IPv6 packet where the | <name slugifiedName="name-transit-node">Transit Node</name> | |||
<t pn="section-3.2-1">A transit node is any node forwarding an IPv6 pack | ||||
et where the | ||||
destination address of that packet is not locally configured as a | destination address of that packet is not locally configured as a | |||
segment nor a local interface. A transit node is not required to be | segment or a local interface. A transit node is not required to be | |||
capable of processing a segment nor SRH.</t> | capable of processing a segment or SRH.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-3.3 | ||||
<section title="SR Segment Endpoint Node"> | "> | |||
<t>A SR segment endpoint node is any node receiving an IPv6 packet | <name slugifiedName="name-sr-segment-endpoint-node">SR Segment Endpoint | |||
Node</name> | ||||
<t pn="section-3.3-1">An SR segment endpoint node is any node receiving | ||||
an IPv6 packet | ||||
where the destination address of that packet is locally configured as | where the destination address of that packet is locally configured as | |||
a segment or local interface.</t> | a segment or local interface.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="PacketProcessing" numbered="true" toc="include" removeInRFC | ||||
<section anchor="PacketProcessing" title="Packet Processing"> | ="false" pn="section-4"> | |||
<t>This section describes SRv6 packet processing at the SR source, | <name slugifiedName="name-packet-processing">Packet Processing</name> | |||
Transit and SR segment endpoint nodes.</t> | <t pn="section-4-1">This section describes SRv6 packet processing at the S | |||
R source, | ||||
<section anchor="pktSourceNode" title="Source SR Node"> | Transit, and SR segment endpoint nodes.</t> | |||
<t>A Source node steers a packet into an SR Policy. If the SR Policy | <section anchor="pktSourceNode" numbered="true" toc="include" removeInRFC= | |||
results in a segment list containing a single segment, and there is no | "false" pn="section-4.1"> | |||
need to add information to the SRH flag or to add TLV, the DA is set | <name slugifiedName="name-sr-source-node-2">SR Source Node</name> | |||
to the single segment list entry and the SRH MAY be omitted.</t> | <t pn="section-4.1-1">A source node steers a packet into an SR Policy. I | |||
f the SR Policy | ||||
<t>When needed, the SRH is created as follows:<list style="hanging"> | results in a Segment List containing a single segment, and there is no | |||
<t>Next Header and Hdr Ext Len fields are set as specified in | need to add information to the SRH flag or add TLV; the DA is set | |||
<xref target="RFC8200"/>.</t> | to the single Segment List entry, and the SRH <bcp14>MAY</bcp14> be omit | |||
ted.</t> | ||||
<t>Routing Type field is set as TBD (to be allocated by IANA, | <t pn="section-4.1-2">When needed, the SRH is created as follows:</t> | |||
suggested value 4).</t> | <dl newline="false" spacing="normal" pn="section-4.1-3"> | |||
<dt pn="section-4.1-3.1"/> | ||||
<t>The DA of the packet is set with the value of the first | <dd pn="section-4.1-3.2">The Next Header and Hdr Ext Len fields are se | |||
segment.</t> | t as specified in | |||
<xref target="RFC8200" format="default" sectionFormat="of" derivedCo | ||||
<t>The first element of the SRH Segment List is the ultimate | ntent="RFC8200"/>.</dd> | |||
<dt pn="section-4.1-3.3"/> | ||||
<dd pn="section-4.1-3.4">The Routing Type field is set to 4.</dd> | ||||
<dt pn="section-4.1-3.5"/> | ||||
<dd pn="section-4.1-3.6">The DA of the packet is set with the value of | ||||
the first | ||||
segment.</dd> | ||||
<dt pn="section-4.1-3.7"/> | ||||
<dd pn="section-4.1-3.8">The first element of the SRH Segment List is | ||||
the ultimate | ||||
segment. The second element is the penultimate segment, and so | segment. The second element is the penultimate segment, and so | |||
on.</t> | on.</dd> | |||
<dt pn="section-4.1-3.9"/> | ||||
<t>The Segments Left field is set to n-1 where n is the number of | <dd pn="section-4.1-3.10">The Segments Left field is set to n-1, where | |||
elements in the SR Policy.</t> | n is the number of | |||
elements in the SR Policy.</dd> | ||||
<t>The Last Entry field is set to n-1 where n is the number of | <dt pn="section-4.1-3.11"/> | |||
elements in the SR Policy.</t> | <dd pn="section-4.1-3.12">The Last Entry field is set to n-1, where n | |||
is the number of | ||||
<t>TLVs (including HMAC) may be set according to their | elements in the SR Policy.</dd> | |||
specification.</t> | <dt pn="section-4.1-3.13"/> | |||
<dd pn="section-4.1-3.14">TLVs (including HMAC) may be set according t | ||||
<t>The packet is forwarded toward the packet's Destination Address | o their | |||
(the first segment).</t> | specification.</dd> | |||
</list></t> | <dt pn="section-4.1-3.15"/> | |||
<dd pn="section-4.1-3.16">The packet is forwarded toward the packet's | ||||
<section anchor="REDUCED" title="Reduced SRH"> | Destination Address | |||
<t>When a source does not require the entire SID list to be | (the first segment).</dd> | |||
</dl> | ||||
<section anchor="REDUCED" numbered="true" toc="include" removeInRFC="fal | ||||
se" pn="section-4.1.1"> | ||||
<name slugifiedName="name-reduced-srh">Reduced SRH</name> | ||||
<t pn="section-4.1.1-1">When a source does not require the entire SID | ||||
list to be | ||||
preserved in the SRH, a reduced SRH may be used.</t> | preserved in the SRH, a reduced SRH may be used.</t> | |||
<t pn="section-4.1.1-2">A reduced SRH does not contain the first segme | ||||
<t>A reduced SRH does not contain the first segment of the related | nt of the related | |||
SR Policy (the first segment is the one already in the DA of the | SR Policy (the first segment is the one already in the DA of the | |||
IPv6 header), and the Last Entry field is set to n-2 where n is the | IPv6 header), and the Last Entry field is set to n-2, where n is the | |||
number of elements in the SR Policy.</t> | number of elements in the SR Policy.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-4.2 | ||||
<section title="Transit Node"> | "> | |||
<t>As specified in <xref target="RFC8200"/>, the only node allowed to | <name slugifiedName="name-transit-node-2">Transit Node</name> | |||
inspect the Routing Extension Header (and therefore the SRH), is the | <t pn="section-4.2-1">As specified in <xref target="RFC8200" format="def | |||
ault" sectionFormat="of" derivedContent="RFC8200"/>, the only node allowed to | ||||
inspect the Routing Extension Header (and therefore the SRH) is the | ||||
node corresponding to the DA of the packet. Any other transit node | node corresponding to the DA of the packet. Any other transit node | |||
MUST NOT inspect the underneath routing header and MUST forward the | <bcp14>MUST NOT</bcp14> inspect the underneath routing header and <bcp14 >MUST</bcp14> forward the | |||
packet toward the DA according to its IPv6 routing table.</t> | packet toward the DA according to its IPv6 routing table.</t> | |||
<t pn="section-4.2-2">When a SID is in the destination address of an IPv | ||||
<t>When a SID is in the destination address of an IPv6 header of a | 6 header of a | |||
packet, it's routed through an IPv6 network as an IPv6 address. SIDs, | packet, it's routed through an IPv6 network as an IPv6 address. SIDs, | |||
or the prefix(es) covering SIDs, and their reachability may be | or the prefix(es) covering SIDs, and their reachability may be | |||
distributed by means outside the scope of this document. For example, | distributed by means outside the scope of this document. For example, | |||
<xref target="RFC5308"/> or <xref target="RFC5340"/> may be used to | <xref target="RFC5308" format="default" sectionFormat="of" derivedConten t="RFC5308"/> or <xref target="RFC5340" format="default" sectionFormat="of" deri vedContent="RFC5340"/> may be used to | |||
advertise a prefix covering the SIDs on a node.</t> | advertise a prefix covering the SIDs on a node.</t> | |||
</section> | </section> | |||
<section anchor="ENDSID" numbered="true" toc="include" removeInRFC="false" | ||||
<section anchor="ENDSID" title="SR Segment Endpoint Node"> | pn="section-4.3"> | |||
<t>Without constraining the details of an implementation, the SR | <name slugifiedName="name-sr-segment-endpoint-node-2">SR Segment Endpoin | |||
t Node</name> | ||||
<t pn="section-4.3-1">Without constraining the details of an implementat | ||||
ion, the SR | ||||
segment endpoint node creates Forwarding Information Base (FIB) | segment endpoint node creates Forwarding Information Base (FIB) | |||
entries for its local SIDs.</t> | entries for its local SIDs.</t> | |||
<t pn="section-4.3-2">When an SRv6-capable node receives an IPv6 packet, | ||||
<t>When an SRv6-capable node receives an IPv6 packet, it performs a | it performs a | |||
longest-prefix-match lookup on the packets destination address. This | longest-prefix-match lookup on the packet's destination address. This | |||
lookup can return any of the following:<figure align="left"> | lookup can return any of the following:</t> | |||
<artwork> | <ul bare="false" empty="false" spacing="normal" pn="section-4.3-3"> | |||
* A FIB entry that represents a locally instantiated SRv6 SID | <li pn="section-4.3-3.1">A FIB entry that represents a locally instant | |||
* A FIB entry that represents a local interface, not locally | iated SRv6 SID</li> | |||
instantiated as an SRv6 SID | <li pn="section-4.3-3.2">A FIB entry that represents a local interface | |||
* A FIB entry that represents a non-local route | , not locally | |||
* No Match</artwork> | instantiated as an SRv6 SID</li> | |||
</figure></t> | <li pn="section-4.3-3.3">A FIB entry that represents a nonlocal route< | |||
/li> | ||||
<section anchor="pktENDSID" | <li pn="section-4.3-3.4">No Match</li> | |||
title="FIB Entry Is Locally Instantiated SRv6 SID"> | </ul> | |||
<t>This document, and section, defines a single SRv6 SID. Future | <section anchor="pktENDSID" numbered="true" toc="include" removeInRFC="f | |||
documents may define additional SRv6 SIDs. In which case, the entire | alse" pn="section-4.3.1"> | |||
<name slugifiedName="name-fib-entry-is-a-locally-inst">FIB Entry Is a | ||||
Locally Instantiated SRv6 SID</name> | ||||
<t pn="section-4.3.1-1">This document and section define a single SRv6 | ||||
SID. Future | ||||
documents may define additional SRv6 SIDs. In such a case, the entire | ||||
content of this section will be defined in that document.</t> | content of this section will be defined in that document.</t> | |||
<t pn="section-4.3.1-2">If the FIB entry represents a locally instanti | ||||
<t>If the FIB entry represents a locally instantiated SRv6 SID, | ated SRv6 SID, | |||
process the next header chain of the IPv6 header as defined in | process the next header chain of the IPv6 header as defined in | |||
section 4 of <xref target="RFC8200"/>. <xref target="SRHPROC"/> | <xref target="RFC8200" sectionFormat="of" section="4" format="default" | |||
describes how to process an SRH, <xref target="UPPERHEADER"/> | derivedLink="https://rfc-editor.org/rfc/rfc8200#section-4" derivedContent="RFC8 | |||
describes how to process an upper layer header or no next | 200"/>. <xref target="SRHPROC" format="default" sectionFormat="of" derivedConten | |||
header.</t> | t="Section 4.3.1.1"/> | |||
describes how to process an SRH; <xref target="UPPERHEADER" format="de | ||||
<t>Processing this SID modifies the Segments Left and, if configured | fault" sectionFormat="of" derivedContent="Section 4.3.1.2"/> | |||
to process TLVs, it may modify the "variable length data" of TLV | describes how to process an upper-layer header or the absence of a Nex | |||
types that change en route. Therefore Segments Left is mutable and | t | |||
Header.</t> | ||||
<t pn="section-4.3.1-3">Processing this SID modifies the Segments Left | ||||
and, if configured | ||||
to process TLVs, it may modify the "variable-length data" of TLV | ||||
types that change en route. Therefore, Segments Left is mutable, and | ||||
TLVs that change en route are mutable. The remainder of the SRH | TLVs that change en route are mutable. The remainder of the SRH | |||
(Flags, Tag, Segment List, and TLVs that do not change en route) are | (Flags, Tag, Segment List, and TLVs that do not change en route) are | |||
immutable while processing this SID.</t> | immutable while processing this SID.</t> | |||
<section anchor="SRHPROC" numbered="true" toc="exclude" removeInRFC="f | ||||
<section anchor="SRHPROC" title="SRH Processing"> | alse" pn="section-4.3.1.1"> | |||
<t><figure align="left"> | <name slugifiedName="name-srh-processing">SRH Processing</name> | |||
<artwork> | <artwork name="" type="" align="left" alt="" pn="section-4.3.1.1-1"> | |||
S01. When an SRH is processed { | S01. When an SRH is processed { | |||
S02. If Segments Left is equal to zero { | S02. If Segments Left is equal to zero { | |||
S03. Proceed to process the next header in the packet, | S03. Proceed to process the next header in the packet, | |||
whose type is identified by the Next Header field in | whose type is identified by the Next Header field in | |||
the Routing header. | the routing header. | |||
S04. } | S04. } | |||
S05. Else { | S05. Else { | |||
S06. If local configuration requires TLV processing { | S06. If local configuration requires TLV processing { | |||
S07. Perform TLV processing (see TLV Processing) | S07. Perform TLV processing (see TLV Processing) | |||
S08. } | S08. } | |||
S09. max_last_entry = ( Hdr Ext Len / 2 ) - 1 | S09. max_last_entry = ( Hdr Ext Len / 2 ) - 1 | |||
S10. If ((Last Entry > max_last_entry) or | S10. If ((Last Entry > max_last_entry) or | |||
S11. (Segments Left is greater than (Last Entry+1)) { | S11. (Segments Left is greater than (Last Entry+1)) { | |||
S12. Send an ICMP Parameter Problem, Code 0, message to | S12. Send an ICMP Parameter Problem, Code 0, message to | |||
the Source Address, pointing to the Segments Left | the Source Address, pointing to the Segments Left | |||
skipping to change at line 753 ¶ | skipping to change at line 890 ¶ | |||
S19. } | S19. } | |||
S20. Else { | S20. Else { | |||
S21. Decrement the Hop Limit by 1 | S21. Decrement the Hop Limit by 1 | |||
S22. Resubmit the packet to the IPv6 module for transmission | S22. Resubmit the packet to the IPv6 module for transmission | |||
to the new destination. | to the new destination. | |||
S23. } | S23. } | |||
S24. } | S24. } | |||
S25. } | S25. } | |||
S26. } | S26. } | |||
</artwork> | </artwork> | |||
</figure></t> | <section anchor="TLVPROCESS" numbered="true" toc="exclude" removeInR | |||
FC="false" pn="section-4.3.1.1.1"> | ||||
<section anchor="TLVPROCESS" title="TLV Processing"> | <name slugifiedName="name-tlv-processing">TLV Processing</name> | |||
<t>Local configuration determines how TLVs are to be processed | <t pn="section-4.3.1.1.1-1">Local configuration determines how TLV | |||
when the Active Segment is a local SID defined in this document. | s are to be processed | |||
The definition of local configuration is outside the scope of | when the Active Segment is a local SID defined in this document. | |||
this document.</t> | The definition of local configuration is outside the scope of | |||
this document.</t> | ||||
<t>For illustration purpose only, two example local | <t pn="section-4.3.1.1.1-2">For illustration purposes only, two ex | |||
configurations that may be associated with a SID are provided | ample local | |||
below.</t> | configurations that may be associated with a SID are provided | |||
below.</t> | ||||
<t><figure align="left"> | <artwork name="" type="" align="left" alt="" pn="section-4.3.1.1.1 | |||
<artwork> | -3"> | |||
Example 1: | Example 1: | |||
For any packet received from interface I2 | For any packet received from interface I2 | |||
Skip TLV processing | Skip TLV processing | |||
Example 2: | Example 2: | |||
For any packet received from interface I1 | For any packet received from interface I1 | |||
If first TLV is HMAC { | If first TLV is HMAC { | |||
Process the HMAC TLV | Process the HMAC TLV | |||
} | } | |||
Else { | Else { | |||
Discard the packet | Discard the packet | |||
}</artwork> | }</artwork> | |||
</figure></t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="UPPERHEADER" numbered="true" toc="exclude" removeInRF | ||||
<section anchor="UPPERHEADER" | C="false" pn="section-4.3.1.2"> | |||
title="Upper-layer Header or No Next Header"> | <name slugifiedName="name-upper-layer-header-or-no-ne">Upper-Layer H | |||
<t>When processing the Upper-layer header of a packet matching a | eader or No Next Header</name> | |||
<t pn="section-4.3.1.2-1">When processing the upper-layer header of | ||||
a packet matching a | ||||
FIB entry locally instantiated as an SRv6 SID defined in this | FIB entry locally instantiated as an SRv6 SID defined in this | |||
document.</t> | document:</t> | |||
<artwork name="" type="" align="left" alt="" pn="section-4.3.1.2-2"> | ||||
<t><figure> | ||||
<artwork> | ||||
IF (Upper-layer Header is IPv4 or IPv6) and | IF (Upper-layer Header is IPv4 or IPv6) and | |||
local configuration permits { | local configuration permits { | |||
Perform IPv6 decapsulation | Perform IPv6 decapsulation | |||
Resubmit the decapsulated packet to the IPv4 or IPv6 module | Resubmit the decapsulated packet to the IPv4 or IPv6 module | |||
} | } | |||
ELSE { | ELSE { | |||
Send an ICMP parameter problem message to the Source Address and | Send an ICMP parameter problem message to the Source Address and | |||
discard the packet. Error code (TBD by IANA) "SR Upper-layer | discard the packet. Error code (4) "SR Upper-layer | |||
Header Error", pointer set to the offset of the upper-layer | Header Error", pointer set to the offset of the upper-layer | |||
header. | header. | |||
} | } | |||
</artwork> | </artwork> | |||
</figure></t> | <t pn="section-4.3.1.2-3">A unique error code allows an SR source no | |||
de to recognize an | ||||
<t>A unique error code allows an SR Source node to recognize an | ||||
error in SID processing at an endpoint.</t> | error in SID processing at an endpoint.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-4 | ||||
<section title="FIB Entry Is A Local Interface"> | .3.2"> | |||
<t>If the FIB entry represents a local interface, not locally | <name slugifiedName="name-fib-entry-is-a-local-interf">FIB Entry Is a | |||
instantiated as an SRv6 SID, the SRH is processed as follows:<list> | Local Interface</name> | |||
<t>If Segments Left is zero, the node must ignore the Routing | <t pn="section-4.3.2-1">If the FIB entry represents a local interface | |||
and is not locally | ||||
instantiated as an SRv6 SID, the SRH is processed as follows:</t> | ||||
<ul empty="true" spacing="normal" bare="false" pn="section-4.3.2-2"> | ||||
<li pn="section-4.3.2-2.1">If Segments Left is zero, the node must i | ||||
gnore the routing | ||||
header and proceed to process the next header in the packet, | header and proceed to process the next header in the packet, | |||
whose type is identified by the Next Header field in the Routing | whose type is identified by the Next Header field in the routing | |||
Header.</t> | header.</li> | |||
<li pn="section-4.3.2-2.2">If Segments Left is non-zero, the node mu | ||||
<t>If Segments Left is non-zero, the node must discard the | st discard the | |||
packet and send an ICMP Parameter Problem, Code 0, message to | packet and send an ICMP Parameter Problem, Code 0, message to | |||
the packet's Source Address, pointing to the unrecognized | the packet's Source Address, pointing to the unrecognized | |||
Routing Type.</t> | Routing Type.</li> | |||
</list></t> | </ul> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-4 | ||||
<section title="FIB Entry Is A Non-Local Route"> | .3.3"> | |||
<t>Processing is not changed by this document.</t> | <name slugifiedName="name-fib-entry-is-a-nonlocal-rou">FIB Entry Is a | |||
Nonlocal Route</name> | ||||
<t pn="section-4.3.3-1">Processing is not changed by this document.</t | ||||
> | ||||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-4 | ||||
<section title="FIB Entry Is A No Match"> | .3.4"> | |||
<t>Processing is not changed by this document.</t> | <name slugifiedName="name-fib-entry-is-a-no-match">FIB Entry Is a No M | |||
atch</name> | ||||
<t pn="section-4.3.4-1">Processing is not changed by this document.</t | ||||
> | ||||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="DEP" numbered="true" toc="include" removeInRFC="false" pn=" | ||||
<section anchor="DEP" title="Intra SR Domain Deployment Model"> | section-5"> | |||
<t>The use of the SIDs exclusively within the SR Domain and solely for | <name slugifiedName="name-intra-sr-domain-deployment-">Intra-SR-Domain Dep | |||
packets of the SR Domain is an important deployment model.</t> | loyment Model</name> | |||
<t pn="section-5-1">The use of the SIDs exclusively within the SR domain a | ||||
<t>This enables the SR Domain to act as a single routing system.</t> | nd solely for | |||
packets of the SR domain is an important deployment model.</t> | ||||
<t>This section covers:<list style="symbols"> | <t pn="section-5-2">This enables the SR domain to act as a single routing | |||
<t>securing the SR Domain from external attempt to use its SIDs</t> | system.</t> | |||
<t pn="section-5-3">This section covers:</t> | ||||
<t>SR Domain as a single system with delegation between | <ul spacing="normal" bare="false" empty="false" pn="section-5-4"> | |||
components</t> | <li pn="section-5-4.1">securing the SR domain from external attempts to | |||
use its SIDs</li> | ||||
<t>handling packets of the SR Domain</t> | <li pn="section-5-4.2">using the SR domain as a single system with deleg | |||
</list></t> | ation between | |||
components</li> | ||||
<section anchor="SECSRDOMAIN" title="Securing the SR Domain"> | <li pn="section-5-4.3">handling packets of the SR domain</li> | |||
<t>Nodes outside the SR Domain are not trusted: they cannot directly | </ul> | |||
<section anchor="SECSRDOMAIN" numbered="true" toc="include" removeInRFC="f | ||||
alse" pn="section-5.1"> | ||||
<name slugifiedName="name-securing-the-sr-domain">Securing the SR Domain | ||||
</name> | ||||
<t pn="section-5.1-1">Nodes outside the SR domain are not trusted: they | ||||
cannot directly | ||||
use the SIDs of the domain. This is enforced by two levels of access | use the SIDs of the domain. This is enforced by two levels of access | |||
control lists: <list style="numbers"> | control lists: </t> | |||
<t>Any packet entering the SR Domain and destined to a SID within | <ol spacing="normal" type="1" start="1" pn="section-5.1-2"> | |||
the SR Domain is dropped. This may be realized with the following | <li pn="section-5.1-2.1" derivedCounter="1."> | |||
<t pn="section-5.1-2.1.1">Any packet entering the SR domain and dest | ||||
ined to a SID within | ||||
the SR domain is dropped. This may be realized with the following | ||||
logic. Other methods with equivalent outcome are considered | logic. Other methods with equivalent outcome are considered | |||
compliant: <list style="symbols"> | compliant: </t> | |||
<t>allocate all the SID's from a block S/s</t> | <ul spacing="normal" bare="false" empty="false" pn="section-5.1-2.1. | |||
2"> | ||||
<t>configure each external interface of each edge node of the | <li pn="section-5.1-2.1.2.1">Allocate all the SIDs from a block S/ | |||
domain with an inbound infrastructure access list (IACL) which | s</li> | |||
<li pn="section-5.1-2.1.2.2">Configure each external interface of | ||||
each edge node of the | ||||
domain with an inbound infrastructure access list (IACL) that | ||||
drops any incoming packet with a destination address in | drops any incoming packet with a destination address in | |||
S/s</t> | S/s</li> | |||
<li pn="section-5.1-2.1.2.3">Failure to implement this method of i | ||||
<t>Failure to implement this method of ingress filtering | ngress filtering | |||
exposes the SR Domain to source routing attacks as described | exposes the SR domain to source-routing attacks, as described | |||
and referenced in <xref target="RFC5095"/></t> | and referenced in <xref target="RFC5095" format="default" sectio | |||
</list></t> | nFormat="of" derivedContent="RFC5095"/></li> | |||
</ul> | ||||
<t>The distributed protection in #1 is complemented with per node | </li> | |||
<li pn="section-5.1-2.2" derivedCounter="2."> | ||||
<t pn="section-5.1-2.2.1">The distributed protection in #1 is comple | ||||
mented with per-node | ||||
protection, dropping packets to SIDs from source addresses outside | protection, dropping packets to SIDs from source addresses outside | |||
the SR Domain. This may be realized with the following logic. | the SR domain. This may be realized with the following logic. | |||
Other methods with equivalent outcome are considered compliant: | Other methods with equivalent outcome are considered compliant: | |||
<list style="symbols"> | </t> | |||
<t>assign all interface addresses from prefix A/a</t> | <ul spacing="normal" bare="false" empty="false" pn="section-5.1-2.2. | |||
2"> | ||||
<t>at node k, all SIDs local to k are assigned from prefix | <li pn="section-5.1-2.2.2.1">Assign all interface addresses from p | |||
Sk/sk</t> | refix A/a</li> | |||
<li pn="section-5.1-2.2.2.2">At node k, all SIDs local to k are as | ||||
<t>configure each internal interface of each SR node k in the | signed from prefix | |||
SR Domain with an inbound IACL which drops any incoming packet | Sk/sk</li> | |||
<li pn="section-5.1-2.2.2.3">Configure each internal interface of | ||||
each SR node k in the | ||||
SR domain with an inbound IACL that drops any incoming packet | ||||
with a destination address in Sk/sk if the source address is | with a destination address in Sk/sk if the source address is | |||
not in A/a.</t> | not in A/a.</li> | |||
</list></t> | </ul> | |||
</list></t> | </li> | |||
</ol> | ||||
</section> | </section> | |||
<section anchor="SINGLESYS" numbered="true" toc="include" removeInRFC="fal | ||||
<section anchor="SINGLESYS" | se" pn="section-5.2"> | |||
title="SR Domain as A Single System with Delegation Among Compone | <name slugifiedName="name-sr-domain-as-a-single-syste">SR Domain as a Si | |||
nts"> | ngle System with Delegation among Components</name> | |||
<t>All intra SR Domain packets are of the SR Domain. The IPv6 header | <t pn="section-5.2-1">All intra-SR-domain packets are of the SR domain. | |||
is originated by a node of the SR Domain, and is destined to a node of | The IPv6 header | |||
the SR Domain.</t> | is originated by a node of the SR domain and is destined to a node of | |||
the SR domain.</t> | ||||
<t>All inter domain packets are encapsulated for the part of the | <t pn="section-5.2-2">All interdomain packets are encapsulated for the p | |||
packet journey that is within the SR Domain. The outer IPv6 header is | art of the | |||
originated by a node of the SR Domain, and is destined to a node of | packet journey that is within the SR domain. The outer IPv6 header is | |||
the SR Domain.</t> | originated by a node of the SR domain and is destined to a node of | |||
the SR domain.</t> | ||||
<t>As a consequence, any packet within the SR Domain is of the SR | <t pn="section-5.2-3">As a consequence, any packet within the SR domain | |||
Domain.</t> | is of the SR | |||
domain.</t> | ||||
<t>The SR Domain is a system in which the operator may want to | <t pn="section-5.2-4">The SR domain is a system in which the operator ma | |||
distribute or delegate different operations of the outer most header | y want to | |||
distribute or delegate different operations of the outermost header | ||||
to different nodes within the system.</t> | to different nodes within the system.</t> | |||
<t pn="section-5.2-5">An operator of an SR domain may choose to delegate | ||||
<t>An operator of an SR domain may choose to delegate SRH addition to | SRH addition to | |||
a host node within the SR domain, and validation of the contents of | a host node within the SR domain and delegate validation of the contents | |||
of | ||||
any SRH to a more trusted router or switch attached to the host. | any SRH to a more trusted router or switch attached to the host. | |||
Consider a top of rack switch (T) connected to host (H) via interface | Consider a top-of-rack switch T connected to host H via interface | |||
(I). H receives an SRH (SRH1) with a computed HMAC via some SDN method | I. H receives an SRH (SRH1) with a computed HMAC via some SDN method | |||
outside the scope of this document. H classifies traffic it sources | outside the scope of this document. H classifies traffic it sources | |||
and adds SRH1 to traffic requiring a specific SLA. T is configured | and adds SRH1 to traffic requiring a specific Service Level | |||
Agreement (SLA). T is configured | ||||
with an IACL on I requiring verification of the SRH for any packet | with an IACL on I requiring verification of the SRH for any packet | |||
destined to the SID block of the SR Domain (S/s). T checks and | destined to the SID block of the SR domain (S/s). T checks and | |||
verifies that SRH1 is valid, contains an HMAC TLV and verifies the | verifies that SRH1 is valid and contains an HMAC TLV; T then verifies th | |||
e | ||||
HMAC.</t> | HMAC.</t> | |||
<t pn="section-5.2-6">An operator of the SR domain may choose to have al | ||||
<t>An operator of the SR Domain may choose to have all segments in the | l segments in the | |||
SR Domain verify the HMAC. This mechanism would verify that the SRH | SR domain verify the HMAC. This mechanism would verify that the SRH | |||
segment list is not modified while traversing the SR Domain.</t> | Segment List is not modified while traversing the SR domain.</t> | |||
</section> | </section> | |||
<section anchor="MTU" numbered="true" toc="include" removeInRFC="false" pn | ||||
<section anchor="MTU" title="MTU Considerations"> | ="section-5.3"> | |||
<t>An SR Domain ingress edge node encapsulates packets traversing the | <name slugifiedName="name-mtu-considerations">MTU Considerations</name> | |||
SR Domain, and needs to consider the MTU of the SR Domain. Within the | <t pn="section-5.3-1">An SR domain ingress edge node encapsulates packet | |||
SR Domain, well known mitigation techniques are RECOMMENDED, such as | s traversing the | |||
deploying a greater MTU value within the SR Domain than at the ingress | SR domain and needs to consider the MTU of the SR domain. Within the | |||
SR domain, well-known mitigation techniques are <bcp14>RECOMMENDED</bcp1 | ||||
4>, such as | ||||
deploying a greater MTU value within the SR domain than at the ingress | ||||
edges.</t> | edges.</t> | |||
<t pn="section-5.3-2">Encapsulation with an outer IPv6 header and SRH sh | ||||
<t>Encapsulation with an outer IPv6 header and SRH share the same MTU | ares the same MTU | |||
and fragmentation considerations as IPv6 tunnels described in <xref | and fragmentation considerations as IPv6 tunnels described in <xref targ | |||
target="RFC2473"/>. Further investigation on the limitation of various | et="RFC2473" format="default" sectionFormat="of" derivedContent="RFC2473"/>. Fur | |||
tunneling methods (including IPv6 tunnels) are discussed in <xref | ther investigation on the limitation of various | |||
target="I-D.ietf-intarea-tunnels"/> and SHOULD be considered by | tunneling methods (including IPv6 tunnels) is discussed in <xref target= | |||
operators when considering MTU within the SR Domain.</t> | "I-D.ietf-intarea-tunnels" format="default" sectionFormat="of" derivedContent="I | |||
NTAREA-TUNNELS"/> and | ||||
<bcp14>SHOULD</bcp14> be considered by | ||||
operators when considering MTU within the SR domain.</t> | ||||
</section> | </section> | |||
<section anchor="ICMP" numbered="true" toc="include" removeInRFC="false" p | ||||
<section anchor="ICMP" title="ICMP Error Processing"> | n="section-5.4"> | |||
<t>ICMP error packets generated within the SR Domain are sent to | <name slugifiedName="name-icmp-error-processing">ICMP Error Processing</ | |||
source nodes within the SR Domain. The invoking packet in the ICMP | name> | |||
<t pn="section-5.4-1">ICMP error packets generated within the SR domain | ||||
are sent to | ||||
source nodes within the SR domain. The invoking packet in the ICMP | ||||
error message may contain an SRH. Since the destination address of a | error message may contain an SRH. Since the destination address of a | |||
packet with an SRH changes as each segment is processed, it may not be | packet with an SRH changes as each segment is processed, it may not be | |||
the destination used by the socket or application that generated the | the destination used by the socket or application that generated the | |||
invoking packet.</t> | invoking packet.</t> | |||
<t pn="section-5.4-2">For the source of an invoking packet to process th | ||||
<t>For the source of an invoking packet to process the ICMP error | e ICMP error | |||
message, the ultimate destination address of the IPv6 header may be | message, the ultimate destination address of the IPv6 header may be | |||
required. The following logic is used to determine the destination | required. The following logic is used to determine the destination | |||
address for use by protocol error handlers.<list style="symbols"> | address for use by protocol-error handlers.</t> | |||
<t>Walk all extension headers of the invoking IPv6 packet to the | <ul spacing="normal" bare="false" empty="false" pn="section-5.4-3"> | |||
routing extension header preceding the upper layer header.<list | <li pn="section-5.4-3.1"> | |||
style="symbols"> | <t pn="section-5.4-3.1.1">Walk all extension headers of the invoking | |||
<t>If routing header is type TBD IANA (SRH)<list | IPv6 packet to the | |||
style="symbols"> | routing extension header preceding the upper-layer header.</t> | |||
<t>The SID at Segment List[0] may be used as the | <ul spacing="normal" bare="false" empty="false" pn="section-5.4-3.1. | |||
destination address of the invoking packet.</t> | 2"> | |||
</list></t> | <li pn="section-5.4-3.1.2.1"> | |||
</list></t> | <t pn="section-5.4-3.1.2.1.1">If routing header is type 4 Segmen | |||
</list></t> | t Routing Header (SRH)</t> | |||
<ul spacing="normal" bare="false" empty="false" pn="section-5.4- | ||||
<t>ICMP errors are then processed by upper layer transports as defined | 3.1.2.1.2"> | |||
in <xref target="RFC4443"/>.</t> | <li pn="section-5.4-3.1.2.1.2.1">The SID at Segment List[0] ma | |||
y be used as the | ||||
<t>For IP packets encapsulated in an outer IPv6 header, ICMP error | destination address of the invoking packet.</li> | |||
handling is as defined in <xref target="RFC2473"/>.</t> | </ul> | |||
</li> | ||||
</ul> | ||||
</li> | ||||
</ul> | ||||
<t pn="section-5.4-4">ICMP errors are then processed by upper-layer tran | ||||
sports as defined | ||||
in <xref target="RFC4443" format="default" sectionFormat="of" derivedCon | ||||
tent="RFC4443"/>.</t> | ||||
<t pn="section-5.4-5">For IP packets encapsulated in an outer IPv6 heade | ||||
r, ICMP error | ||||
handling is as defined in <xref target="RFC2473" format="default" sectio | ||||
nFormat="of" derivedContent="RFC2473"/>.</t> | ||||
</section> | </section> | |||
<section anchor="LBECMP" numbered="true" toc="include" removeInRFC="false" | ||||
<section anchor="LBECMP" title="Load Balancing and ECMP"> | pn="section-5.5"> | |||
<t>For any inter domain packet, the SR Source node MUST impose a flow | <name slugifiedName="name-load-balancing-and-ecmp">Load Balancing and EC | |||
MP</name> | ||||
<t pn="section-5.5-1">For any interdomain packet, the SR source node <bc | ||||
p14>MUST</bcp14> impose a flow | ||||
label computed based on the inner packet. The computation of the flow | label computed based on the inner packet. The computation of the flow | |||
label is as recommended in <xref target="RFC6438"/> for the sending | label is as recommended in <xref target="RFC6438" format="default" secti onFormat="of" derivedContent="RFC6438"/> for the sending | |||
Tunnel End Point.</t> | Tunnel End Point.</t> | |||
<t pn="section-5.5-2">For any intradomain packet, the SR source node <bc | ||||
<t>For any intra domain packet, the SR Source node SHOULD impose a | p14>SHOULD</bcp14> impose a | |||
flow label computed as described in <xref target="RFC6437"/> to assist | flow label computed as described in <xref target="RFC6437" format="defau | |||
lt" sectionFormat="of" derivedContent="RFC6437"/> to assist | ||||
ECMP load balancing at transit nodes incapable of computing a 5-tuple | ECMP load balancing at transit nodes incapable of computing a 5-tuple | |||
beyond the SRH.</t> | beyond the SRH.</t> | |||
<t pn="section-5.5-3">At any transit node within an SR domain, the flow | ||||
<t>At any transit node within an SR domain, the flow label MUST be | label <bcp14>MUST</bcp14> be | |||
used as defined in <xref target="RFC6438"/> to calculate the ECMP hash | used as defined in <xref target="RFC6438" format="default" sectionFormat | |||
toward the destination address. If flow label is not used, the transit | ="of" derivedContent="RFC6438"/> to calculate the ECMP hash | |||
toward the destination address. If a flow label is not used, the transit | ||||
node would likely hash all packets between a pair of SR Edge nodes to | node would likely hash all packets between a pair of SR Edge nodes to | |||
the same link.</t> | the same link.</t> | |||
<t pn="section-5.5-4">At an SR segment endpoint node, the flow label <bc | ||||
<t>At an SR segment endpoint node, the flow label MUST be used as | p14>MUST</bcp14> be used as | |||
defined in <xref target="RFC6438"/> to calculate any ECMP hash used to | defined in <xref target="RFC6438" format="default" sectionFormat="of" de | |||
rivedContent="RFC6438"/> to calculate any ECMP hash used to | ||||
forward the processed packet to the next segment.</t> | forward the processed packet to the next segment.</t> | |||
</section> | </section> | |||
<section anchor="other" numbered="true" toc="include" removeInRFC="false" | ||||
<section anchor="other" title="Other Deployments"> | pn="section-5.6"> | |||
<t>Other deployment models and their implications on security, MTU, | <name slugifiedName="name-other-deployments">Other Deployments</name> | |||
HMAC, ICMP error processing and interaction with other extension | <t pn="section-5.6-1">Other deployment models and their implications on | |||
security, MTU, | ||||
HMAC, ICMP error processing, and interaction with other extension | ||||
headers are outside the scope of this document.</t> | headers are outside the scope of this document.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="ILL" numbered="true" toc="include" removeInRFC="false" pn=" | ||||
<section anchor="ILL" title="Illustrations"> | section-6"> | |||
<t>This section provides illustrations of SRv6 packet processing at SR | <name slugifiedName="name-illustrations">Illustrations</name> | |||
source, transit and SR segment endpoint nodes.</t> | <t pn="section-6-1">This section provides illustrations of SRv6 packet pro | |||
cessing at SR | ||||
<section title="Abstract Representation of an SRH"> | source, transit, and SR segment endpoint nodes.</t> | |||
<t>For a node k, its IPv6 address is represented as Ak, its SRv6 SID | <section numbered="true" toc="include" removeInRFC="false" pn="section-6.1 | |||
"> | ||||
<name slugifiedName="name-abstract-representation-of-">Abstract Represen | ||||
tation of an SRH</name> | ||||
<t pn="section-6.1-1">For a node k, its IPv6 address is represented as A | ||||
k, and its SRv6 SID | ||||
is represented as Sk.</t> | is represented as Sk.</t> | |||
<t pn="section-6.1-2">IPv6 headers are represented as the tuple of (sour | ||||
<t>IPv6 headers are represented as the tuple of (source, destination). | ce,destination). | |||
For example, a packet with source address A1 and destination address | For example, a packet with source address A1 and destination address | |||
A2 is represented as (A1,A2). The payload of the packet is | A2 is represented as (A1,A2). The payload of the packet is | |||
omitted.</t> | omitted.</t> | |||
<t pn="section-6.1-3">An SR Policy is a list of segments. A list of segm | ||||
<t>An SR Policy is a list of segments. A list of segments is | ents is | |||
represented as <S1,S2,S3> where S1 is the first SID to visit, S2 | represented as <S1,S2,S3> where S1 is the first SID to visit, S2 | |||
is the second SID to visit and S3 is the last SID to visit.</t> | is the second SID to visit, and S3 is the last SID to visit.</t> | |||
<t pn="section-6.1-4">(SA,DA) (S3,S2,S1; SL) represents an IPv6 packet w | ||||
<t>(SA,DA) (S3, S2, S1; SL) represents an IPv6 packet with:<list | ith:</t> | |||
style="symbols"> | <ul spacing="normal" bare="false" empty="false" pn="section-6.1-5"> | |||
<t>Source Address is SA, Destination Addresses is DA, and | <li pn="section-6.1-5.1">Source Address SA, Destination Addresses DA, | |||
next-header is SRH.</t> | and | |||
next header SRH.</li> | ||||
<t>SRH with SID list <S1, S2, S3> with SegmentsLeft = | <li pn="section-6.1-5.2">SRH with SID list <S1,S2,S3> with Segme | |||
SL.</t> | ntsLeft = | |||
SL.</li> | ||||
<t>Note the difference between the <> and () symbols. | <li pn="section-6.1-5.3">Note the difference between the <> and | |||
<S1, S2, S3> represents a SID list where the leftmost | () symbols. | |||
segment is the first segment. Whereas, (S3, S2, S1; SL) represents | <S1,S2,S3> represents a SID list where the leftmost | |||
segment is the first segment. In contrast, (S3,S2,S1; SL) represents | ||||
the same SID list but encoded in the SRH Segment List format where | the same SID list but encoded in the SRH Segment List format where | |||
the leftmost segment is the last segment. When referring to an SR | the leftmost segment is the last segment. When referring to an SR | |||
policy in a high-level use-case, it is simpler to use the <S1, | Policy in a high-level use case, it is simpler to use the <S1,S2, | |||
S2, S3> notation. When referring to an illustration of detailed | S3> notation. When referring to an illustration of detailed | |||
behavior, the (S3, S2, S1; SL) notation is more convenient.</t> | behavior, the (S3,S2,S1; SL) notation is more convenient.</li> | |||
</list></t> | </ul> | |||
<t pn="section-6.1-6">At its SR Policy headend, the Segment List <S1, | ||||
<t>At its SR Policy headend, the Segment List <S1,S2,S3> results | S2,S3> results | |||
in SRH (S3,S2,S1; SL=2) represented fully as: <figure align="left"> | in SRH (S3,S2,S1; SL=2) represented fully as: </t> | |||
<artwork> | <artwork name="" type="" align="left" alt="" pn="section-6.1-7"> | |||
Segments Left=2 | Segments Left=2 | |||
Last Entry=2 | Last Entry=2 | |||
Flags=0 | Flags=0 | |||
Tag=0 | Tag=0 | |||
Segment List[0]=S3 | Segment List[0]=S3 | |||
Segment List[1]=S2 | Segment List[1]=S2 | |||
Segment List[2]=S1</artwork> | Segment List[2]=S1</artwork> | |||
</figure></t> | ||||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-6.2 | ||||
<section title="Example Topology"> | "> | |||
<t>The following topology is used in examples below: <figure | <name slugifiedName="name-example-topology">Example Topology</name> | |||
align="center" anchor="TOPO1"> | <t pn="section-6.2-1">The following topology is used in examples below: | |||
<artwork> | </t> | |||
<figure anchor="TOPO1" align="left" suppress-title="false" pn="figure-1" | ||||
> | ||||
<artwork name="" type="" align="left" alt="" pn="section-6.2-2.1"> | ||||
+ * * * * * * * * * * * * * * * * * * * * + | + * * * * * * * * * * * * * * * * * * * * + | |||
* [8] [9] * | * [8] [9] * | |||
| | | | | | |||
* | | * | * | | * | |||
[1]----[3]--------[5]----------------[6]---------[4]---[2] | [1]----[3]--------[5]----------------[6]---------[4]---[2] | |||
* | | * | * | | * | |||
| | | | | | |||
* | | * | * | | * | |||
+--------[7]-------+ | +--------[7]-------+ | |||
* * | * * | |||
+ * * * * * * * SR Domain * * * * * * * +</artwork> | + * * * * * * * SR domain * * * * * * * +</artwork> | |||
</figure><list style="symbols"> | </figure> | |||
<t>3 and 4 are SR Domain edge routers</t> | <ul spacing="normal" bare="false" empty="false" pn="section-6.2-3"> | |||
<li pn="section-6.2-3.1">3 and 4 are SR domain edge routers</li> | ||||
<t>5, 6, and 7 are all SR Domain routers</t> | <li pn="section-6.2-3.2">5, 6, and 7 are all SR domain routers</li> | |||
<li pn="section-6.2-3.3">8 and 9 are hosts within the SR domain</li> | ||||
<t>8 and 9 are hosts within the SR Domain</t> | <li pn="section-6.2-3.4">1 and 2 are hosts outside the SR domain</li> | |||
<li pn="section-6.2-3.5">The SR domain implements ingress filtering as | ||||
<t>1 and 2 are hosts outside the SR Domain</t> | per <xref target="SECSRDOMAIN" format="default" sectionFormat="of" derivedConte | |||
nt="Section 5.1"/> and no external packet can | ||||
<t>The SR domain implements ingress filtering as per <xref | enter the domain | |||
target="SECSRDOMAIN"/> and no external packet can enter the domain | with a destination address equal to a segment of the domain.</li> | |||
with a destination address equal to a segment of the domain.</t> | </ul> | |||
</list></t> | ||||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-6.3 | ||||
<section title="Source SR Node"> | "> | |||
<section title="Intra SR Domain Packet"> | <name slugifiedName="name-sr-source-node-3">SR Source Node</name> | |||
<t>When host 8 sends a packet to host 9 via an SR Policy | <section numbered="true" toc="include" removeInRFC="false" pn="section-6 | |||
.3.1"> | ||||
<name slugifiedName="name-intra-sr-domain-packet">Intra-SR-Domain Pack | ||||
et</name> | ||||
<t pn="section-6.3.1-1">When host 8 sends a packet to host 9 via an SR | ||||
Policy | ||||
<S7,A9> the packet is</t> | <S7,A9> the packet is</t> | |||
<t pn="section-6.3.1-2">P1: (A8,S7)(A9,S7; SL=1)</t> | ||||
<t>P1: (A8,S7)(A9,S7; SL=1)</t> | <section numbered="true" toc="exclude" removeInRFC="false" pn="section | |||
-6.3.1.1"> | ||||
<section title="Reduced Variant"> | <name slugifiedName="name-reduced-variant">Reduced Variant</name> | |||
<t>When host 8 sends a packet to host 9 via an SR Policy | <t pn="section-6.3.1.1-1">When host 8 sends a packet to host 9 via a | |||
n SR Policy | ||||
<S7,A9> and it wants to use a reduced SRH, the packet is</t> | <S7,A9> and it wants to use a reduced SRH, the packet is</t> | |||
<t pn="section-6.3.1.1-2">P2: (A8,S7)(A9; SL=1)</t> | ||||
<t>P2: (A8,S7)(A9; SL=1)</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-6 | ||||
<section title="Inter SR Domain Packet - Transit"> | .3.2"> | |||
<t>When host 1 sends a packet to host 2, the packet is</t> | <name slugifiedName="name-inter-sr-domain-packet-tran">Inter-SR-Domain | |||
Packet -- Transit</name> | ||||
<t>P3: (A1,A2)</t> | <t pn="section-6.3.2-1">When host 1 sends a packet to host 2, the pack | |||
et is</t> | ||||
<t>The SR Domain ingress router 3 receives P3 and steers it to SR | <t pn="section-6.3.2-2">P3: (A1,A2)</t> | |||
Domain egress router 4 via an SR Policy <S7, S4>. Router 3 | <t pn="section-6.3.2-3">The SR domain ingress router 3 receives P3 and | |||
steers it to SR | ||||
domain egress router 4 via an SR Policy <S7,S4>. Router 3 | ||||
encapsulates the received packet P3 in an outer header with an SRH. | encapsulates the received packet P3 in an outer header with an SRH. | |||
The packet is</t> | The packet is</t> | |||
<t pn="section-6.3.2-4">P4: (A3,S7)(S4,S7; SL=1)(A1,A2)</t> | ||||
<t>P4: (A3, S7)(S4, S7; SL=1)(A1, A2)</t> | <t pn="section-6.3.2-5">If the SR Policy contains only one segment (th | |||
e egress router 4), | ||||
<t>If the SR Policy contains only one segment (the egress router 4), | the ingress router 3 encapsulates P3 into an outer header (A3,S4) | |||
the ingress Router 3 encapsulates P3 into an outer header (A3, S4) | ||||
without SRH. The packet is</t> | without SRH. The packet is</t> | |||
<t pn="section-6.3.2-6">P5: (A3,S4)(A1,A2)</t> | ||||
<t>P5: (A3, S4)(A1, A2)</t> | <section numbered="true" toc="exclude" removeInRFC="false" pn="section | |||
-6.3.2.1"> | ||||
<section title="Reduced Variant"> | <name slugifiedName="name-reduced-variant-2">Reduced Variant</name> | |||
<t>The SR Domain ingress router 3 receives P3 and steers it to SR | <t pn="section-6.3.2.1-1">The SR domain ingress router 3 receives P3 | |||
Domain egress router 4 via an SR Policy <S7, S4>. If router | and steers it to SR | |||
3 wants to use a reduced SRH, Router 3 encapsulates the received | domain egress router 4 via an SR Policy <S7,S4>. If router | |||
3 wants to use a reduced SRH, it encapsulates the received | ||||
packet P3 in an outer header with a reduced SRH. The packet is</t> | packet P3 in an outer header with a reduced SRH. The packet is</t> | |||
<t pn="section-6.3.2.1-2">P6: (A3,S7)(S4; SL=1)(A1,A2)</t> | ||||
<t>P6: (A3, S7)(S4; SL=1)(A1, A2)</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-6 | ||||
<section title="Inter SR Domain Packet - Internal to External"> | .3.3"> | |||
<t>When host 8 sends a packet to host 1, the packet is encapsulated | <name slugifiedName="name-inter-sr-domain-packet-inte">Inter-SR-Domain | |||
for the portion of its journey within the SR Domain. From 8 to 3 the | Packet -- Internal to External</name> | |||
<t pn="section-6.3.3-1">When host 8 sends a packet to host 1, the pack | ||||
et is encapsulated | ||||
for the portion of its journey within the SR domain. From 8 to 3 the | ||||
packet is</t> | packet is</t> | |||
<t pn="section-6.3.3-2">P7: (A8,S3)(A8,A1)</t> | ||||
<t>P7: (A8,S3)(A8,A1)</t> | <t pn="section-6.3.3-3">In the opposite direction, the packet generate | |||
d from 1 to 8 | ||||
<t>In the opposite direction, the packet generated from 1 to 8 | ||||
is</t> | is</t> | |||
<t pn="section-6.3.3-4">P8: (A1,A8)</t> | ||||
<t>P8: (A1,A8)</t> | <t pn="section-6.3.3-5">At node 3, P8 is encapsulated for the portion | |||
of its journey | ||||
<t>At node 3 P8 is encapsulated for the portion of its journey | ||||
within the SR domain, with the outer header destined to segment S8. | within the SR domain, with the outer header destined to segment S8. | |||
Resulting in</t> | This results in</t> | |||
<t pn="section-6.3.3-6">P9: (A3,S8)(A1,A8)</t> | ||||
<t>P9: (A3,S8)(A1,A8)</t> | <t pn="section-6.3.3-7">At node 8, the outer IPv6 header is removed by | |||
S8 processing, then | ||||
<t>At node 8 the outer IPv6 header is removed by S8 processing, then | ||||
processed again when received by A8.</t> | processed again when received by A8.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-6.4 | ||||
<section title="Transit Node"> | "> | |||
<t>Nodes 5 acts as transit nodes for packet P1, and sends packet</t> | <name slugifiedName="name-transit-node-3">Transit Node</name> | |||
<t pn="section-6.4-1">Node 5 acts as transit node for packet P1 and send | ||||
<t>P1: (A8,S7)(A9,S7;SL=1)</t> | s packet</t> | |||
<t pn="section-6.4-2">P1: (A8,S7)(A9,S7;SL=1)</t> | ||||
<t>on the interface toward node 7.</t> | <t pn="section-6.4-3">on the interface toward node 7.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-6.5 | ||||
<section title="SR Segment Endpoint Node"> | "> | |||
<t>Node 7 receives packet P1 and, using the logic in <xref | <name slugifiedName="name-sr-segment-endpoint-node-3">SR Segment Endpoin | |||
target="pktENDSID"/>, sends packet</t> | t Node</name> | |||
<t pn="section-6.5-1">Node 7 receives packet P1 and, using the logic in | ||||
<t>P7: (A8,A9)(A9,S7; SL=0)</t> | <xref target="pktENDSID" format="default" sectionFormat="of" derivedContent="Sec | |||
tion 4.3.1"/>, sends packet</t> | ||||
<t>on the interface toward router 6.</t> | <t pn="section-6.5-2">P7: (A8,A9)(A9,S7; SL=0)</t> | |||
<t pn="section-6.5-3">on the interface toward router 6.</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-6.6 | ||||
<section title="Delegation of Function with HMAC Verification"> | "> | |||
<t>This section describes how a function may be delegated within the | <name slugifiedName="name-delegation-of-function-with">Delegation of Fun | |||
SR Domain. In the following sections consider a host 8 connected to a | ction with HMAC Verification</name> | |||
<t pn="section-6.6-1">This section describes how a function may be deleg | ||||
ated within the | ||||
SR domain. In the following sections, consider a host 8 connected to a | ||||
top of rack 5.</t> | top of rack 5.</t> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-6 | ||||
<section title="SID List Verification"> | .6.1"> | |||
<t>An operator may prefer to apply the SRH at source 8, while 5 | <name slugifiedName="name-sid-list-verification">SID List Verification | |||
verifies the SID list is valid.</t> | </name> | |||
<t pn="section-6.6.1-1">An operator may prefer to apply the SRH at sou | ||||
<t>For illustration purpose, an SDN controller provides 8 an SRH | rce 8, while 5 | |||
terminating at node 9, with segment list <S5,S7,S6,A9>, and | verifies that the SID list is valid.</t> | |||
<t pn="section-6.6.1-2">For illustration purposes, an SDN controller p | ||||
rovides 8 an SRH | ||||
terminating at node 9, with Segment List <S5,S7,S6,A9>, and | ||||
HMAC TLV computed for the SRH. The HMAC key ID and key associated | HMAC TLV computed for the SRH. The HMAC key ID and key associated | |||
with the HMAC TLV is shared with 5. Node 8 does not know the key. | with the HMAC TLV is shared with 5. Node 8 does not know the key. | |||
Node 5 is configured with an IACL applied to the interface connected | Node 5 is configured with an IACL applied to the interface connected | |||
to 8, requiring HMAC verification for any packet destined to | to 8, requiring HMAC verification for any packet destined to | |||
S/s.</t> | S/s.</t> | |||
<t pn="section-6.6.1-3">Node 8 originates packets with the received SR | ||||
<t>Node 8 originates packets with the received SRH including HMAC | H, including HMAC | |||
TLV.</t> | TLV.</t> | |||
<t pn="section-6.6.1-4">P15: (A8,S5)(A9,S6,S7,S5;SL=3;HMAC)</t> | ||||
<t>P15:(A8,S5)(A9,S6,S7,S5;SL=3;HMAC)</t> | <t pn="section-6.6.1-5">Node 5 receives and verifies the HMAC for the | |||
SRH, then forwards | ||||
<t>Node 5 receives and verifies the HMAC for the SRH, then forwards | ||||
the packet to the next segment</t> | the packet to the next segment</t> | |||
<t pn="section-6.6.1-6">P16: (A8,S7)(A9,S6,S7,S5;SL=2;HMAC)</t> | ||||
<t>P16:(A8,S7)(A9,S6,S7,S5;SL=2;HMAC)</t> | <t pn="section-6.6.1-7">Node 6 receives</t> | |||
<t pn="section-6.6.1-8">P17: (A8,S6)(A9,S6,S7,S5;SL=1;HMAC)</t> | ||||
<t>Node 6 receives</t> | <t pn="section-6.6.1-9">Node 9 receives</t> | |||
<t pn="section-6.6.1-10">P18: (A8,A9)(A9,S6,S7,S5;SL=0;HMAC)</t> | ||||
<t>P17:(A8,S6)(A9,S6,S7,S5;SL=1;HMAC)</t> | <t pn="section-6.6.1-11">This use of an HMAC is particularly valuable | |||
within an | ||||
<t>Node 9 receives</t> | enterprise-based SR domain <xref target="SRN" format="default" sectionF | |||
ormat="of" derivedContent="SRN"/>.</t> | ||||
<t>P18:(A8,A9)(A9,S6,S7,S5;SL=0;HMAC)</t> | ||||
<t>This use of an HMAC is particularly valuable within an enterprise | ||||
based SR Domain <xref target="SRN"/>.</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="Security" numbered="true" toc="include" removeInRFC="false" | ||||
<section anchor="Security" title="Security Considerations"> | pn="section-7"> | |||
<t>This section reviews security considerations related to the SRH, | <name slugifiedName="name-security-considerations">Security Considerations | |||
</name> | ||||
<t pn="section-7-1">This section reviews security considerations related t | ||||
o the SRH, | ||||
given the SRH processing and deployment models discussed in this | given the SRH processing and deployment models discussed in this | |||
document.</t> | document.</t> | |||
<t pn="section-7-2">As described in <xref target="DEP" format="default" se | ||||
<t>As described in <xref target="DEP"/>, it is necessary to filter | ctionFormat="of" derivedContent="Section 5"/>, it is necessary to filter | |||
packets ingress to the SR Domain, destined to SIDs within the SR Domain | packets' ingress to the SR domain, destined to SIDs within the SR domain | |||
(i.e., bearing a SID in the destination address). This ingress filtering | (i.e., bearing a SID in the destination address). This ingress filtering | |||
is via an IACL at SR Domain ingress border nodes. Additional protection | is via an IACL at SR domain ingress border nodes. Additional protection | |||
is applied via an IACL at each SR Segment Endpoint node, filtering | is applied via an IACL at each SR Segment Endpoint node, filtering | |||
packets not from within the SR Domain, destined to SIDs in the SR | packets not from within the SR domain, destined to SIDs in the SR domain. | |||
Domain. ACLs are easily supported for small numbers of prefixes, making | ACLs are easily supported for small numbers of seldom changing prefixes, making | |||
summarization important, and when the prefixes requiring filtering is | summarization important.</t> | |||
kept to a seldom changing set.</t> | <t pn="section-7-3">Additionally, ingress filtering of IPv6 source address | |||
es as | ||||
<t>Additionally, ingress filtering of IPv6 source addresses as | recommended in BCP 38 <xref target="RFC2827" format="default" sectionForma | |||
recommended in BCP38 <xref target="RFC2827"/> SHOULD be used.</t> | t="of" derivedContent="RFC2827"/> <bcp14>SHOULD</bcp14> be used.</t> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-7.1 | ||||
<section title="Source Routing Attacks"> | "> | |||
<t>An SR domain implements distributed and per node protection as | <name slugifiedName="name-sr-attacks">SR Attacks</name> | |||
described in section 5.1. Additionally, domains deny traffic with | <t pn="section-7.1-1">An SR domain implements distributed and per-node p | |||
spoofed addresses by implementing the recommendations in BCP 84 <xref | rotection as | |||
target="RFC3704"/>.</t> | described in <xref target="SECSRDOMAIN" format="default" sectionFormat=" | |||
of" derivedContent="Section 5.1"/>. Additionally, domains deny traffic with | ||||
<t>Full implementation of the recommended protection blocks the | spoofed addresses by implementing the recommendations in BCP 84 <xref ta | |||
attacks documented in <xref target="RFC5095"/> from outside the SR | rget="RFC3704" format="default" sectionFormat="of" derivedContent="RFC3704"/>.</ | |||
domain, including bypassing filtering devices, reaching otherwise | t> | |||
unreachable Internet systems, network topology discovery, bandwidth | <t pn="section-7.1-2">Full implementation of the recommended protection | |||
blocks the | ||||
attacks documented in <xref target="RFC5095" format="default" sectionFor | ||||
mat="of" derivedContent="RFC5095"/> from outside the SR | ||||
domain, including bypassing filtering devices, reaching | ||||
otherwise-unreachable Internet systems, network topology discovery, | ||||
bandwidth | ||||
exhaustion, and defeating anycast.</t> | exhaustion, and defeating anycast.</t> | |||
<t pn="section-7.1-3">Failure to implement distributed and per-node prot | ||||
<t>Failure to implement distributed and per node protection allows | ection allows | |||
attackers to bypass filtering devices and exposes the SR Domain to | attackers to bypass filtering devices and exposes the SR domain to | |||
these attacks.</t> | these attacks.</t> | |||
<t pn="section-7.1-4">Compromised nodes within the SR domain may mount t | ||||
<t>Compromised nodes within the SR Domain may mount the attacks listed | he attacks listed | |||
above along with other known attacks on IP networks (e.g. DOS/DDOS, | above along with other known attacks on IP networks (e.g., DoS/DDoS, | |||
topology discovery, man-in-the-middle, traffic | topology discovery, man-in-the-middle, traffic | |||
interception/siphoning).</t> | interception/siphoning).</t> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-7.2 | ||||
<section title="Service Theft"> | "> | |||
<t>Service theft is defined as the use of a service offered by the SR | <name slugifiedName="name-service-theft">Service Theft</name> | |||
Domain by a node not authorized to use the service.</t> | <t pn="section-7.2-1">Service theft is defined as the use of a service o | |||
ffered by the SR | ||||
<t>Service theft is not a concern within the SR Domain as all SR | domain by a node not authorized to use the service.</t> | |||
Source nodes and SR segment endpoint nodes within the domain are able | <t pn="section-7.2-2">Service theft is not a concern within the SR domai | |||
to utilize the services of the Domain. If a node outside the SR Domain | n, as all SR | |||
source nodes and SR segment endpoint nodes within the domain are able | ||||
to utilize the services of the domain. If a node outside the SR domain | ||||
learns of segments or a topological service within the SR domain, IACL | learns of segments or a topological service within the SR domain, IACL | |||
filtering denies access to those segments.</t> | filtering denies access to those segments.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-7.3 | ||||
<section title="Topology Disclosure"> | "> | |||
<t>The SRH is unencrypted and may contain SIDs of some intermediate | <name slugifiedName="name-topology-disclosure">Topology Disclosure</name | |||
SR-nodes in the path towards the destination within the SR Domain. If | > | |||
packets can be snooped within the SR Domain, the SRH may reveal | <t pn="section-7.3-1">The SRH is unencrypted and may contain SIDs of som | |||
e intermediate | ||||
SR nodes in the path towards the destination within the SR domain. If | ||||
packets can be snooped within the SR domain, the SRH may reveal | ||||
topology, traffic flows, and service usage.</t> | topology, traffic flows, and service usage.</t> | |||
<t pn="section-7.3-2">This is applicable within an SR domain, but the di | ||||
<t>This is applicable within an SR Domain, but the disclosure is less | sclosure is less | |||
relevant as an attacker has other means of learning topology, flows, | relevant as an attacker has other means of learning topology, flows, | |||
and service usage.</t> | and service usage.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-7.4 | ||||
<section title="ICMP Generation"> | "> | |||
<t>The generation of ICMPv6 error messages may be used to attempt | <name slugifiedName="name-icmp-generation">ICMP Generation</name> | |||
<t pn="section-7.4-1">The generation of ICMPv6 error messages may be use | ||||
d to attempt | ||||
denial-of-service attacks by sending an error-causing destination | denial-of-service attacks by sending an error-causing destination | |||
address or SRH in back-to-back packets. An implementation that | address or SRH in back-to-back packets. An implementation that | |||
correctly follows Section 2.4 of <xref target="RFC4443"/> would be | correctly follows <xref target="RFC4443" sectionFormat="of" section="2.4 " format="default" derivedLink="https://rfc-editor.org/rfc/rfc4443#section-2.4" derivedContent="RFC4443"/> would be | |||
protected by the ICMPv6 rate-limiting mechanism.</t> | protected by the ICMPv6 rate-limiting mechanism.</t> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-7.5 | ||||
<section title="Applicability of AH"> | "> | |||
<t>The SR Domain is a trusted domain, as defined in <xref | <name slugifiedName="name-applicability-of-ah">Applicability of AH</name | |||
target="RFC8402"/> Section 2 and Section 8.2. The SR Source is trusted | > | |||
<t pn="section-7.5-1">The SR domain is a trusted domain, as defined in < | ||||
xref target="RFC8402" format="default" sectionFormat="of" derivedContent="RFC840 | ||||
2"/>, Sections <xref target="RFC8402" section="2" sectionFormat="bare" format="d | ||||
efault" derivedLink="https://rfc-editor.org/rfc/rfc8402#section-2" derivedConten | ||||
t="RFC8402"/> and <xref target="RFC8402" section="8.2" sectionFormat="bare" form | ||||
at="default" derivedLink="https://rfc-editor.org/rfc/rfc8402#section-8.2" derive | ||||
dContent="RFC8402"/>. The SR source is trusted | ||||
to add an SRH (optionally verified as having been generated by a | to add an SRH (optionally verified as having been generated by a | |||
trusted source via the HMAC TLV in this document), and segments | trusted source via the HMAC TLV in this document), and segments | |||
advertised within the domain are trusted to be accurate and advertised | advertised within the domain are trusted to be accurate and advertised | |||
by trusted sources via a secure control plane. As such the SR Domain | by trusted sources via a secure control plane. As such, the SR domain | |||
does not rely on the Authentication Header (AH) as defined in <xref | does not rely on the Authentication Header (AH) as defined in <xref targ | |||
target="RFC4302"/> to secure the SRH.</t> | et="RFC4302" format="default" sectionFormat="of" derivedContent="RFC4302"/> to s | |||
ecure the SRH.</t> | ||||
<t>The use of SRH with AH by an SR source node, and processing at a SR | <t pn="section-7.5-2">The use of SRH with AH by an SR source node and it | |||
segment endpoint node is not defined in this document. Future | s processing at an SR | |||
segment endpoint node are not defined in this document. Future | ||||
documents may define use of SRH with AH and its processing.</t> | documents may define use of SRH with AH and its processing.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn= | ||||
<section anchor="IANA" title="IANA Considerations"> | "section-8"> | |||
<t>This document makes the following registrations in the Internet | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
Protocol Version 6 (IPv6) Parameters "Routing Type" registry maintained | <t pn="section-8-1">This document makes the following registrations in the | |||
by IANA:<figure align="center"> | "Internet | |||
<artwork align="left"> | Protocol Version 6 (IPv6) Parameters" "Routing Types" subregistry maintain | |||
Suggested Description Reference | ed | |||
Value | by IANA:</t> | |||
4 Segment Routing Header (SRH) This document</artwork> | <table anchor="SRH-REG" align="center" pn="table-1"> | |||
</figure></t> | <name slugifiedName="name-srh-registration">SRH Registration</name> | |||
<thead> | ||||
<t>This document makes the following registrations in "Type 4 - | <tr> | |||
<th align="left" colspan="1" rowspan="1">Value</th> | ||||
<th align="left" colspan="1" rowspan="1">Description</th> | ||||
<th align="left" colspan="1" rowspan="1">Reference</th> | ||||
</tr> | ||||
</thead> | ||||
<tbody> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">4</td> | ||||
<td align="left" colspan="1" rowspan="1">Segment Routing Header (SRH | ||||
)</td> | ||||
<td align="left" colspan="1" rowspan="1">This document</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t pn="section-8-3">This document makes the following registrations in the | ||||
"Type 4 - | ||||
Parameter Problem" message of the "Internet Control Message Protocol | Parameter Problem" message of the "Internet Control Message Protocol | |||
version 6 (ICMPv6) Parameters" registry maintained by IANA:<figure | version 6 (ICMPv6) Parameters" registry maintained by IANA:</t> | |||
align="center"> | <table anchor="UPPER-LAYER" align="center" pn="table-2"> | |||
<artwork align="left"> | <name slugifiedName="name-sr-upper-layer-header-error">SR Upper-layer He | |||
CODE NAME/DESCRIPTION | ader Error Registration</name> | |||
TBD IANA SR Upper-layer Header Error</artwork> | <thead> | |||
</figure></t> | <tr> | |||
<th align="left" colspan="1" rowspan="1">Code</th> | ||||
<t>This section provides guidance to the Internet Assigned Numbers | <th align="left" colspan="1" rowspan="1">Name</th> | |||
Authority (IANA) regarding registration of values related to the SRH, in | </tr> | |||
accordance with BCP 26, <xref target="RFC8126"/>.</t> | </thead> | |||
<tbody> | ||||
<t>The following terms are used here with the meanings defined in BCP | <tr> | |||
26: "namespace", "assigned value", "registration".</t> | <td align="left" colspan="1" rowspan="1">4</td> | |||
<td align="left" colspan="1" rowspan="1">SR Upper-layer Header Error | ||||
<t>The following policies are used here with the meanings defined in BCP | </td> | |||
26 <xref target="RFC8126"/>: "IETF Review".</t> | </tr> | |||
</tbody> | ||||
<section anchor="SRHFLAGSREG" | </table> | |||
title="Segment Routing Header Flags Registry"> | <section anchor="SRHFLAGSREG" numbered="true" toc="include" removeInRFC="f | |||
<t>This document requests the creation of a new IANA managed registry | alse" pn="section-8.1"> | |||
<name slugifiedName="name-segment-routing-header-flag">Segment Routing H | ||||
eader Flags Registry</name> | ||||
<t pn="section-8.1-1">This document describes a new IANA-managed registr | ||||
y | ||||
to identify SRH Flags Bits. The registration procedure is "IETF | to identify SRH Flags Bits. The registration procedure is "IETF | |||
Review". Suggested registry name is "Segment Routing Header Flags". | Review" <xref target="RFC8126" format="default" sectionFormat="of" deriv | |||
Flags is 8 bits.</t> | edContent="RFC8126"/>. The registry name is "Segment Routing Header Flags". | |||
Flags are 8 bits.</t> | ||||
</section> | </section> | |||
<section anchor="SRHTLVREG" numbered="true" toc="include" removeInRFC="fal | ||||
<section anchor="SRHTLVREG" title="Segment Routing Header TLVs Registry"> | se" pn="section-8.2"> | |||
<t>This document requests the creation of a new IANA managed registry | <name slugifiedName="name-segment-routing-header-tlvs">Segment Routing H | |||
eader TLVs Registry</name> | ||||
<t pn="section-8.2-1">This document describes a new IANA-managed registr | ||||
y | ||||
to identify SRH TLVs. The registration procedure is "IETF Review". | to identify SRH TLVs. The registration procedure is "IETF Review". | |||
Suggested registry name is "Segment Routing Header TLVs". A TLV is | The registry name is "Segment Routing Header TLVs". A TLV is | |||
identified through an unsigned 8 bit codepoint value, with assigned | identified through an unsigned 8-bit codepoint value, with assigned | |||
values 0-127 for TLVs that do not change en route, and 128-255 for | values 0-127 for TLVs that do not change en route and 128-255 for | |||
TLVs that may change en route. The following codepoints are defined in | TLVs that may change en route. The following codepoints are defined in | |||
this document: <figure align="center"> | this document: </t> | |||
<artwork align="left"> | <table anchor="TLV-REG" align="center" pn="table-3"> | |||
Assigned Description Reference | <name slugifiedName="name-segment-routing-header-tlvs-">Segment Routin | |||
Value | g Header TLVs Registry</name> | |||
0 Pad1 TLV This document | <thead> | |||
1 Reserved This document | <tr> | |||
2 Reserved This document | <th align="left" colspan="1" rowspan="1">Value</th> | |||
3 Reserved This document | <th align="left" colspan="1" rowspan="1">Description</th> | |||
4 PadN TLV This document | <th align="left" colspan="1" rowspan="1">Reference</th> | |||
5 HMAC TLV This document | </tr> | |||
6 Reserved This document | </thead> | |||
124-126 Experimentation and Test This document | <tbody> | |||
127 Reserved This document | <tr> | |||
252-254 Experimentation and Test This document | <td align="left" colspan="1" rowspan="1">0</td> | |||
255 Reserved This document</artwork> | <td align="left" colspan="1" rowspan="1">Pad1 TLV</td> | |||
</figure></t> | <td align="left" colspan="1" rowspan="1">This document</td> | |||
</tr> | ||||
<t>Values 1,2,3,6 were defined in draft versions of this specification | <tr> | |||
<td align="left" colspan="1" rowspan="1">1</td> | ||||
<td align="left" colspan="1" rowspan="1">Reserved</td> | ||||
<td align="left" colspan="1" rowspan="1">This document</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">2</td> | ||||
<td align="left" colspan="1" rowspan="1">Reserved</td> | ||||
<td align="left" colspan="1" rowspan="1">This document</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">3</td> | ||||
<td align="left" colspan="1" rowspan="1">Reserved</td> | ||||
<td align="left" colspan="1" rowspan="1">This document</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">4</td> | ||||
<td align="left" colspan="1" rowspan="1">PadN TLV</td> | ||||
<td align="left" colspan="1" rowspan="1">This document</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">5</td> | ||||
<td align="left" colspan="1" rowspan="1">HMAC TLV</td> | ||||
<td align="left" colspan="1" rowspan="1">This document</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">6</td> | ||||
<td align="left" colspan="1" rowspan="1">Reserved</td> | ||||
<td align="left" colspan="1" rowspan="1">This document</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">124-126</td> | ||||
<td align="left" colspan="1" rowspan="1">Experimentation and Test< | ||||
/td> | ||||
<td align="left" colspan="1" rowspan="1">This document</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">127</td> | ||||
<td align="left" colspan="1" rowspan="1">Reserved</td> | ||||
<td align="left" colspan="1" rowspan="1">This document</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">252-254</td> | ||||
<td align="left" colspan="1" rowspan="1">Experimentation and Test< | ||||
/td> | ||||
<td align="left" colspan="1" rowspan="1">This document</td> | ||||
</tr> | ||||
<tr> | ||||
<td align="left" colspan="1" rowspan="1">255</td> | ||||
<td align="left" colspan="1" rowspan="1">Reserved</td> | ||||
<td align="left" colspan="1" rowspan="1">This document</td> | ||||
</tr> | ||||
</tbody> | ||||
</table> | ||||
<t pn="section-8.2-3">Values 1, 2, 3, and 6 were defined in draft versio | ||||
ns of this specification | ||||
and are Reserved for backwards compatibility with early | and are Reserved for backwards compatibility with early | |||
implementations and should not be reassigned. Values 127 and 255 are | implementations and should not be reassigned. Values 127 and 255 are | |||
Reserved to allow for expansion of the Type field in future | Reserved to allow for expansion of the Type field in future | |||
specifications if needed.</t> | specifications, if needed.</t> | |||
</section> | ||||
</section> | ||||
<section anchor="Implementation" title="Implementation Status"> | ||||
<t>This section is to be removed prior to publishing as an RFC.</t> | ||||
<t>See <xref target="I-D.matsushima-spring-srv6-deployment-status"/> for | ||||
updated deployment and interoperability reports.</t> | ||||
<section anchor="IMPLINUX" title="Linux"> | ||||
<t>Name: Linux Kernel v4.14</t> | ||||
<t>Status: Production</t> | ||||
<t>Implementation: adds SRH, performs END processing, supports HMAC | ||||
TLV</t> | ||||
<t>Details: https://irtf.org/anrw/2017/anrw17-final3.pdf and <xref | ||||
target="I-D.filsfils-spring-srv6-interop"/></t> | ||||
</section> | ||||
<section anchor="IMPCISCO" title="Cisco Systems"> | ||||
<t>Name: IOS XR and IOS XE</t> | ||||
<t>Status: Production (IOS XR), Pre-production (IOS XE)</t> | ||||
<t>Implementation: adds SRH, performs END processing, no TLV | ||||
processing</t> | ||||
<t>Details: <xref target="I-D.filsfils-spring-srv6-interop"/></t> | ||||
</section> | ||||
<section anchor="IMPFDIO" title="FD.io"> | ||||
<t>Name: VPP/Segment Routing for IPv6</t> | ||||
<t>Status: Production</t> | ||||
<t>Implementation: adds SRH, performs END processing, no TLV | ||||
processing</t> | ||||
<t>Details: https://wiki.fd.io/view/VPP/Segment_Routing_for_IPv6 and | ||||
<xref target="I-D.filsfils-spring-srv6-interop"/></t> | ||||
</section> | ||||
<section anchor="IMPBAREFOOT" title="Barefoot"> | ||||
<t>Name: Barefoot Networks Tofino NPU</t> | ||||
<t>Status: Prototype</t> | ||||
<t>Implementation: performs END processing, no TLV processing</t> | ||||
<t>Details: <xref target="I-D.filsfils-spring-srv6-interop"/></t> | ||||
</section> | ||||
<section title="Juniper"> | ||||
<t>Name: Juniper Networks Trio and vTrio NPU's</t> | ||||
<t>Status: Prototype & Experimental</t> | ||||
<t>Implementation: SRH insertion mode, Process SID where SID is an | ||||
interface address, no TLV processing</t> | ||||
</section> | ||||
<section title="Huawei"> | ||||
<t>Name: Huawei Systems VRP Platform</t> | ||||
<t>Status: Production</t> | ||||
<t>Implementation: adds SRH, performs END processing, no TLV | ||||
processing</t> | ||||
</section> | </section> | |||
</section> | </section> | |||
</middle> | ||||
<section anchor="Contributors" title="Contributors"> | <back> | |||
<t>Kamran Raza, Zafar Ali, Brian Field, Daniel Bernier, Ida Leung, Jen | <displayreference target="I-D.ietf-intarea-tunnels" to="INTAREA-TUNNELS"/> | |||
Linkova, Ebben Aries, Tomoya Kosugi, Eric Vyncke, David Lebrun, Dirk | <references pn="section-9"> | |||
Steinberg, Robert Raszuk, Dave Barach, John Brzozowski, Pierre Francois, | <name slugifiedName="name-references">References</name> | |||
Nagendra Kumar, Mark Townsley, Christian Martin, Roberta Maglione, James | <references pn="section-9.1"> | |||
Connolly, Aloys Augustin contributed to the content of this | <name slugifiedName="name-normative-references">Normative References</na | |||
me> | ||||
<reference anchor="FIPS180-4" target="http://csrc.nist.gov/publications/ | ||||
fips/fips180-4/fips-180-4.pdf" quoteTitle="true" derivedAnchor="FIPS180-4"> | ||||
<front> | ||||
<title>Secure Hash Standard (SHS)</title> | ||||
<author> | ||||
<organization showOnFrontPage="true">National Institute of Standar | ||||
ds and Technology (NIST)</organization> | ||||
</author> | ||||
<date month="August" year="2015"/> | ||||
</front> | ||||
<refcontent>FIPS PUB 180-4</refcontent> | ||||
<refcontent>DOI 10.6028/NIST.FIPS.180-4</refcontent> | ||||
</reference> | ||||
<reference anchor="IANA-SRHTLV" target="https://www.iana.org/assignments | ||||
/ipv6-parameters/" quoteTitle="true" derivedAnchor="IANA-SRHTLV"> | ||||
<front> | ||||
<title>Segment Routing Header TLVs</title> | ||||
<author> | ||||
<organization showOnFrontPage="true">IANA</organization> | ||||
</author> | ||||
</front> | ||||
</reference> | ||||
<reference anchor="RFC2104" target="https://www.rfc-editor.org/info/rfc2 | ||||
104" quoteTitle="true" derivedAnchor="RFC2104"> | ||||
<front> | ||||
<title>HMAC: Keyed-Hashing for Message Authentication</title> | ||||
<author initials="H." surname="Krawczyk" fullname="H. Krawczyk"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Bellare" fullname="M. Bellare"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Canetti" fullname="R. Canetti"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="1997" month="February"/> | ||||
<abstract> | ||||
<t>This document describes HMAC, a mechanism for message authentic | ||||
ation using cryptographic hash functions. HMAC can be used with any iterative cr | ||||
yptographic hash function, e.g., MD5, SHA-1, in combination with a secret shared | ||||
key. The cryptographic strength of HMAC depends on the properties of the under | ||||
lying hash function. This memo provides information for the Internet community. | ||||
This memo does not specify an Internet standard of any kind</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="2104"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2104"/> | ||||
</reference> | ||||
<reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | ||||
119" quoteTitle="true" derivedAnchor="RFC2119"> | ||||
<front> | ||||
<title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
le> | ||||
<author initials="S." surname="Bradner" fullname="S. Bradner"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="1997" month="March"/> | ||||
<abstract> | ||||
<t>In many standards track documents several words are used to sig | ||||
nify the requirements in the specification. These words are often capitalized. | ||||
This document defines these words as they should be interpreted in IETF document | ||||
s. This document specifies an Internet Best Current Practices for the Internet | ||||
Community, and requests discussion and suggestions for improvements.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="2119"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
</reference> | ||||
<reference anchor="RFC2473" target="https://www.rfc-editor.org/info/rfc2 | ||||
473" quoteTitle="true" derivedAnchor="RFC2473"> | ||||
<front> | ||||
<title>Generic Packet Tunneling in IPv6 Specification</title> | ||||
<author initials="A." surname="Conta" fullname="A. Conta"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Deering" fullname="S. Deering"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="1998" month="December"/> | ||||
<abstract> | ||||
<t>This document defines the model and generic mechanisms for IPv6 | ||||
encapsulation of Internet packets, such as IPv6 and IPv4. [STANDARDS-TRACK]</t | ||||
> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="2473"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2473"/> | ||||
</reference> | ||||
<reference anchor="RFC2827" target="https://www.rfc-editor.org/info/rfc2 | ||||
827" quoteTitle="true" derivedAnchor="RFC2827"> | ||||
<front> | ||||
<title>Network Ingress Filtering: Defeating Denial of Service Attack | ||||
s which employ IP Source Address Spoofing</title> | ||||
<author initials="P." surname="Ferguson" fullname="P. Ferguson"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="D." surname="Senie" fullname="D. Senie"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2000" month="May"/> | ||||
<abstract> | ||||
<t>This paper discusses a simple, effective, and straightforward m | ||||
ethod for using ingress traffic filtering to prohibit DoS (Denial of Service) at | ||||
tacks which use forged IP addresses to be propagated from 'behind' an Internet S | ||||
ervice Provider's (ISP) aggregation point. This document specifies an Internet | ||||
Best Current Practices for the Internet Community, and requests discussion and s | ||||
uggestions for improvements.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="38"/> | ||||
<seriesInfo name="RFC" value="2827"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC2827"/> | ||||
</reference> | ||||
<reference anchor="RFC3704" target="https://www.rfc-editor.org/info/rfc3 | ||||
704" quoteTitle="true" derivedAnchor="RFC3704"> | ||||
<front> | ||||
<title>Ingress Filtering for Multihomed Networks</title> | ||||
<author initials="F." surname="Baker" fullname="F. Baker"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="P." surname="Savola" fullname="P. Savola"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2004" month="March"/> | ||||
<abstract> | ||||
<t>BCP 38, RFC 2827, is designed to limit the impact of distribute | ||||
d denial of service attacks, by denying traffic with spoofed addresses access to | ||||
the network, and to help ensure that traffic is traceable to its correct source | ||||
network. As a side effect of protecting the Internet against such attacks, the | ||||
network implementing the solution also protects itself from this and other atta | ||||
cks, such as spoofed management access to networking equipment. There are cases | ||||
when this may create problems, e.g., with multihoming. This document describes | ||||
the current ingress filtering operational mechanisms, examines generic issues r | ||||
elated to ingress filtering, and delves into the effects on multihoming in parti | ||||
cular. This memo updates RFC 2827. This document specifies an Internet Best Cu | ||||
rrent Practices for the Internet Community, and requests discussion and suggesti | ||||
ons for improvements.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="84"/> | ||||
<seriesInfo name="RFC" value="3704"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3704"/> | ||||
</reference> | ||||
<reference anchor="RFC4107" target="https://www.rfc-editor.org/info/rfc4 | ||||
107" quoteTitle="true" derivedAnchor="RFC4107"> | ||||
<front> | ||||
<title>Guidelines for Cryptographic Key Management</title> | ||||
<author initials="S." surname="Bellovin" fullname="S. Bellovin"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Housley" fullname="R. Housley"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2005" month="June"/> | ||||
<abstract> | ||||
<t>The question often arises of whether a given security system re | ||||
quires some form of automated key management, or whether manual keying is suffic | ||||
ient. This memo provides guidelines for making such decisions. When symmetric c | ||||
ryptographic mechanisms are used in a protocol, the presumption is that automate | ||||
d key management is generally but not always needed. If manual keying is propos | ||||
ed, the burden of proving that automated key management is not required falls to | ||||
the proposer. This document specifies an Internet Best Current Practices for t | ||||
he Internet Community, and requests discussion and suggestions for improvements. | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="107"/> | ||||
<seriesInfo name="RFC" value="4107"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4107"/> | ||||
</reference> | ||||
<reference anchor="RFC4302" target="https://www.rfc-editor.org/info/rfc4 | ||||
302" quoteTitle="true" derivedAnchor="RFC4302"> | ||||
<front> | ||||
<title>IP Authentication Header</title> | ||||
<author initials="S." surname="Kent" fullname="S. Kent"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2005" month="December"/> | ||||
<abstract> | ||||
<t>This document describes an updated version of the IP Authentica | ||||
tion Header (AH), which is designed to provide authentication services in IPv4 a | ||||
nd IPv6. This document obsoletes RFC 2402 (November 1998). [STANDARDS-TRACK]</ | ||||
t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4302"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4302"/> | ||||
</reference> | ||||
<reference anchor="RFC5095" target="https://www.rfc-editor.org/info/rfc5 | ||||
095" quoteTitle="true" derivedAnchor="RFC5095"> | ||||
<front> | ||||
<title>Deprecation of Type 0 Routing Headers in IPv6</title> | ||||
<author initials="J." surname="Abley" fullname="J. Abley"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="P." surname="Savola" fullname="P. Savola"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="G." surname="Neville-Neil" fullname="G. Neville-Ne | ||||
il"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2007" month="December"/> | ||||
<abstract> | ||||
<t>The functionality provided by IPv6's Type 0 Routing Header can | ||||
be exploited in order to achieve traffic amplification over a remote path for th | ||||
e purposes of generating denial-of-service traffic. This document updates the I | ||||
Pv6 specification to deprecate the use of IPv6 Type 0 Routing Headers, in light | ||||
of this security concern. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5095"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5095"/> | ||||
</reference> | ||||
<reference anchor="RFC6407" target="https://www.rfc-editor.org/info/rfc6 | ||||
407" quoteTitle="true" derivedAnchor="RFC6407"> | ||||
<front> | ||||
<title>The Group Domain of Interpretation</title> | ||||
<author initials="B." surname="Weis" fullname="B. Weis"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Rowles" fullname="S. Rowles"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="T." surname="Hardjono" fullname="T. Hardjono"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2011" month="October"/> | ||||
<abstract> | ||||
<t>This document describes the Group Domain of Interpretation (GDO | ||||
I) protocol specified in RFC 3547. The GDOI provides group key management to su | ||||
pport secure group communications according to the architecture specified in RFC | ||||
4046. The GDOI manages group security associations, which are used by IPsec an | ||||
d potentially other data security protocols. This document replaces RFC 3547. | ||||
[STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6407"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6407"/> | ||||
</reference> | ||||
<reference anchor="RFC6437" target="https://www.rfc-editor.org/info/rfc6 | ||||
437" quoteTitle="true" derivedAnchor="RFC6437"> | ||||
<front> | ||||
<title>IPv6 Flow Label Specification</title> | ||||
<author initials="S." surname="Amante" fullname="S. Amante"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="B." surname="Carpenter" fullname="B. Carpenter"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Jiang" fullname="S. Jiang"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Rajahalme" fullname="J. Rajahalme"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2011" month="November"/> | ||||
<abstract> | ||||
<t>This document specifies the IPv6 Flow Label field and the minim | ||||
um requirements for IPv6 nodes labeling flows, IPv6 nodes forwarding labeled pac | ||||
kets, and flow state establishment methods. Even when mentioned as examples of | ||||
possible uses of the flow labeling, more detailed requirements for specific use | ||||
cases are out of the scope for this document.</t> | ||||
<t>The usage of the Flow Label field enables efficient IPv6 flow c | ||||
lassification based only on IPv6 main header fields in fixed positions. [STANDA | ||||
RDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6437"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6437"/> | ||||
</reference> | ||||
<reference anchor="RFC6438" target="https://www.rfc-editor.org/info/rfc6 | ||||
438" quoteTitle="true" derivedAnchor="RFC6438"> | ||||
<front> | ||||
<title>Using the IPv6 Flow Label for Equal Cost Multipath Routing an | ||||
d Link Aggregation in Tunnels</title> | ||||
<author initials="B." surname="Carpenter" fullname="B. Carpenter"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Amante" fullname="S. Amante"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2011" month="November"/> | ||||
<abstract> | ||||
<t>The IPv6 flow label has certain restrictions on its use. This | ||||
document describes how those restrictions apply when using the flow label for lo | ||||
ad balancing by equal cost multipath routing and for link aggregation, particula | ||||
rly for IP-in-IPv6 tunneled traffic. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="6438"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC6438"/> | ||||
</reference> | ||||
<reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
<front> | ||||
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
tle> | ||||
<author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="May"/> | ||||
<abstract> | ||||
<t>RFC 2119 specifies common key words that may be used in protoco | ||||
l specifications. This document aims to reduce the ambiguity by clarifying tha | ||||
t only UPPERCASE usage of the key words have the defined special meanings.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="14"/> | ||||
<seriesInfo name="RFC" value="8174"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
</reference> | ||||
<reference anchor="RFC8200" target="https://www.rfc-editor.org/info/rfc8 | ||||
200" quoteTitle="true" derivedAnchor="RFC8200"> | ||||
<front> | ||||
<title>Internet Protocol, Version 6 (IPv6) Specification</title> | ||||
<author initials="S." surname="Deering" fullname="S. Deering"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Hinden" fullname="R. Hinden"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="July"/> | ||||
<abstract> | ||||
<t>This document specifies version 6 of the Internet Protocol (IPv | ||||
6). It obsoletes RFC 2460.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="86"/> | ||||
<seriesInfo name="RFC" value="8200"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8200"/> | ||||
</reference> | ||||
<reference anchor="RFC8402" target="https://www.rfc-editor.org/info/rfc8 | ||||
402" quoteTitle="true" derivedAnchor="RFC8402"> | ||||
<front> | ||||
<title>Segment Routing Architecture</title> | ||||
<author initials="C." surname="Filsfils" fullname="C. Filsfils" role | ||||
="editor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Previdi" fullname="S. Previdi" role=" | ||||
editor"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="L." surname="Ginsberg" fullname="L. Ginsberg"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="B." surname="Decraene" fullname="B. Decraene"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Litkowski" fullname="S. Litkowski"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="R." surname="Shakir" fullname="R. Shakir"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2018" month="July"/> | ||||
<abstract> | ||||
<t>Segment Routing (SR) leverages the source routing paradigm. A | ||||
node steers a packet through an ordered list of instructions, called "segments". | ||||
A segment can represent any instruction, topological or service based. A segm | ||||
ent can have a semantic local to an SR node or global within an SR domain. SR p | ||||
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 | ||||
omain.</t> | ||||
<t>SR can be directly applied to the MPLS architecture with no cha | ||||
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 | ||||
the top of the stack. Upon completion of a segment, the related label is poppe | ||||
d from the stack.</t> | ||||
<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 | ||||
gments is encoded as an ordered list of IPv6 addresses in the routing header. T | ||||
he active segment is indicated by the Destination Address (DA) of the packet. T | ||||
he next active segment is indicated by a pointer in the new routing header.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8402"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8402"/> | ||||
</reference> | ||||
</references> | ||||
<references pn="section-9.2"> | ||||
<name slugifiedName="name-informative-references">Informative References | ||||
</name> | ||||
<reference anchor="I-D.ietf-intarea-tunnels" quoteTitle="true" target="h | ||||
ttps://tools.ietf.org/html/draft-ietf-intarea-tunnels-10" derivedAnchor="INTAREA | ||||
-TUNNELS"> | ||||
<front> | ||||
<title>IP Tunnels in the Internet Architecture</title> | ||||
<author initials="J" surname="Touch" fullname="Joseph Touch"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M" surname="Townsley" fullname="Mark Townsley"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="September" day="12" year="2019"/> | ||||
<abstract> | ||||
<t>This document discusses the role of IP tunnels in the Internet | ||||
architecture. An IP tunnel transits IP datagrams as payloads in non- link layer | ||||
protocols. This document explains the relationship of IP tunnels to existing pro | ||||
tocol layers and the challenges in supporting IP tunneling, based on the equival | ||||
ence of tunnels to links. The implications of this document are used to derive r | ||||
ecommendations that update MTU and fragment issues in RFC 4459.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-intarea-tunnels-10 | ||||
"/> | ||||
<format type="TXT" target="http://www.ietf.org/internet-drafts/draft-i | ||||
etf-intarea-tunnels-10.txt"/> | ||||
<refcontent>Work in Progress</refcontent> | ||||
</reference> | ||||
<reference anchor="RFC4443" target="https://www.rfc-editor.org/info/rfc4 | ||||
443" quoteTitle="true" derivedAnchor="RFC4443"> | ||||
<front> | ||||
<title>Internet Control Message Protocol (ICMPv6) for the Internet P | ||||
rotocol Version 6 (IPv6) Specification</title> | ||||
<author initials="A." surname="Conta" fullname="A. Conta"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Deering" fullname="S. Deering"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Gupta" fullname="M. Gupta" role="edit | ||||
or"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2006" month="March"/> | ||||
<abstract> | ||||
<t>This document describes the format of a set of control messages | ||||
used in ICMPv6 (Internet Control Message Protocol). ICMPv6 is the Internet Con | ||||
trol Message Protocol for Internet Protocol version 6 (IPv6). [STANDARDS-TRACK] | ||||
</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="STD" value="89"/> | ||||
<seriesInfo name="RFC" value="4443"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4443"/> | ||||
</reference> | ||||
<reference anchor="RFC5308" target="https://www.rfc-editor.org/info/rfc5 | ||||
308" quoteTitle="true" derivedAnchor="RFC5308"> | ||||
<front> | ||||
<title>Routing IPv6 with IS-IS</title> | ||||
<author initials="C." surname="Hopps" fullname="C. Hopps"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2008" month="October"/> | ||||
<abstract> | ||||
<t>This document specifies a method for exchanging IPv6 routing in | ||||
formation using the IS-IS routing protocol. The described method utilizes two n | ||||
ew TLVs: a reachability TLV and an interface address TLV to distribute the neces | ||||
sary IPv6 information throughout a routing domain. Using this method, one can r | ||||
oute IPv6 along with IPv4 and OSI using a single intra-domain routing protocol. | ||||
[STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5308"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5308"/> | ||||
</reference> | ||||
<reference anchor="RFC5340" target="https://www.rfc-editor.org/info/rfc5 | ||||
340" quoteTitle="true" derivedAnchor="RFC5340"> | ||||
<front> | ||||
<title>OSPF for IPv6</title> | ||||
<author initials="R." surname="Coltun" fullname="R. Coltun"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="D." surname="Ferguson" fullname="D. Ferguson"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Moy" fullname="J. Moy"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="A." surname="Lindem" fullname="A. Lindem"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2008" month="July"/> | ||||
<abstract> | ||||
<t>This document describes the modifications to OSPF to support ve | ||||
rsion 6 of the Internet Protocol (IPv6). The fundamental mechanisms of OSPF (fl | ||||
ooding, Designated Router (DR) election, area support, Short Path First (SPF) ca | ||||
lculations, etc.) remain unchanged. However, some changes have been necessary, | ||||
either due to changes in protocol semantics between IPv4 and IPv6, or simply to | ||||
handle the increased address size of IPv6. These modifications will necessitate | ||||
incrementing the protocol version from version 2 to version 3. OSPF for IPv6 i | ||||
s also referred to as OSPF version 3 (OSPFv3).</t> | ||||
<t>Changes between OSPF for IPv4, OSPF Version 2, and OSPF for IPv | ||||
6 as described herein include the following. Addressing semantics have been rem | ||||
oved from OSPF packets and the basic Link State Advertisements (LSAs). New LSAs | ||||
have been created to carry IPv6 addresses and prefixes. OSPF now runs on a per | ||||
-link basis rather than on a per-IP-subnet basis. Flooding scope for LSAs has b | ||||
een generalized. Authentication has been removed from the OSPF protocol and ins | ||||
tead relies on IPv6's Authentication Header and Encapsulating Security Payload ( | ||||
ESP).</t> | ||||
<t>Even with larger IPv6 addresses, most packets in OSPF for IPv6 | ||||
are almost as compact as those in OSPF for IPv4. Most fields and packet- size l | ||||
imitations present in OSPF for IPv4 have been relaxed. In addition, option hand | ||||
ling has been made more flexible.</t> | ||||
<t>All of OSPF for IPv4's optional capabilities, including demand | ||||
circuit support and Not-So-Stubby Areas (NSSAs), are also supported in OSPF for | ||||
IPv6. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5340"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5340"/> | ||||
</reference> | ||||
<reference anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8 | ||||
126" quoteTitle="true" derivedAnchor="RFC8126"> | ||||
<front> | ||||
<title>Guidelines for Writing an IANA Considerations Section in RFCs | ||||
</title> | ||||
<author initials="M." surname="Cotton" fullname="M. Cotton"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="T." surname="Narten" fullname="T. Narten"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="June"/> | ||||
<abstract> | ||||
<t>Many protocols make use of points of extensibility that use con | ||||
stants to identify various protocol parameters. To ensure that the values in th | ||||
ese fields do not have conflicting uses and to promote interoperability, their a | ||||
llocations are often coordinated by a central record keeper. For IETF protocols | ||||
, that role is filled by the Internet Assigned Numbers Authority (IANA).</t> | ||||
<t>To make assignments in a given registry prudently, guidance des | ||||
cribing the conditions under which new values should be assigned, as well as whe | ||||
n and how modifications to existing values can be made, is needed. This documen | ||||
t defines a framework for the documentation of these guidelines by specification | ||||
authors, in order to assure that the provided guidance for the IANA Considerati | ||||
ons is clear and addresses the various issues that are likely in the operation o | ||||
f a registry.</t> | ||||
<t>This is the third edition of this document; it obsoletes RFC 52 | ||||
26.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="BCP" value="26"/> | ||||
<seriesInfo name="RFC" value="8126"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8126"/> | ||||
</reference> | ||||
<reference anchor="SRN" target="https://inl.info.ucl.ac.be/system/files/ | ||||
sosr18-final15-embedfonts.pdf" quoteTitle="true" derivedAnchor="SRN"> | ||||
<front> | ||||
<title>Software Resolved Networks: Rethinking Enterprise Networks wi | ||||
th IPv6 Segment Routing</title> | ||||
<author fullname="David Lebrun"/> | ||||
<author fullname="Mathieu Jadin"/> | ||||
<author fullname="Francois Clad"/> | ||||
<author fullname="Clarence Filsfils"/> | ||||
<author fullname="Olivier Bonaventure"/> | ||||
<date year="2018"/> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
</references> | ||||
<section anchor="Acknowledgements" numbered="false" toc="include" removeInRF | ||||
C="false" pn="section-appendix.a"> | ||||
<name slugifiedName="name-acknowledgements">Acknowledgements</name> | ||||
<t pn="section-appendix.a-1">The authors would like to thank <contact full | ||||
name="Ole Troan"/>, <contact fullname="Bob Hinden"/>, <contact fullname="Ron Bon | ||||
ica"/>, | ||||
<contact fullname="Fred Baker"/>, <contact fullname="Brian Carpenter"/>, < | ||||
contact fullname="Alexandru Petrescu"/>, <contact fullname="Punit Kumar Jaiswal" | ||||
/>, | ||||
<contact fullname="David Lebrun"/>, <contact fullname="Benjamin Kaduk"/>, | ||||
<contact fullname="Frank Xialiang"/>, <contact fullname="Mirja Kühlewind"/>, <co | ||||
ntact fullname="Roman Danyliw"/>, <contact fullname="Joe Touch"/>, and <co | ||||
ntact fullname="Magnus Westerlund"/> for their comments to this | ||||
document.</t> | document.</t> | |||
</section> | </section> | |||
<section anchor="Contributors" numbered="false" toc="include" removeInRFC="f | ||||
<section anchor="Acknowledgements" title="Acknowledgements"> | alse" pn="section-appendix.b"> | |||
<t>The authors would like to thank Ole Troan, Bob Hinden, Ron Bonica, | <name slugifiedName="name-contributors">Contributors</name> | |||
Fred Baker, Brian Carpenter, Alexandru Petrescu, Punit Kumar Jaiswal, | <t pn="section-appendix.b-1"><contact fullname="Kamran Raza"/>, <contact f | |||
David Lebrun, Benjamin Kaduk, Frank Xialiang, Mirja Kuhlewind, Roman | ullname="Zafar Ali"/>, <contact fullname="Brian Field"/>, <contact fullname="Dan | |||
Danyliw, Joe Touch, and Magnus Westerlund for their comments to this | iel Bernier"/>, <contact fullname="Ida Leung"/>, <contact fullname="Jen Li | |||
nkova"/>, <contact fullname="Ebben Aries"/>, <contact fullname="Tomoya Kosugi"/> | ||||
, <contact fullname="Éric Vyncke"/>, <contact fullname="David Lebrun"/>, <contac | ||||
t fullname="Dirk Steinberg"/>, <contact fullname="Robert Raszuk"/>, <conta | ||||
ct fullname="Dave Barach"/>, <contact fullname="John Brzozowski"/>, <contact ful | ||||
lname="Pierre Francois"/>, | ||||
<contact fullname="Nagendra Kumar"/>, <contact fullname="Mark Townsley"/>, | ||||
<contact fullname="Christian Martin"/>, <contact fullname="Roberta Maglione"/>, | ||||
<contact fullname="James Connolly"/>, and <contact fullname="Aloys August | ||||
in"/> contributed to the content of this | ||||
document.</t> | document.</t> | |||
</section> | </section> | |||
</middle> | <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | |||
="include" pn="section-appendix.c"> | ||||
<back> | <name slugifiedName="name-authors-addresses">Authors' Addresses</name> | |||
<references title="Normative References"> | <author fullname="Clarence Filsfils" initials="C." role="editor" surname=" | |||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.211 | Filsfils"> | |||
9.xml"?> | <organization showOnFrontPage="true">Cisco Systems, Inc.</organization> | |||
<address> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.817 | <postal> | |||
4.xml"?> | <street/> | |||
<city>Brussels</city> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.820 | <region/> | |||
0.xml"?> | <code/> | |||
<country>BE</country> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.509 | </postal> | |||
5.xml"?> | <email>cfilsfil@cisco.com</email> | |||
</address> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.640 | </author> | |||
7.xml"?> | <author fullname="Darren Dukes" initials="D." role="editor" surname="Dukes | |||
"> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.840 | <organization showOnFrontPage="true">Cisco Systems, Inc.</organization> | |||
2.xml"?> | <address> | |||
<postal> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.247 | <street/> | |||
3.xml"?> | <city>Ottawa</city> | |||
<region/> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.430 | <code/> | |||
2.xml"?> | <country>CA</country> | |||
</postal> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.282 | <email>ddukes@cisco.com</email> | |||
7.xml"?> | </address> | |||
</author> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.210 | <author fullname="Stefano Previdi" initials="S." surname="Previdi"> | |||
4.xml"?> | <organization showOnFrontPage="true">Huawei</organization> | |||
<address> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.643 | <postal> | |||
8.xml"?> | <street/> | |||
<city/> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.643 | <code/> | |||
7.xml"?> | <country>Italy</country> | |||
</postal> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.410 | <email>stefano@previdi.net</email> | |||
7.xml"?> | </address> | |||
</author> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.370 | <author fullname="John Leddy" initials="J." surname="Leddy"> | |||
4.xml"?> | <organization showOnFrontPage="true">Individual</organization> | |||
<address> | ||||
<reference anchor="FIPS180-4" | <postal> | |||
target="http://csrc.nist.gov/publications/fips/fips180-4/fips-1 | <street/> | |||
80-4.pdf"> | <city/> | |||
<front> | <region/> | |||
<title>FIPS 180-4 Secure Hash Standard (SHS)</title> | <code/> | |||
<country>US</country> | ||||
<author> | </postal> | |||
<organization>National Institute of Standards and | <email>john@leddy.net</email> | |||
Technology</organization> | </address> | |||
</author> | </author> | |||
<author fullname="Satoru Matsushima" initials="S." surname="Matsushima"> | ||||
<date month="March" year="2012"/> | <organization showOnFrontPage="true">SoftBank</organization> | |||
</front> | <address> | |||
</reference> | <email>satoru.matsushima@g.softbank.co.jp</email> | |||
</references> | </address> | |||
</author> | ||||
<references title="Informative References"> | <author fullname="Daniel Voyer" initials="D." surname="Voyer"> | |||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.812 | <organization showOnFrontPage="true">Bell Canada</organization> | |||
6.xml"?> | <address> | |||
<email>daniel.voyer@bell.ca</email> | ||||
<?rfc include="reference.I-D.filsfils-spring-srv6-interop.xml"?> | </address> | |||
</author> | ||||
<?rfc include="reference.I-D.ietf-intarea-tunnels.xml"?> | </section> | |||
<?rfc include="reference.I-D.matsushima-spring-srv6-deployment-status.xml" | ||||
?> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.534 | ||||
0.xml"?> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.530 | ||||
8.xml"?> | ||||
<?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.444 | ||||
3.xml"?> | ||||
<reference anchor="SRN" | ||||
target="https://inl.info.ucl.ac.be/system/files/sosr18-final15- | ||||
embedfonts.pdf"> | ||||
<front> | ||||
<title>Software Resolved Networks: Rethinking Enterprise Networks | ||||
with IPv6 Segment Routing</title> | ||||
<author fullname="David Lebrun"/> | ||||
<author fullname="Mathieu Jadin"/> | ||||
<author fullname="Francois Clad"/> | ||||
<author fullname="Clarence Filsfils"/> | ||||
<author fullname="Olivier Bonaventure"/> | ||||
<date year="2018"/> | ||||
</front> | ||||
</reference> | ||||
</references> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 191 change blocks. | ||||
1124 lines changed or deleted | 2288 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/ |