draft-ietf-idr-bgp-open-policy-15.txt | draft-ietf-idr-bgp-open-policy-16.txt | |||
---|---|---|---|---|
Network Working Group A. Azimov | Network Working Group A. Azimov | |||
Internet-Draft Qrator Labs & Yandex | Internet-Draft Qrator Labs & Yandex | |||
Intended status: Standards Track E. Bogomazov | Intended status: Standards Track E. Bogomazov | |||
Expires: July 20, 2021 Qrator Labs | Expires: February 11, 2022 Qrator Labs | |||
R. Bush | R. Bush | |||
Internet Initiative Japan & Arrcus, Inc. | Internet Initiative Japan & Arrcus, Inc. | |||
K. Patel | K. Patel | |||
Arrcus | Arrcus | |||
K. Sriram | K. Sriram | |||
USA NIST | USA NIST | |||
January 16, 2021 | August 10, 2021 | |||
Route Leak Prevention using Roles in Update and Open messages | Route Leak Prevention and Detection using Roles in UPDATE and OPEN | |||
draft-ietf-idr-bgp-open-policy-15 | Messages | |||
draft-ietf-idr-bgp-open-policy-16 | ||||
Abstract | Abstract | |||
Route leaks are the propagation of BGP prefixes which violate | Route leaks are the propagation of BGP prefixes that violate | |||
assumptions of BGP topology relationships; e.g. passing a route | assumptions of BGP topology relationships, e.g., passing a route | |||
learned from one lateral peer to another lateral peer or a transit | learned from one lateral peer to another lateral peer or a transit | |||
provider, passing a route learned from one transit provider to | provider and passing a route learned from one transit provider to | |||
another transit provider or a lateral peer. Existing approaches to | another transit provider or a lateral peer. Existing approaches to | |||
leak prevention rely on marking routes by operator configuration, | leak prevention rely on marking routes by operator configuration, | |||
with no check that the configuration corresponds to that of the eBGP | with no check that the configuration corresponds to that of the eBGP | |||
neighbor, or enforcement that the two eBGP speakers agree on the | neighbor, or enforcement that the two eBGP speakers agree on the | |||
relationship. This document enhances BGP OPEN to establish agreement | relationship. This document enhances the BGP OPEN message to | |||
of the (peer, customer, provider, Route Server, Route Server client) | establish an agreement of the relationship on each eBGP session | |||
relationship of two neighboring eBGP speakers to enforce appropriate | between autonomous systems in order to enforce appropriate | |||
configuration on both sides. Propagated routes are then marked with | configuration on both sides. Propagated routes are then marked | |||
an Only to Customer (OTC) attribute according to the agreed | according to the agreed relationship, allowing both prevention and | |||
relationship, allowing both prevention and detection of route leaks. | detection of route leaks. | |||
Requirements Language | Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
Status of This Memo | Status of This Memo | |||
skipping to change at page 2, line 12 ¶ | skipping to change at page 2, line 15 ¶ | |||
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 July 20, 2021. | This Internet-Draft will expire on February 11, 2022. | |||
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. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Peering Relationships . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Peering Relationships . . . . . . . . . . . . . . . . . . . . 4 | ||||
3. BGP Role . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. BGP Role . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
4. BGP Role Capability . . . . . . . . . . . . . . . . . . . . . 5 | 3.1. BGP Role Capability . . . . . . . . . . . . . . . . . . . 5 | |||
5. Role correctness . . . . . . . . . . . . . . . . . . . . . . 5 | 3.2. Role Correctness . . . . . . . . . . . . . . . . . . . . 5 | |||
5.1. Strict mode . . . . . . . . . . . . . . . . . . . . . . . 6 | 4. BGP Only to Customer (OTC) Attribute . . . . . . . . . . . . 6 | |||
6. BGP Only to Customer (OTC) Attribute . . . . . . . . . . . . 6 | 5. Additional Considerations . . . . . . . . . . . . . . . . . . 8 | |||
7. Enforcement . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
8. Additional Considerations . . . . . . . . . . . . . . . . . . 7 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 9 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | 8.1. Normative References . . . . . . . . . . . . . . . . . . 10 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 8.2. Informative References . . . . . . . . . . . . . . . . . 11 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 9 | Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 9 | Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 10 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 10 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 10 | ||||
1. Introduction | 1. Introduction | |||
A BGP route leak occurs when a route is learned from a transit | A BGP route leak occurs when a route is learned from a transit | |||
provider or lateral peer and then announced to another provider or | provider or lateral peer and then announced to another provider or | |||
lateral peer. See [RFC7908]. These are usually the result of | lateral peer [RFC7908]. These are usually the result of | |||
misconfigured or absent BGP route filtering or lack of coordination | misconfigured or absent BGP route filtering or lack of coordination | |||
between two eBGP speakers. | between autonomous systems (ASes). | |||
The mechanism proposed in | Existing approaches to leak prevention rely on marking routes by | |||
[I-D.ietf-grow-route-leak-detection-mitigation] uses large- | operator configuration, with no check that the configuration | |||
communities to perform detection and mitigation of route leaks. | corresponds to that of the eBGP neighbor, or enforcement that the two | |||
While signaling using communities is easy to implement and deploy | eBGP speakers agree on the relationship. This document enhances the | |||
quickly, it normally relies on operator-maintained policy | BGP OPEN message to establish an agreement of the relationship on | |||
configuration, which is vulnerable to misconfiguration [Streibelt]. | each eBGP session between autonomous systems in order to enforce | |||
The community signal can also be stripped at the ISP boundaries. | appropriate configuration on both sides. Propagated routes are then | |||
marked according to the agreed relationship, allowing both prevention | ||||
and detection of route leaks. | ||||
This document provides configuration automation using 'BGP roles', | This document provides configuration automation using BGP Roles, | |||
which are negotiated using a new BGP Capability Code in OPEN message | which are negotiated using a BGP Role Capability in the OPEN message | |||
(see Section 4 in [RFC5492]). Either or both BGP speakers MAY be | [RFC5492]. An eBGP speaker may require the use of this capability | |||
configured to require that this capability be agreed for the BGP OPEN | and confirmation of BGP Role with a neighbor for the BGP OPEN to | |||
to succeed. | succeed. | |||
A new optional, transitive BGP Path Attribute Only to Customer (OTC) | An optional, transitive BGP Path Attribute, called Only to Customer | |||
is specified that SHOULD be automatically configured using BGP roles. | (OTC), is specified in Section 4. It prevents ASes from creating | |||
This attribute prevents networks from creating leaks, and detects | leaks, and detects leaks created by the ASes in the middle of an AS | |||
leaks created by third parties. | path. The main focus/applicability is the Internet (IPv4 and IPv6 | |||
unicast route advertisements). | ||||
In the rest of this document, we use the term "peer" to refer to | 1.1. Terminology | |||
"lateral peer" for simplicity. | ||||
2. Peering Relationships | In the rest of this document, the term "Peer" is used to refer to a | |||
"lateral peer" for simplicity. Also, the terms Provider and Customer | ||||
are used to refer to a transit provider and a transit customer, | ||||
respectively. Further, the terms RS and RS-Client are used to refer | ||||
to a Route Server and its client, respectively. | ||||
Despite the use of terms such as "customer", "peer", etc. in this | The terms "local AS" and "remote AS" are used to refer to the two | |||
document, these are not necessarily business relationships based on | ends of an eBGP session. The "local AS" is the AS where the protocol | |||
payment agreements. These terms are used to represent restrictions | action being described is to be performed, and "remote AS" is the AS | |||
on BGP route propagation, sometimes known as the Gao-Rexford model | at the other end of the eBGP session in consideration. | |||
[Gao]. The following is a list of various roles in eBGP peering and | ||||
the corresponding rules for route propagation: | ||||
Provider: MAY send to a customer all available prefixes. | The use of the term "route is ineligible" in this document has the | |||
same meaning as in [RFC4271], i.e., "route is ineligible to be | ||||
installed in Loc-RIB and will be excluded from the next phase of | ||||
route selection." | ||||
Customer: MAY send to a provider prefixes which the sender | 2. Peering Relationships | |||
originates and prefixes learned from any of their customers. A | ||||
customer MUST NOT send to a provider prefixes learned from its | ||||
peers, from other providers, or from Route Servers. | ||||
Route Server (RS): MAY send to an Route Server client (RS-client) | The terms defined and used in this document (see below) do not | |||
all available prefixes. | necessarily represent business relationships based on payment | |||
agreements. These terms are used to represent restrictions on BGP | ||||
route propagation, sometimes known as the Gao-Rexford model [Gao]. | ||||
The following is a list of BGP Roles for eBGP peering and the | ||||
corresponding rules for route propagation: | ||||
RS-client: MAY send to an RS prefixes which the sender originates | Provider: MAY propagate any available route to a Customer. | |||
and prefixes learned from its customers. An RS-client MUST NOT | ||||
send to an RS prefixes learned from its peers or providers, or | ||||
from another RS. | ||||
Peer: MAY send to a peer prefixes which the sender originates and | Customer: MAY propagate any route learned from a Customer, or | |||
prefixes learned from its customers. A peer MUST NOT send to a | locally originated, to a Provider. All other routes MUST NOT be | |||
peer prefixes learned from other peers, from its providers, or | propagated. | |||
from RS(s). | ||||
Of course, any BGP speaker may apply policy to reduce what is | Route Server (RS): MAY propagate any available route to a Route | |||
announced, and a recipient may apply policy to reduce the set of | Server Client (RS-Client). | |||
routes they accept. Violation of the above rules may result in route | ||||
leaks and MUST NOT be allowed. Automatic enforcement of these rules | ||||
should significantly reduce route leaks that may otherwise occur due | ||||
to manual configuration mistakes. While enforcing the above rules | ||||
will address most BGP peering scenarios, their configuration is not | ||||
part of BGP itself; therefore, configuration of ingress and egress | ||||
prefix filters is still strongly advised. | ||||
3. BGP Role | RS-Client: MAY propagate any route learned from a Customer, or | |||
locally originated, to an RS. All other routes MUST NOT be | ||||
propagated. | ||||
BGP Role is a new configuration option that is configured on a per- | Peer: MAY propagate any route learned from a Customer, or locally | |||
session basis. BGP Roles reflect the agreement between two BGP | originated, to a Peer. All other routes MUST NOT be propagated. | |||
speakers about their relationship. One of the Roles described below | ||||
SHOULD be configured on each eBGP session between ISPs that carry | ||||
IPv4 and(or) IPv6 unicast prefixes. | ||||
Allowed Role values for eBGP sessions between ISPs are: | A BGP speaker may apply policy to reduce what is announced, and a | |||
recipient may apply policy to reduce the set of routes they accept. | ||||
Violation of the above rules may result in route leaks. Automatic | ||||
enforcement of these rules should significantly reduce route leaks | ||||
that may otherwise occur due to manual configuration mistakes. | ||||
o Provider - sender is a transit provider to neighbor; | 3. BGP Role | |||
o Customer - sender is a transit customer of neighbor; | The BGP Role characterizes the relationship between the eBGP speakers | |||
forming a session. BGP Role is configured on a per-session basis. | ||||
An eBGP speaker SHOULD configure the BGP Role locally based on the | ||||
local AS's knowledge of its Role. The only exception is when the | ||||
eBGP connection is complex (see Section 5). BGP Roles are mutually | ||||
confirmed using the BGP Role Capability (described in Section 3.1) on | ||||
each eBGP session between autonomous systems (ASes). One of the | ||||
Roles described below SHOULD be configured at the local AS for each | ||||
eBGP session with a neighbor (remote AS) (see definitions in | ||||
Section 1.1). | ||||
o RS - sender is a Route Server, usually at an Internet exchange | Allowed Roles for eBGP sessions are: | |||
point (IX); | ||||
o RS-client - sender is client of an RS; | o Provider - the local AS is a transit Provider of the remote AS; | |||
o Customer - the local AS is a transit Customer of the remote AS; | ||||
o Peer - sender and neighbor are peers. | o RS - the local AS is a Route Server (usually at an Internet | |||
exchange point) and the remote AS is its RS-Client; | ||||
Since BGP Role reflects the relationship between two BGP speakers, it | o RS-Client - the local AS is a client of an RS and the RS is the | |||
could also be used for other purposes besides route leak mitigation. | remote AS; | |||
4. BGP Role Capability | o Peer - the local and remote ASes are Peers (i.e., have a lateral | |||
peering relationship). | ||||
The TLV (type, length, value) of the BGP Role capability are: | 3.1. BGP Role Capability | |||
o Type - <TBD1>; | The BGP Role Capability is defined as follows: | |||
o Length - 1 (byte); | o Code - 9 | |||
o Length - 1 (octet) | ||||
o Value - integer corresponding to speaker's BGP Role (see Table 1). | o Value - integer corresponding to speaker's BGP Role (see Table 1). | |||
+-------+---------------------+ | +-------+------------------------------+ | |||
| Value | Role name | | | Value | Role name (for the local AS) | | |||
+-------+---------------------+ | +-------+------------------------------+ | |||
| 0 | Sender is Provider | | | 0 | Provider | | |||
| 1 | Sender is RS | | | 1 | RS | | |||
| 2 | Sender is RS-client | | | 2 | RS-Client | | |||
| 3 | Sender is Customer | | | 3 | Customer | | |||
| 4 | Sender is Peer | | | 4 | Peer (Lateral Peer) | | |||
+-------+---------------------+ | | 5-255 | Unassigned | | |||
+-------+------------------------------+ | ||||
Table 1: Predefined BGP Role Values | Table 1: Predefined BGP Role Values | |||
5. Role correctness | If BGP Role is locally configured, the eBGP speaker MUST advertise | |||
BGP Role Capability in the BGP OPEN message. An eBGP speaker MUST | ||||
NOT advertise multiple versions of the BGP Role Capability. | ||||
Section 3 described how BGP Role encodes the relationship between two | 3.2. Role Correctness | |||
eBGP speakers. But the mere presence of BGP Role doesn't | ||||
automatically guarantee role agreement between two BGP peers. | ||||
To enforce correctness, the BGP Role check is applied with a set of | Section 3.1 described how BGP Role encodes the relationship on each | |||
constraints on how speakers' BGP Roles MUST correspond. Of course, | eBGP session between autonomous systems (ASes). | |||
each speaker MUST announce and accept the BGP Role capability in the | ||||
BGP OPEN message exchange. | ||||
If a speaker receives a BGP Role capability, it MUST check the value | The mere receipt of BGP Role Capability does not automatically | |||
of the received capability (i.e., the sender's role) with its own BGP | guarantee the Role agreement between two eBGP neighbors. If the BGP | |||
Role. The allowed pairings are as follows: | Role Capability is advertised, and one is also received from the | |||
peer, the roles MUST correspond to the relationships in Table 2. If | ||||
the roles do not correspond, the BGP speaker MUST reject the | ||||
connection using the Role Mismatch Notification (code 2, subcode 8). | ||||
+---------------+-----------------+ | +---------------+----------------+ | |||
| Sender's Role | Receiver's Role | | | Local AS Role | Remote AS Role | | |||
+---------------+-----------------+ | +---------------+----------------+ | |||
| Provider | Customer | | | Provider | Customer | | |||
| Customer | Provider | | | Customer | Provider | | |||
| RS | RS-client | | | RS | RS-Client | | |||
| RS-client | RS | | | RS-Client | RS | | |||
| Peer | Peer | | | Peer | Peer | | |||
+---------------+-----------------+ | +---------------+----------------+ | |||
Table 2: Allowed Pairs of Role Capabilities | Table 2: Allowed Pairs of Role Capabilities | |||
If the role of the receiving speaker for the eBGP session in | If the BGP Role Capability is sent, but one is not received, then the | |||
consideration is included in Table 1 and the observed Role pair is | connection MAY be rejected using the Role Mismatch Notification (code | |||
not in the above table, then the receiving speaker MUST reject the | 2, subcode 8); this mode of operation is called the "strict mode". | |||
eBGP connection, send a Role Mismatch Notification (code 2, subcode | For backward compatibility, if the BGP speaker does not receive the | |||
<TBD2>), and also send a Connection Rejected Notification [RFC4486] | capability from its peer, it SHOULD ignore the absence of BGP Role | |||
(Notification with error code 6, subcode 5). | Capability and proceed with session establishment; this SHOULD be the | |||
default non-strict mode of operation. In this case, the locally | ||||
configured BGP Role is used for the procedures described in | ||||
Section 4. | ||||
5.1. Strict mode | If an eBGP speaker receives multiple but identical BGP Role | |||
Capabilities with the same value in each, then the speaker MUST | ||||
consider it to be a single BGP Role Capability and proceed [RFC5492]. | ||||
If multiple BGP Role Capabilities are received and not all of them | ||||
have the same value, then the BGP speaker MUST reject the connection | ||||
using the Role Mismatch Notification (code 2, subcode 8). | ||||
A new BGP configuration option "strict mode" is defined with values | The BGP Role value for the local AS is used in the route leak | |||
of true or false. If set to true, then the speaker MUST refuse to | prevention and detection procedures described in Section 4. | |||
establish a BGP session with a neighbor which does not announce the | ||||
BGP Role capability in the OPEN message. If a speaker rejects a | ||||
connection, it MUST send a send a Role Mismatch Notification (code 2, | ||||
subcode <TBD2>), and also send a Connection Rejected Notification | ||||
[RFC4486] (Notification with error code 6, subcode 5). By default, | ||||
strict mode SHOULD be set to false for backward compatibility with | ||||
BGP speakers that do not yet support this mechanism. | ||||
6. BGP Only to Customer (OTC) Attribute | 4. BGP Only to Customer (OTC) Attribute | |||
Newly defined here, the Only to Customer (OTC) is an optional, 4 | The Only to Customer (OTC) Attribute is an optional transitive path | |||
bytes long, transitive BGP Path attribute with the Type Code <TBD3>. | attribute with Attribute Type Code 35 and a length of 4 octets. The | |||
The purpose of this attribute is to guarantee that once a route is | purpose of this attribute is to guarantee that once a route is sent | |||
sent to customer, peer, or RS-client, it will subsequently go only to | to a Customer, Peer, or RS-Client, it will subsequently go only to | |||
customers. The value of OTC is an AS number determined by policy as | Customers. The attribute value is an AS number determined by the | |||
described below. The semantics and usage of the OTC attribute are | policy described below. | |||
made clear by the ingress and egress policies described below. | ||||
The following ingress policy applies to the OTC attribute: | The following ingress policy applies to the processing of the OTC | |||
Attribute: | ||||
1. If a route with OTC attribute is received from a Customer or RS- | 1. If a route with the OTC Attribute is received from a Customer or | |||
client, then it is a route leak and MUST be rejected. | RS-Client, then it is a route leak and MUST be considered | |||
ineligible (see Section 1.1). | ||||
2. If a route with OTC attribute is received from a Peer and its | 2. If a route with the OTC Attribute is received from a Peer and at | |||
value is not equal to the sending neighbor's Autonomous System | least one of the OTC Attributes has a value that is not equal to | |||
(AS) number, then it is a route leak and MUST be rejected. | the remote (i.e., Peer's) AS number, then it is a route leak and | |||
MUST be considered ineligible. | ||||
3. If a route is received from a Provider, Peer, or RS and the OTC | 3. If a route is received from a Provider, Peer, or RS, and the OTC | |||
attribute is not present, then it MUST be added with value equal | Attribute is not present, then it MUST be added with a value | |||
to the sending neighbor's AS number. | equal to the AS number of the remote AS. | |||
The egress policy MUST be: | The following egress policy applies to the processing of the OTC | |||
Attribute: | ||||
1. A route with the OTC attribute set MUST NOT be sent to Providers, | 1. If a route is to be advertised to a Customer, Peer, or RS-Client | |||
Peers, or RS(s). | (when the sender is an RS), and the OTC Attribute is not present, | |||
then an OTC Attribute MUST be added with a value equal to the AS | ||||
number of the local AS. | ||||
2. If route is sent to a Customer or Peer, or an RS-client (when the | 2. If a route already contains the OTC Attribute, it MUST NOT be | |||
sender is an RS) and the OTC attribute is not present, then it | propagated to Providers, Peers, or RS(s). | |||
MUST be added with value equal to AS number of the sender. | ||||
Once the OTC attribute has been set, it MUST be preserved unchanged. | The described policies provide both leak prevention for the local AS | |||
and leak detection and mitigation multiple hops away. In the case of | ||||
prevention at the local AS, the presence of an OTC Attribute | ||||
indicates to the egress router that the route was learned from a | ||||
Peer, Provider, or RS, and it can be advertised only to the | ||||
customers. The same OTC Attribute which is set locally also provides | ||||
a way to detect route leaks by an AS multiple hops away if a route is | ||||
received from a Customer, Peer, or RS-Client. | ||||
7. Enforcement | The OTC Attribute may be set by the egress policy of remote AS or by | |||
the ingress policy of local AS. In both scenarios, the OTC value | ||||
will be the same. This makes the scheme more robust and benefits | ||||
early adopters. | ||||
Having the relationship unequivocally agreed between the two peers in | If an eBGP speaker receives an UPDATE with an OTC Attribute with a | |||
BGP OPEN is critical; BGP implementations MUST enforce the | length different from 4 octets, then the UPDATE SHALL be considered | |||
relationship/role establishment rules (see Section 5) in order to | malformed. If malformed, the UPDATE message SHALL be handled using | |||
ameliorate operator policy configuration errors (if any). | the approach of "treat-as-withdraw" [RFC7606]. | |||
Similarly, the application of that relationship on prefix propagation | Once the OTC Attribute has been set, it MUST be preserved unchanged. | |||
using OTC MUST be enforced by the BGP implementations, and not | ||||
exposed to user misconfiguration. | ||||
As opposed to communities, BGP attributes may not be generally | Correct implementation of the procedures specified in this document | |||
modified or stripped by the operator; BGP router implementations | is not expected to result in the presence of multiple OTC Attributes | |||
enforce such treatment. This is the desired property for the OTC | in an UPDATE. However, if an eBGP speaker receives multiple OTC | |||
marking. Hence, this document specifies OTC as an attribute. | Attributes with a route, then the only difference in the processing | |||
is in Step 2 of the ingress policy. | ||||
8. Additional Considerations | The described ingress and egress policies are applicable only for | |||
unicast IPv4 and IPv6 address families and MUST not affect other | ||||
address families by default. The operator MUST NOT have the ability | ||||
to modify the policies defined in this section. | ||||
5. Additional Considerations | ||||
There are peering relationships that are 'complex', i.e., both | There are peering relationships that are 'complex', i.e., both | |||
parties are intentionally sending prefixes received from each other | parties intentionally advertise prefixes received from each other to | |||
to their non-transit peers and/or transit providers. If multiple BGP | their Peers and/or transit Providers. If multiple eBGP sessions can | |||
peerings can segregate the 'complex' parts of the relationship, the | segregate the 'complex' parts of the relationship, then the complex | |||
complex peering roles can be segregated into different normal BGP | peering roles can be segregated into different normal eBGP sessions, | |||
sessions, and BGP Roles MUST be used on each of the resulting normal | and BGP Roles MUST be used on each of the resulting normal (non- | |||
(non-complex) BGP sessions. | complex) eBGP sessions. | |||
No Roles SHOULD be configured on a 'complex' BGP session (assuming it | No Roles SHOULD be configured on a 'complex' eBGP session (assuming | |||
is not segregated) and in that case, OTC MUST be set by configuration | it is not segregated) and in that case, the OTC Attribute processing | |||
on a per-prefix basis. However, there are no built-in measures to | MUST be done relying on configuration on a per-prefix basis. Also, | |||
check correctness of OTC use if BGP Role is not configured. | in this case, the per-prefix peering configuration MUST follow the | |||
same definitions of peering relations as described in Section 2. | ||||
However, in this case, there are no built-in measures to check | ||||
correctness of the per-prefix peering configuration. | ||||
The incorrect setting of BGP Roles and/or OTC attributes may affect | The incorrect setting of BGP Roles and/or OTC Attributes may affect | |||
prefix propagation. Further, this document doesn't specify any | prefix propagation. Further, this document does not specify any | |||
special handling of incorrect/private ASNs in OTC attribute; such | special handling of incorrect AS numbers in the OTC Attribute. Such | |||
errors should not happen with proper configuration. | errors should not happen with proper configuration. | |||
As the BGP Role reflects the peering relationship between neighbors, | 6. IANA Considerations | |||
it might have other uses beyond the route leak solution discussed so | ||||
far. For example, BGP Role might affect route priority, or be used | ||||
to distinguish borders of a network if a network consists of multiple | ||||
ASs. Though such uses may be worthwhile, they are not the goal of | ||||
this document. Note that such uses would require local policy | ||||
control. | ||||
The use of BGP Roles are specified for unicast IPv4 and IPv6 address | IANA has registered a new BGP Capability described in Section 3.1 in | |||
families. While BGP roles can be configured on other address | the "Capability Codes" registry's "IETF Review" range [RFC5492]. The | |||
families its applicability for these cases is out of scope of this | description for the new capability is "BGP Role". IANA has assigned | |||
document. | the value 9 [to be removed upon publication: | |||
https://www.iana.org/assignments/capability-codes/capability- | ||||
codes.xhtml]. This document is the reference for the new capability. | ||||
As BGP role configuration results in automatic creation of inbound/ | The BGP Role capability includes a Value field, for which IANA is | |||
outbound filters, existence of roles should be treated as existence | requested to create and maintain a new sub-registry called "BGP Role | |||
of Import and Export policy [RFC8212]. | Value" in the Capability Codes registry. Assignments consist of a | |||
Value and a corresponding Role name. Initially, this registry is to | ||||
be populated with the data contained in Table 1 found in Section 3.1. | ||||
Future assignments may be made by the "IETF Review" policy as defined | ||||
in [RFC8126]. The registry is as shown in Table 3. | ||||
9. IANA Considerations | +-------+--------------------------------+---------------+ | |||
| Value | Role name (for the local AS) | Reference | | ||||
+-------+--------------------------------+---------------+ | ||||
| 0 | Provider | This document | | ||||
| 1 | RS | This document | | ||||
| 2 | RS-Client | This document | | ||||
| 3 | Customer | This document | | ||||
| 4 | Peer (i.e., Lateral Peer) | This document | | ||||
| 5-255 | To be assigned by IETF Review | | ||||
+-------+--------------------------------+---------------+ | ||||
This document defines a new Capability Codes option [to be removed | Table 3: IANA Registry for BGP Role | |||
upon publication: https://www.iana.org/assignments/capability-codes/ | ||||
capability-codes.xhtml ] [RFC5492], named "BGP Role" with an assigned | ||||
value <TBD1>. The length of this capability is 1. | ||||
The BGP Role capability includes a Value field, for which IANA is | IANA has registered a new OPEN Message Error subcode named the "Role | |||
requested to create and maintain a new sub-registry called "BGP Role | Mismatch" (see Section 3.2) in the OPEN Message Error subcodes | |||
Value". Assignments consist of Value and corresponding Role name. | registry. IANA has assigned the value 8 [to be removed upon | |||
Initially this registry is to be populated with the data contained in | publication: https://www.iana.org/assignments/bgp-parameters/bgp- | |||
Table 1 found in Section 4. Future assignments may be made by a | parameters.xhtml#bgp-parameters-6]. This document is the reference | |||
Standard Action procedure [RFC8126]. The allocation policy for new | for the new subcode. | |||
entries up to and including value 127 is "Expert Review" [RFC8126]. | ||||
The allocation policy for values 128 through 251 is "First Come First | ||||
Served". The values from 252 through 255 are for "Experimental Use". | ||||
This document defines a new subcode, "Role Mismatch" with an assigned | IANA has also registered a new path attribute named "Only to Customer | |||
value <TBD2> in the OPEN Message Error subcodes registry [to be | (OTC)" (see Section 4) in the "BGP Path Attributes" registry. IANA | |||
removed upon publication: http://www.iana.org/assignments/bgp- | has assigned code value 35 [To be removed upon publication: | |||
parameters/bgp-parameters.xhtml#bgp-parameters-6] [RFC4271]. | http://www.iana.org/assignments/bgp-parameters/bgp- | |||
parameters.xhtml#bgp-parameters-2]. This document is the reference | ||||
for the new attribute. | ||||
This document defines a new optional, transitive BGP Path Attributes | 7. Security Considerations | |||
option, named "Only to Customer (OTC)" with an assigned value <TBD3> | ||||
[To be removed upon publication: http://www.iana.org/assignments/bgp- | ||||
parameters/bgp-parameters.xhtml#bgp-parameters-2] [RFC4271]. The | ||||
length of this attribute is four bytes. | ||||
10. Security Considerations | The security considerations of BGP (as specified in [RFC4271] and | |||
[RFC4272]) apply. | ||||
This document proposes a mechanism for prevention of route leaks that | This document proposes a mechanism using BGP Role for the prevention | |||
are the result of BGP policy misconfiguration. | and detection of route leaks that are the result of BGP policy | |||
misconfiguration. A misconfiguration of the BGP Role may affect | ||||
prefix propagation. For example, if a downstream (i.e., towards a | ||||
Customer) peering link were misconfigured with a Provider or Peer | ||||
role, this will limit the number of prefixes that can be advertised | ||||
in this direction. On the other hand if an upstream provider were | ||||
misconfigured (by a local AS) with the Customer role, this may result | ||||
in propagating routes that are received from other Providers or | ||||
Peers. But the BGP Role negotiation and the resulting confirmation | ||||
of Roles make such misconfigurations unlikely. | ||||
A misconfiguration in OTC setup may affect prefix propagation. But | Setting the strict mode of operation for BGP Role negotiation as the | |||
the automation that is provided by BGP roles should make such | default may result in a situation where the eBGP session will not | |||
misconfiguration unlikely. | come up after a software update. Such an implementation of this | |||
document is strongly discouraged. | ||||
11. References | Removing the OTC Attribute or changing its value can limit the | |||
opportunity of route leak detection. Such activity can be done on | ||||
purpose as part of a Man in the Middle (MITM) attack. For example, | ||||
an AS can remove the OTC Attribute on a received route and then leak | ||||
the route to its transit provider. Such malicious activity cannot be | ||||
prevented without cryptographically signing the BGP UPDATE [RFC8205] | ||||
or out of band detection [I-D.ietf-sidrops-aspa-verification], but | ||||
such schemes are beyond the scope of this document. | ||||
11.1. Normative References | Adding an OTC Attribute when the route is advertised from Customer to | |||
Provider will limit the propagation of the route. Such a route may | ||||
be considered as ineligible by the immediate Provider or its Peers or | ||||
upper layer Providers. This kind of OTC Attribute addition is | ||||
unlikely to happen on the Provider side because it will limit the | ||||
traffic volume towards its Customer. On the Customer side, adding an | ||||
OTC Attribute for traffic engineering purposes is also discouraged | ||||
because it will limit route propagation in an unpredictable way. | ||||
8. 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>. | |||
[RFC4486] Chen, E. and V. Gillet, "Subcodes for BGP Cease | [RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", | |||
Notification Message", RFC 4486, DOI 10.17487/RFC4486, | RFC 4272, DOI 10.17487/RFC4272, January 2006, | |||
April 2006, <https://www.rfc-editor.org/info/rfc4486>. | <https://www.rfc-editor.org/info/rfc4272>. | |||
[RFC5492] Scudder, J. and R. Chandra, "Capabilities Advertisement | [RFC5492] Scudder, J. and R. Chandra, "Capabilities Advertisement | |||
with BGP-4", RFC 5492, DOI 10.17487/RFC5492, February | with BGP-4", RFC 5492, DOI 10.17487/RFC5492, February | |||
2009, <https://www.rfc-editor.org/info/rfc5492>. | 2009, <https://www.rfc-editor.org/info/rfc5492>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K. | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | Patel, "Revised Error Handling for BGP UPDATE Messages", | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | RFC 7606, DOI 10.17487/RFC7606, August 2015, | |||
<https://www.rfc-editor.org/info/rfc7606>. | ||||
11.2. Informative References | ||||
[Gao] Gao, L. and J. Rexford, "Stable Internet routing without | ||||
global coordination", IEEE/ACM Transactions on | ||||
Networking, Volume 9, Issue 6, pp 689-692, DOI | ||||
10.1109/90.974523, December 2001, | ||||
<https://ieeexplore.ieee.org/document/974523>. | ||||
[I-D.ietf-grow-route-leak-detection-mitigation] | ||||
Sriram, K. and A. Azimov, "Methods for Detection and | ||||
Mitigation of BGP Route Leaks", draft-ietf-grow-route- | ||||
leak-detection-mitigation-04 (work in progress), October | ||||
2020. | ||||
[RFC7908] Sriram, K., Montgomery, D., McPherson, D., Osterweil, E., | [RFC7908] Sriram, K., Montgomery, D., McPherson, D., Osterweil, E., | |||
and B. Dickson, "Problem Definition and Classification of | and B. Dickson, "Problem Definition and Classification of | |||
BGP Route Leaks", RFC 7908, DOI 10.17487/RFC7908, June | BGP Route Leaks", RFC 7908, DOI 10.17487/RFC7908, June | |||
2016, <https://www.rfc-editor.org/info/rfc7908>. | 2016, <https://www.rfc-editor.org/info/rfc7908>. | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
<https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
[RFC8212] Mauch, J., Snijders, J., and G. Hankins, "Default External | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
BGP (EBGP) Route Propagation Behavior without Policies", | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
RFC 8212, DOI 10.17487/RFC8212, July 2017, | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
<https://www.rfc-editor.org/info/rfc8212>. | ||||
[Streibelt] | 8.2. Informative References | |||
Streibelt, F., Lichtblau, F., Beverly, R., Feldmann, A., | ||||
Cristel, C., Smaragdakis, G., and R. Bush, "BGP | [Gao] Gao, L. and J. Rexford, "Stable Internet routing without | |||
Communities: Even more Worms in the Routing Can", | global coordination", IEEE/ACM Transactions on | |||
<https://people.mpi-inf.mpg.de/~fstreibelt/preprint/ | Networking, Volume 9, Issue 6, pp 689-692, DOI | |||
communities-imc2018.pdf>. | 10.1109/90.974523, December 2001, | |||
<https://ieeexplore.ieee.org/document/974523>. | ||||
[I-D.ietf-sidrops-aspa-verification] | ||||
Azimov, A., Bogomazov, E., Bush, R., Patel, K., and J. | ||||
Snijders, "Verification of AS_PATH Using the Resource | ||||
Certificate Public Key Infrastructure and Autonomous | ||||
System Provider Authorization", draft-ietf-sidrops-aspa- | ||||
verification-07 (work in progress), February 2021. | ||||
[RFC8205] Lepinski, M., Ed. and K. Sriram, Ed., "BGPsec Protocol | ||||
Specification", RFC 8205, DOI 10.17487/RFC8205, September | ||||
2017, <https://www.rfc-editor.org/info/rfc8205>. | ||||
Acknowledgements | Acknowledgements | |||
The authors wish to thank Andrei Robachevsky, Daniel Ginsburg, Jeff | The authors wish to thank Alvaro Retana, Andrei Robachevsky, Daniel | |||
Haas, Ruediger Volk, Pavel Lunin, Gyan Mishra, Ignas Bagdonas, Sue | Ginsburg, Jeff Haas, Ruediger Volk, Pavel Lunin, Gyan Mishra, Ignas | |||
Hares, and John Scudder for comments, suggestions, and critique. | Bagdonas, Sue Hares, and John Scudder for comments, suggestions, and | |||
critique. | ||||
Contributors | Contributors | |||
Brian Dickson | Brian Dickson | |||
Independent | Independent | |||
Email: brian.peter.dickson@gmail.com | Email: brian.peter.dickson@gmail.com | |||
Doug Montgomery | Doug Montgomery | |||
USA National Institute of Standards and Technology | USA National Institute of Standards and Technology | |||
Email: dougm@nist.gov | Email: dougm@nist.gov | |||
Authors' Addresses | Authors' Addresses | |||
End of changes. 82 change blocks. | ||||
273 lines changed or deleted | 338 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/ |