| 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 1512-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 1512. 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. | 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 | |||
| 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 18 ¶ | 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 | |||
| 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 628 ¶ | |||
| 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 664 ¶ | |||
| [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. 63 change blocks. | ||||
| 194 lines changed or deleted | 192 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||