| rfc9117.original | rfc9117.txt | |||
|---|---|---|---|---|
| Network Working Group J. Uttaro | Internet Engineering Task Force (IETF) J. Uttaro | |||
| Internet-Draft AT&T | Request for Comments: 9117 AT&T | |||
| Updates: 8955 (if approved) J. Alcaide | Updates: 8955 J. Alcaide | |||
| Intended status: Standards Track C. Filsfils | Category: Standards Track C. Filsfils | |||
| Expires: December 5, 2021 D. Smith | ISSN: 2070-1721 D. Smith | |||
| Cisco | Cisco | |||
| P. Mohapatra | P. Mohapatra | |||
| Sproute Networks | Sproute Networks | |||
| June 3, 2021 | August 2021 | |||
| Revised Validation Procedure for BGP Flow Specifications | Revised Validation Procedure for BGP Flow Specifications | |||
| draft-ietf-idr-bgp-flowspec-oid-15 | ||||
| Abstract | Abstract | |||
| This document describes a modification to the validation procedure | This document describes a modification to the validation procedure | |||
| defined for the dissemination of BGP Flow Specifications. The | defined for the dissemination of BGP Flow Specifications. The | |||
| dissemination of BGP Flow Specifications as specified in [RFC8955] | dissemination of BGP Flow Specifications as specified in RFC 8955 | |||
| requires that the originator of the Flow Specification matches the | requires that the originator of the Flow Specification match the | |||
| originator of the best-match unicast route for the destination prefix | originator of the best-match unicast route for the destination prefix | |||
| embedded in the Flow Specification. For an iBGP received route, the | embedded in the Flow Specification. For an Internal Border Gateway | |||
| originator is typically a border router within the same autonomous | Protocol (iBGP) received route, the originator is typically a border | |||
| system. The objective is to allow only BGP speakers within the data | router within the same autonomous system (AS). The objective is to | |||
| forwarding path to originate BGP Flow Specifications. Sometimes it | allow only BGP speakers within the data forwarding path to originate | |||
| is desirable to originate the BGP Flow Specification from any place | BGP Flow Specifications. Sometimes it is desirable to originate the | |||
| within the autonomous system itself, for example, from a centralized | BGP Flow Specification from any place within the autonomous system | |||
| BGP route controller. However, the RFC 8955 validation procedure | itself, for example, from a centralized BGP route controller. | |||
| will fail in this scenario. The modification proposed herein relaxes | However, the validation procedure described in RFC 8955 will fail in | |||
| the validation rule to enable Flow Specifications to be originated | this scenario. The modification proposed herein relaxes the | |||
| within the same autonomous system as the BGP speaker performing the | validation rule to enable Flow Specifications to be originated within | |||
| the same autonomous system as the BGP speaker performing the | ||||
| validation. Additionally, this document revises the AS_PATH | validation. Additionally, this document revises the AS_PATH | |||
| validation rules so Flow Specifications received from an eBGP peer | validation rules so Flow Specifications received from an External | |||
| can be validated when such peer is a BGP route server. | Border Gateway Protocol (eBGP) peer can be validated when such a peer | |||
| is a BGP route server. | ||||
| This document updates the validation procedure in [RFC8955]. | This document updates the validation procedure in RFC 8955. | |||
| 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 December 5, 2021. | 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/rfc9117. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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. Requirements Language . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
| 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Definitions of Terms Used in This Memo | |||
| 3. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Motivation | |||
| 4. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 4. Revised Validation Procedure | |||
| 5. Revised Validation Procedure . . . . . . . . . . . . . . . . 7 | 4.1. Revision of Route Feasibility | |||
| 5.1. Revision of Route Feasibility . . . . . . . . . . . . . . 7 | 4.2. Revision of AS_PATH Validation | |||
| 5.2. Revision of AS_PATH Validation . . . . . . . . . . . . . 8 | 5. Topology Considerations | |||
| 6. Topology Considerations . . . . . . . . . . . . . . . . . . . 10 | 6. IANA Considerations | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 11 | 7. Security Considerations | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 11 | 8. References | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 12 | 8.1. Normative References | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 8.2. Informative References | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 12 | Acknowledgements | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 13 | Authors' Addresses | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 13 | ||||
| 1. Requirements Language | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
| "OPTIONAL" in this document are to be interpreted as described in BCP | ||||
| 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| 2. Terminology | ||||
| Local Domain: the local AS or the local confederation of ASes | ||||
| [RFC5065]. | ||||
| eBGP: BGP peering to a router not within the Local Domain. | ||||
| iBGP: BGP peering not eBGP as defined above (i.e. both classic iBGP | ||||
| and any form of eBGP peering with a router within the same | ||||
| confederation). | ||||
| 3. Introduction | 1. Introduction | |||
| [RFC8955] defines a BGP NLRI [RFC4760] that can be used to distribute | [RFC8955] defines BGP Network Layer Reachability Information (NLRI) | |||
| traffic Flow Specifications amongst BGP speakers in support of | [RFC4760] that can be used to distribute traffic Flow Specifications | |||
| traffic filtering. The primary intention of [RFC8955] is to enable | amongst BGP speakers in support of traffic filtering. The primary | |||
| downstream autonomous systems to signal traffic filtering policies to | intention of [RFC8955] is to enable downstream autonomous systems to | |||
| upstream autonomous systems. In this way, traffic is filtered closer | signal traffic filtering policies to upstream autonomous systems. In | |||
| to the source and the upstream autonomous system(s) avoid carrying | this way, traffic is filtered closer to the source and the upstream | |||
| the traffic to the downstream autonomous system only to be discarded. | autonomous systems avoid carrying the traffic to the downstream | |||
| [RFC8955] also enables more granular traffic filtering based upon | autonomous systems only to be discarded. [RFC8955] also enables more | |||
| upper layer protocol information (e.g., protocol or port numbers) as | granular traffic filtering based upon upper-layer protocol | |||
| opposed to coarse IP destination prefix-based filtering. Flow | information (e.g., protocol or port numbers) as opposed to coarse IP | |||
| Specification NLRIs received from a BGP peer are subject to validity | destination prefix-based filtering. Flow Specification NLRIs | |||
| checks before being considered feasible and subsequently installed | received from a BGP peer is subject to validity checks before being | |||
| within the respective Adj-RIB-In. | considered feasible and subsequently installed within the respective | |||
| Adj-RIB-In. | ||||
| The validation procedure defined within [RFC8955] requires that the | The validation procedure defined within [RFC8955] requires that the | |||
| originator of the Flow Specification NLRI matches the originator of | originator of the Flow Specification NLRI match the originator of the | |||
| the best-match unicast route for the destination prefix embedded in | best-match unicast route for the destination prefix embedded in the | |||
| the Flow Specification. The aim is to make sure that only speakers | Flow Specification. The aim is to make sure that only speakers on | |||
| on the forwarding path can originate the Flow Specification. Let's | the forwarding path can originate the Flow Specification. Let's | |||
| consider the particular case where the Flow Specification is | consider the particular case where the Flow Specification is | |||
| originated in any location within the same Local Domain as the | originated in any location within the same Local Domain as the | |||
| speaker performing the validation (for example by a centralized BGP | speaker performing the validation (for example, by a centralized BGP | |||
| route controller), and the best-match unicast route is originated in | route controller), and the best-match unicast route is originated in | |||
| another Local Domain. In order for the validation to succeed for a | another Local Domain. In order for the validation to succeed for a | |||
| Flow Specification received from an iBGP peer, it would be necessary | Flow Specification received from an iBGP peer, it would be necessary | |||
| to disseminate such Flow Specification NLRI directly from the | to disseminate such Flow Specification NLRI directly from the | |||
| specific border router (within the Local Domain) that is advertising | specific border router (within the Local Domain) that is advertising | |||
| the corresponding best-match unicast route to the Local Domain. | the corresponding best-match unicast route to the Local Domain. | |||
| Those border routers would be acting as de facto route controllers. | Those border routers would be acting as de facto route controllers. | |||
| This approach would be, however, operationally cumbersome in a Local | This approach would be, however, operationally cumbersome in a Local | |||
| Domain with numerous border routers having complex BGP policies. | Domain with numerous border routers having complex BGP policies. | |||
| Figure 1 illustrates this principle. R1 (the upstream router) and RR | Figure 1 illustrates this principle. R1 (the upstream router) and RR | |||
| (a route reflector) need to validate the Flow Specification whose | (a route reflector) need to validate the Flow Specification whose | |||
| embedded destination prefix has a best-match unicast route (dest- | embedded destination prefix has a best-match unicast route (dest- | |||
| route) originated by ASBR2. ASBR2 could originate the Flow | route) originated by ASBR2. ASBR2 could originate the Flow | |||
| Specification, and it would be validated when received by RR and R1 | Specification, and it would be validated when received by RR and R1 | |||
| (from their point of view, the originator of both the FLow | (from their point of view, the originator of both the Flow | |||
| Specification and the best-match unicast route will be ASBR1). | Specification and the best-match unicast route will be ASBR1). | |||
| Sometimes the Flow Specification needs to be originated within AS1. | Sometimes the Flow Specification needs to be originated within AS1. | |||
| ASBR1 could originate it, and the Flow Specification would still be | ASBR1 could originate it, and the Flow Specification would still be | |||
| validated. In both cases, the Flow Specification is originated by a | validated. In both cases, the Flow Specification is originated by a | |||
| router in the same forwarding path as the dest-route. For the case | router in the same forwarding path as the dest-route. For the case | |||
| where AS1 has thousands of ASBRs, it becomes impractical to originate | where AS1 has thousands of ASBRs, it becomes impractical to originate | |||
| different Flow Specification rules on each ASBR in AS1 based on which | different Flow Specification rules on each ASBR in AS1 based on which | |||
| ASBR each dest-route is learned from. To make the situation more | ASBR each dest-route is learned from. To make the situation more | |||
| tenable, the objective is to advertise all the Flow Specifications | tenable, the objective is to advertise all the Flow Specifications | |||
| from the same route-controller. | from the same route controller. | |||
| R1(AS1) --- RR(AS1) --- ASBR1(AS1) --- ASBR2(AS2) | R1(AS1) --- RR(AS1) --- ASBR1(AS1) --- ASBR2(AS2) | |||
| | | | | |||
| route-controller(AS1) | route controller(AS1) | |||
| Figure 1 | Figure 1 | |||
| This document describes a modification to the [RFC8955] validation | This document describes a modification to the validation procedure | |||
| procedure, allowing Flow Specification NLRIs to be originated from a | described in [RFC8955], by allowing Flow Specification NLRIs to be | |||
| centralized BGP route controller located within the Local Domain and | originated from a centralized BGP route controller located within the | |||
| not necessarily in the data forwarding path. While the proposed | Local Domain and not necessarily in the data-forwarding path. While | |||
| modification cannot be used for inter-domain coordination of traffic | the proposed modification cannot be used for inter-domain | |||
| filtering, it greatly simplifies distribution of intra-domain traffic | coordination of traffic filtering, it greatly simplifies distribution | |||
| filtering policies within a Local Domain which has numerous border | of intra-domain traffic filtering policies within a Local Domain that | |||
| routers having complex BGP policies. By relaxing the validation | has numerous border routers having complex BGP policies. By relaxing | |||
| procedure for iBGP, the proposed modification allows Flow | the validation procedure for iBGP, the proposed modification allows | |||
| Specifications to be distributed in a standard and scalable manner | Flow Specifications to be distributed in a standard and scalable | |||
| throughout the Local Domain. | manner throughout the Local Domain. | |||
| Throughout this document, some references are made to | Throughout this document, some references are made to | |||
| AS_CONFED_SEQUENCE segments; see Sections 4.1 and 5. If | AS_CONFED_SEQUENCE segments; see Sections 4.1 and 5. If | |||
| AS_CONFED_SET segments are also present in the AS_PATH, the same | AS_CONFED_SET segments are also present in the AS_PATH, the same | |||
| considerations apply to them. Note, however, that the use of | considerations apply to them. Note, however, that the use of | |||
| AS_CONFED_SET segments is not recommended [RFC6472]. Refer to | AS_CONFED_SET segments is not recommended [RFC6472]. Refer to | |||
| [I-D.ietf-idr-deprecate-as-set-confed-set] as well. | [CONFED-SET] as well. | |||
| 4. Motivation | 2. Definitions of Terms Used in This Memo | |||
| Local Domain: the local AS or the local confederation of ASes | ||||
| [RFC5065]. | ||||
| eBGP: BGP peering to a router not within the Local Domain. | ||||
| iBGP: Both classic iBGP and any form of eBGP peering with a router | ||||
| within the same confederation (i.e., iBGP peering is a peering | ||||
| that is not eBGP as defined above). | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | ||||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | ||||
| "OPTIONAL" in this document are to be interpreted as described in | ||||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | ||||
| capitals, as shown here. | ||||
| 3. Motivation | ||||
| Step (b) of the validation procedure in Section 6 of [RFC8955] is | Step (b) of the validation procedure in Section 6 of [RFC8955] is | |||
| defined with the underlying assumption that the Flow Specification | defined with the underlying assumption that the Flow Specification | |||
| NLRI traverses the same path, in the inter-domain and intra-domain | NLRI traverses the same path, in the inter-domain and intra-domain | |||
| route distribution graph, as that of the longest-match unicast route | route distribution graph, as that of the longest-match unicast route | |||
| for the destination prefix embedded in the Flow Specification. | for the destination prefix embedded in the Flow Specification. | |||
| In the case of inter-domain traffic filtering, the Flow Specification | In the case of inter-domain traffic filtering, the Flow Specification | |||
| originator at the egress border routers of an AS (e.g. RTR-D and | originator at the egress border routers of an AS (e.g., RTR-D and | |||
| RTR-E of AS1 in Figure 2) matches the eBGP neighbor that advertised | RTR-E of AS1 in Figure 2) matches the eBGP neighbor that advertised | |||
| the longest match destination prefix (see RTR-F and RTR-G | the longest match destination prefix (see RTR-F and RTR-G, | |||
| respectively in Figure 2). | respectively, in Figure 2). | |||
| Similarly, at the upstream routers of an AS (see RTR-A and RTR-B of | Similarly, at the upstream routers of an AS (see RTR-A and RTR-B of | |||
| AS1 in Figure 2), the Flow Specification originator matches the | AS1 in Figure 2), the Flow Specification originator matches the | |||
| egress iBGP border routers that had advertised the unicast route for | egress iBGP border routers that had advertised the unicast route for | |||
| the best-match destination prefix (see RTR-D and RTR-E respectively | the best-match destination prefix (see RTR-D and RTR-E, respectively, | |||
| in Figure 2). This is true even when upstream routers select paths | in Figure 2). This is true even when upstream routers select paths | |||
| from different egress border routers as best route based upon IGP | from different egress border routers as the best route based upon IGP | |||
| distance. For example, in Figure 2: | distance. For example, in Figure 2: | |||
| RTR-A chooses RTR-D as the best route | RTR-A chooses RTR-D as the best route | |||
| RTR-B chooses RTR-E as the best route | RTR-B chooses RTR-E as the best route | |||
| / - - - - - - - - - - - - - - | / - - - - - - - - - - - - - - | |||
| | AS1 | | | AS1 | | |||
| +-------+ +-------+ | +-------+ +-------+ | |||
| | | | | | | | | | | | | | | |||
| | RTR-A | | RTR-B | | | RTR-A | | RTR-B | | |||
| | | | | | | | | | | | | | | |||
| +-------+ +-------+ | +-------+ +-------+ | |||
| | \ / | | | \ / | | |||
| iBGP \ / iBGP | iBGP \ / iBGP | |||
| | \ / | | | \ / | | |||
| skipping to change at page 6, line 40 ¶ | skipping to change at line 241 ¶ | |||
| - - -|- - - - - - - - -|- - -/ | - - -|- - - - - - - - -|- - -/ | |||
| | | | | | | | | | | |||
| +-------+ +-------+ | +-------+ +-------+ | |||
| | | | | | | | | | | | | | | |||
| | RTR-F | | RTR-G | | | RTR-F | | RTR-G | | |||
| | | | | | | | | | | | | | | |||
| +-------+ +-------+ | +-------+ +-------+ | |||
| | AS2 | | | AS2 | | |||
| / - - - - - - - - - - - - - - | / - - - - - - - - - - - - - - | |||
| Figure 2 | Figure 2 | |||
| It is highly desirable that mechanisms exist to protect each AS | It is highly desirable that mechanisms exist to protect each AS | |||
| independently from network security attacks using the BGP Flow | independently from network security attacks using the BGP Flow | |||
| Specification NLRI for intra-AS purposes only. Network operators | Specification NLRI for intra-AS purposes only. Network operators | |||
| often deploy a dedicated Security Operations Center (SOC) within | often deploy a dedicated Security Operations Center (SOC) within | |||
| their AS to monitor and detect such security attacks. To mitigate | their AS to monitor and detect such security attacks. To mitigate | |||
| attacks within an AS, operators require the ability to originate | attacks within an AS, operators require the ability to originate | |||
| intra-AS Flow Specification NLRIs from a central BGP route controller | intra-AS Flow Specification NLRIs from a central BGP route controller | |||
| that is not within the data forwarding plane. In this way, operators | that is not within the data forwarding plane. In this way, operators | |||
| can direct border routers within their AS with specific attack | can direct border routers within their AS with specific attack- | |||
| mitigation actions (drop the traffic, forward to a pipe-cleaning | mitigation actions (drop the traffic, forward to a pipe-cleaning | |||
| location, etc.). | location, etc.). | |||
| In addition, an operator may extend the requirements above for a | In addition, an operator may extend the requirements above for a | |||
| group of ASes via policy. This is described below in Section (b.2.3) | group of ASes via policy. This is described in Section 4.1 (b.2.3) | |||
| of the validation procedure. | of the validation procedure. | |||
| A central BGP route controller that originates a Flow Specification | A central BGP route controller that originates Flow Specification | |||
| NLRI should be able to avoid the complexity of having to determine | NLRI should be able to avoid the complexity of having to determine | |||
| the egress border router whose path was chosen as the best for each | the egress border router whose path was chosen as the best for each | |||
| of its neighbors. When a central BGP route controller originates a | of its neighbors. When a central BGP route controller originates | |||
| Flow Specification NLRI, the rest of the speakers within the AS will | Flow Specification NLRI, the rest of the speakers within the AS will | |||
| see the BGP route controller as the originator of the Flow | see the BGP route controller as the originator of the Flow | |||
| Specification in terms of the validation procedure rules. Thus, it | Specification in terms of the validation procedure rules. Thus, it | |||
| is necessary to modify step (b) of the [RFC8955] validation procedure | is necessary to modify step (b) of the validation procedure described | |||
| such that an iBGP peer that is not within the data forwarding plane | in [RFC8955] such that an iBGP peer that is not within the data | |||
| may originate Flow Specification NLRIs. | forwarding plane may originate Flow Specification NLRIs. | |||
| 5. Revised Validation Procedure | 4. Revised Validation Procedure | |||
| 5.1. Revision of Route Feasibility | 4.1. Revision of Route Feasibility | |||
| Step (b) of the validation procedure specified in Section 6 of | Step (b) of the validation procedure specified in Section 6 of | |||
| [RFC8955] is redefined as follows: | [RFC8955] is redefined as follows: | |||
| b) One of the following conditions MUST hold true: | | b) One of the following conditions MUST hold true: | |||
| | | ||||
| 1. The originator of the Flow Specification matches the | | 1. The originator of the Flow Specification matches the | |||
| originator of the best-match unicast route for the destination | | originator of the best-match unicast route for the | |||
| prefix embedded in the Flow Specification (this is the unicast | | destination prefix embedded in the Flow Specification (this | |||
| route with the longest possible prefix length covering the | | is the unicast route with the longest possible prefix | |||
| destination prefix embedded in the Flow Specification). | | length covering the destination prefix embedded in the Flow | |||
| | Specification). | ||||
| 2. The AS_PATH attribute of the Flow Specification is empty or | | | |||
| contains only an AS_CONFED_SEQUENCE segment [RFC5065]. | | 2. The AS_PATH attribute of the Flow Specification is empty or | |||
| | contains only an AS_CONFED_SEQUENCE segment [RFC5065]. | ||||
| 1. This condition SHOULD be enabled by default. | | | |||
| | 1. This condition SHOULD be enabled by default. | ||||
| 2. This condition MAY be disabled by explicit configuration | | | |||
| on a BGP speaker. | | 2. This condition MAY be disabled by explicit | |||
| | configuration on a BGP speaker. | ||||
| 3. As an extension to this rule, a given non-empty AS_PATH | | | |||
| (besides AS_CONFED_SEQUENCE segments) MAY be permitted by | | 3. As an extension to this rule, a given non-empty AS_PATH | |||
| policy. | | (besides AS_CONFED_SEQUENCE segments) MAY be permitted | |||
| | by policy. | ||||
| Explanation: | Explanation: | |||
| Receiving either an empty AS_PATH or one with only an | Receiving either an empty AS_PATH or one with only an | |||
| AS_CONFED_SEQUENCE segment indicates that the Flow Specification | AS_CONFED_SEQUENCE segment indicates that the Flow Specification | |||
| was originated inside the Local Domain. | was originated inside the Local Domain. | |||
| With the above modification to the [RFC8955] validation procedure, | With the above modification to the [RFC8955] validation procedure, | |||
| a BGP peer within the Local Domain that is not within the data | a BGP peer within the Local Domain that is not within the data- | |||
| forwarding path can originate a Flow Specification. | forwarding path can originate a Flow Specification. | |||
| Disabling the new condition above (b.2.2) could be a good practice | Disabling the new condition above (see step b.2.2 in Section 4.1) | |||
| if the operator knew with certainty that a Flow Specification | could be a good practice if the operator knew with certainty that | |||
| would not be originated inside the Local Domain. An additional | a Flow Specification would not be originated inside the Local | |||
| case would be if it was known for a fact that only the right | Domain. An additional case would be if it was known for a fact | |||
| egress border routers (i.e. those that were also egress border | that only the right egress border routers (i.e., those that were | |||
| routers for the best routes) were originating a Flow Specification | also egress border routers for the best routes) were originating | |||
| NLRI. | Flow Specification NLRI. | |||
| Also, policy may be useful to permit a specific set of non-empty | Also, policy may be useful to permit a specific set of non-empty | |||
| AS_PATHs (b.2.3). For example, it could validate a Flow | AS_PATHs (see step b.2.3 in Section 4.1). For example, it could | |||
| Specification whose AS_PATH contained only an AS_SEQUENCE segment | validate a Flow Specification whose AS_PATH contained only an | |||
| with ASes that were all known to belong to the same administrative | AS_SEQUENCE segment with ASes that were all known to belong to the | |||
| domain. | same administrative domain. | |||
| 5.2. Revision of AS_PATH Validation | 4.2. Revision of AS_PATH Validation | |||
| Section 6 of [RFC8955] states: | Section 6 of [RFC8955] states: | |||
| BGP implementations MUST also enforce that the AS_PATH attribute | | BGP implementations MUST also enforce that the AS_PATH | |||
| of a route received via the External Border Gateway Protocol | | attribute of a route received via the External Border Gateway | |||
| (eBGP) contains the neighboring AS in the left-most position of | | Protocol (eBGP) contains the neighboring AS in the left-most | |||
| the AS_PATH attribute. While this rule is optional in the BGP | | position of the AS_PATH attribute. While this rule is optional | |||
| specification, it becomes necessary to enforce it here for | | in the BGP specification, it becomes necessary to enforce it | |||
| security reasons. | | here for security reasons. | |||
| This rule prevents the exchange of BGP Flow Specification NLRIs at | This rule prevents the exchange of BGP Flow Specification NLRIs at | |||
| Internet exchanges with BGP route servers, which by design don't | Internet exchanges with BGP route servers, which by design don't | |||
| insert their own AS number into the AS_PATH (Section 2.2.2.1 of | insert their own AS number into the AS_PATH (Section 2.2.2.1 of | |||
| [RFC7947]). Therefore, this document also redefines the [RFC8955] | [RFC7947]). Therefore, this document also redefines the [RFC8955] | |||
| AS_PATH validation procedure referenced above as follows: | AS_PATH validation procedure referenced above as follows: | |||
| BGP Flow Specification implementations MUST enforce that the AS in | | BGP Flow Specification implementations MUST enforce that the AS | |||
| the left-most position of the AS_PATH attribute of a Flow | | in the left-most position of the AS_PATH attribute of a Flow | |||
| Specification route received via the External Border Gateway | | Specification route received via the External Border Gateway | |||
| Protocol (eBGP) matches the AS in the left-most position of the | | Protocol (eBGP) matches the AS in the left-most position of the | |||
| AS_PATH attribute of the best-match unicast route for the | | AS_PATH attribute of the best-match unicast route for the | |||
| destination prefix embedded in the Flow Specification NLRI. | | destination prefix embedded in the Flow Specification NLRI. | |||
| Explanation: | Explanation: | |||
| For clarity, the AS in the left-most position of the AS_PATH means | For clarity, the AS in the left-most position of the AS_PATH means | |||
| the AS that was last added to an AS_SEQUENCE. | the AS that was last added to an AS_SEQUENCE. | |||
| This proposed modification enables the exchange of BGP Flow | This proposed modification enables the exchange of BGP Flow | |||
| Specification NLRIs at Internet exchanges with BGP route servers | Specification NLRIs at Internet exchanges with BGP route servers | |||
| while at the same time, for security reasons, prevents an eBGP | while at the same time, for security reasons, prevents an eBGP | |||
| peer from advertising an inter-domain Flow Specification for a | peer from advertising an inter-domain Flow Specification for a | |||
| destination prefix that it does not provide reachability | destination prefix that it does not provide reachability | |||
| information for. | information for. | |||
| Comparing only the left-most AS in the AS-PATH for eBGP learned | Comparing only the left-most AS in the AS-PATH for eBGP-learned | |||
| Flow Specification NLRIs is roughly equivalent to checking the | Flow Specification NLRIs is roughly equivalent to checking the | |||
| neighboring AS. If the peer is a route server, security is | neighboring AS. If the peer is a route server, security is | |||
| necessarily weakened for the Flow Specification NLRI, as it is for | necessarily weakened for the Flow Specification NLRI, as it is for | |||
| any unicast route advertised from a route server. An example is | any unicast route advertised from a route server. An example is | |||
| discussed in the Security Considerations Section. | discussed in the Security Considerations section. | |||
| Redefinition of this AS_PATH validation rule for a Flow | Redefinition of this AS_PATH validation rule for a Flow | |||
| Specification does not mean that the original rule in [RFC8955] | Specification does not mean that the original rule in [RFC8955] | |||
| cannot be enforced as well. Its enforcement remains optional per | cannot be enforced as well. Its enforcement remains optional per | |||
| Section 6.3 of [RFC4271]. That is, a BGP speaker can enforce the | Section 6.3 of [RFC4271]. That is, a BGP speaker can enforce the | |||
| first AS in the AS_PATH to be the same as the neighbor AS for a | first AS in the AS_PATH to be the same as the neighbor AS for a | |||
| route belonging to any Address Family (including Flow | route belonging to any Address Family (including Flow | |||
| Specification Address Family). If the BGP speaker peer is not a | Specification Address Family). If the BGP speaker peer is not a | |||
| route server, when enforcing this optional rule, the security | route server, when enforcing this optional rule, the security | |||
| characteristics are exactly equivalent to those specified in | characteristics are exactly equivalent to those specified in | |||
| skipping to change at page 9, line 46 ¶ | skipping to change at line 389 ¶ | |||
| after all validations, the neighboring AS will be the same as the | after all validations, the neighboring AS will be the same as the | |||
| left-most AS in the AS-PATH for the unicast route, and the left- | left-most AS in the AS-PATH for the unicast route, and the left- | |||
| most AS in the AS_PATH for the unicast route will be the same as | most AS in the AS_PATH for the unicast route will be the same as | |||
| the left-most AS in the AS_PATH for the Flow Specification NLRI. | the left-most AS in the AS_PATH for the Flow Specification NLRI. | |||
| Therefore, the neighboring AS will be the same as the left-most AS | Therefore, the neighboring AS will be the same as the left-most AS | |||
| in the AS_PATH for the Flow Specification NLRI (as the original | in the AS_PATH for the Flow Specification NLRI (as the original | |||
| AS_PATH validation rule in [RFC8955] states). | AS_PATH validation rule in [RFC8955] states). | |||
| Note, however, that not checking the full AS_PATH allows any rogue | Note, however, that not checking the full AS_PATH allows any rogue | |||
| or misconfigured AS the ability to originate undesired Flow | or misconfigured AS the ability to originate undesired Flow | |||
| Specifications. This is a BGP security threat, already present on | Specifications. This is a BGP security threat, already present in | |||
| [RFC8955], but out of the scope of this document. | [RFC8955], but out of the scope of this document. | |||
| Using the new rule to validate a Flow Specification route received | Using the new rule to validate a Flow Specification route received | |||
| from a peer belonging to the same Local Domain is out of the scope | from a peer belonging to the same Local Domain is out of the scope | |||
| of this document. Note that although it's possible, its utility | of this document. Note that although it's possible, its utility | |||
| is dubious. Although it is conceivable that a router in the same | is dubious. Although it is conceivable that a router in the same | |||
| Local Domain could send a rogue update, only eBGP risk is | Local Domain could send a rogue update, only eBGP risk is | |||
| considered within this document (in the same spirit as the | considered within this document (in the same spirit as the | |||
| aforementioned AS_PATH validation in [RFC4271]). | aforementioned AS_PATH validation in [RFC4271]). | |||
| 6. Topology Considerations | 5. Topology Considerations | |||
| [RFC8955] indicates that the originator may refer to the originator | [RFC8955] indicates that the originator may refer to the originator | |||
| path attribute (ORIGINATOR_ID) or (if the attribute is not present) | path attribute (ORIGINATOR_ID) or (if the attribute is not present) | |||
| the transport address of the peer from which the BGP speaker received | the transport address of the peer from which the BGP speaker received | |||
| the update. If the latter applies, a network should be designed so | the update. If the latter applies, a network should be designed so | |||
| it has a congruent topology amongst unicast routes and Flow | it has a congruent topology amongst unicast routes and Flow | |||
| Specification routes. By congruent topology, it is understood that | Specification routes. By congruent topology, it is understood that | |||
| the two routes (i.e. the Flow Specification route and its best-match | the two routes (i.e., the Flow Specification route and its best-match | |||
| unicast route) are learned from the same peer across the AS. That | unicast route) are learned from the same peer across the AS. That | |||
| would likely not be true, for instance, if some peers only negotiated | would likely not be true, for instance, if some peers only negotiated | |||
| one Address Family or if each Address Family peering had a different | one Address Family or if each Address Family peering had a different | |||
| set of policies. Failing to have a congruent topology would result | set of policies. Failing to have a congruent topology would result | |||
| in step (b.1) of the validation procedure to fail. | in step (b.1) of the validation procedure to fail. | |||
| With the additional second condition (b.2) in the validation | With the additional second condition (b.2) in the validation | |||
| procedure, non-congruent topologies are supported within the Local | procedure, non-congruent topologies are supported within the Local | |||
| Domain if the Flow Specification is originated within the Local | Domain if the Flow Specification is originated within the Local | |||
| Domain. | Domain. | |||
| Explanation: | Explanation: | |||
| Consider the following scenarios of a non-congruent topology | Consider the following scenarios of a non-congruent topology | |||
| without the second condition (b.2) being added to the validation | without the second condition (b.2) being added to the validation | |||
| procedure: | procedure: | |||
| 1. Consider a topology with two BGP speakers with two iBGP | 1. Consider a topology with two BGP speakers with two iBGP | |||
| peering sessions between them, one for unicast and one for | peering sessions between them, one for unicast and one for | |||
| Flow Specification. This is a non-congruent topology. Let's | Flow Specification. This is a non-congruent topology. Let's | |||
| assume that the ORIGINATOR_ID attribute was not received (e.g. | assume that the ORIGINATOR_ID attribute was not received | |||
| a route reflector receiving routes from its clients). In this | (e.g., a route reflector receiving routes from its clients). | |||
| case, the Flow Specification validation procedure will fail | In this case, the Flow Specification validation procedure will | |||
| because of the first condition (b.1). | fail because of the first condition (b.1). | |||
| 2. Consider a confederation of ASes with local AS X and local AS | 2. Consider a confederation of ASes with local AS X and local AS | |||
| Y (both belonging to the same Local Domain), and a given BGP | Y (both belonging to the same Local Domain), and a given BGP | |||
| speaker X1 inside local AS X. The ORIGINATOR_ID attribute is | speaker X1 inside local AS X. The ORIGINATOR_ID attribute is | |||
| not advertised when propagating routes across local ASes. | not advertised when propagating routes across local ASes. | |||
| Let's assume the Flow Specification route is received from | Let's assume the Flow Specification route is received from | |||
| peer Y1 and the best-match unicast route is received from peer | peer Y1 and the best-match unicast route is received from peer | |||
| Y2. Both peers belong to local AS Y. The Flow Specification | Y2. Both peers belong to local AS Y. The Flow Specification | |||
| validation procedure will also fail because of the first | validation procedure will also fail because of the first | |||
| condition (b.1). | condition (b.1). | |||
| Consider now that the second conditon (b.2) is added to the | Consider now that the second condition (b.2) is added to the | |||
| validation procedure. In the scenarios above, if Flow | validation procedure. In the scenarios above, if Flow | |||
| Specifications are originated in the same Local Domain, the | Specifications are originated in the same Local Domain, the | |||
| AS_PATH will be empty or contain only an AS_CONFED_SEQUENCE | AS_PATH will be empty or contain only an AS_CONFED_SEQUENCE | |||
| segment. Condition (b.2) will evaluate to true. Therefore, using | segment. Condition (b.2) will evaluate to true. Therefore, using | |||
| the second condition (b.2), as defined by this document, | the second condition (b.2), as defined by this document, | |||
| guarantees that the overall validation procedure will pass. Thus, | guarantees that the overall validation procedure will pass. Thus, | |||
| non-congruent topologies are supported if the Flow Specification | non-congruent topologies are supported if the Flow Specification | |||
| is originated in the same Local Domain. | is originated in the same Local Domain. | |||
| Flow Specifications originated in a different Local Domain sill | Flow Specifications originated in a different Local Domain sill | |||
| need a congruent topology. The reason is that in a non-congruent | need a congruent topology. The reason is that in a non-congruent | |||
| topology the second condition (b.2) evaluates to false and only | topology, the second condition (b.2) evaluates to false and only | |||
| the first condition (b.1) is evaluated. | the first condition (b.1) is evaluated. | |||
| 7. IANA Considerations | 6. IANA Considerations | |||
| This document includes no request to IANA. | This document has no IANA actions. | |||
| 8. Security Considerations | 7. Security Considerations | |||
| This document updates the route feasibility validation procedures for | This document updates the route feasibility validation procedures for | |||
| Flow Specifications learned from iBGP peers and through route | Flow Specifications learned from iBGP peers and through route | |||
| servers. This change is in line with the procedures described in | servers. This change is in line with the procedures described in | |||
| [RFC8955] and, thus, security characteristics remain essentially | [RFC8955] and, thus, security characteristics remain essentially | |||
| equivalent to the existing security properties of BGP unicast | equivalent to the existing security properties of BGP unicast | |||
| routing, except as detailed below. | routing, except as detailed below. | |||
| The security considerations discussed in [RFC8955] apply to this | The security considerations discussed in [RFC8955] apply to this | |||
| specification as well. | specification as well. | |||
| This document makes the original AS_PATH validation rule (Section 6.3 | This document makes the original AS_PATH validation rule (Section 6.3 | |||
| of [RFC4271]) again OPTIONAL (Section 5.2) for Flow Specification | of [RFC4271]) again OPTIONAL (Section 4.2) for Flow Specification | |||
| Address Family (the rule is no longer mandatory as had been specified | Address Family (the rule is no longer mandatory as had been specified | |||
| by [RFC8955]). If that original rule is not enforced for Flow | by [RFC8955]). If that original rule is not enforced for Flow | |||
| Specification it may introduce some new security risks. A speaker in | Specification, it may introduce some new security risks. A speaker | |||
| AS X peering with a route server could advertise a rogue Flow | in AS X peering with a route server could advertise a rogue Flow | |||
| Specification route whose first AS in AS_PATH was Y. Assume Y is the | Specification route whose first AS in AS_PATH was Y. Assume Y is the | |||
| first AS in the AS_PATH of the best-match unicast route. When the | first AS in the AS_PATH of the best-match unicast route. When the | |||
| route server advertises the Flow Specification to a speaker in AS Z, | route server advertises the Flow Specification to a speaker in AS Z, | |||
| it will be validated by that speaker. This risk is impossible to | it will be validated by that speaker. This risk is impossible to | |||
| prevent if the Flow Specification route is received from a route | prevent if the Flow Specification route is received from a route | |||
| server peer. If configuration (or other means beyond the scope of | server peer. If configuration (or other means beyond the scope of | |||
| this document) indicates that the peer is not a route server, that | this document) indicates that the peer is not a route server, that | |||
| optional rule SHOULD be enforced, for unicast and/or for Flow | optional rule SHOULD be enforced for unicast and/or for Flow | |||
| Specification routes (as discussed in the AS_PATH Validation Section, | Specification routes (as discussed in the Revision of AS_PATH | |||
| just enforcing it in one of those Addres Families is enough). If the | Validation section, just enforcing it in one of those Address | |||
| indication is that the peer is not a route server or there is no | Families is enough). If the indication is that the peer is not a | |||
| conclusive indication, that optional rule SHOULD NOT be enforced. | route server or there is no conclusive indication, that optional rule | |||
| SHOULD NOT be enforced. | ||||
| A route server itself may be in a good position to enforce the | A route server itself may be in a good position to enforce the | |||
| AS_PATH validation rule described in the previous paragraph. If it | AS_PATH validation rule described in the previous paragraph. If it | |||
| is known that a route server is not peering with any other route | is known that a route server is not peering with any other route | |||
| server, it can enforce the AS_PATH validation rule across all its | server, it can enforce the AS_PATH validation rule across all its | |||
| peers. | peers. | |||
| BGP updates learned from iBGP peers are considered trusted, so the | BGP updates learned from iBGP peers are considered trusted, so the | |||
| Traffic Flow Specifications contained in BGP updates are also | Traffic Flow Specifications contained in BGP updates are also | |||
| considered trusted. Therefore, it is not required to validate that | considered trusted. Therefore, it is not required to validate that | |||
| the originator of an intra-domain Traffic Flow Specification matches | the originator of an intra-domain Traffic Flow Specification matches | |||
| the originator of the best-match unicast route for the destination | the originator of the best-match unicast route for the destination | |||
| prefix embedded in that Flow Specification. Note that this | prefix embedded in that Flow Specification. Note that this | |||
| trustworthiness consideration is not absolute and the new possibility | trustworthiness consideration is not absolute and the new possibility | |||
| that an iBGP speaker could send a rogue Flow Specification is | that an iBGP speaker could send a rogue Flow Specification is | |||
| introduced. | introduced. | |||
| The changes in Section 5.1 don't affect the validation procedures for | The changes in Section 4.1 don't affect the validation procedures for | |||
| eBGP-learned routes. | eBGP-learned routes. | |||
| It's worth mentioning that allowing (or making operationally | It's worth mentioning that allowing (or making operationally | |||
| feasible) to originate Flow Specifications within the Local Domain | feasible) Flow Specifications to originate within the Local Domain | |||
| makes the network overall more secure. Flow Specifications can be | makes the network overall more secure. Flow Specifications can be | |||
| originated more readily during attacks and improve the stability and | originated more readily during attacks and improve the stability and | |||
| security of the network. | security of the network. | |||
| 9. Acknowledgements | 8. References | |||
| The authors would like to thank Han Nguyen for his direction on this | ||||
| work as well as Waqas Alam, Keyur Patel, Robert Raszuk, Eric Rosen, | ||||
| Shyam Sethuram, Susan Hares, Alvaro Retana and John Scudder for their | ||||
| review comments. | ||||
| 10. References | ||||
| 10.1. Normative References | 8.1. Normative References | |||
| [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>. | |||
| [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | |||
| Border Gateway Protocol 4 (BGP-4)", RFC 4271, | Border Gateway Protocol 4 (BGP-4)", RFC 4271, | |||
| DOI 10.17487/RFC4271, January 2006, | DOI 10.17487/RFC4271, January 2006, | |||
| <https://www.rfc-editor.org/info/rfc4271>. | <https://www.rfc-editor.org/info/rfc4271>. | |||
| skipping to change at page 13, line 29 ¶ | skipping to change at line 558 ¶ | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8955] Loibl, C., Hares, S., Raszuk, R., McPherson, D., and M. | [RFC8955] Loibl, C., Hares, S., Raszuk, R., McPherson, D., and M. | |||
| Bacher, "Dissemination of Flow Specification Rules", | Bacher, "Dissemination of Flow Specification Rules", | |||
| RFC 8955, DOI 10.17487/RFC8955, December 2020, | RFC 8955, DOI 10.17487/RFC8955, December 2020, | |||
| <https://www.rfc-editor.org/info/rfc8955>. | <https://www.rfc-editor.org/info/rfc8955>. | |||
| 10.2. Informative References | 8.2. Informative References | |||
| [I-D.ietf-idr-deprecate-as-set-confed-set] | [CONFED-SET] | |||
| Kumari, W., Sriram, K., Hannachi, L., and J. Haas, | Kumari, W., Sriram, K., Hannachi, L., and J. Haas, | |||
| "Deprecation of AS_SET and AS_CONFED_SET in BGP", draft- | "Deprecation of AS_SET and AS_CONFED_SET in BGP", Work in | |||
| ietf-idr-deprecate-as-set-confed-set-05 (work in | Progress, Internet-Draft, draft-ietf-idr-deprecate-as-set- | |||
| progress), March 2021. | confed-set-05, 12 March 2021, | |||
| <https://datatracker.ietf.org/doc/html/draft-ietf-idr- | ||||
| deprecate-as-set-confed-set-05>. | ||||
| [RFC6472] Kumari, W. and K. Sriram, "Recommendation for Not Using | [RFC6472] Kumari, W. and K. Sriram, "Recommendation for Not Using | |||
| AS_SET and AS_CONFED_SET in BGP", BCP 172, RFC 6472, | AS_SET and AS_CONFED_SET in BGP", BCP 172, RFC 6472, | |||
| DOI 10.17487/RFC6472, December 2011, | DOI 10.17487/RFC6472, December 2011, | |||
| <https://www.rfc-editor.org/info/rfc6472>. | <https://www.rfc-editor.org/info/rfc6472>. | |||
| Acknowledgements | ||||
| The authors would like to thank Han Nguyen for his direction on this | ||||
| work as well as Waqas Alam, Keyur Patel, Robert Raszuk, Eric Rosen, | ||||
| Shyam Sethuram, Susan Hares, Alvaro Retana, and John Scudder for | ||||
| their review and comments. | ||||
| Authors' Addresses | Authors' Addresses | |||
| James Uttaro | James Uttaro | |||
| AT&T | AT&T | |||
| 200 S. Laurel Ave | 200 S. Laurel Ave | |||
| Middletown, NJ 07748 | Middletown, NJ 07748 | |||
| USA | United States of America | |||
| Email: ju1738@att.com | Email: ju1738@att.com | |||
| Juan Alcaide | Juan Alcaide | |||
| Cisco | Cisco | |||
| Research Triangle Park | ||||
| 7100 Kit Creek Road | 7100 Kit Creek Road | |||
| Research Triangle Park, NC 27709 | Morrisville, NC 27709 | |||
| USA | United States of America | |||
| Email: jalcaide@cisco.com | Email: jalcaide@cisco.com | |||
| Clarence Filsfils | Clarence Filsfils | |||
| Cisco | Cisco | |||
| Email: cf@cisco.com | Email: cf@cisco.com | |||
| David Smith | David Smith | |||
| Cisco | Cisco | |||
| 111 Wood Ave South | 111 Wood Ave South | |||
| Iselin, NJ 08830 | Iselin, NJ 08830 | |||
| USA | United States of America | |||
| Email: djsmith@cisco.com | Email: djsmith@cisco.com | |||
| Pradosh Mohapatra | Pradosh Mohapatra | |||
| Sproute Networks | Sproute Networks | |||
| Email: mpradosh@yahoo.com | Email: mpradosh@yahoo.com | |||
| End of changes. 69 change blocks. | ||||
| 207 lines changed or deleted | 210 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/ | ||||