| rfc9764v1.txt | rfc9764.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) J. Haas | Internet Engineering Task Force (IETF) J. Haas | |||
| Request for Comments: 9764 Juniper Networks, Inc. | Request for Comments: 9764 Juniper Networks, Inc. | |||
| Category: Standards Track A. Fu | Category: Standards Track A. Fu | |||
| ISSN: 2070-1721 Bloomberg L.P. | ISSN: 2070-1721 Bloomberg L.P. | |||
| March 2025 | April 2025 | |||
| Bidirectional Forwarding Detection (BFD) Encapsulated in Large Packets | Bidirectional Forwarding Detection (BFD) Encapsulated in Large Packets | |||
| Abstract | Abstract | |||
| The Bidirectional Forwarding Detection (BFD) protocol is commonly | The Bidirectional Forwarding Detection (BFD) protocol is commonly | |||
| used to verify connectivity between two systems. BFD packets are | used to verify connectivity between two systems. BFD packets are | |||
| typically very small. It is desirable in some circumstances to know | typically very small. It is desirable in some circumstances to know | |||
| not only that the path between two systems is reachable, but also | not only that the path between two systems is reachable, but also | |||
| that it is capable of carrying a payload of a particular size. This | that it is capable of carrying a payload of a particular size. This | |||
| skipping to change at line 128 ¶ | skipping to change at line 128 ¶ | |||
| Support for BFD between two systems is typically configured, even if | Support for BFD between two systems is typically configured, even if | |||
| the actual session may be dynamically created by a client protocol. | the actual session may be dynamically created by a client protocol. | |||
| A new BFD variable is defined in this document: | A new BFD variable is defined in this document: | |||
| bfd.PaddedPduSize | bfd.PaddedPduSize | |||
| The BFD transport protocol payload size (in bytes) is increased to | The BFD transport protocol payload size (in bytes) is increased to | |||
| this value. The contents of this additional payload MUST be zero. | this value. The contents of this additional payload MUST be zero. | |||
| The contents of this additional payload SHOULD NOT be validated by | The contents of this additional payload SHOULD NOT be validated by | |||
| the receiver. The minimum size of this variable MUST NOT be | the receiver. The minimum size of this variable MUST NOT be | |||
| smaller than permitted by the element of BFD procedure; 24 or 26 - | smaller than 24 or 26 bytes, as permitted by the element of BFD | |||
| see Section 6.8.6 of [RFC5880]. | procedure; see Section 6.8.6 of [RFC5880]. | |||
| The Don't Fragment bit (Section 2.3 of [RFC0791]) of the IP payload, | The Don't Fragment bit (Section 2.3 of [RFC0791]) of the IP payload, | |||
| when using IPv4 encapsulation, MUST be set. | when using IPv4 encapsulation, MUST be set. | |||
| 4. Implementation and Deployment Considerations | 4. Implementation and Deployment Considerations | |||
| 4.1. Implementations That Do Not Support Large BFD Packets | 4.1. Implementations That Do Not Support Large BFD Packets | |||
| While this document proposes no change to the BFD protocol, | While this document proposes no change to the BFD protocol, | |||
| implementations may not permit arbitrarily padded transport PDUs to | implementations may not permit arbitrarily padded transport PDUs to | |||
| carry BFD packets. While Section 6 of [RFC5880] warns against | carry BFD packets. While Section 6 of [RFC5880] warns against | |||
| excessive pedantry, implementations may not work with this mechanism | excessive pedantry, implementations may not work with this mechanism | |||
| without additional support. | without additional support. | |||
| Section 6.8.6 of [RFC5880] discusses the procedures for receiving BFD | Section 6.8.6 of [RFC5880] discusses the procedures for receiving BFD | |||
| Control packets. The length of the BFD Control packet is validated | Control packets. The length of the BFD Control packet is validated | |||
| to be less than or equal to the payload of the encapsulating | to be less than or equal to the payload of the encapsulating | |||
| protocol. When a receiving implementation is incapable of processing | protocol. When a receiving implementation is incapable of processing | |||
| Large BFD Packets, it could manifest in one of two possible ways: | large BFD packets, it could manifest in one of two possible ways: | |||
| * A receiving BFD implementation is incapable of accepting Large BFD | * A receiving BFD implementation is incapable of accepting large BFD | |||
| Packets. This is identical to the packet being discarded. | packets. This is identical to the packet being discarded. | |||
| * A receiving BFD implementation is capable of accepting Large BFD | * A receiving BFD implementation is capable of accepting large BFD | |||
| Packets, but the Control packet is improperly rejected during | packets, but the Control packet is improperly rejected during | |||
| validation procedures. This is identical to the packet being | validation procedures. This is identical to the packet being | |||
| discarded. | discarded. | |||
| In each of these cases, the BFD state machine would behave as if it | In each of these cases, the BFD state machine would behave as if it | |||
| were not receiving Control packets, and the receiving implementation | were not receiving Control packets, and the receiving implementation | |||
| would follow normal BFD procedures regarding not having received | would follow normal BFD procedures regarding not having received | |||
| Control packets. | Control packets. | |||
| If Large BFD Packets is enabled on a session that is already in the | If large BFD packets is enabled on a session that is already in the | |||
| Up state and the remote BFD system does not (or cannot) support | Up state and the remote BFD system does not (or cannot) support | |||
| receiving the padded BFD control packets, the session will go Down. | receiving the padded BFD control packets, the session will go Down. | |||
| 4.2. Selecting MTU Size To Be Detected | 4.2. Selecting MTU Size To Be Detected | |||
| Since the consideration is Path MTU, BFD sessions using this feature | Since the consideration is Path MTU, BFD sessions using this feature | |||
| only need to use an appropriate value of bfd.PaddedPduSize to | only need to use an appropriate value of bfd.PaddedPduSize to | |||
| exercise the Path MTU for the desired application. This may be | exercise the Path MTU for the desired application. This may be | |||
| significantly smaller than the system's link MTU, e.g., desired Path | significantly smaller than the system's link MTU, e.g., desired Path | |||
| MTU is 1512 bytes, while the interface MTU that BFD with large | MTU is 1512 bytes, while the interface MTU that BFD with large | |||
| skipping to change at line 196 ¶ | skipping to change at line 196 ¶ | |||
| The accepted MTU for an interface is impacted by packet encapsulation | The accepted MTU for an interface is impacted by packet encapsulation | |||
| considerations at a given layer, e.g., Layer 2, Layer 3, tunnel, etc. | considerations at a given layer, e.g., Layer 2, Layer 3, tunnel, etc. | |||
| A common misconfiguration of interface parameters is inconsistent | A common misconfiguration of interface parameters is inconsistent | |||
| MTU. In the presence of inconsistent MTU, it is possible for | MTU. In the presence of inconsistent MTU, it is possible for | |||
| applications to have unidirectional connectivity. | applications to have unidirectional connectivity. | |||
| When it is necessary for an application using BFD with Large Packets | When it is necessary for an application using BFD with Large Packets | |||
| to test the bidirectional Path MTU, it is necessary to configure the | to test the bidirectional Path MTU, it is necessary to configure the | |||
| bfd.PaddedPduSize parameter on each side of the BFD session. For | bfd.PaddedPduSize parameter on each side of the BFD session. For | |||
| example, if the desire is to verify a 1500-byte MTU in both | example, if the desire is to verify a 1512-byte MTU in both | |||
| directions on an Ethernet or point-to-point link, each side of the | directions on an Ethernet or point-to-point link, each side of the | |||
| BFD session must have bfd.PaddedPduSize set to 1500. In the absence | BFD session must have bfd.PaddedPduSize set to 1512. In the absence | |||
| of such consistent configuration, BFD with Large Packets may | of such consistent configuration, BFD with Large Packets may | |||
| correctly determine unidirectional connectivity at the tested MTU, | correctly determine unidirectional connectivity at the tested MTU, | |||
| but bidirectional MTU may not be properly validated. | but bidirectional MTU may not be properly validated. | |||
| It should be noted that some interfaces may intentionally have | It should be noted that some interfaces may intentionally have | |||
| different MTUs. Setting the bfd.PaddedPduSize appropriately for each | different MTUs. Setting the bfd.PaddedPduSize appropriately for each | |||
| side of the BFD session supports such scenarios. | side of the BFD session supports such scenarios. | |||
| 4.4. Detecting MTU Changes | 4.4. Detecting MTU Changes | |||
| skipping to change at line 252 ¶ | skipping to change at line 252 ¶ | |||
| Some BFD implementations utilize their internal understanding of the | Some BFD implementations utilize their internal understanding of the | |||
| component links and their resultant forwarding to exercise BFD in | component links and their resultant forwarding to exercise BFD in | |||
| such a way to better test the ECMP members and to tie the BFD session | such a way to better test the ECMP members and to tie the BFD session | |||
| state to the health of that ECMP. Due to implementation-specific | state to the health of that ECMP. Due to implementation-specific | |||
| load balancing, it is not possible to standardize such additional | load balancing, it is not possible to standardize such additional | |||
| mechanisms for BFD. | mechanisms for BFD. | |||
| Misconfiguration of some member MTUs may lead to load balancing that | Misconfiguration of some member MTUs may lead to load balancing that | |||
| may have an inconsistent Path MTU depending on how the traffic is | may have an inconsistent Path MTU depending on how the traffic is | |||
| balanced. While the intent of BFD with Large Packets is to verify | balanced. While the intent of BFD with large packets is to verify | |||
| Path MTU, it is subject to the same considerations above. | Path MTU, it is subject to the same considerations above. | |||
| The above text also applies to most, if not all, BFD techniques. | This section applies to most, if not all, BFD techniques. | |||
| 4.6. S-BFD | 4.6. S-BFD | |||
| This mechanism also can be applied to other forms of BFD, including | This mechanism also can be applied to other forms of BFD, including | |||
| Seamless BFD (S-BFD) [RFC7880]. | Seamless BFD (S-BFD) [RFC7880]. | |||
| 5. BFD Encapsulated in Large Packets YANG Module | 5. BFD Encapsulated in Large Packets YANG Module | |||
| 5.1. Data Model Overview | 5.1. Data Model Overview | |||
| This YANG module augments the "ietf-bfd" module to add a flag | This YANG module augments the "ietf-bfd" module to add a flag | |||
| 'padding' to enable this feature. The feature statement 'padding' | 'padding' to enable this feature. The feature statement 'padding' | |||
| needs to be enabled to indicate that BFD Encapsulated in Large Packet | needs to be enabled to indicate that BFD encapsulated in large | |||
| is supported by the implementation. | packets is supported by the implementation. | |||
| Further, this YANG module augments the YANG modules for single-hop, | Further, this YANG module augments the YANG modules for single-hop, | |||
| multihop, LAG, and MPLS to add the "pdu-size" parameter to those | multihop, LAG, and MPLS to add the "pdu-size" parameter to those | |||
| session types to configure Large BFD packets. | session types to configure large BFD packets. | |||
| Finally, similar to the grouping "client-cfg-parms" defined in | Finally, similar to the grouping "client-cfg-parms" defined in | |||
| Section 2.1 of [RFC9314], this YANG module defines a grouping "bfd- | Section 2.1 of [RFC9314], this YANG module defines a grouping "bfd- | |||
| large-common" that may be utilized by BFD clients using "client-cfg- | large-common" that may be utilized by BFD clients using "client-cfg- | |||
| params" to uniformly add support for the feature defined in this RFC. | params" to uniformly add support for the feature defined in this RFC. | |||
| module: ietf-bfd-large | module: ietf-bfd-large | |||
| augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
| /rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh | /rt:control-plane-protocol/bfd:bfd/bfd-ip-sh:ip-sh | |||
| skipping to change at line 534 ¶ | skipping to change at line 534 ¶ | |||
| perhaps intentionally, if the session cannot accommodate such BFD | perhaps intentionally, if the session cannot accommodate such BFD | |||
| control packets. Operators should be mindful that multiple BFD | control packets. Operators should be mindful that multiple BFD | |||
| clients may rely on the status of a given BFD session when | clients may rely on the status of a given BFD session when | |||
| changing this value. | changing this value. | |||
| There are no particularly sensitive readable data nodes. | There are no particularly sensitive readable data nodes. | |||
| There are no particularly sensitive RPC or action operations. | There are no particularly sensitive RPC or action operations. | |||
| Modules that use the groupings that are defined in this document | Modules that use the groupings that are defined in this document | |||
| should identify the corresponding security considerations. This | should identify the corresponding security considerations. For | |||
| module defines one such grouping, "bfd-large-common", which contains | example, reusing some of these groupings will expose privacy-related | |||
| the "pdu-size" data node whose security considerations are documented | information (e.g., 'node-example'). This module defines one such | |||
| above. | grouping, "bfd-large-common", which contains the "pdu-size" data node | |||
| whose security considerations are documented above. | ||||
| 7. IANA Considerations | 7. IANA Considerations | |||
| 7.1. The "IETF XML" Registry | 7.1. The "IETF XML" Registry | |||
| IANA has registered the following URI in the "ns" subregistry of the | IANA has registered the following URI in the "ns" subregistry of the | |||
| "IETF XML Registry" [RFC3688]. | "IETF XML Registry" [RFC3688]. | |||
| URI: urn:ietf:params:xml:ns:yang:ietf-bfd-large | URI: urn:ietf:params:xml:ns:yang:ietf-bfd-large | |||
| Registrant Contact: The IESG | Registrant Contact: The IESG | |||
| End of changes. 13 change blocks. | ||||
| 20 lines changed or deleted | 21 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||