draft-ietf-idr-bgp4-07.txt | draft-ietf-idr-bgp4-08.txt | |||
---|---|---|---|---|
Network Working Group Y. Rekhter | Network Working Group Y. Rekhter | |||
INTERNET DRAFT cisco Systems | INTERNET DRAFT cisco Systems | |||
T. Li | T. Li | |||
Juniper Networks | Juniper Networks | |||
Editors | Editors | |||
<draft-ietf-idr-bgp4-07.txt> Februrary 1998 | <draft-ietf-idr-bgp4-08.txt> August 1998 | |||
A Border Gateway Protocol 4 (BGP-4) | A Border Gateway Protocol 4 (BGP-4) | |||
Status of this Memo | Status of this Memo | |||
This document, together with its companion document, "Application of | This document, together with its companion document, "Application of | |||
the Border Gateway Protocol in the Internet", define an inter- | the Border Gateway Protocol in the Internet", define an inter- | |||
autonomous system routing protocol for the Internet. This document | autonomous system routing protocol for the Internet. This document | |||
specifies an IAB standards track protocol for the Internet community, | specifies an IAB standards track protocol for the Internet community, | |||
and requests discussion and suggestions for improvements. Please | and requests discussion and suggestions for improvements. Please | |||
skipping to change at page 1, line 34 | skipping to change at page 1, line 34 | |||
documents of the Internet Engineering Task Force (IETF), its Areas, | documents of the Internet Engineering Task Force (IETF), its Areas, | |||
and its Working Groups. Note that other groups may also distribute | and its Working Groups. Note that other groups may also distribute | |||
working documents as Internet Drafts. | working documents as Internet Drafts. | |||
Internet Drafts are draft documents valid for a maximum of six | Internet Drafts are draft documents valid for a maximum of six | |||
months. Internet Drafts may be updated, replaced, or obsoleted by | months. Internet Drafts may be updated, replaced, or obsoleted by | |||
other documents at any time. It is not appropriate to use Internet | other documents at any time. It is not appropriate to use Internet | |||
Drafts as reference material or to cite them other than as a "working | Drafts as reference material or to cite them other than as a "working | |||
draft" or "work in progress". | draft" or "work in progress". | |||
To view the entire list of current Internet-Drafts, please check the | ||||
"1id-abstracts.txt" listing contained in the Internet-Drafts Shadow | ||||
Directories on ftp.is.co.za (Africa), ftp.nordu.net (Northern | ||||
Europe), ftp.nis.garr.it (Southern Europe), munnari.oz.au (Pacific | ||||
Rim), ftp.ietf.org (US East Coast), or ftp.isi.edu (US West Coast). | ||||
1. Acknowledgments | 1. Acknowledgments | |||
This document was originally published as RFC 1267 in October 1991, | This document was originally published as RFC 1267 in October 1991, | |||
jointly authored by Kirk Lougheed and Yakov Rekhter. | jointly authored by Kirk Lougheed and Yakov Rekhter. | |||
RFC DRAFT August 1998 | ||||
We would like to express our thanks to Guy Almes, Len Bosack, and | We would like to express our thanks to Guy Almes, Len Bosack, and | |||
Jeffrey C. Honig for their contributions to the earlier version of | Jeffrey C. Honig for their contributions to the earlier version of | |||
this document. | this document. | |||
We like to explicitly thank Bob Braden for the review of the earlier | We like to explicitly thank Bob Braden for the review of the earlier | |||
version of this document as well as his constructive and valuable | version of this document as well as his constructive and valuable | |||
comments. | comments. | |||
We would also like to thank Bob Hinden, Director for Routing of the | We would also like to thank Bob Hinden, Director for Routing of the | |||
Internet Engineering Steering Group, and the team of reviewers he | Internet Engineering Steering Group, and the team of reviewers he | |||
skipping to change at page 2, line 42 | skipping to change at page 3, line 4 | |||
The primary function of a BGP speaking system is to exchange network | The primary function of a BGP speaking system is to exchange network | |||
reachability information with other BGP systems. This network | reachability information with other BGP systems. This network | |||
reachability information includes information on the list of | reachability information includes information on the list of | |||
Autonomous Systems (ASs) that reachability information traverses. | Autonomous Systems (ASs) that reachability information traverses. | |||
This information is sufficient to construct a graph of AS | This information is sufficient to construct a graph of AS | |||
connectivity from which routing loops may be pruned and some policy | connectivity from which routing loops may be pruned and some policy | |||
decisions at the AS level may be enforced. | decisions at the AS level may be enforced. | |||
BGP-4 provides a new set of mechanisms for supporting classless | BGP-4 provides a new set of mechanisms for supporting classless | |||
RFC DRAFT August 1998 | ||||
interdomain routing. These mechanisms include support for | interdomain routing. These mechanisms include support for | |||
advertising an IP prefix and eliminates the concept of network | advertising an IP prefix and eliminates the concept of network | |||
"class" within BGP. BGP-4 also introduces mechanisms which allow | "class" within BGP. BGP-4 also introduces mechanisms which allow | |||
aggregation of routes, including aggregation of AS paths. These | aggregation of routes, including aggregation of AS paths. These | |||
changes provide support for the proposed supernetting scheme [8, 9]. | changes provide support for the proposed supernetting scheme [8, 9]. | |||
To characterize the set of policy decisions that can be enforced | To characterize the set of policy decisions that can be enforced | |||
using BGP, one must focus on the rule that a BGP speaker advertise to | using BGP, one must focus on the rule that a BGP speaker advertise to | |||
its peers (other BGP speakers which it communicates with) in | its peers (other BGP speakers which it communicates with) in | |||
neighboring ASs only those routes that it itself uses. This rule | neighboring ASs only those routes that it itself uses. This rule | |||
skipping to change at page 3, line 40 | skipping to change at page 4, line 4 | |||
transport requirements and is present in virtually all commercial | transport requirements and is present in virtually all commercial | |||
routers and hosts. In the following descriptions the phrase | routers and hosts. In the following descriptions the phrase | |||
"transport protocol connection" can be understood to refer to a TCP | "transport protocol connection" can be understood to refer to a TCP | |||
connection. BGP uses TCP port 179 for establishing its connections. | connection. BGP uses TCP port 179 for establishing its connections. | |||
This document uses the term `Autonomous System' (AS) throughout. The | This document uses the term `Autonomous System' (AS) throughout. The | |||
classic definition of an Autonomous System is a set of routers under | classic definition of an Autonomous System is a set of routers under | |||
a single technical administration, using an interior gateway protocol | a single technical administration, using an interior gateway protocol | |||
and common metrics to route packets within the AS, and using an | and common metrics to route packets within the AS, and using an | |||
exterior gateway protocol to route packets to other ASs. Since this | exterior gateway protocol to route packets to other ASs. Since this | |||
RFC DRAFT August 1998 | ||||
classic definition was developed, it has become common for a single | classic definition was developed, it has become common for a single | |||
AS to use several interior gateway protocols and sometimes several | AS to use several interior gateway protocols and sometimes several | |||
sets of metrics within an AS. The use of the term Autonomous System | sets of metrics within an AS. The use of the term Autonomous System | |||
here stresses the fact that, even when multiple IGPs and metrics are | here stresses the fact that, even when multiple IGPs and metrics are | |||
used, the administration of an AS appears to other ASs to have a | used, the administration of an AS appears to other ASs to have a | |||
single coherent interior routing plan and presents a consistent | single coherent interior routing plan and presents a consistent | |||
picture of what destinations are reachable through it. | picture of what destinations are reachable through it. | |||
The planned use of BGP in the Internet environment, including such | The planned use of BGP in the Internet environment, including such | |||
issues as topology, the interaction between BGP and IGPs, and the | issues as topology, the interaction between BGP and IGPs, and the | |||
skipping to change at page 4, line 37 | skipping to change at page 5, line 4 | |||
applications of this architecture are for further study. | applications of this architecture are for further study. | |||
Connections between BGP speakers of different ASs are referred to as | Connections between BGP speakers of different ASs are referred to as | |||
"external" links. BGP connections between BGP speakers within the | "external" links. BGP connections between BGP speakers within the | |||
same AS are referred to as "internal" links. Similarly, a peer in a | same AS are referred to as "internal" links. Similarly, a peer in a | |||
different AS is referred to as an external peer, while a peer in the | different AS is referred to as an external peer, while a peer in the | |||
same AS may be described as an internal peer. Internal BGP and | same AS may be described as an internal peer. Internal BGP and | |||
external BGP are commonly abbreviated IBGP and EBGP. | external BGP are commonly abbreviated IBGP and EBGP. | |||
If a particular AS has multiple BGP speakers and is providing transit | If a particular AS has multiple BGP speakers and is providing transit | |||
RFC DRAFT August 1998 | ||||
service for other ASs, then care must be taken to ensure a consistent | service for other ASs, then care must be taken to ensure a consistent | |||
view of routing within the AS. A consistent view of the interior | view of routing within the AS. A consistent view of the interior | |||
routes of the AS is provided by the interior routing protocol. A | routes of the AS is provided by the interior routing protocol. A | |||
consistent view of the routes exterior to the AS can be provided by | consistent view of the routes exterior to the AS can be provided by | |||
having all BGP speakers within the AS maintain direct IBGP | having all BGP speakers within the AS maintain direct IBGP | |||
connections with each other. Alternately the interior routing | connections with each other. Alternately the interior routing | |||
protocol can pass BGP information among routers within an AS, taking | protocol can pass BGP information among routers within an AS, taking | |||
care not to lose BGP attributes that will be needed by EBGP speakers | care not to lose BGP attributes that will be needed by EBGP speakers | |||
if transit connectivity is being provided. For the purpose of | if transit connectivity is being provided. For the purpose of | |||
discussion, it is assumed that BGP information is passed within an AS | discussion, it is assumed that BGP information is passed within an AS | |||
skipping to change at page 5, line 33 | skipping to change at page 6, line 4 | |||
information base; and routes that are received from other BGP | information base; and routes that are received from other BGP | |||
speakers are present in the Adj-RIBs-In. | speakers are present in the Adj-RIBs-In. | |||
If a BGP speaker chooses to advertise the route, it may add to or | If a BGP speaker chooses to advertise the route, it may add to or | |||
modify the path attributes of the route before advertising it to a | modify the path attributes of the route before advertising it to a | |||
peer. | peer. | |||
BGP provides mechanisms by which a BGP speaker can inform its peer | BGP provides mechanisms by which a BGP speaker can inform its peer | |||
that a previously advertised route is no longer available for use. | that a previously advertised route is no longer available for use. | |||
There are three methods by which a given BGP speaker can indicate | There are three methods by which a given BGP speaker can indicate | |||
RFC DRAFT August 1998 | ||||
that a route has been withdrawn from service: | that a route has been withdrawn from service: | |||
a) the IP prefix that expresses destinations for a previously | a) the IP prefix that expresses destinations for a previously | |||
advertised route can be advertised in the WITHDRAWN ROUTES field | advertised route can be advertised in the WITHDRAWN ROUTES field | |||
in the UPDATE message, thus marking the associated route as being | in the UPDATE message, thus marking the associated route as being | |||
no longer available for use | no longer available for use | |||
b) a replacement route with the same Network Layer Reachability | b) a replacement route with the same Network Layer Reachability | |||
Information can be advertised, or | Information can be advertised, or | |||
skipping to change at page 6, line 34 | skipping to change at page 7, line 4 | |||
In summary, the Adj-RIBs-In contain unprocessed routing information | In summary, the Adj-RIBs-In contain unprocessed routing information | |||
that has been advertised to the local BGP speaker by its peers; the | that has been advertised to the local BGP speaker by its peers; the | |||
Loc-RIB contains the routes that have been selected by the local BGP | Loc-RIB contains the routes that have been selected by the local BGP | |||
speaker's Decision Process; and the Adj-RIBs-Out organize the routes | speaker's Decision Process; and the Adj-RIBs-Out organize the routes | |||
for advertisement to specific peers by means of the local speaker's | for advertisement to specific peers by means of the local speaker's | |||
UPDATE messages. | UPDATE messages. | |||
Although the conceptual model distinguishes between Adj-RIBs-In, | Although the conceptual model distinguishes between Adj-RIBs-In, | |||
Loc-RIB, and Adj-RIBs-Out, this neither implies nor requires that an | Loc-RIB, and Adj-RIBs-Out, this neither implies nor requires that an | |||
RFC DRAFT August 1998 | ||||
implementation must maintain three separate copies of the routing | implementation must maintain three separate copies of the routing | |||
information. The choice of implementation (for example, 3 copies of | information. The choice of implementation (for example, 3 copies of | |||
the information vs 1 copy with pointers) is not constrained by the | the information vs 1 copy with pointers) is not constrained by the | |||
protocol. | protocol. | |||
4. Message Formats | 4. Message Formats | |||
This section describes message formats used by BGP. | This section describes message formats used by BGP. | |||
Messages are sent over a reliable transport protocol connection. A | Messages are sent over a reliable transport protocol connection. A | |||
skipping to change at page 7, line 27 | skipping to change at page 8, line 5 | |||
+ + | + + | |||
| Marker | | | Marker | | |||
+ + | + + | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Length | Type | | | Length | Type | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Marker: | Marker: | |||
RFC DRAFT August 1998 | ||||
This 16-octet field contains a value that the receiver of the | This 16-octet field contains a value that the receiver of the | |||
message can predict. If the Type of the message is OPEN, or if | message can predict. If the Type of the message is OPEN, or if | |||
the OPEN message carries no Authentication Information (as an | the OPEN message carries no Authentication Information (as an | |||
Optional Parameter), then the Marker must be all ones. | Optional Parameter), then the Marker must be all ones. | |||
Otherwise, the value of the marker can be predicted by some a | Otherwise, the value of the marker can be predicted by some a | |||
computation specified as part of the authentication mechanism | computation specified as part of the authentication mechanism | |||
(which is specified as part of the Authentication Information) | (which is specified as part of the Authentication Information) | |||
used. The Marker can be used to detect loss of synchronization | used. The Marker can be used to detect loss of synchronization | |||
between a pair of BGP peers, and to authenticate incoming BGP | between a pair of BGP peers, and to authenticate incoming BGP | |||
messages. | messages. | |||
skipping to change at page 8, line 31 | skipping to change at page 9, line 5 | |||
After a transport protocol connection is established, the first | After a transport protocol connection is established, the first | |||
message sent by each side is an OPEN message. If the OPEN message is | message sent by each side is an OPEN message. If the OPEN message is | |||
acceptable, a KEEPALIVE message confirming the OPEN is sent back. | acceptable, a KEEPALIVE message confirming the OPEN is sent back. | |||
Once the OPEN is confirmed, UPDATE, KEEPALIVE, and NOTIFICATION | Once the OPEN is confirmed, UPDATE, KEEPALIVE, and NOTIFICATION | |||
messages may be exchanged. | messages may be exchanged. | |||
In addition to the fixed-size BGP header, the OPEN message contains | In addition to the fixed-size BGP header, the OPEN message contains | |||
the following fields: | the following fields: | |||
RFC DRAFT August 1998 | ||||
0 1 2 3 | 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 | 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 | |||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Version | | | Version | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| My Autonomous System | | | My Autonomous System | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Hold Time | | | Hold Time | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| BGP Identifier | | | BGP Identifier | | |||
skipping to change at page 9, line 32 | skipping to change at page 10, line 4 | |||
Hold Time and the Hold Time received in the OPEN message. The | Hold Time and the Hold Time received in the OPEN message. The | |||
Hold Time MUST be either zero or at least three seconds. An | Hold Time MUST be either zero or at least three seconds. An | |||
implementation may reject connections on the basis of the Hold | implementation may reject connections on the basis of the Hold | |||
Time. The calculated value indicates the maximum number of | Time. The calculated value indicates the maximum number of | |||
seconds that may elapse between the receipt of successive | seconds that may elapse between the receipt of successive | |||
KEEPALIVE, and/or UPDATE messages by the sender. | KEEPALIVE, and/or UPDATE messages by the sender. | |||
BGP Identifier: | BGP Identifier: | |||
This 4-octet unsigned integer indicates the BGP Identifier of | This 4-octet unsigned integer indicates the BGP Identifier of | |||
the sender. A given BGP speaker sets the value of its BGP | the sender. A given BGP speaker sets the value of its BGP | |||
RFC DRAFT August 1998 | ||||
Identifier to an IP address assigned to that BGP speaker. The | Identifier to an IP address assigned to that BGP speaker. The | |||
value of the BGP Identifier is determined on startup and is the | value of the BGP Identifier is determined on startup and is the | |||
same for every local interface and every BGP peer. | same for every local interface and every BGP peer. | |||
Optional Parameters Length: | Optional Parameters Length: | |||
This 1-octet unsigned integer indicates the total length of the | This 1-octet unsigned integer indicates the total length of the | |||
Optional Parameters field in octets. If the value of this field | Optional Parameters field in octets. If the value of this field | |||
is zero, no Optional Parameters are present. | is zero, no Optional Parameters are present. | |||
skipping to change at page 10, line 28 | skipping to change at page 11, line 4 | |||
This document defines the following Optional Parameters: | This document defines the following Optional Parameters: | |||
a) Authentication Information (Parameter Type 1): | a) Authentication Information (Parameter Type 1): | |||
This optional parameter may be used to authenticate a BGP | This optional parameter may be used to authenticate a BGP | |||
peer. The Parameter Value field contains a 1-octet | peer. The Parameter Value field contains a 1-octet | |||
Authentication Code followed by a variable length | Authentication Code followed by a variable length | |||
Authentication Data. | Authentication Data. | |||
0 1 2 3 4 5 6 7 8 | 0 1 2 3 4 5 6 7 8 | |||
RFC DRAFT August 1998 | ||||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Auth. Code | | | Auth. Code | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
| Authentication Data | | | Authentication Data | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Authentication Code: | Authentication Code: | |||
skipping to change at page 11, line 27 | skipping to change at page 12, line 4 | |||
UPDATE messages are used to transfer routing information between BGP | UPDATE messages are used to transfer routing information between BGP | |||
peers. The information in the UPDATE packet can be used to construct | peers. The information in the UPDATE packet can be used to construct | |||
a graph describing the relationships of the various Autonomous | a graph describing the relationships of the various Autonomous | |||
Systems. By applying rules to be discussed, routing information | Systems. By applying rules to be discussed, routing information | |||
loops and some other anomalies may be detected and removed from | loops and some other anomalies may be detected and removed from | |||
inter-AS routing. | inter-AS routing. | |||
An UPDATE message is used to advertise a single feasible route to a | An UPDATE message is used to advertise a single feasible route to a | |||
peer, or to withdraw multiple unfeasible routes from service (see | peer, or to withdraw multiple unfeasible routes from service (see | |||
RFC DRAFT August 1998 | ||||
3.1). An UPDATE message may simultaneously advertise a feasible route | 3.1). An UPDATE message may simultaneously advertise a feasible route | |||
and withdraw multiple unfeasible routes from service. The UPDATE | and withdraw multiple unfeasible routes from service. The UPDATE | |||
message always includes the fixed-size BGP header, and can optionally | message always includes the fixed-size BGP header, and can optionally | |||
include the other fields as shown below: | include the other fields as shown below: | |||
+-----------------------------------------------------+ | +-----------------------------------------------------+ | |||
| Unfeasible Routes Length (2 octets) | | | Unfeasible Routes Length (2 octets) | | |||
+-----------------------------------------------------+ | +-----------------------------------------------------+ | |||
| Withdrawn Routes (variable) | | | Withdrawn Routes (variable) | | |||
+-----------------------------------------------------+ | +-----------------------------------------------------+ | |||
skipping to change at page 12, line 24 | skipping to change at page 13, line 5 | |||
address prefixes for the routes that are being withdrawn from | address prefixes for the routes that are being withdrawn from | |||
service. Each IP address prefix is encoded as a 2-tuple of the | service. Each IP address prefix is encoded as a 2-tuple of the | |||
form <length, prefix>, whose fields are described below: | form <length, prefix>, whose fields are described below: | |||
+---------------------------+ | +---------------------------+ | |||
| Length (1 octet) | | | Length (1 octet) | | |||
+---------------------------+ | +---------------------------+ | |||
| Prefix (variable) | | | Prefix (variable) | | |||
+---------------------------+ | +---------------------------+ | |||
RFC DRAFT August 1998 | ||||
The use and the meaning of these fields are as follows: | The use and the meaning of these fields are as follows: | |||
a) Length: | a) Length: | |||
The Length field indicates the length in bits of the IP | The Length field indicates the length in bits of the IP | |||
address prefix. A length of zero indicates a prefix that | address prefix. A length of zero indicates a prefix that | |||
matches all IP addresses (with prefix, itself, of zero | matches all IP addresses (with prefix, itself, of zero | |||
octets). | octets). | |||
b) Prefix: | b) Prefix: | |||
skipping to change at page 13, line 21 | skipping to change at page 14, line 5 | |||
Attribute Type is a two-octet field that consists of the | Attribute Type is a two-octet field that consists of the | |||
Attribute Flags octet followed by the Attribute Type Code | Attribute Flags octet followed by the Attribute Type Code | |||
octet. | octet. | |||
0 1 | 0 1 | |||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Attr. Flags |Attr. Type Code| | | Attr. Flags |Attr. Type Code| | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
RFC DRAFT August 1998 | ||||
The high-order bit (bit 0) of the Attribute Flags octet is the | The high-order bit (bit 0) of the Attribute Flags octet is the | |||
Optional bit. It defines whether the attribute is optional (if | Optional bit. It defines whether the attribute is optional (if | |||
set to 1) or well-known (if set to 0). | set to 1) or well-known (if set to 0). | |||
The second high-order bit (bit 1) of the Attribute Flags octet | The second high-order bit (bit 1) of the Attribute Flags octet | |||
is the Transitive bit. It defines whether an optional | is the Transitive bit. It defines whether an optional | |||
attribute is transitive (if set to 1) or non-transitive (if set | attribute is transitive (if set to 1) or non-transitive (if set | |||
to 0). For well-known attributes, the Transitive bit must be | to 0). For well-known attributes, the Transitive bit must be | |||
set to 1. (See Section 5 for a discussion of transitive | set to 1. (See Section 5 for a discussion of transitive | |||
attributes.) | attributes.) | |||
skipping to change at page 14, line 23 | skipping to change at page 15, line 5 | |||
to 1, then the third and the fourth octets of the path | to 1, then the third and the fourth octets of the path | |||
attribute contain the length of the attribute data in octets. | attribute contain the length of the attribute data in octets. | |||
The remaining octets of the Path Attribute represent the | The remaining octets of the Path Attribute represent the | |||
attribute value and are interpreted according to the Attribute | attribute value and are interpreted according to the Attribute | |||
Flags and the Attribute Type Code. The supported Attribute Type | Flags and the Attribute Type Code. The supported Attribute Type | |||
Codes, their attribute values and uses are the following: | Codes, their attribute values and uses are the following: | |||
a) ORIGIN (Type Code 1): | a) ORIGIN (Type Code 1): | |||
RFC DRAFT August 1998 | ||||
ORIGIN is a well-known mandatory attribute that defines the | ORIGIN is a well-known mandatory attribute that defines the | |||
origin of the path information. The data octet can assume | origin of the path information. The data octet can assume | |||
the following values: | the following values: | |||
Value Meaning | Value Meaning | |||
0 IGP - Network Layer Reachability Information | 0 IGP - Network Layer Reachability Information | |||
is interior to the originating AS | is interior to the originating AS | |||
1 EGP - Network Layer Reachability Information | 1 EGP - Network Layer Reachability Information | |||
skipping to change at page 15, line 20 | skipping to change at page 16, line 4 | |||
the number of ASs in the path segment value field. | the number of ASs in the path segment value field. | |||
The path segment value field contains one or more AS | The path segment value field contains one or more AS | |||
numbers, each encoded as a 2-octets long field. | numbers, each encoded as a 2-octets long field. | |||
Usage of this attribute is defined in 5.1.2. | Usage of this attribute is defined in 5.1.2. | |||
c) NEXT_HOP (Type Code 3): | c) NEXT_HOP (Type Code 3): | |||
This is a well-known mandatory attribute that defines the IP | This is a well-known mandatory attribute that defines the IP | |||
RFC DRAFT August 1998 | ||||
address of the border router that should be used as the next | address of the border router that should be used as the next | |||
hop to the destinations listed in the Network Layer | hop to the destinations listed in the Network Layer | |||
Reachability field of the UPDATE message. | Reachability field of the UPDATE message. | |||
Usage of this attribute is defined in 5.1.3. | Usage of this attribute is defined in 5.1.3. | |||
d) MULTI_EXIT_DISC (Type Code 4): | d) MULTI_EXIT_DISC (Type Code 4): | |||
This is an optional non-transitive attribute that is a four | This is an optional non-transitive attribute that is a four | |||
octet non-negative integer. The value of this attribute may | octet non-negative integer. The value of this attribute may | |||
skipping to change at page 16, line 18 | skipping to change at page 17, line 4 | |||
AGGREGATOR is an optional transitive attribute of length 6. | AGGREGATOR is an optional transitive attribute of length 6. | |||
The attribute contains the last AS number that formed the | The attribute contains the last AS number that formed the | |||
aggregate route (encoded as 2 octets), followed by the IP | aggregate route (encoded as 2 octets), followed by the IP | |||
address of the BGP speaker that formed the aggregate route | address of the BGP speaker that formed the aggregate route | |||
(encoded as 4 octets). Usage of this attribute is described | (encoded as 4 octets). Usage of this attribute is described | |||
in 5.1.7 | in 5.1.7 | |||
Network Layer Reachability Information: | Network Layer Reachability Information: | |||
This variable length field contains a list of IP address | This variable length field contains a list of IP address | |||
RFC DRAFT August 1998 | ||||
prefixes. The length in octets of the Network Layer | prefixes. The length in octets of the Network Layer | |||
Reachability Information is not encoded explicitly, but can be | Reachability Information is not encoded explicitly, but can be | |||
calculated as: | calculated as: | |||
UPDATE message Length - 23 - Total Path Attributes Length - | UPDATE message Length - 23 - Total Path Attributes Length - | |||
Unfeasible Routes Length | Unfeasible Routes Length | |||
where UPDATE message Length is the value encoded in the fixed- | where UPDATE message Length is the value encoded in the fixed- | |||
size BGP header, Total Path Attribute Length and Unfeasible | size BGP header, Total Path Attribute Length and Unfeasible | |||
Routes Length are the values encoded in the variable part of | Routes Length are the values encoded in the variable part of | |||
skipping to change at page 17, line 18 | skipping to change at page 18, line 5 | |||
enough trailing bits to make the end of the field fall on an | enough trailing bits to make the end of the field fall on an | |||
octet boundary. Note that the value of the trailing bits is | octet boundary. Note that the value of the trailing bits is | |||
irrelevant. | irrelevant. | |||
The minimum length of the UPDATE message is 23 octets -- 19 octets | The minimum length of the UPDATE message is 23 octets -- 19 octets | |||
for the fixed header + 2 octets for the Unfeasible Routes Length + 2 | for the fixed header + 2 octets for the Unfeasible Routes Length + 2 | |||
octets for the Total Path Attribute Length (the value of Unfeasible | octets for the Total Path Attribute Length (the value of Unfeasible | |||
Routes Length is 0 and the value of Total Path Attribute Length is | Routes Length is 0 and the value of Total Path Attribute Length is | |||
0). | 0). | |||
RFC DRAFT August 1998 | ||||
An UPDATE message can advertise at most one route, which may be | An UPDATE message can advertise at most one route, which may be | |||
described by several path attributes. All path attributes contained | described by several path attributes. All path attributes contained | |||
in a given UPDATE messages apply to the destinations carried in the | in a given UPDATE messages apply to the destinations carried in the | |||
Network Layer Reachability Information field of the UPDATE message. | Network Layer Reachability Information field of the UPDATE message. | |||
An UPDATE message can list multiple routes to be withdrawn from | An UPDATE message can list multiple routes to be withdrawn from | |||
service. Each such route is identified by its destination (expressed | service. Each such route is identified by its destination (expressed | |||
as an IP prefix), which unambiguously identifies the route in the | as an IP prefix), which unambiguously identifies the route in the | |||
context of the BGP speaker - BGP speaker connection to which it has | context of the BGP speaker - BGP speaker connection to which it has | |||
been previously been advertised. | been previously been advertised. | |||
skipping to change at page 18, line 13 | skipping to change at page 19, line 5 | |||
19 octets. | 19 octets. | |||
4.5 NOTIFICATION Message Format | 4.5 NOTIFICATION Message Format | |||
A NOTIFICATION message is sent when an error condition is detected. | A NOTIFICATION message is sent when an error condition is detected. | |||
The BGP connection is closed immediately after sending it. | The BGP connection is closed immediately after sending it. | |||
In addition to the fixed-size BGP header, the NOTIFICATION message | In addition to the fixed-size BGP header, the NOTIFICATION message | |||
contains the following fields: | contains the following fields: | |||
RFC DRAFT August 1998 | ||||
0 1 2 3 | 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 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Error code | Error subcode | Data | | | Error code | Error subcode | Data | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Error Code: | Error Code: | |||
skipping to change at page 19, line 13 | skipping to change at page 20, line 5 | |||
(Unspecific) value is used for the Error Subcode field. | (Unspecific) value is used for the Error Subcode field. | |||
Message Header Error subcodes: | Message Header Error subcodes: | |||
1 - Connection Not Synchronized. | 1 - Connection Not Synchronized. | |||
2 - Bad Message Length. | 2 - Bad Message Length. | |||
3 - Bad Message Type. | 3 - Bad Message Type. | |||
OPEN Message Error subcodes: | OPEN Message Error subcodes: | |||
RFC DRAFT August 1998 | ||||
1 - Unsupported Version Number. | 1 - Unsupported Version Number. | |||
2 - Bad Peer AS. | 2 - Bad Peer AS. | |||
3 - Bad BGP Identifier. | 3 - Bad BGP Identifier. | |||
4 - Unsupported Optional Parameter. | 4 - Unsupported Optional Parameter. | |||
5 - Authentication Failure. | 5 - Authentication Failure. | |||
6 - Unacceptable Hold Time. | 6 - Unacceptable Hold Time. | |||
UPDATE Message Error subcodes: | UPDATE Message Error subcodes: | |||
1 - Malformed Attribute List. | 1 - Malformed Attribute List. | |||
skipping to change at page 20, line 13 | skipping to change at page 21, line 4 | |||
(including message header). | (including message header). | |||
5. Path Attributes | 5. Path Attributes | |||
This section discusses the path attributes of the UPDATE message. | This section discusses the path attributes of the UPDATE message. | |||
Path attributes fall into four separate categories: | Path attributes fall into four separate categories: | |||
1. Well-known mandatory. | 1. Well-known mandatory. | |||
2. Well-known discretionary. | 2. Well-known discretionary. | |||
RFC DRAFT August 1998 | ||||
3. Optional transitive. | 3. Optional transitive. | |||
4. Optional non-transitive. | 4. Optional non-transitive. | |||
Well-known attributes must be recognized by all BGP implementations. | Well-known attributes must be recognized by all BGP implementations. | |||
Some of these attributes are mandatory and must be included in every | Some of these attributes are mandatory and must be included in every | |||
UPDATE message that contains NLRI. Others are discretionary and may | UPDATE message that contains NLRI. Others are discretionary and may | |||
or may not be sent in a particular UPDATE message. | or may not be sent in a particular UPDATE message. | |||
All well-known attributes must be passed along (after proper | All well-known attributes must be passed along (after proper | |||
updating, if necessary) to other BGP peers. | updating, if necessary) to other BGP peers. | |||
skipping to change at page 21, line 13 | skipping to change at page 22, line 5 | |||
by ASs in the path. | by ASs in the path. | |||
The sender of an UPDATE message should order path attributes within | The sender of an UPDATE message should order path attributes within | |||
the UPDATE message in ascending order of attribute type. The | the UPDATE message in ascending order of attribute type. The | |||
receiver of an UPDATE message must be prepared to handle path | receiver of an UPDATE message must be prepared to handle path | |||
attributes within the UPDATE message that are out of order. | attributes within the UPDATE message that are out of order. | |||
The same attribute cannot appear more than once within the Path | The same attribute cannot appear more than once within the Path | |||
Attributes field of a particular UPDATE message. | Attributes field of a particular UPDATE message. | |||
RFC DRAFT August 1998 | ||||
The mandatory category refers to an attribute which must be present | The mandatory category refers to an attribute which must be present | |||
in both IBGP and EBGP exchanges if NLRI are contained in the UPDATE | in both IBGP and EBGP exchanges if NLRI are contained in the UPDATE | |||
message. Attributes classified as optional for the purpose of the | message. Attributes classified as optional for the purpose of the | |||
protocol extension mechanism may be purely discretionary, or | protocol extension mechanism may be purely discretionary, or | |||
discretionary, required, or disallowed in certain contexts. | discretionary, required, or disallowed in certain contexts. | |||
attribute EBGP IBGP | attribute EBGP IBGP | |||
ORIGIN mandatory mandatory | ORIGIN mandatory mandatory | |||
AS_PATH mandatory mandatory | AS_PATH mandatory mandatory | |||
NEXT_HOP mandatory mandatory | NEXT_HOP mandatory mandatory | |||
skipping to change at page 22, line 10 | skipping to change at page 23, line 4 | |||
5.1.2 AS_PATH | 5.1.2 AS_PATH | |||
AS_PATH is a well-known mandatory attribute. This attribute | AS_PATH is a well-known mandatory attribute. This attribute | |||
identifies the autonomous systems through which routing information | identifies the autonomous systems through which routing information | |||
carried in this UPDATE message has passed. The components of this | carried in this UPDATE message has passed. The components of this | |||
list can be AS_SETs or AS_SEQUENCEs. | list can be AS_SETs or AS_SEQUENCEs. | |||
When a BGP speaker propagates a route which it has learned from | When a BGP speaker propagates a route which it has learned from | |||
another BGP speaker's UPDATE message, it shall modify the route's | another BGP speaker's UPDATE message, it shall modify the route's | |||
RFC DRAFT August 1998 | ||||
AS_PATH attribute based on the location of the BGP speaker to which | AS_PATH attribute based on the location of the BGP speaker to which | |||
the route will be sent: | the route will be sent: | |||
a) When a given BGP speaker advertises the route to an internal | a) When a given BGP speaker advertises the route to an internal | |||
peer, the advertising speaker shall not modify the AS_PATH | peer, the advertising speaker shall not modify the AS_PATH | |||
attribute associated with the route. | attribute associated with the route. | |||
b) When a given BGP speaker advertises the route to an external | b) When a given BGP speaker advertises the route to an external | |||
peer, then the advertising speaker shall update the AS_PATH | peer, then the advertising speaker shall update the AS_PATH | |||
attribute as follows: | attribute as follows: | |||
skipping to change at page 23, line 8 | skipping to change at page 24, line 4 | |||
5.1.3 NEXT_HOP | 5.1.3 NEXT_HOP | |||
The NEXT_HOP path attribute defines the IP address of the border | The NEXT_HOP path attribute defines the IP address of the border | |||
router that should be used as the next hop to the destinations listed | router that should be used as the next hop to the destinations listed | |||
in the UPDATE message. When advertising a NEXT_HOP attribute to an | in the UPDATE message. When advertising a NEXT_HOP attribute to an | |||
external peer, a router may use one of its own interface addresses in | external peer, a router may use one of its own interface addresses in | |||
the NEXT_HOP attribute provided the external peer to which the route | the NEXT_HOP attribute provided the external peer to which the route | |||
is being advertised shares a common subnet with the NEXT_HOP address. | is being advertised shares a common subnet with the NEXT_HOP address. | |||
This is known as a "first party" NEXT_HOP attribute. A BGP speaker | This is known as a "first party" NEXT_HOP attribute. A BGP speaker | |||
RFC DRAFT August 1998 | ||||
can advertise to an external peer an interface of any internal peer | can advertise to an external peer an interface of any internal peer | |||
router in the NEXT_HOP attribute provided the external peer to which | router in the NEXT_HOP attribute provided the external peer to which | |||
the route is being advertised shares a common subnet with the | the route is being advertised shares a common subnet with the | |||
NEXT_HOP address. This is known as a "third party" NEXT_HOP | NEXT_HOP address. This is known as a "third party" NEXT_HOP | |||
attribute. A BGP speaker can advertise any external peer router in | attribute. A BGP speaker can advertise any external peer router in | |||
the NEXT_HOP attribute provided that the IP address of this border | the NEXT_HOP attribute provided that the IP address of this border | |||
router was learned from an external peer and the external peer to | router was learned from an external peer and the external peer to | |||
which the route is being advertised shares a common subnet with the | which the route is being advertised shares a common subnet with the | |||
NEXT_HOP address. This is a second form of "third party" NEXT_HOP | NEXT_HOP address. This is a second form of "third party" NEXT_HOP | |||
attribute. | attribute. | |||
skipping to change at page 24, line 7 | skipping to change at page 25, line 5 | |||
attribute MAY be propagated over internal links to other BGP speakers | attribute MAY be propagated over internal links to other BGP speakers | |||
within the same AS. The MULTI_EXIT_DISC attribute received from a | within the same AS. The MULTI_EXIT_DISC attribute received from a | |||
neighboring AS MUST NOT be propagated to other neighboring ASs. | neighboring AS MUST NOT be propagated to other neighboring ASs. | |||
A BGP speaker MUST IMPLEMENT a mechanism based on local configuration | A BGP speaker MUST IMPLEMENT a mechanism based on local configuration | |||
which allows the MULTI_EXIT_DISC attribute to be removed from a | which allows the MULTI_EXIT_DISC attribute to be removed from a | |||
route. This MAY be done either prior to or after determining the | route. This MAY be done either prior to or after determining the | |||
degree of preference of the route and performing route selection | degree of preference of the route and performing route selection | |||
(decision process phases 1 and 2). | (decision process phases 1 and 2). | |||
RFC DRAFT August 1998 | ||||
An implementation MAY also (based on local configuration) alter the | An implementation MAY also (based on local configuration) alter the | |||
value of the MULTI_EXIT_DISC attribute received over an external | value of the MULTI_EXIT_DISC attribute received over an external | |||
link. If it does so, it shall do so prior to determining the degree | link. If it does so, it shall do so prior to determining the degree | |||
of preference of the route and performing route selection (decision | of preference of the route and performing route selection (decision | |||
process phases 1 and 2). | process phases 1 and 2). | |||
5.1.5 LOCAL_PREF | 5.1.5 LOCAL_PREF | |||
LOCAL_PREF is a well-known mandatory attribute that SHALL be included | LOCAL_PREF is a well-known mandatory attribute that SHALL be included | |||
in all UPDATE messages that a given BGP speaker sends to the other | in all UPDATE messages that a given BGP speaker sends to the other | |||
skipping to change at page 25, line 5 | skipping to change at page 26, line 5 | |||
from the route when propagating it to other speakers. A BGP speaker | from the route when propagating it to other speakers. A BGP speaker | |||
that receives a route with the ATOMIC_AGGREGATE attribute MUST NOT | that receives a route with the ATOMIC_AGGREGATE attribute MUST NOT | |||
make any NLRI of that route more specific (as defined in 9.1.4) when | make any NLRI of that route more specific (as defined in 9.1.4) when | |||
advertising this route to other BGP speakers. A BGP speaker that | advertising this route to other BGP speakers. A BGP speaker that | |||
receives a route with the ATOMIC_AGGREGATE attribute needs to be | receives a route with the ATOMIC_AGGREGATE attribute needs to be | |||
cognizant of the fact that the actual path to destinations, as | cognizant of the fact that the actual path to destinations, as | |||
specified in the NLRI of the route, while having the loop-free | specified in the NLRI of the route, while having the loop-free | |||
property, may traverse ASs that are not listed in the AS_PATH | property, may traverse ASs that are not listed in the AS_PATH | |||
attribute. | attribute. | |||
RFC DRAFT August 1998 | ||||
5.1.7 AGGREGATOR | 5.1.7 AGGREGATOR | |||
AGGREGATOR is an optional transitive attribute which may be included | AGGREGATOR is an optional transitive attribute which may be included | |||
in updates which are formed by aggregation (see Section 9.2.4.2). A | in updates which are formed by aggregation (see Section 9.2.4.2). A | |||
BGP speaker which performs route aggregation may add the AGGREGATOR | BGP speaker which performs route aggregation may add the AGGREGATOR | |||
attribute which shall contain its own AS number and IP address. | attribute which shall contain its own AS number and IP address. | |||
6. BGP Error Handling. | 6. BGP Error Handling. | |||
This section describes actions to be taken when errors are detected | This section describes actions to be taken when errors are detected | |||
skipping to change at page 25, line 46 | skipping to change at page 27, line 4 | |||
Error. The Error Subcode elaborates on the specific nature of the | Error. The Error Subcode elaborates on the specific nature of the | |||
error. | error. | |||
The expected value of the Marker field of the message header is all | The expected value of the Marker field of the message header is all | |||
ones if the message type is OPEN. The expected value of the Marker | ones if the message type is OPEN. The expected value of the Marker | |||
field for all other types of BGP messages determined based on the | field for all other types of BGP messages determined based on the | |||
presence of the Authentication Information Optional Parameter in the | presence of the Authentication Information Optional Parameter in the | |||
BGP OPEN message and the actual authentication mechanism (if the | BGP OPEN message and the actual authentication mechanism (if the | |||
Authentication Information in the BGP OPEN message is present). If | Authentication Information in the BGP OPEN message is present). If | |||
the Marker field of the message header is not the expected one, then | the Marker field of the message header is not the expected one, then | |||
RFC DRAFT August 1998 | ||||
a synchronization error has occurred and the Error Subcode is set to | a synchronization error has occurred and the Error Subcode is set to | |||
Connection Not Synchronized. | Connection Not Synchronized. | |||
If the Length field of the message header is less than 19 or greater | If the Length field of the message header is less than 19 or greater | |||
than 4096, or if the Length field of an OPEN message is less than | than 4096, or if the Length field of an OPEN message is less than | |||
the minimum length of the OPEN message, or if the Length field of an | the minimum length of the OPEN message, or if the Length field of an | |||
UPDATE message is less than the minimum length of the UPDATE message, | UPDATE message is less than the minimum length of the UPDATE message, | |||
or if the Length field of a KEEPALIVE message is not equal to 19, or | or if the Length field of a KEEPALIVE message is not equal to 19, or | |||
if the Length field of a NOTIFICATION message is less than the | if the Length field of a NOTIFICATION message is less than the | |||
minimum length of the NOTIFICATION message, then the Error Subcode is | minimum length of the NOTIFICATION message, then the Error Subcode is | |||
skipping to change at page 26, line 46 | skipping to change at page 28, line 4 | |||
protocol. | protocol. | |||
If the Hold Time field of the OPEN message is unacceptable, then the | If the Hold Time field of the OPEN message is unacceptable, then the | |||
Error Subcode MUST be set to Unacceptable Hold Time. An | Error Subcode MUST be set to Unacceptable Hold Time. An | |||
implementation MUST reject Hold Time values of one or two seconds. | implementation MUST reject Hold Time values of one or two seconds. | |||
An implementation MAY reject any proposed Hold Time. An | An implementation MAY reject any proposed Hold Time. An | |||
implementation which accepts a Hold Time MUST use the negotiated | implementation which accepts a Hold Time MUST use the negotiated | |||
value for the Hold Time. | value for the Hold Time. | |||
If the BGP Identifier field of the OPEN message is syntactically | If the BGP Identifier field of the OPEN message is syntactically | |||
RFC DRAFT August 1998 | ||||
incorrect, then the Error Subcode is set to Bad BGP Identifier. | incorrect, then the Error Subcode is set to Bad BGP Identifier. | |||
Syntactic correctness means that the BGP Identifier field represents | Syntactic correctness means that the BGP Identifier field represents | |||
a valid IP host address. | a valid IP host address. | |||
If one of the Optional Parameters in the OPEN message is not | If one of the Optional Parameters in the OPEN message is not | |||
recognized, then the Error Subcode is set to Unsupported Optional | recognized, then the Error Subcode is set to Unsupported Optional | |||
Parameters. | Parameters. | |||
If the OPEN message carries Authentication Information (as an | If the OPEN message carries Authentication Information (as an | |||
Optional Parameter), then the corresponding authentication procedure | Optional Parameter), then the corresponding authentication procedure | |||
skipping to change at page 27, line 41 | skipping to change at page 29, line 5 | |||
If any recognized attribute has Attribute Length that conflicts with | If any recognized attribute has Attribute Length that conflicts with | |||
the expected length (based on the attribute type code), then the | the expected length (based on the attribute type code), then the | |||
Error Subcode is set to Attribute Length Error. The Data field | Error Subcode is set to Attribute Length Error. The Data field | |||
contains the erroneous attribute (type, length and value). | contains the erroneous attribute (type, length and value). | |||
If any of the mandatory well-known attributes are not present, then | If any of the mandatory well-known attributes are not present, then | |||
the Error Subcode is set to Missing Well-known Attribute. The Data | the Error Subcode is set to Missing Well-known Attribute. The Data | |||
field contains the Attribute Type Code of the missing well-known | field contains the Attribute Type Code of the missing well-known | |||
attribute. | attribute. | |||
RFC DRAFT August 1998 | ||||
If any of the mandatory well-known attributes are not recognized, | If any of the mandatory well-known attributes are not recognized, | |||
then the Error Subcode is set to Unrecognized Well-known Attribute. | then the Error Subcode is set to Unrecognized Well-known Attribute. | |||
The Data field contains the unrecognized attribute (type, length and | The Data field contains the unrecognized attribute (type, length and | |||
value). | value). | |||
If the ORIGIN attribute has an undefined value, then the Error | If the ORIGIN attribute has an undefined value, then the Error | |||
Subcode is set to Invalid Origin Attribute. The Data field contains | Subcode is set to Invalid Origin Attribute. The Data field contains | |||
the unrecognized attribute (type, length and value). | the unrecognized attribute (type, length and value). | |||
If the NEXT_HOP attribute field is syntactically incorrect, then the | If the NEXT_HOP attribute field is syntactically incorrect, then the | |||
skipping to change at page 28, line 42 | skipping to change at page 30, line 4 | |||
If an optional attribute is recognized, then the value of this | If an optional attribute is recognized, then the value of this | |||
attribute is checked. If an error is detected, the attribute is | attribute is checked. If an error is detected, the attribute is | |||
discarded, and the Error Subcode is set to Optional Attribute Error. | discarded, and the Error Subcode is set to Optional Attribute Error. | |||
The Data field contains the attribute (type, length and value). | The Data field contains the attribute (type, length and value). | |||
If any attribute appears more than once in the UPDATE message, then | If any attribute appears more than once in the UPDATE message, then | |||
the Error Subcode is set to Malformed Attribute List. | the Error Subcode is set to Malformed Attribute List. | |||
The NLRI field in the UPDATE message is checked for syntactic | The NLRI field in the UPDATE message is checked for syntactic | |||
RFC DRAFT August 1998 | ||||
validity. If the field is syntactically incorrect, then the Error | validity. If the field is syntactically incorrect, then the Error | |||
Subcode is set to Invalid Network Field. | Subcode is set to Invalid Network Field. | |||
An UPDATE message that contains correct path attributes, but no NLRI, | An UPDATE message that contains correct path attributes, but no NLRI, | |||
shall be treated as a valid UPDATE message. | shall be treated as a valid UPDATE message. | |||
6.4 NOTIFICATION message error handling. | 6.4 NOTIFICATION message error handling. | |||
If a peer sends a NOTIFICATION message, and there is an error in that | If a peer sends a NOTIFICATION message, and there is an error in that | |||
message, there is unfortunately no means of reporting this error via | message, there is unfortunately no means of reporting this error via | |||
skipping to change at page 29, line 37 | skipping to change at page 31, line 5 | |||
with Error Code Finite State Machine Error. | with Error Code Finite State Machine Error. | |||
6.7 Cease. | 6.7 Cease. | |||
In absence of any fatal errors (that are indicated in this section), | In absence of any fatal errors (that are indicated in this section), | |||
a BGP peer may choose at any given time to close its BGP connection | a BGP peer may choose at any given time to close its BGP connection | |||
by sending the NOTIFICATION message with Error Code Cease. However, | by sending the NOTIFICATION message with Error Code Cease. However, | |||
the Cease NOTIFICATION message must not be used when a fatal error | the Cease NOTIFICATION message must not be used when a fatal error | |||
indicated by this section does exist. | indicated by this section does exist. | |||
RFC DRAFT August 1998 | ||||
6.8 Connection collision detection. | 6.8 Connection collision detection. | |||
If a pair of BGP speakers try simultaneously to establish a TCP | If a pair of BGP speakers try simultaneously to establish a TCP | |||
connection to each other, then two parallel connections between this | connection to each other, then two parallel connections between this | |||
pair of speakers might well be formed. We refer to this situation as | pair of speakers might well be formed. We refer to this situation as | |||
connection collision. Clearly, one of these connections must be | connection collision. Clearly, one of these connections must be | |||
closed. | closed. | |||
Based on the value of the BGP Identifier a convention is established | Based on the value of the BGP Identifier a convention is established | |||
for detecting which BGP connection is to be preserved when a | for detecting which BGP connection is to be preserved when a | |||
skipping to change at page 30, line 41 | skipping to change at page 32, line 4 | |||
continues to use the existing one (the one that is already in the | continues to use the existing one (the one that is already in the | |||
OpenConfirm state). | OpenConfirm state). | |||
Comparing BGP Identifiers is done by treating them as (4-octet | Comparing BGP Identifiers is done by treating them as (4-octet | |||
long) unsigned integers. | long) unsigned integers. | |||
A connection collision with an existing BGP connection that is in | A connection collision with an existing BGP connection that is in | |||
Established states causes unconditional closing of the newly | Established states causes unconditional closing of the newly | |||
created connection. Note that a connection collision cannot be | created connection. Note that a connection collision cannot be | |||
detected with connections that are in Idle, or Connect, or Active | detected with connections that are in Idle, or Connect, or Active | |||
RFC DRAFT August 1998 | ||||
states. | states. | |||
Closing the BGP connection (that results from the collision | Closing the BGP connection (that results from the collision | |||
resolution procedure) is accomplished by sending the NOTIFICATION | resolution procedure) is accomplished by sending the NOTIFICATION | |||
message with the Error Code Cease. | message with the Error Code Cease. | |||
7. BGP Version Negotiation. | 7. BGP Version Negotiation. | |||
BGP speakers may negotiate the version of the protocol by making | BGP speakers may negotiate the version of the protocol by making | |||
multiple attempts to open a BGP connection, starting with the highest | multiple attempts to open a BGP connection, starting with the highest | |||
skipping to change at page 31, line 37 | skipping to change at page 33, line 5 | |||
In this state BGP refuses all incoming BGP connections. No | In this state BGP refuses all incoming BGP connections. No | |||
resources are allocated to the peer. In response to the Start | resources are allocated to the peer. In response to the Start | |||
event (initiated by either system or operator) the local system | event (initiated by either system or operator) the local system | |||
initializes all BGP resources, starts the ConnectRetry timer, | initializes all BGP resources, starts the ConnectRetry timer, | |||
initiates a transport connection to other BGP peer, while | initiates a transport connection to other BGP peer, while | |||
listening for connection that may be initiated by the remote | listening for connection that may be initiated by the remote | |||
BGP peer, and changes its state to Connect. The exact value of | BGP peer, and changes its state to Connect. The exact value of | |||
the ConnectRetry timer is a local matter, but should be | the ConnectRetry timer is a local matter, but should be | |||
sufficiently large to allow TCP initialization. | sufficiently large to allow TCP initialization. | |||
RFC DRAFT August 1998 | ||||
If a BGP speaker detects an error, it shuts down the connection | If a BGP speaker detects an error, it shuts down the connection | |||
and changes its state to Idle. Getting out of the Idle state | and changes its state to Idle. Getting out of the Idle state | |||
requires generation of the Start event. If such an event is | requires generation of the Start event. If such an event is | |||
generated automatically, then persistent BGP errors may result | generated automatically, then persistent BGP errors may result | |||
in persistent flapping of the speaker. To avoid such a | in persistent flapping of the speaker. To avoid such a | |||
condition it is recommended that Start events should not be | condition it is recommended that Start events should not be | |||
generated immediately for a peer that was previously | generated immediately for a peer that was previously | |||
transitioned to Idle due to an error. For a peer that was | transitioned to Idle due to an error. For a peer that was | |||
previously transitioned to Idle due to an error, the time | previously transitioned to Idle due to an error, the time | |||
between consecutive generation of Start events, if such events | between consecutive generation of Start events, if such events | |||
skipping to change at page 32, line 38 | skipping to change at page 34, line 5 | |||
In response to any other event (initiated by either system or | In response to any other event (initiated by either system or | |||
operator), the local system releases all BGP resources | operator), the local system releases all BGP resources | |||
associated with this connection and changes its state to Idle. | associated with this connection and changes its state to Idle. | |||
Active state: | Active state: | |||
In this state BGP is trying to acquire a peer by initiating a | In this state BGP is trying to acquire a peer by initiating a | |||
transport protocol connection. | transport protocol connection. | |||
RFC DRAFT August 1998 | ||||
If the transport protocol connection succeeds, the local system | If the transport protocol connection succeeds, the local system | |||
clears the ConnectRetry timer, completes initialization, sends | clears the ConnectRetry timer, completes initialization, sends | |||
an OPEN message to its peer, sets its Hold Timer to a large | an OPEN message to its peer, sets its Hold Timer to a large | |||
value, and changes its state to OpenSent. A Hold Timer value | value, and changes its state to OpenSent. A Hold Timer value | |||
of 4 minutes is suggested. | of 4 minutes is suggested. | |||
In response to the ConnectRetry timer expired event, the local | In response to the ConnectRetry timer expired event, the local | |||
system restarts the ConnectRetry timer, initiates a transport | system restarts the ConnectRetry timer, initiates a transport | |||
connection to other BGP peer, continues to listen for a | connection to other BGP peer, continues to listen for a | |||
connection that may be initiated by the remote BGP peer, and | connection that may be initiated by the remote BGP peer, and | |||
skipping to change at page 33, line 35 | skipping to change at page 35, line 5 | |||
which was originally set to a large value (see above), is | which was originally set to a large value (see above), is | |||
replaced with the negotiated Hold Time value (see section 4.2). | replaced with the negotiated Hold Time value (see section 4.2). | |||
If the negotiated Hold Time value is zero, then the Hold Time | If the negotiated Hold Time value is zero, then the Hold Time | |||
timer and KeepAlive timers are not started. If the value of | timer and KeepAlive timers are not started. If the value of | |||
the Autonomous System field is the same as the local Autonomous | the Autonomous System field is the same as the local Autonomous | |||
System number, then the connection is an "internal" connection; | System number, then the connection is an "internal" connection; | |||
otherwise, it is "external". (This will effect UPDATE | otherwise, it is "external". (This will effect UPDATE | |||
processing as described below.) Finally, the state is changed | processing as described below.) Finally, the state is changed | |||
to OpenConfirm. | to OpenConfirm. | |||
RFC DRAFT August 1998 | ||||
If a disconnect notification is received from the underlying | If a disconnect notification is received from the underlying | |||
transport protocol, the local system closes the BGP connection, | transport protocol, the local system closes the BGP connection, | |||
restarts the ConnectRetry timer, while continue listening for | restarts the ConnectRetry timer, while continue listening for | |||
connection that may be initiated by the remote BGP peer, and | connection that may be initiated by the remote BGP peer, and | |||
goes into the Active state. | goes into the Active state. | |||
If the Hold Timer expires, the local system sends NOTIFICATION | If the Hold Timer expires, the local system sends NOTIFICATION | |||
message with error code Hold Timer Expired and changes its | message with error code Hold Timer Expired and changes its | |||
state to Idle. | state to Idle. | |||
skipping to change at page 34, line 33 | skipping to change at page 36, line 4 | |||
If the local system receives a NOTIFICATION message, it changes | If the local system receives a NOTIFICATION message, it changes | |||
its state to Idle. | its state to Idle. | |||
If the KeepAlive timer expires, the local system sends a | If the KeepAlive timer expires, the local system sends a | |||
KEEPALIVE message and restarts its KeepAlive timer. | KEEPALIVE message and restarts its KeepAlive timer. | |||
If a disconnect notification is received from the underlying | If a disconnect notification is received from the underlying | |||
transport protocol, the local system changes its state to Idle. | transport protocol, the local system changes its state to Idle. | |||
In response to the Stop event (initiated by either system or | In response to the Stop event (initiated by either system or | |||
RFC DRAFT August 1998 | ||||
operator) the local system sends NOTIFICATION message with | operator) the local system sends NOTIFICATION message with | |||
Error Code Cease and changes its state to Idle. | Error Code Cease and changes its state to Idle. | |||
Start event is ignored in the OpenConfirm state. | Start event is ignored in the OpenConfirm state. | |||
In response to any other event the local system sends | In response to any other event the local system sends | |||
NOTIFICATION message with Error Code Finite State Machine Error | NOTIFICATION message with Error Code Finite State Machine Error | |||
and changes its state to Idle. | and changes its state to Idle. | |||
Whenever BGP changes its state from OpenConfirm to Idle, it | Whenever BGP changes its state from OpenConfirm to Idle, it | |||
skipping to change at page 35, line 31 | skipping to change at page 37, line 4 | |||
If the KeepAlive timer expires, the local system sends a | If the KeepAlive timer expires, the local system sends a | |||
KEEPALIVE message and restarts its KeepAlive timer. | KEEPALIVE message and restarts its KeepAlive timer. | |||
Each time the local system sends a KEEPALIVE or UPDATE message, | Each time the local system sends a KEEPALIVE or UPDATE message, | |||
it restarts its KeepAlive timer, unless the negotiated Hold | it restarts its KeepAlive timer, unless the negotiated Hold | |||
Time value is zero. | Time value is zero. | |||
In response to the Stop event (initiated by either system or | In response to the Stop event (initiated by either system or | |||
operator), the local system sends a NOTIFICATION message with | operator), the local system sends a NOTIFICATION message with | |||
RFC DRAFT August 1998 | ||||
Error Code Cease and changes its state to Idle. | Error Code Cease and changes its state to Idle. | |||
Start event is ignored in the Established state. | Start event is ignored in the Established state. | |||
In response to any other event, the local system sends | In response to any other event, the local system sends | |||
NOTIFICATION message with Error Code Finite State Machine Error | NOTIFICATION message with Error Code Finite State Machine Error | |||
and changes its state to Idle. | and changes its state to Idle. | |||
Whenever BGP changes its state from Established to Idle, it | Whenever BGP changes its state from Established to Idle, it | |||
closes the BGP (and transport-level) connection, releases all | closes the BGP (and transport-level) connection, releases all | |||
skipping to change at page 36, line 29 | skipping to change at page 38, line 4 | |||
In. This BGP speaker shall run its Decision Process since the | In. This BGP speaker shall run its Decision Process since the | |||
previously advertised route is not longer available for use. | previously advertised route is not longer available for use. | |||
If the UPDATE message contains a feasible route, it shall be placed | If the UPDATE message contains a feasible route, it shall be placed | |||
in the appropriate Adj-RIB-In, and the following additional actions | in the appropriate Adj-RIB-In, and the following additional actions | |||
shall be taken: | shall be taken: | |||
i) If its Network Layer Reachability Information (NLRI) is identical | i) If its Network Layer Reachability Information (NLRI) is identical | |||
to the one of a route currently stored in the Adj-RIB-In, then the | to the one of a route currently stored in the Adj-RIB-In, then the | |||
new route shall replace the older route in the Adj-RIB-In, thus | new route shall replace the older route in the Adj-RIB-In, thus | |||
RFC DRAFT August 1998 | ||||
implicitly withdrawing the older route from service. The BGP speaker | implicitly withdrawing the older route from service. The BGP speaker | |||
shall run its Decision Process since the older route is no longer | shall run its Decision Process since the older route is no longer | |||
available for use. | available for use. | |||
ii) If the new route is an overlapping route that is included (see | ii) If the new route is an overlapping route that is included (see | |||
9.1.4) in an earlier route contained in the Adj-RIB-In, the BGP | 9.1.4) in an earlier route contained in the Adj-RIB-In, the BGP | |||
speaker shall run its Decision Process since the more specific route | speaker shall run its Decision Process since the more specific route | |||
has implicitly made a portion of the less specific route unavailable | has implicitly made a portion of the less specific route unavailable | |||
for use. | for use. | |||
skipping to change at page 37, line 18 | skipping to change at page 38, line 44 | |||
applying the policies in the local Policy Information Base (PIB) to | applying the policies in the local Policy Information Base (PIB) to | |||
the routes stored in its Adj-RIB-In. The output of the Decision | the routes stored in its Adj-RIB-In. The output of the Decision | |||
Process is the set of routes that will be advertised to all peers; | Process is the set of routes that will be advertised to all peers; | |||
the selected routes will be stored in the local speaker's Adj-RIB- | the selected routes will be stored in the local speaker's Adj-RIB- | |||
Out. | Out. | |||
The selection process is formalized by defining a function that takes | The selection process is formalized by defining a function that takes | |||
the attribute of a given route as an argument and returns a non- | the attribute of a given route as an argument and returns a non- | |||
negative integer denoting the degree of preference for the route. | negative integer denoting the degree of preference for the route. | |||
The function that calculates the degree of preference for a given | The function that calculates the degree of preference for a given | |||
route shall not use as its inputs any of the following: the existence | route shall not use as its inputs any of the following: the | |||
of other routes, the non-existence of other routes, or the path | existence of other routes, the non-existence of other routes, or the | |||
attributes of other routes. Route selection then consists of | path attributes of other routes. Route selection then consists of | |||
individual application of the degree of preference function to each | individual application of the degree of preference function to each | |||
feasible route, followed by the choice of the one with the highest | feasible route, followed by the choice of the one with the highest | |||
degree of preference. | degree of preference. | |||
RFC DRAFT August 1998 | ||||
The Decision Process operates on routes contained in each Adj-RIB-In, | The Decision Process operates on routes contained in each Adj-RIB-In, | |||
and is responsible for: | and is responsible for: | |||
- selection of routes to be advertised to internal peers | - selection of routes to be advertised to internal peers | |||
- selection of routes to be advertised to external peers | - selection of routes to be advertised to external peers | |||
- route aggregation and route information reduction | - route aggregation and route information reduction | |||
The Decision Process takes place in three distinct phases, each | The Decision Process takes place in three distinct phases, each | |||
triggered by a different event: | triggered by a different event: | |||
a) Phase 1 is responsible for calculating the degree of preference | a) Phase 1 is responsible for calculating the degree of preference | |||
for each route received from an external peer, and for advertising | for each route received from an external peer, and MAY also | |||
to the other internal peers the routes that have the highest | advertise to all the internal peers the routes from external | |||
degree of preference for each distinct destination. | peers that have the highest degree of preference for each distinct | |||
destination. | ||||
b) Phase 2 is invoked on completion of phase 1. It is responsible | b) Phase 2 is invoked on completion of phase 1. It is responsible | |||
for choosing the best route out of all those available for each | for choosing the best route out of all those available for each | |||
distinct destination, and for installing each chosen route into | distinct destination, and for installing each chosen route into | |||
the appropriate Loc-RIB. | the appropriate Loc-RIB. | |||
c) Phase 3 is invoked after the Loc-RIB has been modified. It is | c) Phase 3 is invoked after the Loc-RIB has been modified. It is | |||
responsible for disseminating routes in the Loc-RIB to each | responsible for disseminating routes in the Loc-RIB to each | |||
external peer, according to the policies contained in the PIB. | external peer, according to the policies contained in the PIB. | |||
Route aggregation and information reduction can optionally be | Route aggregation and information reduction can optionally be | |||
skipping to change at page 38, line 20 | skipping to change at page 40, line 4 | |||
The Phase 1 decision function is a separate process which completes | The Phase 1 decision function is a separate process which completes | |||
when it has no further work to do. | when it has no further work to do. | |||
The Phase 1 decision function shall lock an Adj-RIB-In prior to | The Phase 1 decision function shall lock an Adj-RIB-In prior to | |||
operating on any route contained within it, and shall unlock it after | operating on any route contained within it, and shall unlock it after | |||
operating on all new or unfeasible routes contained within it. | operating on all new or unfeasible routes contained within it. | |||
For each newly received or replacement feasible route, the local BGP | For each newly received or replacement feasible route, the local BGP | |||
speaker shall determine a degree of preference. If the route is | speaker shall determine a degree of preference. If the route is | |||
RFC DRAFT August 1998 | ||||
learned from an internal peer, the value of the LOCAL_PREF attribute | learned from an internal peer, the value of the LOCAL_PREF attribute | |||
shall be taken as the degree of preference. If the route is learned | shall be taken as the degree of preference. If the route is learned | |||
from an external peer, then the degree of preference shall be | from an external peer, then the degree of preference shall be | |||
computed based on preconfigured policy information and used as the | computed based on preconfigured policy information and used as the | |||
LOCAL_PREF value in any IBGP readvertisement. The exact nature of | LOCAL_PREF value in any IBGP readvertisement. The exact nature of | |||
this policy information and the computation involved is a local | this policy information and the computation involved is a local | |||
matter. The local speaker shall then run the internal update process | matter. The local speaker shall then run the internal update process | |||
of 9.2.1 to select and advertise the most preferable route. | of 9.2.1 to select and advertise the most preferable route. | |||
9.1.2 Phase 2: Route Selection | 9.1.2 Phase 2: Route Selection | |||
skipping to change at page 39, line 18 | skipping to change at page 41, line 4 | |||
a) the highest degree of preference of any route to the same set | a) the highest degree of preference of any route to the same set | |||
of destinations, or | of destinations, or | |||
b) is the only route to that destination, or | b) is the only route to that destination, or | |||
c) is selected as a result of the Phase 2 tie breaking rules | c) is selected as a result of the Phase 2 tie breaking rules | |||
specified in 9.1.2.1. | specified in 9.1.2.1. | |||
The local speaker SHALL then install that route in the Loc-RIB, | The local speaker SHALL then install that route in the Loc-RIB, | |||
replacing any route to the same destination that is currently being | replacing any route to the same destination that is currently being | |||
RFC DRAFT August 1998 | ||||
held in the Loc-RIB. The local speaker MUST determine the immediate | held in the Loc-RIB. The local speaker MUST determine the immediate | |||
next hop to the address depicted by the NEXT_HOP attribute of the | next hop to the address depicted by the NEXT_HOP attribute of the | |||
selected route by performing a lookup in the IGP and selecting one of | selected route by performing a lookup in the IGP and selecting one of | |||
the possible paths in the IGP. This immediate next hop MUST be used | the possible paths in the IGP. This immediate next hop MUST be used | |||
when installing the selected route in the Loc-RIB. If the route to | when installing the selected route in the Loc-RIB. If the route to | |||
the address depicted by the NEXT_HOP attribute changes such that the | the address depicted by the NEXT_HOP attribute changes such that the | |||
immediate next hop changes, route selection should be recalculated as | immediate next hop changes, route selection should be recalculated as | |||
specified above. | specified above. | |||
Unfeasible routes shall be removed from the Loc-RIB, and | Unfeasible routes shall be removed from the Loc-RIB, and | |||
skipping to change at page 40, line 17 | skipping to change at page 42, line 5 | |||
not intended to specify any particular implementation. BGP | not intended to specify any particular implementation. BGP | |||
implementations MAY use any algorithm which produces the same results | implementations MAY use any algorithm which produces the same results | |||
as those described here. | as those described here. | |||
a) Remove from consideration routes with less-preferred | a) Remove from consideration routes with less-preferred | |||
MULTI_EXIT_DISC attributes. MULTI_EXIT_DISC is only comparable | MULTI_EXIT_DISC attributes. MULTI_EXIT_DISC is only comparable | |||
between routes learned from the same neighboring AS. Routes which | between routes learned from the same neighboring AS. Routes which | |||
do not have the MULTI_EXIT_DISC attribute are considered to have | do not have the MULTI_EXIT_DISC attribute are considered to have | |||
the highest possible MULTI_EXIT_DISC value. | the highest possible MULTI_EXIT_DISC value. | |||
RFC DRAFT August 1998 | ||||
This is also described in the following procedure: | This is also described in the following procedure: | |||
for m = all routes still under consideration | for m = all routes still under consideration | |||
for n = all routes still under consideration | for n = all routes still under consideration | |||
if (neighborAS(m) == neighborAS(n)) and (MED(n) < MED(m)) | if (neighborAS(m) == neighborAS(n)) and (MED(n) < MED(m)) | |||
remove route m from consideration | remove route m from consideration | |||
In the pseudo-code above, MED(n) is a function which returns the | In the pseudo-code above, MED(n) is a function which returns the | |||
value of route n's MULTI_EXIT_DISC attribute. If route n has no | value of route n's MULTI_EXIT_DISC attribute. If route n has no | |||
MULTI_EXIT_DISC attribute, the function returns the highest | MULTI_EXIT_DISC attribute, the function returns the highest | |||
skipping to change at page 41, line 10 | skipping to change at page 43, line 5 | |||
NEXT_HOP attribute of the route. | NEXT_HOP attribute of the route. | |||
c) If at least one of the candidate routes was received from an | c) If at least one of the candidate routes was received from an | |||
external peer in a neighboring autonomous system, remove from | external peer in a neighboring autonomous system, remove from | |||
consideration all routes which were received from internal peers. | consideration all routes which were received from internal peers. | |||
d) Remove from consideration all routes other than the route that | d) Remove from consideration all routes other than the route that | |||
was advertised by the BGP speaker whose BGP Identifier has the | was advertised by the BGP speaker whose BGP Identifier has the | |||
lowest value. | lowest value. | |||
RFC DRAFT August 1998 | ||||
9.1.3 Phase 3: Route Dissemination | 9.1.3 Phase 3: Route Dissemination | |||
The Phase 3 decision function shall be invoked on completion of Phase | The Phase 3 decision function shall be invoked on completion of Phase | |||
2, or when any of the following events occur: | 2, or when any of the following events occur: | |||
a) when routes in a Loc-RIB to local destinations have changed | a) when routes in a Loc-RIB to local destinations have changed | |||
b) when locally generated routes learned by means outside of BGP | b) when locally generated routes learned by means outside of BGP | |||
have changed | have changed | |||
skipping to change at page 42, line 6 | skipping to change at page 44, line 5 | |||
AS_PATH attribute to include only its own AS number and that of the | AS_PATH attribute to include only its own AS number and that of the | |||
peer that advertised the route (such truncation requires the ORIGIN | peer that advertised the route (such truncation requires the ORIGIN | |||
attribute to be set to INCOMPLETE). In addition an implementation is | attribute to be set to INCOMPLETE). In addition an implementation is | |||
not required to pass optional or discretionary path attributes with | not required to pass optional or discretionary path attributes with | |||
such an advertisement. | such an advertisement. | |||
When the updating of the Adj-RIBs-Out and the Forwarding Information | When the updating of the Adj-RIBs-Out and the Forwarding Information | |||
Base (FIB) is complete, the local BGP speaker shall run the external | Base (FIB) is complete, the local BGP speaker shall run the external | |||
update process of 9.2.2. | update process of 9.2.2. | |||
RFC DRAFT August 1998 | ||||
9.1.4 Overlapping Routes | 9.1.4 Overlapping Routes | |||
A BGP speaker may transmit routes with overlapping Network Layer | A BGP speaker may transmit routes with overlapping Network Layer | |||
Reachability Information (NLRI) to another BGP speaker. NLRI overlap | Reachability Information (NLRI) to another BGP speaker. NLRI overlap | |||
occurs when a set of destinations are identified in non-matching | occurs when a set of destinations are identified in non-matching | |||
multiple routes. Since BGP encodes NLRI using IP prefixes, overlap | multiple routes. Since BGP encodes NLRI using IP prefixes, overlap | |||
will always exhibit subset relationships. A route describing a | will always exhibit subset relationships. A route describing a | |||
smaller set of destinations (a longer prefix) is said to be more | smaller set of destinations (a longer prefix) is said to be more | |||
specific than a route describing a larger set of destinations (a | specific than a route describing a larger set of destinations (a | |||
shorted prefix); similarly, a route describing a larger set of | shorted prefix); similarly, a route describing a larger set of | |||
skipping to change at page 43, line 5 | skipping to change at page 45, line 4 | |||
If both a less and a more specific route are accepted, then the | If both a less and a more specific route are accepted, then the | |||
Decision Process MUST either install both the less and the more | Decision Process MUST either install both the less and the more | |||
specific routes or it MUST aggregate the two routes and install the | specific routes or it MUST aggregate the two routes and install the | |||
aggregated route. | aggregated route. | |||
If a BGP speaker chooses to aggregate, then it MUST add | If a BGP speaker chooses to aggregate, then it MUST add | |||
ATOMIC_AGGREGATE attribute to the route. A route that carries | ATOMIC_AGGREGATE attribute to the route. A route that carries | |||
ATOMIC_AGGREGATE attribute can not be de-aggregated. That is, the | ATOMIC_AGGREGATE attribute can not be de-aggregated. That is, the | |||
NLRI of this route can not be made more specific. Forwarding along | NLRI of this route can not be made more specific. Forwarding along | |||
such a route does not guarantee that IP packets will actually | such a route does not guarantee that IP packets will actually | |||
RFC DRAFT August 1998 | ||||
traverse only ASs listed in the AS_PATH attribute of the route. | traverse only ASs listed in the AS_PATH attribute of the route. | |||
9.2 Update-Send Process | 9.2 Update-Send Process | |||
The Update-Send process is responsible for advertising UPDATE | The Update-Send process is responsible for advertising UPDATE | |||
messages to all peers. For example, it distributes the routes chosen | messages to all peers. For example, it distributes the routes chosen | |||
by the Decision Process to other BGP speakers which may be located in | by the Decision Process to other BGP speakers which may be located in | |||
either the same autonomous system or a neighboring autonomous system. | either the same autonomous system or a neighboring autonomous system. | |||
Rules for information exchange between BGP speakers located in | Rules for information exchange between BGP speakers located in | |||
different autonomous systems are given in 9.2.2; rules for | different autonomous systems are given in 9.2.2; rules for | |||
skipping to change at page 43, line 47 | skipping to change at page 46, line 5 | |||
WITHDRAWN ROUTES field, it shall remove from its Adj-RIB-In all | WITHDRAWN ROUTES field, it shall remove from its Adj-RIB-In all | |||
routes whose destinations was carried in this field (as IP prefixes). | routes whose destinations was carried in this field (as IP prefixes). | |||
The speaker shall take the following additional steps: | The speaker shall take the following additional steps: | |||
1) if the corresponding feasible route had not been previously | 1) if the corresponding feasible route had not been previously | |||
advertised, then no further action is necessary | advertised, then no further action is necessary | |||
2) if the corresponding feasible route had been previously | 2) if the corresponding feasible route had been previously | |||
advertised, then: | advertised, then: | |||
RFC DRAFT August 1998 | ||||
i) if a new route is selected for advertisement that has the | i) if a new route is selected for advertisement that has the | |||
same Network Layer Reachability Information as the unfeasible | same Network Layer Reachability Information as the unfeasible | |||
routes, then the local BGP speaker shall advertise the | routes, then the local BGP speaker shall advertise the | |||
replacement route | replacement route | |||
ii) if a replacement route is not available for advertisement, | ii) if a replacement route is not available for advertisement, | |||
then the BGP speaker shall include the destinations of the | then the BGP speaker shall include the destinations of the | |||
unfeasible route (in form of IP prefixes) in the WITHDRAWN | unfeasible route (in form of IP prefixes) in the WITHDRAWN | |||
ROUTES field of an UPDATE message, and shall send this message | ROUTES field of an UPDATE message, and shall send this message | |||
to each peer to whom it had previously advertised the | to each peer to whom it had previously advertised the | |||
skipping to change at page 44, line 42 | skipping to change at page 47, line 5 | |||
route with the MULTI_EXIT_DISC attribute shall be preferred to a | route with the MULTI_EXIT_DISC attribute shall be preferred to a | |||
route without the MULTI_EXIT_DISC attribute. | route without the MULTI_EXIT_DISC attribute. | |||
b) If the local system can ascertain the cost of a path to the | b) If the local system can ascertain the cost of a path to the | |||
entity depicted by the NEXT_HOP attribute of the candidate route, | entity depicted by the NEXT_HOP attribute of the candidate route, | |||
select the route with the lowest cost. | select the route with the lowest cost. | |||
c) In all other cases, select the route that was advertised by the | c) In all other cases, select the route that was advertised by the | |||
BGP speaker whose BGP Identifier has the lowest value. | BGP speaker whose BGP Identifier has the lowest value. | |||
RFC DRAFT August 1998 | ||||
9.2.2 External Updates | 9.2.2 External Updates | |||
The external update process is concerned with the distribution of | The external update process is concerned with the distribution of | |||
routing information to external peers. As part of Phase 3 route | routing information to external peers. As part of Phase 3 route | |||
selection process, the BGP speaker has updated its Adj-RIBs-Out and | selection process, the BGP speaker has updated its Adj-RIBs-Out and | |||
its Forwarding Table. All newly installed routes and all newly | its Forwarding Table. All newly installed routes and all newly | |||
unfeasible routes for which there is no replacement route shall be | unfeasible routes for which there is no replacement route shall be | |||
advertised to external peers by means of UPDATE message. | advertised to external peers by means of UPDATE message. | |||
Any routes in the Loc-RIB marked as unfeasible shall be removed. | Any routes in the Loc-RIB marked as unfeasible shall be removed. | |||
skipping to change at page 45, line 41 | skipping to change at page 48, line 5 | |||
external peers must be separated by at least | external peers must be separated by at least | |||
MinRouteAdvertisementInterval. Clearly, this can only be achieved | MinRouteAdvertisementInterval. Clearly, this can only be achieved | |||
precisely by keeping a separate timer for each common set of | precisely by keeping a separate timer for each common set of | |||
destinations. This would be unwarranted overhead. Any technique which | destinations. This would be unwarranted overhead. Any technique which | |||
ensures that the interval between two UPDATE messages sent from a | ensures that the interval between two UPDATE messages sent from a | |||
single BGP speaker that advertise feasible routes to some common set | single BGP speaker that advertise feasible routes to some common set | |||
of destinations received from external peers will be at least | of destinations received from external peers will be at least | |||
MinRouteAdvertisementInterval, and will also ensure a constant upper | MinRouteAdvertisementInterval, and will also ensure a constant upper | |||
bound on the interval is acceptable. | bound on the interval is acceptable. | |||
RFC DRAFT August 1998 | ||||
Since fast convergence is needed within an autonomous system, this | Since fast convergence is needed within an autonomous system, this | |||
procedure does not apply for routes received from other internal | procedure does not apply for routes received from other internal | |||
peers. To avoid long-lived black holes, the procedure does not apply | peers. To avoid long-lived black holes, the procedure does not apply | |||
to the explicit withdrawal of unfeasible routes (that is, routes | to the explicit withdrawal of unfeasible routes (that is, routes | |||
whose destinations (expressed as IP prefixes) are listed in the | whose destinations (expressed as IP prefixes) are listed in the | |||
WITHDRAWN ROUTES field of an UPDATE message). | WITHDRAWN ROUTES field of an UPDATE message). | |||
This procedure does not limit the rate of route selection, but only | This procedure does not limit the rate of route selection, but only | |||
the rate of route advertisement. If new routes are selected multiple | the rate of route advertisement. If new routes are selected multiple | |||
times while awaiting the expiration of MinRouteAdvertisementInterval, | times while awaiting the expiration of MinRouteAdvertisementInterval, | |||
skipping to change at page 46, line 38 | skipping to change at page 49, line 5 | |||
The amount of jitter to be introduced shall be determined by | The amount of jitter to be introduced shall be determined by | |||
multiplying the base value of the appropriate timer by a random | multiplying the base value of the appropriate timer by a random | |||
factor which is uniformly distributed in the range from 0.75 to 1.0. | factor which is uniformly distributed in the range from 0.75 to 1.0. | |||
9.2.4 Efficient Organization of Routing Information | 9.2.4 Efficient Organization of Routing Information | |||
Having selected the routing information which it will advertise, a | Having selected the routing information which it will advertise, a | |||
BGP speaker may avail itself of several methods to organize this | BGP speaker may avail itself of several methods to organize this | |||
information in an efficient manner. | information in an efficient manner. | |||
RFC DRAFT August 1998 | ||||
9.2.4.1 Information Reduction | 9.2.4.1 Information Reduction | |||
Information reduction may imply a reduction in granularity of policy | Information reduction may imply a reduction in granularity of policy | |||
control - after information is collapsed, the same policies will | control - after information is collapsed, the same policies will | |||
apply to all destinations and paths in the equivalence class. | apply to all destinations and paths in the equivalence class. | |||
The Decision Process may optionally reduce the amount of information | The Decision Process may optionally reduce the amount of information | |||
that it will place in the Adj-RIBs-Out by any of the following | that it will place in the Adj-RIBs-Out by any of the following | |||
methods: | methods: | |||
skipping to change at page 47, line 40 | skipping to change at page 50, line 4 | |||
practice this is not likely to be a problem, since once an IP | practice this is not likely to be a problem, since once an IP | |||
packet arrives at the edge of a group of autonomous systems, the | packet arrives at the edge of a group of autonomous systems, the | |||
BGP speaker at that point is likely to have more detailed path | BGP speaker at that point is likely to have more detailed path | |||
information and can distinguish individual paths to destinations. | information and can distinguish individual paths to destinations. | |||
9.2.4.2 Aggregating Routing Information | 9.2.4.2 Aggregating Routing Information | |||
Aggregation is the process of combining the characteristics of | Aggregation is the process of combining the characteristics of | |||
several different routes in such a way that a single route can be | several different routes in such a way that a single route can be | |||
advertised. Aggregation can occur as part of the decision process | advertised. Aggregation can occur as part of the decision process | |||
RFC DRAFT August 1998 | ||||
to reduce the amount of routing information that will be placed in | to reduce the amount of routing information that will be placed in | |||
the Adj-RIBs-Out. | the Adj-RIBs-Out. | |||
Aggregation reduces the amount of information that a BGP speaker must | Aggregation reduces the amount of information that a BGP speaker must | |||
store and exchange with other BGP speakers. Routes can be aggregated | store and exchange with other BGP speakers. Routes can be aggregated | |||
by applying the following procedure separately to path attributes of | by applying the following procedure separately to path attributes of | |||
like type and to the Network Layer Reachability Information. | like type and to the Network Layer Reachability Information. | |||
Routes that have the following attributes shall not be aggregated | Routes that have the following attributes shall not be aggregated | |||
unless the corresponding attributes of each route are identical: | unless the corresponding attributes of each route are identical: | |||
skipping to change at page 48, line 41 | skipping to change at page 51, line 4 | |||
- all tuples of the type AS_SEQUENCE in the aggregated AS_PATH | - all tuples of the type AS_SEQUENCE in the aggregated AS_PATH | |||
shall appear in all of the AS_PATH in the initial set of routes | shall appear in all of the AS_PATH in the initial set of routes | |||
to be aggregated. | to be aggregated. | |||
- all tuples of the type AS_SET in the aggregated AS_PATH shall | - all tuples of the type AS_SET in the aggregated AS_PATH shall | |||
appear in at least one of the AS_PATH in the initial set (they | appear in at least one of the AS_PATH in the initial set (they | |||
may appear as either AS_SET or AS_SEQUENCE types). | may appear as either AS_SET or AS_SEQUENCE types). | |||
- for any tuple X of the type AS_SEQUENCE in the aggregated | - for any tuple X of the type AS_SEQUENCE in the aggregated | |||
RFC DRAFT August 1998 | ||||
AS_PATH which precedes tuple Y in the aggregated AS_PATH, X | AS_PATH which precedes tuple Y in the aggregated AS_PATH, X | |||
precedes Y in each AS_PATH in the initial set which contains Y, | precedes Y in each AS_PATH in the initial set which contains Y, | |||
regardless of the type of Y. | regardless of the type of Y. | |||
- No tuple with the same value shall appear more than once in | - No tuple with the same value shall appear more than once in | |||
the aggregated AS_PATH, regardless of the tuple's type. | the aggregated AS_PATH, regardless of the tuple's type. | |||
An implementation may choose any algorithm which conforms to these | An implementation may choose any algorithm which conforms to these | |||
rules. At a minimum a conformant implementation shall be able to | rules. At a minimum a conformant implementation shall be able to | |||
perform the following algorithm that meets all of the above | perform the following algorithm that meets all of the above | |||
skipping to change at page 49, line 37 | skipping to change at page 52, line 4 | |||
aggregated should be ignored. | aggregated should be ignored. | |||
9.3 Route Selection Criteria | 9.3 Route Selection Criteria | |||
Generally speaking, additional rules for comparing routes among | Generally speaking, additional rules for comparing routes among | |||
several alternatives are outside the scope of this document. There | several alternatives are outside the scope of this document. There | |||
are two exceptions: | are two exceptions: | |||
- If the local AS appears in the AS path of the new route being | - If the local AS appears in the AS path of the new route being | |||
considered, then that new route cannot be viewed as better than | considered, then that new route cannot be viewed as better than | |||
RFC DRAFT August 1998 | ||||
any other route. If such a route were ever used, a routing loop | any other route. If such a route were ever used, a routing loop | |||
could result (see Section 6.3). | could result (see Section 6.3). | |||
- In order to achieve successful distributed operation, only | - In order to achieve successful distributed operation, only | |||
routes with a likelihood of stability can be chosen. Thus, an AS | routes with a likelihood of stability can be chosen. Thus, an AS | |||
must avoid using unstable routes, and it must not make rapid | must avoid using unstable routes, and it must not make rapid | |||
spontaneous changes to its choice of route. Quantifying the terms | spontaneous changes to its choice of route. Quantifying the terms | |||
"unstable" and "rapid" in the previous sentence will require | "unstable" and "rapid" in the previous sentence will require | |||
experience, but the principle is clear. | experience, but the principle is clear. | |||
skipping to change at page 50, line 35 | skipping to change at page 53, line 5 | |||
1 - Idle | 1 - Idle | |||
2 - Connect | 2 - Connect | |||
3 - Active | 3 - Active | |||
4 - OpenSent | 4 - OpenSent | |||
5 - OpenConfirm | 5 - OpenConfirm | |||
6 - Established | 6 - Established | |||
BGP Events: | BGP Events: | |||
RFC DRAFT August 1998 | ||||
1 - BGP Start | 1 - BGP Start | |||
2 - BGP Stop | 2 - BGP Stop | |||
3 - BGP Transport connection open | 3 - BGP Transport connection open | |||
4 - BGP Transport connection closed | 4 - BGP Transport connection closed | |||
5 - BGP Transport connection open failed | 5 - BGP Transport connection open failed | |||
6 - BGP Transport fatal error | 6 - BGP Transport fatal error | |||
7 - ConnectRetry timer expired | 7 - ConnectRetry timer expired | |||
8 - Hold Timer expired | 8 - Hold Timer expired | |||
9 - KeepAlive timer expired | 9 - KeepAlive timer expired | |||
10 - Receive OPEN message | 10 - Receive OPEN message | |||
skipping to change at page 51, line 32 | skipping to change at page 54, line 4 | |||
others Release resources none 1 | others Release resources none 1 | |||
Active (3) | Active (3) | |||
1 none none 3 | 1 none none 3 | |||
3 Complete initialization OPEN 4 | 3 Complete initialization OPEN 4 | |||
Clear ConnectRetry timer | Clear ConnectRetry timer | |||
5 Close connection 3 | 5 Close connection 3 | |||
Restart ConnectRetry timer | Restart ConnectRetry timer | |||
7 Restart ConnectRetry timer none 2 | 7 Restart ConnectRetry timer none 2 | |||
Initiate a transport connection | Initiate a transport connection | |||
RFC DRAFT August 1998 | ||||
others Release resources none 1 | others Release resources none 1 | |||
OpenSent(4) | OpenSent(4) | |||
1 none none 4 | 1 none none 4 | |||
4 Close transport connection none 3 | 4 Close transport connection none 3 | |||
Restart ConnectRetry timer | Restart ConnectRetry timer | |||
6 Release resources none 1 | 6 Release resources none 1 | |||
10 Process OPEN is OK KEEPALIVE 5 | 10 Process OPEN is OK KEEPALIVE 5 | |||
Process OPEN failed NOTIFICATION 1 | Process OPEN failed NOTIFICATION 1 | |||
others Close transport connection NOTIFICATION 1 | others Close transport connection NOTIFICATION 1 | |||
skipping to change at page 52, line 29 | skipping to change at page 55, line 5 | |||
Process UPDATE failed NOTIFICATION 1 | Process UPDATE failed NOTIFICATION 1 | |||
13 Close transport connection 1 | 13 Close transport connection 1 | |||
Release resources | Release resources | |||
others Close transport connection NOTIFICATION 1 | others Close transport connection NOTIFICATION 1 | |||
Release resources | Release resources | |||
--------------------------------------------------------------------- | --------------------------------------------------------------------- | |||
The following is a condensed version of the above state transition | The following is a condensed version of the above state transition | |||
table. | table. | |||
RFC DRAFT August 1998 | ||||
Events| Idle | Connect | Active | OpenSent | OpenConfirm | Estab | Events| Idle | Connect | Active | OpenSent | OpenConfirm | Estab | |||
| (1) | (2) | (3) | (4) | (5) | (6) | | (1) | (2) | (3) | (4) | (5) | (6) | |||
|--------------------------------------------------------------- | |--------------------------------------------------------------- | |||
1 | 2 | 2 | 3 | 4 | 5 | 6 | 1 | 2 | 2 | 3 | 4 | 5 | 6 | |||
| | | | | | | | | | | | | | |||
2 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 1 | 1 | 1 | |||
| | | | | | | | | | | | | | |||
3 | 1 | 4 | 4 | 1 | 1 | 1 | 3 | 1 | 4 | 4 | 1 | 1 | 1 | |||
| | | | | | | | | | | | | | |||
4 | 1 | 1 | 1 | 3 | 1 | 1 | 4 | 1 | 1 | 1 | 3 | 1 | 1 | |||
skipping to change at page 53, line 30 | skipping to change at page 56, line 5 | |||
Appendix 2. Comparison with RFC1267 | Appendix 2. Comparison with RFC1267 | |||
BGP-4 is capable of operating in an environment where a set of | BGP-4 is capable of operating in an environment where a set of | |||
reachable destinations may be expressed via a single IP prefix. The | reachable destinations may be expressed via a single IP prefix. The | |||
concept of network classes, or subnetting is foreign to BGP-4. To | concept of network classes, or subnetting is foreign to BGP-4. To | |||
accommodate these capabilities BGP-4 changes semantics and encoding | accommodate these capabilities BGP-4 changes semantics and encoding | |||
associated with the AS_PATH attribute. New text has been added to | associated with the AS_PATH attribute. New text has been added to | |||
define semantics associated with IP prefixes. These abilities allow | define semantics associated with IP prefixes. These abilities allow | |||
BGP-4 to support the proposed supernetting scheme [9]. | BGP-4 to support the proposed supernetting scheme [9]. | |||
RFC DRAFT August 1998 | ||||
To simplify configuration this version introduces a new attribute, | To simplify configuration this version introduces a new attribute, | |||
LOCAL_PREF, that facilitates route selection procedures. | LOCAL_PREF, that facilitates route selection procedures. | |||
The INTER_AS_METRIC attribute has been renamed to be MULTI_EXIT_DISC. | The INTER_AS_METRIC attribute has been renamed to be MULTI_EXIT_DISC. | |||
A new attribute, ATOMIC_AGGREGATE, has been introduced to insure that | A new attribute, ATOMIC_AGGREGATE, has been introduced to insure that | |||
certain aggregates are not de-aggregated. Another new attribute, | certain aggregates are not de-aggregated. Another new attribute, | |||
AGGREGATOR, can be added to aggregate routes in order to advertise | AGGREGATOR, can be added to aggregate routes in order to advertise | |||
which AS and which BGP speaker within that AS caused the aggregation. | which AS and which BGP speaker within that AS caused the aggregation. | |||
To insure that Hold Timers are symmetric, the Hold Time is now | To insure that Hold Timers are symmetric, the Hold Time is now | |||
skipping to change at page 54, line 32 | skipping to change at page 57, line 5 | |||
accommodate the TCP user interface provided by 4.3 BSD. | accommodate the TCP user interface provided by 4.3 BSD. | |||
The notion of Up/Down/Horizontal relations present in RFC1105 has | The notion of Up/Down/Horizontal relations present in RFC1105 has | |||
been removed from the protocol. | been removed from the protocol. | |||
The changes in the message format from RFC1105 are as follows: | The changes in the message format from RFC1105 are as follows: | |||
1. The Hold Time field has been removed from the BGP header and | 1. The Hold Time field has been removed from the BGP header and | |||
added to the OPEN message. | added to the OPEN message. | |||
RFC DRAFT August 1998 | ||||
2. The version field has been removed from the BGP header and | 2. The version field has been removed from the BGP header and | |||
added to the OPEN message. | added to the OPEN message. | |||
3. The Link Type field has been removed from the OPEN message. | 3. The Link Type field has been removed from the OPEN message. | |||
4. The OPEN CONFIRM message has been eliminated and replaced with | 4. The OPEN CONFIRM message has been eliminated and replaced with | |||
implicit confirmation provided by the KEEPALIVE message. | implicit confirmation provided by the KEEPALIVE message. | |||
5. The format of the UPDATE message has been changed | 5. The format of the UPDATE message has been changed | |||
significantly. New fields were added to the UPDATE message to | significantly. New fields were added to the UPDATE message to | |||
skipping to change at page 55, line 24 | skipping to change at page 58, line 4 | |||
with precedence set to Internetwork Control (110) value (see also | with precedence set to Internetwork Control (110) value (see also | |||
[6]). | [6]). | |||
Appendix 6. Implementation Recommendations | Appendix 6. Implementation Recommendations | |||
This section presents some implementation recommendations. | This section presents some implementation recommendations. | |||
6.1 Multiple Networks Per Message | 6.1 Multiple Networks Per Message | |||
The BGP protocol allows for multiple address prefixes with the same | The BGP protocol allows for multiple address prefixes with the same | |||
RFC DRAFT August 1998 | ||||
AS path and next-hop gateway to be specified in one message. Making | AS path and next-hop gateway to be specified in one message. Making | |||
use of this capability is highly recommended. With one address prefix | use of this capability is highly recommended. With one address prefix | |||
per message there is a substantial increase in overhead in the | per message there is a substantial increase in overhead in the | |||
receiver. Not only does the system overhead increase due to the | receiver. Not only does the system overhead increase due to the | |||
reception of multiple messages, but the overhead of scanning the | reception of multiple messages, but the overhead of scanning the | |||
routing table for updates to BGP peers and other routing protocols | routing table for updates to BGP peers and other routing protocols | |||
(and sending the associated messages) is incurred multiple times as | (and sending the associated messages) is incurred multiple times as | |||
well. One method of building messages containing many address | well. One method of building messages containing many address | |||
prefixes per AS path and gateway from a routing table that is not | prefixes per AS path and gateway from a routing table that is not | |||
organized per AS path is to build many messages as the routing table | organized per AS path is to build many messages as the routing table | |||
skipping to change at page 56, line 25 | skipping to change at page 59, line 5 | |||
6.2 Processing Messages on a Stream Protocol | 6.2 Processing Messages on a Stream Protocol | |||
BGP uses TCP as a transport mechanism. Due to the stream nature of | BGP uses TCP as a transport mechanism. Due to the stream nature of | |||
TCP, all the data for received messages does not necessarily arrive | TCP, all the data for received messages does not necessarily arrive | |||
at the same time. This can make it difficult to process the data as | at the same time. This can make it difficult to process the data as | |||
messages, especially on systems such as BSD Unix where it is not | messages, especially on systems such as BSD Unix where it is not | |||
possible to determine how much data has been received but not yet | possible to determine how much data has been received but not yet | |||
processed. | processed. | |||
RFC DRAFT August 1998 | ||||
One method that can be used in this situation is to first try to read | One method that can be used in this situation is to first try to read | |||
just the message header. For the KEEPALIVE message type, this is a | just the message header. For the KEEPALIVE message type, this is a | |||
complete message; for other message types, the header should first be | complete message; for other message types, the header should first be | |||
verified, in particular the total length. If all checks are | verified, in particular the total length. If all checks are | |||
successful, the specified length, minus the size of the message | successful, the specified length, minus the size of the message | |||
header is the amount of data left to read. An implementation that | header is the amount of data left to read. An implementation that | |||
would "hang" the routing information process while trying to read | would "hang" the routing information process while trying to read | |||
from a peer could set up a message buffer (4096 bytes) per peer and | from a peer could set up a message buffer (4096 bytes) per peer and | |||
fill it with data as available until a complete message has been | fill it with data as available until a complete message has been | |||
received. | received. | |||
skipping to change at page 57, line 22 | skipping to change at page 60, line 5 | |||
6.5 Path attribute ordering | 6.5 Path attribute ordering | |||
Implementations which combine update messages as described above in | Implementations which combine update messages as described above in | |||
6.1 may prefer to see all path attributes presented in a known order. | 6.1 may prefer to see all path attributes presented in a known order. | |||
This permits them to quickly identify sets of attributes from | This permits them to quickly identify sets of attributes from | |||
different update messages which are semantically identical. To | different update messages which are semantically identical. To | |||
facilitate this, it is a useful optimization to order the path | facilitate this, it is a useful optimization to order the path | |||
attributes according to type code. This optimization is entirely | attributes according to type code. This optimization is entirely | |||
optional. | optional. | |||
RFC DRAFT August 1998 | ||||
6.6 AS_SET sorting | 6.6 AS_SET sorting | |||
Another useful optimization that can be done to simplify this | Another useful optimization that can be done to simplify this | |||
situation is to sort the AS numbers found in an AS_SET. This | situation is to sort the AS numbers found in an AS_SET. This | |||
optimization is entirely optional. | optimization is entirely optional. | |||
6.7 Control over version negotiation | 6.7 Control over version negotiation | |||
Since BGP-4 is capable of carrying aggregated routes which cannot be | Since BGP-4 is capable of carrying aggregated routes which cannot be | |||
properly represented in BGP-3, an implementation which supports BGP-4 | properly represented in BGP-3, an implementation which supports BGP-4 | |||
skipping to change at page 58, line 23 | skipping to change at page 61, line 4 | |||
same order if either: | same order if either: | |||
- X precedes Y in both AS_PATH attributes, or - Y precedes X | - X precedes Y in both AS_PATH attributes, or - Y precedes X | |||
in both AS_PATH attributes. | in both AS_PATH attributes. | |||
b) The aggregated AS_PATH attribute consists of ASs identified | b) The aggregated AS_PATH attribute consists of ASs identified | |||
in (a) in exactly the same order as they appear in the AS_PATH | in (a) in exactly the same order as they appear in the AS_PATH | |||
attributes to be aggregated. If two consecutive ASs identified | attributes to be aggregated. If two consecutive ASs identified | |||
in (a) do not immediately follow each other in both of the | in (a) do not immediately follow each other in both of the | |||
AS_PATH attributes to be aggregated, then the intervening ASs | AS_PATH attributes to be aggregated, then the intervening ASs | |||
(ASs that are between the two consecutive ASs that are the | (ASs that are between the two consecutive ASs that are the | |||
RFC DRAFT August 1998 | ||||
same) in both attributes are combined into an AS_SET path | same) in both attributes are combined into an AS_SET path | |||
segment that consists of the intervening ASs from both AS_PATH | segment that consists of the intervening ASs from both AS_PATH | |||
attributes; this segment is then placed in between the two | attributes; this segment is then placed in between the two | |||
consecutive ASs identified in (a) of the aggregated attribute. | consecutive ASs identified in (a) of the aggregated attribute. | |||
If two consecutive ASs identified in (a) immediately follow | If two consecutive ASs identified in (a) immediately follow | |||
each other in one attribute, but do not follow in another, then | each other in one attribute, but do not follow in another, then | |||
the intervening ASs of the latter are combined into an AS_SET | the intervening ASs of the latter are combined into an AS_SET | |||
path segment; this segment is then placed in between the two | path segment; this segment is then placed in between the two | |||
consecutive ASs identified in (a) of the aggregated attribute. | consecutive ASs identified in (a) of the aggregated attribute. | |||
skipping to change at page 59, line 21 | skipping to change at page 62, line 5 | |||
[7] "Information Processing Systems - Telecommunications and | [7] "Information Processing Systems - Telecommunications and | |||
Information Exchange between Systems - Protocol for Exchange of | Information Exchange between Systems - Protocol for Exchange of | |||
Inter-domain Routeing Information among Intermediate Systems to | Inter-domain Routeing Information among Intermediate Systems to | |||
Support Forwarding of ISO 8473 PDUs", ISO/IEC IS10747, 1993 | Support Forwarding of ISO 8473 PDUs", ISO/IEC IS10747, 1993 | |||
[8] Fuller, V., Li, T., Yu, J., and Varadhan, K., ""Classless Inter- | [8] Fuller, V., Li, T., Yu, J., and Varadhan, K., ""Classless Inter- | |||
Domain Routing (CIDR): an Address Assignment and Aggregation | Domain Routing (CIDR): an Address Assignment and Aggregation | |||
Strategy", RFC1519, September 1993. | Strategy", RFC1519, September 1993. | |||
RFC DRAFT August 1998 | ||||
[9] Rekhter, Y., Li, T., "An Architecture for IP Address Allocation | [9] Rekhter, Y., Li, T., "An Architecture for IP Address Allocation | |||
with CIDR", RFC 1518, September 1993. | with CIDR", RFC 1518, September 1993. | |||
Security Considerations | Security Considerations | |||
Security issues are not discussed in this document. | Security issues are not discussed in this document. | |||
Editors' Addresses | Editors' Addresses | |||
Yakov Rekhter | Yakov Rekhter | |||
cisco Systems, Inc. | cisco Systems, Inc. | |||
170 W. Tasman Dr. | 170 W. Tasman Dr. | |||
San Jose, CA 95134 | San Jose, CA 95134 | |||
email: yakov@cisco.com | email: yakov@cisco.com | |||
Tony Li | Tony Li | |||
Juniper Networks, Inc. | Juniper Networks, Inc. | |||
3260 Jay St. | 385 Ravendale Dr. | |||
Santa Clara, CA 95051 | Mountain View, CA 94043 | |||
(408) 327-1906 | (650) 526-8006 | |||
email: tli@juniper.net | email: tli@juniper.net | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |