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. |