draft-ietf-idr-bgp-flowspec-oid-10.txt | draft-ietf-idr-bgp-flowspec-oid-11.txt | |||
---|---|---|---|---|
Network Working Group J. Uttaro | Network Working Group J. Uttaro | |||
Internet-Draft AT&T | Internet-Draft AT&T | |||
Updates: 5575bis (if approved) J. Alcaide | Updates: 5575bis (if approved) J. Alcaide | |||
Intended status: Standards Track C. Filsfils | Intended status: Standards Track C. Filsfils | |||
Expires: February 9, 2020 D. Smith | Expires: September 9, 2020 D. Smith | |||
Cisco | Cisco | |||
P. Mohapatra | P. Mohapatra | |||
Sproute Networks | Sproute Networks | |||
August 8, 2019 | March 8, 2020 | |||
Revised Validation Procedure for BGP Flow Specifications | Revised Validation Procedure for BGP Flow Specifications | |||
draft-ietf-idr-bgp-flowspec-oid-10 | draft-ietf-idr-bgp-flowspec-oid-11 | |||
Abstract | Abstract | |||
This document describes a modification to the validation procedure | This document describes a modification to the validation procedure | |||
defined in [RFC5575bis] for the dissemination of BGP Flow | defined in [RFC5575bis] for the dissemination of BGP Flow | |||
Specifications. [RFC5575bis] requires that the originator of the | Specifications. [RFC5575bis] requires that the originator of the | |||
Flow Specification matches the originator of the best-match unicast | Flow Specification matches the originator of the best-match unicast | |||
route for the destination prefix embedded in the Flow Specification. | route for the destination prefix embedded in the Flow Specification. | |||
This allows only BGP speakers within the data forwarding path (such | This allows only BGP speakers within the data forwarding path (such | |||
as autonomous system border routers) to originate BGP Flow | as autonomous system border routers) to originate BGP Flow | |||
skipping to change at page 1, line 47 ¶ | skipping to change at page 1, line 47 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on February 9, 2020. | This Internet-Draft will expire on September 9, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2020 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 | |||
skipping to change at page 2, line 32 ¶ | skipping to change at page 2, line 32 ¶ | |||
1. Requirements Language . . . . . . . . . . . . . . . . . . . . 2 | 1. Requirements Language . . . . . . . . . . . . . . . . . . . . 2 | |||
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
3. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 3. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
4. Revised Validation Procedure . . . . . . . . . . . . . . . . 5 | 4. Revised Validation Procedure . . . . . . . . . . . . . . . . 5 | |||
4.1. Revision of Route Feasibility . . . . . . . . . . . . . . 5 | 4.1. Revision of Route Feasibility . . . . . . . . . . . . . . 5 | |||
4.2. Revision of AS_PATH Validation . . . . . . . . . . . . . 6 | 4.2. Revision of AS_PATH Validation . . . . . . . . . . . . . 6 | |||
5. Other RFC5575bis Considerations . . . . . . . . . . . . . . . 7 | 5. Other RFC5575bis Considerations . . . . . . . . . . . . . . . 7 | |||
6. Topology Considerations . . . . . . . . . . . . . . . . . . . 8 | 6. Topology Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 10 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 | |||
10. Normative References . . . . . . . . . . . . . . . . . . . . 10 | 10. Normative References . . . . . . . . . . . . . . . . . . . . 9 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 11 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
1. Requirements Language | 1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
2. Introduction | 2. Introduction | |||
[RFC5575bis] defined a new BGP [RFC4271] capability that can be used | [RFC5575bis] defined a new BGP [RFC4271] capability that can be used | |||
skipping to change at page 3, line 33 ¶ | skipping to change at page 3, line 33 ¶ | |||
modification cannot be used for inter-domain coordination of traffic | modification cannot be used for inter-domain coordination of traffic | |||
filtering, it greatly simplifies distribution of intra-domain traffic | filtering, it greatly simplifies distribution of intra-domain traffic | |||
filtering policies within an autonomous system which has a large | filtering policies within an autonomous system which has a large | |||
number of border routers having complex BGP policies. By relaxing | number of border routers having complex BGP policies. By relaxing | |||
the validation procedure for iBGP, the proposed modification allows | the validation procedure for iBGP, the proposed modification allows | |||
Flow Specifications to be distributed in a standard and scalable | Flow Specifications to be distributed in a standard and scalable | |||
manner throughout an autonomous system. | manner throughout an autonomous system. | |||
3. Motivation | 3. Motivation | |||
Step (a) of the validation procedure in [RFC5575bis], section 6 is | Step (b) of the validation procedure in [RFC5575bis], section 6 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 ASN1 in figure 1) matches the eBGP neighbor that advertised | RTR-E of ASN1 in figure 1) 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 1). Similarly, at the ingress border routers | respectively in figure 1). Similarly, at the ingress border routers | |||
skipping to change at page 5, line 16 ¶ | skipping to change at page 5, line 16 ¶ | |||
plane. In this way, operators can direct border routers within their | plane. In this way, operators can direct border routers within their | |||
ASN with specific attack mitigation actions (drop the traffic, | ASN with specific attack mitigation actions (drop the traffic, | |||
forward to a clean-pipe center, etc.). | forward to a clean-pipe center, etc.). | |||
To originate a Flow Specification NLRI, a central BGP route | To originate a Flow Specification NLRI, a central BGP route | |||
controller must set itself as the originator in the Flow | controller must set itself as the originator in the Flow | |||
Specification NLRI. This is necessary given the route controller is | Specification NLRI. This is necessary given the route controller is | |||
originating the Flow Specification rather than reflecting it, and to | originating the Flow Specification rather than reflecting it, and to | |||
avoid the complexity of having to determine the egress border router | avoid the complexity of having to determine the egress border router | |||
whose path was chosen as the best in each of the ingress border | whose path was chosen as the best in each of the ingress border | |||
routers. Thus, it is necessary to modify step (a) of the | routers. Thus, it is necessary to modify step (b) of the | |||
[RFC5575bis] validation procedure such that an iBGP peer that is not | [RFC5575bis] validation procedure such that an iBGP peer that is not | |||
within the data forwarding plane may originate Flow Specification | within the data forwarding plane may originate Flow Specification | |||
NLRIs. | NLRIs. | |||
4. Revised Validation Procedure | 4. Revised Validation Procedure | |||
4.1. Revision of Route Feasibility | 4.1. Revision of Route Feasibility | |||
Step (a) of the validation procedure specified in [RFC5575bis], | Step (b) of the validation procedure specified in [RFC5575bis], | |||
section 6 is redefined as follows: | section 6 is redefined as follows: | |||
a. One of the following conditions MUST hold true. | a. 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 | originator of the best-match unicast route for the | |||
destination prefix embedded in the Flow Specification. | destination prefix embedded in the Flow Specification (this | |||
is the unicast route with the longest possible prefix length | ||||
covering the destination prefix embedded in the Flow | ||||
Specification). | ||||
2. The AS_PATH attribute of the Flow Specification does not | 2. The AS_PATH attribute of the Flow Specification does not | |||
contain AS_SET and/or AS_SEQUENCE segments. | contain AS_SET and/or AS_SEQUENCE segments. | |||
1. This condition SHOULD be enabled by default. This | 1. This condition SHOULD be enabled by default. This | |||
default behavior should validate an empty AS_PATH. | default behavior should validate an empty AS_PATH. | |||
2. This condition MAY be disabled by configuration on a BGP | 2. This condition MAY be disabled by configuration on a BGP | |||
speaker. | speaker. | |||
skipping to change at page 6, line 4 ¶ | skipping to change at page 6, line 9 ¶ | |||
3. As an exception to this rule, a given AS_PATH with AS_SET | 3. As an exception to this rule, a given AS_PATH with AS_SET | |||
and/or AS_SEQUENCE segments MAY be validated by policy. | and/or AS_SEQUENCE segments MAY be validated by policy. | |||
Explanation: | Explanation: | |||
In this context, an empty AS_PATH means that it does not have | In this context, an empty AS_PATH means that it does not have | |||
AS_SET and/or AS_SEQUENCE segments, and local domain means the | AS_SET and/or AS_SEQUENCE segments, and local domain means the | |||
local AS [RFC4271] or the local confederation of ASes (in the case | local AS [RFC4271] or the local confederation of ASes (in the case | |||
that the local AS belongs to a confederation of ASes [RFC5065]). | that the local AS belongs to a confederation of ASes [RFC5065]). | |||
Thus, receiving a Flow Specification with an empty AS_PATH | Thus, receiving a Flow Specification with an empty AS_PATH | |||
indicates that the Flow Specification was originated inside the | indicates that the Flow Specification was originated inside the | |||
local domain. | local domain. | |||
With the above modification to the [RFC5575bis] validation | With the above modification to the [RFC5575bis] validation | |||
procedure, a BGP peer within the local domain that is not within | procedure, a BGP peer within the local domain that is not within | |||
the data forwarding path can originate a Flow Specification. | the data forwarding path can originate a Flow Specification. | |||
Disabling the new condition above (a.2.2) may be a good practice | Disabling the new condition above (b.2.2) may be a good practice | |||
when the operator knows with certainty that there is not a Flow | when the operator knows with certainty that there is not a Flow | |||
Specification originated inside the local domain. | Specification originated inside the local domain. | |||
Also, policy may be useful to validate a specific set of non-empty | Also, policy may be useful to validate a specific set of non-empty | |||
AS_PATHs (a.2.3). For example, it could validate a Flow | AS_PATHs (b.2.3). For example, it could validate a Flow | |||
Specification whose AS_PATH contains only an AS_SEQUENCE with ASes | Specification whose AS_PATH contains only an AS_SEQUENCE with ASes | |||
that are all known to belong to the same administrative domain. | that are all known to belong to the same administrative domain. | |||
4.2. Revision of AS_PATH Validation | 4.2. Revision of AS_PATH Validation | |||
[RFC5575bis] states: | [RFC5575bis] states: | |||
o BGP implementations MUST also enforce that the AS_PATH attribute | o BGP implementations MUST also enforce that the AS_PATH attribute | |||
of a route received via the External Border Gateway Protocol | of a route received via the External Border Gateway Protocol | |||
(eBGP) contains the neighboring AS in the left-most position of | (eBGP) contains the neighboring AS in the left-most position of | |||
skipping to change at page 7, line 38 ¶ | skipping to change at page 7, line 43 ¶ | |||
from an External Border Gateway Protocol (eBGP) peer belonging to | from an External Border Gateway Protocol (eBGP) peer belonging to | |||
the same local domain (in the case that the local AS belongs to a | the same local domain (in the case that the local AS belongs to a | |||
confederation of ASes) is out of the scope of this document. Note | confederation of ASes) is out of the scope of this document. Note | |||
that although it's possible, its utility is dubious. | that although it's possible, its utility is dubious. | |||
5. Other RFC5575bis Considerations | 5. Other RFC5575bis Considerations | |||
This section clarifies some of the terminology and rules referenced | This section clarifies some of the terminology and rules referenced | |||
in [RFC5575bis]. Namely: | in [RFC5575bis]. Namely: | |||
o [RFC5575bis] references "the best-match unicast route for the | ||||
destination prefix embedded in the Flow Specification". For | ||||
clarity, this route is defined hereby as the best path of the | ||||
unicast network with the longer prefix-length that covers the | ||||
destination prefix embedded in the Flow Specification. | ||||
Explanation: | ||||
We consider only the best-match network and we do not consider | ||||
unicast non-best paths (even if it is received from the same peer | ||||
as the Flow Specification). | ||||
o If a BGP Flow Specification does not embed a destination prefix | ||||
component, then the default behavior SHOULD be not to perform the | ||||
validation procedures. | ||||
Explanation: | ||||
The reason for this is because the best-match unicast route is not | ||||
defined in this case. | ||||
o In the context of this document and [RFC5575bis], AS_PATH | o In the context of this document and [RFC5575bis], AS_PATH | |||
attribute is defined as the reconstructed AS path information (by | attribute is defined as the reconstructed AS path information (by | |||
combining AS_PATH and AS4_PATH attributes, if the BGP speaker is a | combining AS_PATH and AS4_PATH attributes, if the BGP speaker is a | |||
NEW speaker and receives the route from an OLD speaker), according | NEW speaker and receives the route from an OLD speaker), according | |||
to section 4.2.3 of [RFC6793]. | to section 4.2.3 of [RFC6793]. | |||
o Support for two-octet AS only implementations is out of the scope | o Support for two-octet AS only implementations is out of the scope | |||
of this document (i.e. it's assumed that the BGP speaker supports | of this document (i.e. it's assumed that the BGP speaker supports | |||
[RFC6793]). | [RFC6793]). | |||
6. Topology Considerations | 6. Topology Considerations | |||
[RFC5575bis] indicates that the originator may refer to the | [RFC5575bis] indicates that the originator may refer to the | |||
originator path attribute (ORIGINATOR_ID) or (if the attribute is not | originator path attribute (ORIGINATOR_ID) or (if the attribute is not | |||
present) the transport address of the peer from which we received the | present) the transport address of the peer from which we received the | |||
update. If the latter applies, a network should be designed so it | update. If the latter applies, a network should be designed so it | |||
has a congruent topology. | has a congruent topology. | |||
With the additional second condition (a.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 without the second condition | Consider the following scenarios without the second condition | |||
(a.2) being added to the validation procedure: | (b.2) being added to the validation procedure: | |||
1. Consider a topology with two BGP speakers with two peering | 1. Consider a topology with two BGP speakers with two peering | |||
sessions between them, one for unicast and one for Flow | sessions between them, one for unicast and one for Flow | |||
Specification. This is a non-congruent topology. Let's | 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 (e.g. | |||
a route reflector receiving routes from its clients). In this | a route reflector receiving routes from its clients). In this | |||
case, the Flow Specification validation procedure will fail | case, the Flow Specification validation procedure will fail | |||
because of the first condition (a.1). | because of the first condition (b.1). | |||
2. Consider a topology with a BGP speaker within a confederation | 2. Consider a topology with a BGP speaker within a confederation | |||
of ASes, inside local AS X. ORIGINATOR_ID attribute is not | of ASes, inside local AS X. ORIGINATOR_ID attribute is not | |||
advertised within the local domain. Let's assume the Flow | advertised within the local domain. Let's assume the Flow | |||
Specification route is received from peer A and the best-match | Specification route is received from peer A and the best-match | |||
unicast route is received from peer B. Both peers belong in | unicast route is received from peer B. Both peers belong in | |||
local AS Y. Both AS X and AS Y belong to the same local | local AS Y. Both AS X and AS Y belong to the same local | |||
domain. The Flow Specification validation procedure will also | domain. The Flow Specification validation procedure will also | |||
fail because of the first condition (a.1). | fail because of the first condition (b.1). | |||
In the examples above, if Flow Specifications are originated in | In the examples above, if Flow Specifications are originated in | |||
the same local domain, AS_PATH will not contain AS_SET and/or | the same local domain, AS_PATH will not contain AS_SET and/or | |||
AS_SEQUENCE segments. When the second condition (a.2) in the | AS_SEQUENCE segments. When the second condition (b.2) in the | |||
validation procedure is used, the validation procedure will pass. | validation procedure is used, the validation procedure will pass. | |||
Thus, non-congruent topologies are supported if the Flow | Thus, non-congruent topologies are supported if the Flow | |||
Specification is originated in the same local domain. | Specification is originated in the same local domain. | |||
Even when the second condition (a.2) is used in the validation | Even when the second condition (b.2) is used in the validation | |||
procedure, a Flow Specification originated in a different local | procedure, a Flow Specification originated in a different local | |||
domain needs a congruent topology. AS_SEQUENCE is not empty and | domain needs a congruent topology. AS_SEQUENCE is not empty and | |||
the first condition (a.1) in the validation procedure needs to be | the first condition (b.1) in the validation procedure needs to be | |||
evaluated. Because transport addresses for Flow Specification and | evaluated. Because transport addresses for Flow Specification and | |||
unicast routes are different, the validation procedure will fail. | unicast routes are different, the validation procedure will fail. | |||
This is true both across domains and within domains. Consider | This is true both across domains and within domains. Consider | |||
both cases: | both cases: | |||
* Consider the first example. If the Flow Specification route is | * Consider the first example. If the Flow Specification route is | |||
originated in another AS, the validation procedure will fail | originated in another AS, the validation procedure will fail | |||
because the topology is non-congruent within the domain. | because the topology is non-congruent within the domain. | |||
* Consider the second example and modify it so AS X and AS Y | * Consider the second example and modify it so AS X and AS Y | |||
belong to different local domains (no confederation of ASes | belong to different local domains (no confederation of ASes | |||
exists). The validation procedure will fail because the | exists). The validation procedure will fail because the | |||
skipping to change at page 10, line 20 ¶ | skipping to change at page 10, line 6 ¶ | |||
9. Acknowledgements | 9. Acknowledgements | |||
The authors would like to thank Han Nguyen for his direction on this | 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 | work as well as Waqas Alam, Keyur Patel, Robert Raszuk, Eric Rosen | |||
and Shyam Sethuram for their review comments. | and Shyam Sethuram for their review comments. | |||
10. Normative References | 10. Normative References | |||
[I-D.ietf-idr-rfc5575bis] | [I-D.ietf-idr-rfc5575bis] | |||
Hares, S., Loibl, C., Raszuk, R., McPherson, D., and M. | Loibl, C., Hares, S., Raszuk, R., McPherson, D., and M. | |||
Bacher, "Dissemination of Flow Specification Rules", | Bacher, "Dissemination of Flow Specification Rules", | |||
draft-ietf-idr-rfc5575bis-14 (work in progress), April | draft-ietf-idr-rfc5575bis-19 (work in progress), January | |||
2019. | 2020. | |||
[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>. | |||
End of changes. 25 change blocks. | ||||
47 lines changed or deleted | 29 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |