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.