rfc9764.original | rfc9764.txt | |||
---|---|---|---|---|
Network Working Group J. Haas | Internet Engineering Task Force (IETF) J. Haas | |||
Internet-Draft Juniper Networks, Inc. | Request for Comments: 9764 Juniper Networks, Inc. | |||
Intended status: Standards Track A. Fu | Category: Standards Track A. Fu | |||
Expires: 19 July 2025 Bloomberg L.P. | ISSN: 2070-1721 Bloomberg L.P. | |||
15 January 2025 | April 2025 | |||
BFD Encapsulated in Large Packets | Bidirectional Forwarding Detection (BFD) Encapsulated in Large Packets | |||
draft-ietf-bfd-large-packets-16 | ||||
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 | |||
that not only is the path between two systems 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 | |||
document specifies how to implement such a mechanism using BFD in | document specifies how to implement such a mechanism using BFD in | |||
Asynchronous mode. | Asynchronous mode. | |||
YANG modules for managing this mechanism are also defined in this | YANG modules for managing this mechanism are also defined in this | |||
document. These YANG modules augment the existing BFD YANG modules | document. These YANG modules augment the existing BFD YANG modules | |||
defined in RFC 9314. The YANG modules in this document conform to | defined in RFC 9314. The YANG modules in this document conform to | |||
the Network Management Datastore Architecture (NMDA) (RFC 8342). | the Network Management Datastore Architecture (NMDA) (RFC 8342). | |||
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 19 July 2025. | 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/rfc9764. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2025 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 | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 3 | 2. Requirements Language | |||
3. BFD Encapsulated in Large Packets . . . . . . . . . . . . . . 3 | 3. BFD Encapsulated in Large Packets | |||
4. Implementation and Deployment Considerations . . . . . . . . 3 | 4. Implementation and Deployment Considerations | |||
4.1. Implementations that do not support Large BFD Packets . . 4 | 4.1. Implementations That Do Not Support Large BFD Packets | |||
4.2. Selecting MTU size to be detected . . . . . . . . . . . . 4 | 4.2. Selecting MTU Size To Be Detected | |||
4.3. Detecting MTU Mismatches . . . . . . . . . . . . . . . . 5 | 4.3. Detecting MTU Mismatches | |||
4.4. Detecting MTU Changes . . . . . . . . . . . . . . . . . . 5 | 4.4. Detecting MTU Changes | |||
4.5. Equal Cost Multiple Paths (ECMP) or other Load Balancing | 4.5. Equal-Cost Multipath (ECMP) or Other Load-Balancing | |||
Considerations . . . . . . . . . . . . . . . . . . . . . 5 | Considerations | |||
4.6. S-BFD . . . . . . . . . . . . . . . . . . . . . . . . . . 6 | 4.6. S-BFD | |||
5. BFD Encapsulated in Large Packets YANG Module . . . . . . . . 6 | 5. BFD Encapsulated in Large Packets YANG Module | |||
5.1. Data Model Overview . . . . . . . . . . . . . . . . . . . 6 | 5.1. Data Model Overview | |||
5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 7 | 5.2. YANG Module | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 6. Security Considerations | |||
6.1. YANG Security Considerations . . . . . . . . . . . . . . 11 | 6.1. YANG Security Considerations | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 12 | 7. IANA Considerations | |||
7.1. The "IETF XML" Registry . . . . . . . . . . . . . . . . . 12 | 7.1. The "IETF XML" Registry | |||
7.2. The "YANG Module Names" Registry . . . . . . . . . . . . 12 | 7.2. The "YANG Module Names" Registry | |||
8. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 13 | 8. References | |||
9. Normative References . . . . . . . . . . . . . . . . . . . . 13 | 8.1. Normative References | |||
10. Informative References . . . . . . . . . . . . . . . . . . . 14 | 8.2. Informative References | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 15 | Acknowledgments | |||
Authors' Addresses | ||||
1. Introduction | 1. Introduction | |||
The Bidirectional Forwarding Detection (BFD) [RFC5880] protocol is | The Bidirectional Forwarding Detection (BFD) [RFC5880] protocol is | |||
commonly used to verify connectivity between two systems. However, | commonly used to verify connectivity between two systems. However, | |||
some applications may require that the Path MTU [RFC1191] between | some applications may require that the Path MTU [RFC1191] between | |||
those two systems meets a certain minimum criterion. When the Path | those two systems meets a certain minimum criterion. When the Path | |||
MTU decreases below the minimum threshold, those applications may | MTU decreases below the minimum threshold, those applications may | |||
wish to consider the path unusable. | wish to consider the path unusable. | |||
BFD may be encapsulated in a number of transport protocols. An | BFD may be encapsulated in a number of transport protocols. An | |||
example of this is single-hop BFD [RFC5881]. In that case, the link | example is single-hop BFD [RFC5881]. In that case, the link MTU | |||
MTU configuration is typically enough to guarantee communication | configuration is typically enough to guarantee communication between | |||
between the two systems for that size MTU. BFD Echo mode | the two systems for that size MTU. BFD Echo mode (Section 6.4 of | |||
(Section 6.4 of [RFC5880]) is sufficient to permit verification of | [RFC5880]) is sufficient to permit verification of the Path MTU of | |||
the Path MTU of such directly connected systems. Previous proposals | such directly connected systems. Previous proposals (e.g., | |||
([I-D.haas-xiao-bfd-echo-path-mtu]) have been made for testing Path | [BFD-ECHO-PATH-MTU]) have been made for testing Path MTU for such | |||
MTU for such directly connected systems. However, in the case of | directly connected systems. However, in the case of multihop BFD | |||
multi-hop BFD [RFC5883], this guarantee does not hold. | [RFC5883], this guarantee does not hold. | |||
The encapsulation of BFD in multi-hop sessions is a simple UDP | The encapsulation of BFD in multihop sessions is a simple UDP packet. | |||
packet. The BFD elements of procedure (Section 6.8.6 of [RFC5880]) | The BFD elements of procedure (Section 6.8.6 of [RFC5880]) cover | |||
covers validating the BFD payload. However, the specification is | validating the BFD payload. However, the specification is silent on | |||
silent on the length of the encapsulation that is carrying the BFD | the length of the encapsulation that is carrying the BFD PDU. While | |||
PDU. While it is most common that the transport protocol payload | it is most common that the transport protocol payload (i.e., UDP) | |||
(i.e., UDP) length is the exact size of the BFD PDU, this is not | length is the exact size of the BFD PDU, this is not required by the | |||
required by the elements of procedure. This leads to the possibility | elements of procedure. This leads to the possibility that the | |||
that the transport protocol length may be larger than the contained | transport protocol length may be larger than the contained BFD PDU. | |||
BFD PDU. | ||||
2. Requirements Language | 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 Encapsulated in Large Packets | 3. BFD Encapsulated in Large Packets | |||
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. | |||
[RFC5880], section 6.8.6, 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 | only need to use an appropriate value of bfd.PaddedPduSize to | |||
appropriate to exercise the path MTU for the desired application. | exercise the Path MTU for the desired application. This may be | |||
This may be significantly smaller than the system's link MTU; e.g., | significantly smaller than the system's link MTU, e.g., desired Path | |||
desired path MTU is 1512 bytes while the interface MTU that BFD with | MTU is 1512 bytes, while the interface MTU that BFD with large | |||
large packets is running on is 9000 bytes. | packets is running on is 9000 bytes. | |||
In the case multiple BFD clients desire to test the same BFD | In the case multiple BFD clients desire to test the same BFD | |||
endpoints using different bfd.PaddedPduSize parameters, | endpoints using different bfd.PaddedPduSize parameters, | |||
implementations SHOULD select the largest bfd.PaddedPduSize parameter | implementations SHOULD select the largest bfd.PaddedPduSize parameter | |||
from the configured sessions. This is similar to how implementations | from the configured sessions. This is similar to how implementations | |||
of BFD select the most aggressive timing parameters for multiple | of BFD select the most aggressive timing parameters for multiple | |||
sessions to the same endpoint. Failure to select the largest size | sessions to the same endpoint. Failure to select the largest size | |||
will result in BFD sessions going to the Up state and dependent | will result in BFD sessions going to the Up state and dependent | |||
applications not having their MTU requirements satisfied. | applications not having their MTU requirements satisfied. | |||
4.3. Detecting MTU Mismatches | 4.3. Detecting MTU Mismatches | |||
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 bi-directional 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. E.g., | bfd.PaddedPduSize parameter on each side of the BFD session. For | |||
if the desire is to verify a 1500 byte MTU in both directions on an | example, if the desire is to verify a 1500-byte MTU in both | |||
Ethernet or point to point link, each side of the BFD session must | directions on an Ethernet or point-to-point link, each side of the | |||
have bfd.PaddedPduSize set to 1500. In the absence of such | BFD session must have bfd.PaddedPduSize set to 1500. In the absence | |||
consistent configuration, BFD with Large Packets may correctly | of such consistent configuration, BFD with Large Packets may | |||
determine unidirectional connectivity at the tested MTU, but bi- | correctly determine unidirectional connectivity at the tested MTU, | |||
directional 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 | |||
Once BFD sessions using Large Packets has reached the Up state, | Once BFD sessions using Large Packets has reached the Up state, | |||
connectivity at the tested MTU(s) for the session is being validated. | connectivity at the tested MTU(s) for the session is being validated. | |||
If the path MTU tested by the BFD with Large Packets session falls | If the Path MTU tested by the BFD with Large Packets session falls | |||
below the tested MTU, the BFD session will go Down. | below the tested MTU, the BFD session will go Down. | |||
In the opposite circumstance where the path MTU increases, the BFD | In the opposite circumstance (where the Path MTU increases), the BFD | |||
session will continue without being impacted. BFD for Large Packets | session will continue without being impacted. BFD for Large Packets | |||
only ensures that the minimally acceptable MTU for the session can be | only ensures that the minimally acceptable MTU for the session can be | |||
used. | used. | |||
4.5. Equal Cost Multiple Paths (ECMP) or other Load Balancing | 4.5. Equal-Cost Multipath (ECMP) or Other Load-Balancing Considerations | |||
Considerations | ||||
Various mechanisms are utilized to increase throughput between two | Various mechanisms are utilized to increase throughput between two | |||
endpoints at various network layers. Such features include Link | endpoints at various network layers. Such features include Link | |||
Aggregate Groups (LAGs) or ECMP forwarding. Such mechanisms balance | Aggregation Groups (LAGs) or ECMP forwarding. Such mechanisms | |||
traffic across multiple physical links while hiding the details of | balance traffic across multiple physical links while hiding the | |||
that balancing from the higher networking layers. The details of | details of that balancing from the higher networking layers. The | |||
that balancing are highly implementation specific. | details of that balancing are highly implementation specific. | |||
In the presence of such load balancing mechanisms, it is possible to | In the presence of such load-balancing mechanisms, it is possible to | |||
have member links that are not properly forwarding traffic. In such | have member links that are not properly forwarding traffic. In such | |||
circumstances, this will result in dropped traffic when traffic is | circumstances, this will result in dropped traffic when traffic is | |||
chosen to be load balanced across those member links. | chosen to be load balanced across those member links. | |||
Such load balancing mechanisms may not permit all link members to be | Such load-balancing mechanisms may not permit all link members to be | |||
properly tested by BFD. This is because the BFD Control packets may | properly tested by BFD. This is because the BFD Control packets may | |||
be forwarded only along links that are up. BFD on LAG, [RFC7130], | be forwarded only along links that are up. BFD on LAG interfaces, | |||
was developed to help cover one such scenario. However, for testing | [RFC7130], was developed to help cover one such scenario. However, | |||
forwarding over multiple hops, there is no such specified general | for testing forwarding over multiple hops, there is no such specified | |||
purpose BFD mechanism for exercising all links in an ECMP. This may | general-purpose BFD mechanism for exercising all links in an ECMP. | |||
result in a BFD session being in the Up state while some traffic may | This may result in a BFD session being in the Up state while some | |||
be dropped or otherwise negatively impacted along some component | traffic may be dropped or otherwise negatively impacted along some | |||
links. | component links. | |||
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 the 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 | |||
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, | |||
multi-hop, 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 page 7, line 28 ¶ | skipping to change at line 303 ¶ | |||
+--rw pdu-size? padded-pdu-size {padding}? | +--rw pdu-size? padded-pdu-size {padding}? | |||
augment /rt:routing/rt:control-plane-protocols | augment /rt:routing/rt:control-plane-protocols | |||
/rt:control-plane-protocol/bfd:bfd/bfd-mpls:mpls | /rt:control-plane-protocol/bfd:bfd/bfd-mpls:mpls | |||
/bfd-mpls:session-groups/bfd-mpls:session-group: | /bfd-mpls:session-groups/bfd-mpls:session-group: | |||
+--rw pdu-size? padded-pdu-size {padding}? | +--rw pdu-size? padded-pdu-size {padding}? | |||
Figure 1 | Figure 1 | |||
5.2. YANG Module | 5.2. YANG Module | |||
This YANG module imports A YANG Data Model for Routing [RFC8349], and | This YANG module imports "A YANG Data Model for Routing Management | |||
YANG Data Model for Bidirectional Forwading Detection (BFD) | (NMDA Version)" [RFC8349] and "YANG Data Model for Bidirectional | |||
[RFC9314]. | Forwarding Detection (BFD)" [RFC9314]. | |||
<CODE BEGINS> file "ietf-bfd-large@2025-01-15.yang" | <CODE BEGINS> file "ietf-bfd-large@2025-03-31.yang" | |||
module ietf-bfd-large { | module ietf-bfd-large { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-large"; | namespace "urn:ietf:params:xml:ns:yang:ietf-bfd-large"; | |||
prefix "bfdl"; | prefix bfdl; | |||
import ietf-routing { | import ietf-routing { | |||
prefix rt; | prefix rt; | |||
reference | reference | |||
"RFC 8349: A YANG Data Model for Routing Management | "RFC 8349: A YANG Data Model for Routing Management | |||
(NMDA version)"; | (NMDA version)"; | |||
} | } | |||
import ietf-bfd { | import ietf-bfd { | |||
prefix bfd; | prefix bfd; | |||
skipping to change at page 8, line 48 ¶ | skipping to change at line 371 ¶ | |||
Authors: Jeffrey Haas (jhaas@juniper.net) | Authors: Jeffrey Haas (jhaas@juniper.net) | |||
Albert Fu (afu14@bloomberg.net)."; | Albert Fu (afu14@bloomberg.net)."; | |||
description | description | |||
"This YANG module augments the base BFD YANG module to add | "This YANG module augments the base BFD YANG module to add | |||
attributes related to support for BFD Encapsulated in Large | attributes related to support for BFD Encapsulated in Large | |||
Packets. In particular, it adds a per-session parameter for the | Packets. In particular, it adds a per-session parameter for the | |||
BFD Padded PDU Size. | BFD Padded PDU Size. | |||
Copyright (c) 2024 IETF Trust and the persons identified as | Copyright (c) 2025 IETF Trust and the persons identified as | |||
authors of the code. All rights reserved. | authors of the code. All rights reserved. | |||
Redistribution and use in source and binary forms, with or | Redistribution and use in source and binary forms, with or | |||
without modification, is permitted pursuant to, and subject to | without modification, is permitted pursuant to, and subject to | |||
the license terms contained in, the Revised BSD License set | the license terms contained in, the Revised BSD License set | |||
forth in Section 4.c of the IETF Trust's Legal Provisions | forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX | This version of this YANG module is part of RFC 9764 | |||
(https://www.rfc-editor.org/info/rfcXXXX); see the RFC itself | (https://www.rfc-editor.org/info/rfc9764); see the RFC itself | |||
for full legal notices. | for full legal notices. | |||
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |||
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |||
'MAY', and 'OPTIONAL' in this document are to be interpreted as | 'MAY', and 'OPTIONAL' in this document are to be interpreted as | |||
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |||
they appear in all capitals, as shown here."; | they appear in all capitals, as shown here."; | |||
revision "2025-01-15" { | revision 2025-03-31 { | |||
description | description | |||
"Initial Version."; | "Initial Version."; | |||
reference | reference | |||
"RFC XXXX, BFD Encapsulated in Large Packets."; | "RFC 9764, Bidirectional Forwarding Detection (BFD) | |||
Encapsulated in Large Packets."; | ||||
} | } | |||
feature padding { | feature padding { | |||
description | description | |||
"If supported, the feature allows for BFD sessions to be | "If supported, the feature allows for BFD sessions to be | |||
configured with padded PDUs in support of BFD Encapsulated in | configured with padded PDUs in support of BFD Encapsulated in | |||
Large Packets."; | Large Packets."; | |||
} | } | |||
typedef padded-pdu-size { | typedef padded-pdu-size { | |||
type uint16 { | type uint16 { | |||
range "24..65535"; | range "24..65535"; | |||
} | } | |||
units "bytes"; | units "bytes"; | |||
description | description | |||
"The size of the padded and encapsulated BFD control packets | "The size of the padded and encapsulated BFD control packets | |||
to be transmitted at layer 3. The BFD minimum control packet | to be transmitted at Layer 3. The BFD minimum control packet | |||
size is 24 or 26 octets; see Section 6.8.6 of RFC 5880. | size is 24 or 26 octets; see Section 6.8.6 of RFC 5880. | |||
If the configured padded PDU size is smaller than the minimum | If the configured padded PDU size is smaller than the minimum | |||
sized packet of a given BFD session, then the minimum sized | sized packet of a given BFD session, then the minimum sized | |||
packet for the session will be used. | packet for the session will be used. | |||
The maximum padded PDU size may be limited by the supported | The maximum padded PDU size may be limited by the supported | |||
interface MTU of the system."; | interface MTU of the system."; | |||
reference | reference | |||
"RFC XXXX, BFD Encapsulated in Large Packets."; | "RFC 9764, Bidirectional Forwarding Detection (BFD) | |||
Encapsulated in Large Packets."; | ||||
} | } | |||
grouping bfd-large-common { | grouping bfd-large-common { | |||
description | description | |||
"Common configuration and operational state for BFD | "Common configuration and operational state for BFD | |||
Encapsulated in Large Packets."; | Encapsulated in Large Packets."; | |||
reference | reference | |||
"RFC XXXX, BFD Encapsulated in Large Packets."; | "RFC 9764, Bidirectional Forwarding Detection (BFD) | |||
Encapsulated in Large Packets."; | ||||
leaf pdu-size { | leaf pdu-size { | |||
if-feature "padding"; | if-feature "padding"; | |||
type padded-pdu-size; | type padded-pdu-size; | |||
description | description | |||
"If set, this configures the padded PDU size for the | "If set, this configures the padded PDU size for the | |||
Asynchronous mode BFD session. By default, no additional | Asynchronous mode BFD session. By default, no additional | |||
padding is added to such packets."; | padding is added to such packets."; | |||
} | } | |||
} | } | |||
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/" | |||
"bfd-ip-sh:sessions/bfd-ip-sh:session" { | + "bfd-ip-sh:sessions/bfd-ip-sh:session" { | |||
uses bfd-large-common; | uses bfd-large-common; | |||
description | description | |||
"Augment the 'bfd' container to add attributes related to BFD | "Augment the 'bfd' container to add attributes related to BFD | |||
Encapsulated in Large Packets."; | Encapsulated in Large Packets."; | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" + | augment "/rt:routing/rt:control-plane-protocols/" | |||
"rt:control-plane-protocol/bfd:bfd/bfd-ip-mh:ip-mh/" + | + "rt:control-plane-protocol/bfd:bfd/bfd-ip-mh:ip-mh/" | |||
"bfd-ip-mh:session-groups/bfd-ip-mh:session-group" { | + "bfd-ip-mh:session-groups/bfd-ip-mh:session-group" { | |||
uses bfd-large-common; | uses bfd-large-common; | |||
description | description | |||
"Augment the 'bfd' container to add attributes related to BFD | "Augment the 'bfd' container to add attributes related to BFD | |||
Encapsulated in Large Packets."; | Encapsulated in Large Packets."; | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" + | augment "/rt:routing/rt:control-plane-protocols/" | |||
"rt:control-plane-protocol/bfd:bfd/bfd-lag:lag/" + | + "rt:control-plane-protocol/bfd:bfd/bfd-lag:lag/" | |||
"bfd-lag:sessions/bfd-lag:session" { | + "bfd-lag:sessions/bfd-lag:session" { | |||
uses bfd-large-common; | uses bfd-large-common; | |||
description | description | |||
"Augment the 'bfd' container to add attributes related to BFD | "Augment the 'bfd' container to add attributes related to BFD | |||
Encapsulated in Large Packets."; | Encapsulated in Large Packets."; | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" + | augment "/rt:routing/rt:control-plane-protocols/" | |||
"rt:control-plane-protocol/bfd:bfd/bfd-mpls:mpls/" + | + "rt:control-plane-protocol/bfd:bfd/bfd-mpls:mpls/" | |||
+ "bfd-mpls:session-groups/bfd-mpls:session-group" { | ||||
"bfd-mpls:session-groups/bfd-mpls:session-group" { | ||||
uses bfd-large-common; | uses bfd-large-common; | |||
description | description | |||
"Augment the 'bfd' container to add attributes related to BFD | "Augment the 'bfd' container to add attributes related to BFD | |||
Encapsulated in Large Packets."; | Encapsulated in Large Packets."; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
Figure 2 | Figure 2 | |||
skipping to change at page 11, line 31 ¶ | skipping to change at line 499 ¶ | |||
On-path attackers that can selectively drop BFD packets, including | On-path attackers that can selectively drop BFD packets, including | |||
those with large MTUs, can cause BFD sessions to go Down. | those with large MTUs, can cause BFD sessions to go Down. | |||
The contents of the padding payload are set to zero. This avoids | The contents of the padding payload are set to zero. This avoids | |||
implementation issues where the local uninitialized data may be | implementation issues where the local uninitialized data may be | |||
leaked. | leaked. | |||
6.1. YANG Security Considerations | 6.1. YANG Security Considerations | |||
This section is modeled after the template described in Section 3.7 | This section is modeled after the template described in Section 3.7 | |||
of [I-D.ietf-netmod-rfc8407bis]. | of [YANG-GUIDELINES]. | |||
The "ietf-bfd-large" YANG module defines a data model that is | The "ietf-bfd-large" YANG module defines a data model that is | |||
designed to be accessed via YANG-based management protocols, such as | designed to be accessed via YANG-based management protocols, such as | |||
NETCONF [RFC6241] and RESTCONF [RFC8040]. These protocols have to | NETCONF [RFC6241] and RESTCONF [RFC8040]. These protocols have to | |||
use a secure transport layer (e.g., SSH [RFC4252], TLS [RFC8446], and | use a secure transport layer (e.g., SSH [RFC4252], TLS [RFC8446], and | |||
QUIC [RFC9000]) and have to use mutual authentication. | QUIC [RFC9000]) and have to use mutual authentication. | |||
The Network Configuration Access Control Model (NACM) [RFC8341] | The Network Configuration Access Control Model (NACM) [RFC8341] | |||
provides the means to restrict access for particular NETCONF or | provides the means to restrict access for particular NETCONF or | |||
RESTCONF users to a preconfigured subset of all available NETCONF or | RESTCONF users to a preconfigured subset of all available NETCONF or | |||
skipping to change at page 12, line 27 ¶ | skipping to change at line 543 ¶ | |||
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. This | |||
module defines one such grouping, "bfd-large-common", which contains | module defines one such grouping, "bfd-large-common", which contains | |||
the "pdu-size" data node whose security considerations are documented | the "pdu-size" data node whose security considerations are documented | |||
above. | above. | |||
7. IANA Considerations | 7. IANA Considerations | |||
7.1. The "IETF XML" Registry | 7.1. The "IETF XML" Registry | |||
This document registers one URIs in the "ns" subregistry of the "IETF | IANA has registered the following URI in the "ns" subregistry of the | |||
XML" registry [RFC3688]. Following the format in [RFC3688], the | "IETF XML Registry" [RFC3688]. | |||
following registration is requested: | ||||
URI: urn:ietf:params:xml:ns:yang:ietf-bfd-large | ||||
Registrant Contact: The IESG | ||||
XML: N/A, the requested URI is an XML namespace. | ||||
Figure 3 | URI: urn:ietf:params:xml:ns:yang:ietf-bfd-large | |||
Registrant Contact: The IESG | ||||
XML: N/A; the requested URI is an XML namespace. | ||||
7.2. The "YANG Module Names" Registry | 7.2. The "YANG Module Names" Registry | |||
This document registers one YANG modules in the "YANG Module Names" | IANA has registered the following YANG module in the "YANG Module | |||
registry [RFC6020]. Following the format in [RFC6020], the following | Names" registry [RFC6020]. | |||
registrations are requested: | ||||
name: ietf-bfd-large | ||||
namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-large | ||||
prefix: bfdl | ||||
reference: RFC XXXX | ||||
Figure 4 | ||||
8. Acknowledgments | Name: ietf-bfd-large | |||
Maintained by IANA: N | ||||
Namespace: urn:ietf:params:xml:ns:yang:ietf-bfd-large | ||||
Prefix: bfdl | ||||
Reference: RFC 9764 | ||||
The authors would like to thank Les Ginsberg, Mahesh Jethanandani, | 8. References | |||
Robert Raszuk, and Ketan Talaulikar, for their valuable feedback on | ||||
this proposal. | ||||
9. Normative References | 8.1. Normative References | |||
[RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | [RFC0791] Postel, J., "Internet Protocol", STD 5, RFC 791, | |||
DOI 10.17487/RFC0791, September 1981, | DOI 10.17487/RFC0791, September 1981, | |||
<https://www.rfc-editor.org/info/rfc791>. | <https://www.rfc-editor.org/info/rfc791>. | |||
[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>. | |||
skipping to change at page 14, line 30 ¶ | skipping to change at line 627 ¶ | |||
Routing Management (NMDA Version)", RFC 8349, | Routing Management (NMDA Version)", RFC 8349, | |||
DOI 10.17487/RFC8349, March 2018, | DOI 10.17487/RFC8349, March 2018, | |||
<https://www.rfc-editor.org/info/rfc8349>. | <https://www.rfc-editor.org/info/rfc8349>. | |||
[RFC9314] Jethanandani, M., Ed., Rahman, R., Ed., Zheng, L., Ed., | [RFC9314] Jethanandani, M., Ed., Rahman, R., Ed., Zheng, L., Ed., | |||
Pallagatti, S., and G. Mirsky, "YANG Data Model for | Pallagatti, S., and G. Mirsky, "YANG Data Model for | |||
Bidirectional Forwarding Detection (BFD)", RFC 9314, | Bidirectional Forwarding Detection (BFD)", RFC 9314, | |||
DOI 10.17487/RFC9314, September 2022, | DOI 10.17487/RFC9314, September 2022, | |||
<https://www.rfc-editor.org/info/rfc9314>. | <https://www.rfc-editor.org/info/rfc9314>. | |||
10. Informative References | 8.2. Informative References | |||
[I-D.haas-xiao-bfd-echo-path-mtu] | ||||
Min, X. and J. Haas, "Application of the BFD Echo function | ||||
for Path MTU Verification or Detection", Work in Progress, | ||||
Internet-Draft, draft-haas-xiao-bfd-echo-path-mtu-01, 11 | ||||
July 2011, <https://datatracker.ietf.org/doc/html/draft- | ||||
haas-xiao-bfd-echo-path-mtu-01>. | ||||
[I-D.ietf-netmod-rfc8407bis] | [BFD-ECHO-PATH-MTU] | |||
Bierman, A., Boucadair, M., and Q. Wu, "Guidelines for | Min, X., Ed. and J. Haas, Ed., "Application of the BFD | |||
Authors and Reviewers of Documents Containing YANG Data | Echo function for Path MTU Verification or Detection", | |||
Models", Work in Progress, Internet-Draft, draft-ietf- | Work in Progress, Internet-Draft, draft-haas-xiao-bfd- | |||
netmod-rfc8407bis-22, 14 January 2025, | echo-path-mtu-01, 11 July 2011, | |||
<https://datatracker.ietf.org/doc/html/draft-ietf-netmod- | <https://datatracker.ietf.org/doc/html/draft-haas-xiao- | |||
rfc8407bis-22>. | bfd-echo-path-mtu-01>. | |||
[RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, | [RFC1191] Mogul, J. and S. Deering, "Path MTU discovery", RFC 1191, | |||
DOI 10.17487/RFC1191, November 1990, | DOI 10.17487/RFC1191, November 1990, | |||
<https://www.rfc-editor.org/info/rfc1191>. | <https://www.rfc-editor.org/info/rfc1191>. | |||
[RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | [RFC4252] Ylonen, T. and C. Lonvick, Ed., "The Secure Shell (SSH) | |||
Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, | Authentication Protocol", RFC 4252, DOI 10.17487/RFC4252, | |||
January 2006, <https://www.rfc-editor.org/info/rfc4252>. | January 2006, <https://www.rfc-editor.org/info/rfc4252>. | |||
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., | |||
skipping to change at page 15, line 27 ¶ | skipping to change at line 663 ¶ | |||
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, | |||
<https://www.rfc-editor.org/info/rfc8446>. | <https://www.rfc-editor.org/info/rfc8446>. | |||
[RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | [RFC9000] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | |||
Multiplexed and Secure Transport", RFC 9000, | Multiplexed and Secure Transport", RFC 9000, | |||
DOI 10.17487/RFC9000, May 2021, | DOI 10.17487/RFC9000, May 2021, | |||
<https://www.rfc-editor.org/info/rfc9000>. | <https://www.rfc-editor.org/info/rfc9000>. | |||
[YANG-GUIDELINES] | ||||
Bierman, A., Boucadair, M., Ed., and Q. Wu, "Guidelines | ||||
for Authors and Reviewers of Documents Containing YANG | ||||
Data Models", Work in Progress, Internet-Draft, draft- | ||||
ietf-netmod-rfc8407bis-22, 14 January 2025, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-netmod- | ||||
rfc8407bis-22>. | ||||
Acknowledgments | ||||
The authors would like to thank Les Ginsberg, Mahesh Jethanandani, | ||||
Robert Raszuk, and Ketan Talaulikar, for their valuable feedback on | ||||
this proposal. | ||||
Authors' Addresses | Authors' Addresses | |||
Jeffrey Haas | Jeffrey Haas | |||
Juniper Networks, Inc. | Juniper Networks, Inc. | |||
1133 Innovation Way | 1133 Innovation Way | |||
Sunnyvale, CA 94089 | Sunnyvale, CA 94089 | |||
United States of America | United States of America | |||
Email: jhaas@juniper.net | Email: jhaas@juniper.net | |||
Albert Fu | Albert Fu | |||
End of changes. 61 change blocks. | ||||
189 lines changed or deleted | 186 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |