draft-ietf-idr-aigp-13.txt | draft-ietf-idr-aigp-14.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: June 3, 2014 Rex Fernando | Expires: June 16, 2014 Rex Fernando | |||
Eric C. Rosen | Eric C. Rosen | |||
Cisco Systems, Inc. | Cisco Systems, Inc. | |||
James Uttaro | James Uttaro | |||
ATT | ATT | |||
December 3, 2013 | December 16, 2013 | |||
The Accumulated IGP Metric Attribute for BGP | The Accumulated IGP Metric Attribute for BGP | |||
draft-ietf-idr-aigp-13.txt | draft-ietf-idr-aigp-14.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 20 | skipping to change at page 3, line 20 | |||
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 ..................... 7 | |||
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 ....................... 9 | |||
3.4.3 Modifications by a Non-Originator ..................... 9 | 3.4.3 Modifications by a Non-Originator ..................... 9 | |||
4 Decision Process ...................................... 11 | 4 Decision Process ...................................... 11 | |||
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 .. 12 | |||
5 Deployment Considerations ............................. 12 | 5 Deployment Considerations ............................. 13 | |||
6 IANA Considerations ................................... 13 | 6 IANA Considerations ................................... 13 | |||
7 Security Considerations ............................... 13 | 7 Security Considerations ............................... 13 | |||
8 Acknowledgments ....................................... 13 | 8 Acknowledgments ....................................... 13 | |||
9 Authors' Addresses .................................... 13 | 9 Authors' Addresses .................................... 14 | |||
10 Normative References .................................. 14 | 10 Normative References .................................. 14 | |||
11 Informative References ................................ 14 | 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 | |||
skipping to change at page 6, line 23 | skipping to change at page 6, line 23 | |||
- 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 | 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 is used as described in Section 3.4 and Section 4. In | first one is used as described in Section 3.4 and Section 4. In the | |||
the remainder of this document, we will use the term "value of the | remainder of this document, we will use the term "value of the AIGP | |||
AIGP TLV" to mean the value of the first AIGP TLV in the AIGP | TLV" to mean the value of the first AIGP TLV in the AIGP attribute. | |||
attribute. Any other AIGP TLVs in the AIGP attribute MUST be passed | Any other AIGP TLVs in the AIGP attribute MUST be passed along | |||
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 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 | |||
skipping to change at page 7, line 36 | skipping to change at page 7, line 36 | |||
- The default value of AIGP_SESSION, for IBGP and confederation- | - The default value of AIGP_SESSION, for IBGP and confederation- | |||
EBGP sessions, SHOULD 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). However, the fact that the attribute was received | |||
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 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: | |||
- The route is a static route that is being redistributed into BGP | - The route is a static route 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; | |||
- 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 | |||
skipping to change at page 9, line 30 | skipping to change at page 9, line 34 | |||
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. | |||
If R1 changes the Next Hop of the route from R2 to R1, and if R1's | Suppose R1 changes the Next Hop of the route from R2 to R1. If R1's | |||
route to R2 is an IGP-learned route, or a static route that does not | route to R2 is either (a) an IGP-learned route or (b) a static route | |||
require recursive next hop resolution, then R1 MUST increase the | that does not require recursive next hop resolution, then R1 MUST | |||
value of the AIGP TLV by adding to A the distance from R1 to R2. | increase the value of the AIGP TLV by adding to A the distance from | |||
This distance is either the IGP-computed distance from R1 to R2, or | R1 to R2. This distance is either the IGP-computed distance from R1 | |||
some value determined by policy. However, A MUST be increased by a | to R2, or some value determined by policy. However, A MUST be | |||
non-zero amount. | increased by a non-zero amount. | |||
Note that if R1 and R2 above are EBGP neighbors, and there is a | It is possible that R1 and R2 above are EBGP neighbors, and that | |||
direct link between them on which no IGP is running, then when R1 | there is a direct link between them on which no IGP is running. Then | |||
changes the next hop of a route from R2 to R1, the AIGP TLV value | when R1 changes the next hop of a route from R2 to R1, the AIGP TLV | |||
MUST be increased by a non-zero amount. The amount of the increase | value MUST be increased by a non-zero amount. The amount of the | |||
SHOULD be such that it is properly comparable to the IGP metrics. | increase SHOULD be such that it is properly comparable to the IGP | |||
E.g., if the IGP metric is a function of latency, then the amount of | metrics. E.g., if the IGP metric is a function of latency, then the | |||
the increase should be a function of the latency from R1 to R2. | amount of the increase should be a function of the latency from R1 to | |||
R2. | ||||
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 | ||||
that requires recursive next hop resolution. Then the AIGP TLV value | ||||
needs to be increased in several steps, according to the following | ||||
procedure. (Note that this procedure is ONLY used when recursive | ||||
next hop resolution is needed.) | ||||
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 | ||||
recursive next hop resolution, then the AIGP TLV value needs to be | ||||
increased in several steps, according to the following procedure. | ||||
(Note that this procedure is ONLY used when 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 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 TLV 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 TLV value to Xattr. In either case, | threshold, set the AIGP TLV value to Xattr. In either 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 that does NOT have | |||
NOT have an AIGP attribute, then exit this procedure and do not | an AIGP attribute, then exit this procedure and do not pass on | |||
pass on any AIGP attribute. If the route has an AIGP attribute | any AIGP attribute. If the route has an AIGP attribute without | |||
without an AIGP TLV, then the AIGP attribute MAY be passed | an AIGP TLV, then the AIGP attribute MAY be passed along | |||
along unchanged. | 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 that has an AIGP TLV | |||
an AIGP TLV value of Y, then set Xattr=Xattr+Y, and set XNH to | value of Y, then set Xattr=Xattr+Y and set XNH to the next hop | |||
the next hop of this route. (The intention here is that Y is | of this route. (The intention here is that Y is the AIGP TLV | |||
the AIGP TLV value of the route as it was received by R1, | value of the route as it was received by R1, without having | |||
without having been modified by R1.) | been 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. | |||
skipping to change at page 12, line 21 | skipping to change at page 12, line 24 | |||
- neither of the two routes has an AIGP attribute containing an | - neither of the two routes has an AIGP attribute containing an | |||
AIGP TLV. | 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 | This document replaces the "interior cost" tie breaker of [BGP] with | |||
"interior cost" from node R1 to node N as follows: | 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 | ||||
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 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 with an AIGP | - If the installed route to N has an AIGP attribute with an AIGP | |||
TLV, set A to the AIGP value of the route to N, computing the | TLV, set A to its AIGP TLV value, computed according to the | |||
AIGP value of the route according to the procedure of section | procedure of section 3.4.3. | |||
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 attribute with | |||
0. | an AIGP TLV, set A to 0. | |||
- The "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 "AIGP-enhanced interior cost" instead of the "interior cost" as | ||||
defined in [BGP]. | ||||
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 [ADD-PATH] be used in conjunction with the AIGP | [BESTEXT] and [ADD-PATH] 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 | |||
skipping to change at page 13, line 30 | skipping to change at page 13, line 43 | |||
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, Bruno | The authors would like to thank Waqas Alam, Rajiv Asati, Bruno | |||
Decraene, Brian Dickson, Clarence Filsfils, Anoop Kapoor, Pratima | Decraene, Brian Dickson, Clarence Filsfils, Anoop Kapoor, Pratima | |||
Kini, Thomas Mangin, Robert Raszuk, Yakov Rekhter, Eric Rosenberg, | Kini, Sue Hares, Thomas Mangin, Robert Raszuk, Yakov Rekhter, Eric | |||
Samir Saad, John Scudder, Shyam Sethuram, and Ilya Varlashkin for | Rosenberg, Samir Saad, John Scudder, Shyam Sethuram, and Ilya | |||
their input. | 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 | |||
End of changes. 21 change blocks. | ||||
56 lines changed or deleted | 64 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/ |