| < draft-ietf-mpls-bfd-directed-08.txt | draft-ietf-mpls-bfd-directed-09.txt > | |||
|---|---|---|---|---|
| MPLS Working Group G. Mirsky | MPLS Working Group G. Mirsky | |||
| Internet-Draft ZTE | Internet-Draft ZTE | |||
| Intended status: Standards Track J. Tantsura | Intended status: Standards Track J. Tantsura | |||
| Expires: June 8, 2018 Individual | Expires: February 22, 2019 Nuage Networks | |||
| I. Varlashkin | I. Varlashkin | |||
| M. Chen | M. Chen | |||
| Huawei | Huawei | |||
| December 5, 2017 | August 21, 2018 | |||
| Bidirectional Forwarding Detection (BFD) Directed Return Path | Bidirectional Forwarding Detection (BFD) Directed Return Path | |||
| draft-ietf-mpls-bfd-directed-08 | draft-ietf-mpls-bfd-directed-09 | |||
| Abstract | Abstract | |||
| Bidirectional Forwarding Detection (BFD) is expected to be able to | Bidirectional Forwarding Detection (BFD) is expected to be able to | |||
| monitor wide variety of encapsulations of paths between systems. | monitor a wide variety of encapsulations of paths between systems. | |||
| When a BFD session monitors an explicitly routed unidirectional path | When a BFD session monitors an explicitly routed unidirectional path | |||
| there may be a need to direct egress BFD peer to use a specific path | there may be a need to direct egress BFD peer to use a specific path | |||
| for the reverse direction of the BFD session. | for the reverse direction of the BFD session. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on June 8, 2018. | This Internet-Draft will expire on February 22, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2017 IETF Trust and the persons identified as the | Copyright (c) 2018 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 | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
| to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
| include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
| the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
| described in the Simplified BSD License. | described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
| 1.1. Conventions used in this document . . . . . . . . . . . . 3 | 1.1. Conventions used in this document . . . . . . . . . . . . 3 | |||
| 1.1.1. Requirements Language . . . . . . . . . . . . . . . . 3 | 1.1.1. Requirements Language . . . . . . . . . . . . . . . . 3 | |||
| 2. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Problem Statement . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. Control of the Reverse BFD Path . . . . . . . . . . . . . . . 3 | 3. Control of the Reverse BFD Path . . . . . . . . . . . . . . . 3 | |||
| 3.1. BFD Reverse Path TLV . . . . . . . . . . . . . . . . . . 3 | 3.1. BFD Reverse Path TLV . . . . . . . . . . . . . . . . . . 3 | |||
| 3.2. Static and RSVP-TE sub-TLVs . . . . . . . . . . . . . . . 5 | 3.2. Static and RSVP-TE sub-TLVs . . . . . . . . . . . . . . . 4 | |||
| 3.3. Return Codes . . . . . . . . . . . . . . . . . . . . . . 5 | 3.3. Return Codes . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 4. Use Case Scenario . . . . . . . . . . . . . . . . . . . . . . 5 | 4. Use Case Scenario . . . . . . . . . . . . . . . . . . . . . . 5 | |||
| 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 5.1. BFD Reverse Path TLV . . . . . . . . . . . . . . . . . . 6 | 5.1. BFD Reverse Path TLV . . . . . . . . . . . . . . . . . . 6 | |||
| 5.2. Return Code . . . . . . . . . . . . . . . . . . . . . . . 6 | 5.2. Return Code . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 6. Security Considerations . . . . . . . . . . . . . . . . . . . 6 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 6 | |||
| 7. Normative References . . . . . . . . . . . . . . . . . . . . 6 | 7. Normative References . . . . . . . . . . . . . . . . . . . . 6 | |||
| Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 8 | Appendix A. Acknowledgments . . . . . . . . . . . . . . . . . . 8 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 1. Introduction | 1. Introduction | |||
| [RFC5880], [RFC5881], and [RFC5883] established the BFD protocol for | [RFC5880], [RFC5881], and [RFC5883] established the BFD protocol for | |||
| IP networks. [RFC5884] and [RFC7726] set rules of using BFD | IP networks. [RFC5884] and [RFC7726] set rules for using BFD | |||
| asynchronous mode over IP/MPLS LSPs. These standards implicitly | asynchronous mode over IP/MPLS LSPs. These standards do not define | |||
| assume that the egress BFD peer will use the shortest path route | means to control the path selection at the egress BFD peer to send | |||
| regardless of route being used to send BFD control packets towards | BFD control packets towards the ingress BFD system. | |||
| it. | ||||
| For the case where a LSP is explicitly routed it is likely that the | For the case when BFD is used to detect defects of the traffic | |||
| shortest return path to the ingress BFD peer would not follow the | engineered LSP the path the BFD control packets transmitted by the | |||
| same path as the LSP in the forward direction. The fact that BFD | egress BFD system toward the ingress may be disjoint from the LSP in | |||
| control packets are not guaranteed to follow the same links and nodes | the forward direction. The fact that BFD control packets are not | |||
| in both forward and reverse directions is a significant factor in | guaranteed to follow the same links and nodes in both forward and | |||
| producing false positive defect notifications, i.e. false alarms, if | reverse directions contributes to producing false positive defect | |||
| used by the ingress BFD peer to deduce the state of the forward | notifications, i.e., false alarms, at the ingress BFD peer. | |||
| direction. | ||||
| This document defines the BFD Reverse Path TLV as an extension to LSP | This document defines the BFD Reverse Path TLV as an extension to LSP | |||
| Ping [RFC8029] and proposes that it is to be used to instruct the | Ping [RFC8029] and proposes that it is to be used to instruct the | |||
| egress BFD peer to use an explicit path for its BFD control packets | egress BFD peer to use an explicit path for its BFD control packets | |||
| associated with a particular BFD session. The TLV will be allocated | associated with a particular BFD session. The TLV will be allocated | |||
| from the TLV and sub-TLV registry defined in [RFC8029]. As a special | from the TLV and sub-TLV registry defined in [RFC8029]. As a special | |||
| case, forward and reverse directions of the BFD session can form a | case, forward and reverse directions of the BFD session can form a | |||
| bi-directional co-routed associated channel. | bi-directional co-routed associated channel. | |||
| 1.1. Conventions used in this document | 1.1. Conventions used in this document | |||
| skipping to change at page 3, line 19 ¶ | skipping to change at page 3, line 17 ¶ | |||
| 1.1.1. Requirements Language | 1.1.1. 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 BCP | |||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| 2. Problem Statement | 2. Problem Statement | |||
| When BFD is used to monitor unidirectional explicitly routed path, | When BFD is used to monitor explicitly routed unidirectional path, | |||
| e.g. MPLS-TE LSP, BFD control packets in forward direction would be | e.g., MPLS-TE LSP, BFD control packets in forward direction would be | |||
| in-band using the mechanism defined in [RFC5884] and [RFC5586]. But | in-band using the mechanism defined in [RFC5884] and [RFC5586]. But | |||
| the reverse direction of the BFD session would follow the shortest | the reverse direction of the BFD session would follow the shortest | |||
| path route and that might lead to the problem in detecting failures | path route and that might lead to the problem in detecting failures | |||
| on a unidirectional explicit path as described below: | on an explicit unidirectional path as described below: | |||
| o a failure detection by ingress node on the reverse path cannot be | o a failure detection by ingress node on the reverse path cannot be | |||
| interpreted as bi-directional failure unambiguously and thus | interpreted as bi-directional failure unambiguously and thus | |||
| trigger, for example, protection switchover of the forward | trigger, for example, protection switchover of the forward | |||
| direction without possibility of being a false positive. | direction without the possibility of being a false positive. | |||
| To address this scenario the egress BFD peer would be instructed to | To address this scenario, the egress BFD peer would be instructed to | |||
| use a specific path for BFD control packets. | use a specific path for BFD control packets. | |||
| 3. Control of the Reverse BFD Path | 3. Control of the Reverse BFD Path | |||
| LSP ping, defined in [RFC8029], uses BFD Discriminator TLV [RFC5884] | To bootstrap a BFD session over an MPLS LSP, LSP ping, defined in | |||
| to bootstrap a BFD session over an MPLS LSP. This document defines a | [RFC8029], MUST be used with BFD Discriminator TLV [RFC5884]. This | |||
| new TLV, BFD Reverse Path TLV, that MUST contain a single sub-TLV | document defines a new TLV, BFD Reverse Path TLV, that MUST contain a | |||
| that can be used to carry information about the reverse path for the | single sub-TLV that can be used to carry information about the | |||
| BFD session that is specified by value in BFD Discriminator TLV. | reverse path for the BFD session that is specified by the value in | |||
| BFD Discriminator TLV. | ||||
| 3.1. BFD Reverse Path TLV | 3.1. BFD Reverse Path TLV | |||
| The BFD Reverse Path TLV is an optional TLV within the LSP ping | The BFD Reverse Path TLV is an optional TLV within the LSP ping | |||
| [RFC8029]. However, if used, the BFD Discriminator TLV MUST be | [RFC8029]. However, if used, the BFD Discriminator TLV MUST be | |||
| included in an Echo Request message as well. If the BFD | included in an Echo Request message as well. If the BFD | |||
| Discriminator TLV is not present when the BFD Reverse Path TLV is | Discriminator TLV is not present when the BFD Reverse Path TLV is | |||
| included, then it MUST be treated as malformed Echo Request, as | included; then it MUST be treated as malformed Echo Request, as | |||
| described in [RFC8029]. | described in [RFC8029]. | |||
| The BFD Reverse Path TLV carries information about the path onto | The BFD Reverse Path TLV carries information about the path onto | |||
| which the egress BFD peer of the BFD session referenced by the BFD | which the egress BFD peer of the BFD session referenced by the BFD | |||
| Discriminator TLV MUST transmit BFD control packets. The format of | Discriminator TLV MUST transmit BFD control packets. The format of | |||
| the BFD Reverse Path TLV is as presented in Figure 1. | the BFD Reverse Path TLV is as presented in Figure 1. | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | BFD Reverse Path TLV Type | Length | | | BFD Reverse Path TLV Type | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Reverse Path | | | Reverse Path | | |||
| ~ ~ | ~ ~ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 1: BFD Reverse Path TLV | Figure 1: BFD Reverse Path TLV | |||
| BFD Reverse Path TLV Type is 2 octets in length and has a value of | BFD Reverse Path TLV Type is two octets in length and has a value of | |||
| TBD1 (to be assigned by IANA as requested in Section 5). | TBD1 (to be assigned by IANA as requested in Section 5). | |||
| Length field is 2 octets long and defines the length in octets of the | Length field is two octets long and defines the length in octets of | |||
| Reverse Path field. | the Reverse Path field. | |||
| Reverse Path field contains a sub-TLV. Any non-multicast Target FEC | Reverse Path field contains a sub-TLV. Any non-multicast Target FEC | |||
| Stack sub-TLV (already defined, or to be defined in the future) for | Stack sub-TLV (already defined, or to be defined in the future) for | |||
| TLV Types 1, 16, and 21 of MPLS LSP Ping Parameters registry MAY be | TLV Types 1, 16, and 21 of MPLS LSP Ping Parameters registry MAY be | |||
| used in this field. Multicast Target FEC Stack sub-TLVs, i.e. p2mp | used in this field. Multicast Target FEC Stack sub-TLVs, i.e., p2mp | |||
| and mp2mp, SHOULD NOT be included into Reverse Path field. If the | and mp2mp, SHOULD NOT be included in Reverse Path field. If the | |||
| egress LSR finds multicast Target Stack sub-TLV it MUST send echo | egress LSR finds multicast Target Stack sub-TLV, it MUST send echo | |||
| reply with the received Reverse Path TLV, BFD Discriminator TLV and | reply with the received Reverse Path TLV, BFD Discriminator TLV and | |||
| set the Return Code to "Inappropriate Target FEC Stack sub-TLV | set the Return Code to "Inappropriate Target FEC Stack sub-TLV | |||
| present" Section 3.3. None, one or more sub-TLVs MAY be included in | present" Section 3.3. None, one or more sub-TLVs MAY be included in | |||
| the BFD Reverse Path TLV. If none sub-TLVs found in the BFD Reverse | the BFD Reverse Path TLV. If no sub-TLVs are found in the BFD | |||
| Path TLV, the egress BFD peer MUST revert to using the local policy | Reverse Path TLV, the egress BFD peer MUST revert to using the local | |||
| based decision as described in Section 7 [RFC5884], i.e., routed over | policy based decision as described in Section 7 [RFC5884], i.e., | |||
| IP network. | routed over IP network. | |||
| If the egress LSR cannot find the path specified in the Reverse Path | If the egress LSR cannot find the path specified in the Reverse Path | |||
| TLV it MUST send Echo Reply with the received BFD Discriminator TLV, | TLV it MUST send Echo Reply with the received BFD Discriminator TLV, | |||
| Reverse Path TLV and set the Return Code to "Failed to establish the | Reverse Path TLV and set the Return Code to "Failed to establish the | |||
| BFD session. The specified reverse path was not found" Section 3.3. | BFD session. The specified reverse path was not found" Section 3.3. | |||
| The egress BFD peer MAY establish the BFD session over IP network as | The egress BFD peer MAY establish the BFD session over IP network as | |||
| defined in [RFC5884]. | defined in [RFC5884]. | |||
| 3.2. Static and RSVP-TE sub-TLVs | 3.2. Static and RSVP-TE sub-TLVs | |||
| When an explicit path on an MPLS data plane is set either as Static | When an explicit path on an MPLS data plane is set either as Static | |||
| or RSVP-TE LSP respective sub-TLVs defined in [RFC7110] MAY be used | or RSVP-TE LSP, corresponding sub-TLVs, defined in [RFC7110], MAY be | |||
| to identify the explicit reverse path for the BFD session. | used to identify the explicit reverse path for the BFD session. If | |||
| any of defined in [RFC7110] sub-TLVs used in BFD Reverse Path TLV, | ||||
| then the periodic verification of the control plane against the data | ||||
| plane, as recommended in Section 3.2 [RFC5884], MUST use the Return | ||||
| Path TLV, as per [RFC7110], with that sub-TLV. By using the LSP Ping | ||||
| with Return Path TLV an operator will be able to verify that the | ||||
| forward LSP and the reverse LSP are mapped to the same FECs as BFD | ||||
| session both at the ingress and the egress systems. | ||||
| 3.3. Return Codes | 3.3. Return Codes | |||
| This document defines the following Return Codes for MPLS LSP Echo | This document defines the following Return Codes for MPLS LSP Echo | |||
| Reply: | Reply: | |||
| o "Inappropriate Target FEC Stack sub-TLV present", (TBD3). When | o "Inappropriate Target FEC Stack sub-TLV present", (TBD3). When | |||
| multicast Target FEC Stack sub-TLV found in the received Echo | multicast Target FEC Stack sub-TLV found in the received Echo | |||
| Request by the egress BFD peer, an Echo Reply with the return code | Request by the egress BFD peer, an Echo Reply with the return code | |||
| set to "Inappropriate Target FEC Stack sub-TLV present" MUST be | set to "Inappropriate Target FEC Stack sub-TLV present" MUST be | |||
| skipping to change at page 5, line 34 ¶ | skipping to change at page 5, line 34 ¶ | |||
| available at the egress BFD peer, an Echo Reply with the return | available at the egress BFD peer, an Echo Reply with the return | |||
| code set to "Failed to establish the BFD session. The specified | code set to "Failed to establish the BFD session. The specified | |||
| reverse path was not found" MUST be sent back to the ingress BFD | reverse path was not found" MUST be sent back to the ingress BFD | |||
| peer Section 3.1. | peer Section 3.1. | |||
| 4. Use Case Scenario | 4. Use Case Scenario | |||
| In the network presented in Figure 2 node A monitors two tunnels to | In the network presented in Figure 2 node A monitors two tunnels to | |||
| node H: A-B-C-D-G-H and A-B-E-F-G-H. To bootstrap a BFD session to | node H: A-B-C-D-G-H and A-B-E-F-G-H. To bootstrap a BFD session to | |||
| monitor the first tunnel, node A MUST include a BFD Discriminator TLV | monitor the first tunnel, node A MUST include a BFD Discriminator TLV | |||
| with Discriminator value (e.g. foobar-1) and MAY include a BFD | with Discriminator value (e.g., foobar-1) and MAY include a BFD | |||
| Reverse Path TLV that references H-G-D-C-B-A tunnel. To bootstrap a | Reverse Path TLV that references H-G-D-C-B-A tunnel. To bootstrap a | |||
| BFD session to monitor the second tunnel, node A MUST include a BFD | BFD session to monitor the second tunnel, node A MUST include a BFD | |||
| Discriminator TLV with a different Discriminator value (e.g. foobar- | Discriminator TLV with a different Discriminator value (e.g., foobar- | |||
| 2) [RFC7726] and MAY include a BFD Reverse Path TLV that references | 2) [RFC7726] and MAY include a BFD Reverse Path TLV that references | |||
| H-G-F-E-B-A tunnel. | H-G-F-E-B-A tunnel. | |||
| C---------D | C---------D | |||
| | | | | | | |||
| A-------B G-----H | A-------B G-----H | |||
| | | | | | | |||
| E---------F | E---------F | |||
| Figure 2: Use Case for BFD Reverse Path TLV | Figure 2: Use Case for BFD Reverse Path TLV | |||
| If an operator needs node H to monitor a path to node A, e.g. | If an operator needs node H to monitor a path to node A, e.g. | |||
| H-G-D-C-B-A tunnel, then by looking up list of known Reverse Paths it | H-G-D-C-B-A tunnel, then by looking up the list of known Reverse | |||
| MAY find and use the existing BFD session. | Paths it MAY find and use the existing BFD session. | |||
| 5. IANA Considerations | 5. IANA Considerations | |||
| 5.1. BFD Reverse Path TLV | 5.1. BFD Reverse Path TLV | |||
| The IANA is requested to assign a new value for BFD Reverse Path TLV | The IANA is requested to assign a new value for BFD Reverse Path TLV | |||
| from the "Multiprotocol Label Switching Architecture (MPLS) Label | from the "Multiprotocol Label Switching Architecture (MPLS) Label | |||
| Switched Paths (LSPs) Ping Parameters - TLVs" registry, "TLVs and | Switched Paths (LSPs) Ping Parameters - TLVs" registry, "TLVs and | |||
| sub-TLVs" sub-registry. | sub-TLVs" sub-registry. | |||
| skipping to change at page 8, line 18 ¶ | skipping to change at page 8, line 18 ¶ | |||
| comments from Eric Gray and Carlos Pignataro. | comments from Eric Gray and Carlos Pignataro. | |||
| Authors' Addresses | Authors' Addresses | |||
| Greg Mirsky | Greg Mirsky | |||
| ZTE | ZTE | |||
| Email: gregimirsky@gmail.com | Email: gregimirsky@gmail.com | |||
| Jeff Tantsura | Jeff Tantsura | |||
| Individual | Nuage Networks | |||
| Email: jefftant.ietf@gmail.com | Email: jefftant.ietf@gmail.com | |||
| Ilya Varlashkin | Ilya Varlashkin | |||
| Email: Ilya@nobulus.com | Email: Ilya@nobulus.com | |||
| Mach(Guoyi) Chen | Mach(Guoyi) Chen | |||
| Huawei | Huawei | |||
| End of changes. 24 change blocks. | ||||
| 48 lines changed or deleted | 54 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||