tech-invite   World Map     

IETF     RFCs     Groups     SIP     ABNFs    |    3GPP     Specs     Glossaries     Architecture     IMS     UICC    |    search

RFC 4271

 
 
 

A Border Gateway Protocol 4 (BGP-4)

Part 4 of 4, p. 75 to 104
Prev RFC Part

 


prevText      Top      Up      ToC       Page 75 
9.  UPDATE Message Handling

   An UPDATE message may be received only in the Established state.
   Receiving an UPDATE message in any other state is an error.  When an
   UPDATE message is received, each field is checked for validity, as
   specified in Section 6.3.

   If an optional non-transitive attribute is unrecognized, it is
   quietly ignored.  If an optional transitive attribute is
   unrecognized, the Partial bit (the third high-order bit) in the
   attribute flags octet is set to 1, and the attribute is retained for
   propagation to other BGP speakers.

   If an optional attribute is recognized and has a valid value, then,
   depending on the type of the optional attribute, it is processed
   locally, retained, and updated, if necessary, for possible
   propagation to other BGP speakers.

   If the UPDATE message contains a non-empty WITHDRAWN ROUTES field,
   the previously advertised routes, whose destinations (expressed as IP
   prefixes) are contained in this field, SHALL be removed from the
   Adj-RIB-In.  This BGP speaker SHALL run its Decision Process because
   the previously advertised route is no longer available for use.

   If the UPDATE message contains a feasible route, the Adj-RIB-In will
   be updated with this route as follows: if the NLRI of the new route
   is identical to the one the route currently has stored in the Adj-
   RIB-In, then the new route SHALL replace the older route in the Adj-
   RIB-In, thus implicitly withdrawing the older route from service.
   Otherwise, if the Adj-RIB-In has no route with NLRI identical to the
   new route, the new route SHALL be placed in the Adj-RIB-In.

   Once the BGP speaker updates the Adj-RIB-In, the speaker SHALL run
   its Decision Process.

Top      Up      ToC       Page 76 
9.1.  Decision Process

   The Decision Process selects routes for subsequent advertisement by
   applying the policies in the local Policy Information Base (PIB) to
   the routes stored in its Adj-RIBs-In.  The output of the Decision
   Process is the set of routes that will be advertised to peers; the
   selected routes will be stored in the local speaker's Adj-RIBs-Out,
   according to policy.

   The BGP Decision Process described here is conceptual, and does not
   have to be implemented precisely as described, as long as the
   implementations support the described functionality and they exhibit
   the same externally visible behavior.

   The selection process is formalized by defining a function that takes
   the attribute of a given route as an argument and returns either (a)
   a non-negative integer denoting the degree of preference for the
   route, or (b) a value denoting that this route is ineligible to be
   installed in Loc-RIB and will be excluded from the next phase of
   route selection.

   The function that calculates the degree of preference for a given
   route SHALL NOT use any of the following as its inputs: the existence
   of other routes, the non-existence of other routes, or the path
   attributes of other routes.  Route selection then consists of the
   individual application of the degree of preference function to each
   feasible route, followed by the choice of the one with the highest
   degree of preference.

   The Decision Process operates on routes contained in the Adj-RIBs-In,
   and is responsible for:

      - selection of routes to be used locally by the speaker

      - selection of routes to be advertised to other BGP peers

      - route aggregation and route information reduction

   The Decision Process takes place in three distinct phases, each
   triggered by a different event:

      a) Phase 1 is responsible for calculating the degree of preference
         for each route received from a peer.

      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
         distinct destination, and for installing each chosen route into
         the Loc-RIB.

Top      Up      ToC       Page 77 
      c) Phase 3 is invoked after the Loc-RIB has been modified.  It is
         responsible for disseminating routes in the Loc-RIB to each
         peer, according to the policies contained in the PIB.  Route
         aggregation and information reduction can optionally be
         performed within this phase.

9.1.1.  Phase 1: Calculation of Degree of Preference

   The Phase 1 decision function is invoked whenever the local BGP
   speaker receives, from a peer, an UPDATE message that advertises a
   new route, a replacement route, or withdrawn routes.

   The Phase 1 decision function is a separate process,f which completes
   when it has no further work to do.

   The Phase 1 decision function locks an Adj-RIB-In prior to operating
   on any route contained within it, and unlocks it after operating on
   all new or unfeasible routes contained within it.

   For each newly received or replacement feasible route, the local BGP
   speaker determines a degree of preference as follows:

      If the route is learned from an internal peer, either the value of
      the LOCAL_PREF attribute is taken as the degree of preference, or
      the local system computes the degree of preference of the route
      based on preconfigured policy information.  Note that the latter
      may result in formation of persistent routing loops.

      If the route is learned from an external peer, then the local BGP
      speaker computes the degree of preference based on preconfigured
      policy information.  If the return value indicates the route is
      ineligible, the route MAY NOT serve as an input to the next phase
      of route selection; otherwise, the return value MUST be used as
      the LOCAL_PREF value in any IBGP readvertisement.

      The exact nature of this policy information, and the computation
      involved, is a local matter.

9.1.2.  Phase 2: Route Selection

   The Phase 2 decision function is invoked on completion of Phase 1.
   The Phase 2 function is a separate process, which completes when it
   has no further work to do.  The Phase 2 process considers all routes
   that are eligible in the Adj-RIBs-In.

Top      Up      ToC       Page 78 
   The Phase 2 decision function is blocked from running while the Phase
   3 decision function is in process.  The Phase 2 function locks all
   Adj-RIBs-In prior to commencing its function, and unlocks them on
   completion.

   If the NEXT_HOP attribute of a BGP route depicts an address that is
   not resolvable, or if it would become unresolvable if the route was
   installed in the routing table, the BGP route MUST be excluded from
   the Phase 2 decision function.

   If the AS_PATH attribute of a BGP route contains an AS loop, the BGP
   route should be excluded from the Phase 2 decision function.  AS loop
   detection is done by scanning the full AS path (as specified in the
   AS_PATH attribute), and checking that the autonomous system number of
   the local system does not appear in the AS path.  Operations of a BGP
   speaker that is configured to accept routes with its own autonomous
   system number in the AS path are outside the scope of this document.

   It is critical that BGP speakers within an AS do not make conflicting
   decisions regarding route selection that would cause forwarding loops
   to occur.

   For each set of destinations for which a feasible route exists in the
   Adj-RIBs-In, the local BGP speaker identifies the route that has:

      a) the highest degree of preference of any route to the same set
         of destinations, or

      b) is the only route to that destination, or

      c) is selected as a result of the Phase 2 tie breaking rules
         specified in Section 9.1.2.2.

   The local speaker SHALL then install that route in the Loc-RIB,
   replacing any route to the same destination that is currently being
   held in the Loc-RIB.  When the new BGP route is installed in the
   Routing Table, care must be taken to ensure that existing routes to
   the same destination that are now considered invalid are removed from
   the Routing Table.  Whether the new BGP route replaces an existing
   non-BGP route in the Routing Table depends on the policy configured
   on the BGP speaker.

   The local speaker MUST determine the immediate next-hop address from
   the NEXT_HOP attribute of the selected route (see Section 5.1.3).  If
   either the immediate next-hop or the IGP cost to the NEXT_HOP (where
   the NEXT_HOP is resolved through an IGP route) changes, Phase 2 Route
   Selection MUST be performed again.

Top      Up      ToC       Page 79 
   Notice that even though BGP routes do not have to be installed in the
   Routing Table with the immediate next-hop(s), implementations MUST
   take care that, before any packets are forwarded along a BGP route,
   its associated NEXT_HOP address is resolved to the immediate
   (directly connected) next-hop address, and that this address (or
   multiple addresses) is finally used for actual packet forwarding.

   Unresolvable routes SHALL be removed from the Loc-RIB and the routing
   table.  However, corresponding unresolvable routes SHOULD be kept in
   the Adj-RIBs-In (in case they become resolvable).

9.1.2.1.  Route Resolvability Condition

   As indicated in Section 9.1.2, BGP speakers SHOULD exclude
   unresolvable routes from the Phase 2 decision.  This ensures that
   only valid routes are installed in Loc-RIB and the Routing Table.

   The route resolvability condition is defined as follows:

      1) A route Rte1, referencing only the intermediate network
         address, is considered resolvable if the Routing Table contains
         at least one resolvable route Rte2 that matches Rte1's
         intermediate network address and is not recursively resolved
         (directly or indirectly) through Rte1.  If multiple matching
         routes are available, only the longest matching route SHOULD be
         considered.

      2) Routes referencing interfaces (with or without intermediate
         addresses) are considered resolvable if the state of the
         referenced interface is up and if IP processing is enabled on
         this interface.

   BGP routes do not refer to interfaces, but can be resolved through
   the routes in the Routing Table that can be of both types (those that
   specify interfaces or those that do not).  IGP routes and routes to
   directly connected networks are expected to specify the outbound
   interface.  Static routes can specify the outbound interface, the
   intermediate address, or both.

   Note that a BGP route is considered unresolvable in a situation where
   the BGP speaker's Routing Table contains no route matching the BGP
   route's NEXT_HOP.  Mutually recursive routes (routes resolving each
   other or themselves) also fail the resolvability check.

   It is also important that implementations do not consider feasible
   routes that would become unresolvable if they were installed in the
   Routing Table, even if their NEXT_HOPs are resolvable using the
   current contents of the Routing Table (an example of such routes

Top      Up      ToC       Page 80 
   would be mutually recursive routes).  This check ensures that a BGP
   speaker does not install routes in the Routing Table that will be
   removed and not used by the speaker.  Therefore, in addition to local
   Routing Table stability, this check also improves behavior of the
   protocol in the network.

   Whenever a BGP speaker identifies a route that fails the
   resolvability check because of mutual recursion, an error message
   SHOULD be logged.

9.1.2.2.  Breaking Ties (Phase 2)

   In its Adj-RIBs-In, a BGP speaker may have several routes to the same
   destination that have the same degree of preference.  The local
   speaker can select only one of these routes for inclusion in the
   associated Loc-RIB.  The local speaker considers all routes with the
   same degrees of preference, both those received from internal peers,
   and those received from external peers.

   The following tie-breaking procedure assumes that, for each candidate
   route, all the BGP speakers within an autonomous system can ascertain
   the cost of a path (interior distance) to the address depicted by the
   NEXT_HOP attribute of the route, and follow the same route selection
   algorithm.

   The tie-breaking algorithm begins by considering all equally
   preferable routes to the same destination, and then selects routes to
   be removed from consideration.  The algorithm terminates as soon as
   only one route remains in consideration.  The criteria MUST be
   applied in the order specified.

   Several of the criteria are described using pseudo-code.  Note that
   the pseudo-code shown was chosen for clarity, not efficiency.  It is
   not intended to specify any particular implementation.  BGP
   implementations MAY use any algorithm that produces the same results
   as those described here.

      a) Remove from consideration all routes that are not tied for
         having the smallest number of AS numbers present in their
         AS_PATH attributes.  Note that when counting this number, an
         AS_SET counts as 1, no matter how many ASes are in the set.

      b) Remove from consideration all routes that are not tied for
         having the lowest Origin number in their Origin attribute.

Top      Up      ToC       Page 81 
      c) Remove from consideration routes with less-preferred
         MULTI_EXIT_DISC attributes.  MULTI_EXIT_DISC is only comparable
         between routes learned from the same neighboring AS (the
         neighboring AS is determined from the AS_PATH attribute).
         Routes that do not have the MULTI_EXIT_DISC attribute are
         considered to have the lowest possible MULTI_EXIT_DISC value.

         This is also described in the following procedure:

       for m = all routes still under consideration
           for n = all routes still under consideration
               if (neighborAS(m) == neighborAS(n)) and (MED(n) < MED(m))
                   remove route m from consideration

         In the pseudo-code above, MED(n) is a function that returns the
         value of route n's MULTI_EXIT_DISC attribute.  If route n has
         no MULTI_EXIT_DISC attribute, the function returns the lowest
         possible MULTI_EXIT_DISC value (i.e., 0).

         Similarly, neighborAS(n) is a function that returns the
         neighbor AS from which the route was received.  If the route is
         learned via IBGP, and the other IBGP speaker didn't originate
         the route, it is the neighbor AS from which the other IBGP
         speaker learned the route.  If the route is learned via IBGP,
         and the other IBGP speaker either (a) originated the route, or
         (b) created the route by aggregation and the AS_PATH attribute
         of the aggregate route is either empty or begins with an
         AS_SET, it is the local AS.

         If a MULTI_EXIT_DISC attribute is removed before re-advertising
         a route into IBGP, then comparison based on the received EBGP
         MULTI_EXIT_DISC attribute MAY still be performed.  If an
         implementation chooses to remove MULTI_EXIT_DISC, then the
         optional comparison on MULTI_EXIT_DISC, if performed, MUST be
         performed only among EBGP-learned routes.  The best EBGP-
         learned route may then be compared with IBGP-learned routes
         after the removal of the MULTI_EXIT_DISC attribute.  If
         MULTI_EXIT_DISC is removed from a subset of EBGP-learned
         routes, and the selected "best" EBGP-learned route will not
         have MULTI_EXIT_DISC removed, then the MULTI_EXIT_DISC must be
         used in the comparison with IBGP-learned routes.  For IBGP-
         learned routes, the MULTI_EXIT_DISC MUST be used in route
         comparisons that reach this step in the Decision Process.
         Including the MULTI_EXIT_DISC of an EBGP-learned route in the
         comparison with an IBGP-learned route, then removing the
         MULTI_EXIT_DISC attribute, and advertising the route has been
         proven to cause route loops.

Top      Up      ToC       Page 82 
      d) If at least one of the candidate routes was received via EBGP,
         remove from consideration all routes that were received via
         IBGP.

      e) Remove from consideration any routes with less-preferred
         interior cost.  The interior cost of a route is determined by
         calculating the metric to the NEXT_HOP for the route using the
         Routing Table.  If the NEXT_HOP hop for a route is reachable,
         but no cost can be determined, then this step should be skipped
         (equivalently, consider all routes to have equal costs).

         This is also described in the following procedure.

         for m = all routes still under consideration
             for n = all routes in still under consideration
                 if (cost(n) is lower than cost(m))
                     remove m from consideration

         In the pseudo-code above, cost(n) is a function that returns
         the cost of the path (interior distance) to the address given
         in the NEXT_HOP attribute of the route.

      f) Remove from consideration all routes other than the route that
         was advertised by the BGP speaker with the lowest BGP
         Identifier value.

      g) Prefer the route received from the lowest peer address.

9.1.3.  Phase 3: Route Dissemination

   The Phase 3 decision function is invoked on completion of Phase 2, or
   when any of the following events occur:

      a) when routes in the Loc-RIB to local destinations have changed

      b) when locally generated routes learned by means outside of BGP
         have changed

      c) when a new BGP speaker connection has been established

   The Phase 3 function is a separate process that completes when it has
   no further work to do.  The Phase 3 Routing Decision function is
   blocked from running while the Phase 2 decision function is in
   process.

   All routes in the Loc-RIB are processed into Adj-RIBs-Out according
   to configured policy.  This policy MAY exclude a route in the Loc-RIB
   from being installed in a particular Adj-RIB-Out.  A route SHALL NOT

Top      Up      ToC       Page 83 
   be installed in the Adj-Rib-Out unless the destination, and NEXT_HOP
   described by this route, may be forwarded appropriately by the
   Routing Table.  If a route in Loc-RIB is excluded from a particular
   Adj-RIB-Out, the previously advertised route in that Adj-RIB-Out MUST
   be withdrawn from service by means of an UPDATE message (see 9.2).

   Route aggregation and information reduction techniques (see Section
   9.2.2.1) may optionally be applied.

   Any local policy that results in routes being added to an Adj-RIB-Out
   without also being added to the local BGP speaker's forwarding table
   is outside the scope of this document.

   When the updating of the Adj-RIBs-Out and the Routing Table is
   complete, the local BGP speaker runs the Update-Send process of 9.2.

9.1.4.  Overlapping Routes

   A BGP speaker may transmit routes with overlapping Network Layer
   Reachability Information (NLRI) to another BGP speaker.  NLRI overlap
   occurs when a set of destinations are identified in non-matching
   multiple routes.  Because BGP encodes NLRI using IP prefixes, overlap
   will always exhibit subset relationships.  A route describing a
   smaller set of destinations (a longer prefix) is said to be more
   specific than a route describing a larger set of destinations (a
   shorter prefix); similarly, a route describing a larger set of
   destinations is said to be less specific than a route describing a
   smaller set of destinations.

   The precedence relationship effectively decomposes less specific
   routes into two parts:

      - a set of destinations described only by the less specific route,
        and

      - a set of destinations described by the overlap of the less
        specific and the more specific routes

   The set of destinations described by the overlap represents a portion
   of the less specific route that is feasible, but is not currently in
   use.  If a more specific route is later withdrawn, the set of
   destinations described by the overlap will still be reachable using
   the less specific route.

   If a BGP speaker receives overlapping routes, the Decision Process
   MUST consider both routes based on the configured acceptance policy.
   If both a less and a more specific route are accepted, then the
   Decision Process MUST install, in Loc-RIB, either both the less and

Top      Up      ToC       Page 84 
   the more specific routes or aggregate the two routes and install, in
   Loc-RIB, the aggregated route, provided that both routes have the
   same value of the NEXT_HOP attribute.

   If a BGP speaker chooses to aggregate, then it SHOULD either include
   all ASes used to form the aggregate in an AS_SET, or add the
   ATOMIC_AGGREGATE attribute to the route.  This attribute is now
   primarily informational.  With the elimination of IP routing
   protocols that do not support classless routing, and the elimination
   of router and host implementations that do not support classless
   routing, there is no longer a need to de-aggregate.  Routes SHOULD
   NOT be de-aggregated.  In particular, a route that carries the
   ATOMIC_AGGREGATE attribute MUST NOT be de-aggregated.  That is, the
   NLRI of this route cannot be more specific.  Forwarding along such a
   route does not guarantee that IP packets will actually traverse only
   ASes listed in the AS_PATH attribute of the route.

9.2.  Update-Send Process

   The Update-Send process is responsible for advertising UPDATE
   messages to all peers.  For example, it distributes the routes chosen
   by the Decision Process to other BGP speakers, which may be located
   in either the same autonomous system or a neighboring autonomous
   system.

   When a BGP speaker receives an UPDATE message from an internal peer,
   the receiving BGP speaker SHALL NOT re-distribute the routing
   information contained in that UPDATE message to other internal peers
   (unless the speaker acts as a BGP Route Reflector [RFC2796]).

   As part of Phase 3 of the route selection process, the BGP speaker
   has updated its Adj-RIBs-Out.  All newly installed routes and all
   newly unfeasible routes for which there is no replacement route SHALL
   be advertised to its peers by means of an UPDATE message.

   A BGP speaker SHOULD NOT advertise a given feasible BGP route from
   its Adj-RIB-Out if it would produce an UPDATE message containing the
   same BGP route as was previously advertised.

   Any routes in the Loc-RIB marked as unfeasible SHALL be removed.
   Changes to the reachable destinations within its own autonomous
   system SHALL also be advertised in an UPDATE message.

   If, due to the limits on the maximum size of an UPDATE message (see
   Section 4), a single route doesn't fit into the message, the BGP
   speaker MUST not advertise the route to its peers and MAY choose to
   log an error locally.

Top      Up      ToC       Page 85 
9.2.1.  Controlling Routing Traffic Overhead

   The BGP protocol constrains the amount of routing traffic (that is,
   UPDATE messages), in order to limit both the link bandwidth needed to
   advertise UPDATE messages and the processing power needed by the
   Decision Process to digest the information contained in the UPDATE
   messages.

9.2.1.1.  Frequency of Route Advertisement

   The parameter MinRouteAdvertisementIntervalTimer determines the
   minimum amount of time that must elapse between an advertisement
   and/or withdrawal of routes to a particular destination by a BGP
   speaker to a peer.  This rate limiting procedure applies on a per-
   destination basis, although the value of
   MinRouteAdvertisementIntervalTimer is set on a per BGP peer basis.

   Two UPDATE messages sent by a BGP speaker to a peer that advertise
   feasible routes and/or withdrawal of unfeasible routes to some common
   set of destinations MUST be separated by at least
   MinRouteAdvertisementIntervalTimer.  This can only be achieved by
   keeping a separate timer for each common set of destinations.  This
   would be unwarranted overhead.  Any technique that ensures that the
   interval between two UPDATE messages sent from a BGP speaker to a
   peer that advertise feasible routes and/or withdrawal of unfeasible
   routes to some common set of destinations will be at least
   MinRouteAdvertisementIntervalTimer, and will also ensure that a
   constant upper bound on the interval is acceptable.

   Since fast convergence is needed within an autonomous system, either
   (a) the MinRouteAdvertisementIntervalTimer used for internal peers
   SHOULD be shorter than the MinRouteAdvertisementIntervalTimer used
   for external peers, or (b) the procedure describe in this section
   SHOULD NOT apply to routes sent to internal peers.

   This procedure does not limit the rate of route selection, but only
   the rate of route advertisement.  If new routes are selected multiple
   times while awaiting the expiration of
   MinRouteAdvertisementIntervalTimer, the last route selected SHALL be
   advertised at the end of MinRouteAdvertisementIntervalTimer.

9.2.1.2.  Frequency of Route Origination

   The parameter MinASOriginationIntervalTimer determines the minimum
   amount of time that must elapse between successive advertisements of
   UPDATE messages that report changes within the advertising BGP
   speaker's own autonomous systems.

Top      Up      ToC       Page 86 
9.2.2.  Efficient Organization of Routing Information

   Having selected the routing information it will advertise, a BGP
   speaker may avail itself of several methods to organize this
   information in an efficient manner.

9.2.2.1.  Information Reduction

   Information reduction may imply a reduction in granularity of policy
   control - after information is collapsed, the same policies will
   apply to all destinations and paths in the equivalence class.

   The Decision Process may optionally reduce the amount of information
   that it will place in the Adj-RIBs-Out by any of the following
   methods:

      a) Network Layer Reachability Information (NLRI):

         Destination IP addresses can be represented as IP address
         prefixes.  In cases where there is a correspondence between the
         address structure and the systems under control of an
         autonomous system administrator, it will be possible to reduce
         the size of the NLRI carried in the UPDATE messages.

      b) AS_PATHs:

         AS path information can be represented as ordered AS_SEQUENCEs
         or unordered AS_SETs.  AS_SETs are used in the route
         aggregation algorithm described in Section 9.2.2.2.  They
         reduce the size of the AS_PATH information by listing each AS
         number only once, regardless of how many times it may have
         appeared in multiple AS_PATHs that were aggregated.

         An AS_SET implies that the destinations listed in the NLRI can
         be reached through paths that traverse at least some of the
         constituent autonomous systems.  AS_SETs provide sufficient
         information to avoid routing information looping; however,
         their use may prune potentially feasible paths because such
         paths are no longer listed individually in the form of
         AS_SEQUENCEs.  In practice, this is not likely to be a problem
         because once an IP packet arrives at the edge of a group of
         autonomous systems, the BGP speaker is likely to have more
         detailed path information and can distinguish individual paths
         from destinations.

Top      Up      ToC       Page 87 
9.2.2.2.  Aggregating Routing Information

   Aggregation is the process of combining the characteristics of
   several different routes in such a way that a single route can be
   advertised.  Aggregation can occur as part of the Decision Process to
   reduce the amount of routing information that will be placed in the
   Adj-RIBs-Out.

   Aggregation reduces the amount of information that a BGP speaker must
   store and exchange with other BGP speakers.  Routes can be aggregated
   by applying the following procedure, separately, to path attributes
   of the same type and to the Network Layer Reachability Information.

   Routes that have different MULTI_EXIT_DISC attributes SHALL NOT be
   aggregated.

   If the aggregated route has an AS_SET as the first element in its
   AS_PATH attribute, then the router that originates the route SHOULD
   NOT advertise the MULTI_EXIT_DISC attribute with this route.

   Path attributes that have different type codes cannot be aggregated
   together.  Path attributes of the same type code may be aggregated,
   according to the following rules:

      NEXT_HOP:
         When aggregating routes that have different NEXT_HOP
         attributes, the NEXT_HOP attribute of the aggregated route
         SHALL identify an interface on the BGP speaker that performs
         the aggregation.

      ORIGIN attribute:
         If at least one route among routes that are aggregated has
         ORIGIN with the value INCOMPLETE, then the aggregated route
         MUST have the ORIGIN attribute with the value INCOMPLETE.
         Otherwise, if at least one route among routes that are
         aggregated has ORIGIN with the value EGP, then the aggregated
         route MUST have the ORIGIN attribute with the value EGP.  In
         all other cases,, the value of the ORIGIN attribute of the
         aggregated route is IGP.

      AS_PATH attribute:
         If routes to be aggregated have identical AS_PATH attributes,
         then the aggregated route has the same AS_PATH attribute as
         each individual route.

         For the purpose of aggregating AS_PATH attributes, we model
         each AS within the AS_PATH attribute as a tuple <type, value>,
         where "type" identifies a type of the path segment the AS

Top      Up      ToC       Page 88 
         belongs to (e.g., AS_SEQUENCE, AS_SET), and "value" identifies
         the AS number.  If the routes to be aggregated have different
         AS_PATH attributes, then the aggregated AS_PATH attribute SHALL
         satisfy all of the following conditions:

           - all tuples of type AS_SEQUENCE in the aggregated AS_PATH
             SHALL appear in all of the AS_PATHs in the initial set of
             routes to be aggregated.

           - all tuples of type AS_SET in the aggregated AS_PATH SHALL
             appear in at least one of the AS_PATHs in the initial set
             (they may appear as either AS_SET or AS_SEQUENCE types).

           - for any tuple X of type AS_SEQUENCE in the aggregated
             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, regardless of the type of Y.

           - No tuple of type AS_SET with the same value SHALL appear
             more than once in the aggregated AS_PATH.

           - Multiple tuples of type AS_SEQUENCE with the same value may
             appear in the aggregated AS_PATH only when adjacent to
             another tuple of the same type and value.

         An implementation may choose any algorithm that conforms to
         these rules.  At a minimum, a conformant implementation SHALL
         be able to perform the following algorithm that meets all of
         the above conditions:

           - determine the longest leading sequence of tuples (as
             defined above) common to all the AS_PATH attributes of the
             routes to be aggregated.  Make this sequence the leading
             sequence of the aggregated AS_PATH attribute.

           - set the type of the rest of the tuples from the AS_PATH
             attributes of the routes to be aggregated to AS_SET, and
             append them to the aggregated AS_PATH attribute.

           - if the aggregated AS_PATH has more than one tuple with the
             same value (regardless of tuple's type), eliminate all but
             one such tuple by deleting tuples of the type AS_SET from
             the aggregated AS_PATH attribute.

           - for each pair of adjacent tuples in the aggregated AS_PATH,
             if both tuples have the same type, merge them together, as
             long as doing so will not cause a segment with a length
             greater than 255 to be generated.

Top      Up      ToC       Page 89 
         Appendix F, Section F.6 presents another algorithm that
         satisfies the conditions and allows for more complex policy
         configurations.

      ATOMIC_AGGREGATE:
         If at least one of the routes to be aggregated has
         ATOMIC_AGGREGATE path attribute, then the aggregated route
         SHALL have this attribute as well.

      AGGREGATOR:
         Any AGGREGATOR attributes from the routes to be aggregated MUST
         NOT be included in the aggregated route.  The BGP speaker
         performing the route aggregation MAY attach a new AGGREGATOR
         attribute (see Section 5.1.7).

9.3.  Route Selection Criteria

   Generally, additional rules for comparing routes among several
   alternatives are outside the scope of this document.  There are two
   exceptions:

      - 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
        any other route (provided that the speaker is configured to
        accept such routes).  If such a route were ever used, a routing
        loop could result.

      - In order to achieve a successful distributed operation, only
        routes with a likelihood of stability can be chosen.  Thus, an
        AS SHOULD avoid using unstable routes, and it SHOULD NOT make
        rapid, spontaneous changes to its choice of route.  Quantifying
        the terms "unstable" and "rapid" (from the previous sentence)
        will require experience, but the principle is clear.  Routes
        that are unstable can be "penalized" (e.g., by using the
        procedures described in [RFC2439]).

9.4.  Originating BGP routes

   A BGP speaker may originate BGP routes by injecting routing
   information acquired by some other means (e.g., via an IGP) into BGP.
   A BGP speaker that originates BGP routes assigns the degree of
   preference (e.g., according to local configuration) to these routes
   by passing them through the Decision Process (see Section 9.1).
   These routes MAY also be distributed to other BGP speakers within the
   local AS as part of the update process (see Section 9.2).  The
   decision of whether to distribute non-BGP acquired routes within an
   AS via BGP depends on the environment within the AS (e.g., type of
   IGP) and SHOULD be controlled via configuration.

Top      Up      ToC       Page 90 
10.  BGP Timers

   BGP employs five timers: ConnectRetryTimer (see Section 8), HoldTimer
   (see Section 4.2), KeepaliveTimer (see Section 8),
   MinASOriginationIntervalTimer (see Section 9.2.1.2), and
   MinRouteAdvertisementIntervalTimer (see Section 9.2.1.1).

   Two optional timers MAY be supported: DelayOpenTimer, IdleHoldTimer
   by BGP (see Section 8).  Section 8 describes their use.  The full
   operation of these optional timers is outside the scope of this
   document.

   ConnectRetryTime is a mandatory FSM attribute that stores the initial
   value for the ConnectRetryTimer.  The suggested default value for the
   ConnectRetryTime is 120 seconds.

   HoldTime is a mandatory FSM attribute that stores the initial value
   for the HoldTimer.  The suggested default value for the HoldTime is
   90 seconds.

   During some portions of the state machine (see Section 8), the
   HoldTimer is set to a large value.  The suggested default for this
   large value is 4 minutes.

   The KeepaliveTime is a mandatory FSM attribute that stores the
   initial value for the KeepaliveTimer.  The suggested default value
   for the KeepaliveTime is 1/3 of the HoldTime.

   The suggested default value for the MinASOriginationIntervalTimer is
   15 seconds.

   The suggested default value for the
   MinRouteAdvertisementIntervalTimer on EBGP connections is 30 seconds.

   The suggested default value for the
   MinRouteAdvertisementIntervalTimer on IBGP connections is 5 seconds.

   An implementation of BGP MUST allow the HoldTimer to be configurable
   on a per-peer basis, and MAY allow the other timers to be
   configurable.

   To minimize the likelihood that the distribution of BGP messages by a
   given BGP speaker will contain peaks, jitter SHOULD be applied to the
   timers associated with MinASOriginationIntervalTimer, KeepaliveTimer,
   MinRouteAdvertisementIntervalTimer, and ConnectRetryTimer.  A given
   BGP speaker MAY apply the same jitter to each of these quantities,
   regardless of the destinations to which the updates are being sent;
   that is, jitter need not be configured on a per-peer basis.

Top      Up      ToC       Page 91 
   The suggested default amount of jitter SHALL be determined by
   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.
   A new random value SHOULD be picked each time the timer is set.  The
   range of the jitter's random value MAY be configurable.

Top      Up      ToC       Page 92 
Appendix A.  Comparison with RFC 1771

   There are numerous editorial changes in comparison to [RFC1771] (too
   many to list here).

   The following list the technical changes:

      Changes to reflect the usage of features such as TCP MD5
      [RFC2385], BGP Route Reflectors [RFC2796], BGP Confederations
      [RFC3065], and BGP Route Refresh [RFC2918].

      Clarification of the use of the BGP Identifier in the AGGREGATOR
      attribute.

      Procedures for imposing an upper bound on the number of prefixes
      that a BGP speaker would accept from a peer.

      The ability of a BGP speaker to include more than one instance of
      its own AS in the AS_PATH attribute for the purpose of inter-AS
      traffic engineering.

      Clarification of the various types of NEXT_HOPs.

      Clarification of the use of the ATOMIC_AGGREGATE attribute.

      The relationship between the immediate next hop, and the next hop
      as specified in the NEXT_HOP path attribute.

      Clarification of the tie-breaking procedures.

      Clarification of the frequency of route advertisements.

      Optional Parameter Type 1 (Authentication Information) has been
      deprecated.

      UPDATE Message Error subcode 7 (AS Routing Loop) has been
      deprecated.

      OPEN Message Error subcode 5 (Authentication Failure) has been
      deprecated.

      Use of the Marker field for authentication has been deprecated.

      Implementations MUST support TCP MD5 [RFC2385] for authentication.

      Clarification of BGP FSM.

Top      Up      ToC       Page 93 
Appendix B.  Comparison with RFC 1267

   All the changes listed in Appendix A, plus the following.

   BGP-4 is capable of operating in an environment where a set of
   reachable destinations may be expressed via a single IP prefix.  The
   concept of network classes, or subnetting, is foreign to BGP-4.  To
   accommodate these capabilities, BGP-4 changes the semantics and
   encoding associated with the AS_PATH attribute.  New text has been
   added to define semantics associated with IP prefixes.  These
   abilities allow BGP-4 to support the proposed supernetting scheme
   [RFC1518, RFC1519].

   To simplify configuration, this version introduces a new attribute,
   LOCAL_PREF, that facilitates route selection procedures.

   The INTER_AS_METRIC attribute has been renamed MULTI_EXIT_DISC.

   A new attribute, ATOMIC_AGGREGATE, has been introduced to insure that
   certain aggregates are not de-aggregated.  Another new attribute,
   AGGREGATOR, can be added to aggregate routes to advertise which AS
   and which BGP speaker within that AS caused the aggregation.

   To ensure that Hold Timers are symmetric, the Hold Timer is now
   negotiated on a per-connection basis.  Hold Timers of zero are now
   supported.

Appendix C.  Comparison with RFC 1163

   All of the changes listed in Appendices A and B, plus the following.

   To detect and recover from BGP connection collision, a new field (BGP
   Identifier) has been added to the OPEN message.  New text (Section
   6.8) has been added to specify the procedure for detecting and
   recovering from collision.

   The new document no longer restricts the router that is passed in the
   NEXT_HOP path attribute to be part of the same Autonomous System as
   the BGP Speaker.

   The new document optimizes and simplifies the exchange of information
   about previously reachable routes.

Top      Up      ToC       Page 94 
Appendix D.  Comparison with RFC 1105

   All of the changes listed in Appendices A, B, and C, plus the
   following.

   Minor changes to the [RFC1105] Finite State Machine were necessary to
   accommodate the TCP user interface provided by BSD version 4.3.

   The notion of Up/Down/Horizontal relations presented in RFC 1105 has
   been removed from the protocol.

   The changes in the message format from RFC 1105 are as follows:

      1. The Hold Time field has been removed from the BGP header and
         added to the OPEN message.

      2. The version field has been removed from the BGP header and
         added to 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
         implicit confirmation, provided by the KEEPALIVE message.

      5. The format of the UPDATE message has been changed
         significantly.  New fields were added to the UPDATE message to
         support multiple path attributes.

      6. The Marker field has been expanded and its role broadened to
         support authentication.

   Note that quite often BGP, as specified in RFC 1105, is referred to
   as BGP-1; BGP, as specified in [RFC1163], is referred to as BGP-2;
   BGP, as specified in RFC 1267 is referred to as BGP-3; and BGP, as
   specified in this document is referred to as BGP-4.

Appendix E.  TCP Options that May Be Used with BGP

   If a local system TCP user interface supports the TCP PUSH function,
   then each BGP message SHOULD be transmitted with PUSH flag set.
   Setting PUSH flag forces BGP messages to be transmitted to the
   receiver promptly.

   If a local system TCP user interface supports setting the DSCP field
   [RFC2474] for TCP connections, then the TCP connection used by BGP
   SHOULD be opened with bits 0-2 of the DSCP field set to 110 (binary).

   An implementation MUST support the TCP MD5 option [RFC2385].

Top      Up      ToC       Page 95 
Appendix F.  Implementation Recommendations

   This section presents some implementation recommendations.

Appendix F.1.  Multiple Networks Per Message

   The BGP protocol allows for multiple address prefixes with the same
   path attributes to be specified in one message.  Using this
   capability is highly recommended.  With one address prefix per
   message there is a substantial increase in overhead in the receiver.
   Not only does the system overhead increase due to the reception of
   multiple messages, but the overhead of scanning the routing table for
   updates to BGP peers and other routing protocols (and sending the
   associated messages) is incurred multiple times as well.

   One method of building messages that contain many address prefixes
   per path attribute set from a routing table that is not organized on
   a per path attribute set basis is to build many messages as the
   routing table is scanned.  As each address prefix is processed, a
   message for the associated set of path attributes is allocated, if it
   does not exist, and the new address prefix is added to it.  If such a
   message exists, the new address prefix is appended to it.  If the
   message lacks the space to hold the new address prefix, it is
   transmitted, a new message is allocated, and the new address prefix
   is inserted into the new message.  When the entire routing table has
   been scanned, all allocated messages are sent and their resources are
   released.  Maximum compression is achieved when all destinations
   covered by the address prefixes share a common set of path
   attributes, making it possible to send many address prefixes in one
   4096-byte message.

   When peering with a BGP implementation that does not compress
   multiple address prefixes into one message, it may be necessary to
   take steps to reduce the overhead from the flood of data received
   when a peer is acquired or when a significant network topology change
   occurs.  One method of doing this is to limit the rate of updates.
   This will eliminate the redundant scanning of the routing table to
   provide flash updates for BGP peers and other routing protocols.  A
   disadvantage of this approach is that it increases the propagation
   latency of routing information.  By choosing a minimum flash update
   interval that is not much greater than the time it takes to process
   the multiple messages, this latency should be minimized.  A better
   method would be to read all received messages before sending updates.

Top      Up      ToC       Page 96 
Appendix F.2.  Reducing Route Flapping

   To avoid excessive route flapping, a BGP speaker that needs to
   withdraw a destination and send an update about a more specific or
   less specific route should combine them into the same UPDATE message.

Appendix F.3.  Path Attribute Ordering

   Implementations that combine update messages (as described above in
   Section 6.1) may prefer to see all path attributes presented in a
   known order.  This permits them to quickly identify sets of
   attributes from different update messages that are semantically
   identical.  To facilitate this, it is a useful optimization to order
   the path attributes according to type code.  This optimization is
   entirely optional.

Appendix F.4.  AS_SET Sorting

   Another useful optimization that can be done to simplify this
   situation is to sort the AS numbers found in an AS_SET.  This
   optimization is entirely optional.

Appendix F.5.  Control Over Version Negotiation

   Because BGP-4 is capable of carrying aggregated routes that cannot be
   properly represented in BGP-3, an implementation that supports BGP-4
   and another BGP version should provide the capability to only speak
   BGP-4 on a per-peer basis.

Appendix F.6.  Complex AS_PATH Aggregation

   An implementation that chooses to provide a path aggregation
   algorithm retaining significant amounts of path information may wish
   to use the following procedure:

      For the purpose of aggregating AS_PATH attributes of two routes,
      we model each AS as a tuple <type, value>, where "type" identifies
      a type of the path segment the AS belongs to (e.g., AS_SEQUENCE,
      AS_SET), and "value" is the AS number.  Two ASes are said to be
      the same if their corresponding <type, value> tuples are the same.

      The algorithm to aggregate two AS_PATH attributes works as
      follows:

         a) Identify the same ASes (as defined above) within each
            AS_PATH attribute that are in the same relative order within
            both AS_PATH attributes.  Two ASes, X and Y, are said to be
            in the same order if either:

Top      Up      ToC       Page 97 
              - X precedes Y in both AS_PATH attributes, or
              - Y precedes X in both AS_PATH attributes.

         b) The aggregated AS_PATH attribute consists of ASes identified
            in (a), in exactly the same order as they appear in the
            AS_PATH attributes to be aggregated.  If two consecutive
            ASes identified in (a) do not immediately follow each other
            in both of the AS_PATH attributes to be aggregated, then the
            intervening ASes (ASes that are between the two consecutive
            ASes that are the same) in both attributes are combined into
            an AS_SET path segment that consists of the intervening ASes
            from both AS_PATH attributes.  This segment is then placed
            between the two consecutive ASes identified in (a) of the
            aggregated attribute.  If two consecutive ASes identified in
            (a) immediately follow each other in one attribute, but do
            not follow in another, then the intervening ASes of the
            latter are combined into an AS_SET path segment.  This
            segment is then placed between the two consecutive ASes
            identified in (a) of the aggregated attribute.

         c) For each pair of adjacent tuples in the aggregated AS_PATH,
            if both tuples have the same type, merge them together if
            doing so will not cause a segment of a length greater than
            255 to be generated.

      If, as a result of the above procedure, a given AS number appears
      more than once within the aggregated AS_PATH attribute, all but
      the last instance (rightmost occurrence) of that AS number should
      be removed from the aggregated AS_PATH attribute.

Security Considerations

   A BGP implementation MUST support the authentication mechanism
   specified in RFC 2385 [RFC2385].  The authentication provided by this
   mechanism could be done on a per-peer basis.

   BGP makes use of TCP for reliable transport of its traffic between
   peer routers.  To provide connection-oriented integrity and data
   origin authentication on a point-to-point basis, BGP specifies use of
   the mechanism defined in RFC 2385.  These services are intended to
   detect and reject active wiretapping attacks against the inter-router
   TCP connections.  Absent the use of mechanisms that effect these
   security services, attackers can disrupt these TCP connections and/or
   masquerade as a legitimate peer router.  Because the mechanism
   defined in the RFC does not provide peer-entity authentication, these
   connections may be subject to some forms of replay attacks that will
   not be detected at the TCP layer.  Such attacks might result in
   delivery (from TCP) of "broken" or "spoofed" BGP messages.

Top      Up      ToC       Page 98 
   The mechanism defined in RFC 2385 augments the normal TCP checksum
   with a 16-byte message authentication code (MAC) that is computed
   over the same data as the TCP checksum.  This MAC is based on a one-
   way hash function (MD5) and use of a secret key.  The key is shared
   between peer routers and is used to generate MAC values that are not
   readily computed by an attacker who does not have access to the key.
   A compliant implementation must support this mechanism, and must
   allow a network administrator to activate it on a per-peer basis.

   RFC 2385 does not specify a means of managing (e.g., generating,
   distributing, and replacing) the keys used to compute the MAC.  RFC
   3562 [RFC3562] (an informational document) provides some guidance in
   this area, and provides rationale to support this guidance.  It notes
   that a distinct key should be used for communication with each
   protected peer.  If the same key is used for multiple peers, the
   offered security services may be degraded, e.g., due to an increased
   risk of compromise at one router that adversely affects other
   routers.

   The keys used for MAC computation should be changed periodically, to
   minimize the impact of a key compromise or successful cryptanalytic
   attack.  RFC 3562 suggests a crypto period (the interval during which
   a key is employed) of, at most, 90 days.  More frequent key changes
   reduce the likelihood that replay attacks (as described above) will
   be feasible.  However, absent a standard mechanism for effecting such
   changes in a coordinated fashion between peers, one cannot assume
   that BGP-4 implementations complying with this RFC will support
   frequent key changes.

   Obviously, each should key also be chosen to be difficult for an
   attacker to guess.  The techniques specified in RFC 1750 for random
   number generation provide a guide for generation of values that could
   be used as keys.  RFC 2385 calls for implementations to support keys
   "composed of a string of printable ASCII of 80 bytes or less."  RFC
   3562 suggests keys used in this context be 12 to 24 bytes of random
   (pseudo-random) bits.  This is fairly consistent with suggestions for
   analogous MAC algorithms, which typically employ keys in the range of
   16 to 20 bytes.  To provide enough random bits at the low end of this
   range, RFC 3562 also observes that a typical ACSII text string would
   have to be close to the upper bound for the key length specified in
   RFC 2385.

   BGP vulnerabilities analysis is discussed in [RFC4272].

Top      Up      ToC       Page 99 
IANA Considerations

   All the BGP messages contain an 8-bit message type, for which IANA
   has created and is maintaining a registry entitled "BGP Message
   Types".  This document defines the following message types:

         Name             Value       Definition
         ----             -----       ----------
         OPEN             1           See Section 4.2
         UPDATE           2           See Section 4.3
         NOTIFICATION     3           See Section 4.5
         KEEPALIVE        4           See Section 4.4

   Future assignments are to be made using either the Standards Action
   process defined in [RFC2434], or the Early IANA Allocation process
   defined in [RFC4020].  Assignments consist of a name and the value.

   The BGP UPDATE messages may carry one or more Path Attributes, where
   each Attribute contains an 8-bit Attribute Type Code.  IANA is
   already maintaining such a registry, entitled "BGP Path Attributes".
   This document defines the following Path Attributes Type Codes:

        Name               Value       Definition
        ----               -----       ----------
        ORIGIN              1          See Section 5.1.1
        AS_PATH             2          See Section 5.1.2
        NEXT_HOP            3          See Section 5.1.3
        MULTI_EXIT_DISC     4          See Section 5.1.4
        LOCAL_PREF          5          See Section 5.1.5
        ATOMIC_AGGREGATE    6          See Section 5.1.6
        AGGREGATOR          7          See Section 5.1.7

   Future assignments are to be made using either the Standards Action
   process defined in [RFC2434], or the Early IANA Allocation process
   defined in [RFC4020].  Assignments consist of a name and the value.

   The BGP NOTIFICATION message carries an 8-bit Error Code, for which
   IANA has created and is maintaining a registry entitled "BGP Error
   Codes".  This document defines the following Error Codes:

         Name                       Value      Definition
         ------------               -----      ----------
         Message Header Error       1          Section 6.1
         OPEN Message Error         2          Section 6.2
         UPDATE Message Error       3          Section 6.3
         Hold Timer Expired         4          Section 6.5
         Finite State Machine Error 5          Section 6.6
         Cease                      6          Section 6.7

Top      Up      ToC       Page 100 
   Future assignments are to be made using either the Standards Action
   process defined in [RFC2434], or the Early IANA Allocation process
   defined in [RFC4020].  Assignments consist of a name and the value.

   The BGP NOTIFICATION message carries an 8-bit Error Subcode, where
   each Subcode has to be defined within the context of a particular
   Error Code, and thus has to be unique only within that context.

   IANA has created and is maintaining a set of registries, "Error
   Subcodes", with a separate registry for each BGP Error Code.  Future
   assignments are to be made using either the Standards Action process
   defined in [RFC2434], or the Early IANA Allocation process defined in
   [RFC4020].  Assignments consist of a name and the value.

   This document defines the following Message Header Error subcodes:

         Name                         Value        Definition
         --------------------         -----        ----------
         Connection Not Synchronized   1           See Section 6.1
         Bad Message Length            2           See Section 6.1
         Bad Message Type              3           See Section 6.1

   This document defines the following OPEN Message Error subcodes:

         Name                         Value        Definition
         --------------------         -----        ----------
         Unsupported Version Number     1          See Section 6.2
         Bad Peer AS                    2          See Section 6.2
         Bad BGP Identifier             3          See Section 6.2
         Unsupported Optional Parameter 4          See Section 6.2
         [Deprecated]                   5          See Appendix A
         Unacceptable Hold Time         6          See Section 6.2

    This document defines the following UPDATE Message Error subcodes:

         Name                             Value    Definition
         --------------------              ---     ----------
         Malformed Attribute List           1      See Section 6.3
         Unrecognized Well-known Attribute  2      See Section 6.3
         Missing Well-known Attribute       3      See Section 6.3
         Attribute Flags Error              4      See Section 6.3
         Attribute Length Error             5      See Section 6.3
         Invalid ORIGIN Attribute           6      See Section 6.3
         [Deprecated]                       7      See Appendix A
         Invalid NEXT_HOP Attribute         8      See Section 6.3
         Optional Attribute Error           9      See Section 6.3
         Invalid Network Field             10      See Section 6.3
         Malformed AS_PATH                 11      See Section 6.3

Top      Up      ToC       Page 101 
Normative References

   [RFC791]  Postel, J., "Internet Protocol", STD 5, RFC 791, September
             1981.

   [RFC793]  Postel, J., "Transmission Control Protocol", STD 7, RFC
             793, September 1981.

   [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
             Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC2385] Heffernan, A., "Protection of BGP Sessions via the TCP MD5
             Signature Option", RFC 2385, August 1998.

   [RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an
             IANA Considerations Section in RFCs", BCP 26, RFC 2434,
             October 1998.

Informative References

   [RFC904]  Mills, D., "Exterior Gateway Protocol formal
             specification", RFC 904, April 1984.

   [RFC1092] Rekhter, J., "EGP and policy based routing in the new
             NSFNET backbone", RFC 1092, February 1989.

   [RFC1093] Braun, H., "NSFNET routing architecture", RFC 1093,
             February 1989.

   [RFC1105] Lougheed, K. and Y. Rekhter, "Border Gateway Protocol
             (BGP)", RFC 1105, June 1989.

   [RFC1163] Lougheed, K. and Y. Rekhter, "Border Gateway Protocol
             (BGP)", RFC 1163, June 1990.

   [RFC1267] Lougheed, K. and Y. Rekhter, "Border Gateway Protocol 3
             (BGP-3)", RFC 1267, October 1991.

   [RFC1771] Rekhter, Y. and T. Li, "A Border Gateway Protocol 4 (BGP-
             4)", RFC 1771, March 1995.

   [RFC1772] Rekhter, Y. and P. Gross, "Application of the Border
             Gateway Protocol in the Internet", RFC 1772, March 1995.

   [RFC1518] Rekhter, Y. and T. Li, "An Architecture for IP Address
             Allocation with CIDR", RFC 1518, September 1993.

Top      Up      ToC       Page 102 
   [RFC1519] Fuller, V., Li, T., Yu, J., and K. Varadhan, "Classless
             Inter-Domain Routing (CIDR): an Address Assignment and
             Aggregation Strategy", RFC 1519, September 1993.

   [RFC1930] Hawkinson, J. and T. Bates, "Guidelines for creation,
             selection, and registration of an Autonomous System (AS)",
             BCP 6, RFC 1930, March 1996.

   [RFC1997] Chandra, R., Traina, P., and T. Li, "BGP Communities
             Attribute", RFC 1997, August 1996.

   [RFC2439] Villamizar, C., Chandra, R., and R. Govindan, "BGP Route
             Flap Damping", RFC 2439, November 1998.

   [RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black,
             "Definition of the Differentiated Services Field (DS Field)
             in the IPv4 and IPv6 Headers", RFC 2474, December 1998.

   [RFC2796] Bates, T., Chandra, R., and E. Chen, "BGP Route Reflection
             - An Alternative to Full Mesh IBGP", RFC 2796, April 2000.

   [RFC2858] Bates, T., Rekhter, Y., Chandra, R., and D. Katz,
             "Multiprotocol Extensions for BGP-4", RFC 2858, June 2000.

   [RFC3392] Chandra, R. and J. Scudder, "Capabilities Advertisement
             with BGP-4", RFC 3392, November 2002.

   [RFC2918] Chen, E., "Route Refresh Capability for BGP-4", RFC 2918,
             September 2000.

   [RFC3065] Traina, P., McPherson, D., and J. Scudder, "Autonomous
             System Confederations for BGP", RFC 3065, February 2001.

   [RFC3562] Leech, M., "Key Management Considerations for the TCP MD5
             Signature Option", RFC 3562, July 2003.

   [IS10747] "Information Processing Systems - Telecommunications and
             Information Exchange between Systems - Protocol for
             Exchange of Inter-domain Routeing Information among
             Intermediate Systems to Support Forwarding of ISO 8473
             PDUs", ISO/IEC IS10747, 1993.

   [RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", RFC
             4272, January 2006

   [RFC4020] Kompella, K. and A. Zinin, "Early IANA Allocation of
             Standards Track Code Points", BCP 100, RFC 4020, February
             2005.

Top      Up      ToC       Page 103 
Editors' Addresses

   Yakov Rekhter
   Juniper Networks

   EMail: yakov@juniper.net


   Tony Li

   EMail: tony.li@tony.li


   Susan Hares
   NextHop Technologies, Inc.
   825 Victors Way
   Ann Arbor, MI 48108

   Phone: (734)222-1610
   EMail: skh@nexthop.com

Top      Up      ToC       Page 104 
Full Copyright Statement

   Copyright (C) The Internet Society (2006).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET
   ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED,
   INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE
   INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

Acknowledgement

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).