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 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. | The above text also 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 | |||
End of changes. 9 change blocks. | ||||
13 lines changed or deleted | 13 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |