draft-ietf-idr-bgp-open-policy-08.txt   draft-ietf-idr-bgp-open-policy-09.txt 
Network Working Group A. Azimov Network Working Group A. Azimov
Internet-Draft E. Bogomazov Internet-Draft E. Bogomazov
Intended status: Standards Track Qrator Labs Intended status: Standards Track Qrator Labs
Expires: September 10, 2020 R. Bush Expires: October 21, 2020 R. Bush
Internet Initiative Japan & Arrcus Internet Initiative Japan & Arrcus
K. Patel K. Patel
Arrcus, Inc. Arrcus, Inc.
K. Sriram K. Sriram
US NIST US NIST
March 9, 2020 April 19, 2020
Route Leak Prevention using Roles in Update and Open messages Route Leak Prevention using Roles in Update and Open messages
draft-ietf-idr-bgp-open-policy-08 draft-ietf-idr-bgp-open-policy-09
Abstract Abstract
Route leaks are the propagation of BGP prefixes which violate Route leaks are the propagation of BGP prefixes which violate
assumptions of BGP topology relationships; e.g. passing a route assumptions of BGP topology relationships; e.g. passing a route
learned from one peer to another peer or to a transit provider, learned from one peer to another peer or to a transit provider,
passing a route learned from one transit provider to another transit passing a route learned from one transit provider to another transit
provider or to a peer. Today, approaches to leak prevention rely on provider or to a peer. Today, approaches to leak prevention rely on
marking routes by operator configuration, with no check that the marking routes by operator configuration, with no check that the
configuration corresponds to that of the BGP neighbor, or enforcement configuration corresponds to that of the BGP neighbor, or enforcement
skipping to change at page 2, line 12 skipping to change at page 2, line 12
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 September 10, 2020. This Internet-Draft will expire on October 21, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2020 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
skipping to change at page 3, line 47 skipping to change at page 3, line 47
[Gao]. The following is a list of various roles in BGP peering and [Gao]. The following is a list of various roles in BGP peering and
the corresponding rules for route propagation: the corresponding rules for route propagation:
Provider: MAY send to a customer all available prefixes. Provider: MAY send to a customer all available prefixes.
Customer: MAY send to a provider their own prefixes and prefixes Customer: MAY send to a provider their own prefixes and prefixes
learned from any of their customers. A customer MUST NOT send to learned from any of their customers. A customer MUST NOT send to
a provider prefixes learned from its peers, from other providers, a provider prefixes learned from its peers, from other providers,
or from Route Servers. or from Route Servers.
Route Server (RS): MAY send to an RS Client all available prefixes. Route Server (RS): MAY send to an Route Server client (RS-client)
all available prefixes.
Route Server Client (RS-client): MAY send to an RS its own prefixes RS-client: MAY send to an RS its own prefixes and prefixes learned
and prefixes learned from its customers. An RS-client MUST NOT from its customers. An RS-client MUST NOT send to an RS prefixes
send to an RS prefixes learned from its peers or providers, or learned from its peers or providers, or from another RS.
from another RS.
Peer: MAY send to a peer its own prefixes and prefixes learned from Peer: MAY send to a peer its own prefixes and prefixes learned from
its customers. A peer MUST NOT send to a peer prefixes learned its customers. A peer MUST NOT send to a peer prefixes learned
from other peers, from its providers, or from RS(s). from other peers, from its providers, or from RS(s).
Of course, any BGP speaker may apply policy to reduce what is Of course, any BGP speaker may apply policy to reduce what is
announced, and a recipient may apply policy to reduce the set of announced, and a recipient may apply policy to reduce the set of
routes they accept. Violation of the above rules may result in route routes they accept. Violation of the above rules may result in route
leaks and MUST not be allowed. Automatic enforcement of these rules leaks and MUST not be allowed. Automatic enforcement of these rules
should significantly reduce route leaks that may otherwise occur due should significantly reduce route leaks that may otherwise occur due
to manual configuration mistakes. While enforcing the above rules to manual configuration mistakes. While enforcing the above rules
will address most BGP peering scenarios, their configuration is not will address most BGP peering scenarios, their configuration is not
part of BGP itself; therefore,configuration of ingress and egress part of BGP itself; therefore, configuration of ingress and egress
prefix filters is still strongly advised. prefix filters is still strongly advised.
3. BGP Role 3. BGP Role
BGP Role is new configuration option that SHOULD be configured on BGP Role is new configuration option that SHOULD be configured on
each BGP session. It reflects the real-world agreement between two each BGP session. It reflects the real-world agreement between two
BGP speakers about their relationship. BGP speakers about their relationship.
Allowed Role values for eBGP sessions are: Allowed Role values for eBGP sessions are:
o Provider - sender is a transit provider to neighbor; o Provider - sender is a transit provider to neighbor;
o Customer - sender is a transit customer of neighbor; o Customer - sender is a transit customer of neighbor;
o RS - sender is a Route Server, usually at an Internet exchange o RS - sender is a Route Server, usually at an Internet exchange
point (IX); point (IX);
o RS-Client - sender is client of an RS; o RS-client - sender is client of an RS;
o Peer - sender and neighbor are peers. o Peer - sender and neighbor are peers.
Since BGP Role reflects the relationship between two BGP speakers, it Since BGP Role reflects the relationship between two BGP speakers, it
could also be used for other purposes besides route leak mitigation. could also be used for other purposes besides route leak mitigation.
4. BGP Role Capability 4. BGP Role Capability
The TLV (type, length, value) of the BGP Role capability are: The TLV (type, length, value) of the BGP Role capability are:
skipping to change at page 5, line 10 skipping to change at page 5, line 10
o Length - 1 (octet); o Length - 1 (octet);
o Value - integer corresponding to speaker's BGP Role. o Value - integer corresponding to speaker's BGP Role.
+-------+---------------------+ +-------+---------------------+
| Value | Role name | | Value | Role name |
+-------+---------------------+ +-------+---------------------+
| 0 | Sender is Provider | | 0 | Sender is Provider |
| 1 | Sender is RS | | 1 | Sender is RS |
| 2 | Sender is RS-Client | | 2 | Sender is RS-client |
| 3 | Sender is Customer | | 3 | Sender is Customer |
| 4 | Sender is Peer | | 4 | Sender is Peer |
+-------+---------------------+ +-------+---------------------+
Table 1: Predefined BGP Role Values Table 1: Predefined BGP Role Values
5. Role correctness 5. Role correctness
Section 3 described how BGP Role encodes the relationship between two Section 3 described how BGP Role encodes the relationship between two
BGP speakers. But the mere presence of BGP Role doesn't BGP speakers. But the mere presence of BGP Role doesn't
automatically guarantee role agreement between two BGP peers. automatically guarantee role agreement between two BGP peers.
To enforce correctness, the BGP Role check is applied with a set of To enforce correctness, the BGP Role check is applied with a set of
constraints on how speakers' BGP Roles MUST correspond. Of course, constraints on how speakers' BGP Roles MUST correspond. Of course,
each speaker MUST announce and accept the BGP Role capability in the each speaker MUST announce and accept the BGP Role capability in the
BGP OPEN message exchange. BGP OPEN message exchange.
If a speaker receives a BGP Role capability, it MUST check the value If a speaker receives a BGP Role capability, it MUST check the value
of the received capability with its own BGP Role (if it is set). The of the received capability (i.e., the sender's role) with its own BGP
allowed pairings are (first a sender's Role, second the receiver's Role. The allowed pairings are as follow:
Role):
+-------------+---------------+ +---------------+-----------------+
| Sender Role | Receiver Role | | Sender's Role | Receiver's 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 Role Capabilities Table 2: Allowed Pairs of Role Capabilities
If the observed Role pair is not in the above table, then the If the observed Role pair is not in the above table, then the
receiving speaker MUST send a Role Mismatch Notification (code 2, receiving speaker MUST reject the BGP connection, send a Role
subcode <TBD2>) and reset the BGP session. Mismatch Notification (code 2, subcode <TBD2>), and also send a
Connection Rejected Notification [RFC4486] (Notification with error
code 6, subcode 5).
5.1. Strict mode 5.1. Strict mode
A new BGP configuration option "strict mode" is defined with values A new BGP configuration option "strict mode" is defined with values
of true or false. If set to true, then the speaker MUST refuse to of true or false. If set to true, then the speaker MUST refuse to
establish a BGP session with a neighbor which does not announce the establish a BGP session with a neighbor which does not announce the
BGP Role capability in the OPEN message. If a speaker rejects a BGP Role capability in the OPEN message. If a speaker rejects a
connection, it MUST send a Connection Rejected Notification [RFC4486] connection, it MUST send a Connection Rejected Notification [RFC4486]
(Notification with error code 6, subcode 5). By default, strict mode (Notification with error code 6, subcode 5). By default, strict mode
SHOULD be set to false for backward compatibility with BGP speakers SHOULD be set to false for backward compatibility with BGP speakers
that do not yet support this mechanism. that do not yet support this mechanism.
6. BGP Only to Customer (OTC) Attribute 6. BGP Only to Customer (OTC) Attribute
Newly defined here, the Only to Customer (OTC) is an optional, 4 byte Newly defined here, the Only to Customer (OTC) is an optional, 4
long, transitive BGP Path attribute with the Type Code <TBD3>. The bytes long, transitive BGP Path attribute with the Type Code <TBD3>.
purpose of this attribute is to guarantee that once route is sent to The purpose of this attribute is to guarantee that once route is sent
customer, peer or RS-client it will go only to customers. The to customer, peer, or RS-client, it will subsequently go only to
semantics and usage of the OTC attribute are made clear by the customers. The value of OTC is an AS number determined by policy as
ingress and egress policies described below. described below. The semantics and usage of the OTC attribute are
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 OTC attribute:
1. If a route with OTC attribute is received from a Customer or RS- 1. If a route with OTC attribute is received from a Customer or RS-
client, then it is a route leak and MUST be rejected. client, then it is a route leak and MUST be rejected.
2. If a route with OTC attribute is received from a Peer and its 2. If a route with OTC attribute is received from a Peer and its
value is not equal to the neighbor's ASN, then it is a route leak value is not equal to the sending neighbor's Autonomous System
and MUST be rejected. (AS) number, then it is a route leak and MUST be rejected.
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 value equal
to the neighbor's AS number. to the sending neighbor's AS number.
The egress policy MUST be: The egress policy MUST be:
1. A route with the OTC attribute set MUST NOT be sent to providers, 1. A route with the OTC attribute set MUST NOT be sent to Providers,
peers, or RS(s). Peers, or RS(s).
2. If route is sent to a customer or peer, or an RS-Client and the 2. If route is sent to a Customer or Peer, or an RS-client (when the
OTC attribute is not present, then it MUST be added with value sender is an RS) and the OTC attribute is not present, then it
equal to AS number of the sender. MUST be added with value equal to AS number of the sender.
Once the OTC attribute has been set, it MUST be preserved unchanged. Once the OTC attribute has been set, it MUST be preserved unchanged.
7. Enforcement 7. Enforcement
Having the relationship unequivocally agreed between the two peers in Having the relationship unequivocally agreed between the two peers in
BGP OPEN is critical; BGP implementations MUST enforce the BGP OPEN is critical; BGP implementations MUST enforce the
relationship/role establishment rules (see Section 5) in order to relationship/role establishment rules (see Section 5) in order to
overcome operator policy configuration errors (if any). ameliorate operator policy configuration errors (if any).
Similarly, the application of that relationship on prefix propagation Similarly, the application of that relationship on prefix propagation
using OTC MUST BE enforced by the BGP implementations, and not using OTC MUST BE enforced by the BGP implementations, and not
exposed to user mis-configuration. exposed to user misconfiguration.
As opposed to communities, BGP attributes may not be generally As opposed to communities, BGP attributes may not be generally
modified or filtered by the operator; BGP router implementations modified or filtered by the operator; BGP router implementations
enforce such treatment. This is the desired property for the OTC enforce such treatment. This is the desired property for the OTC
marking. Hence, this document specifies OTC as an attribute. marking. Hence, this document specifies OTC as an attribute.
8. Additional Considerations 8. 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 are intentionally sending prefixes received from each other
skipping to change at page 7, line 37 skipping to change at page 7, line 37
complex peering roles can be segregated into different normal BGP complex peering roles can be segregated into different normal BGP
sessions, and BGP Roles MUST be used on each of the resulting normal sessions, and BGP Roles MUST be used on each of the resulting normal
(non-complex) BGP sessions. (non-complex) BGP sessions.
No Roles SHOULD be configured on a 'complex' BGP session (assuming it No Roles SHOULD be configured on a 'complex' BGP session (assuming it
is not segregated) and in that case, OTC MUST be set by configuration is not segregated) and in that case, OTC MUST be set by configuration
on a per-prefix basis. However, there are no built-in measures to on a per-prefix basis. However, there are no built-in measures to
check correctness of OTC use if BGP Role is not configured. check correctness of OTC use if BGP Role is not configured.
As the BGP Role reflects the peering relationship between neighbors, As the BGP Role reflects the peering relationship between neighbors,
it might have other uses beyond the route leaks solution discussed so it might have other uses beyond the route leak solution discussed so
far. For example, BGP Role might affect route priority, or be used far. For example, BGP Role might affect route priority, or be used
to distinguish borders of a network if a network consists of multiple 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 ASs. Though such uses may be worthwhile, they are not the goal of
this document. Note that such uses would require local policy this document. Note that such uses would require local policy
control. control.
As BGP role configuration results in automatic creation of inbound/ As BGP role configuration results in automatic creation of inbound/
outbound filters, existence of roles should be treated as existence outbound filters, existence of roles should be treated as existence
of Import and Export policy [RFC8212]. of Import and Export policy [RFC8212].
9. IANA Considerations 9. IANA Considerations
This document defines a new Capability Codes option [to be removed This document defines a new Capability Codes option [to be removed
upon publication: http://www.iana.org/assignments/capability-codes/ upon publication: https://www.iana.org/assignments/capability-codes/
capability-codes.xhtml] [RFC5492], named "BGP Role" with an assigned capability-codes.xhtml ] [RFC5492], named "BGP Role" with an assigned
value <TBD1>. The length of this capability is 1. value <TBD1>. The length of this capability is 1.
The BGP Role capability includes a Value field, for which IANA is The BGP Role capability includes a Value field, for which IANA is
requested to create and maintain a new sub-registry called "BGP Role requested to create and maintain a new sub-registry called "BGP Role
Value". Assignments consist of Value and corresponding Role name. Value". Assignments consist of Value and corresponding Role name.
Initially this registry is to be populated with the data in Table 1. Initially this registry is to be populated with the data in Table 1.
Future assignments may be made by a standard action procedure Future assignments may be made by a standard action procedure
[RFC5226]. [RFC5226].
This document defines a new subcode, "Role Mismatch" with an assigned This document defines a new subcode, "Role Mismatch" with an assigned
skipping to change at page 8, line 28 skipping to change at page 8, line 28
This document defines a new optional, transitive BGP Path Attributes This document defines a new optional, transitive BGP Path Attributes
option, named "Only to Customer (OTC)" with an assigned value <TBD3> option, named "Only to Customer (OTC)" with an assigned value <TBD3>
[To be removed upon publication: http://www.iana.org/assignments/bgp- [To be removed upon publication: http://www.iana.org/assignments/bgp-
parameters/bgp-parameters.xhtml#bgp-parameters-2] [RFC4271]. The parameters/bgp-parameters.xhtml#bgp-parameters-2] [RFC4271]. The
length of this attribute is four bytes. length of this attribute is four bytes.
10. Security Considerations 10. Security Considerations
This document proposes a mechanism for prevention of route leaks that This document proposes a mechanism for prevention of route leaks that
are the result of BGP policy mis-configuration. are the result of BGP policy misconfiguration.
A misconfiguration in OTC setup may affect prefix propagation. But A misconfiguration in OTC setup may affect prefix propagation. But
the automation that is provided by BGP roles should make such the automation that is provided by BGP roles should make such
misconfiguration unlikely. misconfiguration unlikely.
11. Acknowledgments 11. Acknowledgments
The authors wish to thank Douglas Montgomery, Brian Dickson, Andrei The authors wish to thank Douglas Montgomery, Brian Dickson, Andrei
Robachevsky, and Daniel Ginsburg for their contributions to a variant Robachevsky, and Daniel Ginsburg for their contributions to a variant
of this work. of this work.
 End of changes. 24 change blocks. 
48 lines changed or deleted 50 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/