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/ |