| rfc9521.original | rfc9521.txt | |||
|---|---|---|---|---|
| NVO3 Working Group X. Min | Internet Engineering Task Force (IETF) X. Min | |||
| Internet-Draft ZTE Corp. | Request for Comments: 9521 ZTE Corp. | |||
| Intended status: Standards Track G. Mirsky | Category: Standards Track G. Mirsky | |||
| Expires: 25 February 2024 Ericsson | ISSN: 2070-1721 Ericsson | |||
| S. Pallagatti | S. Pallagatti | |||
| VMware | VMware | |||
| J. Tantsura | J. Tantsura | |||
| Nvidia | Nvidia | |||
| S. Aldrin | S. Aldrin | |||
| 24 August 2023 | January 2024 | |||
| BFD for Geneve | Bidirectional Forwarding Detection (BFD) for Generic Network | |||
| draft-ietf-nvo3-bfd-geneve-13 | Virtualization Encapsulation (Geneve) | |||
| Abstract | Abstract | |||
| This document describes the use of the Bidirectional Forwarding | This document describes the use of the Bidirectional Forwarding | |||
| Detection (BFD) protocol in point-to-point Generic Network | Detection (BFD) protocol in point-to-point Generic Network | |||
| Virtualization Encapsulation (Geneve) unicast tunnels used to make up | Virtualization Encapsulation (Geneve) unicast tunnels used to make up | |||
| an overlay network. | an overlay network. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 25 February 2024. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9521. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2023 IETF Trust and the persons identified as the | Copyright (c) 2024 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | ||||
| Please review these documents carefully, as they describe your rights | carefully, as they describe your rights and restrictions with respect | |||
| and restrictions with respect to this document. Code Components | to this document. Code Components extracted from this document must | |||
| extracted from this document must include Revised BSD License text as | include Revised BSD License text as described in Section 4.e of the | |||
| described in Section 4.e of the Trust Legal Provisions and are | Trust Legal Provisions and are provided without warranty as described | |||
| provided without warranty as described in the Revised BSD License. | in the Revised BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 2. Conventions Used in This Document . . . . . . . . . . . . . . 3 | 2. Conventions Used in This Document | |||
| 2.1. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. Abbreviations | |||
| 2.2. Requirements Language . . . . . . . . . . . . . . . . . . 3 | 2.2. Requirements Language | |||
| 3. BFD Packet Transmission over Geneve Tunnel . . . . . . . . . 4 | 3. BFD Packet Transmission over a Geneve Tunnel | |||
| 4. BFD Encapsulation With Inner Ethernet/IP/UDP Header . . . . . 4 | 4. BFD Encapsulation with the Inner Ethernet/IP/UDP Header | |||
| 4.1. Demultiplexing BFD packet when payload is Ethernet . . . 6 | 4.1. Demultiplexing a BFD Packet When the Payload Is Ethernet | |||
| 5. BFD Encapsulation With Inner IP/UDP Header . . . . . . . . . 7 | 5. BFD Encapsulation with the Inner IP/UDP Header | |||
| 5.1. Demultiplexing BFD packet when payload is IP . . . . . . 9 | 5.1. Demultiplexing a BFD Packet When the Payload Is IP | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 10 | 6. Security Considerations | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10 | 7. IANA Considerations | |||
| 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 8. References | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | 8.1. Normative References | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 11 | 8.2. Informative References | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 11 | Acknowledgements | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | Authors' Addresses | |||
| 1. Introduction | 1. Introduction | |||
| "Generic Network Virtualization Encapsulation" (Geneve) [RFC8926] | "Geneve: Generic Network Virtualization Encapsulation" [RFC8926] | |||
| provides an encapsulation scheme that allows building an overlay | provides an encapsulation scheme that allows building an overlay | |||
| network of tunnels by decoupling the address space of the attached | network of tunnels by decoupling the address space of the attached | |||
| virtual hosts from that of the network. | virtual hosts from that of the network. | |||
| This document describes the use of Bidirectional Forwarding Detection | This document describes the use of the Bidirectional Forwarding | |||
| (BFD) protocol [RFC5880] to enable monitoring the continuity of the | Detection (BFD) protocol [RFC5880] to enable monitoring the | |||
| path between two Geneve tunnel endpoints, which may be a NVE (Network | continuity of the path between two Geneve tunnel endpoints, which may | |||
| Virtualization Edge) or another device acting as a Geneve tunnel | be a Network Virtualization Edge (NVE) or another device acting as a | |||
| endpoint. Specifically, the asynchronous mode of BFD, as defined in | Geneve tunnel endpoint. Specifically, the asynchronous mode of BFD, | |||
| [RFC5880], is used to monitor a P2P Geneve tunnel. The support for | as defined in [RFC5880], is used to monitor a point-to-point (P2P) | |||
| BFD Echo function is outside the scope of this document. For | Geneve tunnel. The support for the BFD Echo function is outside the | |||
| simplicity, NVE is used to represent the Geneve tunnel endpoint. TS | scope of this document. For simplicity, an NVE is used to represent | |||
| (Tenant System) is used to represent the physical or virtual device | the Geneve tunnel endpoint. A Tenant System (TS) is used to | |||
| attached to a Geneve tunnel endpoint from the outside. VAP (Virtual | represent the physical or virtual device attached to a Geneve tunnel | |||
| Access Point) is the NVE side of the interface between the NVE and | endpoint from the outside. A Virtual Access Point (VAP) is the NVE | |||
| the TS, and a VAP is a logical network port (virtual or physical) | side of the interface between the NVE and the TS, and a VAP is a | |||
| into a specific virtual network. For detailed definitions and | logical network port (virtual or physical) into a specific virtual | |||
| descriptions of NVE, TS and VAP, please refer to [RFC7365] and | network. For detailed definitions and descriptions of NVE, TS, and | |||
| [RFC8014]. | VAP, please refer to [RFC7365] and [RFC8014]. | |||
| The use cases and the deployment of BFD for Geneve are mostly | The use cases and the deployment of BFD for Geneve are mostly | |||
| consistent with what's described in Section 1 and 3 of [RFC8971] | consistent with what's described in Sections 1 and 3 of [RFC8971]. | |||
| ("Bidirectional Forwarding Detection (BFD) for Virtual eXtensible | One exception is the usage of the Management Virtual Network | |||
| Local Area Network (VXLAN)"). One exception is on the usage of | Identifier (VNI), which is described in [GENEVE-OAM] and is outside | |||
| Management VNI, which is described in [I-D.ietf-nvo3-geneve-oam] and | the scope of this document. | |||
| outside the scope of this document. | ||||
| As specified in Section 4.2 of [RFC8926], Geneve MUST be used with | As specified in Section 4.2 of [RFC8926], Geneve MUST be used with | |||
| congestion-controlled traffic or within a traffic-managed controlled | congestion controlled traffic or within a Traffic-Managed Controlled | |||
| environment (TMCE) to avoid congestion, that requirement applies to | Environment (TMCE) to avoid congestion; that requirement also applies | |||
| BFD traffic too. Specifically, considering the complexity and | to BFD traffic. Specifically, considering the complexity and | |||
| immaturity of BFD congestion control mechanism, BFD for Geneve MUST | immaturity of the BFD congestion control mechanism, BFD for Geneve | |||
| be used within a TMCE unless BFD is really congestion controlled. As | MUST be used within a TMCE unless BFD is really congestion | |||
| an alternative to a real congestion control, an operator of a TMCE | controlled. As an alternative to a real congestion control, an | |||
| deploying BFD for Geneve is required to provision the rates at which | operator of a TMCE deploying BFD for Geneve is required to provision | |||
| BFD is transmitted to avoid congestion and false failure detection. | the rates at which BFD is transmitted to avoid congestion and false | |||
| failure detection. | ||||
| 2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
| 2.1. Abbreviations | 2.1. Abbreviations | |||
| BFD: Bidirectional Forwarding Detection | BFD: Bidirectional Forwarding Detection | |||
| FCS: Frame Check Sequence | FCS: Frame Check Sequence | |||
| Geneve: Generic Network Virtualization Encapsulation | Geneve: Generic Network Virtualization Encapsulation | |||
| NVE: Network Virtualization Edge | NVE: Network Virtualization Edge | |||
| TMCE: Traffic-Managed Controlled Environment | TMCE: Traffic-Managed Controlled Environment | |||
| TS: Tenant System | TS: Tenant System | |||
| VAP: Virtual Access Point | VAP: Virtual Access Point | |||
| VNI: Virtual Network Identifier | VNI: Virtual Network Identifier | |||
| VXLAN: Virtual eXtensible Local Area Network | VXLAN: Virtual eXtensible Local Area Network | |||
| 2.2. Requirements Language | 2.2. Requirements Language | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 3. BFD Packet Transmission over Geneve Tunnel | 3. BFD Packet Transmission over a Geneve Tunnel | |||
| Since the Geneve data packet payload may be either an Ethernet frame | Since the Geneve data packet payload may be either an Ethernet frame | |||
| or an IP packet, this document defines two formats of BFD packet | or an IP packet, this document defines two formats of BFD packet | |||
| encapsulation in Geneve. The BFD session is originated and | encapsulation in Geneve. The BFD session is originated and | |||
| terminated at the VAP of an NVE. The selection of the BFD packet | terminated at the VAP of an NVE. The selection of the BFD packet | |||
| encapsulation is based on how the VAP encapsulates the data packets. | encapsulation is based on how the VAP encapsulates the data packets. | |||
| If the payload is IP, then BFD over IP is carried in the payload. If | If the payload is IP, then BFD over IP is carried in the payload. If | |||
| the payload is Ethernet, then BFD over IP over Ethernet is carried in | the payload is Ethernet, then BFD over IP over Ethernet is carried in | |||
| the payload, in the same manner as BFD over IP in the IP payload | the payload. This occurs in the same manner as BFD over IP in the IP | |||
| case, regardless of what the Ethernet payload might normally carry. | payload case, regardless of what the Ethernet payload might normally | |||
| carry. | ||||
| 4. BFD Encapsulation With Inner Ethernet/IP/UDP Header | 4. BFD Encapsulation with the Inner Ethernet/IP/UDP Header | |||
| If the VAP that originates the BFD packets is used to encapsulate | If the VAP that originates the BFD packets is used to encapsulate | |||
| Ethernet data frames, then the BFD packets are encapsulated in Geneve | Ethernet data frames, then the BFD packets are encapsulated in Geneve | |||
| as described below. The Geneve packet formats over IPv4 and IPv6 are | as described below. The Geneve packet formats over IPv4 and IPv6 are | |||
| defined in Section 3.1 and 3.2 of [RFC8926] respectively. The Outer | defined in Sections 3.1 and 3.2 of [RFC8926], respectively. The | |||
| IP/UDP and Geneve headers are encoded by the sender as defined in | outer IP/UDP and Geneve headers are encoded by the sender as defined | |||
| [RFC8926]. Note that the outer IP header and the inner IP header may | in [RFC8926]. Note that the outer IP header and the inner IP header | |||
| not be of the same address family. In other words, an outer IPv6 | may not be of the same address family. In other words, an outer IPv6 | |||
| header accompanied by an inner IPv4 header and an outer IPv4 header | header accompanied by an inner IPv4 header and an outer IPv4 header | |||
| accompanied by an inner IPv6 header are both possible. | accompanied by an inner IPv6 header are both possible. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| ~ Outer Ethernet Header ~ | ~ Outer Ethernet Header ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 5, line 43 ¶ | skipping to change at line 205 ¶ | |||
| ~ Inner UDP Header ~ | ~ Inner UDP Header ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| ~ BFD Control Packet ~ | ~ BFD Control Packet ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Outer Ethernet FCS | | | Outer Ethernet FCS | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 1: Geneve Encapsulation of BFD Control Packet With the Inner | Figure 1: Geneve Encapsulation of a BFD Control Packet with the Inner | |||
| Ethernet/IP/UDP Header | Ethernet/IP/UDP Header | |||
| The BFD packet MUST be carried inside the inner Ethernet frame of the | The BFD packet MUST be carried inside the inner Ethernet frame of the | |||
| Geneve packet. The inner Ethernet frame carrying the BFD Control | Geneve packet. The inner Ethernet frame carrying the BFD Control | |||
| packet has the following format: | packet has the following format: | |||
| Inner Ethernet Header: | Inner Ethernet Header: | |||
| Destination MAC: Media Access Control (MAC) address of a VAP of | ||||
| - Destination MAC: MAC address of a VAP of the terminating NVE. | the terminating NVE. | |||
| - Source MAC: MAC address of a VAP of the originating NVE. | ||||
| IP Header: | Source MAC: MAC address of a VAP of the originating NVE. | |||
| - Source IP: IP address of a VAP of the originating NVE. If the | IP Header: | |||
| Source IP: IP address of a VAP of the originating NVE. If the | ||||
| VAP of the originating NVE has no IP address, then the IP | VAP of the originating NVE has no IP address, then the IP | |||
| address 0.0.0.0 for IPv4 or ::/128 for IPv6 MUST be used. | address 0.0.0.0 for IPv4 or ::/128 for IPv6 MUST be used. | |||
| - Destination IP: IP address of a VAP of the terminating NVE. If | Destination IP: IP address of a VAP of the terminating NVE. If | |||
| the VAP of the terminating NVE has no IP address, then the IP | the VAP of the terminating NVE has no IP address, then the IP | |||
| address 127.0.0.1 for IPv4 or ::1/128 for IPv6 MUST be used. | address 127.0.0.1 for IPv4 or ::1/128 for IPv6 MUST be used. | |||
| - TTL or Hop Limit: MUST be set to 255 in accordance with | TTL or Hop Limit: The TTL for IPv4 or Hop Limit for IPv6 MUST be | |||
| [RFC5881] that specifies the IPv4/IPv6 single-hop BFD. | set to 255 in accordance with [RFC5881], which specifies the | |||
| IPv4/IPv6 single-hop BFD. | ||||
| The fields of the UDP header and the BFD Control packet are | The fields of the UDP header and the BFD Control packet are | |||
| encoded as specified in [RFC5881]. | encoded as specified in [RFC5881]. | |||
| When the BFD packets are encapsulated in Geneve in this way, the | When the BFD packets are encapsulated in Geneve in this way, the | |||
| Geneve header defined in [RFC8926] follows the value set below. | Geneve header defined in [RFC8926] follows the value set below. | |||
| Opt Len field MUST be set consistent with the Geneve specification | * The Opt Len field MUST be set as consistent with the Geneve | |||
| [RFC8926] depending on whether or not Geneve options are present | specification ([RFC8926]) depending on whether or not Geneve | |||
| in the frame. The use of Geneve options with BFD is beyond the | options are present in the frame. The use of Geneve options with | |||
| scope of this document. | BFD is beyond the scope of this document. | |||
| O bit MUST be set to 1, which indicates this packet contains a | * The O bit MUST be set to 1, which indicates this packet contains a | |||
| control message. | control message. | |||
| C bit MUST be set to 0, which indicates there isn't any critical | * The C bit MUST be set to 0, which indicates there isn't any | |||
| option. | critical option. | |||
| Protocol Type field MUST be set to 0x6558 (Ethernet frame). | * The Protocol Type field MUST be set to 0x6558 (Ethernet frame). | |||
| Virtual Network Identifier (VNI) field MUST be set to the VNI | * The Virtual Network Identifier (VNI) field MUST be set to the VNI | |||
| number that the originating VAP is mapped to. | number that the originating VAP is mapped to. | |||
| 4.1. Demultiplexing BFD packet when payload is Ethernet | 4.1. Demultiplexing a BFD Packet When the Payload Is Ethernet | |||
| Once a packet is received, the NVE validates the packet as described | Once a packet is received, the NVE validates the packet as described | |||
| in [RFC8926]. When the payload is Ethernet, the Protocol Type field | in [RFC8926]. When the payload is Ethernet, the Protocol Type field | |||
| equals 0x6558. The Destination MAC address of the inner Ethernet | equals 0x6558. The destination MAC address of the inner Ethernet | |||
| frame matches the MAC address of a VAP which is mapped to the same | frame matches the MAC address of a VAP, which is mapped to the same | |||
| VNI as the received VNI. Then the Destination IP, the UDP | VNI as the received VNI. Then, the destination IP, the UDP | |||
| destination port and the TTL or Hop Limit of the inner IP packet MUST | destination port, and the TTL or Hop Limit of the inner IP packet | |||
| be validated to determine whether the received packet can be | MUST be validated to determine whether the received packet can be | |||
| processed by BFD, i.e., the three field values of the inner IP packet | processed by BFD (i.e., the three field values of the inner IP packet | |||
| MUST be in compliance with what's defined in Section 4 of this | MUST be in compliance with what's defined in Section 4 of this | |||
| document, as well as Section 4 of [RFC5881]. If the validation | document, as well as Section 4 of [RFC5881]). If the validation | |||
| fails, the received packet MUST NOT be processed by BFD. | fails, the received packet MUST NOT be processed by BFD. | |||
| In BFD over Geneve, a BFD session is originated and terminated at a | In BFD over Geneve, a BFD session is originated and terminated at a | |||
| VAP. Usually one NVE owns multiple VAPs. Since multiple BFD | VAP. Usually one NVE owns multiple VAPs. Since multiple BFD | |||
| sessions may be running between two NVEs, there needs to be a | sessions may be running between two NVEs, there needs to be a | |||
| mechanism for demultiplexing received BFD packets to the proper | mechanism for demultiplexing received BFD packets to the proper | |||
| session. Furthermore, due to the fact that [RFC8014] allows for | session. Furthermore, due to the fact that [RFC8014] allows for | |||
| N-to-1 mapping between VAP and VNI at one NVE, multiple BFD sessions | N-to-1 mapping between VAPs and VNIs at one NVE, multiple BFD | |||
| between two NVEs for the same VNI are allowed. Also note that a BFD | sessions between two NVEs for the same VNI are allowed. Also, note | |||
| session can only be established between two VAPs that are mapped to | that a BFD session can only be established between two VAPs that are | |||
| the same VNI and use the same way to encapsulate data packets. | mapped to the same VNI and that use the same way to encapsulate data | |||
| packets. | ||||
| If the BFD packet is received with Your Discriminator equals to 0, | If the BFD packet is received with the value of the Your | |||
| then the BFD session SHOULD be identified using the VNI number and | Discriminator field set to 0, then the BFD session SHOULD be | |||
| the inner Ethernet/IP header. The inner Ethernet/IP header stands | identified using the VNI number and the inner Ethernet/IP header. | |||
| for the source MAC, the source IP, the destination MAC, and the | The inner Ethernet/IP header stands for the source MAC, the source | |||
| destination IP. An implementation MAY use the inner UDP port source | IP, the destination MAC, and the destination IP. An implementation | |||
| number to aid in demultiplexing incoming BFD Control packets. If it | MAY use the inner UDP port source number to aid in demultiplexing | |||
| fails to identify the BFD session, the incoming BFD Control packets | incoming BFD Control packets. If it fails to identify the BFD | |||
| MUST be dropped, and an exception event indicating the failure should | session, the incoming BFD Control packets MUST be dropped, and an | |||
| be reported to the management. | exception event indicating the failure should be reported to the | |||
| management. | ||||
| If the BFD packet is received with non-zero Your Discriminator, then | If the BFD packet is received with a non-zero Your Discriminator, | |||
| the BFD session MUST be demultiplexed only with Your Discriminator as | then the BFD session MUST be demultiplexed only with the Your | |||
| the key. | Discriminator as the key. | |||
| 5. BFD Encapsulation With Inner IP/UDP Header | 5. BFD Encapsulation with the Inner IP/UDP Header | |||
| If the VAP that originates the BFD packets is used to encapsulate IP | If the VAP that originates the BFD packets is used to encapsulate IP | |||
| data packets, then the BFD packets are encapsulated in Geneve as | data packets, then the BFD packets are encapsulated in Geneve as | |||
| described below. The Geneve packet formats over IPv4 and IPv6 are | described below. The Geneve packet formats over IPv4 and IPv6 are | |||
| defined in Section 3.1 and 3.2 of [RFC8926] respectively. The Outer | defined in Sections 3.1 and 3.2 of [RFC8926], respectively. The | |||
| IP/UDP and Geneve headers are encoded by the sender as defined in | outer IP/UDP and Geneve headers are encoded by the sender as defined | |||
| [RFC8926]. Note that the outer IP header and the inner IP header may | in [RFC8926]. Note that the outer IP header and the inner IP header | |||
| not be of the same address family. In other words, an outer IPv6 | may not be of the same address family. In other words, an outer IPv6 | |||
| header accompanied by an inner IPv4 header and an outer IPv4 header | header accompanied by an inner IPv4 header and an outer IPv4 header | |||
| accompanied by an inner IPv6 header are both possible. | accompanied by an inner IPv6 header are both possible. | |||
| 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| ~ Ethernet Header ~ | ~ Ethernet Header ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 8, line 39 ¶ | skipping to change at line 339 ¶ | |||
| ~ Inner UDP Header ~ | ~ Inner UDP Header ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| ~ BFD Control Packet ~ | ~ BFD Control Packet ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | FCS | | | FCS | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 2: Geneve Encapsulation of BFD Control Packet With the | Figure 2: Geneve Encapsulation of a BFD Control Packet with the | |||
| Inner IP/UDP Header | Inner IP/UDP Header | |||
| The BFD packet MUST be carried inside the inner IP packet of the | The BFD packet MUST be carried inside the inner IP packet of the | |||
| Geneve packet. The inner IP packet carrying the BFD Control packet | Geneve packet. The inner IP packet carrying the BFD Control packet | |||
| has the following format: | has the following format: | |||
| Inner IP header: | Inner IP Header: | |||
| Source IP: IP address of a VAP of the originating NVE. | ||||
| - Source IP: IP address of a VAP of the originating NVE. | ||||
| - Destination IP: IP address of a VAP of the terminating NVE. | Destination IP: IP address of a VAP of the terminating NVE. | |||
| - TTL or Hop Limit: MUST be set to 255 in accordance with | TTL or Hop Limit: The TTL for IPv4 or Hop Limit for IPv6 MUST be | |||
| [RFC5881] that specifies the IPv4/IPv6 single-hop BFD. | set to 255 in accordance with [RFC5881], which specifies the | |||
| IPv4/IPv6 single-hop BFD. | ||||
| The fields of the UDP header and the BFD Control packet are | The fields of the UDP header and the BFD Control packet are | |||
| encoded as specified in [RFC5881]. | encoded as specified in [RFC5881]. | |||
| When the BFD packets are encapsulated in Geneve in this way, the | When the BFD packets are encapsulated in Geneve in this way, the | |||
| Geneve header defined in [RFC8926] follows the value set below. | Geneve header defined in [RFC8926] follows the value set below. | |||
| Opt Len field MUST be set consistent with the Geneve specification | * The Opt Len field MUST be set as consistent with the Geneve | |||
| [RFC8926] depending on whether or not Geneve options are present | specification ([RFC8926]) depending on whether or not Geneve | |||
| in the frame. The use of Geneve options with BFD is beyond the | options are present in the frame. The use of Geneve options with | |||
| scope of this document. | BFD is beyond the scope of this document. | |||
| O bit MUST be set to 1, which indicates this packet contains a | * The O bit MUST be set to 1, which indicates this packet contains a | |||
| control message. | control message. | |||
| C bit MUST be set to 0, which indicates there isn't any critical | * The C bit MUST be set to 0, which indicates there isn't any | |||
| option. | critical option. | |||
| Protocol Type field MUST be set to 0x0800 (IPv4) or 0x86DD (IPv6), | * The Protocol Type field MUST be set to 0x0800 (IPv4) or 0x86DD | |||
| depending on the address family of the inner IP packet. | (IPv6), depending on the address family of the inner IP packet. | |||
| Virtual Network Identifier (VNI) field MUST be set to the VNI | * The Virtual Network Identifier (VNI) field MUST be set to the VNI | |||
| number that the originating VAP is mapped to. | number that the originating VAP is mapped to. | |||
| 5.1. Demultiplexing BFD packet when payload is IP | 5.1. Demultiplexing a BFD Packet When the Payload Is IP | |||
| Once a packet is received, the NVE validates the packet as described | Once a packet is received, the NVE validates the packet as described | |||
| in [RFC8926]. When the payload is IP, the Protocol Type field equals | in [RFC8926]. When the payload is IP, the Protocol Type field equals | |||
| 0x0800 or 0x86DD. The Destination IP address of the inner IP packet | 0x0800 or 0x86DD. The destination IP address of the inner IP packet | |||
| matches the IP address of a VAP which is mapped to the same VNI as | matches the IP address of a VAP, which is mapped to the same VNI as | |||
| the received VNI. Then the UDP destination port and the TTL or Hop | the received VNI. Then, the UDP destination port and the TTL or Hop | |||
| Limit of the inner IP packet MUST be validated to determine whether | Limit of the inner IP packet MUST be validated to determine whether | |||
| the received packet can be processed by BFD, i.e., the two field | or not the received packet can be processed by BFD (i.e., the two | |||
| values of the inner IP packet MUST be in compliance with what's | field values of the inner IP packet MUST be in compliance with what's | |||
| defined in Section 5 of this document, as well as Section 4 of | defined in Section 5 of this document as well as Section 4 of | |||
| [RFC5881]. If the validation fails, the received packet MUST NOT be | [RFC5881]). If the validation fails, the received packet MUST NOT be | |||
| processed by BFD. | processed by BFD. | |||
| If the BFD packet is received with Your Discriminator equals to 0, | If the BFD packet is received with the value of the Your | |||
| then the BFD session SHOULD be identified using the VNI number and | Discriminator field set to 0, then the BFD session SHOULD be | |||
| the inner IP header. The inner IP header stands for the source IP | identified using the VNI number and the inner IP header. The inner | |||
| and the destination IP. An implementation MAY use the inner UDP port | IP header stands for the source IP and the destination IP. An | |||
| source number to aid in demultiplexing incoming BFD Control packets. | implementation MAY use the inner UDP port source number to aid in | |||
| If it fails to identify the BFD session, the incoming BFD Control | demultiplexing incoming BFD Control packets. If it fails to identify | |||
| packets MUST be dropped, and an exception event indicating the | the BFD session, the incoming BFD Control packets MUST be dropped, | |||
| failure should be reported to the management. | and an exception event indicating the failure should be reported to | |||
| the management. | ||||
| If the BFD packet is received with non-zero Your Discriminator, then | If the BFD packet is received with a non-zero Your Discriminator, | |||
| the BFD session MUST be demultiplexed only with Your Discriminator as | then the BFD session MUST be demultiplexed only with the Your | |||
| the key. | Discriminator as the key. | |||
| 6. Security Considerations | 6. Security Considerations | |||
| Security issues discussed in [RFC8926] and [RFC5880] apply to this | Security issues discussed in [RFC8926] and [RFC5880] apply to this | |||
| document. Particularly, the BFD is an application that is run at the | document. Particularly, the BFD is an application that is run at the | |||
| two Geneve tunnel endpoints. The IP underlay network and/or the | two Geneve tunnel endpoints. The IP underlay network and/or the | |||
| Geneve option can provide security between the peers, which are | Geneve option can provide security between the peers, which are | |||
| subject to the issue of overload described below. The BFD introduces | subject to the issue of overload described below. The BFD introduces | |||
| no security vulnerabilities when run in this manner. Considering | no security vulnerabilities when run in this manner. Considering | |||
| Geneve does not have any inherent security mechanisms, BFD | Geneve does not have any inherent security mechanisms, BFD | |||
| authentication as specified in [RFC5880] is RECOMMENDED to be | authentication as specified in [RFC5880] is RECOMMENDED to be | |||
| utilized. | utilized. | |||
| This document supports establishing multiple BFD sessions between the | This document supports establishing multiple BFD sessions between the | |||
| same pair of NVEs, each BFD session over a pair of VAPs residing in | same pair of NVEs. For each BFD session over a pair of VAPs residing | |||
| the same pair of NVEs, there SHOULD be a mechanism to control the | in the same pair of NVEs, there SHOULD be a mechanism to control the | |||
| maximum number of such sessions that can be active at the same time. | maximum number of such sessions that can be active at the same time. | |||
| Particularly, assuming an example that each NVE of the pair of NVEs | Particularly, assuming an example that each NVE of the pair of NVEs | |||
| has N VAPs using Ethernet as the payload, then there could be N | has N VAPs using Ethernet as the payload, then there could be N | |||
| squared BFD sessions running between the pair of NVEs. Considering N | squared BFD sessions running between the pair of NVEs. Considering N | |||
| could be a high number, the N squared BFD sessions could result in | could be a high number, the N squared BFD sessions could result in | |||
| overload of the NVE. In this case, it's recommended that N BFD | overload of the NVE. In this case, it's recommended that N BFD | |||
| sessions covering all N VAPs are run for the pair of NVEs. Generally | sessions covering all N VAPs are run for the pair of NVEs. Generally | |||
| speaking, the number of BFD sessions is supposed to be enough as long | speaking, the number of BFD sessions is supposed to be enough as long | |||
| as all VAPs of the pair of NVEs are covered. | as all VAPs of the pair of NVEs are covered. | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| This document has no IANA action requested. | This document has no IANA actions. | |||
| 8. Acknowledgements | ||||
| The authors would like to acknowledge Reshad Rahman, Jeffrey Haas, | ||||
| and Matthew Bocci for their guidance on this work. | ||||
| The authors would like to acknowledge David Black for his explanation | ||||
| on the mapping relation between VAP and VNI. | ||||
| The authors would like to acknowledge Stewart Bryant, Anoop Ghanwani, | 8. References | |||
| Jeffrey Haas, Reshad Rahman, Matthew Bocci, Andrew Alston, Magnus | ||||
| Westerlund, Paul Kyzivat, Sheng Jiang, Carl Wallace, Roman Danyliw, | ||||
| John Scudder, Donald Eastlake, Eric Vyncke, Zaheduzzaman Sarker, and | ||||
| Lars Eggert for their thorough review and very helpful comments. | ||||
| 9. References | 8.1. Normative References | |||
| 9.1. Normative References | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | [RFC5880] Katz, D. and D. Ward, "Bidirectional Forwarding Detection | |||
| (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | (BFD)", RFC 5880, DOI 10.17487/RFC5880, June 2010, | |||
| <https://www.rfc-editor.org/info/rfc5880>. | <https://www.rfc-editor.org/info/rfc5880>. | |||
| skipping to change at page 11, line 29 ¶ | skipping to change at line 462 ¶ | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8926] Gross, J., Ed., Ganga, I., Ed., and T. Sridhar, Ed., | [RFC8926] Gross, J., Ed., Ganga, I., Ed., and T. Sridhar, Ed., | |||
| "Geneve: Generic Network Virtualization Encapsulation", | "Geneve: Generic Network Virtualization Encapsulation", | |||
| RFC 8926, DOI 10.17487/RFC8926, November 2020, | RFC 8926, DOI 10.17487/RFC8926, November 2020, | |||
| <https://www.rfc-editor.org/info/rfc8926>. | <https://www.rfc-editor.org/info/rfc8926>. | |||
| 9.2. Informative References | 8.2. Informative References | |||
| [I-D.ietf-nvo3-geneve-oam] | [GENEVE-OAM] | |||
| Mirsky, G., Boutros, S., Black, D. L., and S. Pallagatti, | Mirsky, G., Boutros, S., Black, D., and S. Pallagatti, | |||
| "OAM for use in GENEVE", Work in Progress, Internet-Draft, | "OAM for use in GENEVE", Work in Progress, Internet-Draft, | |||
| draft-ietf-nvo3-geneve-oam-07, 27 June 2023, | draft-ietf-nvo3-geneve-oam-09, 6 December 2023, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-nvo3- | <https://datatracker.ietf.org/doc/html/draft-ietf-nvo3- | |||
| geneve-oam-07>. | geneve-oam-09>. | |||
| [RFC7365] Lasserre, M., Balus, F., Morin, T., Bitar, N., and Y. | [RFC7365] Lasserre, M., Balus, F., Morin, T., Bitar, N., and Y. | |||
| Rekhter, "Framework for Data Center (DC) Network | Rekhter, "Framework for Data Center (DC) Network | |||
| Virtualization", RFC 7365, DOI 10.17487/RFC7365, October | Virtualization", RFC 7365, DOI 10.17487/RFC7365, October | |||
| 2014, <https://www.rfc-editor.org/info/rfc7365>. | 2014, <https://www.rfc-editor.org/info/rfc7365>. | |||
| [RFC8014] Black, D., Hudson, J., Kreeger, L., Lasserre, M., and T. | [RFC8014] Black, D., Hudson, J., Kreeger, L., Lasserre, M., and T. | |||
| Narten, "An Architecture for Data-Center Network | Narten, "An Architecture for Data-Center Network | |||
| Virtualization over Layer 3 (NVO3)", RFC 8014, | Virtualization over Layer 3 (NVO3)", RFC 8014, | |||
| DOI 10.17487/RFC8014, December 2016, | DOI 10.17487/RFC8014, December 2016, | |||
| <https://www.rfc-editor.org/info/rfc8014>. | <https://www.rfc-editor.org/info/rfc8014>. | |||
| [RFC8971] Pallagatti, S., Ed., Mirsky, G., Ed., Paragiri, S., | [RFC8971] Pallagatti, S., Ed., Mirsky, G., Ed., Paragiri, S., | |||
| Govindan, V., and M. Mudigonda, "Bidirectional Forwarding | Govindan, V., and M. Mudigonda, "Bidirectional Forwarding | |||
| Detection (BFD) for Virtual eXtensible Local Area Network | Detection (BFD) for Virtual eXtensible Local Area Network | |||
| (VXLAN)", RFC 8971, DOI 10.17487/RFC8971, December 2020, | (VXLAN)", RFC 8971, DOI 10.17487/RFC8971, December 2020, | |||
| <https://www.rfc-editor.org/info/rfc8971>. | <https://www.rfc-editor.org/info/rfc8971>. | |||
| Acknowledgements | ||||
| The authors would like to acknowledge Reshad Rahman, Jeffrey Haas, | ||||
| and Matthew Bocci for their guidance on this work. | ||||
| The authors would like to acknowledge David Black for his explanation | ||||
| on the mapping relation between VAPs and VNIs. | ||||
| The authors would like to acknowledge Stewart Bryant, Anoop Ghanwani, | ||||
| Jeffrey Haas, Reshad Rahman, Matthew Bocci, Andrew Alston, Magnus | ||||
| Westerlund, Paul Kyzivat, Sheng Jiang, Carl Wallace, Roman Danyliw, | ||||
| John Scudder, Donald Eastlake 3rd, Éric Vyncke, Zaheduzzaman Sarker, | ||||
| and Lars Eggert for their thorough review and very helpful comments. | ||||
| Authors' Addresses | Authors' Addresses | |||
| Xiao Min | Xiao Min | |||
| ZTE Corp. | ZTE Corp. | |||
| Nanjing | Nanjing | |||
| China | China | |||
| Phone: +86 18061680168 | Phone: +86 18061680168 | |||
| Email: xiao.min2@zte.com.cn | Email: xiao.min2@zte.com.cn | |||
| Greg Mirsky | Greg Mirsky | |||
| End of changes. 69 change blocks. | ||||
| 200 lines changed or deleted | 202 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||