draft-ietf-idr-aigp-18.txt   rfc7311.txt 
Network Working Group Pradosh Mohapatra Internet Engineering Task Force (IETF) P. Mohapatra
Internet Draft Cumulus Networks Request for Comments: 7311 Sproute Networks
Intended Status: Proposed Standard Category: Standards Track R. Fernando
Expires: October 28, 2014 Rex Fernando ISSN: 2070-1721 E. Rosen
Eric C. Rosen
Cisco Systems, Inc. Cisco Systems, Inc.
J. Uttaro
James Uttaro AT&T
ATT August 2014
April 28, 2014
The Accumulated IGP Metric Attribute for BGP The Accumulated IGP Metric Attribute for BGP
draft-ietf-idr-aigp-18.txt
Abstract Abstract
Routing protocols that have been designed to run within a single Routing protocols that have been designed to run within a single
administrative domain ("IGPs") generally do so by assigning a metric administrative domain (IGPs) generally do so by assigning a metric to
to each link, and then choosing as the installed path between two each link and then choosing, as the installed path between two nodes,
nodes the path for which the total distance (sum of the metric of the path for which the total distance (sum of the metric of each link
each link along the path) is minimized. BGP, designed to provide along the path) is minimized. BGP, designed to provide routing over
routing over a large number of independent administrative domains a large number of independent administrative domains (autonomous
("autonomous systems"), does not make its path selection decisions systems), does not make its path-selection decisions through the use
through the use of a metric. It is generally recognized that any of a metric. It is generally recognized that any attempt to do so
attempt to do so would incur significant scalability problems, as would incur significant scalability problems as well as inter-
well as inter-administration coordination problems. However, there administration coordination problems. However, there are deployments
are deployments in which a single administration runs several in which a single administration runs several contiguous BGP
contiguous BGP networks. In such cases, it can be desirable, within networks. In such cases, it can be desirable, within that single
that single administrative domain, for BGP to select paths based on a administrative domain, for BGP to select paths based on a metric,
metric, just as an IGP would do. The purpose of this document is to just as an IGP would do. The purpose of this document is to provide
provide a specification for doing so. a specification for doing so.
Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Status of This Memo
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months This is an Internet Standards Track document.
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at This document is a product of the Internet Engineering Task Force
http://www.ietf.org/ietf/1id-abstracts.txt. (IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 5741.
The list of Internet-Draft Shadow Directories can be accessed at Information about the current status of this document, any errata,
http://www.ietf.org/shadow.html. and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc7311.
Copyright and License Notice Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the Copyright (c) 2014 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
(http://trustee.ietf.org/license-info) in effect on the date of (http://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 Specification of requirements ......................... 3 1. Introduction ....................................................3
2 Introduction .......................................... 3 2. Specification of Requirements ...................................4
3 AIGP Attribute ........................................ 5 3. AIGP Attribute ..................................................4
3.1 Applicability Restrictions and Cautions ............... 6 3.1. Applicability Restrictions and Cautions ....................6
3.2 Handling a Malformed AIGP Attribute ................... 6 3.2. Handling a Malformed AIGP Attribute ........................6
3.3 Restrictions on Sending/Receiving ..................... 7 3.3. Restrictions on Sending/Receiving ..........................6
3.4 Creating and Modifying the AIGP Attribute ............. 7 3.4. Creating and Modifying the AIGP Attribute ..................7
3.4.1 Originating the AIGP Attribute ........................ 7 3.4.1. Originating the AIGP Attribute ......................7
3.4.2 Modifications by the Originator ....................... 9 3.4.2. Modifications by the Originator .....................8
3.4.3 Modifications by a Non-Originator ..................... 9 3.4.3. Modifications by a Non-Originator ...................8
4 Decision Process ...................................... 11 4. Decision Process ...............................................10
4.1 When a Route has an AIGP Attribute .................... 11 4.1. When a Route Has an AIGP Attribute ........................11
4.2 When the Route to the Next Hop has an AIGP attribute .. 12 4.2. When the Route to the Next Hop Has an AIGP Attribute ......11
5 Deployment Considerations ............................. 13 5. Deployment Considerations ......................................12
6 IANA Considerations ................................... 14 6. IANA Considerations ............................................13
7 Security Considerations ............................... 14 7. Security Considerations ........................................13
8 Acknowledgments ....................................... 14 8. Acknowledgments ................................................13
9 Authors' Addresses .................................... 14 9. References .....................................................14
10 Normative References .................................. 15 9.1. Normative Reference .......................................14
11 Informative References ................................ 15 9.2. Informative References ....................................14
1. Specification of requirements
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
2. Introduction 1. Introduction
There are many routing protocols that have been designed to run There are many routing protocols that have been designed to run
within a single administrative domain. These are known collectively within a single administrative domain. These are known collectively
as "Interior Gateway Protocols" (IGPs). Typically, each link is as "Interior Gateway Protocols" (IGPs). Typically, each link is
assigned a particular "metric" value. The path between two nodes can assigned a particular "metric" value. The path between two nodes can
then be assigned a "distance", which is the sum of the metrics of all then be assigned a "distance", which is the sum of the metrics of all
the links that belong to that path. An IGP selects the "shortest" the links that belong to that path. An IGP selects the "shortest"
(minimal distance) path between any two nodes, perhaps subject to the (minimal distance) path between any two nodes, perhaps subject to the
constraint that if the IGP provides multiple "areas", it may prefer constraint that if the IGP provides multiple "areas", it may prefer
the shortest path within an area to a path that traverses more than the shortest path within an area to a path that traverses more than
one area. Typically the administration of the network has some one area. Typically, the administration of the network has some
routing policy which can be approximated by selecting shortest paths routing policy that can be approximated by selecting shortest paths
in this way. in this way.
BGP, as distinguished from the IGPs, was designed to run over an BGP, as distinguished from the IGPs, was designed to run over an
arbitrarily large number of administrative domains ("autonomous arbitrarily large number of administrative domains ("autonomous
systems", or "ASes") with limited coordination among the various systems" or "ASes") with limited coordination among the various
administrations. BGP does not make its path selection decisions administrations. BGP does not make its path-selection decisions
based on a metric; there is no such thing as an "inter-AS metric". based on a metric; there is no such thing as an "inter-AS metric".
There are two fundamental reasons for this: There are two fundamental reasons for this:
- The distance between two nodes in a common administrative domain - The distance between two nodes in a common administrative domain
may change at any time due to events occurring in that domain. may change at any time due to events occurring in that domain.
These changes are not propagated around the Internet unless they These changes are not propagated around the Internet unless they
actually cause the border routers of the domain to select routes actually cause the border routers of the domain to select routes
with different BGP attributes for some set of address prefixes. with different BGP attributes for some set of address prefixes.
This accords with a fundamental principle of scaling, viz., that This accords with a fundamental principle of scaling, viz., that
changes with only local significance must not have global changes with only local significance must not have global effects.
effects. If local changes in distance were always propagated If local changes in distance were always propagated around the
around the Internet, this principle would be violated. Internet, this principle would be violated.
- A basic principle of inter-domain routing is that the different - A basic principle of inter-domain routing is that the different
administrative domains may have their own policies, which do not administrative domains may have their own policies, which do not
have to be revealed to other domains, and which certainly do not have to be revealed to other domains and which certainly do not
have to be agreed to by other domains. Yet the use of inter-AS have to be agreed to by other domains. Yet, the use of an inter-
metric in the Internet would have exactly these effects. AS metric in the Internet would have exactly these effects.
There are, however, deployments in which a single administration runs There are, however, deployments in which a single administration runs
a network which has been sub-divided into multiple, contiguous ASes, a network that has been sub-divided into multiple, contiguous ASes,
each running BGP. There are several reasons why a single each running BGP. There are several reasons why a single
administrative domain may be broken into several ASes (which, in this administrative domain may be broken into several ASes (which, in this
case, are not really "autonomous".) It may be that the existing IGPs case, are not really autonomous.) It may be that the existing IGPs
do not scale well in the particular environment; it may be that a do not scale well in the particular environment; it may be that a
more generalized topology is desired than could be obtained by use of more generalized topology is desired than could be obtained by use of
a single IGP domain; it may be that a more finely grained routing a single IGP domain; it may be that a more finely grained routing
policy is desired than can be supported by an IGP. In such policy is desired than can be supported by an IGP. In such
deployments, it can be useful to allow BGP to make its routing deployments, it can be useful to allow BGP to make its routing
decisions based on the IGP metric, so that BGP chooses the "shortest" decisions based on the IGP metric, so that BGP chooses the shortest
path between two nodes, even if the nodes are in two different ASes path between two nodes, even if the nodes are in two different ASes
within that same administrative domain. within that same administrative domain.
There are in fact some implementations that already do something like There are, in fact, some implementations that already do something
this, using BGP's MULTI_EXIT_DISC (MED) attribute to carry a value like this, using BGP's MULTI_EXIT_DISC (MED) attribute to carry a
based on IGP metrics. However, that doesn't really provide IGP-like value based on IGP metrics. However, that doesn't really provide
"shortest path" routing, as the BGP decision process gives priority IGP-like shortest path routing, as the BGP decision process gives
to other factors, such as the AS_PATH length. Also, the standard priority to other factors, such as the AS_PATH length. Also, the
procedures for use of the MED do not ensure that the IGP metric is standard procedures for use of the MED do not ensure that the IGP
properly accumulated so that it covers all the links along the path. metric is properly accumulated so that it covers all the links along
the path.
In this document, we define a new optional, non-transitive BGP In this document, we define a new optional, non-transitive BGP
attribute, called the "Accumulated IGP Metric Attribute", or "AIGP attribute, called the "Accumulated IGP Metric Attribute", or "AIGP
attribute", and specify the procedures for using it. attribute", and specify the procedures for using it.
The specified procedures prevent the AIGP attribute from "leaking The specified procedures prevent the AIGP attribute from "leaking
out" past an administrative domain boundary into the Internet. We out" past an administrative domain boundary into the Internet. We
will refer to the set of ASes in a common administrative domain as an will refer to the set of ASes in a common administrative domain as an
"AIGP Administrative Domain". "AIGP administrative domain".
The specified procedures also ensure that the value in the AIGP The specified procedures also ensure that the value in the AIGP
attribute has been accumulated all along the path from the attribute has been accumulated all along the path from the
destination, i.e., that the AIGP attribute does not appear when there destination, i.e., that the AIGP attribute does not appear when there
are "gaps" along the path where the IGP metric is unknown. are "gaps" along the path where the IGP metric is unknown.
3. AIGP Attribute 2. Specification of Requirements
The AIGP Attribute is an optional non-transitive BGP Path Attribute. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
The attribute type code for the AIGP Attribute is 26. "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
The value field of the AIGP Attribute is defined here to be a set of 3. AIGP Attribute
elements encoded as "Type/Length/Value" (i.e., a set of "TLVs").
Each such TLV is encoded as shown in Figure 1.
0 1 2 3 The AIGP attribute is an optional, non-transitive BGP path attribute.
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 The attribute type code for the AIGP attribute is 26.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
~ ~
| Value |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+..........................
AIGP TLV The value field of the AIGP attribute is defined here to be a set of
Figure 1 elements encoded as "Type/Length/Value" (i.e., a set of TLVs). Each
such TLV is encoded as shown in Figure 1.
- Type: A single octet encoding the TLV Type. Only type 1, "AIGP 0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type | Length | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
~ ~
| Value |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+..........................
Figure 1: AIGP TLV
- Type: A single octet encoding the TLV Type. Only type 1, "AIGP
TLV", is defined in this document. Use of other TLV types is TLV", is defined in this document. Use of other TLV types is
outside the scope of this document. outside the scope of this document.
- Length: Two octets encoding the length in octets of the TLV, - Length: Two octets encoding the length in octets of the TLV,
including the type and length fields. The length is encoded as an including the Type and Length fields. The length is encoded as an
unsigned binary integer. (Note that the minimum length is 3, unsigned binary integer. (Note that the minimum length is 3,
indicating that no value field is present.) indicating that no Value field is present.)
- A value field containing zero or more octets. - Value: A field containing zero or more octets.
This document defines only a single such TLV, the "AIGP TLV". The This document defines only a single such TLV, the "AIGP TLV". The
AIGP TLV is encoded as follows: AIGP TLV is encoded as follows:
- Type: 1 - Type: 1
- Length: 11 - Length: 11
- Accumulated IGP Metric. - Value: Accumulated IGP Metric.
The value field of the AIGP TLV is always 8 octets long, and its The value field of the AIGP TLV is always 8 octets long, and its
value is interpreted as an unsigned 64-bit integer. IGP metrics value is interpreted as an unsigned 64-bit integer. IGP metrics
are frequently expressed as 4-octet values. By using an 8-octet are frequently expressed as 4-octet values. By using an 8-octet
field, we ensure that the AIGP attribute can be used to hold the field, we ensure that the AIGP attribute can be used to hold the
sum of a arbitrary number of 4-octet values. sum of an arbitrary number of 4-octet values.
When an AIGP attribute is created, it SHOULD contain no more than one When an AIGP attribute is created, it SHOULD contain no more than one
AIGP TLV. However, if it contains more than one AIGP TLV, only the AIGP TLV. However, if it contains more than one AIGP TLV, only the
first one is used as described in Section 3.4 and Section 4. In the first one is used as described in Sections 3.4 and 4. In the
remainder of this document, we will use the term "value of the AIGP remainder of this document, we will use the term "value of the AIGP
TLV" to mean the value of the first AIGP TLV in the AIGP attribute. TLV" to mean the value of the first AIGP TLV in the AIGP attribute.
Any other AIGP TLVs in the AIGP attribute MUST be passed along Any other AIGP TLVs in the AIGP attribute MUST be passed along
unchanged if the AIGP attribute is passed along. unchanged if the AIGP attribute is passed along.
3.1. Applicability Restrictions and Cautions 3.1. Applicability Restrictions and Cautions
This document only considers the use of the AIGP attribute in This document only considers the use of the AIGP attribute in
networks where each router uses tunneling of some sort to deliver a networks where each router uses tunneling of some sort to deliver a
packet to its BGP next hop. Use of the AIGP attribute in other packet to its BGP next hop. Use of the AIGP attribute in other
scenarios is outside the scope of this document. scenarios is outside the scope of this document.
If a Route Reflector supports the AIGP attribute, but some of its If a Route Reflector supports the AIGP attribute but some of its
clients do not, then the routing choices that result may not all clients do not, then the routing choices that result may not all
reflect the intended routing policy. reflect the intended routing policy.
3.2. Handling a Malformed AIGP Attribute 3.2. Handling a Malformed AIGP Attribute
When receiving a BGP Update message containing a malformed AIGP When receiving a BGP Update message containing a malformed AIGP
attribute, the attribute MUST be treated exactly as if it were an attribute, the attribute MUST be treated exactly as if it were an
unrecognized non-transitive attribute. That is, "it MUST be quietly unrecognized non-transitive attribute. That is, it "MUST be quietly
ignored and not passed along to other BGP peers". This is equivalent ignored and not passed along to other BGP peers" (see [BGP], Section
to the "attribute discard" action specified in [BGP-ERROR]. 5). This is equivalent to the "attribute discard" action specified
in [BGP-ERROR].
Note that an AIGP attribute MUST NOT be considered to be malformed Note that an AIGP attribute MUST NOT be considered to be malformed
because it contains more than one TLV of a given type, or because it because it contains more than one TLV of a given type or because it
contains TLVs of unknown types. contains TLVs of unknown types.
If a BGP Path Attribute is received that has the AIGP attribute If a BGP path attribute is received that has the AIGP attribute
codepoint, but also has the transitive bit set, the attribute MUST be codepoint but also has the transitive bit set, the attribute MUST be
considered to be a malformed AIGP attribute, and MUST be discarded as considered to be a malformed AIGP attribute and MUST be discarded as
specified in this section. specified in this section.
If an AIGP attribute is received, and its first AIGP TLV contains the If an AIGP attribute is received and its first AIGP TLV contains the
maximum value 0xffffffffffffffff, the attribute SHOULD be considered maximum value 0xffffffffffffffff, the attribute SHOULD be considered
to be malformed, and discarded as specified in this section. (Since to be malformed and SHOULD be discarded as specified in this section.
the TLV value cannot be increased any further, it is not useful for (Since the TLV value cannot be increased any further, it is not
metric-based path selection.) useful for metric-based path selection.)
3.3. Restrictions on Sending/Receiving 3.3. Restrictions on Sending/Receiving
An implementation that supports the AIGP attribute MUST support a An implementation that supports the AIGP attribute MUST support a
per-session configuration item, AIGP_SESSION, that indicates whether per-session configuration item, AIGP_SESSION, that indicates whether
the attribute is enabled or disabled for use on that session. the attribute is enabled or disabled for use on that session.
- The default value of AIGP_SESSION, for EBGP sessions, MUST be - For Internal BGP (IBGP) sessions, and for External BGP (EBGP)
"disabled". sessions between members of the same BGP Confederation
[BGP-CONFED], the default value of AIGP_SESSION SHOULD be
"enabled".
- The default value of AIGP_SESSION, for IBGP and confederation- - For all other External BGP (EBGP) sessions, the default value of
EBGP [BGP-CONFED] sessions, SHOULD be "enabled." AIGP_SESSION MUST be "disabled".
The AIGP attribute MUST NOT be sent on any BGP session for which The AIGP attribute MUST NOT be sent on any BGP session for which
AIGP_SESSION is disabled. AIGP_SESSION is disabled.
If an AIGP attribute is received on a BGP session for which If an AIGP attribute is received on a BGP session for which
AIGP_SESSION is disabled, the attribute MUST be treated exactly as if AIGP_SESSION is disabled, the attribute MUST be treated exactly as if
it were an unrecognized non-transitive attribute. That is, "it MUST it were an unrecognized non-transitive attribute. That is, it "MUST
be quietly ignored and not passed along to other BGP peers" (see be quietly ignored and not passed along to other BGP peers" (see
[BGP], section 5). However, the fact that the attribute was received [BGP], Section 5). However, the fact that the attribute was received
SHOULD be logged (in a rate-limited manner). SHOULD be logged (in a rate-limited manner).
3.4. Creating and Modifying the AIGP Attribute 3.4. Creating and Modifying the AIGP Attribute
3.4.1. Originating the AIGP Attribute 3.4.1. Originating the AIGP Attribute
An implementation that supports the AIGP attribute MUST support a An implementation that supports the AIGP attribute MUST support a
configuration item, AIGP_ORIGINATE, that enables or disables its configuration item, AIGP_ORIGINATE, that enables or disables its
creation and attachment to routes. The default value of creation and attachment to routes. The default value of
AIGP_ORIGINATE MUST be "disabled". AIGP_ORIGINATE MUST be "disabled".
A BGP speaker MUST NOT add the AIGP attribute to any route whose path A BGP speaker MUST NOT add the AIGP attribute to any route whose path
leads outside the "AIGP administrative domain" to which the BGP leads outside the AIGP administrative domain to which the BGP speaker
speaker belongs. When the AIGP attribute is used, changes in IGP belongs. When the AIGP attribute is used, changes in IGP routing
routing will directly impact BGP routing. Attaching the AIGP will directly impact BGP routing. Attaching the AIGP attribute to
attribute to "customer routes", "Internet routes", or other routes customer routes, Internet routes, or other routes whose paths lead
whose paths lead outside the infrastructure of a particular AIGP outside the infrastructure of a particular AIGP administrative domain
administrative domain, could result in BGP scaling and/or thrashing could result in BGP scaling and/or thrashing problems.
problems.
The AIGP attribute may be added only to routes that satisfy one of The AIGP attribute may be added only to routes that satisfy one of
the following conditions: the following conditions:
- The route is a static route, not leading outside the AIGP - The route is a static route, not leading outside the AIGP
administrative domain, that is being redistributed into BGP; administrative domain, that is being redistributed into BGP;
- The route is an IGP route that is being redistributed into BGP; - The route is an IGP route that is being redistributed into BGP;
- The route is an IBGP-learned route whose AS_PATH attribute is - The route is an IBGP-learned route whose AS_PATH attribute is
empty; empty; or
- The route is an EBGP-learned route whose AS_PATH contains only - The route is an EBGP-learned route whose AS_PATH contains only
ASes that are in the same AIGP Administrative Domain as the BGP ASes that are in the same AIGP administrative domain as the BGP
speaker. speaker.
A BGP speaker R MUST NOT add the AIGP attribute to any route for A BGP speaker R MUST NOT add the AIGP attribute to any route for
which R does not set itself as the next hop. which R does not set itself as the next hop.
It SHOULD be possible to set AIGP_ORIGINATE to "enabled for the It SHOULD be possible to set AIGP_ORIGINATE to "enabled for the
routes of a particular IGP that are redistributed into BGP" (where "a routes of a particular IGP that are redistributed into BGP" (where "a
particular IGP" might be "OSPF" or "ISIS"). Other policies particular IGP" might be OSPF or IS-IS). Other policies determining
determining when and whether to originate an AIGP attribute are also when and whether to originate an AIGP attribute are also possible,
possible, depending on the needs of a particular deployment scenario. depending on the needs of a particular deployment scenario.
When originating an AIGP attribute for a BGP route to address prefix When originating an AIGP attribute for a BGP route to address prefix
P, the value of the AIGP TLV is set according to policy. There are a P, the value of the AIGP TLV is set according to policy. There are a
number of useful policies, some of which are in the following list: number of useful policies, some of which are in the following list:
- When a BGP speaker R is redistributing into BGP an IGP route to - When a BGP speaker R is redistributing into BGP an IGP route to
address prefix P, the IGP will have computed a "distance" from R address prefix P, the IGP will have computed a distance from R to
to P. This distance MAY be assigned as the value of the AIGP P. This distance MAY be assigned as the value of the AIGP TLV.
TLV.
- A BGP speaker R may be redistributing into BGP a static route to - A BGP speaker R may be redistributing into BGP a static route to
address prefix P, for which a "distance" from R to P has been address prefix P, for which a distance from R to P has been
configured. This distance MAY be assigned as the value of the configured. This distance MAY be assigned as the value of the
AIGP TLV. AIGP TLV.
- A BGP speaker R may have received and installed a BGP-learned - A BGP speaker R may have received and installed a BGP-learned
route to prefix P, with next hop N. Or it may be redistributing route to prefix P, with next hop N. Or it may be redistributing a
a static route to P, with next hop N. Then: static route to P, with next hop N. Then:
* If R has an IGP route to N, the IGP-computed distance from R * If R has an IGP route to N, the IGP-computed distance from R to
to N MAY be used as the value of the AIGP TLV of the route to N MAY be used as the value of the AIGP TLV of the route to P.
P.
* If R has a BGP route to N, and an AIGP TLV attribute value * If R has a BGP route to N, and an AIGP TLV attribute value has
has been computed for that route (see section 3.4.3), that been computed for that route (see Section 3.4.3), that value
value MAY be used as the AIGP TLV value of the route to P. MAY be used as the AIGP TLV value of the route to P.
3.4.2. Modifications by the Originator 3.4.2. Modifications by the Originator
If BGP speaker R is the originator of the AIGP attribute of prefix P, If BGP speaker R is the originator of the AIGP attribute of prefix P,
and at some point the "distance" from R to P changes, R SHOULD issue and the distance from R to P changes at some point, R SHOULD issue a
a new BGP update containing the new value of the AIGP TLV of the AIGP new BGP update containing the new value of the AIGP TLV of the AIGP
attribute. (Here we use the term "distance" to refer to whatever attribute. (Here we use the term "distance" to refer to whatever
value the originator assigns to the AIGP TLV, however it is computed; value the originator assigns to the AIGP TLV, however it is computed;
see section 3.4.1.) However, if the difference between the new see Section 3.4.1.) However, if the difference between the new
distance and the distance advertised in the AIGP TLV is less than a distance and the distance advertised in the AIGP TLV is less than a
configurable threshold, the update MAY be suppressed. configurable threshold, the update MAY be suppressed.
3.4.3. Modifications by a Non-Originator 3.4.3. Modifications by a Non-Originator
Suppose a BGP speaker R1 receives a route with an AIGP attribute Suppose a BGP speaker R1 receives a route with an AIGP attribute
whose value is A, and a Next Hop whose value is R2. Suppose also whose value is A and with a next hop whose value is R2. Suppose also
that R1 is about to redistribute that route on a BGP session that is that R1 is about to redistribute that route on a BGP session that is
enabled for sending/receiving the attribute. enabled for sending/receiving the attribute.
If R1 does not change the Next Hop of the route, then R1 MUST NOT If R1 does not change the next hop of the route, then R1 MUST NOT
change the AIGP attribute value of the route. change the AIGP attribute value of the route.
In all the computations discussed in this section, the AIGP value In all the computations discussed in this section, the AIGP value
MUST be capped at its maximum unsigned value 0xffffffffffffffff. MUST be capped at its maximum unsigned value 0xffffffffffffffff.
Increasing the AIGP value MUST NOT cause the value to wrap around. Increasing the AIGP value MUST NOT cause the value to wrap around.
Suppose R1 changes the Next Hop of the route from R2 to R1. If R1's Suppose R1 changes the next hop of the route from R2 to R1. If R1's
route to R2 is either (a) an IGP-learned route or (b) a static route route to R2 is either (a) an IGP-learned route or (b) a static route
that does not require recursive next hop resolution, then R1 MUST that does not require recursive next hop resolution, then R1 MUST
increase the value of the AIGP TLV by adding to A the distance from increase the value of the AIGP TLV by adding to A the distance from
R1 to R2. This distance is either the IGP-computed distance from R1 R1 to R2. This distance is either the IGP-computed distance from R1
to R2, or some value determined by policy. However, A MUST be to R2 or some value determined by policy. However, A MUST be
increased by a non-zero amount. increased by a non-zero amount.
It is possible that R1 and R2 above are EBGP neighbors, and that It is possible that R1 and R2 above are EBGP neighbors and that there
there is a direct link between them on which no IGP is running. Then is a direct link between them on which no IGP is running. Then, when
when R1 changes the next hop of a route from R2 to R1, the AIGP TLV R1 changes the next hop of a route from R2 to R1, the AIGP TLV value
value MUST be increased by a non-zero amount. The amount of the MUST be increased by a non-zero amount. The amount of the increase
increase SHOULD be such that it is properly comparable to the IGP SHOULD be such that it is properly comparable to the IGP metrics.
metrics. E.g., if the IGP metric is a function of latency, then the For example, if the IGP metric is a function of latency, then the
amount of the increase should be a function of the latency from R1 to amount of the increase should be a function of the latency from R1 to
R2. R2.
Suppose R1 changes the Next Hop of the route from R2 to R1, and R1's Suppose R1 changes the next hop of the route from R2 to R1 and R1's
route to R2 is either (a) a BGP-learned route or (b) a static route route to R2 is either (a) a BGP-learned route or (b) a static route
that requires recursive next hop resolution. Then the AIGP TLV value that requires recursive next-hop resolution. Then, the AIGP TLV
needs to be increased in several steps, according to the following value needs to be increased in several steps, according to the
procedure. (Note that this procedure is ONLY used when recursive following procedure. (Note that this procedure is ONLY used when
next hop resolution is needed.) recursive next-hop resolution is needed.)
1. Let Xattr be the new AIGP TLV value. 1. Let Xattr be the new AIGP TLV value.
2. Initialize Xattr to A. 2. Initialize Xattr to A.
3. Set the XNH to R2. 3. Set XNH to R2.
4. Find the route to XNH. 4. Find the route to XNH.
5. If the route to XNH does not require recursive next hop 5. If the route to XNH does not require recursive next-hop
resolution, get the distance D from R1 to XNH. (Note that this resolution, get the distance D from R1 to XNH. (Note that this
condition cannot be satisfied the first time through this condition cannot be satisfied the first time through this
procedure.) If D is above a configurable threshold, set the procedure.) If D is above a configurable threshold, set the AIGP
AIGP TLV value to Xattr+D. If D is below a configurable TLV value to Xattr+D. If D is below a configurable threshold,
threshold, set the AIGP TLV value to Xattr. In either case, set the AIGP TLV value to Xattr. In either case, exit this
exit this procedure. procedure.
6. If the route to XNH is a BGP-learned route that does NOT have 6. If the route to XNH is a BGP-learned route that does NOT have an
an AIGP attribute, then exit this procedure and do not pass on AIGP attribute, then exit this procedure and do not pass on any
any AIGP attribute. If the route has an AIGP attribute without AIGP attribute. If the route has an AIGP attribute without an
an AIGP TLV, then the AIGP attribute MAY be passed along AIGP TLV, then the AIGP attribute MAY be passed along unchanged.
unchanged.
7. If the route to XNH is a BGP-learned route that has an AIGP TLV 7. If the route to XNH is a BGP-learned route that has an AIGP TLV
value of Y, then set Xattr=Xattr+Y and set XNH to the next hop value of Y, then set Xattr to Xattr+Y and set XNH to the next hop
of this route. (The intention here is that Y is the AIGP TLV of this route. (The intention here is that Y is the AIGP TLV
value of the route as it was received by R1, without having value of the route as it was received by R1, without having been
been modified by R1.) modified by R1.)
8. Go to step 4. 8. Go to step 4.
The AIGP TLV value of a given route depends on (a) the AIGP TLV The AIGP TLV value of a given route depends on (a) the AIGP TLV
values of all the next hops that are recursively resolved during this values of all the next hops that are recursively resolved during this
procedure, and (b) the IGP distance to any next hop that is not procedure, and (b) the IGP distance to any next hop that is not
recursively resolved. Any change due to (a) in any of these values recursively resolved. Any change due to (a) in any of these values
MUST trigger a new AIGP computation for that route. Whether a change MUST trigger a new AIGP computation for that route. Whether a change
due to (b) triggers a new AIGP computation depends upon whether the due to (b) triggers a new AIGP computation depends upon whether the
change in IGP distance exceeds a configurable threshold. change in IGP distance exceeds a configurable threshold.
If the AIGP attribute is carried across several ASes, each with its If the AIGP attribute is carried across several ASes, each with its
own IGP domain, it is clear that these procedures are unlikely to own IGP domain, it is clear that these procedures are unlikely to
give a sensible result if the IGPs are different (e.g., some OSPF and give a sensible result if the IGPs are different (e.g., some OSPF and
some IS-IS), or if the meaning of the metrics is different in the some IS-IS) or if the meaning of the metrics is different in the
different IGPs (e.g., if the metric represents bandwidth in some IGP different IGPs (e.g., if the metric represents bandwidth in some IGP
domains but represents latency in others). These procedures also are domains but represents latency in others). These procedures also are
unlikely to give a sensible result if the metric assigned to inter-AS unlikely to give a sensible result if the metric assigned to inter-AS
BGP links (on which no IGP is running) or to static routes is not BGP links (on which no IGP is running) or to static routes is not
comparable to the IGP metrics. All such cases are outside the scope comparable to the IGP metrics. All such cases are outside the scope
of the current document. of the current document.
4. Decision Process 4. Decision Process
Support for the AIGP attribute involves several modifications to the Support for the AIGP attribute involves several modifications to the
tie breaking procedures of the BGP "phase 2" decision described in tie-breaking procedures of the BGP "phase 2" decision described in
[BGP], section 9.1.2.2. These modifications are described below in [BGP], Section 9.1.2.2. These modifications are described in
sections 4.1 and 4.2. Sections 4.1 and 4.2.
In some cases, the BGP decision process may install a route without In some cases, the BGP decision process may install a route without
executing any tie breaking procedures. This may happen, e.g., if executing any tie-breaking procedures. This may happen, e.g., if
only one route to a given prefix has the highest degree of preference only one route to a given prefix has the highest degree of preference
(as defined in [BGP] section 9.1.1). In this case, the AIGP (as defined in [BGP], Section 9.1.1). In this case, the AIGP
attribute is not considered. attribute is not considered.
In other cases, some routes may be eliminated before the tie breaking In other cases, some routes may be eliminated before the tie-breaking
procedures are invoked, e.g., routes with AS-PATH attributes procedures are invoked, e.g., routes with AS-PATH attributes
indicating a loop, or routes with unresolvable next hops. In these indicating a loop or routes with unresolvable next hops. In these
cases, the AIGP attributes of the eliminated routes are not cases, the AIGP attributes of the eliminated routes are not
considered. considered.
4.1. When a Route has an AIGP Attribute 4.1. When a Route Has an AIGP Attribute
Assuming that the BGP decision process invokes the tie breaking Assuming that the BGP decision process invokes the tie-breaking
procedures, the procedures in this section MUST be executed BEFORE procedures, the procedures in this section MUST be executed BEFORE
any of the tie breaking procedures described in [BGP] section 9.1.2.2 any of the tie-breaking procedures described in [BGP], Section
are executed. 9.1.2.2 are executed.
If any routes have an AIGP attribute containing an AIGP TLV, remove If any routes have an AIGP attribute containing an AIGP TLV, remove
from consideration all routes that do not have an AIGP attribute from consideration all routes that do not have an AIGP attribute
containing an AIGP TLV. containing an AIGP TLV.
If router R is considering route T, where T has an AIGP attribute If router R is considering route T, where T has an AIGP attribute
with an AIGP TLV, with an AIGP TLV,
- then R must compute the value A, defined as follows: set A to the - then R must compute the value A, defined as follows: set A to the
sum of (a) T's AIGP TLV value and (b) the IGP distance from R to sum of (a) T's AIGP TLV value and (b) the IGP distance from R to
T's next hop. T's next hop.
- remove from consideration all routes that are not tied for the - remove from consideration all routes that are not tied for the
lowest value of A. lowest value of A.
4.2. When the Route to the Next Hop has an AIGP attribute 4.2. When the Route to the Next Hop Has an AIGP Attribute
Suppose that a given router R1 is comparing two BGP-learned routes, Suppose that a given router R1 is comparing two BGP-learned routes,
such that either: such that either:
- the two routes have equal AIGP TLV values, or else - the two routes have equal AIGP TLV values, or else
- neither of the two routes has an AIGP attribute containing an - neither of the two routes has an AIGP attribute containing an AIGP
AIGP TLV. TLV.
The BGP decision process as specified in [BGP] makes use, in its tie The BGP decision process as specified in [BGP] makes use, in its tie-
breaker procedures, of "interior cost", defined as follows: breaking procedures, of "interior cost", defined as follows:
"interior cost of a route is determined by calculating the metric interior cost of a route is determined by calculating the metric
to the NEXT_HOP for the route using the Routing Table." to the NEXT_HOP for the route using the Routing Table.
This document replaces the "interior cost" tie breaker of [BGP] with This document replaces the "interior cost" tie breaker of [BGP] with
a tie breaker based on the "AIGP-enhanced interior cost". Suppose a tie breaker based on the "AIGP-enhanced interior cost". Suppose
route T has a next hop of N. The "AIGP-enhanced interior cost" from route T has a next hop of N. The "AIGP-enhanced interior cost" from
node R1 to node N is defined as follows: node R1 to node N is defined as follows:
- Let R2 be the BGP next hop of the route to N after all recursive - Let R2 be the BGP next hop of the route to N after all recursive
resolution of the next hop is done. Let m be the IGP distance resolution of the next hop is done. Let m be the IGP distance (or
(or in the case of a static route, the configured distance) from in the case of a static route, the configured distance) from R1 to
R1 to R2. R2.
- If the installed route to N has an AIGP attribute with an AIGP - If the installed route to N has an AIGP attribute with an AIGP
TLV, set A to its AIGP TLV value, computed according to the TLV, set A to its AIGP TLV value, computed according to the
procedure of section 3.4.3. procedure in Section 3.4.3.
- If the installed route to N does not have an AIGP attribute with - If the installed route to N does not have an AIGP attribute with
an AIGP TLV, set A to 0. an AIGP TLV, set A to 0.
- The "AIGP-enhanced interior cost" of route T is the quantity A+m. - The "AIGP-enhanced interior cost" of route T is the quantity A+m.
The "interior cost" tie breaker of [BGP] is then applied, but using The "interior cost" tie breaker of [BGP] is then applied, using the
the "AIGP-enhanced interior cost" instead of the "interior cost" as "AIGP-enhanced interior cost" instead of the "interior cost" as
defined in [BGP]. defined in [BGP].
5. Deployment Considerations 5. Deployment Considerations
- Using the AIGP attribute to achieve a desired routing policy will - Using the AIGP attribute to achieve a desired routing policy will
be more effective if each BGP speaker can use it to choose from be more effective if each BGP speaker can use it to choose from
among multiple routes. Thus is it highly recommended that the among multiple routes. Thus, it is highly recommended that the
procedures of [BESTEXT] and [ADD-PATH] be used in conjunction procedures of [BESTEXT] and [ADD-PATH] be used in conjunction with
with the AIGP Attribute. the AIGP attribute.
- If a Route Reflector does not pass all paths to its clients, then - If a Route Reflector does not pass all paths to its clients, then
it will tend to pass the paths for which the IGP distance from it will tend to pass the paths for which the IGP distance from the
the Route Reflector itself to the next hop is smallest. This may Route Reflector itself to the next hop is smallest. This may
result in a non-optimal choice by the clients. result in a non-optimal choice by the clients.
- When the procedures of this document are deployed, it must be - When the procedures of this document are deployed, it must be
understood that frequent changes of the IGP distance towards a understood that frequent changes of the IGP distance towards a
certain prefix may result in equally frequent transmission of BGP certain prefix may result in equally frequent transmission of BGP
updates about that prefix. updates about that prefix.
- In an IGP deployment, there are certain situations in which a - In an IGP deployment, there are certain situations in which a
network link may be temporarily assigned a metric whose value is network link may be temporarily assigned a metric whose value is
the maximum metric value (or close to the maximum) for that IGP. the maximum metric value (or close to the maximum) for that IGP.
This is known as "costing out" the link. A link may be "costed This is known as "costing out" the link. A link may be "costed
out" to deflect traffic from the link before the link is actually out" to deflect traffic from the link before the link is actually
brought down, or to discourage traffic from using a link until brought down or to discourage traffic from using a link until all
all the necessary state for that link has been set up (e.g., the necessary state for that link has been set up (e.g.,
[LDP-IGP-SYNC]). This assumes of course that a path containing a [LDP-IGP-SYNC]). This assumes, of course, that a path containing
"costed out" link will have a total distance that is larger than a "costed out" link will have a total distance that is larger than
any alternate path within the same IGP area; in that case the any alternate path within the same IGP area; in that case, the
normal IGP decision process will choose the path that does not normal IGP decision process will choose the path that does not
contain the costed out link. contain the "costed out" link.
Costing out a link will have the same effect on BGP routes that Costing out a link will have the same effect on BGP routes that
carry the AIGP attribute. The value of the AIGP TLV will be carry the AIGP attribute. The value of the AIGP TLV will be
larger for a route (to a given prefix) that contains a "costed larger for a route (to a given prefix) that contains a "costed
out" link than for a route (to the same prefix) that does not. out" link than for a route (to the same prefix) that does not. It
It must be understood though that a route that carries an AIGP must be understood, though, that a route that carries an AIGP
attribute will be preferred to a route that does not, no matter attribute will be preferred to a route that does not, no matter
what the value of the AIGP TLV is. This is similar to the what the value of the AIGP TLV is. This is similar to the
behavior in, e.g., an OSPF area, where an intra-area route is behavior in, e.g., an OSPF area, where an intra-area route is
preferred to an inter-area or external route, even if the intra- preferred to an inter-area or external route, even if the intra-
area route's distance is large. area route's distance is large.
6. IANA Considerations 6. IANA Considerations
IANA has assigned the codepoint 26 in the "BGP Path Attributes" IANA has assigned the codepoint 26 in the "BGP Path Attributes"
registry to the AIGP attribute. registry to the AIGP attribute.
IANA shall create a registry for "BGP AIGP Attribute Types". The IANA has created a registry for "BGP AIGP Attribute Types". The Type
type field consists of a single octet, with possible values from 1 to field consists of a single octet, with possible values from 1 to 255.
255. (The value 0 is "reserved".) The allocation policy for this (The value 0 is "Reserved".) The registration procedure for this
field is to be "Standards Action". Type 1 should be defined as registry is "Standards Action". Type 1 is defined as "AIGP" and
"AIGP", and should refer to this document. refers to this document.
7. Security Considerations 7. Security Considerations
The spurious introduction, though error or malfeasance, of an AIGP The spurious introduction, through error or malfeasance, of an AIGP
attribute, could result in the selection of paths other than those attribute could result in the selection of paths other than those
desired. desired.
Improper configuration on both ends of an EBGP connection could Improper configuration on both ends of an EBGP connection could
result in an AIGP attribute being passed from one service provider to result in an AIGP attribute being passed from one service provider to
another. This would likely result in an unsound selection of paths. another. This would likely result in an unsound selection of paths.
8. Acknowledgments 8. Acknowledgments
The authors would like to thank Waqas Alam, Rajiv Asati, Alia Atlas, The authors would like to thank Waqas Alam, Rajiv Asati, Alia Atlas,
Ron Bonica, Bruno Decraene, Brian Dickson, Clarence Filsfils, Anoop Ron Bonica, Bruno Decraene, Brian Dickson, Clarence Filsfils, Sue
Kapoor, Pratima Kini, Sue Hares, Thomas Mangin, Robert Raszuk, Yakov Hares, Anoop Kapoor, Pratima Kini, Thomas Mangin, Robert Raszuk,
Rekhter, Eric Rosenberg, Samir Saad, John Scudder, Shyam Sethuram, Yakov Rekhter, Eric Rosenberg, Samir Saad, John Scudder, Shyam
and Ilya Varlashkin for their input. Sethuram, and Ilya Varlashkin for their input.
9. Authors' Addresses 9. References
9.1. Normative Reference
[BGP] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A
Border Gateway Protocol 4 (BGP-4)", RFC 4271, January
2006.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
9.2. Informative References
[ADD-PATH] Walton, D., Retana, A., Chen, E., and J. Scudder,
"Advertisement of Multiple Paths in BGP", Work in
Progress, October 2013.
[BESTEXT] Marques, P., Fernando, R., Mohapatra, P., and H.
Gredler, "Advertisement of the best external route in
BGP", Work in Progress, January 2012.
[BGP-CONFED] Traina, P., McPherson, D., and J. Scudder, "Autonomous
System Confederations for BGP", RFC 5065, August 2007.
[BGP-ERROR] Chen, E., Scudder, J., Mohapatra, P., and K. Patel,
"Revised Error Handling for BGP UPDATE Messages", Work
in Progress, June 2014.
[LDP-IGP-SYNC] Jork, M., Atlas, A., and L. Fang, "LDP IGP
Synchronization", RFC 5443, March 2009.
Authors' Addresses
Pradosh Mohapatra
Sproute Networks
EMail: mpradosh@yahoo.com
Rex Fernando Rex Fernando
Cisco Systems, Inc. Cisco Systems, Inc.
170 Tasman Drive 170 Tasman Drive
San Jose, CA 95134 San Jose, CA 95134
Email: rex@cisco.com US
EMail: rex@cisco.com
Pradosh Mohapatra
Cumulus Networks
Email: pmohapat@cumulusnetworks.com
Eric C. Rosen Eric C. Rosen
Cisco Systems, Inc. Cisco Systems, Inc.
1414 Massachusetts Avenue 1414 Massachusetts Avenue
Boxborough, MA, 01719 Boxborough, MA, 01719
Email: erosen@cisco.com US
EMail: erosen@cisco.com
James Uttaro James Uttaro
AT&T AT&T
200 S. Laurel Avenue 200 S. Laurel Avenue
Middletown, NJ 07748 Middletown, NJ 07748
Email: uttaro@att.com US
10. Normative References
[BGP], "A Border Gateway Protocol 4 (BGP-4)", Y. Rekhter, T. Li, S.
Hares, RFC 4271, January 2006.
11. Informative References
[ADD-PATH] "Advertisement of Multiple Paths in BGP", D. Walton, A.
Retana, E. Chen, J. Scudder, draft-ietf-idr-add-paths-09.txt, October
2013.
[BESTEXT], "Advertisement of the Best External Route in BGP", P.
Marques, R. Fernando, E. Chen, P. Mohapatra, H. Gredler, draft-ietf-
idr-best-external-05.txt, January 2012.
[BGP-CONFED] "Autonomous System Confederations for BGP", P. Traina,
D. McPherson, J. Scudder, RFC 5065, August 2007
[BGP-ERROR] "Revised Error Handling for BGP UPDATE Messages", J.
Scudder, E. Chen, P. Mohapatra, K. Patel, draft-ietf-idr-error-
handling-06.txt, February 2014.
[LDP-IGP-SYNC] "LDP IGP Synchronization", M. Jork, A. Atlas, L. Fang,
RFC 5443, March 2009.
[RFC2119] "Key words for use in RFCs to Indicate Requirement EMail: uttaro@att.com
Levels.", S. Bradner, March 1997.
 End of changes. 124 change blocks. 
358 lines changed or deleted 357 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/