| rfc9012xml2.original.xml | rfc9012.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | <?xml version="1.0" encoding="UTF-8"?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
| <!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.2119.xml"> | ||||
| <!ENTITY RFC5512 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5512.xml"> | ||||
| <!ENTITY RFC7606 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.7606.xml"> | ||||
| <!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8174.xml"> | ||||
| <!ENTITY I-D.ietf-bess-evpn-inter-subnet-forwarding SYSTEM "https://xml2rfc.ietf | ||||
| .org/public/rfc/bibxml3/reference.I-D.ietf-bess-evpn-inter-subnet-forwarding.xml | ||||
| "> | ||||
| <!--><!ENTITY I-D.ietf-intarea-tunnels SYSTEM "https://xml2rfc.ietf.org/public/r | ||||
| fc/bibxml3/reference.I-D.ietf-intarea-tunnels.xml">--> | ||||
| <!ENTITY RFC2474 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.2474.xml"> | ||||
| <!ENTITY RFC2784 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.2784.xml"> | ||||
| <!ENTITY RFC2890 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.2890.xml"> | ||||
| <!ENTITY RFC3032 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.3032.xml"> | ||||
| <!ENTITY RFC3270 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.3270.xml"> | ||||
| <!ENTITY RFC3931 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.3931.xml"> | ||||
| <!ENTITY RFC4023 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.4023.xml"> | ||||
| <!ENTITY RFC4364 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.4364.xml"> | ||||
| <!ENTITY RFC5129 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5129.xml"> | ||||
| <!ENTITY RFC5462 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5462.xml"> | ||||
| <!ENTITY RFC5565 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5565.xml"> | ||||
| <!ENTITY RFC5566 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5566.xml"> | ||||
| <!ENTITY RFC5640 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.5640.xml"> | ||||
| <!ENTITY RFC6514 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6514.xml"> | ||||
| <!ENTITY RFC6811 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6811.xml"> | ||||
| <!ENTITY RFC6890 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.6890.xml"> | ||||
| <!ENTITY RFC7348 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.7348.xml"> | ||||
| <!ENTITY RFC7510 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.7510.xml"> | ||||
| <!ENTITY RFC7637 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.7637.xml"> | ||||
| <!ENTITY RFC8205 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8205.xml"> | ||||
| <!ENTITY RFC8277 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8277.xml"> | ||||
| <!ENTITY RFC8669 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8669.xml"> | ||||
| <!ENTITY RFC4271 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.4271.xml"> | ||||
| <!ENTITY RFC4272 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.4272.xml"> | ||||
| <!ENTITY RFC4760 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.4760.xml"> | ||||
| <!ENTITY RFC8126 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8126.xml"> | ||||
| <!ENTITY RFC8365 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8365.xml"> | ||||
| <!ENTITY RFC8402 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RF | ||||
| C.8402.xml"> | ||||
| ]> | ||||
| <rfc submissionType="IETF" docName="draft-ietf-idr-tunnel-encaps-22" category="s | ||||
| td" obsoletes="5512, 5566" | ||||
| updates="5640"> | ||||
| <!-- Generated by id2xml 1.4.4 on 2019-02-22T16:45:17Z --> | ||||
| <?rfc compact="yes"?> | ||||
| <?rfc text-list-symbols="o*+-"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <?rfc strict="yes"?> | ||||
| <?rfc toc="yes"?> | ||||
| <front> | ||||
| <title abbrev="Tunnel Encapsulation Attribute">The BGP Tunnel Encapsulati | ||||
| on Attribute</title> | ||||
| <author fullname="Keyur Patel" initials="K." surname="Patel"> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <organization>Arrcus, Inc</organization> | ||||
| <address> | ||||
| <postal><street>2077 Gateway Pl</street> | ||||
| <street>San Jose, CA 95110</street> | ||||
| <street>United States</street> | ||||
| </postal> | ||||
| <email>keyur@arrcus.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Gunter Van de Velde" initials="G." surname="Van de Veld | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft | |||
| e"> | -ietf-idr-tunnel-encaps-22" number="9012" submissionType="IETF" category="std" c | |||
| <organization>Nokia</organization> | onsensus="true" obsoletes="5512, 5566" updates="5640" xml:lang="en" sortRefs="tr | |||
| <address><postal><street>Copernicuslaan 50</street> | ue" symRefs="true" tocInclude="true" version="3"> | |||
| <street>Antwerpen 2018</street> | ||||
| <street>Belgium</street> | ||||
| </postal> | ||||
| <email>gunter.van_de_velde@nokia.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Srihari R. Sangli" initials="S." surname="Sangli"> | <!-- xml2rfc v2v3 conversion 3.5.0 --> | |||
| <organization>Juniper Networks</organization> | <!-- Generated by id2xml 1.4.4 on 2019-02-22T16:45:17Z --> | |||
| <address> | ||||
| <email>ssangli@juniper.net</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="John Scudder" initials="J." surname="Scudder"> | <front> | |||
| <organization>Juniper Networks</organization> | <title abbrev="Tunnel Encapsulation Attribute">The BGP Tunnel Encapsulation | |||
| <address> | Attribute</title> | |||
| <email>jgs@juniper.net</email> | <seriesInfo name="RFC" value="9012"/> | |||
| </address> | <author fullname="Keyur Patel" initials="K." surname="Patel"> | |||
| </author> | <organization>Arrcus, Inc</organization> | |||
| <address> | ||||
| <postal> | ||||
| <street>2077 Gateway Pl</street> | ||||
| <city>San Jose</city> | ||||
| <region>CA</region> | ||||
| <code>95110</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>keyur@arrcus.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Gunter Van de Velde" initials="G." surname="Van de Velde"> | ||||
| <organization>Nokia</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>Copernicuslaan 50</street> | ||||
| <city>Antwerpen</city> | ||||
| <code>2018</code> | ||||
| <country>Belgium</country> | ||||
| </postal> | ||||
| <email>gunter.van_de_velde@nokia.com</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="Srihari R. Sangli" initials="S." surname="Sangli"> | ||||
| <organization>Juniper Networks</organization> | ||||
| <address> | ||||
| <email>ssangli@juniper.net</email> | ||||
| </address> | ||||
| </author> | ||||
| <author fullname="John Scudder" initials="J." surname="Scudder"> | ||||
| <organization>Juniper Networks</organization> | ||||
| <address> | ||||
| <email>jgs@juniper.net</email> | ||||
| </address> | ||||
| </author> | ||||
| <date year="2021" month="April" /> | ||||
| <date/> | <keyword>BGP</keyword> | |||
| <workgroup>IDR Working Group</workgroup> | ||||
| <abstract><t> | <abstract> | |||
| This document defines a BGP Path Attribute known as the | <t> | |||
| "Tunnel Encapsulation Attribute", which can be used with | This document defines a BGP path attribute known as the | |||
| BGP UPDATEs of various SAFIs to provide information needed | "Tunnel Encapsulation attribute", which can be used with | |||
| BGP UPDATEs of various Subsequent Address Family Identifiers (SAFIs) to p | ||||
| rovide information needed | ||||
| to create tunnels and their corresponding encapsulation | to create tunnels and their corresponding encapsulation | |||
| headers. It provides encodings for a number of Tunnel Types | headers. It provides encodings for a number of tunnel types, | |||
| along with procedures for choosing between alternate tunnels | along with procedures for choosing between alternate tunnels | |||
| and routing packets into tunnels.</t> | and routing packets into tunnels.</t> | |||
| <t>This document obsoletes RFC 5512, which provided an earlier | ||||
| <t>This document obsoletes RFC 5512, which provided an earlier | definition of the Tunnel Encapsulation attribute. RFC 5512 was never | |||
| definition of the Tunnel Encapsulation Attribute. RFC 5512 was never | ||||
| deployed in production. Since RFC 5566 relies on RFC 5512, it is | deployed in production. Since RFC 5566 relies on RFC 5512, it is | |||
| likewise obsoleted. This document updates RFC 5640 by indicating | likewise obsoleted. This document updates RFC 5640 by indicating | |||
| that the Load-Balancing Block sub-TLV may be included in any Tunnel | that the Load-Balancing Block sub-TLV may be included in any Tunnel | |||
| Encapsulation Attribute where load balancing is desired.</t> | Encapsulation attribute where load balancing is desired.</t> | |||
| </abstract> | ||||
| </abstract> | </front> | |||
| </front> | <middle> | |||
| <section numbered="true" toc="default"> | ||||
| <middle> | <name>Introduction</name> | |||
| <section title="Introduction"><t> | <t> | |||
| This document obsoletes RFC 5512. The deficiencies of RFC 5512, and | This document obsoletes <xref target="RFC5512"/>. The deficiencies of <xref | |||
| a summary of the changes made, are discussed in Sections 1.1-1.3. | target="RFC5512"/>, and | |||
| The material from RFC 5512 that is retained has been incorporated | a summary of the changes made, are discussed in Sections <xref target="summar | |||
| y" format="counter"/>-<xref target="use-case" format="counter"/>. | ||||
| The material from <xref target="RFC5512"/> that is retained has been incorpor | ||||
| ated | ||||
| into this document. Since <xref target="RFC5566"/> | into this document. Since <xref target="RFC5566"/> | |||
| relies on RFC 5512, it is likewise obsoleted.</t> | relies on <xref target="RFC5512"/>, it is likewise obsoleted.</t> | |||
| <t> | ||||
| <t> | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, the | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
| y appear in all | be interpreted as | |||
| capitals, as shown here.</t> | described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> | |||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| <section title="Brief Summary of RFC 5512"><t> | <section numbered="true" toc="default" anchor="summary"> | |||
| <xref target="RFC5512"/> defines a BGP Path Attribute known as the Tunnel | <name>Brief Summary of RFC 5512</name> | |||
| <t> | ||||
| <xref target="RFC5512" format="default"/> defines a BGP path attribute known | ||||
| as the Tunnel | ||||
| Encapsulation attribute. This attribute consists of one or more | Encapsulation attribute. This attribute consists of one or more | |||
| TLVs. Each TLV identifies a particular type of tunnel. Each TLV | TLVs. Each TLV identifies a particular type of tunnel. Each TLV | |||
| also contains one or more sub-TLVs. Some of the sub-TLVs, for example, the | also contains one or more sub-TLVs. Some of the sub-TLVs, for example, the | |||
| "Encapsulation sub-TLV", contain information that may be used to form | Encapsulation sub-TLV, contain information that may be used to form | |||
| the encapsulation header for the specified Tunnel Type. Other sub- | the encapsulation header for the specified tunnel type. Other sub-TLVs, for | |||
| TLVs, for example, the "color sub-TLV" and the "protocol sub-TLV", contain | example, the "color sub-TLV" and the "protocol sub-TLV", contain | |||
| information that aids in determining whether particular packets | information that aids in determining whether particular packets | |||
| should be sent through the tunnel that the TLV identifies.</t> | should be sent through the tunnel that the TLV identifies.</t> | |||
| <t> | ||||
| <t> | <xref target="RFC5512" format="default"/> only allows the Tunnel Encapsulatio | |||
| <xref target="RFC5512"/> only allows the Tunnel Encapsulation attribute to be | n attribute to be | |||
| attached to BGP UPDATE messages of the Encapsulation Address Family. | attached to BGP UPDATE messages of the Encapsulation Address Family. | |||
| These UPDATE messages have an AFI (Address Family Identifier) of 1 or | These UPDATE messages have an Address Family Identifier (AFI) of 1 or | |||
| 2, and a SAFI of 7. In an UPDATE of the Encapsulation SAFI, the NLRI | 2, and a SAFI of 7. In an UPDATE of the Encapsulation SAFI, the | |||
| (Network Layer Reachability Information) is an address of the BGP | Network Layer Reachability Information (NLRI) is an address of the BGP | |||
| speaker originating the UPDATE. Consider the following scenario:</t> | speaker originating the UPDATE. Consider the following scenario:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>BGP speaker R1 has received and selected UPDA | <li>BGP speaker R1 has received and selected UPDATE U for local use;</ | |||
| TE U for local use;</t> | li> | |||
| <li>UPDATE U's SAFI is the Encapsulation SAFI;</li> | ||||
| <t>UPDATE U's SAFI is the Encapsulation SAFI;</t> | <li>UPDATE U has the address R2 as its NLRI;</li> | |||
| <li>UPDATE U has a Tunnel Encapsulation attribute.</li> | ||||
| <t>UPDATE U has the address R2 as its NLRI;</t> | <li>R1 has a packet, P, to transmit to destination D; and</li> | |||
| <li>R1's best route to D is a BGP route that has R2 as its next hop.</ | ||||
| <t>UPDATE U has a Tunnel Encapsulation attribute.</t> | li> | |||
| </ul> | ||||
| <t>R1 has a packet, P, to transmit to destination D;</t> | <t> | |||
| <t>R1's best route to D is a BGP route that has R2 as its next hop;</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| In this scenario, when R1 transmits packet P, it should transmit it | In this scenario, when R1 transmits packet P, it should transmit it | |||
| to R2 through one of the tunnels specified in U's Tunnel | to R2 through one of the tunnels specified in U's Tunnel | |||
| Encapsulation attribute. The IP address of the tunnel egress endpoint of | Encapsulation attribute. The IP address of the tunnel egress endpoint of | |||
| each such tunnel is R2. Packet P is known as the tunnel's "payload".</t> | each such tunnel is R2. Packet P is known as the tunnel's "payload".</t> | |||
| </section> | ||||
| </section> | <section anchor="deficiencies" numbered="true" toc="default"> | |||
| <name>Deficiencies in RFC 5512</name> | ||||
| <section title="Deficiencies in RFC 5512" anchor="deficiencies"><t> | <t> | |||
| While the ability to specify tunnel information in a BGP UPDATE is | While the ability to specify tunnel information in a BGP UPDATE is | |||
| useful, the procedures of <xref target="RFC5512"/> have certain limitations:< | useful, the procedures of <xref target="RFC5512" format="default"/> have cert | |||
| /t> | ain limitations:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>The requirement to use the "Encapsulation SAF | <li>The requirement to use the Encapsulation SAFI presents an | |||
| I" presents an | ||||
| unfortunate operational cost, as each BGP session that may need to | unfortunate operational cost, as each BGP session that may need to | |||
| carry tunnel encapsulation information needs to be reconfigured to | carry tunnel encapsulation information needs to be reconfigured to | |||
| support the Encapsulation SAFI. The Encapsulation SAFI has never | support the Encapsulation SAFI. The Encapsulation SAFI has never | |||
| been used, and this requirement has served only to discourage the | been used, and this requirement has served only to discourage the | |||
| use of the Tunnel Encapsulation attribute.</t> | use of the Tunnel Encapsulation attribute.</li> | |||
| <li>There is no way to use the Tunnel Encapsulation attribute to | ||||
| <t>There is no way to use the Tunnel Encapsulation attribute to | specify the tunnel egress endpoint address of a given tunnel; <xref target | |||
| specify the tunnel egress endpoint address of a given tunnel; <xref target | ="RFC5512" format="default"/> | |||
| ="RFC5512"/> | ||||
| assumes that the tunnel egress endpoint of each tunnel is specified as | assumes that the tunnel egress endpoint of each tunnel is specified as | |||
| the NLRI of an UPDATE of the Encapsulation SAFI.</t> | the NLRI of an UPDATE of the Encapsulation SAFI.</li> | |||
| <li>If the respective best routes to two different address prefixes | ||||
| <t>If the respective best routes to two different address prefixes | have the same next hop, <xref target="RFC5512" format="default"/> does not | |||
| have the same next hop, <xref target="RFC5512"/> does not provide a | provide a | |||
| straightforward method to associate each prefix with a different | straightforward method to associate each prefix with a different | |||
| tunnel.</t> | tunnel.</li> | |||
| <li>If a particular tunnel type requires an outer IP or UDP | ||||
| <t>If a particular Tunnel Type requires an outer IP or UDP | ||||
| encapsulation, there is no way to signal the values of any of the | encapsulation, there is no way to signal the values of any of the | |||
| fields of the outer encapsulation.</t> | fields of the outer encapsulation.</li> | |||
| <li>In the specification of the sub-TLVs in <xref target="RFC5512" for | ||||
| <t>In <xref target="RFC5512"/>'s specification of the sub-TLVs, each sub- | mat="default"/>, each sub-TLV has a | |||
| TLV has | one-octet Length field. In some cases, where a sub-TLV may require more t | |||
| one-octet length field. In some cases, where a sub-TLV may require more t | han | |||
| han | 255 octets for its encoding, a two-octet Length field | |||
| 255 octets for its encoding, a two-octet length field | may be needed.</li> | |||
| may be needed.</t> | </ul> | |||
| </section> | ||||
| </list> | <section numbered="true" toc="default" anchor="use-case"> | |||
| </t> | <name>Use Case for the Tunnel Encapsulation Attribute</name> | |||
| <t> | ||||
| </section> | ||||
| <section title="Use Case for The Tunnel Encapsulation Attribute"><t> | ||||
| Consider the case of a router R1 forwarding an IP packet P. Let D be | Consider the case of a router R1 forwarding an IP packet P. Let D be | |||
| P's IP destination address. R1 must look up D in its forwarding | P's IP destination address. R1 must look up D in its forwarding | |||
| table. Suppose that the "best match" route for D is route Q, where Q | table. Suppose that the "best match" route for D is route Q, where Q | |||
| is a BGP-distributed route whose "BGP next hop" is router R2. And | is a BGP-distributed route whose "BGP next hop" is router R2. And | |||
| suppose further that the routers along the path from R1 to R2 have | suppose further that the routers along the path from R1 to R2 have | |||
| entries for R2 in their forwarding tables, but do NOT have entries | entries for R2 in their forwarding tables but do NOT have entries | |||
| for D in their forwarding tables. For example, the path from R1 to | for D in their forwarding tables. For example, the path from R1 to | |||
| R2 may be part of a "BGP-free core", where there are no BGP- | R2 may be part of a "BGP-free core", where there are no BGP-distribut | |||
| distributed routes at all in the core. Or, as in <xref target="RFC55 | ed routes at all in the core. Or, as in <xref target="RFC5565" format="default" | |||
| 65"/>, D may be an | />, D may be an | |||
| IPv4 address while the intermediate routers along the path from R1 to | IPv4 address while the intermediate routers along the path from R1 to | |||
| R2 may support only IPv6. | R2 may support only IPv6. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| In cases such as this, in order for R1 to properly forward packet P, | In cases such as this, in order for R1 to properly forward packet P, | |||
| it must encapsulate P and send P "through a tunnel" to R2. For | it must encapsulate P and send P "through a tunnel" to R2. For | |||
| example, R1 may encapsulate P using GRE, L2TPv3, IP in IP, etc., | example, R1 may encapsulate P using GRE, Layer 2 Tunneling | |||
| Protocol version 3 (L2TPv3), IP in IP, etc., | ||||
| where the destination IP address of the encapsulation header is the | where the destination IP address of the encapsulation header is the | |||
| address of R2. | address of R2. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| In order for R1 to encapsulate P for transport to R2, R1 must know | In order for R1 to encapsulate P for transport to R2, R1 must know | |||
| what encapsulation protocol to use for transporting different sorts | what encapsulation protocol to use for transporting different sorts | |||
| of packets to R2. R1 must also know how to fill in the various | of packets to R2. R1 must also know how to fill in the various | |||
| fields of the encapsulation header. With certain encapsulation | fields of the encapsulation header. With certain encapsulation | |||
| types, this knowledge may be acquired by default or through manual | types, this knowledge may be acquired by default or through manual | |||
| configuration. Other encapsulation protocols have fields such as | configuration. Other encapsulation protocols have fields such as | |||
| session id, key, or cookie that must be filled in. It would not be | session id, key, or cookie that must be filled in. It would not be | |||
| desirable to require every BGP speaker to be manually configured with | desirable to require every BGP speaker to be manually configured with | |||
| the encapsulation information for every one of its BGP next hops. | the encapsulation information for every one of its BGP next hops. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| This document specifies a way in which BGP itself can be used by | This document specifies a way in which BGP itself can be used by | |||
| a given BGP speaker to tell other BGP speakers, "if you need to | a given BGP speaker to tell other BGP speakers, "If you need to | |||
| encapsulate packets to be sent to me, here's the information you need | encapsulate packets to be sent to me, here's the information you need | |||
| to properly form the encapsulation header". A BGP speaker signals | to properly form the encapsulation header". A BGP speaker signals | |||
| this information to other BGP speakers by using a new BGP attribute t ype | this information to other BGP speakers by using a new BGP attribute t ype | |||
| value, the BGP Tunnel Encapsulation Attribute. This attribute | value -- the BGP Tunnel Encapsulation attribute. This attribute | |||
| specifies the encapsulation protocols that may be used as well as | specifies the encapsulation protocols that may be used, as well as | |||
| whatever additional information (if any) is needed in order to | whatever additional information (if any) is needed in order to | |||
| properly use those protocols. Other attributes, for example, communiti es or | properly use those protocols. Other attributes, for example, communiti es or | |||
| extended communities, may also be included. | extended communities, may also be included. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Brief Summary of Changes from RFC 5512"><t> | <name>Brief Summary of Changes from RFC 5512</name> | |||
| This document addresses the deficiencies identified in <xref | <t> | |||
| target="deficiencies"/> by:</t> | This document addresses the deficiencies identified in <xref target="deficien | |||
| cies" format="default"/> by:</t> | ||||
| <t><list style="symbols"><t>Deprecating the Encapsulation SAFI.</t> | <ul spacing="normal"> | |||
| <li>Deprecating the Encapsulation SAFI.</li> | ||||
| <t>Defining a new "Tunnel Egress Endpoint sub-TLV" (<xref | <li>Defining a new "Tunnel Egress Endpoint sub-TLV" (<xref target="tun | |||
| target="tunnel-egress-endpoint"/>) that can be | nel-egress-endpoint" format="default"/>) that can be | |||
| included in any of the TLVs contained in the Tunnel Encapsulation | included in any of the TLVs contained in the Tunnel Encapsulation | |||
| attribute. This sub-TLV can be used to specify the remote | attribute. This sub-TLV can be used to specify the remote | |||
| endpoint address of a particular tunnel.</t> | endpoint address of a particular tunnel.</li> | |||
| <li>Allowing the Tunnel Encapsulation attribute to be carried by BGP | ||||
| <t>Allowing the Tunnel Encapsulation attribute to be carried by BGP | ||||
| UPDATEs of additional AFI/SAFIs. Appropriate semantics are | UPDATEs of additional AFI/SAFIs. Appropriate semantics are | |||
| provided for this way of using the attribute.</t> | provided for this way of using the attribute.</li> | |||
| <li>Defining a number of new sub-TLVs that provide additional | ||||
| <t>Defining a number of new sub-TLVs that provide additional | ||||
| information that is useful when forming the encapsulation header | information that is useful when forming the encapsulation header | |||
| used to send a packet through a particular tunnel.</t> | used to send a packet through a particular tunnel.</li> | |||
| <li>Defining the Sub-TLV Type field so that a sub-TLV whose type is in | ||||
| <t>Defining the sub-TLV type field so that a sub-TLV whose type is in | the range from 0 to 127 (inclusive) has a one-octet Length field, | |||
| the range from 0 to 127 inclusive has a one-octet length field, | but a sub-TLV whose type is in the range from 128 to 255 (inclusive) | |||
| but a sub-TLV whose type is in the range from 128 to 255 inclusive | has a two-octet Length field.</li> | |||
| has a two-octet length field.</t> | </ul> | |||
| <t> | ||||
| </list> | One of the sub-TLVs defined in <xref target="RFC5512" format="default"/> is t | |||
| </t> | he "Encapsulation sub-TLV". For a given tunnel, the Encapsulation sub-TLV speci | |||
| fies some | ||||
| <t> | ||||
| One of the sub-TLVs defined in <xref target="RFC5512"/> is the "Encapsulation | ||||
| sub-TLV". For a given tunnel, the Encapsulation sub-TLV specifies some | ||||
| of the information needed to construct the encapsulation header used | of the information needed to construct the encapsulation header used | |||
| when sending packets through that tunnel. This document defines | when sending packets through that tunnel. This document defines | |||
| Encapsulation sub-TLVs for a number of tunnel types not discussed in | Encapsulation sub-TLVs for a number of tunnel types not discussed in | |||
| <xref target="RFC5512"/>: VXLAN (Virtual Extensible Local Area Network, <xref | <xref target="RFC5512" format="default"/>: Virtual eXtensible Local Area Netw | |||
| target="RFC7348"/>), | ork (VXLAN) <xref target="RFC7348" format="default"/>, Network Virtualization Us | |||
| NVGRE | ing Generic Routing Encapsulation (NVGRE) | |||
| (Network Virtualization Using Generic Routing Encapsulation | <xref target="RFC7637" format="default"/>, and MPLS in Generic Routing Encaps | |||
| <xref target="RFC7637"/>), and MPLS-in-GRE (MPLS in Generic Routing Encapsula | ulation (MPLS-in-GRE) <xref target="RFC4023" format="default"/>. MPLS-in-UDP <x | |||
| tion | ref target="RFC7510" format="default"/> is also | |||
| <xref target="RFC4023"/>). MPLS-in-UDP <xref target="RFC7510"/> is also | ||||
| supported, but an Encapsulation sub-TLV for it is not needed since there are | supported, but an Encapsulation sub-TLV for it is not needed since there are | |||
| no additional parameters to be signaled.</t> | no additional parameters to be signaled.</t> | |||
| <t> | ||||
| <t> | ||||
| Some of the encapsulations mentioned in the previous paragraph need | Some of the encapsulations mentioned in the previous paragraph need | |||
| to be further encapsulated inside UDP and/or IP. <xref target="RFC5512"/> pr ovides | to be further encapsulated inside UDP and/or IP. <xref target="RFC5512" form at="default"/> provides | |||
| no way to specify that certain information is to appear in these | no way to specify that certain information is to appear in these | |||
| outer IP and/or UDP encapsulations. This document provides a | outer IP and/or UDP encapsulations. This document provides a | |||
| framework for including such information in the TLVs of the Tunnel | framework for including such information in the TLVs of the Tunnel | |||
| Encapsulation attribute.</t> | Encapsulation attribute.</t> | |||
| <t> | ||||
| <t> | ||||
| When the Tunnel Encapsulation attribute is attached to a BGP UPDATE | When the Tunnel Encapsulation attribute is attached to a BGP UPDATE | |||
| whose AFI/SAFI identifies one of the labeled address families, it is | whose AFI/SAFI identifies one of the labeled address families, it is | |||
| not always obvious whether the label embedded in the NLRI is to | not always obvious whether the label embedded in the NLRI is to | |||
| appear somewhere in the tunnel encapsulation header (and if so, | appear somewhere in the tunnel encapsulation header (and if so, | |||
| where), or whether it is to appear in the payload, or whether it can | where), whether it is to appear in the payload, or whether it can | |||
| be omitted altogether. This is especially true if the tunnel | be omitted altogether. This is especially true if the tunnel | |||
| encapsulation header itself contains a "virtual network identifier". | encapsulation header itself contains a "virtual network identifier". | |||
| This document provides a mechanism that allows one to signal (by | This document provides a mechanism that allows one to signal (by | |||
| using sub-TLVs of the Tunnel Encapsulation attribute) how one wants | using sub-TLVs of the Tunnel Encapsulation attribute) how one wants | |||
| to use the embedded label when the tunnel encapsulation has its own | to use the embedded label when the tunnel encapsulation has its own | |||
| virtual network identifier field.</t> | Virtual Network Identifier field.</t> | |||
| <t> | ||||
| <t> | <xref target="RFC5512" format="default"/> defines an Encapsulation Extended | |||
| <xref target="RFC5512"/> defines a Tunnel Encapsulation Extended | ||||
| Community that can be used instead of the Tunnel Encapsulation | Community that can be used instead of the Tunnel Encapsulation | |||
| attribute under certain circumstances. This document describes | attribute under certain circumstances. This document describes | |||
| (<xref target="encapsulation-extcomm"/>) how the Tunnel Encapsulation Extend | how the Encapsulation Extended | |||
| ed | Community can be used in a backwards-compatible fashion (see <xref target="e | |||
| Community can be used in a backwards-compatible fashion. It is | ncapsulation-extcomm" format="default"/>). It is | |||
| possible to combine Tunnel Encapsulation Extended Communities and | possible to combine Encapsulation Extended Communities and | |||
| Tunnel Encapsulation attributes in the same BGP UPDATE in this | Tunnel Encapsulation attributes in the same BGP UPDATE in this | |||
| manner.</t> | manner.</t> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Update to RFC 5640</name> | ||||
| <section title="Update to RFC 5640"> | <t> | |||
| <t> | This document updates <xref target="RFC5640" format="default"/> by indica | |||
| This document updates <xref target="RFC5640"/> by indicating that the Loa | ting that the Load-Balancing Block | |||
| d-Balancing Block | sub-TLV <bcp14>MAY</bcp14> be included in any Tunnel Encapsulation attrib | |||
| sub-TLV MAY be included in any Tunnel Encapsulation Attribute where | ute where | |||
| loadbalancing is desired. | load balancing is desired. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Effects of Obsoleting RFC 5566"> | <name>Effects of Obsoleting RFC 5566</name> | |||
| <t> | <t> | |||
| This specification obsoletes RFC 5566. This has the effect of, | This specification obsoletes RFC 5566. This has the effect of, | |||
| in turn, obsoleting a number of code points defined in that document. | in turn, deprecating a number of code points defined in that document. | |||
| From the "BGP Tunnel Encapsulation Attribute Tunnel Types" registry, | In the "BGP Tunnel Encapsulation Attribute Tunnel Types" registry <xref t | |||
| arget="IANA-BGP-TUNNEL-ENCAP"/>, the following code points have been marked as d | ||||
| eprecated: | ||||
| "Transmit tunnel endpoint" (type code 3), "IPsec in Tunnel-mode" (type | "Transmit tunnel endpoint" (type code 3), "IPsec in Tunnel-mode" (type | |||
| code 4), "IP in IP tunnel with IPsec Transport Mode" (type code 5), and | code 4), "IP in IP tunnel with IPsec Transport Mode" (type code 5), and | |||
| "MPLS-in-IP tunnel with IPsec Transport Mode" (type code 6) are obsoleted | "MPLS-in-IP tunnel with IPsec Transport Mode" (type code 6). | |||
| . | In the "BGP Tunnel Encapsulation Attribute Sub-TLVs" registry <xref targe | |||
| From the "BGP Tunnel Encapsulation Attribute Sub-TLVs" registry, | t="IANA-BGP-TUNNEL-ENCAP"/>, | |||
| "IPsec Tunnel Authenticator" (type code 3) is obsoleted. | "IPsec Tunnel Authenticator" (type code 3) has been marked as deprecated. | |||
| See <xref target="obsoleting-5566-and-5640"/>. | See <xref target="obsoleting-5566-and-5640" format="default"/>. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="encaps-attr" numbered="true" toc="default"> | ||||
| </section> | <name>The Tunnel Encapsulation Attribute</name> | |||
| <t> | ||||
| The Tunnel Encapsulation attribute is an optional transitive BGP path | ||||
| <section title="The Tunnel Encapsulation Attribute" anchor="encaps-attr"> | ||||
| <t> | ||||
| The Tunnel Encapsulation attribute is an optional transitive BGP Path | ||||
| attribute. IANA has assigned the value 23 as the type code of the | attribute. IANA has assigned the value 23 as the type code of the | |||
| attribute. The attribute is composed of a set of Type-Length-Value | attribute in the "BGP Path Attributes" registry <xref target="IANA-BGP-PARAMS " />. The attribute is composed of a set of Type-Length-Value | |||
| (TLV) encodings. Each TLV contains information corresponding to a | (TLV) encodings. Each TLV contains information corresponding to a | |||
| particular Tunnel Type. A Tunnel Encapsulation TLV, also known as Tunnel TLV | particular tunnel type. A Tunnel Encapsulation TLV, also known as Tunnel TLV | |||
| , | , | |||
| is structured as shown in Figure 1:</t> | is structured as shown in <xref target="ref-tunnel-tlv-value-field"/>. | |||
| </t> | ||||
| <figure title="Tunnel Encapsulation TLV Value Field" anchor="ref-tunnel-t | <figure anchor="ref-tunnel-tlv-value-field"> | |||
| lv-value-field"><artwork><![CDATA[ | <name>Tunnel Encapsulation TLV</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Tunnel Type (2 Octets) | Length (2 Octets) | | | Tunnel Type (2 octets) | Length (2 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| | Value (Variable) | | | Value (variable) | | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t><list style="symbols"><t>Tunnel Type (2 octets): identifies a type of | ||||
| tunnel. The field | ||||
| contains values from the IANA Registry "BGP Tunnel Encapsulation Attribute | ||||
| Tunnel Types". | ||||
| See <xref target="protocol-type"/> for discussion of special treatment of | ||||
| tunnel types | ||||
| with names of the form "X-in-Y". | ||||
| </t> | ||||
| <t>Length (2 octets): the total number of octets of the Value field.</t> | ||||
| <t>Value (variable): comprised of multiple sub-TLVs.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | <dl> | |||
| Each sub-TLV consists of three fields: a 1-octet type, a 1-octet or | <dt>Tunnel Type (2 octets):</dt><dd>Identifies a type of tunnel. The fi | |||
| 2-octet length field (depending on the type), and zero or more octets | eld | |||
| of value. A sub-TLV is structured as shown in Figure 2: | contains values from the IANA registry | |||
| <figure title="Encapsulation Sub-TLV Value Field" anchor="ref-tunnel-enca | "BGP Tunnel Encapsulation Attribute Tunnel Types" <xref target="IANA-BGP-TUNNEL- | |||
| psulation-sub-tlv-value-field"><artwork><![CDATA[ | ENCAP" />. | |||
| See <xref target="protocol-type" format="default"/> for discussion of spec | ||||
| ial treatment of tunnel types with names of the form "X-in-Y".</dd> | ||||
| <dt>Length (2 octets):</dt><dd>The total number of octets of the Value f | ||||
| ield.</dd> | ||||
| <dt>Value (variable):</dt><dd>Comprised of multiple sub-TLVs.</dd> | ||||
| </dl> | ||||
| <t> | ||||
| Each sub-TLV consists of three fields: A 1-octet type, a 1-octet or | ||||
| 2-octet length (depending on the type), and zero or more octets | ||||
| of value. A sub-TLV is structured as shown in <xref target="ref-tunnel-encap | ||||
| sulation-sub-tlv-value-field"/>. | ||||
| </t> | ||||
| <figure anchor="ref-tunnel-encapsulation-sub-tlv-value-field"> | ||||
| <name>Encapsulation Sub-TLV</name> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| +--------------------------------+ | +--------------------------------+ | |||
| | Sub-TLV Type (1 Octet) | | | Sub-TLV Type (1 octet) | | |||
| +--------------------------------+ | +--------------------------------+ | |||
| | Sub-TLV Length (1 or 2 Octets) | | | Sub-TLV Length (1 or 2 octets) | | |||
| +--------------------------------+ | +--------------------------------+ | |||
| | Sub-TLV Value (Variable) | | | Sub-TLV Value (variable) | | |||
| +--------------------------------+ | +--------------------------------+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <dl> | ||||
| </t> | <dt>Sub-TLV Type (1 octet):</dt><dd>Each sub-TLV type defines a certain | |||
| <t><list style="symbols"><t>Sub-TLV Type (1 octet): each sub-TLV type def | ||||
| ines a certain | ||||
| property about the Tunnel TLV that contains this sub-TLV. | property about the Tunnel TLV that contains this sub-TLV. | |||
| The field contains values from the IANA Registry "BGP Tunnel Encapsulation | The field contains values from the IANA registry | |||
| Attribute Sub-TLVs".</t> | "BGP Tunnel Encapsulation Attribute Sub-TLVs" <xref target="IANA-BGP-TUNNEL-ENCA | |||
| P" />.</dd> | ||||
| <t>Sub-TLV Length (1 or 2 octets): the total number of octets of the | <dt>Sub-TLV Length (1 or 2 octets):</dt><dd>The total number of octets of | |||
| sub-TLV Value field. The Sub-TLV Length field contains 1 octet if | the | |||
| Sub-TLV Value field. The Sub-TLV Length field contains 1 octet if | ||||
| the Sub-TLV Type field contains a value in the range from 0-127. | the Sub-TLV Type field contains a value in the range from 0-127. | |||
| The Sub-TLV Length field contains two octets if the Sub-TLV Type | The Sub-TLV Length field contains two octets if the Sub-TLV Type | |||
| field contains a value in the range from 128-255.</t> | field contains a value in the range from 128-255.</dd> | |||
| <dt>Sub-TLV Value (variable):</dt><dd>Encodings of the Value field depend | ||||
| <t>Sub-TLV Value (variable): encodings of the Value field depend on | on | |||
| the sub-TLV type as enumerated above. The following sub-sections | the sub-TLV type. The following subsections | |||
| define the encoding in detail.</t> | define the encoding in detail.</dd> | |||
| </dl> | ||||
| </list> | </section> | |||
| </t> | <section numbered="true" toc="default"> | |||
| <name>Tunnel Encapsulation Attribute Sub-TLVs</name> | ||||
| </section> | <t> | |||
| This section specifies a number of sub-TLVs. These sub-TLVs can | ||||
| <section title="Tunnel Encapsulation Attribute Sub-TLVs"><t> | be included in a TLV of the Tunnel Encapsulation attribute.</t> | |||
| This section specifies a number of sub-TLVs. These sub-TLVs can | <section anchor="tunnel-egress-endpoint" numbered="true" toc="default"> | |||
| be included in a TLV of the Tunnel Encapsulation attribute.</t> | <name>The Tunnel Egress Endpoint Sub-TLV (Type Code 6)</name> | |||
| <t> | ||||
| <section title="The Tunnel Egress Endpoint Sub-TLV (type code 6)" | ||||
| anchor="tunnel-egress-endpoint"><t> | ||||
| The Tunnel Egress Endpoint | The Tunnel Egress Endpoint | |||
| sub-TLV specifies the address of the egress endpoint of the tunnel, that | sub-TLV specifies the address of the egress endpoint of the tunnel, that | |||
| is, the address of the router that will decapsulate the payload. Its | is, the address of the router that will decapsulate the payload. Its | |||
| Value field contains three subfields:</t> | Value field contains three subfields:</t> | |||
| <ol spacing="normal" type="1"><li>a Reserved subfield</li> | ||||
| <t><list style="numbers"><t>a reserved subfield</t> | <li>a two-octet Address Family subfield</li> | |||
| <li>an Address subfield, whose length depends upon the Address | ||||
| <t>a two-octet Address Family subfield</t> | Family.</li> | |||
| </ol> | ||||
| <t>an Address subfield, whose length depends upon the Address | <figure anchor="ref-tunnel-endpoint-sub-tlv-value-field"> | |||
| Family.</t> | <name>Tunnel Egress Endpoint Sub-TLV Value Field</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| </list> | ||||
| </t> | ||||
| <figure title="Tunnel Egress Endpoint Sub-TLV Value Field" anchor="ref-tu | ||||
| nnel-endpoint-sub-tlv-value-field"><artwork><![CDATA[ | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Reserved (4 octets) | | | Reserved (4 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Address Family (2 octets) | Address | | | Address Family (2 octets) | Address | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ (Variable) + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ (variable) + | |||
| ~ ~ | ~ ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t> | <t> | |||
| The Reserved subfield SHOULD be originated as zero. It MUST be | The Reserved subfield <bcp14>SHOULD</bcp14> be originated as zero. It <bcp14> | |||
| disregarded on receipt, and it MUST be propagated unchanged. | MUST</bcp14> be | |||
| </t> | disregarded on receipt, and it <bcp14>MUST</bcp14> be propagated unchanged. | |||
| </t> | ||||
| <t> | <t> | |||
| The Address Family subfield contains a value from IANA's "Address Family Numb | The Address Family subfield contains a value from IANA's | |||
| ers" registry. | "Address Family Numbers" registry <xref target="IANA-ADDRESS-FAM" />. | |||
| This document assumes that the | This document assumes that the | |||
| Address Family is either IPv4 or IPv6; use of other address families | Address Family is either IPv4 or IPv6; use of other address families | |||
| is outside the scope of this document.</t> | is outside the scope of this document.</t> | |||
| <t> | ||||
| <t> | ||||
| If the Address Family subfield contains the value for IPv4, the | If the Address Family subfield contains the value for IPv4, the | |||
| Address subfield MUST contain an IPv4 address (a /32 IPv4 prefix).</t> | Address subfield <bcp14>MUST</bcp14> contain an IPv4 address (a /32 IPv4 pref | |||
| ix).</t> | ||||
| <t> | <t> | |||
| If the Address Family subfield contains the value for IPv6, the | If the Address Family subfield contains the value for IPv6, the | |||
| Address subfield MUST contain an IPv6 address (a /128 IPv6 prefix).</t> | Address subfield <bcp14>MUST</bcp14> contain an IPv6 address (a /128 IPv6 pre | |||
| fix).</t> | ||||
| <t> | <t> | |||
| In a given BGP UPDATE, the address family (IPv4 or IPv6) of a Tunnel | In a given BGP UPDATE, the address family (IPv4 or IPv6) of a Tunnel | |||
| Egress Endpoint sub-TLV is independent of the address family of the UPDATE | Egress Endpoint sub-TLV is independent of the address family of the UPDATE | |||
| itself. For example, an UPDATE whose NLRI is an IPv4 address may | itself. For example, an UPDATE whose NLRI is an IPv4 address may | |||
| have a Tunnel Encapsulation attribute containing Tunnel Egress Endpoint | have a Tunnel Encapsulation attribute containing Tunnel Egress Endpoint | |||
| sub-TLVs that contain IPv6 addresses. Also, different tunnels | sub-TLVs that contain IPv6 addresses. Also, different tunnels | |||
| represented in the Tunnel Encapsulation attribute may have tunnel egress | represented in the Tunnel Encapsulation attribute may have tunnel egress | |||
| endpoints of different address families.</t> | endpoints of different address families.</t> | |||
| <t> | ||||
| <t> | There is one special case: the Tunnel Egress Endpoint sub-TLV <bcp14>MA | |||
| There is one special case: the Tunnel Egress Endpoint sub-TLV MAY have | Y</bcp14> have a | |||
| a | ||||
| Value field whose Address Family subfield contains 0. This means | Value field whose Address Family subfield contains 0. This means | |||
| that the tunnel's egress endpoint is the address of the next hop. If | that the tunnel's egress endpoint is the address of the next hop. If | |||
| the Address Family subfield contains 0, the Address subfield is | the Address Family subfield contains 0, the Address subfield is | |||
| omitted. In this case, | omitted. In this case, | |||
| the Length field of Tunnel Egress Endpoint sub-TLV MUST contain the | the Length field of Tunnel Egress Endpoint sub-TLV <bcp14>MUST</bcp14> contain the | |||
| value 6 (0x06). </t> | value 6 (0x06). </t> | |||
| <t> | <t> | |||
| When the Tunnel Encapsulation attribute is carried in an UPDATE messag e | When the Tunnel Encapsulation attribute is carried in an UPDATE messag e | |||
| of one of the AFI/SAFIs specified in this document (see the second | of one of the AFI/SAFIs specified in this document (see the first | |||
| paragraph of <xref target="usage"/>), each TLV MUST have one, and one | paragraph of <xref target="usage" format="default"/>), each TLV <bcp14 | |||
| only, Tunnel | >MUST</bcp14> have one, and only one, Tunnel Egress Endpoint sub-TLV. If a TLV d | |||
| Egress Endpoint sub-TLV. If a TLV does not have a Tunnel Egress Endpoi | oes not have a Tunnel Egress Endpoint sub-TLV, that TLV should be treated as if | |||
| nt | it had a malformed Tunnel | |||
| sub-TLV, that TLV should be treated as if it had a malformed Tunnel | ||||
| Egress Endpoint sub-TLV (see below).</t> | Egress Endpoint sub-TLV (see below).</t> | |||
| <t> | <t> | |||
| In the context of this specification, if the Address Family subfield | In the context of this specification, if the Address Family subfield | |||
| has any value other than IPv4, IPv6, or the special value 0, the | has any value other than IPv4, IPv6, or the special value 0, the | |||
| Tunnel Egress Endpoint sub-TLV is considered "unrecognized" (see | Tunnel Egress Endpoint sub-TLV is considered "unrecognized" (see | |||
| <xref target="validation-and-error"/>). | <xref target="validation-and-error" format="default"/>). | |||
| If any of the following conditions hold, the Tunnel Egress Endpoint sub-TLV | If any of the following conditions hold, the Tunnel Egress Endpoint sub-TLV | |||
| is considered to be "malformed":</t> | is considered to be "malformed":</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li> | |||
| <t>The length of the sub-TLV's Value field is other than 6 added to | <t>The length of the sub-TLV's Value field is other than 6 added to | |||
| the defined length for the address family given in its Address | the defined length for the address family given in its Address | |||
| Family subfield. Therefore, for address family behaviors defined | Family subfield. Therefore, for address family behaviors defined | |||
| in this document, the permitted values are: | in this document, the permitted values are: | |||
| <list style="symbols"> | </t> | |||
| <t>10, if the Address Family subfield contains the value for IPv4.</t> | <ul spacing="normal"> | |||
| <t>22, if the Address Family subfield contains the value for IPv6.</t> | <li>10, if the Address Family subfield contains the value for IPv4 | |||
| <t>6, if the Address Family subfield contains the value zero.</t> | .</li> | |||
| </list></t> | <li>22, if the Address Family subfield contains the value for IPv6 | |||
| .</li> | ||||
| <t>The IP address in the sub-TLV's Address subfield lies within a | <li>6, if the Address Family subfield contains the value zero.</li | |||
| block listed in the relevant Special-Purpose IP Address Registry | > | |||
| <xref target="RFC6890"/> with either a “destination” attribute | </ul> | |||
| value or a “forwardable” attribute value of “false”. (Such routes | </li> | |||
| <li>The IP address in the sub-TLV's Address subfield lies within a | ||||
| block listed in the relevant Special-Purpose IP Address registry | ||||
| <xref target="RFC6890" format="default"/> with either a "destination" a | ||||
| ttribute | ||||
| value or a "forwardable" attribute value of "false". (Such routes | ||||
| are sometimes colloquially known as "Martians".) This restriction | are sometimes colloquially known as "Martians".) This restriction | |||
| MAY be relaxed by explicit configuration.</t> | <bcp14>MAY</bcp14> be relaxed by explicit configuration.</li> | |||
| <li>It can be determined that the IP address in the sub-TLV's Address | ||||
| <t>It can be determined that the IP address in the sub-TLV's Address | ||||
| subfield does not belong to the Autonomous System (AS) that originated | subfield does not belong to the Autonomous System (AS) that originated | |||
| the route that contains the attribute. <xref target="address-validation"/ | the route that contains the attribute. <xref target="address-validation" | |||
| > | format="default"/> | |||
| describes an optional procedure to make this determination.</t> | describes an optional procedure to make this determination.</li> | |||
| </list> | </ul> | |||
| </t> | <t> | |||
| Error handling is specified in <xref target="validation-and-error" format="de | ||||
| <t> | fault"/>. | |||
| Error Handling is specified in <xref target="validation-and-error"/>. | </t> | |||
| </t> | <t> | |||
| <t> | ||||
| If the Tunnel Egress Endpoint sub-TLV contains an IPv4 or IPv6 address that | If the Tunnel Egress Endpoint sub-TLV contains an IPv4 or IPv6 address that | |||
| is valid but not reachable, the sub-TLV is not considered to be | is valid but not reachable, the sub-TLV is not considered to be | |||
| malformed.</t> | malformed.</t> | |||
| <section anchor="address-validation" numbered="true" toc="default"> | ||||
| <section title="Validating the Address Subfield" anchor="address-validation" | <name>Validating the Address Subfield</name> | |||
| > | <t> | |||
| <t> | This section provides a procedure that <bcp14>MAY</bcp14> be applied to | |||
| This section provides a procedure that MAY be applied to | ||||
| validate that the IP address in the sub-TLV's Address subfield | validate that the IP address in the sub-TLV's Address subfield | |||
| belongs to the AS that originated the route that contains the | belongs to the AS that originated the route that contains the | |||
| attribute. (The notion of "belonging to" an AS is expanded on below.) | attribute. (The notion of "belonging to" an AS is expanded on below.) | |||
| Doing this is thought to increase confidence that when | Doing this is thought to increase confidence that when | |||
| traffic is sent to the IP address depicted in the | traffic is sent to the IP address depicted in the | |||
| Address subfield, it will go to the same AS as it would go to if the | Address subfield, it will go to the same AS as it would go to if the | |||
| Tunnel Encapsulation Attribute were not present, although of course | Tunnel Encapsulation attribute were not present, although of course | |||
| it cannot guarantee it. See <xref | it cannot guarantee it. See <xref target="security" format="default"/> for di | |||
| target="security"/> for discussion of the limitations of this | scussion of the limitations of this | |||
| procedure. The principal applicability of this procedure is in deployments | procedure. The principal applicability of this procedure is in deployments | |||
| that are not strictly scoped. In deployments with strict scope, and especiall y | that are not strictly scoped. In deployments with strict scope, and especiall y | |||
| those scoped to a single AS, these procedures may not add substantial | those scoped to a single AS, these procedures may not add substantial | |||
| benefit beyond those discussed in <xref target="scoping"/>. | benefit beyond those discussed in <xref target="scoping" format="default"/>. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | The Route Origin Autonomous System Number (ASN) of a BGP route that | |||
| The Route Origin ASN (Autonomous System Number) of a BGP route that | includes a Tunnel Encapsulation attribute can be determined by | |||
| includes a Tunnel Encapsulation Attribute can be determined by | ||||
| inspection of the AS_PATH attribute, according to the procedure | inspection of the AS_PATH attribute, according to the procedure | |||
| specified in <xref target="RFC6811"/> Section 2. Call this value | specified in <xref target="RFC6811" sectionFormat="comma" section="2"/>. Call this value | |||
| Route_AS. | Route_AS. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| In order to determine the Route Origin ASN of the address depicted in | In order to determine the Route Origin ASN of the address depicted in | |||
| the Address subfield of the Tunnel Egress Endpoint sub-TLV, it is | the Address subfield of the Tunnel Egress Endpoint sub-TLV, it is | |||
| necessary to consider the forwarding route, that is, the route that | necessary to consider the forwarding route -- that is, the route that | |||
| will be used to forward traffic toward that address. This route is | will be used to forward traffic toward that address. This route is | |||
| determined by a recursive route lookup operation for that address, as | determined by a recursive route-lookup operation for that address, as | |||
| discussed in <xref target="RFC4271"/> Section 5.1.3. The relevant AS | discussed in <xref target="RFC4271" sectionFormat="comma" section="5.1.3"/>. | |||
| Path to consider is the last one encountered while performing the | The relevant AS | |||
| recursive lookup; the procedures of RFC6811 Section 2 are applied to | path to consider is the last one encountered while performing the | |||
| that AS Path to determine the Route Origin ASN. If no AS Path is | recursive lookup; the procedures of <xref target="RFC6811" sectionFormat="com | |||
| encountered at all, for example if that route's source is a protocol | ma" section="2"/> are applied to | |||
| that AS path to determine the Route Origin ASN. If no AS path is | ||||
| encountered at all, for example, if that route's source is a protocol | ||||
| other than BGP, the Route Origin ASN is the BGP speaker's own AS | other than BGP, the Route Origin ASN is the BGP speaker's own AS | |||
| number. Call this value Egress_AS. | number. Call this value Egress_AS. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| If Route_AS does not equal Egress_AS, then the Tunnel Egress Endpoint | If Route_AS does not equal Egress_AS, then the Tunnel Egress Endpoint | |||
| sub-TLV is considered not to be valid. In some cases a network operator | sub-TLV is considered not to be valid. In some cases, a network operator | |||
| who controls a set of Autonomous Systems might wish to allow a Tunnel | who controls a set of ASes might wish to allow a tunnel | |||
| Egress Endpoint to reside in an AS other than Route_AS; configuration | egress endpoint to reside in an AS other than Route_AS; configuration | |||
| MAY allow for such a case, in which case the check becomes, if | <bcp14>MAY</bcp14> allow for such a case, in which case the check becomes: if | |||
| Egress_AS is not within the configured set of permitted AS numbers, then the | Egress_AS is not within the configured set of permitted AS numbers, then the | |||
| Tunnel Egress Endpoint sub-TLV is considered to be "malformed". | Tunnel Egress Endpoint sub-TLV is considered to be "malformed". | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | Note that if the forwarding route changes, this procedure <bcp14>MUST</bcp14> | |||
| Note that if the forwarding route changes, this procedure MUST be | be | |||
| reapplied. As a result, a sub-TLV that was formerly considered valid | reapplied. As a result, a sub-TLV that was formerly considered valid | |||
| might become not valid, or vice-versa. | might become not valid, or vice versa. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Encapsulation Sub-TLVs for Particular Tunnel Types (Type Code 1)</ | ||||
| <section title="Encapsulation Sub-TLVs for Particular Tunnel Types (type | name> | |||
| code 1)"><t> | <t> | |||
| This section defines Encapsulation sub-TLVs for the following | This section defines Encapsulation sub-TLVs for the following | |||
| tunnel types: VXLAN (<xref target="RFC7348"/>), NVGRE | tunnel types: VXLAN <xref target="RFC7348" format="default"/>, NVGRE | |||
| (<xref target="RFC7637"/>), MPLS-in-GRE (<xref target="RFC4023"/>), L2TPv3 | <xref target="RFC7637" format="default"/>, MPLS-in-GRE <xref target="RFC4023" | |||
| (<xref target="RFC3931"/>), and GRE (<xref target="RFC2784"/>).</t> | format="default"/>, L2TPv3 | |||
| <xref target="RFC3931" format="default"/>, and GRE <xref target="RFC2784" for | ||||
| <t> | mat="default"/>.</t> | |||
| <t> | ||||
| Rules for forming the encapsulation based on the information in a | Rules for forming the encapsulation based on the information in a | |||
| given TLV are given in <xref target="usage"/> and <xref target="use-of-vni"/> | given TLV are given in Sections <xref target="usage" format="counter"/> and < | |||
| .</t> | xref target="use-of-vni" format="counter"/>.</t> | |||
| <t> | ||||
| <t> | ||||
| Recall that the tunnel type itself is identified by the Tunnel Type | Recall that the tunnel type itself is identified by the Tunnel Type | |||
| field in the attribute header (<xref target="encaps-attr"/>); the | field in the attribute header (<xref target="encaps-attr" format="default"/>) ; the | |||
| Encapsulation sub-TLV's structure is inferred from this. Regardless | Encapsulation sub-TLV's structure is inferred from this. Regardless | |||
| of the Tunnel Type, the sub-TLV type of the Encapsulation sub-TLV is | of the tunnel type, the sub-TLV type of the Encapsulation sub-TLV is | |||
| 1. There are also tunnel types for which it is not necessary to | 1. There are also tunnel types for which it is not necessary to | |||
| define an Encapsulation sub-TLV, because there are no fields in the | define an Encapsulation sub-TLV, because there are no fields in the | |||
| encapsulation header whose values need to be signaled from the tunnel | encapsulation header whose values need to be signaled from the tunnel | |||
| egress endpoint.</t> | egress endpoint.</t> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="VXLAN (tunnel type 8)"><t> | <name>VXLAN (Tunnel Type 8)</name> | |||
| This document defines an Encapsulation sub-TLV for <xref target="RFC7348">VXL | <t> | |||
| AN</xref> tunnels. | This document defines an Encapsulation sub-TLV for <xref target="RFC7348" for | |||
| When the Tunnel Type is VXLAN, the length of the sub-TLV is 12 octets. The | mat="default">VXLAN</xref> tunnels. | |||
| following is the structure of the Value field in the Encapsulation sub-TLV:</ | When the tunnel type is VXLAN, the length of the sub-TLV is 12 octets. The st | |||
| t> | ructure of the Value field in the Encapsulation sub-TLV is shown in <xref target | |||
| ="ref-vxlan-encapsulation-sub-tlv" />.</t> | ||||
| <figure title="VXLAN Encapsulation Sub-TLV Value Field" anchor="ref-vxlan | <figure anchor="ref-vxlan-encapsulation-sub-tlv"> | |||
| -encapsulation-sub-tlv"><artwork><![CDATA[ | <name>VXLAN Encapsulation Sub-TLV Value Field</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |V|M|R|R|R|R|R|R| VN-ID (3 Octets) | | |V|M|R|R|R|R|R|R| VN-ID (3 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MAC Address (4 Octets) | | | MAC Address (4 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MAC Address (2 Octets) | Reserved (2 Octets) | | | MAC Address (2 octets) | Reserved (2 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t><list hangIndent="3" style="hanging"><t> | <dl newline="false" spacing="normal" indent="3"> | |||
| V: This bit is set to 1 to indicate that a VN-ID (Virtual | <dt>V:</dt> | |||
| Network Identifier) is present in the Encapsulation sub-TLV. | <dd> | |||
| This bit is set to 1 to indicate that a Virtual | ||||
| Network Identifier (VN-ID) is present in the Encapsulation sub-TLV. | ||||
| If set to 0, the VN-ID field is disregarded. | If set to 0, the VN-ID field is disregarded. | |||
| Please see <xref target="use-of-vni"/>.</t> | Please see <xref target="use-of-vni" format="default"/>.</dd> | |||
| <dt>M:</dt> | ||||
| </list> | <dd> | |||
| </t> | This bit is set to 1 to indicate that a Media Access Control (MAC) Address | |||
| is | ||||
| <t><list hangIndent="3" style="hanging"><t> | ||||
| M: This bit is set to 1 to indicate that a MAC Address is | ||||
| present in the Encapsulation sub-TLV. If set to 0, the MAC | present in the Encapsulation sub-TLV. If set to 0, the MAC | |||
| Address field is disregarded.</t> | Address field is disregarded.</dd> | |||
| <dt>R:</dt> | ||||
| </list> | <dd> | |||
| </t> | The remaining bits in the 8-bit Flags field are reserved for | |||
| further use. They <bcp14>MUST</bcp14> always be set to 0 by the originato | ||||
| <t><list hangIndent="3" style="hanging"><t> | r of | |||
| R: The remaining bits in the 8-bit flags field are reserved for | the sub-TLV. Intermediate routers <bcp14>MUST</bcp14> propagate them witho | |||
| further use. They MUST always be set to 0 by the originator of | ut | |||
| the sub-TLV. Intermediate routers MUST propagate them without | modification. Any receiving routers <bcp14>MUST</bcp14> ignore | |||
| modification. Any receiving routers MUST ignore | these bits upon receipt.</dd> | |||
| these bits upon receipt.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t><list hangIndent="3" style="hanging"><t> | ||||
| VN-ID: If the V bit is set, the VN-ID field contains a 3 octet VN- | ||||
| ID value. If the V bit is not set, the VN-ID field MUST be set | ||||
| to zero on transmission and disregarded on receipt.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t><list hangIndent="3" style="hanging"><t> | ||||
| MAC Address: If the M bit is set, this field contains a 6 octet | ||||
| Ethernet MAC address. If the M bit is not set, this field MUST | ||||
| be set to all zeroes on transmission and disregarded on receipt.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t><list hangIndent="3" style="hanging"><t> | ||||
| Reserved: MUST be set to zero on transmission and disregarded | ||||
| on receipt.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | <dt>VN-ID:</dt> | |||
| <dd> | ||||
| If the V bit is set to 1, the VN-ID field contains a 3-octet VN-ID value. | ||||
| If the V bit is set to 0, the VN-ID field <bcp14>MUST</bcp14> be set | ||||
| to zero on transmission and disregarded on receipt.</dd> | ||||
| <dt>MAC Address:</dt> | ||||
| <dd> | ||||
| If the M bit is set to 1, this field contains a 6-octet | ||||
| Ethernet MAC address. If the M bit is set to 0, this field <bcp14>MUST</b | ||||
| cp14> | ||||
| be set to all zeroes on transmission and disregarded on receipt.</dd> | ||||
| <dt>Reserved:</dt> | ||||
| <dd> | ||||
| <bcp14>MUST</bcp14> be set to zero on transmission and disregarded | ||||
| on receipt.</dd> | ||||
| </dl> | ||||
| <t> | ||||
| When forming the VXLAN encapsulation header:</t> | When forming the VXLAN encapsulation header:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>The values of the V, M, and R bits are NOT co | <li>The values of the V, M, and R bits are NOT copied into the Flags | |||
| pied into the flags | field of the VXLAN header. The Flags field of the VXLAN header is | |||
| field of the VXLAN header. The flags field of the VXLAN header is | set as per <xref target="RFC7348" format="default"/>.</li> | |||
| set as per <xref target="RFC7348"/>.</t> | <li> | |||
| <t>If the M bit is set to 1, the MAC Address is copied into the In | ||||
| <t>If the M bit is set, the MAC Address is copied into the Inner | ner | |||
| Destination MAC Address field of the Inner Ethernet Header (see | Destination MAC Address field of the Inner Ethernet Header (see | |||
| section 5 of <xref target="RFC7348"/>).<vspace blankLines="1"/> | <xref target="RFC7348" sectionFormat="of" section="5"/>).</t> | |||
| If the M bit is not set, and the payload being sent through the | <t> | |||
| If the M bit is set to 0, and the payload being sent through the | ||||
| VXLAN tunnel is an Ethernet frame, the Destination MAC Address | VXLAN tunnel is an Ethernet frame, the Destination MAC Address | |||
| field of the Inner Ethernet Header is just the Destination MAC | field of the Inner Ethernet Header is just the Destination MAC | |||
| Address field of the payload's Ethernet header. | Address field of the payload's Ethernet header. | |||
| <vspace blankLines="1"/> | </t> | |||
| If the M bit is not set, and the payload being sent through the | <t> | |||
| If the M bit is set to 0, and the payload being sent through the | ||||
| VXLAN tunnel is an IP or MPLS packet, the Inner Destination MAC | VXLAN tunnel is an IP or MPLS packet, the Inner Destination MAC | |||
| Address field is set to a configured value; if there is no | Address field is set to a configured value; if there is no | |||
| configured value, the VXLAN tunnel cannot be used. | configured value, the VXLAN tunnel cannot be used. | |||
| </t> | </t> | |||
| <t> If the V bit is not set, and the BGP UPDATE message has | </li> | |||
| AFI/SAFI other than Ethernet VPNs (SAFI 70, "BGP EVPNs") then the | <li> If the V bit is set to 0, and the BGP UPDATE message has an | |||
| AFI/SAFI other than Ethernet VPNs (SAFI 70, "BGP EVPNs"), then the | ||||
| VXLAN tunnel cannot be used. | VXLAN tunnel cannot be used. | |||
| </t> | </li> | |||
| <li> | ||||
| <t><xref target="use-of-vni"/> describes how the VNI field of the | <xref target="use-of-vni" format="default"/> describes how the VNI | |||
| VXLAN encapsulation header is set. | (VXLAN Network Identifier) field of the VXLAN encapsulation header is set. | |||
| </t> | </li> | |||
| </ul> | ||||
| </list> | <t> | |||
| </t> | ||||
| <t> | ||||
| Note that in order to send an IP packet or an MPLS packet through a | Note that in order to send an IP packet or an MPLS packet through a | |||
| VXLAN tunnel, the packet must first be encapsulated in an Ethernet | VXLAN tunnel, the packet must first be encapsulated in an Ethernet | |||
| header, which becomes the "inner Ethernet header" described in | header, which becomes the "Inner Ethernet Header" described in | |||
| <xref target="RFC7348"/>. The VXLAN Encapsulation sub-TLV may contain inform | <xref target="RFC7348" format="default"/>. The VXLAN Encapsulation sub-TLV m | |||
| ation | ay contain information | |||
| (for example,the MAC address) that is used to form this Ethernet header.</t> | (for example, the MAC address) that is used to form this Ethernet header.</t> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>NVGRE (Tunnel Type 9)</name> | ||||
| <section title="NVGRE (tunnel type 9)"><t> | <t> | |||
| This document defines an Encapsulation sub-TLV for <xref target="RFC7637">NVG | This document defines an Encapsulation sub-TLV for <xref target="RFC7637" for | |||
| RE</xref> tunnels. | mat="default">NVGRE</xref> tunnels. | |||
| When the Tunnel Type is NVGRE, the length of the sub-TLV is 12 octets. The | When the tunnel type is NVGRE, the length of the sub-TLV is 12 octets. The st | |||
| following is the structure of the Value field in the Encapsulation sub-TLV:</ | ructure of the Value field in the Encapsulation sub-TLV is shown in <xref target | |||
| t> | ="ref-nvgre-encapsulation-sub-tlv"/>.</t> | |||
| <figure anchor="ref-nvgre-encapsulation-sub-tlv"> | ||||
| <figure title="NVGRE Encapsulation Sub-TLV Value Field" anchor="ref-nvgre | <name>NVGRE Encapsulation Sub-TLV Value Field</name> | |||
| -encapsulation-sub-tlv"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |V|M|R|R|R|R|R|R| VN-ID (3 Octets) | | |V|M|R|R|R|R|R|R| VN-ID (3 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MAC Address (4 Octets) | | | MAC Address (4 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | MAC Address (2 Octets) | Reserved (2 Octets) | | | MAC Address (2 octets) | Reserved (2 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t><list hangIndent="3" style="hanging"><t> | <dl newline="false" spacing="normal" indent="3"> | |||
| V: This bit is set to 1 to indicate that a VN-ID is | <dt>V:</dt> | |||
| <dd> | ||||
| This bit is set to 1 to indicate that a VN-ID is | ||||
| present in the Encapsulation sub-TLV. If set to 0, | present in the Encapsulation sub-TLV. If set to 0, | |||
| the VN-ID field is disregarded. Please see <xref target="use-of-vni"/>.</t | the VN-ID field is disregarded. Please see <xref target="use-of-vni" forma | |||
| > | t="default"/>.</dd> | |||
| <dt>M:</dt> | ||||
| </list> | <dd> | |||
| </t> | This bit is set to 1 to indicate that a MAC Address is | |||
| <t><list hangIndent="3" style="hanging"><t> | ||||
| M: This bit is set to 1 to indicate that a MAC Address is | ||||
| present in the Encapsulation sub-TLV. If set to 0, | present in the Encapsulation sub-TLV. If set to 0, | |||
| the MAC Address field is disregarded. </t> | the MAC Address field is disregarded. </dd> | |||
| <dt>R:</dt> | ||||
| </list> | <dd> | |||
| </t> | The remaining bits in the 8-bit Flags field are reserved for | |||
| further use. They <bcp14>MUST</bcp14> always be set to 0 by the originator | ||||
| <t><list hangIndent="3" style="hanging"><t> | of | |||
| R: The remaining bits in the 8-bit flags field are reserved for | the sub-TLV. Intermediate routers <bcp14>MUST</bcp14> propagate them witho | |||
| further use. They MUST always be set to 0 by the originator of | ut | |||
| the sub-TLV. Intermediate routers MUST propagate them without | modification. Any receiving routers <bcp14>MUST</bcp14> ignore | |||
| modification. Any receiving routers MUST ignore | these bits upon receipt.</dd> | |||
| these bits upon receipt.</t> | <dt>VN-ID:</dt> | |||
| <dd> | ||||
| </list> | If the V bit is set to 1, the VN-ID field contains a 3-octet VN-ID value, | |||
| </t> | used to set the NVGRE Virtual Subnet Identifier (VSID; see <xref target="use-of- | |||
| vni" format="default"/>). If the V bit is set to 0, the VN-ID field <bcp14>MUST | ||||
| <t><list hangIndent="3" style="hanging"><t> | </bcp14> be set | |||
| VN-ID: If the V bit is set, the VN-ID field contains a 3 octet VN- | to zero on transmission and disregarded on receipt.</dd> | |||
| ID value, used to set the NVGRE VSID (see <xref target="use-of-vni"/>). I | <dt>MAC Address:</dt> | |||
| f the V bit is not set, the VN-ID field MUST be set | <dd> | |||
| to zero on transmission and disregarded on receipt.</t> | If the M bit is set to 1, this field contains a 6-octet | |||
| Ethernet MAC address. If the M bit is set to 0, this field <bcp14>MUST</b | ||||
| </list> | cp14> | |||
| </t> | be set to all zeroes on transmission and disregarded on receipt.</dd> | |||
| <dt>Reserved:</dt> | ||||
| <t><list hangIndent="3" style="hanging"><t> | <dd> | |||
| MAC Address: If the M bit is set, this field contains a 6 octet | <bcp14>MUST</bcp14> be set to zero on transmission and disregarded | |||
| Ethernet MAC address. If the M bit is not set, this field MUST | on receipt.</dd> | |||
| be set to all zeroes on transmission and disregarded on receipt.</t> | </dl> | |||
| <t> | ||||
| </list> | ||||
| </t> | ||||
| <t><list hangIndent="3" style="hanging"><t> | ||||
| Reserved: MUST be set to zero on transmission and disregarded | ||||
| on receipt.</t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| When forming the NVGRE encapsulation header:</t> | When forming the NVGRE encapsulation header:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>The values of the V, M, and R bits are NOT co | <li>The values of the V, M, and R bits are NOT copied into the Flags | |||
| pied into the flags | field of the NVGRE header. The Flags field of the NVGRE header is | |||
| field of the NVGRE header. The flags field of the NVGRE header is | set as per <xref target="RFC7637" format="default"/>.</li> | |||
| set as per <xref target="RFC7637"/>.</t> | <li> | |||
| <t>If the M bit is set to 1, the MAC Address is copied into the In | ||||
| <t>If the M bit is set, the MAC Address is copied into the Inner | ner | |||
| Destination MAC Address field of the Inner Ethernet Header (see | Destination MAC Address field of the Inner Ethernet Header (see | |||
| section 3.2 of <xref target="RFC7637"/>).<vspace blankLines="1"/> | <xref target="RFC7637" sectionFormat="of" section="3.2"/>).</t> | |||
| If the M bit is not set, and the payload being sent through the | <t> | |||
| If the M bit is set to 0, and the payload being sent through the | ||||
| NVGRE tunnel is an Ethernet frame, the Destination MAC Address | NVGRE tunnel is an Ethernet frame, the Destination MAC Address | |||
| field of the Inner Ethernet Header is just the Destination MAC | field of the Inner Ethernet Header is just the Destination MAC | |||
| Address field of the payload's Ethernet header. | Address field of the payload's Ethernet header. | |||
| <vspace blankLines="1"/> | </t> | |||
| If the M bit is not set, and the payload being sent through the | <t> | |||
| If the M bit is set to 0, and the payload being sent through the | ||||
| NVGRE tunnel is an IP or MPLS packet, the Inner Destination MAC | NVGRE tunnel is an IP or MPLS packet, the Inner Destination MAC | |||
| Address field is set to a configured value; if there is no | Address field is set to a configured value; if there is no | |||
| configured value, the NVGRE tunnel cannot be used. | configured value, the NVGRE tunnel cannot be used. | |||
| </t> | </t> | |||
| <t> If the V bit is not set, and the BGP UPDATE message has | </li> | |||
| AFI/SAFI other than Ethernet VPNs (EVPN) then the | <li> If the V bit is set to 0, and the BGP UPDATE message has an | |||
| AFI/SAFI other than Ethernet VPNs (EVPNs), then the | ||||
| NVGRE tunnel cannot be used. | NVGRE tunnel cannot be used. | |||
| </t> | </li> | |||
| <li> | ||||
| <t><xref target="use-of-vni"/> describes how the VSID (Virtual Subnet Ide | <xref target="use-of-vni" format="default"/> describes how the VSI | |||
| ntifier) field of the | D field of the | |||
| NVGRE encapsulation header is set.</t> | NVGRE encapsulation header is set.</li> | |||
| </ul> | ||||
| </list> | </section> | |||
| </t> | <section numbered="true" toc="default"> | |||
| <name>L2TPv3 (Tunnel Type 1)</name> | ||||
| </section> | <t> | |||
| When the tunnel type of the TLV is <xref target="RFC3931" format="default">L2 | ||||
| <section title="L2TPv3 (tunnel type 1)"><t> | TPv3 over IP</xref>, the length of the sub-TLV is | |||
| When the Tunnel Type of the TLV is <xref target="RFC3931">L2TPv3 over IP</xre | ||||
| f>, the length of the sub-TLV is | ||||
| between 4 and 12 | between 4 and 12 | |||
| octets, depending on the length of the cookie. | octets, depending on the length of the cookie. | |||
| The following is the structure of the Value field of the Encapsulation sub-TL | The structure of the Value field of the Encapsulation sub-TLV is shown in <xr | |||
| V:</t> | ef target="ref-l2tpv3-encapsulation-sub-tlv"/>.</t> | |||
| <figure anchor="ref-l2tpv3-encapsulation-sub-tlv"> | ||||
| <figure title="L2TPv3 Encapsulation Sub-TLV Value Field" anchor="ref-l2tp | <name>L2TPv3 Encapsulation Sub-TLV Value Field</name> | |||
| v3-encapsulation-sub-tlv"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Session ID (4 octets) | | | Session ID (4 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| | Cookie (Variable) | | | Cookie (variable) | | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t><list hangIndent="3" style="hanging"><t> | <dl newline="false" spacing="normal" indent="3"> | |||
| Session ID: a non-zero 4-octet value locally assigned by the | <dt>Session ID:</dt> | |||
| <dd> | ||||
| A non-zero 4-octet value locally assigned by the | ||||
| advertising router that serves as a lookup key for the incoming | advertising router that serves as a lookup key for the incoming | |||
| packet's context.</t> | packet's context.</dd> | |||
| <dt>Cookie:</dt> | ||||
| </list> | <dd> | |||
| </t> | <t> | |||
| An optional, variable-length (encoded in 0 to 8 | ||||
| <t><list hangIndent="3" style="hanging"><t> | ||||
| Cookie: an optional, variable length (encoded in octets -- 0 to 8 | ||||
| octets) value used by L2TPv3 to check the association of a | octets) value used by L2TPv3 to check the association of a | |||
| received data message with the session identified by the Session | received data message with the session identified by the Session | |||
| ID. Generation and usage of the cookie value is as specified in | ID. Generation and usage of the cookie value is as specified in | |||
| <xref target="RFC3931"/>.</t> | <xref target="RFC3931" format="default"/>. </t> | |||
| <t> | ||||
| </list> | The length of the cookie is not encoded explicitly but can be | |||
| </t> | calculated as (sub-TLV length - 4).</t></dd> | |||
| </dl> | ||||
| <t><list hangIndent="3" style="hanging"><t> | </section> | |||
| The length of the cookie is not encoded explicitly, but can be | <section anchor="gre" numbered="true" toc="default"> | |||
| calculated as (sub-TLV length - 4).</t> | <name>GRE (Tunnel Type 2)</name> | |||
| <t> | ||||
| </list> | When the tunnel type of the TLV is <xref target="RFC2784" format="default">GR | |||
| </t> | E</xref>, the length of the sub-TLV is 4 octets. The structure of the Value fiel | |||
| d of the Encapsulation sub-TLV is shown in <xref target="ref-gre-encapsulation-s | ||||
| </section> | ub-tlv"/>.</t> | |||
| <section title="GRE (tunnel type 2)" anchor="gre"><t> | ||||
| When the Tunnel Type of the TLV is <xref target="RFC2784">GRE</xref>, the len | ||||
| gth of the sub-TLV is 4 octets. The | ||||
| following is the structure of the Value field of the Encapsulation sub-TLV:</ | ||||
| t> | ||||
| <figure title="GRE Encapsulation Sub-TLV" anchor="ref-gre-encapsulation-s | <figure anchor="ref-gre-encapsulation-sub-tlv"> | |||
| ub-tlv"><artwork><![CDATA[ | <name>GRE Encapsulation Sub-TLV Value Field</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | GRE Key (4 octets) | | | GRE Key (4 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t><list hangIndent="3" style="hanging"><t> | <dl newline="false" spacing="normal" indent="3"> | |||
| GRE Key: 4-octet field <xref target="RFC2890"/> that is generated by the | <dt>GRE Key:</dt> | |||
| <dd> | ||||
| 4-octet field <xref target="RFC2890" format="default"/> that is generated | ||||
| by the | ||||
| advertising router. Note that the key is optional. Unless a key value is being | advertising router. Note that the key is optional. Unless a key value is being | |||
| advertised, the GRE Encapsulation sub-TLV MUST NOT be present.</t> | advertised, the GRE Encapsulation sub-TLV <bcp14>MUST NOT</bcp14> be prese | |||
| nt.</dd> | ||||
| </list> | </dl> | |||
| </t> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| </section> | <name>MPLS-in-GRE (Tunnel Type 11)</name> | |||
| <t> | ||||
| <section title="MPLS-in-GRE (tunnel type 11)"><t> | When the tunnel type is <xref target="RFC4023" format="default">MPLS-in-GRE</ | |||
| When the Tunnel Type is <xref target="RFC4023">MPLS-in-GRE</xref>, the length | xref>, the length of the sub-TLV is 4 octets. The structure of the Value field o | |||
| of the sub-TLV is 4 octets. The | f the Encapsulation sub-TLV is shown in <xref target="ref-mpls-in-gre-encapsulat | |||
| following is the structure of the Value field of the Encapsulation sub-TLV:</ | ion-sub-tlv"/>.</t> | |||
| t> | <figure anchor="ref-mpls-in-gre-encapsulation-sub-tlv"> | |||
| <name>MPLS-in-GRE Encapsulation Sub-TLV Value Field</name> | ||||
| <figure title="MPLS-in-GRE Encapsulation Sub-TLV Value Field" anchor="ref | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| -mpls-in-gre-encapsulation-sub-tlv"><artwork><![CDATA[ | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | GRE-Key (4 Octets) | | | GRE Key (4 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t><list hangIndent="3" style="hanging"><t> | ||||
| GRE-Key: 4-octet field <xref target="RFC2890"/> that is generated by the | <dl newline="false" spacing="normal" indent="3"> | |||
| <dt>GRE Key:</dt> | ||||
| <dd> | ||||
| 4-octet field <xref target="RFC2890" format="default"/> that is generated | ||||
| by the | ||||
| advertising router. Note that the key is optional. Unless a key | advertising router. Note that the key is optional. Unless a key | |||
| value is being advertised, the MPLS-in-GRE Encapsulation sub-TLV | value is being advertised, the MPLS-in-GRE Encapsulation sub-TLV | |||
| MUST NOT be present.</t> | <bcp14>MUST NOT</bcp14> be present.</dd> | |||
| </dl> | ||||
| </list> | <t> | |||
| </t> | Note that the GRE tunnel type defined in <xref target="gre" format="default"/ | |||
| > can be used | ||||
| <t> | instead of the MPLS-in-GRE tunnel type when it is necessary to | |||
| Note that the GRE Tunnel Type defined in <xref target="gre"/> can be used | ||||
| instead of the MPLS-in-GRE Tunnel Type when it is necessary to | ||||
| encapsulate MPLS in GRE. Including a TLV of the MPLS-in-GRE tunnel | encapsulate MPLS in GRE. Including a TLV of the MPLS-in-GRE tunnel | |||
| type is equivalent to including a TLV of the GRE Tunnel Type that | type is equivalent to including a TLV of the GRE tunnel type that | |||
| also includes a Protocol Type sub-TLV (<xref target="protocol-type"/>) specif | also includes a Protocol Type sub-TLV (<xref target="protocol-type" format="d | |||
| ying MPLS | efault"/>) specifying MPLS | |||
| as the protocol to be encapsulated.</t> | as the protocol to be encapsulated.</t> | |||
| <t> | ||||
| <t> | ||||
| Although the MPLS-in-GRE tunnel type is just a special case of the GRE | Although the MPLS-in-GRE tunnel type is just a special case of the GRE | |||
| tunnel type and thus is not strictly necessary, it is included for reasons | tunnel type and thus is not strictly necessary, it is included for reasons | |||
| of backwards compatibility with, for example, implementations of <xref target ="RFC8365"/>. | of backwards compatibility with, for example, implementations of <xref target ="RFC8365" format="default"/>. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| </section> | <name>Outer Encapsulation Sub-TLVs</name> | |||
| <t> | ||||
| <section title="Outer Encapsulation Sub-TLVs"><t> | The Encapsulation sub-TLV for a particular tunnel type allows one to | |||
| The Encapsulation sub-TLV for a particular Tunnel Type allows one to | ||||
| specify the values that are to be placed in certain fields of the | specify the values that are to be placed in certain fields of the | |||
| encapsulation header for that Tunnel Type. However, some tunnel | encapsulation header for that tunnel type. However, some tunnel | |||
| types require an outer IP encapsulation, and some also require an | types require an outer IP encapsulation, and some also require an | |||
| outer UDP encapsulation. The Encapsulation sub-TLV for a given | outer UDP encapsulation. The Encapsulation sub-TLV for a given | |||
| Tunnel Type does not usually provide a way to specify values for | tunnel type does not usually provide a way to specify values for | |||
| fields of the outer IP and/or UDP encapsulations. If it is necessary | fields of the outer IP and/or UDP encapsulations. If it is necessary | |||
| to specify values for fields of the outer encapsulation, additional | to specify values for fields of the outer encapsulation, additional | |||
| sub-TLVs must be used. This document defines two such sub-TLVs.</t> | sub-TLVs must be used. This document defines two such sub-TLVs.</t> | |||
| <t> | ||||
| <t> | If an outer Encapsulation sub-TLV occurs in a TLV for a tunnel type | |||
| If an outer Encapsulation sub-TLV occurs in a TLV for a Tunnel Type | ||||
| that does not use the corresponding outer encapsulation, the sub-TLV | that does not use the corresponding outer encapsulation, the sub-TLV | |||
| MUST be treated as if it were an unrecognized type of sub-TLV.</t> | <bcp14>MUST</bcp14> be treated as if it were an unrecognized type of sub-TLV. | |||
| </t> | ||||
| <section title="DS Field (type code 7)"><t> | <section numbered="true" toc="default"> | |||
| <name>DS Field (Type Code 7)</name> | ||||
| <t> | ||||
| Most of the tunnel types that can be specified in the Tunnel | Most of the tunnel types that can be specified in the Tunnel | |||
| Encapsulation attribute require an outer IP encapsulation. The | Encapsulation attribute require an outer IP encapsulation. The | |||
| Differentiated Services (DS) Field sub-TLV can be carried in the TLV | Differentiated Services (DS) Field sub-TLV can be carried in the TLV | |||
| of any such Tunnel Type. It specifies the setting of the one-octet | of any such tunnel type. It specifies the setting of the one-octet | |||
| Differentiated Services field in the outer IPv4 or IPv6 encapsulation (see | Differentiated Services field in the outer IPv4 or IPv6 encapsulation (see | |||
| <xref target="RFC2474"/>). Any one-octet value can be transported; the seman | <xref target="RFC2474" format="default"/>). Any one-octet value can be trans | |||
| tics | ported; the semantics | |||
| of the DSCP field is beyond the scope of this document. The Value field is a | of the DSCP (Differentiated Services Code Point) field is beyond the scope of | |||
| lways a single octet.</t> | this document. The Value field is always a single octet.</t> | |||
| <figure anchor="ref-ds-field"> | ||||
| <figure title="DS Field Sub-TLV Value Field" anchor="ref-ds-field"><artwo | <name>DS Field Sub-TLV Value Field</name> | |||
| rk><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| | DS value | | | DS value | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t> | ||||
| <t> | ||||
| Because the interpretation of the DSCP field at the recipient may be | Because the interpretation of the DSCP field at the recipient may be | |||
| different from its interpretation at the originator, an implementation | different from its interpretation at the originator, an implementation | |||
| MAY provide a facility to use policy to filter or modify the DS Field. | <bcp14>MAY</bcp14> provide a facility to use policy to filter or modify the D | |||
| </t> | S field. | |||
| </t> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="UDP Destination Port (type code 8)"><t> | <name>UDP Destination Port (Type Code 8)</name> | |||
| <t> | ||||
| Some of the tunnel types that can be specified in the Tunnel | Some of the tunnel types that can be specified in the Tunnel | |||
| Encapsulation attribute require an outer UDP encapsulation. | Encapsulation attribute require an outer UDP encapsulation. | |||
| Generally there is a standard UDP Destination Port value for a | Generally, there is a standard UDP destination port value for a | |||
| particular Tunnel Type. However, sometimes it is useful to be able | particular tunnel type. However, sometimes it is useful to be able | |||
| to use a non-standard UDP destination port. If a particular tunnel | to use a nonstandard UDP destination port. If a particular tunnel | |||
| type requires an outer UDP encapsulation, and it is desired to use a | type requires an outer UDP encapsulation, and it is desired to use a | |||
| UDP destination port other than the standard one, the port to be used | UDP destination port other than the standard one, the port to be used | |||
| can be specified by including a UDP Destination Port sub-TLV. The | can be specified by including a UDP Destination Port sub-TLV. The | |||
| Value field of this sub-TLV is always a two-octet field, containing | Value field of this sub-TLV is always a two-octet field, containing | |||
| the port value. Any two-octet value other than zero can be transported. | the port value. Any two-octet value other than zero can be transported. | |||
| If the reserved value zero is received, the sub-TLV MUST be treated | If the reserved value zero is received, the sub-TLV <bcp14>MUST</bcp14> be tr | |||
| as malformed according to the rules of <xref target="validation-and-error"/>. | eated | |||
| </t> | as malformed, according to the rules of <xref target="validation-and-error" f | |||
| ormat="default"/>.</t> | ||||
| <figure title="UDP Destination Port Sub-TLV Value Field" anchor="ref-udp- | <figure anchor="ref-udp-dest-port"> | |||
| dest-port"><artwork><![CDATA[ | <name>UDP Destination Port Sub-TLV Value Field</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | UDP Port (2 Octets) | | | UDP Port (2 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| </section> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| </section> | <name>Sub-TLVs for Aiding Tunnel Selection</name> | |||
| <section anchor="protocol-type" numbered="true" toc="default"> | ||||
| <section title="Sub-TLVs for Aiding Tunnel Selection"> | <name>Protocol Type Sub-TLV (Type Code 2)</name> | |||
| <section title="Protocol Type Sub-TLV (type code 2)" anchor="protocol-typ | <t> | |||
| e"><t> | The Protocol Type sub-TLV <bcp14>MAY</bcp14> be included in a given TLV to in | |||
| The Protocol Type sub-TLV MAY be included in a given TLV to indicate | dicate | |||
| the type of the payload packets that are allowed to be encapsulated with the | the type of the payload packets that are allowed to be encapsulated with the | |||
| tunnel parameters that are being signaled in the TLV. Packets with other | tunnel parameters that are being signaled in the TLV. Packets with other | |||
| payload types MUST NOT be encapsulated in the relevant tunnel. The Value | payload types <bcp14>MUST NOT</bcp14> be encapsulated in the relevant tunnel. | |||
| field of the sub-TLV contains a 2-octet value from IANA's "ETHER TYPES" | The Value | |||
| registry <xref target="Ethertypes"/>. If the reserved value 0xFFFF is | field of the sub-TLV contains a 2-octet value from IANA's | |||
| received, the sub-TLV MUST be treated | "ETHER TYPES" | |||
| as malformed according to the rules of <xref target="validation-and-error"/>. | registry <xref target="IANA-ETHERTYPES" />. If the reserved value 0xFFFF is | |||
| </t> | received, the sub-TLV <bcp14>MUST</bcp14> be treated | |||
| as malformed according to the rules of <xref target="validation-and-error" fo | ||||
| <figure title="Protocol Type Sub-TLV Value Field" anchor="ref-proto-type"><a | rmat="default"/>.</t> | |||
| rtwork><![CDATA[ | <figure anchor="ref-proto-type"> | |||
| <name>Protocol Type Sub-TLV Value Field</name> | ||||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Ethertype (2 Octets) | | | Ethertype (2 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t> | ||||
| <t> | ||||
| For example, if there are three L2TPv3 sessions, one carrying | For example, if there are three L2TPv3 sessions, one carrying | |||
| IPv4 packets, one carrying IPv6 packets, and one carrying MPLS | IPv4 packets, one carrying IPv6 packets, and one carrying MPLS | |||
| packets, the egress router will include three TLVs of L2TPv3 | packets, the egress router will include three TLVs of L2TPv3 | |||
| encapsulation type, each specifying a different Session ID and a | encapsulation type, each specifying a different Session ID and a | |||
| different payload type. The Protocol Type sub-TLV for these will be | different payload type. The Protocol Type sub-TLV for these will be | |||
| IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and | IPv4 (protocol type = 0x0800), IPv6 (protocol type = 0x86dd), and | |||
| MPLS (protocol type = 0x8847), respectively. This informs the | MPLS (protocol type = 0x8847), respectively. This informs the | |||
| ingress routers of the appropriate encapsulation information to use | ingress routers of the appropriate encapsulation information to use | |||
| with each of the given protocol types. Insertion of the specified | with each of the given protocol types. Insertion of the specified | |||
| Session ID at the ingress routers allows the egress to process the | Session ID at the ingress routers allows the egress to process the | |||
| incoming packets correctly, according to their protocol type.</t> | incoming packets correctly, according to their protocol type.</t> | |||
| <t> | ||||
| <t> | Note that for tunnel types whose names are of the form "X-in-Y" | |||
| Note that for tunnel types whose names are of the form "X-in-Y", | (for example, MPLS-in-GRE), only packets of the specified payload type "X" | |||
| for example, "MPLS-in-GRE", only packets of the specified payload type "X" | ||||
| are to be carried through the tunnel of type "Y". This is the | are to be carried through the tunnel of type "Y". This is the | |||
| equivalent of specifying a Tunnel Type "Y" and including in its TLV a | equivalent of specifying a tunnel type "Y" and including in its TLV a | |||
| Protocol Type sub-TLV (see <xref target="protocol-type"/>) specifying | Protocol Type sub-TLV (see <xref target="protocol-type" format="default"/>) s | |||
| protocol "X". If the Tunnel Type is "X-in-Y", it is unnecessary, | pecifying | |||
| protocol "X". If the tunnel type is "X-in-Y", it is unnecessary, | ||||
| though harmless, to explicitly include a Protocol Type sub-TLV | though harmless, to explicitly include a Protocol Type sub-TLV | |||
| specifying "X". Also, for "X-in-Y" type tunnels, a Protocol Type | specifying "X". Also, for "X-in-Y" type tunnels, a Protocol Type | |||
| sub-TLV specifying anything other than "X" MUST be ignored; this is | sub-TLV specifying anything other than "X" <bcp14>MUST</bcp14> be ignored; th | |||
| discussed further in <xref target="validation-and-error"/>. | is is | |||
| </t> | discussed further in <xref target="validation-and-error" format="default"/>. | |||
| </t> | ||||
| </section> | </section> | |||
| <section anchor="color" numbered="true" toc="default"> | ||||
| <section title="Color Sub-TLV (type code 4)" anchor="color"><t> | <name>Color Sub-TLV (Type Code 4)</name> | |||
| The Color sub-TLV MAY be used as a way to "color" the | <t> | |||
| The Color sub-TLV <bcp14>MAY</bcp14> be used as a way to "color" the | ||||
| corresponding Tunnel TLV. The Value field of the sub-TLV is eight | corresponding Tunnel TLV. The Value field of the sub-TLV is eight | |||
| octets long, and consists of a Color Extended Community, as defined | octets long and consists of a Color Extended Community, as defined | |||
| in <xref target="color-extcomm"/>. For the use of this sub-TLV and Extended | in <xref target="color-extcomm" format="default"/>. For the use of this sub- | |||
| Community, | TLV and extended community, | |||
| please see <xref target="recursive-nh-resolution"/>.</t> | please see <xref target="recursive-nh-resolution" format="default"/>.</t> | |||
| <t>The format of the Value field is depicted in | ||||
| <t>The format of the Value field is depicted in | <xref target="ref-color-extended-community" format="default"/>.</t> | |||
| <xref target="ref-color-extended-community"/>.</t> | <t> | |||
| <t> | ||||
| If the Length field of a Color sub-TLV has a value other than 8, or the first two | If the Length field of a Color sub-TLV has a value other than 8, or the first two | |||
| octets of its Value field are not 0x030b, the sub-TLV MUST be | octets of its Value field are not 0x030b, the sub-TLV <bcp14>MUST</bcp14> be | |||
| treated as if it were an unrecognized sub-TLV (see <xref target="validation-a | treated as if it were an unrecognized sub-TLV (see <xref target="validation-a | |||
| nd-error"/>).</t> | nd-error" format="default"/>).</t> | |||
| </section> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| </section> | <name>Embedded Label Handling Sub-TLV (Type Code 9)</name> | |||
| <t> | ||||
| <section title="Embedded Label Handling Sub-TLV (type code 9)"><t> | ||||
| Certain BGP address families (corresponding to particular AFI/SAFI | Certain BGP address families (corresponding to particular AFI/SAFI | |||
| pairs, for example, 1/4, 2/4, 1/128, 2/128) have MPLS labels embedded in | pairs, for example, 1/4, 2/4, 1/128, 2/128) have MPLS labels embedded in | |||
| their NLRIs. The term "embedded label" is used to refer to the | their NLRIs. The term "embedded label" is used to refer to the | |||
| MPLS label that is embedded in an NLRI, and the term "labeled address family" | MPLS label that is embedded in an NLRI, and the term "labeled address family" | |||
| to refer to any AFI/SAFI that has embedded labels.</t> | to refer to any AFI/SAFI that has embedded labels.</t> | |||
| <t> | ||||
| <t> | ||||
| Some of the tunnel types (for example, VXLAN and NVGRE) that can | Some of the tunnel types (for example, VXLAN and NVGRE) that can | |||
| be specified in the Tunnel Encapsulation attribute have an | be specified in the Tunnel Encapsulation attribute have an | |||
| encapsulation header containing a "Virtual Network" identifier of some | encapsulation header containing a virtual network identifier of some | |||
| sort. The Encapsulation sub-TLVs for these tunnel types may | sort. The Encapsulation sub-TLVs for these tunnel types may | |||
| optionally specify a value for the virtual network identifier.</t> | optionally specify a value for the virtual network identifier.</t> | |||
| <t> | ||||
| <t> | ||||
| Suppose a Tunnel Encapsulation attribute is attached to an UPDATE of | Suppose a Tunnel Encapsulation attribute is attached to an UPDATE of | |||
| a labeled address family, and it is decided to use a particular | a labeled address family, and it is decided to use a particular | |||
| tunnel (specified in one of the attribute's TLVs) for transmitting a | tunnel (specified in one of the attribute's TLVs) for transmitting a | |||
| packet that is being forwarded according to that UPDATE. When | packet that is being forwarded according to that UPDATE. When | |||
| forming the encapsulation header for that packet, different | forming the encapsulation header for that packet, different | |||
| deployment scenarios require different handling of the embedded label | deployment scenarios require different handling of the embedded label | |||
| and/or the virtual network identifier. The Embedded Label Handling | and/or the virtual network identifier. The Embedded Label Handling | |||
| sub-TLV can be used to control the placement of the embedded label | sub-TLV can be used to control the placement of the embedded label | |||
| and/or the virtual network identifier in the encapsulation.</t> | and/or the virtual network identifier in the encapsulation.</t> | |||
| <t> | ||||
| <t> | ||||
| The Embedded Label Handling sub-TLV may be included in any TLV of the | The Embedded Label Handling sub-TLV may be included in any TLV of the | |||
| Tunnel Encapsulation attribute. If the Tunnel Encapsulation | Tunnel Encapsulation attribute. If the Tunnel Encapsulation | |||
| attribute is attached to an UPDATE of a non-labeled address family, | attribute is attached to an UPDATE of a non-labeled address family, | |||
| then the sub-TLV MUST be disregarded. If the sub-TLV is contained in a | then the sub-TLV <bcp14>MUST</bcp14> be disregarded. If the sub-TLV is conta | |||
| TLV whose Tunnel Type does not have a virtual network identifier in | ined in a | |||
| its encapsulation header, the sub-TLV MUST be disregarded. In | TLV whose tunnel type does not have a virtual network identifier in | |||
| those cases where the sub-TLV is ignored, it MUST NOT be | its encapsulation header, the sub-TLV <bcp14>MUST</bcp14> be disregarded. In | |||
| those cases where the sub-TLV is ignored, it <bcp14>MUST NOT</bcp14> be | ||||
| stripped from the TLV before the route is propagated.</t> | stripped from the TLV before the route is propagated.</t> | |||
| <t> | ||||
| <t> | ||||
| The sub-TLV's Length field always contains the value 1, and its Value | The sub-TLV's Length field always contains the value 1, and its Value | |||
| field consists of a single octet. The following values are defined:</t> | field consists of a single octet. The following values are defined:</t> | |||
| <dl spacing="normal" indent="4"> | ||||
| <dt>1:</dt><dd>The payload will be an MPLS packet with the embedded la | ||||
| bel at the top of its label stack.</dd> | ||||
| <dt>2:</dt> | ||||
| <dd><t>The embedded label is not carried in the payload but is either c | ||||
| arried | ||||
| in the Virtual Network Identifier field of the | ||||
| encapsulation header or else ignored entirely.</t> | ||||
| </dd> | ||||
| </dl> | ||||
| <t>If any value other than 1 or 2 is carried, the sub-TLV <bcp14>MUST</bc | ||||
| p14> be | ||||
| considered malformed, according to the procedures of <xref target="valida | ||||
| tion-and-error" format="default"/>.</t> | ||||
| <t><list style="hanging" hangIndent="3"><t hangText="1: The payload will | <t> | |||
| be an MPLS packet with the embedded label at"> | Please see <xref target="use-of-vni" format="default"/> for the details of ho | |||
| <vspace blankLines="0"/> | w this sub-TLV is used when | |||
| the top of its label stack. | ||||
| </t> | ||||
| <t hangText="2: The embedded label is not carried in the payload, but is | ||||
| carried"> | ||||
| <vspace blankLines="0"/> | ||||
| either in the virtual network identifier field of the | ||||
| encapsulation header, or else is ignored entirely. | ||||
| </t> | ||||
| <t>If any value other than 1 or 2 is carried, the sub-TLV MUST be | ||||
| considered malformed, according to the procedures of <xref target="valida | ||||
| tion-and-error"/>. | ||||
| </t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| Please see <xref target="use-of-vni"/> for the details of how this sub-TLV is | ||||
| used when | ||||
| it is carried by an UPDATE of a labeled address family.</t> | it is carried by an UPDATE of a labeled address family.</t> | |||
| <figure anchor="ref-embedded-label"> | ||||
| <figure title="Embedded Label Handling Sub-TLV Value Field" anchor="ref-e | <name>Embedded Label Handling Sub-TLV Value Field</name> | |||
| mbedded-label"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 0 1 2 3 4 5 6 7 | 0 1 2 3 4 5 6 7 | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| | 1 or 2 | | | 1 or 2 | | |||
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| </section> | ||||
| </section> | <section anchor="label-stack" numbered="true" toc="default"> | |||
| <name>MPLS Label Stack Sub-TLV (Type Code 10)</name> | ||||
| <section title="MPLS Label Stack Sub-TLV (type code 10)" anchor="label-st | <t> | |||
| ack"><t> | This sub-TLV allows an MPLS label stack <xref target="RFC3032" format="defaul | |||
| This sub-TLV allows an MPLS label stack (<xref target="RFC3032"/>) to be asso | t"/> to be associated | |||
| ciated | ||||
| with a particular tunnel.</t> | with a particular tunnel.</t> | |||
| <t> | <t> | |||
| The length of the sub-TLV is a multiple of 4 octets and the Value field of th | The length of the sub-TLV is a multiple of 4 octets, and the Value field of t | |||
| is sub-TLV | his sub-TLV | |||
| is a sequence of MPLS label stack entries. The first entry in the sequence i s the | is a sequence of MPLS label stack entries. The first entry in the sequence i s the | |||
| "topmost" label, the final entry in the sequence is the "bottommost" label. | "topmost" label, and the final entry in the sequence is the "bottommost" labe | |||
| When this | l. When this | |||
| label stack is pushed onto a packet, this ordering MUST be preserved.</t> | label stack is pushed onto a packet, this ordering <bcp14>MUST</bcp14> be pre | |||
| served.</t> | ||||
| <t><list style="hanging" hangIndent="-1"><t hangText="Each label stack en | <dl newline="true" spacing="normal"> | |||
| try has the following format:"> | <dt>Each label stack entry has the format shown in <xref target="ref-m | |||
| <vspace blankLines="0"/> | pls-label-stack-sub-tlv"/>.</dt> | |||
| </t> | <dd/> | |||
| </dl> | ||||
| </list> | <figure anchor="ref-mpls-label-stack-sub-tlv"> | |||
| </t> | <name>MPLS Label Stack Sub-TLV Value Field</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| <figure title="MPLS Label Stack Sub-TLV Value Field" anchor="ref-mpls-lab | ||||
| el-stack-sub-tlv"><artwork><![CDATA[ | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Label | TC |S| TTL | | | Label | TC |S| TTL | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t> | <t> | |||
| The fields are as defined in <xref target="RFC3032"/>, <xref target="RFC5462" | The fields are as defined in <xref target="RFC3032" format="default"/> and <x | |||
| />. | ref target="RFC5462" format="default"/>. | |||
| </t> | </t> | |||
| <t> | <t> | |||
| If a packet is to be sent through the tunnel identified in a | If a packet is to be sent through the tunnel identified in a | |||
| particular TLV, and if that TLV contains an MPLS Label Stack sub-TLV, | particular TLV, and if that TLV contains an MPLS Label Stack sub-TLV, | |||
| then the label stack appearing in the sub-TLV MUST be pushed onto the | then the label stack appearing in the sub-TLV <bcp14>MUST</bcp14> be pushed o nto the | |||
| packet before any | packet before any | |||
| other labels are pushed onto the packet. (See <xref target="usage"/> | other labels are pushed onto the packet. (See <xref target="usage" format="de fault"/> | |||
| for further discussion.)</t> | for further discussion.)</t> | |||
| <t> | ||||
| <t> | ||||
| In particular, if the Tunnel Encapsulation attribute is attached to a | In particular, if the Tunnel Encapsulation attribute is attached to a | |||
| BGP UPDATE of a labeled address family, the contents of the MPLS | BGP UPDATE of a labeled address family, the contents of the MPLS | |||
| Label Stack sub-TLV MUST be pushed onto the packet before the label | Label Stack sub-TLV <bcp14>MUST</bcp14> be pushed onto the packet before the label | |||
| embedded in the NLRI is pushed onto the packet.</t> | embedded in the NLRI is pushed onto the packet.</t> | |||
| <t> | ||||
| <t> | ||||
| If the MPLS Label Stack sub-TLV is included in a TLV identifying a | If the MPLS Label Stack sub-TLV is included in a TLV identifying a | |||
| Tunnel Type that uses virtual network identifiers (see <xref target="use-of-v | tunnel type that uses virtual network identifiers (see <xref target="use-of-v | |||
| ni"/>), | ni" format="default"/>), | |||
| the contents of the MPLS Label Stack sub-TLV MUST be pushed onto the | the contents of the MPLS Label Stack sub-TLV <bcp14>MUST</bcp14> be pushed on | |||
| packet before the procedures of <xref target="use-of-vni"/> are applied.</t> | to the | |||
| packet before the procedures of <xref target="use-of-vni" format="default"/> | ||||
| <t> | are applied.</t> | |||
| The number of label stack entries in the sub-TLV MUST be determined | <t> | |||
| from the sub-TLV length field. Thus it is not necessary to set the S | The number of label stack entries in the sub-TLV <bcp14>MUST</bcp14> be deter | |||
| mined | ||||
| from the Sub-TLV Length field. Thus, it is not necessary to set the S | ||||
| bit in any of the label stack entries of the sub-TLV, and the setting | bit in any of the label stack entries of the sub-TLV, and the setting | |||
| of the S bit is ignored when parsing the sub-TLV. When the label | of the S bit is ignored when parsing the sub-TLV. When the label stack entri | |||
| stack entries are pushed onto a packet that already has a label | es are pushed onto a packet that already has a label | |||
| stack, the S bits of all the entries being pushed MUST be cleared. When the | stack, the S bits of all the entries being pushed <bcp14>MUST</bcp14> be clea | |||
| label | red. When the label stack entries are pushed onto a packet that does not alread | |||
| stack entries are pushed onto a packet that does not already have a | y have a | |||
| label stack, the S bit of the bottommost label stack entry MUST be | label stack, the S bit of the bottommost label stack entry <bcp14>MUST</bcp14 | |||
| set, and the S bit of all the other label stack entries MUST be | > be | |||
| set, and the S bit of all the other label stack entries <bcp14>MUST</bcp14> b | ||||
| e | ||||
| cleared.</t> | cleared.</t> | |||
| <t> | ||||
| <t> | The Traffic Class (TC) field <xref target="RFC3270" format="default"/><xref t | |||
| The TC (Traffic Class) field (<xref target="RFC3270"/>, <xref | arget="RFC5129" format="default"/> of each label stack entry <bcp14>SHOULD</bcp1 | |||
| target="RFC5129"/>) of each label stack entry SHOULD be set to 0, | 4> be set to 0, | |||
| unless changed by policy at the originator of the sub-TLV. When | unless changed by policy at the originator of the sub-TLV. When | |||
| pushing the label stack onto a packet, the TC of each label stack | pushing the label stack onto a packet, the TC of each label stack | |||
| SHOULD be preserved, unless local policy results in a modification. | <bcp14>SHOULD</bcp14> be preserved, unless local policy results in a modifica | |||
| </t> | tion. | |||
| </t> | ||||
| <t> | <t> | |||
| The TTL (Time to Live) field of each label stack entry SHOULD be set | The TTL (Time to Live) field of each label stack entry <bcp14>SHOULD</bcp14> | |||
| be set | ||||
| to 255, unless changed to some other non-zero value by policy at the | to 255, unless changed to some other non-zero value by policy at the | |||
| originator of the sub-TLV. When pushing the label stack onto a | originator of the sub-TLV. When pushing the label stack onto a | |||
| packet, the TTL of each label stack entry SHOULD be preserved, unless | packet, the TTL of each label stack entry <bcp14>SHOULD</bcp14> be preserved, unless | |||
| local policy results in a modification to some other non-zero value. | local policy results in a modification to some other non-zero value. | |||
| If any label stack entry in the sub-TLV has a TTL value of zero, the | If any label stack entry in the sub-TLV has a TTL value of zero, the | |||
| router that is pushing the stack on a packet MUST change the value to | router that is pushing the stack onto a packet <bcp14>MUST</bcp14> change the value to | |||
| a non-zero value, either 255 or some other value as determined by | a non-zero value, either 255 or some other value as determined by | |||
| policy as discussed above.</t> | policy as discussed above.</t> | |||
| <t> | ||||
| <t> | ||||
| Note that this sub-TLV can appear within a TLV identifying any | Note that this sub-TLV can appear within a TLV identifying any | |||
| type of tunnel, not just within a TLV identifying an MPLS tunnel. | type of tunnel, not just within a TLV identifying an MPLS tunnel. | |||
| However, if this sub-TLV appears within a TLV identifying an MPLS | However, if this sub-TLV appears within a TLV identifying an MPLS | |||
| tunnel (or an MPLS-in-X tunnel), this sub-TLV plays the same role | tunnel (or an MPLS-in-X tunnel), this sub-TLV plays the same role | |||
| that would be played by an MPLS Encapsulation sub-TLV. Therefore, an | that would be played by an MPLS Encapsulation sub-TLV. Therefore, an | |||
| MPLS Encapsulation sub-TLV is not defined.</t> | MPLS Encapsulation sub-TLV is not defined.</t> | |||
| <t> | ||||
| <t> | ||||
| Although this specification does not supply detailed instructions | Although this specification does not supply detailed instructions | |||
| for validating the received label stack, implementations might | for validating the received label stack, implementations might | |||
| impose restrictions on the label stack they can support. If an | impose restrictions on the label stack they can support. If an | |||
| invalid or unsupported label stack is received, <!-- the sub-TLV MAY | invalid or unsupported label stack is received, the tunnel <bcp14>MAY</bcp14> | |||
| be treated as malformed according to the procedures of | be treated as not feasible, according to the | |||
| <xref target="validation-and-error"/>, | procedures of <xref target="usage" format="default"/>. | |||
| or --> the tunnel MAY be treated as not feasible according to the | </t> | |||
| procedures of <xref target="usage"/>. | </section> | |||
| </t> | <section anchor="prefix-sid" numbered="true" toc="default"> | |||
| <name>Prefix-SID Sub-TLV (Type Code 11)</name> | ||||
| </section> | <t> | |||
| <xref target="RFC8669" format="default"/> defines a BGP path | ||||
| <section title="Prefix-SID Sub-TLV (type code 11)" anchor="prefix-sid"><t | attribute known as the "BGP Prefix-SID attribute". This attribute is | |||
| > | ||||
| <xref target="RFC8669"/> defines a BGP Path | ||||
| attribute known as the "Prefix-SID Attribute". This attribute is | ||||
| defined to contain a sequence of one or more TLVs, where each TLV is | defined to contain a sequence of one or more TLVs, where each TLV is | |||
| either a "Label-Index" TLV, or an "Originator SRGB (Source Routing | either a Label-Index TLV or an Originator SRGB (Source Routing | |||
| Global Block)" TLV.</t> | Global Block) TLV.</t> | |||
| <t> | ||||
| <t> | This document defines a Prefix-SID (Prefix Segment Identifier) sub-TLV. | |||
| This document defines a Prefix-SID sub-TLV. | ||||
| The Value field of the Prefix-SID sub-TLV can be set to any permitted | The Value field of the Prefix-SID sub-TLV can be set to any permitted | |||
| value of the Value field of a BGP Prefix-SID attribute <xref | value of the Value field of a BGP Prefix-SID attribute <xref target="RFC8669" | |||
| target="RFC8669"/>. | format="default"/>. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | <xref target="RFC8669" format="default"/> only defines behavior when the BGP | |||
| <xref target="RFC8669"/> only defines behavior when the Prefix-SID | Prefix-SID | |||
| Attribute is attached to routes of type IPv4/IPv6 Labeled Unicast | attribute is attached to routes of type IPv4/IPv6 Labeled Unicast | |||
| (<xref target="RFC4760"/>, <xref target="RFC8277"/>), and it only | <xref target="RFC4760" format="default"/><xref target="RFC8277" format="defau | |||
| defines values of the Prefix-SID Attribute for those cases. Therefore, | lt"/>, and it only | |||
| similar limitations exist for the Prefix-SID sub-TLV: it SHOULD only | defines values of the BGP Prefix-SID attribute for those cases. Therefore, | |||
| similar limitations exist for the Prefix-SID sub-TLV: it <bcp14>SHOULD</bcp14 | ||||
| > only | ||||
| be included in a BGP UPDATE message for one of the address families | be included in a BGP UPDATE message for one of the address families | |||
| defined in <xref target="RFC8669"/>. If included in a BGP UPDATE for | for which <xref target="RFC8669" format="default"/> has a defined behavior, n | |||
| any other address family then it MUST be ignored. | amely BGP IPv4/IPv6 Labeled Unicast <xref target="RFC4760" format="default"/> <x | |||
| </t> | ref target="RFC8277" format="default"/>. If included in a BGP UPDATE for | |||
| any other address family, it <bcp14>MUST</bcp14> be ignored. | ||||
| <t> | </t> | |||
| <t> | ||||
| The Prefix-SID sub-TLV can occur in a TLV identifying any type of | The Prefix-SID sub-TLV can occur in a TLV identifying any type of | |||
| tunnel. If an Originator SRGB is specified in the sub-TLV, that SRGB | tunnel. If an Originator SRGB is specified in the sub-TLV, that SRGB | |||
| MUST be interpreted to be the SRGB used by the tunnel's | <bcp14>MUST</bcp14> be interpreted to be the SRGB used by the tunnel's | |||
| egress endpoint. The Label-Index, if present, is the Segment Routing SID | egress endpoint. The Label-Index, if present, is the Segment Routing SID | |||
| that the tunnel's egress endpoint uses to represent the prefix | that the tunnel's egress endpoint uses to represent the prefix | |||
| appearing in the NLRI field of the BGP UPDATE to which the Tunnel | appearing in the NLRI field of the BGP UPDATE to which the Tunnel | |||
| Encapsulation attribute is attached.</t> | Encapsulation attribute is attached.</t> | |||
| <t> | ||||
| <t> | ||||
| If a Label-Index is present in the Prefix-SID sub-TLV, then when a | If a Label-Index is present in the Prefix-SID sub-TLV, then when a | |||
| packet is sent through the tunnel identified by the TLV, if that tunnel | packet is sent through the tunnel identified by the TLV, if that tunnel | |||
| is from a labeled address family, the | is from a labeled address family, the | |||
| corresponding MPLS label MUST be pushed on the packet's label stack. | corresponding MPLS label <bcp14>MUST</bcp14> be pushed on the packet's label stack. | |||
| The corresponding MPLS label is computed from the Label-Index value | The corresponding MPLS label is computed from the Label-Index value | |||
| and the SRGB of the route's originator, as specified in section 4.1 | and the SRGB of the route's originator, as specified in | |||
| of <xref target="RFC8669"/>.</t> | <xref target="RFC8669" sectionFormat="of" section="4.1"/>.</t> | |||
| <t> | ||||
| <t> | ||||
| The corresponding MPLS label is pushed on after the processing of the | The corresponding MPLS label is pushed on after the processing of the | |||
| MPLS Label Stack sub-TLV, if present, as specified in <xref target="label-sta | MPLS Label Stack sub-TLV, if present, as specified in <xref target="label-sta | |||
| ck"/>. | ck" format="default"/>. | |||
| It is pushed on before any other labels (for example, a label embedded in | It is pushed on before any other labels (for example, a label embedded in an | |||
| UPDATE's NLRI, or a label determined by the procedures of <xref target="use-o | UPDATE's NLRI or a label determined by the procedures of <xref target="use-of | |||
| f-vni"/>), | -vni" format="default"/>) are pushed on the stack.</t> | |||
| are pushed on the stack.</t> | <t> | |||
| <t> | ||||
| The Prefix-SID sub-TLV has slightly different semantics than the | The Prefix-SID sub-TLV has slightly different semantics than the | |||
| Prefix-SID attribute. When the Prefix-SID attribute is attached to a | BGP Prefix-SID attribute. When the BGP Prefix-SID attribute is attached to a | |||
| given route, the BGP speaker that originally attached the attribute | given route, the BGP speaker that originally attached the attribute | |||
| is expected to be in the same Segment Routing domain as the BGP | is expected to be in the same Segment Routing domain as the BGP | |||
| speakers who receive the route with the attached attribute. The | speakers who receive the route with the attached attribute. The | |||
| Label-Index tells the receiving BGP speakers what the prefix-SID is | Label-Index tells the receiving BGP speakers what the Prefix-SID is | |||
| for the advertised prefix in that Segment Routing domain. When the | for the advertised prefix in that Segment Routing domain. When the | |||
| Prefix-SID sub-TLV is used, there is no implication that the | Prefix-SID sub-TLV is used, there is no implication that the | |||
| prefix-SID for the advertised prefix is the same in the Segment | Prefix-SID for the advertised prefix is the same in the Segment | |||
| Routing domains of the BGP speaker that originated the sub-TLV and | Routing domains of the BGP speaker that originated the sub-TLV and | |||
| the BGP speaker that received it.</t> | the BGP speaker that received it.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| </section> | <name>Extended Communities Related to the Tunnel Encapsulation Attribute</ | |||
| name> | ||||
| <section title="Extended Communities Related to the Tunnel Encapsulation | <section anchor="encapsulation-extcomm" numbered="true" toc="default"> | |||
| Attribute"> | <name>Encapsulation Extended Community</name> | |||
| <t> | ||||
| <section title="Encapsulation Extended Community" anchor="encapsulation-e | ||||
| xtcomm"> | ||||
| <t> | ||||
| The Encapsulation Extended Community is a Transitive Opaque Extended | The Encapsulation Extended Community is a Transitive Opaque Extended | |||
| Community. </t> | Community. </t> | |||
| <t> The Encapsulation Extended Community encoding is as shown in <xref t | ||||
| <t> The Encapsulation Extended Community encoding is as shown below </t> | arget="ref-Encapsulation-extended-community"/>.</t> | |||
| <figure anchor="ref-Encapsulation-extended-community"> | ||||
| <figure title="Encapsulation Extended Community" anchor="ref-Encapsula | <name>Encapsulation Extended Community</name> | |||
| tion-extended-community"><artwork><![CDATA[ | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 0x03 (1 Octet)| 0x0c (1 Octet)| Reserved (2 Octets) | | | 0x03 (1 octet)| 0x0c (1 octet)| Reserved (2 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Reserved (2 Octets) | Tunnel Type (2 Octets) | | | Reserved (2 octets) | Tunnel Type (2 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t>The value of the high-order octet of the extended type field is 0x03, | <t>The value of the high-order octet of the extended Type field is 0x03, | |||
| which indicates it's transitive. The value of the low-order octet of | which indicates it's transitive. The value of the low-order octet of | |||
| the extended type field is 0x0c.</t> | the extended Type field is 0x0c.</t> | |||
| <t>The last two octets of the Value field encode a tunnel type.</t> | ||||
| <t>The last two octets of the Value field encode a tunnel type.</t> | ||||
| <t>This Extended Community may be attached to a route of any | <t>This extended community may be attached to a route of any | |||
| AFI/SAFI to which the Tunnel Encapsulation attribute may be attached. | AFI/SAFI to which the Tunnel Encapsulation attribute may be attached. | |||
| Each such Extended Community identifies a particular Tunnel Type, its | Each such extended community identifies a particular tunnel type; its | |||
| semantics are the same as semantics of a Tunnel Encapsulation attribute | semantics are the same as semantics of a Tunnel TLV in a Tunnel Encapsulation | |||
| Tunnel TLV for which the following three conditions all hold:</t> | attribute, | |||
| for which the following three conditions all hold:</t> | ||||
| <t><list style="numbers"><t>it identifies the same Tunnel Type,</t> | <ol spacing="normal" type="1"> | |||
| <li>It identifies the same tunnel type.</li> | ||||
| <t>it has a Tunnel Egress Endpoint sub-TLV for which one of the following | <li> | |||
| two conditions holds:<list style="letters"><t>its "Address Family" subfie | <t>It has a Tunnel Egress Endpoint sub-TLV for which one of the foll | |||
| ld contains zero, or</t> | owing | |||
| two conditions holds:</t> | ||||
| <t>its "Address" subfield contains the address of the next hop field of | <ol spacing="normal" type="a"> | |||
| the route to which the Tunnel Encapsulation attribute is attached</t> | <li>Its Address Family subfield contains zero, or</li> | |||
| <li>Its Address subfield contains the address of the Next Hop fiel | ||||
| </list> | d of | |||
| </t> | the route to which the Tunnel Encapsulation attribute is attached.</l | |||
| i> | ||||
| <t>it has no other sub-TLVs.</t> | </ol> | |||
| </li> | ||||
| </list> | <li>It has no other sub-TLVs.</li> | |||
| </t> | </ol> | |||
| <t> | ||||
| <t> | ||||
| Such a Tunnel TLV is called a "barebones" Tunnel TLV.</t> | Such a Tunnel TLV is called a "barebones" Tunnel TLV.</t> | |||
| <t> | ||||
| <t> | The Encapsulation Extended Community was first defined in <xref target="RFC55 | |||
| The Encapsulation Extended Community was first defined in <xref target="RFC55 | 12" format="default"/>. | |||
| 12"/>. | ||||
| While it provides only a small subset of the functionality of the | While it provides only a small subset of the functionality of the | |||
| Tunnel Encapsulation attribute, it is used in a number of deployed | Tunnel Encapsulation attribute, it is used in a number of deployed | |||
| applications, and is still needed for backwards compatibility. | applications and is still needed for backwards compatibility. | |||
| In situations where a tunnel could be encoded using | In situations where a tunnel could be encoded using | |||
| a barebones TLV, it MUST be encoded using the corresponding | a barebones TLV, it <bcp14>MUST</bcp14> be encoded using the corresponding | |||
| Encapsulation Extended Community. Notwithstanding, an implementation | Encapsulation Extended Community. Notwithstanding, an implementation | |||
| MUST be prepared to process a tunnel received encoded as a barebones | <bcp14>MUST</bcp14> be prepared to process a tunnel received encoded as a bar ebones | |||
| TLV.</t> | TLV.</t> | |||
| <t> | ||||
| <t> | Note that for tunnel types of the form "X-in-Y" (for example, MPLS-in-GRE), | |||
| Note that for tunnel types of the form "X-in-Y", for example, MPLS-in-GRE, | ||||
| the Encapsulation Extended Community implies that only packets of the | the Encapsulation Extended Community implies that only packets of the | |||
| specified payload type "X" are to be carried through the tunnel of | specified payload type "X" are to be carried through the tunnel of | |||
| type "Y". Packets with other payload types MUST NOT be carried through | type "Y". Packets with other payload types <bcp14>MUST NOT</bcp14> be carried | |||
| such tunnels. See also <xref target="encaps-attr"/>.</t> | through | |||
| such tunnels. See also <xref target="encaps-attr" format="default"/>.</t> | ||||
| <t> | <t> | |||
| In the remainder of this specification, when a route is referred to as | In the remainder of this specification, when a route is referred to as | |||
| containing a Tunnel Encapsulation attribute with a TLV identifying a | containing a Tunnel Encapsulation attribute with a TLV identifying a | |||
| particular Tunnel Type, it implicitly includes the case where | particular tunnel type, it implicitly includes the case where | |||
| the route contains a Tunnel Encapsulation Extended Community | the route contains an Encapsulation Extended Community | |||
| identifying that Tunnel Type.</t> | identifying that tunnel type.</t> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Router's MAC Extended Community</name> | ||||
| <section title="Router's MAC Extended Community"><t> | <t> | |||
| <xref target="I-D.ietf-bess-evpn-inter-subnet-forwarding"/> defines a Router' | <xref target="I-D.ietf-bess-evpn-inter-subnet-forwarding" format="default"/> | |||
| s MAC | defines a router's MAC | |||
| Extended Community. This Extended Community, as its name implies, | Extended Community. This extended community, as its name implies, | |||
| carries the MAC address of the advertising router. Since the VXLAN | carries the MAC address of the advertising router. Since the VXLAN | |||
| and NVGRE Encapsulation Sub-TLVs can also optionally carry a router's | and NVGRE Encapsulation sub-TLVs can also optionally carry a router's | |||
| MAC, a conflict can arise if both the Router's MAC Extended Community | MAC, a conflict can arise if both the Router's MAC Extended Community | |||
| and such an Encapsulation Sub-TLV are present at the same time but | and such an Encapsulation sub-TLV are present at the same time but | |||
| have different values. In | have different values. In | |||
| case of such a conflict, the information in the Router's MAC Extended Communi ty | case of such a conflict, the information in the Router's MAC Extended Communi ty | |||
| MUST be used.</t> | <bcp14>MUST</bcp14> be used.</t> | |||
| </section> | ||||
| </section> | <section anchor="color-extcomm" numbered="true" toc="default"> | |||
| <name>Color Extended Community</name> | ||||
| <section title="Color Extended Community" anchor="color-extcomm"><t> | <t> | |||
| The Color Extended Community is a Transitive Opaque Extended | The Color Extended Community is a Transitive Opaque Extended | |||
| Community with the following encoding:</t> | Community with the encoding shown in <xref target="ref-color-extended-communi | |||
| ty"/>.</t> | ||||
| <figure title="Color Extended Community" anchor="ref-color-extended-commu | <figure anchor="ref-color-extended-community"> | |||
| nity"><artwork><![CDATA[ | <name>Color Extended Community</name> | |||
| <artwork name="" type="" align="left" alt=""><![CDATA[ | ||||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | 0x03 (1 Octet)| 0x0b (1 Octet)| Flags (2 Octets) | | | 0x03 (1 octet)| 0x0b (1 octet)| Flags (2 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Color Value (4 Octets) | | | Color Value (4 octets) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ]]></artwork> | ]]></artwork> | |||
| </figure> | </figure> | |||
| <t> | <t> | |||
| The value of the high-order octet of the extended type field is 0x03, which | The value of the high-order octet of the extended Type field is 0x03, which | |||
| indicates it is transitive. The value of the low-order octet of the extended | indicates it is transitive. The value of the low-order octet of the extended | |||
| type field for this community is 0x0b. The color value is user defined and | Type field for this community is 0x0b. The color value is user defined and | |||
| configured locally. No flags are defined in this document; this field MUST be | configured locally. No flags are defined in this document; this field <bcp14> | |||
| set to | MUST</bcp14> be set to | |||
| zero by the originator and ignored by the receiver; the value MUST NOT be | zero by the originator and ignored by the receiver; the value <bcp14>MUST NOT | |||
| changed when propagating this Extended Community. The Color Value field is | </bcp14> be | |||
| encoded as 4 octet value by the administrator and is outside the scope | changed when propagating this extended community. The Color Value field is | |||
| of this document. For the use of this Extended Community please see | encoded as a 4-octet value by the administrator and is outside the scope | |||
| <xref target="recursive-nh-resolution"/>.</t> | of this document. For the use of this extended community, please see | |||
| <xref target="recursive-nh-resolution" format="default"/>.</t> | ||||
| </section> | </section> | |||
| </section> | ||||
| </section> | <section anchor="ipip-considerations" numbered="true" toc="default"> | |||
| <name>Special Considerations for IP-in-IP Tunnels</name> | ||||
| <section title="Special Considerations for IP-in-IP Tunnels" anchor="ipip | <t> | |||
| -considerations"><t> | ||||
| In certain situations with an IP fabric underlay, one could have a tunnel ove rlay | In certain situations with an IP fabric underlay, one could have a tunnel ove rlay | |||
| with the tunnel type IP-in-IP. The egress BGP speaker can advertise the | with the tunnel type IP-in-IP. The egress BGP speaker can advertise the | |||
| IP-in-IP tunnel endpoint address in the Tunnel Egress Endpoint sub-TLV. When | IP-in-IP tunnel endpoint address in the Tunnel Egress Endpoint sub-TLV. When | |||
| the Tunnel type of the TLV is IP-in-IP, it will not have a Virtual Network | the tunnel type of the TLV is IP-in-IP, it will not have a virtual network | |||
| Identifier. However, the tunnel egress endpoint address can be used in identi | identifier. However, the tunnel egress endpoint address can be used in identi | |||
| fying | fying | |||
| the forwarding table to use for making the forwarding decisions to forward | the forwarding table to use for making the forwarding decisions to forward | |||
| the payload.</t> | the payload.</t> | |||
| </section> | ||||
| </section> | <section anchor="usage" numbered="true" toc="default"> | |||
| <name>Semantics and Usage of the Tunnel Encapsulation Attribute</name> | ||||
| <section title="Semantics and Usage of the Tunnel Encapsulation attribute | <t> | |||
| " anchor="usage"> | The BGP Tunnel Encapsulation attribute <bcp14>MAY</bcp14> be carried in any B | |||
| <t> | GP | |||
| The BGP Tunnel Encapsulation attribute MAY be carried in any BGP | ||||
| UPDATE message whose AFI/SAFI is 1/1 (IPv4 Unicast), 2/1 (IPv6 | UPDATE message whose AFI/SAFI is 1/1 (IPv4 Unicast), 2/1 (IPv6 | |||
| Unicast), 1/4 (IPv4 Labeled Unicast), 2/4 (IPv6 Labeled Unicast), | Unicast), 1/4 (IPv4 Labeled Unicast), 2/4 (IPv6 Labeled Unicast), | |||
| 1/128 (VPN-IPv4 Labeled Unicast), 2/128 (VPN-IPv6 Labeled Unicast), | 1/128 (VPN-IPv4 Labeled Unicast), 2/128 (VPN-IPv6 Labeled Unicast), | |||
| or 25/70 (Ethernet VPN, usually known as EVPN)). Use of the Tunnel | or 25/70 (Ethernet VPN, usually known as EVPN). Use of the Tunnel | |||
| Encapsulation attribute in BGP UPDATE messages of other AFI/SAFIs is | Encapsulation attribute in BGP UPDATE messages of other AFI/SAFIs is | |||
| outside the scope of this document.</t> | outside the scope of this document.</t> | |||
| <t> | ||||
| <t> | ||||
| There is no significance to the order in which the TLVs occur within | There is no significance to the order in which the TLVs occur within | |||
| the Tunnel Encapsulation attribute. Multiple TLVs may occur for a | the Tunnel Encapsulation attribute. Multiple TLVs may occur for a | |||
| given Tunnel Type; each such TLV is regarded as describing a | given tunnel type; each such TLV is regarded as describing a | |||
| different tunnel. (This also applies if the Tunnel Encapsulation | different tunnel. (This also applies if the Encapsulation | |||
| Extended Community encoding is used.)</t> | Extended Community encoding is used.)</t> | |||
| <t> | ||||
| <t> | ||||
| The decision to attach a Tunnel Encapsulation attribute to a given | The decision to attach a Tunnel Encapsulation attribute to a given | |||
| BGP UPDATE is determined by policy. The set of TLVs and sub-TLVs | BGP UPDATE is determined by policy. The set of TLVs and sub-TLVs | |||
| contained in the attribute is also determined by policy.</t> | contained in the attribute is also determined by policy.</t> | |||
| <t> | ||||
| <t> | ||||
| Suppose that:</t> | Suppose that:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>a given packet P must be forwarded by router | <li>a given packet P must be forwarded by router R;</li> | |||
| R;</t> | <li>the path along which P is to be forwarded is determined by BGP | |||
| UPDATE U;</li> | ||||
| <t>the path along which P is to be forwarded is determined by BGP | <li> | |||
| UPDATE U;</t> | <t>UPDATE U has a Tunnel Encapsulation attribute, containing at least | |||
| <t>UPDATE U has a Tunnel Encapsulation attribute, containing at least | ||||
| one TLV that identifies a "feasible tunnel" for packet P. A | one TLV that identifies a "feasible tunnel" for packet P. A | |||
| tunnel is considered feasible if it has the following four | tunnel is considered feasible if it has the following four | |||
| properties:<list style="symbols"><t>The Tunnel Type is supported (that | properties:</t> | |||
| is, router R knows how to set | <ol spacing="normal"> | |||
| up tunnels of that type, how to create the encapsulation header | <li>The tunnel type is supported (that is, router R knows how to set | |||
| for tunnels of that type, etc.)</t> | up tunnels of that type, how to create the encapsulation header for tunnels of | |||
| that type, etc.).</li> | ||||
| <t>The tunnel is of a type that can be used to carry packet P | <li>The tunnel is of a type that can be used to carry packet P (for | |||
| (for example, an MPLS-in-UDP tunnel would not be a feasible tunnel for | example, an MPLS-in-UDP tunnel would not be a feasible tunnel for | |||
| carrying an IP packet, unless the IP packet can first be | carrying an IP packet, unless the IP packet can first be | |||
| encapsulated in a MPLS packet).</t> | encapsulated in a MPLS packet).</li> | |||
| <li>The tunnel is specified in a TLV whose Tunnel Egress Endpoint su | ||||
| <t>The tunnel is specified in a TLV whose Tunnel Egress Endpoint sub-TLV | b-TLV | |||
| identifies an IP address that is reachable. The reachability con dition | identifies an IP address that is reachable. The reachability con dition | |||
| is evaluated as per <xref target="RFC4271"/>. If the IP address is | is evaluated as per <xref target="RFC4271" format="default"/>. If the IP address is | |||
| reachable via more than one forwarding table, local policy is us ed | reachable via more than one forwarding table, local policy is us ed | |||
| to determine which table to use.</t> | to determine which table to use.</li> | |||
| <li>There is no local policy that prevents the use of the tunnel.</l | ||||
| <t>There is no local policy that prevents the use of the tunnel.</t> | i> | |||
| </ol> | ||||
| </list> | </li> | |||
| </t> | </ul> | |||
| <t> | ||||
| </list> | Then router R <bcp14>MUST</bcp14> send packet P through one of the feasible | |||
| </t> | ||||
| <t> | ||||
| Then router R MUST send packet P through one of the feasible | ||||
| tunnels identified in the Tunnel Encapsulation attribute of UPDATE U.</t> | tunnels identified in the Tunnel Encapsulation attribute of UPDATE U.</t> | |||
| <t> | ||||
| <t> | ||||
| If the Tunnel Encapsulation attribute contains several TLVs (that is, if | If the Tunnel Encapsulation attribute contains several TLVs (that is, if | |||
| it specifies several feasible tunnels), router R may choose any one of those | it specifies several feasible tunnels), router R may choose any one of those | |||
| tunnels, based upon local policy. If any Tunnel TLV contains | tunnels, based upon local policy. If any Tunnel TLV contains | |||
| one or more Color sub-TLVs (<xref target="color"/>) and/or the Protocol Type | one or more Color sub-TLVs (<xref target="color" format="default"/>) and/or t | |||
| sub-TLV | he Protocol Type sub-TLV (<xref target="protocol-type" format="default"/>), the | |||
| (<xref target="protocol-type"/>), the choice of tunnel may be influenced by t | choice of tunnel may be influenced by these | |||
| hese | sub-TLVs. Many other factors, for example, minimization of encapsulation-head | |||
| sub-TLVs. Many other factors, for example minimization of encapsulation heade | er | |||
| r | ||||
| overhead, could also be used to influence selection.</t> | overhead, could also be used to influence selection.</t> | |||
| <t> | ||||
| <t> | ||||
| The reachability to the address of the egress endpoint of the tunnel may chan ge over | The reachability to the address of the egress endpoint of the tunnel may chan ge over | |||
| time, directly impacting the feasibility of the tunnel. A tunnel that is not | time, directly impacting the feasibility of the tunnel. A tunnel that is not | |||
| feasible at some moment, may become feasible at a later time when its egress endpoint | feasible at some moment may become feasible at a later time when its egress e ndpoint | |||
| address is reachable. The router may start using the newly feasible tunnel | address is reachable. The router may start using the newly feasible tunnel | |||
| instead of an existing one. How this decision is made is outside the scope | instead of an existing one. How this decision is made is outside the scope | |||
| of this document.</t> | of this document.</t> | |||
| <t> | ||||
| <t> | ||||
| Once it is determined to send a packet through the tunnel specified | Once it is determined to send a packet through the tunnel specified | |||
| in a particular Tunnel TLV of a particular Tunnel Encapsulation attribute, | in a particular Tunnel TLV of a particular Tunnel Encapsulation attribute, | |||
| then the tunnel's egress endpoint address is the IP address contained | then the tunnel's egress endpoint address is the IP address contained | |||
| in the Tunnel Egress Endpoint sub-TLV. If the Tunnel TLV contains a Tunnel E gress Endpoint sub-TLV | in the Tunnel Egress Endpoint sub-TLV. If the Tunnel TLV contains a Tunnel E gress Endpoint sub-TLV | |||
| whose Value field is all zeroes, then the tunnel's egress endpoint is the | whose Value field is all zeroes, then the tunnel's egress endpoint is the | |||
| address of the Next Hop of the BGP Update containing the Tunnel Encapsulation | address of the next hop of the BGP UPDATE containing the Tunnel Encapsulation | |||
| attribute. The address of the tunnel egress endpoint generally appears in a | attribute (that is, the Network Address of Next Hop field of the | |||
| "destination address" field of the encapsulation.</t> | MP_REACH_NLRI attribute if the encoding of [RFC4760] is in use or | |||
| the NEXT_HOP attribute otherwise). The address of the tunnel egress endpoint | ||||
| <t> | generally appears in a | |||
| Destination Address field of the encapsulation.</t> | ||||
| <t> | ||||
| The full set of procedures for sending a packet through a particular | The full set of procedures for sending a packet through a particular | |||
| Tunnel Type to a particular tunnel egress endpoint depends upon the tunnel | tunnel type to a particular tunnel egress endpoint depends upon the tunnel | |||
| type, and is outside the scope of this document. Note that some | type and is outside the scope of this document. Note that some | |||
| tunnel types may require the execution of an explicit tunnel setup | tunnel types may require the execution of an explicit tunnel setup | |||
| protocol before they can be used for carrying data. Other tunnel | protocol before they can be used for carrying data. Other tunnel | |||
| types may not require any tunnel setup protocol.</t> | types may not require any tunnel setup protocol.</t> | |||
| <t> | ||||
| <t> | ||||
| Sending a packet through a tunnel always requires that the packet be | Sending a packet through a tunnel always requires that the packet be | |||
| encapsulated, with an encapsulation header that is appropriate for | encapsulated, with an encapsulation header that is appropriate for | |||
| the Tunnel Type. The contents of the tunnel encapsulation header may | the tunnel type. The contents of the tunnel encapsulation header may | |||
| be influenced by the Encapsulation sub-TLV. If there is no | be influenced by the Encapsulation sub-TLV. If there is no | |||
| Encapsulation sub-TLV present, the router transmitting the packet | Encapsulation sub-TLV present, the router transmitting the packet | |||
| through the tunnel must have a priori knowledge (for example, by | through the tunnel must have a priori knowledge (for example, by | |||
| provisioning) of how to fill in the various fields in the | provisioning) of how to fill in the various fields in the | |||
| encapsulation header.</t> | encapsulation header.</t> | |||
| <t> | ||||
| <t> | ||||
| A Tunnel Encapsulation attribute may contain several TLVs that all | A Tunnel Encapsulation attribute may contain several TLVs that all | |||
| specify the same Tunnel Type. Each TLV should be considered as | specify the same tunnel type. Each TLV should be considered as | |||
| specifying a different tunnel. Two tunnels of the same type may have | specifying a different tunnel. Two tunnels of the same type may have | |||
| different Tunnel Egress Endpoint sub-TLVs, different Encapsulation sub-TLVs, | different Tunnel Egress Endpoint sub-TLVs, different Encapsulation sub-TLVs, | |||
| etc. Choosing between two such tunnels is a matter of local policy.</t> | etc. Choosing between two such tunnels is a matter of local policy.</t> | |||
| <t> | ||||
| <t> | ||||
| Once router R has decided to send packet P through a particular | Once router R has decided to send packet P through a particular | |||
| tunnel, it encapsulates packet P appropriately and then forwards it | tunnel, it encapsulates packet P appropriately and then forwards it | |||
| according to the route that leads to the tunnel's egress endpoint. | according to the route that leads to the tunnel's egress endpoint. | |||
| This route may itself be a BGP route with a Tunnel Encapsulation | This route may itself be a BGP route with a Tunnel Encapsulation | |||
| attribute. If so, the encapsulated packet is treated as the payload | attribute. If so, the encapsulated packet is treated as the payload | |||
| and is encapsulated according to the Tunnel Encapsulation attribute | and encapsulated according to the Tunnel Encapsulation attribute | |||
| of that route. That is, tunnels may be "stacked".</t> | of that route. That is, tunnels may be "stacked".</t> | |||
| <t> | ||||
| <t> | Notwithstanding anything said in this document, a BGP speaker <bcp14>MAY</bcp | |||
| Notwithstanding anything said in this document, a BGP speaker MAY | 14> | |||
| have local policy that influences the choice of tunnel, and the way | have local policy that influences the choice of tunnel and the way | |||
| the encapsulation is formed. A BGP speaker MAY also have a local | the encapsulation is formed. A BGP speaker <bcp14>MAY</bcp14> also have a lo | |||
| cal | ||||
| policy that tells it to ignore the Tunnel Encapsulation attribute | policy that tells it to ignore the Tunnel Encapsulation attribute | |||
| entirely or in part. Of course, interoperability issues must be | entirely or in part. Of course, interoperability issues must be | |||
| considered when such policies are put into place.</t> | considered when such policies are put into place.</t> | |||
| <t> | ||||
| <t> | See also <xref target="validation-and-error" format="default"/>, which provi | |||
| See also <xref target="validation-and-error"/>, which provides further | des further | |||
| specification regarding validation and exception cases.</t> | specification regarding validation and exception cases.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Routing Considerations"> | <name>Routing Considerations</name> | |||
| <section title="Impact on the BGP Decision Process"><t> | <section numbered="true" toc="default"> | |||
| <name>Impact on the BGP Decision Process</name> | ||||
| <t> | ||||
| The presence of the Tunnel Encapsulation attribute affects | The presence of the Tunnel Encapsulation attribute affects | |||
| the BGP best route selection algorithm. If a route includes | the BGP best route-selection algorithm. If a route includes | |||
| the Tunnel Encapsulation attribute, and if that attribute | the Tunnel Encapsulation attribute, and if that attribute | |||
| includes no tunnel which is feasible, then that route MUST | includes no tunnel that is feasible, then that route <bcp14>MUST | |||
| NOT be considered resolvable for the purposes of Route Resolvabilit | NOT</bcp14> be considered resolvable for the purposes of the route | |||
| y | resolvability | |||
| Condition <xref target="RFC4271"/> Section 9.1.2.1. | condition (<xref target="RFC4271" sectionFormat="comma" section="9. | |||
| </t> | 1.2.1"/>). | |||
| </section> | </t> | |||
| </section> | ||||
| <section title="Looping, Mutual Recursion, Etc."><t> | <section numbered="true" toc="default"> | |||
| <name>Looping, Mutual Recursion, Etc.</name> | ||||
| <t> | ||||
| Consider a packet destined for address X. Suppose a BGP UPDATE for | Consider a packet destined for address X. Suppose a BGP UPDATE for | |||
| address prefix X carries a Tunnel Encapsulation attribute that | address prefix X carries a Tunnel Encapsulation attribute that | |||
| specifies a tunnel egress endpoint of Y, and suppose that a BGP | specifies a tunnel egress endpoint of Y, and suppose that a BGP | |||
| UPDATE for address prefix Y carries a Tunnel Encapsulation attribute | UPDATE for address prefix Y carries a Tunnel Encapsulation attribute | |||
| that specifies a tunnel egress endpoint of X. It is easy to see that this | that specifies a tunnel egress endpoint of X. It is easy to see that this | |||
| can have no good outcome. <xref target="RFC4271"/> describes an analogous cas e | can have no good outcome. <xref target="RFC4271" format="default"/> describes an analogous case | |||
| as mutually recursive routes.</t> | as mutually recursive routes.</t> | |||
| <t> | ||||
| <t> | ||||
| This could happen as a result of misconfiguration, either accidental | This could happen as a result of misconfiguration, either accidental | |||
| or intentional. It could also happen if the Tunnel Encapsulation | or intentional. It could also happen if the Tunnel Encapsulation | |||
| attribute were altered by a malicious agent. Implementations should | attribute were altered by a malicious agent. Implementations should | |||
| be aware that such an attack will result in unresolvable BGP routes due to th e | be aware that such an attack will result in unresolvable BGP routes due to th e | |||
| mutually recursive relationship. This document does not specify a maximum num ber of | mutually recursive relationship. This document does not specify a maximum num ber of | |||
| recursions; that is an implementation-specific matter.</t> | recursions; that is an implementation-specific matter.</t> | |||
| <t> | ||||
| <t> | ||||
| Improper setting (or malicious altering) of the Tunnel Encapsulation | Improper setting (or malicious altering) of the Tunnel Encapsulation | |||
| attribute could also cause data packets to loop. Suppose a BGP | attribute could also cause data packets to loop. Suppose a BGP | |||
| UPDATE for address prefix X carries a Tunnel Encapsulation attribute | UPDATE for address prefix X carries a Tunnel Encapsulation attribute | |||
| that specifies a tunnel egress endpoint of Y. Suppose router R | that specifies a tunnel egress endpoint of Y. Suppose router R | |||
| receives and processes the advertisement. When router R receives a packet | receives and processes the advertisement. When router R receives a packet | |||
| destined for X, it will apply the encapsulation and send the | destined for X, it will apply the encapsulation and send the | |||
| encapsulated packet to Y. Y will decapsulate the packet and forward | encapsulated packet to Y. Y will decapsulate the packet and forward | |||
| it further. If Y is further away from X than is router R, it is | it further. If Y is further away from X than is router R, it is | |||
| possible that the path from Y to X will traverse R. This would cause | possible that the path from Y to X will traverse R. This would cause | |||
| a long-lasting routing loop. The control plane itself cannot detect | a long-lasting routing loop. The control plane itself cannot detect | |||
| this situation, though a TTL field in the payload packets would | this situation, though a TTL field in the payload packets would | |||
| prevent any given packet from looping infinitely.</t> | prevent any given packet from looping infinitely.</t> | |||
| <t> | ||||
| <t> | During the deployment of techniques described | |||
| During the deployment of techniques as described | ||||
| in this document, operators are encouraged to avoid mutually | in this document, operators are encouraged to avoid mutually | |||
| recursive route and/or tunnel dependencies. There is greater | recursive route and/or tunnel dependencies. There is greater | |||
| potential for such scenarios to arise when the tunnel egress endpoint for a | potential for such scenarios to arise when the tunnel egress endpoint for a | |||
| given prefix differs from the address of the next hop for that | given prefix differs from the address of the next hop for that | |||
| prefix.</t> | prefix.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| <section anchor="recursive-nh-resolution" numbered="true" toc="default"> | ||||
| </section> | <name>Recursive Next-Hop Resolution</name> | |||
| <t> | ||||
| <section title="Recursive Next Hop Resolution" anchor="recursive-nh-resol | ||||
| ution"><t> | ||||
| Suppose that:</t> | Suppose that:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>a given packet P must be forwarded by router | <li>a given packet P must be forwarded by router R1;</li> | |||
| R1;</t> | <li>the path along which P is to be forwarded is determined by BGP | |||
| UPDATE U1;</li> | ||||
| <t>the path along which P is to be forwarded is determined by BGP | <li>UPDATE U1 does not have a Tunnel Encapsulation attribute;</li> | |||
| UPDATE U1;</t> | <li>the address of the next hop of UPDATE U1 is router R2;</li> | |||
| <li>the best route to router R2 is a BGP route that was advertised in | ||||
| <t>UPDATE U1 does not have a Tunnel Encapsulation attribute;</t> | UPDATE U2; and</li> | |||
| <li>UPDATE U2 has a Tunnel Encapsulation attribute.</li> | ||||
| <t>the address of the next hop of UPDATE U1 is router R2;</t> | </ul> | |||
| <t> | ||||
| <t>the best route to router R2 is a BGP route that was advertised in | Then packet P <bcp14>MUST</bcp14> be sent through one of the tunnels identifi | |||
| UPDATE U2;</t> | ed in | |||
| the Tunnel Encapsulation attribute of UPDATE U2. See <xref target="usage" fo | ||||
| <t>UPDATE U2 has a Tunnel Encapsulation attribute.</t> | rmat="default"/> for | |||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| Then packet P MUST be sent through one of the tunnels identified in | ||||
| the Tunnel Encapsulation attribute of UPDATE U2. See <xref target="usage"/> | ||||
| for | ||||
| further details.</t> | further details.</t> | |||
| <t> | ||||
| <t> | ||||
| However, suppose that one of the TLVs in U2's Tunnel Encapsulation | However, suppose that one of the TLVs in U2's Tunnel Encapsulation | |||
| attribute contains one or more Color Sub-TLVs. In that case, packet P MUST | attribute contains one or more Color sub-TLVs. In that case, packet P <bcp14 | |||
| NOT be sent through the tunnel contained in that TLV, unless U1 is | >MUST | |||
| NOT</bcp14> be sent through the tunnel contained in that TLV, unless U1 is | ||||
| carrying a Color Extended Community that is identified in one of U2's | carrying a Color Extended Community that is identified in one of U2's | |||
| Color Sub-TLVs.</t> | Color sub-TLVs.</t> | |||
| <t> | ||||
| <t> | ||||
| The procedures in this section presuppose that U1's address of the next hop | The procedures in this section presuppose that U1's address of the next hop | |||
| resolves to a BGP route, and that U2's next hop resolves (perhaps after | resolves to a BGP route, and that U2's next hop resolves (perhaps after | |||
| further recursion) to a non-BGP route.</t> | further recursion) to a non-BGP route.</t> | |||
| </section> | ||||
| </section> | <section anchor="use-of-vni" numbered="true" toc="default"> | |||
| <name>Use of Virtual Network Identifiers and Embedded Labels When Imposing | ||||
| <section title="Use of Virtual Network Identifiers and Embedded Labels wh | a Tunnel Encapsulation</name> | |||
| en Imposing a Tunnel Encapsulation" anchor="use-of-vni"><t> | <t> | |||
| If the TLV specifying a tunnel contains an MPLS Label Stack sub-TLV, | If the TLV specifying a tunnel contains an MPLS Label Stack sub-TLV, | |||
| then when sending a packet through that tunnel, the procedures of | then when sending a packet through that tunnel, the procedures of | |||
| <xref target="label-stack"/> are applied before the procedures of this sectio | <xref target="label-stack" format="default"/> are applied before the procedur | |||
| n.</t> | es of this section.</t> | |||
| <t> | ||||
| <t> | ||||
| If the TLV specifying a tunnel contains a Prefix-SID sub-TLV, the | If the TLV specifying a tunnel contains a Prefix-SID sub-TLV, the | |||
| procedures of <xref target="prefix-sid"/> are applied before the procedures o f this | procedures of <xref target="prefix-sid" format="default"/> are applied before the procedures of this | |||
| section. If the TLV also contains an MPLS Label Stack sub-TLV, the | section. If the TLV also contains an MPLS Label Stack sub-TLV, the | |||
| procedures of <xref target="label-stack"/> are applied before the procedures | procedures of <xref target="label-stack" format="default"/> are applied befor | |||
| of | e the procedures of | |||
| <xref target="prefix-sid"/>.</t> | <xref target="prefix-sid" format="default"/>.</t> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Tunnel Types without a Virtual Network Identifier Field"> | <name>Tunnel Types without a Virtual Network Identifier Field</name> | |||
| <t> | <t> | |||
| If a Tunnel Encapsulation attribute is attached to an UPDATE of a | If a Tunnel Encapsulation attribute is attached to an UPDATE of a | |||
| labeled address family, there will be one or more labels specifie d in | labeled address family, there will be one or more labels specifie d in | |||
| the UPDATE's NLRI. When a packet is sent through a tunnel specif ied | the UPDATE's NLRI. When a packet is sent through a tunnel specif ied | |||
| in one of the attribute's TLVs, and that tunnel type does not con tain | in one of the attribute's TLVs, and that tunnel type does not con tain | |||
| a virtual network identifier field, the label or labels from the NLRI | a Virtual Network Identifier field, the label or labels from the NLRI | |||
| are pushed on the packet's label stack. The resulting MPLS packe t is | are pushed on the packet's label stack. The resulting MPLS packe t is | |||
| then further encapsulated, as specified by the TLV. | then further encapsulated, as specified by the TLV. | |||
| </t> | </t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Tunnel Types with a Virtual Network Identifier Field"><t> | <name>Tunnel Types with a Virtual Network Identifier Field</name> | |||
| <t> | ||||
| Two of the tunnel types that can be specified in a Tunnel | Two of the tunnel types that can be specified in a Tunnel | |||
| Encapsulation TLV have virtual network identifier fields in their | Encapsulation TLV have Virtual Network Identifier fields in their | |||
| encapsulation headers. In the VXLAN encapsulation, | encapsulation headers. In the VXLAN encapsulation, | |||
| this field is called the VNI (VXLAN Network Identifier) field; in | this field is called the VNI (VXLAN Network Identifier) field; in | |||
| the NVGRE encapsulation, this field is called the VSID (Virtual | the NVGRE encapsulation, this field is called the VSID (Virtual | |||
| Subnet Identifier) field.</t> | Subnet Identifier) field.</t> | |||
| <t> | ||||
| <t> | ||||
| When one of these tunnel encapsulations is imposed on a packet, the | When one of these tunnel encapsulations is imposed on a packet, the | |||
| setting of the virtual network identifier field in the encapsulation | setting of the Virtual Network Identifier field in the encapsulation | |||
| header depends upon the contents of the Encapsulation sub-TLV (if one | header depends upon the contents of the Encapsulation sub-TLV (if one | |||
| is present). When the Tunnel Encapsulation attribute is being | is present). When the Tunnel Encapsulation attribute is being | |||
| carried in a BGP UPDATE of a labeled address family, the setting of | carried in a BGP UPDATE of a labeled address family, the setting of | |||
| the virtual network identifier field also depends upon the contents | the Virtual Network Identifier field also depends upon the contents | |||
| of the Embedded Label Handling sub-TLV (if present).</t> | of the Embedded Label Handling sub-TLV (if present).</t> | |||
| <t> | ||||
| <t> | ||||
| This section specifies the procedures for choosing the value to set | This section specifies the procedures for choosing the value to set | |||
| in the virtual network identifier field of the encapsulation header. | in the Virtual Network Identifier field of the encapsulation header. | |||
| These procedures apply only when the Tunnel Type is VXLAN | These procedures apply only when the tunnel type is VXLAN | |||
| or NVGRE.</t> | or NVGRE.</t> | |||
| <section numbered="true" toc="default"> | ||||
| <section title="Unlabeled Address Families"><t> | <name>Unlabeled Address Families</name> | |||
| This sub-section applies when:</t> | <t> | |||
| This subsection applies when:</t> | ||||
| <t><list style="symbols"><t>the Tunnel Encapsulation attribute is carried | <ul spacing="normal"> | |||
| in a BGP UPDATE of | <li>the Tunnel Encapsulation attribute is carried in a BGP UPDATE of | |||
| an unlabeled address family, and</t> | an unlabeled address family, </li> | |||
| <li>at least one of the attribute's TLVs identifies a tunnel type th | ||||
| <t>at least one of the attribute's TLVs identifies a Tunnel Type that | at | |||
| uses a virtual network identifier, and</t> | uses a virtual network identifier, and</li> | |||
| <li>it has been determined to send a packet through one of those | ||||
| <t>it has been determined to send a packet through one of those | tunnels.</li> | |||
| tunnels.</t> | </ul> | |||
| <t> | ||||
| </list> | ||||
| </t> | ||||
| <t> | ||||
| If the TLV identifying the tunnel contains an Encapsulation sub-TLV | If the TLV identifying the tunnel contains an Encapsulation sub-TLV | |||
| whose V bit is set, the virtual network identifier field of the | whose V bit is set to 1, the Virtual Network Identifier field of the | |||
| encapsulation header is set to the value of the virtual network | encapsulation header is set to the value of the Virtual Network | |||
| identifier field of the Encapsulation sub-TLV.</t> | Identifier field of the Encapsulation sub-TLV.</t> | |||
| <t> | ||||
| <t> | Otherwise, the Virtual Network Identifier field of the encapsulation | |||
| Otherwise, the virtual network identifier field of the encapsulation | ||||
| header is set to a configured value; if there is no configured value, | header is set to a configured value; if there is no configured value, | |||
| the tunnel cannot be used.</t> | the tunnel cannot be used.</t> | |||
| </section> | ||||
| </section> | <section numbered="true" toc="default"> | |||
| <name>Labeled Address Families</name> | ||||
| <section title="Labeled Address Families"><t> | <t> | |||
| This sub-section applies when:</t> | This subsection applies when:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>the Tunnel Encapsulation attribute is carried | <li>the Tunnel Encapsulation attribute is carried in a BGP UPDATE of | |||
| in a BGP UPDATE of a | a | |||
| labeled address family, and</t> | labeled address family,</li> | |||
| <li>at least one of the attribute's TLVs identifies a tunnel type th | ||||
| <t>at least one of the attribute's TLVs identifies a Tunnel Type that | at | |||
| uses a virtual network identifier, and</t> | uses a virtual network identifier, and</li> | |||
| <li>it has been determined to send a packet through one of those | ||||
| <t>it has been determined to send a packet through one of those | tunnels.</li> | |||
| tunnels.</t> | </ul> | |||
| <section anchor="valid-vni" numbered="true" toc="default"> | ||||
| </list> | <name>When a Valid VNI Has Been Signaled</name> | |||
| </t> | <t> | |||
| <section title="When a Valid VNI has been Signaled" anchor="valid-vni"><t | ||||
| > | ||||
| If the TLV identifying the tunnel contains an Encapsulation sub-TLV | If the TLV identifying the tunnel contains an Encapsulation sub-TLV | |||
| whose V bit is set, the virtual network identifier field of the | whose V bit is set to 1, the Virtual Network Identifier field of the | |||
| encapsulation header is set to the value of the virtual network identifier | encapsulation header is set to the value of the Virtual Network Identifier | |||
| field of the Encapsulation sub-TLV. However, the Embedded Label Handling | field of the Encapsulation sub-TLV. However, the Embedded Label Handling | |||
| sub-TLV will determine label processing as described below.</t> | sub-TLV will determine label processing as described below.</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>If the TLV contains an Embedded Label | <li>If the TLV contains an Embedded Label | |||
| Handling sub-TLV whose value is 1, the embedded label (from the NLRI | Handling sub-TLV whose value is 1, the embedded label (from the NLRI | |||
| of the route that is carrying the Tunnel Encapsulation attribute) | of the route that is carrying the Tunnel Encapsulation attribute) | |||
| appears at the top of the MPLS label stack in the encapsulation payload. | appears at the top of the MPLS label stack in the encapsulation payload. | |||
| </t> | </li> | |||
| <li>If the TLV does not contain an Embedded Label Handling sub-TLV | ||||
| <t>If the TLV does not contain an Embedded Label Handling sub-TLV, or | , or | |||
| it contains an Embedded Label Handling sub-TLV whose value is 2, | it contains an Embedded Label Handling sub-TLV whose value is 2, | |||
| the embedded label is ignored entirely.</t> | the embedded label is ignored entirely.</li> | |||
| </ul> | ||||
| </list> | </section> | |||
| </t> | <section anchor="no-valid-vni" numbered="true" toc="default"> | |||
| <name>When a Valid VNI Has Not Been Signaled</name> | ||||
| </section> | <t> | |||
| <section title="When a Valid VNI has not been Signaled" anchor="no-valid- | ||||
| vni"><t> | ||||
| If the TLV identifying the tunnel does not contain an Encapsulation | If the TLV identifying the tunnel does not contain an Encapsulation | |||
| sub-TLV whose V bit is set, the virtual network identifier field of | sub-TLV whose V bit is set to 1, the Virtual Network Identifier field of | |||
| the encapsulation header is set as follows:</t> | the encapsulation header is set as follows:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"><t>If the TLV contains an Embedded Label Handlin | <li> | |||
| g sub-TLV whose value | <t>If the TLV contains an Embedded Label Handling sub-TLV whose | |||
| is 1, then the virtual network identifier field of the | value | |||
| encapsulation header is set to a configured value.<vspace blankLines="1"/> | is 1, then the Virtual Network Identifier field of the | |||
| encapsulation header is set to a configured value.</t> | ||||
| <t> | ||||
| If there is no configured value, the tunnel cannot be used. | If there is no configured value, the tunnel cannot be used. | |||
| <vspace blankLines="1"/> | </t> | |||
| <t> | ||||
| The embedded label (from the NLRI of the route that is carrying | The embedded label (from the NLRI of the route that is carrying | |||
| the Tunnel Encapsulation attribute) appears at the top of the MPLS | the Tunnel Encapsulation attribute) appears at the top of the MPLS | |||
| label stack in the encapsulation payload. | label stack in the encapsulation payload. | |||
| </t> | </t> | |||
| </li> | ||||
| <t>If the TLV does not contain an Embedded Label Handling sub-TLV, or | <li> | |||
| <t>If the TLV does not contain an Embedded Label Handling sub-TL | ||||
| V, or | ||||
| if it contains an Embedded Label Handling sub-TLV whose value is | if it contains an Embedded Label Handling sub-TLV whose value is | |||
| 2, the embedded label is copied into the lower 3 octets of the virtual | 2, the embedded label is copied into the lower 3 octets of the Virtual | |||
| network identifier field of the encapsulation header.<vspace blankLines="1 | Network Identifier field of the encapsulation header.</t> | |||
| "/> | <t> | |||
| In this case, the payload may or may not contain an MPLS label | In this case, the payload may or may not contain an MPLS label | |||
| stack, depending upon other factors. If the payload does contain | stack, depending upon other factors. If the payload does contain | |||
| an MPLS label stack, the embedded label does not appear in that | an MPLS label stack, the embedded label does not appear in that | |||
| stack. | stack. | |||
| </t> | </t> | |||
| </li> | ||||
| </list> | </ul> | |||
| </t> | </section> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | ||||
| </section> | <section anchor="applicability" numbered="true" toc="default"> | |||
| <name>Applicability Restrictions</name> | ||||
| </section> | <t> | |||
| </section> | ||||
| <section title="Applicability Restrictions" anchor="applicability"><t> | ||||
| In a given UPDATE of a labeled address family, the label embedded in | In a given UPDATE of a labeled address family, the label embedded in | |||
| the NLRI is generally a label that is meaningful only to the router | the NLRI is generally a label that is meaningful only to the router | |||
| represented by the address of the next hop. Certain of the procedures of | represented by the address of the next hop. Certain of the procedures of Sec | |||
| <xref target="valid-vni"/> or <xref target="no-valid-vni"/> cause the embedde | tions | |||
| d label to be | <xref target="valid-vni" format="counter"/> or <xref target="no-valid-vni" fo | |||
| rmat="counter"/> cause the embedded label to be | ||||
| carried by a data packet to the router whose address appears in the | carried by a data packet to the router whose address appears in the | |||
| Tunnel Egress Endpoint sub-TLV. If the Tunnel Egress Endpoint sub-TLV does n ot | Tunnel Egress Endpoint sub-TLV. If the Tunnel Egress Endpoint sub-TLV does n ot | |||
| identify the same router represented by the address of the next hop, sending the | identify the same router represented by the address of the next hop, sending the | |||
| packet through the tunnel may cause the label to be misinterpreted at the | packet through the tunnel may cause the label to be misinterpreted at the | |||
| tunnel's egress endpoint. This may cause misdelivery of the packet. | tunnel's egress endpoint. This may cause misdelivery of the packet. | |||
| Avoidance of this unfortunate outcome is a matter of network planning | Avoidance of this unfortunate outcome is a matter of network planning | |||
| and design, and is outside the scope of this document.</t> | and design and is outside the scope of this document.</t> | |||
| <t> | ||||
| <t> | ||||
| Note that if the Tunnel Encapsulation attribute is attached to a VPN- | Note that if the Tunnel Encapsulation attribute is attached to a VPN- | |||
| IP route <xref target="RFC4364"/>, and if Inter-AS "option b" (see section 10 | IP route <xref target="RFC4364" format="default"/>, if Inter-AS "option b" (s | |||
| of | ee | |||
| <xref target="RFC4364"/>) is being used, and if the Tunnel Egress Endpoint su | <xref target="RFC4364" sectionFormat="of" section="10"/>) is being used, and | |||
| b-TLV contains | if the Tunnel Egress Endpoint sub-TLV contains | |||
| an IP address that is not in same AS as the router receiving the | an IP address that is not in the same AS as the router receiving the | |||
| route, it is very likely that the embedded label has been changed. | route, it is very likely that the embedded label has been changed. | |||
| Therefore use of the Tunnel Encapsulation attribute in an "Inter-AS option b" scenario is | Therefore, use of the Tunnel Encapsulation attribute in an "Inter-AS option b " scenario is | |||
| not recommended.</t> | not recommended.</t> | |||
| <t> | ||||
| <t> | ||||
| Other documents may define other ways to signal tunnel information in | Other documents may define other ways to signal tunnel information in | |||
| BGP. For example, <xref target="RFC6514"/> defines the "P-Multicast | BGP. For example, <xref target="RFC6514" format="default"/> defines the "P-Mu lticast | |||
| Service Interface Tunnel" (PMSI Tunnel) attribute. In this | Service Interface Tunnel" (PMSI Tunnel) attribute. In this | |||
| specification, we do not consider the effects of advertising the | specification, we do not consider the effects of advertising the | |||
| Tunnel Encapsulation Attribute in conjunction with other forms of | Tunnel Encapsulation attribute in conjunction with other forms of | |||
| signaling tunnels. Any document specifying such joint use MUST | signaling tunnels. Any document specifying such joint use <bcp14>MUST</bcp14> | |||
| provide details as to how interactions should be handled. | provide details as to how interactions should be handled. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | <section anchor="scoping" numbered="true" toc="default"> | |||
| <name>Scoping</name> | ||||
| <section title="Scoping" anchor="scoping"><t> | <t> | |||
| The Tunnel Encapsulation attribute is defined as a transitive | The Tunnel Encapsulation attribute is defined as a transitive | |||
| attribute, so that it may be passed along by BGP speakers that do not | attribute, so that it may be passed along by BGP speakers that do not | |||
| recognize it. However the Tunnel Encapsulation | recognize it. However, the Tunnel Encapsulation | |||
| attribute MUST be used only within a well-defined scope, for example, within | attribute <bcp14>MUST</bcp14> be used only within a well-defined scope, for e | |||
| a | xample, within a | |||
| set of Autonomous Systems that belong to a single administrative | set of ASes that belong to a single administrative | |||
| entity. If the attribute is distributed beyond its intended scope, | entity. If the attribute is distributed beyond its intended scope, | |||
| packets may be sent through tunnels in a manner that is not intended.</t> | packets may be sent through tunnels in a manner that is not intended.</t> | |||
| <t> | ||||
| <t> | ||||
| To prevent the Tunnel Encapsulation attribute from being distributed | To prevent the Tunnel Encapsulation attribute from being distributed | |||
| beyond its intended scope, any BGP speaker that understands the | beyond its intended scope, any BGP speaker that understands the | |||
| attribute MUST be able to filter the attribute from incoming BGP | attribute <bcp14>MUST</bcp14> be able to filter the attribute from incoming B GP | |||
| UPDATE messages. When the attribute is filtered from an incoming | UPDATE messages. When the attribute is filtered from an incoming | |||
| UPDATE, the attribute is neither processed nor distributed. This | UPDATE, the attribute is neither processed nor distributed. This | |||
| filtering SHOULD be possible on a per-BGP-session basis; finer | filtering <bcp14>SHOULD</bcp14> be possible on a per-BGP-session basis; finer | |||
| granularities (for example, per route and/or per attribute TLV) MAY be | granularities (for example, per route and/or per attribute TLV) <bcp14>MAY</b | |||
| cp14> be | ||||
| supported. For each external BGP (EBGP) session, filtering of the attribute on | supported. For each external BGP (EBGP) session, filtering of the attribute on | |||
| incoming UPDATEs MUST be enabled by default.</t> | incoming UPDATEs <bcp14>MUST</bcp14> be enabled by default.</t> | |||
| <t> | ||||
| <t> | In addition, any BGP speaker that understands the attribute <bcp14>MUST</bcp1 | |||
| In addition, any BGP speaker that understands the attribute MUST be | 4> be | |||
| able to filter the attribute from outgoing BGP UPDATE messages. This | able to filter the attribute from outgoing BGP UPDATE messages. This | |||
| filtering SHOULD be possible on a per-BGP-session basis. For each EBGP | filtering <bcp14>SHOULD</bcp14> be possible on a per-BGP-session basis. For | |||
| session, filtering of the attribute on outgoing UPDATEs MUST be | each EBGP | |||
| session, filtering of the attribute on outgoing UPDATEs <bcp14>MUST</bcp14> b | ||||
| e | ||||
| enabled by default.</t> | enabled by default.</t> | |||
| <t> | ||||
| <t> | Since the Encapsulation Extended Community provides a subset | |||
| Since the Tunnel Encapsulation Extended Community provides a subset | ||||
| of the functionality of the Tunnel Encapsulation attribute, these | of the functionality of the Tunnel Encapsulation attribute, these | |||
| considerations apply equally in its case: any BGP speaker that | considerations apply equally in its case: </t> | |||
| understands it MUST be able to filter it from incoming BGP UPDATE | <ul> | |||
| messages, it MUST be possible to filter the Tunnel Encapsulation | <li>Any BGP speaker that | |||
| Extended Community from outgoing messages, and in both cases this | understands it <bcp14>MUST</bcp14> be able to filter it from incoming BGP UPD | |||
| filtering MUST be enabled by default for EBGP sessions. | ATE | |||
| </t> | messages.</li> | |||
| <li>It <bcp14>MUST</bcp14> be possible to filter the Encapsulation | ||||
| </section> | Extended Community from outgoing messages.</li> | |||
| <li>In both cases, this | ||||
| filtering <bcp14>MUST</bcp14> be enabled by default for EBGP sessions.</li> | ||||
| </ul> | ||||
| <section title="Operational Considerations"> | </section> | |||
| <t> | <section numbered="true" toc="default"> | |||
| <name>Operational Considerations</name> | ||||
| <t> | ||||
| A potential operational difficulty arises when tunnels are used, if the | A potential operational difficulty arises when tunnels are used, if the | |||
| size of packets entering the tunnel exceeds the | size of packets entering the tunnel exceeds the | |||
| maximum transmission unit (MTU) the tunnel is capable of supporting. This | maximum transmission unit (MTU) the tunnel is capable of supporting. This | |||
| difficulty can be exacerbated by stacking multiple tunnels, since each | difficulty can be exacerbated by stacking multiple tunnels, since each | |||
| stacked tunnel header further reduces the supportable MTU. This issue is | stacked tunnel header further reduces the supportable MTU. This issue is | |||
| long-standing and well-known. The tunnel | long-standing and well-known. The tunnel | |||
| signaling provided in this specification does nothing to address this | signaling provided in this specification does nothing to address this | |||
| issue, nor to aggravate it (except insofar as it may further increase the | issue, nor to aggravate it (except insofar as it may further increase the | |||
| popularity of tunneling). <!-- A detailed discussion of this issue can be | popularity of tunneling). | |||
| found in <xref target="I-D.ietf-intarea-tunnels"/>. --> | </t> | |||
| </t> | </section> | |||
| </section> | <section anchor="validation-and-error" numbered="true" toc="default"> | |||
| <name>Validation and Error Handling</name> | ||||
| <section title="Validation and Error Handling" anchor="validation-and-err | <t> | |||
| or"><t> | ||||
| The Tunnel Encapsulation attribute is a sequence of TLVs, each of | The Tunnel Encapsulation attribute is a sequence of TLVs, each of | |||
| which is a sequence of sub-TLVs. The final octet of a TLV is | which is a sequence of sub-TLVs. The final octet of a TLV is | |||
| determined by its length field. Similarly, the final octet of a sub- | determined by its Length field. Similarly, the final octet of a sub- | |||
| TLV is determined by its length field. The final octet of a TLV MUST | TLV is determined by its Length field. The final octet of a TLV <bcp14>MUST< | |||
| /bcp14> | ||||
| also be the final octet of its final sub-TLV. If this is not the | also be the final octet of its final sub-TLV. If this is not the | |||
| case, the TLV MUST be considered to be malformed, | case, the TLV <bcp14>MUST</bcp14> be considered to be malformed, | |||
| and the "Treat-as-withdraw" procedure of | and the "Treat-as-withdraw" procedure of | |||
| <xref target="RFC7606"/> is applied. </t> | <xref target="RFC7606" format="default"/> is applied. </t> | |||
| <t> | ||||
| <t> | ||||
| If a Tunnel Encapsulation attribute does not have any valid TLVs, or | If a Tunnel Encapsulation attribute does not have any valid TLVs, or | |||
| it does not have the transitive bit set, the "Treat-as-withdraw" | it does not have the transitive bit set, the "Treat-as-withdraw" | |||
| procedure of <xref target="RFC7606"/> is applied.</t> | procedure of <xref target="RFC7606" format="default"/> is applied.</t> | |||
| <t> | ||||
| <t> | If a Tunnel Encapsulation attribute can be parsed correctly but | |||
| If a Tunnel Encapsulation attribute can be parsed correctly, but | contains a TLV whose tunnel type is not recognized by a particular | |||
| contains a TLV whose Tunnel Type is not recognized by a particular | BGP speaker, that BGP speaker <bcp14>MUST NOT</bcp14> consider the attribute | |||
| BGP speaker, that BGP speaker MUST NOT consider the attribute to be | to be | |||
| malformed. Rather, it MUST | malformed. Rather, it <bcp14>MUST</bcp14> | |||
| interpret the attribute as if that | interpret the attribute as if that | |||
| TLV had not been present. If the route carrying the Tunnel | TLV had not been present. If the route carrying the Tunnel | |||
| Encapsulation attribute is propagated with the attribute, the | Encapsulation attribute is propagated with the attribute, the | |||
| unrecognized TLV MUST remain in the attribute.</t> | unrecognized TLV <bcp14>MUST</bcp14> remain in the attribute.</t> | |||
| <t> | ||||
| <t> | The following sub-TLVs defined in this document <bcp14>MUST NOT</bcp14> occur | |||
| The following sub-TLVs defined in this document MUST NOT occur more | more | |||
| than once in a given Tunnel TLV: Tunnel Egress Endpoint (discussed below), | than once in a given Tunnel TLV: Tunnel Egress Endpoint (discussed below), | |||
| Encapsulation, DS, UDP Destination Port, Embedded Label | Encapsulation, DS, UDP Destination Port, Embedded Label | |||
| Handling, MPLS Label Stack, Prefix-SID. If a Tunnel TLV has more | Handling, MPLS Label Stack, and Prefix-SID. If a Tunnel TLV has more | |||
| than one of any of these sub-TLVs, all but the first occurrence of | than one of any of these sub-TLVs, all but the first occurrence of | |||
| each such sub-TLV type MUST be disregarded. However, the | each such sub-TLV type <bcp14>MUST</bcp14> be disregarded. However, the | |||
| Tunnel TLV containing them MUST NOT be considered to be malformed, | Tunnel TLV containing them <bcp14>MUST NOT</bcp14> be considered to be malfor | |||
| and all the sub-TLVs MUST be propagated if the route carrying the | med, | |||
| and all the sub-TLVs <bcp14>MUST</bcp14> be propagated if the route carrying | ||||
| the | ||||
| Tunnel Encapsulation attribute is propagated.</t> | Tunnel Encapsulation attribute is propagated.</t> | |||
| <t> | ||||
| <t> | ||||
| The following sub-TLVs defined in this document may appear zero or | The following sub-TLVs defined in this document may appear zero or | |||
| more times in a given Tunnel TLV: Protocol Type, Color. Each | more times in a given Tunnel TLV: Protocol Type and Color. Each | |||
| occurrence of such sub-TLVs is meaningful. For example, the Color | occurrence of such sub-TLVs is meaningful. For example, the Color | |||
| sub-TLV may appear multiple times to assign multiple colors to a | sub-TLV may appear multiple times to assign multiple colors to a | |||
| tunnel. </t> | tunnel. </t> | |||
| <t> | ||||
| <t> | ||||
| If a TLV of a Tunnel Encapsulation attribute contains a sub-TLV that | If a TLV of a Tunnel Encapsulation attribute contains a sub-TLV that | |||
| is not recognized by a particular BGP speaker, the BGP speaker MUST | is not recognized by a particular BGP speaker, the BGP speaker <bcp14>MUST</b cp14> | |||
| process that TLV as if the unrecognized sub-TLV had not been present. | process that TLV as if the unrecognized sub-TLV had not been present. | |||
| If the route carrying the Tunnel Encapsulation attribute is | If the route carrying the Tunnel Encapsulation attribute is | |||
| propagated with the attribute, the unrecognized sub-TLV MUST remain in | propagated with the attribute, the unrecognized sub-TLV <bcp14>MUST</bcp14> r emain in | |||
| the attribute.</t> | the attribute.</t> | |||
| <t> | ||||
| <t> | ||||
| In general, if a TLV contains a sub-TLV that is malformed, | In general, if a TLV contains a sub-TLV that is malformed, | |||
| the sub-TLV MUST be treated as if it were an unrecognized sub-TLV. | the sub-TLV <bcp14>MUST</bcp14> be treated as if it were an unrecognized sub- | |||
| There is one exception to this rule -- if a TLV | TLV. | |||
| There is one exception to this rule: if a TLV | ||||
| contains a malformed Tunnel Egress Endpoint sub-TLV (as defined in | contains a malformed Tunnel Egress Endpoint sub-TLV (as defined in | |||
| <xref target="tunnel-egress-endpoint"/>), the entire TLV MUST be ignored, and | <xref target="tunnel-egress-endpoint" format="default"/>), the entire TLV <bc | |||
| MUST be removed from the Tunnel Encapsulation attribute before the | p14>MUST</bcp14> be ignored and <bcp14>MUST</bcp14> be removed from the Tunnel E | |||
| ncapsulation attribute before the | ||||
| route carrying that attribute is distributed.</t> | route carrying that attribute is distributed.</t> | |||
| <t> | ||||
| <t> | ||||
| Within a Tunnel Encapsulation attribute that is carried by a BGP | Within a Tunnel Encapsulation attribute that is carried by a BGP | |||
| UPDATE whose AFI/SAFI is one of those explicitly listed in the second | UPDATE whose AFI/SAFI is one of those explicitly listed in the first | |||
| paragraph of <xref target="usage"/>, a TLV that does not contain exactly one | paragraph of <xref target="usage" format="default"/>, a TLV that does not con | |||
| Tunnel Egress Endpoint sub-TLV MUST be treated as if it contained a | tain exactly one | |||
| Tunnel Egress Endpoint sub-TLV <bcp14>MUST</bcp14> be treated as if it contai | ||||
| ned a | ||||
| malformed Tunnel Egress Endpoint sub-TLV.</t> | malformed Tunnel Egress Endpoint sub-TLV.</t> | |||
| <t> | ||||
| <t> | A TLV identifying a particular tunnel type may contain a sub-TLV that | |||
| A TLV identifying a particular Tunnel Type may contain a sub-TLV that | is meaningless for that tunnel type. For example, perhaps the TLV | |||
| is meaningless for that Tunnel Type. For example, perhaps the TLV | ||||
| contains a UDP Destination Port sub-TLV, but the identified tunnel | contains a UDP Destination Port sub-TLV, but the identified tunnel | |||
| type does not use UDP encapsulation at all, or a tunnel of the form | type does not use UDP encapsulation at all, or a tunnel of the form | |||
| "X-in-Y" contains a Protocol Type sub-TLV that specifies something | "X-in-Y" contains a Protocol Type sub-TLV that specifies something | |||
| other than "X". Sub-TLVs of this sort MUST be disregarded. That is, | other than "X". Sub-TLVs of this sort <bcp14>MUST</bcp14> be disregarded. Th | |||
| they MUST NOT affect the creation of the encapsulation header. | at is, | |||
| However, the sub-TLV MUST NOT be considered to be malformed, and MUST | they <bcp14>MUST NOT</bcp14> affect the creation of the encapsulation header. | |||
| NOT be removed from the TLV before the route carrying the Tunnel | However, the sub-TLV <bcp14>MUST NOT</bcp14> be considered to be malformed an | |||
| Encapsulation attribute is distributed. An implementation MAY log a | d <bcp14>MUST NOT</bcp14> be removed from the TLV before the route carrying | |||
| the Tunnel | ||||
| Encapsulation attribute is distributed. An implementation <bcp14>MAY</bcp14> | ||||
| log a | ||||
| message when it encounters such a sub-TLV.</t> | message when it encounters such a sub-TLV.</t> | |||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>IANA Considerations</name> | ||||
| <t> | ||||
| IANA has made the updates described in the following subsections. | ||||
| All registration | ||||
| procedures listed are per their definitions in | ||||
| <xref target="RFC8126" format="default"/>.</t> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Obsoleting RFC 5512</name> | ||||
| <t> | ||||
| Because this document obsoletes RFC 5512, IANA has updated | ||||
| references to RFC 5512 to point to this document in the following registries: | ||||
| </t> | ||||
| <ul> | ||||
| <li>"Border Gateway Protocol (BGP) Extended Communities" registry <xref target=" | ||||
| IANA-BGP-EXT-COMM" /></li> | ||||
| <li>"Border Gateway Protocol (BGP) Parameters" registry <xref target="IANA-BGP-P | ||||
| ARAMS" /></li> | ||||
| <li>"Border Gateway Protocol (BGP) Tunnel Encapsulation" registry <xref target=" | ||||
| IANA-BGP-TUNNEL-ENCAP" /></li> | ||||
| <li>"Subsequent Address Family Identifiers (SAFI) Parameters" registry <xref tar | ||||
| get="IANA-SAFI" /></li> | ||||
| </ul> | ||||
| </section> | </section> | |||
| <section anchor="obsoleting-5566-and-5640" numbered="true" toc="default"> | ||||
| <section title="IANA Considerations"> | <name>Obsoleting Code Points Assigned by RFC 5566</name> | |||
| <t> | <t> | |||
| This document makes the following requests of IANA. (All registration | ||||
| procedures listed below are per their definitions in | ||||
| <xref target="RFC8126"/>.)</t> | ||||
| <section title="Obsoleting RFC 5512"> | ||||
| <t> | ||||
| Because this document obsoletes RFC 5512, change all registration | ||||
| information that references <xref target="RFC5512"/> to instead reference thi | ||||
| s document.</t> | ||||
| </section> | ||||
| <section title="Obsoleting Code Points Assigned by RFCs 5566" | ||||
| anchor="obsoleting-5566-and-5640"> | ||||
| <t> | ||||
| Since this document obsoletes RFC 5566, the code points | Since this document obsoletes RFC 5566, the code points | |||
| assigned by that RFC are similarly obsoleted. Specifically, the | assigned by that RFC are similarly obsoleted. Specifically, the | |||
| following code points should be marked as deprecated.</t> | following code points have been marked as deprecated.</t> | |||
| <t> | ||||
| <t> | In the | |||
| In the "BGP Tunnel Encapsulation Attribute Tunnel Types" registry:</t> | "BGP Tunnel Encapsulation Attribute Tunnel Types" registry <xref target="IANA-BG | |||
| P-TUNNEL-ENCAP" />:</t> | ||||
| <texttable> | <table align="center"> | |||
| <ttcol>Value</ttcol> | <thead> | |||
| <ttcol>Name</ttcol> | <tr> | |||
| <c>3</c> | <th align="left">Value</th> | |||
| <c>Transmit tunnel endpoint</c> | <th align="left">Name</th> | |||
| <c>4</c> | </tr> | |||
| <c>IPsec in Tunnel-mode</c> | </thead> | |||
| <c>5</c> | <tbody> | |||
| <c>IP in IP tunnel with IPsec Transport Mode</c> | <tr> | |||
| <c>6</c> | <td align="left">3</td> | |||
| <c>MPLS-in-IP tunnel with IPsec Transport Mode</c> | <td align="left">Transmit tunnel endpoint (DEPRECATED)</td> | |||
| </texttable> | </tr> | |||
| <tr> | ||||
| <t> | <td align="left">4</td> | |||
| And in the "BGP Tunnel Encapsulation Attribute Sub-TLVs" registry:</t> | <td align="left">IPsec in Tunnel-mode (DEPRECATED)</td> | |||
| </tr> | ||||
| <texttable> | <tr> | |||
| <ttcol>Value</ttcol> | <td align="left">5</td> | |||
| <ttcol>Name</ttcol> | <td align="left">IP in IP tunnel with IPsec Transport Mode (DEPREC | |||
| <c>3</c> | ATED)</td> | |||
| <c>IPsec Tunnel Authenticator</c> | </tr> | |||
| </texttable> | <tr> | |||
| <td align="left">6</td> | ||||
| </section> | <td align="left">MPLS-in-IP tunnel with IPsec Transport Mode (DEPR | |||
| ECATED)</td> | ||||
| <section title="BGP Tunnel Encapsulation Parameters Grouping"> | </tr> | |||
| <t> | </tbody> | |||
| Create a new registry grouping, to be named | </table> | |||
| "BGP Tunnel Encapsulation Parameters". | <t> | |||
| </t> | And in the "BGP Tunnel Encapsulation Attribute Sub-TLVs" registry <xref t | |||
| </section> | arget="IANA-BGP-TUNNEL-ENCAP" />:</t> | |||
| <table align="center"> | ||||
| <section title="BGP Tunnel Encapsulation Attribute Tunnel Types"> | <thead> | |||
| <t> | <tr> | |||
| Relocate the "BGP Tunnel Encapsulation Attribute Tunnel Types" registry to be | <th align="left">Value</th> | |||
| under the "BGP Tunnel Encapsulation Parameters" grouping. | <th align="left">Name</th> | |||
| </t> | </tr> | |||
| </section> | </thead> | |||
| <tbody> | ||||
| <section title="Subsequent Address Family Identifiers"><t> | <tr> | |||
| Modify the "Subsequent Address Family Identifiers" registry to | <td align="left">3</td> | |||
| indicate that the Encapsulation SAFI (value 7) is | <td align="left">IPsec Tunnel Authenticator (DEPRECATED)</td> | |||
| obsoleted. This document should be the reference.</t> | </tr> | |||
| </tbody> | ||||
| </section> | </table> | |||
| </section> | ||||
| <section title="BGP Tunnel Encapsulation Attribute Sub-TLVs"> | <section numbered="true" toc="default"> | |||
| <t> | <name>Border Gateway Protocol (BGP) Tunnel Encapsulation Grouping</name> | |||
| Relocate the "BGP Tunnel Encapsulation Attribute Sub-TLVs" registry to be und | <t> | |||
| er | IANA has created a new registry grouping named | |||
| the "BGP Tunnel Encapsulation Parameters" grouping.</t> | "Border Gateway Protocol (BGP) Tunnel Encapsulation" <xref target="IANA-BGP-T | |||
| UNNEL-ENCAP"/>. | ||||
| <t> | </t> | |||
| Add the following note to the registry:</t> | </section> | |||
| <section numbered="true" toc="default"> | ||||
| <t><list hangIndent="3" style="hanging"><t> | <name>BGP Tunnel Encapsulation Attribute Tunnel Types</name> | |||
| If the Sub-TLV Type is in the range from 0 to 127 inclusive, the | <t> | |||
| IANA has relocated the "BGP Tunnel Encapsulation Attribute Tunnel Types" regi | ||||
| stry to be | ||||
| under the "Border Gateway Protocol (BGP) Tunnel Encapsulation" grouping <xref | ||||
| target="IANA-BGP-TUNNEL-ENCAP"/>. | ||||
| </t> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Subsequent Address Family Identifiers</name> | ||||
| <t> | ||||
| IANA has modified the "SAFI Values" registry <xref target="IANA-SAFI"/> to | ||||
| indicate that the Encapsulation SAFI (value 7) has been | ||||
| obsoleted. This document is listed as the reference for this change.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>BGP Tunnel Encapsulation Attribute Sub-TLVs</name> | ||||
| <t> | ||||
| IANA has relocated the "BGP Tunnel Encapsulation Attribute Sub-TLVs" registry | ||||
| to be under | ||||
| the "Border Gateway Protocol (BGP) Tunnel Encapsulation" grouping <xref targe | ||||
| t="IANA-BGP-TUNNEL-ENCAP"/>.</t> | ||||
| <t> | ||||
| IANA has included the following note to the registry:</t> | ||||
| <blockquote> | ||||
| If the Sub-TLV Type is in the range from 0 to 127 (inclusive), the | ||||
| Sub-TLV Length field contains one octet. If the Sub-TLV Type is | Sub-TLV Length field contains one octet. If the Sub-TLV Type is | |||
| in the range from 128-255 inclusive, the Sub-TLV Length field | in the range from 128 to 255 (inclusive), the Sub-TLV Length field | |||
| contains two octets.</t> | contains two octets. | |||
| </blockquote> | ||||
| </list> | <t> | |||
| </t> | IANA has updated the registration procedures of the | |||
| <t> | ||||
| Change the registration policy of the | ||||
| registry to the following:</t> | registry to the following:</t> | |||
| <table align="center"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th align="left">Range</th> | ||||
| <th align="left">Registration Procedures</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td align="left">1-63</td> | ||||
| <td align="left">Standards Action</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">64-125</td> | ||||
| <td align="left">First Come First Served</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">126-127</td> | ||||
| <td align="left">Experimental Use</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">128-191</td> | ||||
| <td align="left">Standards Action</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">192-252</td> | ||||
| <td align="left">First Come First Served</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">253-254</td> | ||||
| <td align="left">Experimental Use</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <texttable> | <t>IANA has added the following entries to this registry:</t> | |||
| <ttcol>Value(s)</ttcol> | <table align="center"> | |||
| <ttcol>Registration Procedure</ttcol> | <thead> | |||
| <c>0</c> | <tr> | |||
| <c>Reserved</c> | <th align="left">Value</th> | |||
| <c>1-63</c> | <th align="left">Description</th> | |||
| <c>Standards Action</c> | <th align="left">Reference</th> | |||
| <c>64-125</c> | </tr> | |||
| <c>First Come First Served</c> | </thead> | |||
| <c>126-127</c> | <tbody> | |||
| <c>Experimental Use</c> | <tr> | |||
| <c>128-191</c> | <td align="left">0</td> | |||
| <c>Standards Action</c> | <td align="left">Reserved</td> | |||
| <c>192-252</c> | <td align="left">RFC 9012</td> | |||
| <c>First Come First Served</c> | </tr> | |||
| <c>253-254</c> | <tr> | |||
| <c>Experimental Use</c> | <td align="left">6</td> | |||
| <c>255</c> | <td align="left">Tunnel Egress Endpoint</td> | |||
| <c>Reserved</c> | <td align="left">RFC 9012</td> | |||
| </texttable> | </tr> | |||
| <tr> | ||||
| <t>Rename the following entries within the registry:</t> | <td align="left">7</td> | |||
| <td align="left">DS Field</td> | ||||
| <texttable> | <td align="left">RFC 9012</td> | |||
| <ttcol>Value</ttcol> | </tr> | |||
| <ttcol>Old Name</ttcol> | ||||
| <ttcol>New Name</ttcol> | ||||
| <c>6</c> | ||||
| <c>Remote Endpoint</c> | ||||
| <c>Tunnel Egress Endpoint</c> | ||||
| <c>7</c> | ||||
| <c>IPv4 DS Field</c> | ||||
| <c>DS Field</c> | ||||
| </texttable> | ||||
| </section> | ||||
| <section title="Flags Field of VXLAN Encapsulation sub-TLV"> | ||||
| <t>Create a registry named "Flags Field of VXLAN Encapsulation sub-TLV" u | <tr> | |||
| nder | <td align="left">8</td> | |||
| the "BGP Tunnel Encapsulation Parameters" grouping. The registration policy f | <td align="left">UDP Destination Port</td> | |||
| or | <td align="left">RFC 9012</td> | |||
| this registry is "Standards Action". The minimum possible value is 0, the | </tr> | |||
| <tr> | ||||
| <td align="left">9</td> | ||||
| <td align="left">Embedded Label Handling</td> | ||||
| <td align="left">RFC 9012</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">10</td> | ||||
| <td align="left">MPLS Label Stack</td> | ||||
| <td align="left">RFC 9012</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">11</td> | ||||
| <td align="left">Prefix-SID</td> | ||||
| <td align="left">RFC 9012</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td align="left">255</td> | ||||
| <td align="left">Reserved</td> | ||||
| <td align="left">RFC 9012</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Flags Field of VXLAN Encapsulation Sub-TLV</name> | ||||
| <t>IANA has created a registry named "Flags Field of VXLAN Encapsulation | ||||
| Sub-TLVs" under | ||||
| the "Border Gateway Protocol (BGP) Tunnel Encapsulation" grouping <xref targe | ||||
| t="IANA-BGP-TUNNEL-ENCAP"/>. The registration policy for | ||||
| this registry is "Standards Action". The minimum possible value is 0, and the | ||||
| maximum is 7.</t> | maximum is 7.</t> | |||
| <t>The initial values for this new registry are indicated in <xref targe | ||||
| <t>The initial values for this new registry are indicated below.</t> | t="flags-vxlan"/>.</t> | |||
| <table align="center" anchor="flags-vxlan"> | ||||
| <texttable> | <thead> | |||
| <ttcol align='center'>Bit Position</ttcol> | <tr> | |||
| <ttcol align='left'>Description</ttcol> | <th align="center">Bit Position</th> | |||
| <ttcol align='left'>Reference</ttcol> | <th align="left">Description</th> | |||
| <c>0</c> | <th align="left">Reference</th> | |||
| <c>V (VN-ID)</c> | </tr> | |||
| <c>(this document)</c> | </thead> | |||
| <c>1</c> | <tbody> | |||
| <c>M (MAC Address)</c> | <tr> | |||
| <c>(this document)</c> | <td align="center">0</td> | |||
| </texttable> | <td align="left">V (VN-ID)</td> | |||
| <td align="left">RFC 9012</td> | ||||
| </section> | </tr> | |||
| <tr> | ||||
| <section title="Flags Field of NVGRE Encapsulation sub-TLV"> | <td align="center">1</td> | |||
| <t>Create a registry named "Flags Field of NVGRE Encapsulation sub-TLV" u | <td align="left">M (MAC Address)</td> | |||
| nder | <td align="left">RFC 9012</td> | |||
| the "BGP Tunnel Encapsulation Parameters" grouping. The registration policy f | </tr> | |||
| or | </tbody> | |||
| this registry is "Standards Action". The minimum possible value is 0, the | </table> | |||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Flags Field of NVGRE Encapsulation Sub-TLV</name> | ||||
| <t>IANA has created a registry named "Flags Field of NVGRE Encapsulation | ||||
| Sub-TLVs" under | ||||
| the "Border Gateway Protocol (BGP) Tunnel Encapsulation" grouping <xref targe | ||||
| t="IANA-BGP-TUNNEL-ENCAP"/>. The registration policy for | ||||
| this registry is "Standards Action". The minimum possible value is 0, and the | ||||
| maximum is 7.</t> | maximum is 7.</t> | |||
| <t>The initial values for this new registry are indicated in <xref targe | ||||
| <t>The initial values for this new registry are indicated below.</t> | t="flags-nvgre"/>.</t> | |||
| <table align="center" anchor="flags-nvgre"> | ||||
| <texttable> | <thead> | |||
| <ttcol align='center'>Bit Position</ttcol> | <tr> | |||
| <ttcol align='left'>Description</ttcol> | <th align="center">Bit Position</th> | |||
| <ttcol align='left'>Reference</ttcol> | <th align="left">Description</th> | |||
| <c>0</c> | <th align="left">Reference</th> | |||
| <c>V (VN-ID)</c> | </tr> | |||
| <c>(this document)</c> | </thead> | |||
| <c>1</c> | <tbody> | |||
| <c>M (MAC Address)</c> | <tr> | |||
| <c>(this document)</c> | <td align="center">0</td> | |||
| </texttable> | <td align="left">V (VN-ID)</td> | |||
| <td align="left">RFC 9012</td> | ||||
| </section> | </tr> | |||
| <tr> | ||||
| <section title="Embedded Label Handling sub-TLV"> | <td align="center">1</td> | |||
| <t>Create a registry named "Embedded Label Handling sub-TLV" under | <td align="left">M (MAC Address)</td> | |||
| the "BGP Tunnel Encapsulation Parameters" grouping. The registration policy f | <td align="left">RFC 9012</td> | |||
| or | </tr> | |||
| this registry is "Standards Action". The minimum possible value is 0, the | </tbody> | |||
| </table> | ||||
| </section> | ||||
| <section numbered="true" toc="default"> | ||||
| <name>Embedded Label Handling Sub-TLV</name> | ||||
| <t>IANA has created a registry named "Embedded Label Handling Sub-TLVs" | ||||
| under | ||||
| the "Border Gateway Protocol (BGP) Tunnel Encapsulation" grouping <xref targe | ||||
| t="IANA-BGP-TUNNEL-ENCAP"/>. The registration policy for | ||||
| this registry is "Standards Action". The minimum possible value is 0, and the | ||||
| maximum is 255.</t> | maximum is 255.</t> | |||
| <t>The initial values for this new registry are indicated in <xref targe | ||||
| <t>The initial values for this new registry are indicated below.</t> | t="embedded-label"/>.</t> | |||
| <table align="center" anchor="embedded-label"> | ||||
| <texttable> | <thead> | |||
| <ttcol align='center'>Value</ttcol> | <tr> | |||
| <ttcol align='left'>Description</ttcol> | <th align="center">Value</th> | |||
| <ttcol align='left'>Reference</ttcol> | <th align="left">Description</th> | |||
| <c>0</c> | <th align="left">Reference</th> | |||
| <c>Reserved</c> | </tr> | |||
| <c>(this document)</c> | </thead> | |||
| <c>1</c> | <tbody> | |||
| <c>Payload of MPLS with embedded label</c> | <tr> | |||
| <c>(this document)</c> | <td align="center">0</td> | |||
| <c>2</c> | <td align="left">Reserved</td> | |||
| <c>no embedded label in payload</c> | <td align="left">RFC 9012</td> | |||
| <c>(this document)</c> | </tr> | |||
| </texttable> | <tr> | |||
| <td align="center">1</td> | ||||
| </section> | <td align="left">Payload of MPLS with embedded label</td> | |||
| <td align="left">RFC 9012</td> | ||||
| <section title="Color Extended Community Flags" anchor="color-extcomm-fla | </tr> | |||
| gs"> | <tr> | |||
| <t>Create a registry named "Color Extended Community Flags" under | <td align="center">2</td> | |||
| the "BGP Tunnel Encapsulation Parameters" grouping. The registration policy f | <td align="left">No embedded label in payload</td> | |||
| or | <td align="left">RFC 9012</td> | |||
| this registry is "Standards Action". The minimum possible value is 0, the | </tr> | |||
| </tbody> | ||||
| </table> | ||||
| </section> | ||||
| <section anchor="color-extcomm-flags" numbered="true" toc="default"> | ||||
| <name>Color Extended Community Flags</name> | ||||
| <t>IANA has created a registry named "Color Extended Community Flags" un | ||||
| der | ||||
| the "Border Gateway Protocol (BGP) Tunnel Encapsulation" grouping <xref targe | ||||
| t="IANA-BGP-TUNNEL-ENCAP"/>. The registration policy for | ||||
| this registry is "Standards Action". The minimum possible value is 0, and the | ||||
| maximum is 15.</t> | maximum is 15.</t> | |||
| <t> This new registry contains columns for "Bit Position", "Descriptio | ||||
| <t>No initial values are to be registered. The format of the registry | n", and | |||
| is shown below.</t> | "Reference". No values have currently been registered. | |||
| </t> | ||||
| <texttable> | </section> | |||
| <ttcol align='center'>Bit Position</ttcol> | </section> | |||
| <ttcol align='left'>Description</ttcol> | <section anchor="security" numbered="true" toc="default"> | |||
| <ttcol align='left'>Reference</ttcol> | <name>Security Considerations</name> | |||
| </texttable> | <t> | |||
| As <xref target="scoping" format="default"/> discusses, it is intended that t | ||||
| </section> | he | |||
| </section> | ||||
| <section title="Security Considerations" anchor="security"> | ||||
| <t> | ||||
| As <xref target="scoping"/> discusses, it is intended that the | ||||
| Tunnel Encapsulation attribute be used only within a well-defined | Tunnel Encapsulation attribute be used only within a well-defined | |||
| scope, for example, within a set of Autonomous Systems that belong to a | scope, for example, within a set of ASes that belong to a | |||
| single administrative entity. As long as the filtering mechanisms | single administrative entity. As long as the filtering mechanisms | |||
| discussed in that section are applied diligently, an attacker outside | discussed in that section are applied diligently, an attacker outside | |||
| the scope would not be able to use the Tunnel Encapsulation attribute | the scope would not be able to use the Tunnel Encapsulation attribute | |||
| in an attack. This leaves open the questions of attackers within the | in an attack. This leaves open the questions of attackers within the | |||
| scope (for example, a compromised router) and failures in filtering | scope (for example, a compromised router) and failures in filtering | |||
| that allow an external attack to succeed. | that allow an external attack to succeed. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | As <xref target="RFC4272" format="default"/> discusses, BGP is vulnerable to | |||
| As <xref target="RFC4272"/> discusses, BGP is vulnerable to traffic | traffic-diversion attacks. The Tunnel Encapsulation attribute adds a new | |||
| diversion attacks. The Tunnel Encapsulation attribute adds a new | ||||
| means by which an attacker could cause traffic to be diverted from | means by which an attacker could cause traffic to be diverted from | |||
| its normal path, especially when the Tunnel Egress Endpoint sub-TLV | its normal path, especially when the Tunnel Egress Endpoint sub-TLV | |||
| is used. Such an attack would differ from pre-existing | is used. Such an attack would differ from pre-existing | |||
| vulnerabilities in that traffic could be tunneled to a distant target | vulnerabilities in that traffic could be tunneled to a distant target | |||
| across intervening network infrastructure, allowing an attack to | across intervening network infrastructure, allowing an attack to | |||
| potentially succeed more easily, since less infrastructure would have | potentially succeed more easily, since less infrastructure would have | |||
| to be subverted. Potential consequences include "hijacking" of | to be subverted. Potential consequences include "hijacking" of | |||
| traffic (insertion of an undesired node in the path allowing for | traffic (insertion of an undesired node in the path, which allows for | |||
| inspection or modification of traffic, or avoidance of security | inspection or modification of traffic, or avoidance of security | |||
| controls) or denial of service (directing traffic to a node that | controls) or denial of service (directing traffic to a node that | |||
| doesn't desire to receive it). | doesn't desire to receive it). | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| In order to further mitigate the risk of diversion of traffic from | In order to further mitigate the risk of diversion of traffic from | |||
| its intended destination, <xref target="address-validation"/> | its intended destination, <xref target="address-validation" format="default"/ > | |||
| provides an optional procedure to check that the destination given in | provides an optional procedure to check that the destination given in | |||
| a Tunnel Egress Endpoint sub-TLV is within the AS that was the source | a Tunnel Egress Endpoint sub-TLV is within the AS that was the source | |||
| of the route. One then has some level of assurance that the tunneled | of the route. One then has some level of assurance that the tunneled | |||
| traffic is going to the same destination AS that it would have gone | traffic is going to the same destination AS that it would have gone | |||
| to had the Tunnel Encapsulation attribute not been present. As RFC | to had the Tunnel Encapsulation attribute not been present. As RFC | |||
| 4272 discusses, it's possible for an attacker to announce an | 4272 discusses, it's possible for an attacker to announce an | |||
| inaccurate AS_PATH, therefore an attacker with the ability to inject | inaccurate AS_PATH; therefore, an attacker with the ability to inject | |||
| a Tunnel Egress Endpoint sub-TLV could equally craft an AS_PATH that would | a Tunnel Egress Endpoint sub-TLV could equally craft an AS_PATH that would | |||
| pass the validation procedures of <xref | pass the validation procedures of <xref target="address-validation" format="d | |||
| target="address-validation"/>. BGP Origin Validation <xref | efault"/>. BGP origin validation <xref target="RFC6811" format="default"/> and B | |||
| target="RFC6811"/> and BGPsec <xref target="RFC8205"/> provide means | GPsec <xref target="RFC8205" format="default"/> provide means to increase assura | |||
| to increase assurance that the origins being validated have not been | nce that the origins being validated have not been | |||
| falsified. | falsified. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | ||||
| Many tunnels carry traffic that embeds a destination address that comes | Many tunnels carry traffic that embeds a destination address that comes | |||
| from a non-global namespace. One example is MPLS VPNs. If a tunnel | from a non-global namespace. One example is MPLS VPNs. If a tunnel | |||
| crosses from one namespace to another, without the necessary translation | crosses from one namespace to another, without the necessary translation | |||
| being performed for the embedded address(es), there exists a risk of | being performed for the embedded address(es), there exists a risk of | |||
| misdelivery of traffic. If the traffic contains confidential data that's | misdelivery of traffic. If the traffic contains confidential data that's | |||
| not otherwise protected (for example, by end-to-end encryption) then | not otherwise protected (for example, by end-to-end encryption), then | |||
| confidential information could be revealed. The restriction of applicability | confidential information could be revealed. The restriction of applicability | |||
| of the Tunnel Encapsulation attribute to a well-defined scope limits the | of the Tunnel Encapsulation attribute to a well-defined scope limits the | |||
| likelihood of this occurring. See the discussion of "option b" in | likelihood of this occurring. See the discussion of "option b" in | |||
| <xref target="applicability"/> for further discussion of one such | <xref target="applicability" format="default"/> for further discussion of one such | |||
| scenario. | scenario. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | RFC 8402 specifies that "SR domain boundary routers <bcp14>MUST</bcp14> filte | |||
| RFC 8402 specifies that "SR domain boundary routers MUST filter any | r any | |||
| external traffic" (<xref target="RFC8402"/> Section 8.1). For these | external traffic" (<xref target="RFC8402" sectionFormat="comma" section="8.1" | |||
| purposes, traffic introduced into a SR domain using the Prefix-SID | />). For these | |||
| sub-TLV lies within the SR domain, even though the prefix-SIDs used | purposes, traffic introduced into an SR domain using the Prefix-SID | |||
| sub-TLV lies within the SR domain, even though the Prefix-SIDs used | ||||
| by the routers at the two ends of the tunnel may be different, as | by the routers at the two ends of the tunnel may be different, as | |||
| discussed in <xref target="prefix-sid"/>. This implies that the duty | discussed in <xref target="prefix-sid" format="default"/>. This implies that the duty | |||
| to filter external traffic extends to all routers participating in | to filter external traffic extends to all routers participating in | |||
| such tunnels. | such tunnels. | |||
| </t> | </t> | |||
| </section> | ||||
| </section> | </middle> | |||
| <back> | ||||
| <section title="Acknowledgments"><t> | ||||
| This document contains text from RFC 5512, authored by Pradosh | ||||
| Mohapatra and Eric Rosen. The authors of the current document wish to thank | ||||
| them for their contribution. RFC 5512 itself built upon prior work by Gargi | ||||
| Nalawade, Ruchi Kapoor, Dan Tappan, David Ward, Scott Wainner, Simon | ||||
| Barber, Lili Wang, and Chris Metz, whom the authors also thank for their | ||||
| contributions. Eric Rosen was the principal author of earlier versions | ||||
| of this document.</t> | ||||
| <t> | ||||
| The authors wish to thank Lou Berger, Ron Bonica, Martin Djernaes, | ||||
| John Drake, Susan Hares, Satoru Matsushima, Thomas Morin, Dhananjaya Rao, Rav | ||||
| i | ||||
| Singh, Harish Sitaraman, Brian Trammell, Xiaohu Xu, and Zhaohui Zhang for the | ||||
| ir review, | ||||
| comments, and/or helpful discussions. Alvaro Retana provided an | ||||
| especially comprehensive review.</t> | ||||
| </section> | ||||
| <section title="Contributor Addresses"><t> | <displayreference target="I-D.ietf-bess-evpn-inter-subnet-forwarding" to="EVPN-I | |||
| Below is a list of other contributing authors in alphabetical order:</t> | NTER-SUBNET"/> | |||
| <figure><artwork><![CDATA[ | <references> | |||
| Randy Bush | <name>References</name> | |||
| Internet Initiative Japan | <references> | |||
| 5147 Crystal Springs | <name>Normative References</name> | |||
| Bainbridge Island, Washington 98110 | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| United States | FC.2119.xml"/> | |||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7606.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8174.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2784.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2890.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3032.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3270.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.3931.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4023.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5129.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5462.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6811.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7348.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7637.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4271.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6890.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8669.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.2474.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4760.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8126.xml"/> | ||||
| </references> | ||||
| <references> | ||||
| <name>Informative References</name> | ||||
| Email: randy@psg.com | <!-- [I-D.ietf-bess-evpn-inter-subnet-forwarding] IESG state IESG Evaluation::AD Followup --> | |||
| Robert Raszuk | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/reference.I-D | |||
| Bloomberg LP | .ietf-bess-evpn-inter-subnet-forwarding.xml"/> | |||
| 731 Lexington Ave | ||||
| New York City, NY 10022 | ||||
| United States | ||||
| Email: robert@raszuk.net | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
| FC.4272.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.4364.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5565.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5640.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8205.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8277.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5566.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.7510.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.5512.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.6514.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8365.xml"/> | ||||
| <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
| FC.8402.xml"/> | ||||
| Eric C. Rosen | <reference anchor="IANA-BGP-TUNNEL-ENCAP" | |||
| target="https://www.iana.org/assignments/bgp-tunnel-encapsulation/"> | ||||
| <front> | ||||
| <title>Border Gateway Protocol (BGP) Tunnel Encapsulation</title> | ||||
| <author><organization>IANA</organization></author> | ||||
| </front> | ||||
| </reference> | ||||
| ]]></artwork> | <reference anchor="IANA-BGP-PARAMS" | |||
| </figure> | target="https://www.iana.org/assignments/bgp-parameters/"> | |||
| </section> | <front> | |||
| <title>Border Gateway Protocol (BGP) Parameters</title> | ||||
| <author><organization>IANA</organization></author> | ||||
| </front> | ||||
| </reference> | ||||
| </middle> | <reference anchor="IANA-ADDRESS-FAM" | |||
| target="https://www.iana.org/assignments/address-family-numbers/"> | ||||
| <front> | ||||
| <title>Address Family Numbers</title> | ||||
| <author><organization>IANA</organization></author> | ||||
| </front> | ||||
| </reference> | ||||
| <back> | <reference anchor="IANA-ETHERTYPES" | |||
| <references title="Normative References"> | target="https://www.iana.org/assignments/ieee-802-numbers/"> | |||
| &RFC2119; | <front> | |||
| &RFC7606; | <title>IEEE 802 Numbers: ETHER TYPES</title> | |||
| &RFC8174; | <author><organization>IANA</organization></author> | |||
| &RFC2784; | </front> | |||
| &RFC2890; | </reference> | |||
| &RFC3032; | ||||
| &RFC3270; | ||||
| &RFC3931; | ||||
| &RFC4023; | ||||
| &RFC5129; | ||||
| &RFC5462; | ||||
| &RFC6811; | ||||
| &RFC7348; | ||||
| &RFC7637; | ||||
| &RFC4271; | ||||
| &RFC6890; | ||||
| &RFC8669; | ||||
| &RFC2474; | ||||
| &RFC4760; | ||||
| &RFC8126; | ||||
| </references> | <reference anchor="IANA-BGP-EXT-COMM" | |||
| <references title="Informative References"> | target="https://www.iana.org/assignments/bgp-extended-communities/"> | |||
| <reference anchor="Ethertypes" target="http://www.iana.org/assignments/ie | <front> | |||
| ee-802-numbers/ieee-802-numbers.xhtml"><front> | <title>Border Gateway Protocol (BGP) Extended Communities</title> | |||
| <title>IANA Ethertype Registry</title> | <author><organization>IANA</organization></author> | |||
| <author> | </front> | |||
| </author> | </reference> | |||
| <date/> | <reference anchor="IANA-SAFI" | |||
| </front> | target="https://www.iana.org/assignments/safi-namespace/"> | |||
| <front> | ||||
| <title>Subsequent Address Family Identifiers (SAFI) Parameters</title> | ||||
| <author><organization>IANA</organization></author> | ||||
| </front> | ||||
| </reference> | ||||
| </reference> | ||||
| &I-D.ietf-bess-evpn-inter-subnet-forwarding; | ||||
| &RFC4272; | ||||
| &RFC4364; | ||||
| &RFC5565; | ||||
| &RFC5640; | ||||
| &RFC8205; | ||||
| &RFC8277; | ||||
| &RFC5566; | ||||
| &RFC7510; | ||||
| &RFC5512; | ||||
| &RFC6514; | ||||
| &RFC8365; | ||||
| &RFC8402; | ||||
| <!--> &I-D.ietf-intarea-tunnels;--> | ||||
| </references> | </references> | |||
| </references> | ||||
| <section title="Impact on RFC 8365" anchor="impact-on-8365"> | <section anchor="impact-on-8365" numbered="true" toc="default"> | |||
| <t> | <name>Impact on RFC 8365</name> | |||
| <xref target="RFC8365"/> references RFC 5512 for its definition of | <t> | |||
| <xref target="RFC8365" format="default"/> references RFC 5512 for its def | ||||
| inition of | ||||
| the BGP Encapsulation Extended Community. That extended community is | the BGP Encapsulation Extended Community. That extended community is | |||
| now defined in this document, in a way consistent with its previous | now defined in this document, in a way consistent with its previous | |||
| definition. | definition. | |||
| </t> | </t> | |||
| <t> | ||||
| <t> | <xref target="RFC8365" section="6"/> talks about the use of the Encapsula | |||
| RFC 8365 talks in Section 6 about the use of the Encapsulation Extended | tion Extended | |||
| Community to allow Network Virtualization Edge devices (NVEs) to | Community to allow Network Virtualization Edge (NVE) devices to | |||
| signal their supported encapsulations. We | signal their supported encapsulations. We | |||
| note that with the introduction of this specification, the Tunnel | note that with the introduction of this specification, the Tunnel | |||
| Encapsulation Attribute can also be used for this purpose. For purposes | Encapsulation attribute can also be used for this purpose. For purposes | |||
| where RFC 8365 talks about "advertising supported encapsulations" (for | where RFC 8365 talks about "advertising supported encapsulations" (for | |||
| example, in the second paragraph of Section 6), encapsulations advertised | example, in the second paragraph of Section <xref target="RFC8365" sectio | |||
| using the Tunnel Encapsulation Attribute should be considered equally wit | n="6" sectionFormat="bare"/>), encapsulations advertised | |||
| h | using the Tunnel Encapsulation attribute should be considered equally wit | |||
| h | ||||
| those advertised using the Encapsulation Extended Community. | those advertised using the Encapsulation Extended Community. | |||
| </t> | </t> | |||
| <t> | ||||
| In particular, a review of <xref target="RFC8365" section="8.3.1" /> is c | ||||
| alled for, to | ||||
| consider whether the introduction of the Tunnel Encapsulation attribute | ||||
| creates a need for any revisions to the split-horizon procedures. | ||||
| </t> | ||||
| <t> | ||||
| <xref target="RFC8365" format="default"/> also refers to a draft version | ||||
| of this specification in | ||||
| the final paragraph of Section <xref target="RFC8365" section="5.1.3" sec | ||||
| tionFormat="bare" />. That paragraph references | ||||
| Section 8.2.2.2 of the draft. In this document, the correct reference | ||||
| would be <xref target="no-valid-vni" format="default"/>. There are no sub | ||||
| stantive | ||||
| differences between the section in the referenced draft version and that | ||||
| in | ||||
| this document. | ||||
| </t> | ||||
| </section> | ||||
| <section numbered="false" toc="default"> | ||||
| <name>Acknowledgments</name> | ||||
| <t> | ||||
| This document contains text from RFC 5512, authored by <contact fullname="Pra | ||||
| dosh Mohapatra"/> and <contact fullname="Eric Rosen"/>. The authors of the curr | ||||
| ent document wish to thank | ||||
| them for their contribution. RFC 5512 itself built upon prior work by <conta | ||||
| ct fullname="Gargi Nalawade"/>, <contact fullname="Ruchi Kapoor"/>, <contact ful | ||||
| lname="Dan Tappan"/>, <contact fullname="David Ward"/>, <contact fullname="Scott | ||||
| Wainner"/>, <contact fullname="Simon Barber"/>, <contact fullname="Lili Wang"/> | ||||
| , and <contact fullname="Chris Metz"/>, whom the authors also thank for their | ||||
| contributions. <contact fullname="Eric Rosen"/> was the principal author of e | ||||
| arlier versions | ||||
| of this document.</t> | ||||
| <t> | ||||
| The authors wish to thank <contact fullname="Lou Berger"/>, <contact fullname | ||||
| ="Ron Bonica"/>, <contact fullname="Martin Djernaes"/>, | ||||
| <contact fullname="John Drake"/>, <contact fullname="Susan Hares"/>, <contact | ||||
| fullname="Satoru Matsushima"/>, <contact fullname="Thomas Morin"/>, <contact fu | ||||
| llname="Dhananjaya Rao"/>, <contact fullname="Ravi Singh"/>, <contact fullname=" | ||||
| Harish Sitaraman"/>, <contact fullname="Brian Trammell"/>, <contact fullname="Xi | ||||
| aohu Xu"/>, and <contact fullname="Zhaohui Zhang"/> for their review, comments, | ||||
| and/or helpful discussions. <contact fullname="Alvaro Retana"/> provided an | ||||
| especially comprehensive review.</t> | ||||
| </section> | ||||
| <section numbered="false" toc="default"> | ||||
| <name>Contributors</name> | ||||
| <t> | ||||
| Below is a list of other contributing authors in alphabetical order:</t> | ||||
| <contact fullname="Randy Bush"> | ||||
| <organization>Internet Initiative Japan</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>5147 Crystal Springs</street> | ||||
| <city>Bainbridge Island</city> | ||||
| <region>WA</region> | ||||
| <code>98110</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>randy@psg.com </email> | ||||
| </address> | ||||
| </contact> | ||||
| <t> | <contact fullname="Robert Raszuk"> | |||
| In particular, a review of Section 8.3.1 of RFC 8365 is called for, to | <organization>Bloomberg LP</organization> | |||
| consider whether the introduction of the Tunnel Encapsulation Attribute | <address> | |||
| creates a need for any revisions to the split horizon procedures. | <postal> | |||
| </t> | <street>731 Lexington Ave</street> | |||
| <city>New York City</city> | ||||
| <region>NY</region> | ||||
| <code>10022</code> | ||||
| <country>USA</country> | ||||
| </postal> | ||||
| <email>robert@raszuk.net</email> | ||||
| </address> | ||||
| </contact> | ||||
| <t> | <contact fullname="Eric C. Rosen"/> | |||
| RFC 8365 also refers to a draft version of this specification in | ||||
| the final paragraph of section 5.1.3. That paragraph references | ||||
| Section 8.2.2.2 of the draft. In this version of the document the correct | ||||
| reference | ||||
| would be <xref target="no-valid-vni"/>. There are no substantive | ||||
| differences between the section in the referenced draft, and that in | ||||
| this document. | ||||
| </t> | ||||
| </section> | ||||
| </back> | </section> | |||
| </rfc> | </back> | |||
| </rfc> | ||||
| End of changes. 356 change blocks. | ||||
| 1845 lines changed or deleted | 1876 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||