BGP Route Server for IX Operators
BGP Route Server for IX Operators
BGP route server is a feature designed for internet exchange (IX) operators that provides an alternative to
full eBGP mesh peering among the service providers who have a presence at the IX. The route server provides
eBGP route reflection with customized policy support for each service provider. That is, a route server context
can override the normal BGP best path for a prefix with a different path based on a policy, or suppress all
paths for a prefix and not advertise the prefix. The BGP route server provides reduced configuration complexity
and reduced CPU and memory requirements on each border router. The route server also reduces overhead
expense incurred by individualized peering agreements.
Although each SP’s border router is attached to the shared subnet, BGP sessions between each of the SPs must
still be configured and maintained individually, for every other SP with which a given SP wants to establish
a peering relationship.
Assuming that each SP wants to connect to every other SP, the resulting full mesh of BGP sessions established
is shown in the figure below.
Just as the required iBGP full mesh in an autonomous system presents a scaling and administrative challenge
within an SP network, the eBGP full mesh required for peering at an IX presents a challenge for eBGP, for
these reasons:
• The full mesh of direct peering sessions requires a BGP session to be configured and maintained for
each connection.
• There is additional operational overhead from contracts that would need to be negotiated with each SP
peer connecting to a given provider at the IX.
Because larger global SPs might have a presence at dozens or hundreds of internet exchanges worldwide, and
dozens or hundreds of potential peers at each IX, it would be a huge operational expense to connect to all of
the small providers. Consequently, the state of peering prior to the BGP Route Server feature is that a large
global SP connects to only a subset of other large providers to limit the management and operational overhead.
A more scalable alternative to direct peering would allow large global SPs to connect to more small providers.
Instead of maintaining individual, direct eBGP peerings with every other provider, an SP maintains only a
single connection to the route server operated by the IX. Peering with only the route server reduces the
configuration complexity on each border router, reduces CPU and memory requirements on the border routers,
and avoids most of the operational overhead incurred by individualized peering agreements.
The route server provides AS-path, MED, and nexthop transparency so that peering SPs at the IX still appear
to be directly connected. In reality, the IX route server mediates this peering, but that relationship is invisible
outside of the IX.
The figure below illustrates an example of transparent route propagation with a route server at an IX.
In the figure above, a routing update goes from AS 1 to AS 2 to AS 100. The update leaves the router in AS
100 advertising that the router can reach the prefix 10.9.9.0/24, use 10.0.0.1 as the next hop, and use the AS
path of AS100, AS2, AS1.
The router in AS 900 is a route server and the router in AS 500 is a route server client. A route server client
receives updates from a route server. As shown in the figure above, the router in AS 900 does not change the
update; route server updates are transparent in terms of MED, next hop and AS-path. The update goes to the
client with the same prefix, next hop and AS-path that came from the router at 10.0.0.1.
1 As shown in the figure above beginning at the left, when incoming eBGP updates arrive from a route
server client, the system will apply inbound route filters for a route server client the same way it does for
a non-route-server client (configured with the neighbor route-map in command). All routes permitted
by the client’s inbound filtering are installed in the global BGP table for the appropriate address family,
as usual, and anything else is dropped.
2 If any route server contexts have been configured with flexible policy using the import-map command,
the best path from among the subset of matching routes is imported into the virtual table for the contexts.
Route server clients associated with a context will then override any routes from the global BGP table
with customized routes from the context’s virtual table when generating updates.
3 A route server client’s outbound filtering policies (configured with the neighbor route-map out command)
will be applied to the global updates that do not have customized policy, and the outbound filtering policies
are also applied to any updates generated from the route server context’s virtual table.
Note This task does not enable flexible policy handling. To enable flexible policy handling, see the Configure
a Route Server with Flexible Policy Handling, on page 11.
SUMMARY STEPS
1. enable
2. configure terminal
3. router bgp autonomous-system-number
4. neighbor {ipv4-address| ipv6-address} remote-as remote-as-number
5. address-family {ipv4 | ipv6} { unicast | multicast}
6. neighbor {ipv4-address| ipv6-address} activate
7. neighbor {ipv4-address| ipv6-address} route-server-client
8. end
DETAILED STEPS
Example:
Router# configure terminal
Example:
Router(config)# router bgp 900
Step 4 neighbor {ipv4-address| ipv6-address} remote-as Adds an entry to the BGP neighbor table.
remote-as-number
Example:
Router(config-router)# neighbor 10.0.0.1 remote-as
100
Step 5 address-family {ipv4 | ipv6} { unicast | multicast} Enters address family configuration mode to configure
a routing session using IPv4 or IPv6 unicast or
Example: multicast address prefixes.
Step 6 neighbor {ipv4-address| ipv6-address} activate Enables the exchange of information with a BGP
neighbor.
Example:
Router(config-router-af)# neighbor 10.0.0.1 activate
Step 7 neighbor {ipv4-address| ipv6-address} route-server-client Configures the BGP neighbor at the specified address
to be a route server client.
Example:
Router(config-router-af)# neighbor 10.0.0.1
route-server-client
SUMMARY STEPS
1. enable
2. configure terminal
3. router bgp autonomous-system-number
4. no bgp enforce-first-as
5. neighbor {ipv4-address| ipv6-address} remote-as remote-as-number
6. address-family {ipv4 | ipv6} { unicast | multicast}
7. neighbor {ipv4-address| ipv6-address} activate
8. exit-address-family
DETAILED STEPS
Example:
Router# configure terminal
Example:
Router(config)# router bgp 900
Step 4 no bgp enforce-first-as Disables requirement that an update received from an eBGP
peer list its AS number at the beginning of the AS_PATH.
Example: • By default, a router is configured to deny an update
Router(config-router)# no bgp received from an external BGP (eBGP) peer that does not
enforce-first-as list its autonomous system number at the beginning of the
AS_PATH in the incoming update.
• In order to receive updates from the route server, which
will not have its AS first in the AS_PATH, specify no
bgp enforce-first-asto disable the enforcement.
Step 5 neighbor {ipv4-address| ipv6-address} remote-as Adds an entry to the BGP neighbor table.
remote-as-number
Example:
Router(config-router)# neighbor 10.0.0.1
remote-as 100
Step 6 address-family {ipv4 | ipv6} { unicast | multicast} Enters address family configuration mode to configure a routing
session using IPv4 or IPv6 unicast or multicast address prefixes.
Example:
Router(config-router)# address-family ipv4
unicast
Step 7 neighbor {ipv4-address| ipv6-address} activate Enables the exchange of information with a BGP neighbor.
Example:
Router(config-router-af)# neighbor 10.0.0.1
activate
Example:
Router(config-router-af)# exit-address-family
SUMMARY STEPS
1. enable
2. configure terminal
3. router bgp autonomous-system-number
4. route-server-context context-name
5. description string
6. address-family {ipv4 | ipv6} { unicast | multicast}
7. import-map route-map-name
8. exit-address-family
9. exit-route-server-context
10. exit
11. ip as-path access-list access-list-number {permit| deny} regexp
12. route-map route-map-name [permit | deny] sequence-number
13. match as-path access-list-number
14. exit
15. router bgp autonomous-system-number
16. neighbor {ipv4-address| ipv6-address} remote-as remote-as-number
17. address-family {ipv4 | ipv6} { unicast | multicast}
18. neighbor {ipv4-address| ipv6-address} activate
19. neighbor {ipv4-address| ipv6-address} route-server-client context ctx-name
20. end
DETAILED STEPS
Example:
Router# configure terminal
Example:
Router(config)# router bgp 900
Router(config-router)# route-server-context
ONLY_AS27_CONTEXT
Step 6 address-family {ipv4 | ipv6} { unicast | multicast} Enters address family configuration mode to configure a
routing session using IPv4 or IPv6 unicast or multicast address
Example: prefixes.
Router(config-router-rsctx)# address-family
ipv4 unicast
Step 7 import-map route-map-name Configures flexible policy handling by using the route map
that you will create in Step 12 to control which routes will
Example: be added to the route server client virtual table.
Router(config-router-rsctx-af)# import-map
only_AS27_routemap
Example:
Router(config-router-rsctx-af)#
exit-address-family
Example:
Router(config-router-rsctx)#
exit-route-server-context
Example:
Router(config-router)# exit
Step 11 ip as-path access-list access-list-number {permit| Configures an AS path filter using a regular expression.
deny} regexp
• The ip as-path command is not necessarily the
command you have to use. Determine what policy you
Example: want to create.
Router(config)# ip as-path access-list 5 permit
27
Step 13 match as-path access-list-number Identifies an access list that determines which AS paths are
matched and become part of the route map configured in the
Example: prior step.
Example:
Router(config-route-map)# exit
Example:
Router(config)# router bgp 900
Step 16 neighbor {ipv4-address| ipv6-address} remote-as Adds an entry to the BGP neighbor table.
remote-as-number
Example:
Router(config-router)# neighbor 10.0.0.1
remote-as 500
Step 17 address-family {ipv4 | ipv6} { unicast | multicast} Enters address family configuration mode to configure a
routing session using IPv4 or IPv6 unicast or multicast address
Example: prefixes.
Example:
Router(config-router-af)# neighbor 10.0.0.1
activate
Step 19 neighbor {ipv4-address| ipv6-address} Configures the BGP neighbor at the specified address to be
route-server-client context ctx-name a route server client.
• In this example, the route server client at this specified
Example: address is assigned to the context called
Router(config-router-af)# neighbor 10.0.0.1 ONLY_AS27_CONTEXT.
route-server-client context ONLY_AS27_CONTEXT
Step 20 end Ends the current configuration and returns to privileged EXEC
mode.
Example:
Router(config-router-af)# end
SUMMARY STEPS
1. enable
2. show ip bgp {ipv4 | ipv6} unicast route-server {all | {context context-name}} [summary]
3. debug ip bgp route-server {client | context | event | import | policy} [detail]
DETAILED STEPS
Step 3 debug ip bgp route-server {client | context | event Turns on debugging for BGP route server.
| import | policy} [detail] Caution The detail keyword is used for more complex issues
and should only be turned on when debugging with
Example: a Cisco representative.
Router# debug ip bgp route-server client
Example BGP Route Server Context for Flexible Policy (IPv4 Addressing)
In the following example, the local router is a BGP route server. Its neighbors at 10.10.10.12 and 10.10.10.13
are its route server clients. A route server context named ONLY_AS27_CONTEXT is created and applied to
the neighbor at 10.10.10.13. The context uses an import map that references a route map named
only_AS27_routemap. The route map matches routes permitted by access list 27. Access list 27 permits routes
that have 27 in the AS path.
!
address-family ipv4
neighbor 10.10.10.12 activate
neighbor 10.10.10.12 route-server-client
neighbor 10.10.10.13 activate
neighbor 10.10.10.13 route-server-client context ONLY_AS27_CONTEXT
neighbor 10.10.10.21 activate
neighbor 10.10.10.27 activate
exit-address-family
!
ip as-path access-list 27 permit 27
!
route-map only_AS27_routemap permit 10
match as-path 27
!
Example Using Show Commands to See That Route Server Context Routes Overwrite Normal
Bestpath
In the following output, a BGP route server has two routes from AS 21 that have been selected as best:
Example BGP Route Server Context with No Routes Satisfying the Policy
It is possible that, due to policy, no routes are sent to a client even though paths exist. For instance, if we take
the prior example and change ONLY_AS27_CONTEXT to ONLY_AS100_CONTEXT, no paths would
satisfy this policy and no routes will be sent to the client. The following is the configuration and resulting
show output:
!
ip as-path access-list 100 permit 100
!
!
route-map only_AS100_routemap permit 10
match as-path 100
!
Because no routes satisfy the policy, no routes appear in the table of Peer13:
Example BGP Route Server Context for Flexible Policy (IPv6 Addressing)
In the following example under address-family IPv6, the local router is a BGP route server. Its neighbors at
2001:DB8:1::112 and 2001:DB8:1::113 are its route server clients. A route server context named
ONLY_AS27_CONTEXT is created and applied to the neighbor at 2001:DB8:1::113. The context uses an
import map that references a route map named only_AS27_routemap. The route map matches routes permitted
by access list 27. Access list 27 permits routes that have 27 in the AS path.
Additional References
Related Documents
MIBs
Technical Assistance
Description Link
The Cisco Support and Documentation website http://www.cisco.com/cisco/web/support/index.html
provides online resources to download documentation,
software, and tools. Use these resources to install and
configure the software and to troubleshoot and resolve
technical issues with Cisco products and technologies.
Access to most tools on the Cisco Support and
Documentation website requires a Cisco.com user ID
and password.