draft-ietf-idr-aigp-10.txt | draft-ietf-idr-aigp-11.txt | |||
---|---|---|---|---|
Network Working Group Pradosh Mohapatra | Network Working Group Pradosh Mohapatra | |||
Internet Draft Cumulus Networks | Internet Draft Cumulus Networks | |||
Intended Status: Proposed Standard | Intended Status: Proposed Standard | |||
Expires: November 23, 2013 Rex Fernando | Expires: May 21, 2014 Rex Fernando | |||
Eric C. Rosen | Eric C. Rosen | |||
Cisco Systems, Inc. | Cisco Systems, Inc. | |||
James Uttaro | James Uttaro | |||
ATT | ATT | |||
May 23, 2013 | November 21, 2013 | |||
The Accumulated IGP Metric Attribute for BGP | The Accumulated IGP Metric Attribute for BGP | |||
draft-ietf-idr-aigp-10.txt | draft-ietf-idr-aigp-11.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 each link, and then choosing as the installed path between two | to each link, and then choosing as the installed path between two | |||
nodes the path for which the total distance (sum of the metric of | nodes the path for which the total distance (sum of the metric of | |||
each link along the path) is minimized. BGP, designed to provide | each link along the path) is minimized. BGP, designed to provide | |||
routing over a large number of independent administrative domains | routing over a large number of independent administrative domains | |||
("autonomous systems"), does not make its path selection decisions | ("autonomous systems"), does not make its path selection decisions | |||
skipping to change at page 3, line 11 | skipping to change at page 3, line 11 | |||
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 Specification of requirements ......................... 3 | |||
2 Introduction .......................................... 3 | 2 Introduction .......................................... 3 | |||
3 AIGP Attribute ........................................ 5 | 3 AIGP Attribute ........................................ 5 | |||
3.1 Applicability Restrictions and Cautions ............... 6 | 3.1 Applicability Restrictions and Cautions ............... 6 | |||
3.2 Restrictions on Sending/Receiving ..................... 6 | 3.2 Handling a Malformed AIGP Attribute ................... 6 | |||
3.3 Creating and Modifying the AIGP Attribute ............. 7 | 3.3 Restrictions on Sending/Receiving ..................... 7 | |||
3.3.1 Originating the AIGP Attribute ........................ 7 | 3.4 Creating and Modifying the AIGP Attribute ............. 7 | |||
3.3.2 Modifications by the Originator ....................... 8 | 3.4.1 Originating the AIGP Attribute ........................ 7 | |||
3.3.3 Modifications by a Non-Originator ..................... 8 | 3.4.2 Modifications by the Originator ....................... 9 | |||
4 Decision Process ...................................... 10 | 3.4.3 Modifications by a Non-Originator ..................... 9 | |||
4.1 When a Route has an AIGP Attribute .................... 10 | 4 Decision Process ...................................... 11 | |||
4.2 When the Route to the Next Hop 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 | ||||
5 Deployment Considerations ............................. 12 | 5 Deployment Considerations ............................. 12 | |||
6 IANA Considerations ................................... 12 | 6 IANA Considerations ................................... 13 | |||
7 Security Considerations ............................... 12 | 7 Security Considerations ............................... 13 | |||
8 Acknowledgments ....................................... 12 | 8 Acknowledgments ....................................... 13 | |||
9 Authors' Addresses .................................... 13 | 9 Authors' Addresses .................................... 13 | |||
10 Normative References .................................. 13 | 10 Normative References .................................. 14 | |||
11 Informative References ................................ 13 | 11 Informative References ................................ 14 | |||
1. Specification of requirements | 1. Specification of requirements | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in [RFC2119]. | document are to be interpreted as described in [RFC2119]. | |||
2. Introduction | 2. Introduction | |||
There are many routing protocols that have been designed to run | There are many routing protocols that have been designed to run | |||
skipping to change at page 5, line 40 | skipping to change at page 5, line 41 | |||
| Type | Length | | | | Type | Length | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | |||
~ ~ | ~ ~ | |||
| Value | | | Value | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+.......................... | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+.......................... | |||
AIGP TLV | AIGP TLV | |||
Figure 1 | Figure 1 | |||
- Type: A single octet encoding the TLV Type. Only type 1, "AIGP | - Type: A single octet encoding the TLV Type. Only type 1, "AIGP | |||
TLV", is defined in this document. | TLV", is defined in this document. Use of other TLV types is | |||
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. | - A value 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: | |||
skipping to change at page 6, line 21 | skipping to change at page 6, line 21 | |||
- Length: 11 | - Length: 11 | |||
- Accumulated IGP Metric. | - Accumulated IGP Metric. | |||
The value field of the AIGP TLV is always 8 bytes long. IGP | The value field of the AIGP TLV is always 8 bytes long. IGP | |||
metrics are frequently expressed as 4-octet values, and this | metrics are frequently expressed as 4-octet values, and this | |||
ensures that the AIGP attribute can be used to hold the sum of an | ensures that the AIGP attribute can be used to hold the sum of an | |||
arbitrary number of 4-octet values. | arbitrary number of 4-octet values. | |||
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 | ||||
first one is is used as described in Section 3.4 and Section 4. In | ||||
the 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. Any other AIGP TLVs in the AIGP attribute MUST be 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 networks | packet to its BGP next hop. Use of the AIGP attribute in networks | |||
that do not use tunneling is outside the scope of this document. | that do not use tunneling 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. Restrictions on Sending/Receiving | 3.2. Handling a Malformed AIGP Attribute | |||
When receiving a BGP Update message containing a malformed AIGP | ||||
attribute, the attribute MUST be treated exactly as if it were an | ||||
unrecognized non-transitive attribute. That is, "it MUST be quietly | ||||
ignored and not passed along to other BGP peers". This is equivalent | ||||
to the "attribute discard" action specified in [BGP-ERROR]. | ||||
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 | ||||
contains TLVs of unknown types. | ||||
If a BGP Path Attribute is received that has the AIGP attribute | ||||
codepoint, but also has the transitive bit set, the attribute MUST be | ||||
considered to be a malformed AIGP attribute, and MUST be discarded as | ||||
specified in this section. | ||||
If an AIGP attribute is received, and its first AIGP TLV contains the | ||||
maximum value 0xffffffffffffffff, the attribute SHOULD be considered | ||||
to be malformed, and discarded as specified in this section. (Since | ||||
the TLV value cannot be increased any further, it is not useful for | ||||
metric-based path selection.) | ||||
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 | - The default value of AIGP_SESSION, for EBGP sessions, MUST be | |||
"disabled". | "disabled". | |||
- The default value of AIGP_SESSION, for IBGP and confederation- | - The default value of AIGP_SESSION, for IBGP and confederation- | |||
EBGP sessions, MUST be "enabled." | EBGP sessions, SHOULD be "enabled." | |||
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). | [BGP], section 5). | |||
3.3. Creating and Modifying the AIGP Attribute | 3.4. Creating and Modifying the AIGP Attribute | |||
3.3.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 belongs. It may be added only to routes that satisfy one of | speaker belongs. It may be added only to routes that satisfy one of | |||
the following conditions: | the following conditions: | |||
skipping to change at page 7, line 42 | skipping to change at page 8, line 27 | |||
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 "ISIS"). Other policies | |||
determining when and whether to originate an AIGP attribute are also | determining when and whether to originate an AIGP attribute are also | |||
possible, depending on the needs of a particular deployment scenario. | possible, 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 attribute is set according to policy. There are | P, the value of the AIGP TLV is set according to policy. There are a | |||
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 P. This distance MAY be assigned as the value of AIGP | to P. This distance MAY be assigned as the value of the AIGP | |||
attribute. | 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 AIGP | configured. This distance MAY be assigned as the value of the | |||
attribute. | 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 static route to P, with next hop N. Then: | a 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 N MAY be used as the AIGP attribute value of the route to | 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 attribute value has | * If R has a BGP route to N, and an AIGP TLV attribute value | |||
been computed for that route (see section 3.3.3), that value | has been computed for that route (see section 3.4.3), that | |||
MAY be used as the AIGP attribute value of the route to P. | value MAY be used as the AIGP TLV value of the route to P. | |||
3.3.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 at some point the "distance" from R to P changes, R SHOULD issue | |||
a new BGP update containing the new value of the AIGP attribute. | a new BGP update containing the new value of the AIGP TLV of the AIGP | |||
(Here we use the term "distance" to refer to whatever value the | attribute. (Here we use the term "distance" to refer to whatever | |||
originator assigns to the AIGP attribute, however it is computed; see | value the originator assigns to the AIGP TLV, however it is computed; | |||
section 3.3.1.) However, if the difference between the new distance | see section 3.4.1.) However, if the difference between the new | |||
and the distance advertised in the AIGP attribute 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.3.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 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 | ||||
MUST be capped at its maximum unsigned value 0xffffffffffffffff. | ||||
Increasing the AIGP value MUST NOT cause the value to wrap around. | ||||
If R1 changes the Next Hop of the route from R2 to R1, and if R1's | If R1 changes the Next Hop of the route from R2 to R1, and if R1's | |||
route to R2 is an IGP-learned route, or a static route that does not | route to R2 is an IGP-learned route, or a static route that does not | |||
require recursive next hop resolution, then R1 must increase the | require recursive next hop resolution, then R1 MUST increase the | |||
value of the AIGP attribute by adding to A the distance from R1 to | value of the AIGP TLV by adding to A the distance from R1 to R2. | |||
R2. This distance is either the IGP-computed distance from R1 to R2, | This distance is either the IGP-computed distance from R1 to R2, or | |||
or some value determined by policy. However, A MUST be increased by | some value determined by policy. However, A MUST be increased by a | |||
a non-zero amount. | non-zero amount. | |||
Note that if R1 and R2 above are EBGP neighbors, and there is a | Note that if R1 and R2 above are EBGP neighbors, and there is a | |||
direct link between them on which no IGP is running, then when R1 | direct link between them on which no IGP is running, then when R1 | |||
changes the next hop of a route from R2 to R1, the AIGP metric value | changes the next hop of a route from R2 to R1, the AIGP TLV value | |||
MUST be increased by a non-zero amount. The amount of the increase | MUST be increased by a non-zero amount. The amount of the increase | |||
SHOULD be such that it is properly comparable to the IGP metrics. | SHOULD be such that it is properly comparable to the IGP metrics. | |||
E.g., if the IGP metric is a function of latency, then the amount of | E.g., 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 R2. | the increase should be a function of the latency from R1 to R2. | |||
If R1 changes the Next Hop of the route from R2 to R1, and if R1's | If R1 changes the Next Hop of the route from R2 to R1, and if R1's | |||
route to R2 is a BGP-learned route, or a static route that requires | route to R2 is a BGP-learned route, or a static route that requires | |||
recursive next hop resolution, then the AIGP attribute value needs to | recursive next hop resolution, then the AIGP TLV value needs to be | |||
be increased in several steps, according to the following procedure. | increased in several steps, according to the following procedure. | |||
(Note that this procedure is ONLY used when recursive next hop | (Note that this procedure is ONLY used when recursive next hop | |||
resolution is needed.) | resolution is needed.) | |||
1. Let Xattr be the new AIGP TLV value. | ||||
1. Let Xattr be the new AIGP attribute value. | ||||
2. Initialize Xattr to A. | 2. Initialize Xattr to A. | |||
3. Set the XNH to R2. | 3. Set the 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 attribute value to Xattr+D. If D is below a configurable | AIGP TLV value to Xattr+D. If D is below a configurable | |||
threshold, set the AIGP attribute value to Xattr. In either | threshold, set the AIGP TLV value to Xattr. In either case, | |||
case, exit this procedure. | exit this procedure. | |||
6. If the route to XNH is a BGP-learned route, and the route does | 6. If the route to XNH is a BGP-learned route, and the route does | |||
NOT have an AIGP attribute, then exit this procedure and do not | NOT have an AIGP attribute, then exit this procedure and do not | |||
pass on any AIGP attribute. | pass on any AIGP attribute. If the route has an AIGP attribute | |||
without an AIGP TLV, then the AIGP attribute MAY be passed | ||||
along unchanged. | ||||
7. If the route to XNH is a BGP-learned route, and the route has | 7. If the route to XNH is a BGP-learned route, and the route has | |||
an AIGP attribute value of Y, then set Xattr=Xattr+Y, and set | an AIGP TLV value of Y, then set Xattr=Xattr+Y, and set XNH to | |||
XNH to the next hop of this route. (The intention here is that | the next hop of this route. (The intention here is that Y is | |||
Y is the AIGP value of the route as it was received by R1, | the AIGP TLV value of the route as it was received by R1, | |||
without having been modified by R1.) | without having been modified by R1.) | |||
8. Go to step 4. | 8. Go to step 4. | |||
The AIGP value of a given route depends on (a) the AIGP values of all | The AIGP TLV value of a given route depends on (a) the AIGP TLV | |||
the next hops that are recursively resolved during this procedure, | values of all the next hops that are recursively resolved during this | |||
and (b) the IGP distance to any next hop that is not recursively | procedure, and (b) the IGP distance to any next hop that is not | |||
resolved. Any change due to (a) in any of these values MUST trigger | recursively resolved. Any change due to (a) in any of these values | |||
a new AIGP computation for that route. Whether a change due to (b) | MUST trigger a new AIGP computation for that route. Whether a change | |||
triggers a new AIGP computation depends upon whether the change in | due to (b) triggers a new AIGP computation depends upon whether the | |||
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 | |||
skipping to change at page 10, line 44 | skipping to change at page 11, line 31 | |||
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 9.1.2.2 | |||
are executed. | are executed. | |||
If any routes have an AIGP attribute, remove from consideration all | If any routes have an AIGP attribute containing an AIGP TLV, remove | |||
routes that do not have an AIGP attribute. | from consideration all routes that do not have an AIGP attribute | |||
containing an AIGP TLV. | ||||
If router R is considering route T, where T has an AIGP attribute | ||||
with an AIGP TLV, | ||||
If router R is considering route T, where T has an AIGP attribute, | ||||
- 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 attribute value and (b) the IGP distance from | sum of (a) T's AIGP TLV value and (b) the IGP distance from R to | |||
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 attribute values, or else | - the two routes have equal AIGP TLV values, or else | |||
- neither of the two routes has an AIGP attribute. | - neither of the two routes has an AIGP attribute containing an | |||
AIGP 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: | breaker 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." | |||
Suppose route T has a next hop of N. We modify the notion of the | Suppose route T has a next hop of N. We modify the notion of the | |||
"interior cost" from node R1 to node N as follows: | "interior cost" from node R1 to node N 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 in the case of a static route, the configured distance) from | (or in the case of a static route, the configured distance) from | |||
R1 to R2. | R1 to R2. | |||
- If the installed route to N has an AIGP attribute, set A to the | - If the installed route to N has an AIGP attribute with an AIGP | |||
AIGP value of the route to N, computing the AIGP value of the | TLV, set A to the AIGP value of the route to N, computing the | |||
route according to the procedure of section 3.3.3. | AIGP value of the route according to the procedure of section | |||
3.4.3. | ||||
- If the installed route to N does not have an AIGP value, set A to | - If the installed route to N does not have an AIGP value, set A to | |||
0. | 0. | |||
- The "interior cost" of route T is the quantity A+m. | - The "interior cost" of route T is the quantity A+m. | |||
5. Deployment Considerations | 5. Deployment Considerations | |||
Using the AIGP attribute to achieve a desired routing policy will be | Using the AIGP attribute to achieve a desired routing policy will be | |||
more effective if each BGP speaker can use it to choose from among | more effective if each BGP speaker can use it to choose from among | |||
multiple routes. Thus is it highly recommended that the procedures of | multiple routes. Thus is it highly recommended that the procedures of | |||
[BESTEXT] and [ADDPATH] be used in conjunction with the AIGP | [BESTEXT] and [CONN-REST] be used in conjunction with the AIGP | |||
Attribute. | Attribute. | |||
If a Route Reflector does not pass all paths to its clients, then it | 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 the Route | will tend to pass the paths for which the IGP distance from the Route | |||
Reflector itself to the next hop is smallest. This may result in a | Reflector itself to the next hop is smallest. This may result in a | |||
non-optimal choice by the clients. | non-optimal choice by the clients. | |||
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" | |||
skipping to change at page 12, line 41 | skipping to change at page 13, line 28 | |||
The spurious introduction, though error or malfeasance, of an AIGP | The spurious introduction, though 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, Clarence | The authors would like to thank Waqas Alam, Rajiv Asati, Brian | |||
Filsfils, Robert Raszuk, Yakov Rekhter, Eric Rosenberg, Samir Saad, | Dickson, Clarence Filsfils, Pratima Kini, Thomas Mangin, Robert | |||
John Scudder, and Shyam Sethuram for their input. | Raszuk, Yakov Rekhter, Eric Rosenberg, Samir Saad, John Scudder, | |||
Shyam Sethuram, and Ilya Varlashkin for their input. | ||||
9. Authors' Addresses | 9. Authors' Addresses | |||
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 | Email: rex@cisco.com | |||
Pradosh Mohapatra | Pradosh Mohapatra | |||
skipping to change at page 13, line 36 | skipping to change at page 14, line 23 | |||
Middletown, NJ 07748 | Middletown, NJ 07748 | |||
Email: uttaro@att.com | Email: uttaro@att.com | |||
10. Normative References | 10. Normative References | |||
[BGP], "A Border Gateway Protocol 4 (BGP-4)", Y. Rekhter, T. Li, S. | [BGP], "A Border Gateway Protocol 4 (BGP-4)", Y. Rekhter, T. Li, S. | |||
Hares, RFC 4271, January 2006. | Hares, RFC 4271, January 2006. | |||
11. Informative References | 11. Informative References | |||
[ADDPATH] "Fast Connectivity Restoration Using BGP Add-Path", P. | [CONN-REST] "Fast Connectivity Restoration Using BGP Add-Path", P. | |||
Mohapatra, R. Fernando, C. Filsfils, R. Raszuk, draft-pmohapat-idr- | Mohapatra, R. Fernando, C. Filsfils, R. Raszuk, draft-pmohapat-idr- | |||
fast-conn-restore-03.txt, January 2013. | fast-conn-restore-03.txt, January 2013. | |||
[BESTEXT], "Advertisement of the Best External Route in BGP", P. | [BESTEXT], "Advertisement of the Best External Route in BGP", P. | |||
Marques, R. Fernando, E. Chen, P. Mohapatra, H. Gredler, draft-ietf- | Marques, R. Fernando, E. Chen, P. Mohapatra, H. Gredler, draft-ietf- | |||
idr-best-external-05.txt, January 2012. | idr-best-external-05.txt, January 2012. | |||
[BGP-ERROR] "Revised Error Handling for BGP UPDATE Messages", J. | ||||
Scudder, E. Chen, P. Mohapatra, K. Patel, draft-ietf-idr-error- | ||||
handling-04.txt, June 2013. | ||||
[RFC2119] "Key words for use in RFCs to Indicate Requirement | [RFC2119] "Key words for use in RFCs to Indicate Requirement | |||
Levels.", S. Bradner, March 1997. | Levels.", S. Bradner, March 1997. | |||
End of changes. 40 change blocks. | ||||
78 lines changed or deleted | 125 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/ |