Border Gateway Protocol (BGP)
The Border Gateway Protocol (BGP) is a standard exterior gateway protocol developed for exchanging routing and reachability information between Autonomous Systems, a collection of IP routing prefixes managed by a single administrative entity. BGP makes routing decisions based on paths and network policies; although historically mainly seen in service provider networks, it is now gaining acceptance in large enterprise networks. BGP can also be used for routing within an autonomous system as an interior gateway protocol; when doing so it is referred to as iBGP.
Learning routes from BGP simplifies enterprise configuration and integration with Secure Vector Routing. In this configuration guide we will also discuss a SSR-specific feature referred to as "BGP over SVR" (or BGPoSVR), which combines the power of Secure Vector Routing with the rich feature set of the BGP protocol.
Prerequisites
This section presumes that you have a running SSR system and wants to add configuration to support BGP. The running SSR system should already include configuration for basic platform functionality (e.g., router, node, device-interface, network-interface) and basic SSR modeling configuration (e.g., tenants, services, etc.). Refer to the Element Reference section of our documentation for a better understanding about basics of the SSR data model.
Peering with non-SSR Routers
The BGP configuration exists in the routing configuration container within the SSR data model. For any routing configuration, static or dynamic, a default routing instance called default-instance must be defined in the SSR configuration.
In this example we will assume that BGP is configured on the peering router with IP address 1.1.1.1, as autonomous system number (ASN) 6000.
- To peer the SSR with this router, configure BGP on our SSR using the following commands:
admin@branchoffice1.seattlesite1# config auth
admin@branchoffice1.seattlesite1 (authority)# router seattlesite1
admin@branchoffice1.seattlesite1 (router[name=seattlesite1])# routing default-instance
Every SSR router (in this case, the router named seattlesite1), contains all of its legacy routing protocol information within the default-instance routing container.
admin@branchoffice1.seattlesite1 (routing[type=default-instance])# routing-protocol bgp
- Enter into the BGP portion of the routing configuration model; set the local autonomous system number to 100, and set the router ID to 1.1.1.128.
admin@branchoffice1.seattlesite1 (routing-protocol[type=bgp])# local-as 100
admin@branchoffice1.seattlesite1 (routing-protocol[type=bgp])# router-id 1.1.1.128
- Configure the
address-familyusingipv4-unicast. At least oneaddress-familymust be configured, and typically is set asipv4-unicast. If your deployment uses other address families (e.g., IPv6) or routes multicast, you may also need to configure support for other address families.
admin@branchoffice1.seattlesite1 (routing-protocol[type=bgp])# address-family ipv4-unicast
admin@branchoffice1.seattlesite1 (address-family[afi-safi=ipv4-unicast])# exit
Address families are also sometimes referred to as "AFI-SAFI" (pronounced "affy-saffy"), which is an Address Family Indicator plus Sub-Address Family Indicator.
- Configure the
neighbor. In the example here, we've identified its IP address as1.1.1.1and its ASN as 6000. (Because this neighbor has a different ASN than the SSR, the SSR will recognize it as an eBGP peer rather than an iBGP peer.) Anaddress-familyofipv4-unicast, lets the SSR know to exchange IPv4 unicast routes with the peer.
admin@branchoffice1.seattlesite1 (routing-protocol[type=bgp])# neighbor 1.1.1.1
admin@branchoffice1.seattlesite1 (neighbor[neighbor-address=1.1.1.1])# neighbor-as 6000
admin@branchoffice1.seattlesite1 (neighbor[neighbor-address=1.1.1.1])# address-family ipv4-unicast
admin@branchoffice1.seattlesite1 (address-family[afi-safi=ipv4-unicast])# next-hop-self true
admin@branchoffice1.seattlesite1 (address-family[afi-safi=ipv4-unicast])#exit
admin@branchoffice1.seattlesite1 (neighbor[neighbor-address=1.1.1.1])# exit
- Set
next-hop-selftotrue.During advertisement, non-directly connected routers need to learn how to reach an advertised route. To provide this information to the non-directly connected (as well as iBGP peers), next-hop-self command is used. This will cause the SSR to rewrite thenext-hopinformation in the routes it advertises to this peer to be its own address.
In the example above, we've set our router's AS to 100. This will apply to all neighbors as the "default" AS it will advertise. You can override this on a per-neighbor basis by setting local-as within the neighbor configuration to a different value. However, you must not configure the same value within the neighbor as you've already set in your global configuration. This may cause issues when attempting to establish a peering relationship.
- Use the
exitcommand several times to return to therouting-protocollevel of the configuration hierarchy, and issue theshowcommand. Your configuration should look something like this:
admin@branchoffice1.seattlesite1 (routing-protocol[type=bgp])# show
type bgp
local-as 100
router-id 1.1.1.128
address-family ipv4-unicast
afi-safi ipv4-unicast
exit
neighbor 1.1.1.1
neighbor-address 1.1.1.1
neighbor-as 6000
shutdown false
address-family ipv4-unicast
afi-safi ipv4-unicast
next-hop-self true
exit
exit
Advertising Routes
There are two ways to advertise routes into BGP:
- Using
networkstatements to identify the prefixes you want to advertise - Redistributing routes learned through other IGP or from configuration
Using the network Statement
To advertise routes to BGP, configure the network to be advertised under the address-family of the router. You may also apply a policy to the advertised route using command.
You can apply policies to these routes (i.e., policy and filters) individually. Policies are configured within the authority-level routing configuration at config > authority > routing > filter and config > authority > routing > policy. For more information, refer to the section in our documentation on Filters and Policies.
**admin@branchoffice1.seattlesite1# config auth
admin@branchoffice1.seattlesite1 (authority)# router seattlesite1
admin@branchoffice1.seattlesite1 (router[name=seattlesite1])# routing default-instance
admin@branchoffice1.seattlesite1 (routing[type=default-instance])# routing-protocol bgp
admin@branchoffice1.seattlesite1 (routing-protocol[type=bgp])# address- family ipv4-unicast
admin@branchoffice1.seattlesite1 (address-family[afi-safi=ipv4-unicast])# network 172.16.255.0/30
admin@branchoffice1.seattlesite1 (network[network- address=172.16.255.0/30])# policy allow
admin@branchoffice1.seattlesite1 (network[network- address=172.16.255.0/30])# exit**
In this example we're advertising the CIDR 172.16.255.0/30, and it will use the global route policy named allow (not shown).
Redistributing Routes
To redistribute connected, static, service routes, or routes learned through OSPF, you can use the redistribute configuration.
admin@branchoffice1.seattlesite1# config auth
admin@branchoffice1.seattlesite1 (authority)# router seattlesite1
admin@branchoffice1.seattlesite1 (router[name=seattlesite1])# routing default-instance
admin@branchoffice1.seattlesite1 (routing[type=default-instance])# routing-protocol bgp
admin@branchoffice1.seattlesite1 (routing-protocol[type=bgp])# redistribute connected
Redistribute Service
In addition to standard redistribution statements like redistribute connected and redistribute static, the SSR has the option to redistribute service. When a service route is created for a service on a router, a kernel route is also created for each of the addresses in the service. When the SSR determines that the service-route is down, (e.g., a peer service-route, and the peer is unreachable) the kernel route is removed. When the service-route transitions back up, the kernel route is re-added. The redistribute service setting triggers the redistribution of these kernel routes into the routing protocol (OSPF or BGP). The SSR announces these routes when the service-route is up and withdraws the routes when the service-route is down. For added control, the redistribute service configuration also allows setting a policy to control which routes may be advertised.
In Mist deployments, a specific combination of SSR and Mist configuration can result in a protocol redistribution scenario on the SSR for addresses configured for the application. In the case of the service any defined as 0.0.0.0/0, this can result in the SSR originating the default route. In scenarios where you are using BGP between the SSR and an existing network, this is likely undesirable. For more details about this interaction between redistribute service and Mist WAN Assurance, please refer to Mist Traffic Steering.
BGP over SVR (BGPoSVR)
Use BGP over SVR when peering with an SSR to gain the benefit of Secure Vector Routing for all BGP traffic flowing to-and-from the SSR peers.
This procedure assumes that the SSR system is configured for basic platform functionality. Refer to the configuration example below for context.
To configure BGP over SVR:
- Configure a routing interface. This is similar to a loopback interface on traditional routers. Unlike normal loopback BGP peering, this IP address does not need to be routable on the transport network because it will never see the wire. BGP peering is created on this interface. The conductor triggers on this and autogenerates the following components to activate BGP over SVR:
- bgp_speaker tenant
- Auto-generated BGP services and service routes
- Router Peers
These BGP connections are protected by SVR, and able to migrate between SVR paths.
You must use a conductor to configure BGP over SVR; manually configuring the various pieces between two routers is not supported.
If the interface facing the BGPoSVR peer is already part of a neighborhood, then ensure that the two routers' interface topology types (network-interface >neighborhood > topology) are configured allowing the routers to form peering relationships for the auto-generated peer service routes; e.g., mesh-mesh, mesh-hub, mesh-spoke or hub-spoke.
-
Configure a BGP instance with the router’s local AS and a router-id that matches the routing interface's IP. For each BGP over SVR peer, use a neighbor address of the neighbor's routing interface IP address.
-
Configure the BGP peer configuration options such as the timers and address families. In address-family IPv4-unicast,
next-hop-selfmust be set totrue.
When configuring BGPoSVR with an eBGP peer, you must set multihop ttl to at least 2.
Configuration Example:
config
authority
router myRouter
routing default-instance
type default-instance
interface rtg-int
name rtg-int
ip-address <myAddress>
exit
routing-protocol bgp
type bgp
local-as 100
router-id <myAddress>
neighbor <theirAddress>
neighbor-as 200
timers
hold-time 9
keepalive-interval 3
exit
address-family ipv4-unicast
afi-safi ipv4-unicast
next-hop-self true
exit
transport
local-address
routing-interface rtg-int
exit
exit
multihop
ttl 255
exit
exit
exit
exit
exit
Sample Configuration:
admin@branchoffice1.seattlesite1# config auth
admin@branchoffice1.seattlesite1 (authority)# router seattlesite1
admin@branchoffice1.seattlesite1 (router[name=seattlesite1])# routing default-instance
admin@branchoffice1.seattlesite1 (routing[type=default-instance])# interface bgp-int-seattle
admin@branchoffice1.seattlesite1 (interface[name=bgp-int-seattle])# ip- address 10.128.128.2
admin@branchoffice1.seattlesite1 (interface[name=bgp-int-seattle])# exit
admin@branchoffice1.seattlesite1 (routing[type=default-instance])# routing- protocol bgp
admin@branchoffice1.seattlesite1 (routing-protocol[type=bgp])# local-as 100
admin@branchoffice1.seattlesite1 (routing-protocol[type=bgp])# router-id 10.128.128.2
admin@branchoffice1.seattlesite1 (routing-protocol[type=bgp])# address- family ipv4-unicast
admin@branchoffice1.seattlesite1 (address-family[afi-safi=ipv4-unicast])# exit
admin@branchoffice1.seattlesite1 (routing-protocol[type=bgp])# neighbor 10.128.128.1
admin@branchoffice1.seattlesite1 (neighbor[neighbor-address=10.128.128.1])# neighbor-as 300
admin@branchoffice1.seattlesite1 (neighbor[neighbor-address=10.128.128.1])# address-family ipv4-unicast
admin@branchoffice1.seattlesite1 (address-family[afi-safi=ipv4-unicast])# next-hop-self true
admin@branchoffice1.seattlesite1 (address-family[afi-safi=ipv4-unicast])# exit
admin@branchoffice1.seattlesite1 (neighbor[neighbor-address=10.128.128.1])# transport
admin@branchoffice1.seattlesite1 (transport)# local-address
admin@branchoffice1.seattlesite1 (local-address)# routing-interface bgp-int-seattle
admin@branchoffice1.seattlesite1 (local-address)# exit
admin@branchoffice1.seattlesite1 (transport)# exit
admin@branchoffice1.seattlesite1 (neighbor[neighbor-address=10.128.128.1])# multihop
admin@branchoffice1.seattlesite1 (multihop)# ttl 255
admin@branchoffice1.seattlesite1 (multihop)# exit
admin@branchoffice1.seattlesite1 (neighbor[neighbor-address=10.128.128.1])# exit
admin@branchoffice1.seattlesite1 (routing-protocol[type=bgp])# exit
admin@branchoffice1.seattlesite1 (routing[type=default-instance])# exit
admin@branchoffice1.seattlesite1 (router[name=seattlesite1])# exit
admin@branchoffice1.seattlesite1 (authority)# exit
admin@branchoffice1.seattlesite1#
Service-route Mesh For Route Reflector Clients
Use this option to generate a full-mesh BGP over SVR configuration, where all spokes learn the routes from other spokes via the reflector. In this configuration, the hub is a route reflector and all spokes are SVR peers, having been placed in the same mesh neighborhood. The BGP next hop is the originating spoke, and traffic is passed via SVR directly between the spokes.
To use this feature, the following configuration must be in place:
- BGP must be configured with one or more route reflectors.
- On the router to be used as a route reflector, configure
routing-protocol bgp neighbor <ip-addr> address-family ipv4-unicast route-reflector client true.
- On the router to be used as a route reflector, configure
- The route-reflector is configured to connect via BGP over SVR to multiple clients.
- The route-reflector clients are configured to have a full mesh of SVR peering relationships with each other - this is done by putting them all in the same mesh neighborhood.
After verifying the router configurations are correct, use the GUI or the pcli to set route-reflector-client-mesh to true. The conductor then generates the service-routes to allow direct SVR communication between the clients, based on the BGP routes they learn from each other via the reflector.
Version History
| Release | Modification |
|---|---|
| 6.1.0 | This feature was introduced. |
Security Policy and Service Policy
The Security and Service Policy configuration options are provided for specifying the policy to be used for generated BGP-over-SVR services.

To access these settings from the pcli:
config
authority
bgp-service-generation
security-policy internal
service-policy prefer-path1
route-reflector-client-mesh true
exit
exit
exit
Version History
| Release | Modification |
|---|---|
| 6.1.0 | This feature was introduced. |
IPv6 Addressing
The SSR supports BGP using IPv6 addressing. IPv6 can be used alone, combined with IPv4, or IPv4 can continue to be used without IPv6. The functionality is broken out as follows:
- BGP IPv6 transport – BGP neighbors configured with IPv6 addresses
- BGP IPv6 unicast address family – BGP instances and neighbors support IPv6 unicast and IPv4 unicast
- BGP over SVR IPv6
BGP IPv6 Transport
The command routing-protocol bgp neighbor-address accepts either an IPv4 or IPv6 address.
routing-protocol bgp neighbor fc00::3
IPv6 Unicast
The commands routing-protocol bgp address-family and routing-protocol bgp neighbor address-family now accept ipv6-unicast and ipv4-unicast addresses.
routing-protocol bgp address-family ipv6-unicast
routing-protocol bgp neighbor fc00::3 address-family ipv6-unicast
Any combination of address families can be configured on a BGP instance or BGP neighbor. The neighbor IP address does not influence the neighbor address family configuration. IPv4 is the default address family; in situations where only IPv6 is or will be used for the neighbor, disable IPv4 using the following command:
routing-protocol bgp neighbor <> address-family ipv4-unicast activate false
BGP protocol redistribution is address family specific. The command routing-protocol bgp redistribute applies to the ipv4-unicast address family only. Use the following command for IPv6 unicast redistribution:
routing-protocol bgp address-family ipv6-unicast redistribute static
Service addresses can be distributed into both the IPv4 and IPv6 unicast address families.
BGP over SVR IPv6
An IPv6 address can be configured on a routing interface. The restriction of a single IP address per routing interface remains, but support for multiple routing interfaces is provided.
To auto-generate BGP over SVR IPv6 services: Configure the IP address of the remote routing interface for the neighbor, and set the neighbor transport to use a local routing interface.
IPv4 and IPv6 BGP over SVR peering sessions can be mixed, including connecting to the same peer with both an IPv4 and IPv6 address; however, the local routing interfaces must have the same IP address types as any remote IP BGP over SVR addresses.
Troubleshooting
Use the following show commands to gather route, alarm, event, and log information.
show bgp ipv6 <route>: Displays IPv6 specific routes.
(add example here)
show bgp neighbors <addr> received-routes | advertised-routes [<family>]
The valid values for family include all ipv4 ipv4-vpn ipv6 ipv6-vpn
(add example here)
show bgp summary [<family>]
The valid values for family include all ipv4 ipv4-vpn ipv6 ipv6-vpn
(add example here)
The remaining PCLI BGP commands are not address family specific.