Last Updated: Oct 5, 2018 @ 12:18 am (UTC)

Extending BGP

BGP has been around for a long time as the routing protocol of the internet. Because of this, we often think of BGP as the IPv4 routing protocol used to peer with service providers.

Modern BGP is very robust, and is capable of so much more than IPv4 routes. Back in 2007, RFC 4760 defined extensions to BGP to make it capable of carrying more than IP traffic, at one time. This is MP-BGP, or Multiprotocol BGP.

Each type of traffic that BGP can carry is an address family. Address families include:

  • IPv4 and IPv6 – Including unicast and multicast routes
  • L2VPN – layer-2 VPN information, such as VPLS or EVPN
  • VPNv4 and VPNv6 – Layer-3 VPN information. This is MPLS VPN


The available address families will depend on the platform. Smaller platforms may only have IPv4 and IPv6. Large service-provider platforms will have many address-family options.

The strength of MP-BGP is that it can carry several address families at once. It is often used with MPLS VPN’s, as it can carry MPLS information as well as IPv4 and IPv6 information. This makes it a great choice for service providers. They can create a backbone network, and use



BGP and VRF’s to carry routes for several customers.



This lab provides a simple example of how BGP can carry routes for several protocols.

In this lab, there are two routers, which both run IPv4 and IPv6. Loopback interfaces simulate extra networks.

BGP uses IPv4 and IPv6 address families. There is a neighbour relationship configured in each address family.


The interfaces use IPv4 and IPv6 addresses. Once done, the routers will be able to ping each other with IPv4 and IPv6.


R1(config)#interface gigabitEthernet 0/1
R1(config-if)#ip address
R1(config-if)#ipv6 address fc00::1/48 
R1(config-if)#no shutdown

R1(config)#interface loopback 0
R1(config-if)#ip address

R1(config)#interface loopback 1
R1(config-if)#ipv6 address fc00:1111::1/48
R2(config)#interface gigabitEthernet 0/1
R2(config-if)#ip address
R2(config-if)#ipv6 address fc00::2/48
R2(config-if)#no shutdown

R2(config)#interface loopback 0
R2(config-if)#ip address

R2(config)#interface loopback 1
R2(config-if)#ipv6 address fc00:2222::1/48


To use IPv6 in a dynamic routing protocol, enable ipv6 unicast-routing.

BGP is configured with an IPv4 and IPv6 iBGP neighbour. Networks are advertised within the address families.


R1(config)#ipv6 unicast-routing

R1(config)#router bgp 65535
R1(config-router)#neighbor remote-as 65535
R1(config-router)#neighbor fc00::2 remote-as 65535

R1(config-router)#address-family ipv4 unicast 
R1(config-router-af)#neighbor activate
R1(config-router-af)#network mask
R1(config-router-af)#network mask

R1(config-router)#address-family ipv6 unicast 
R1(config-router-af)#neighbor fc00::2 activate
R1(config-router-af)#network fc00::/48
R1(config-router-af)#network fc00:1111::/48
R2(config)#ipv6 unicast-routing

R2(config)#router bgp 65535
R2(config-router)#neighbor remote-as 65535
R1(config-router)#neighbor fc00::1 remote-as 65535

R2(config-router)#address-family ipv4 unicast
R2(config-router-af)#neighbor activate
R2(config-router-af)#network mask
R2(config-router-af)#network mask

R2(config-router)#address-family ipv6 unicast 
R1(config-router-af)#neighbor fc00::1 activate
R2(config-router-af)#network fc00::/48
R2(config-router-af)#network fc00:2222::/48


Verify this by looking at the BGP routing table. One instance of BGP is carrying information for two address families.


R1#sh bgp ipv4 unicast
BGP table version is 4, local router ID is

     Network          Next Hop            Metric LocPrf Weight Path
 * i                 0    100      0 i
 *>                           0         32768 i
 *>                  0         32768 i
 *>i                 0    100      0 i

R1#sh bgp ipv6 unicast

     Network          Next Hop            Metric LocPrf Weight Path
 * i FC00::/48        FC00::2                  0    100      0 i
 *>                   ::                       0         32768 i
 *>  FC00:1111::/48   ::                       0         32768 i
 *>i FC00:2222::/48   FC00::2                  0    100      0 i
R2#sh bgp ipv4 unicast 
BGP table version is 5, local router ID is

     Network          Next Hop            Metric LocPrf Weight Path
 *>                  0         32768 i
 * i                         0    100      0 i
 *>i                 0    100      0 i
 *>                  0         32768 i

R2#sh bgp ipv6 unicast

     Network          Next Hop            Metric LocPrf Weight Path
 * i FC00::/48        FC00::1                  0    100      0 i
 *>                   ::                       0         32768 i
 *>i FC00:1111::/48   FC00::1                  0    100      0 i
 *>  FC00:2222::/48   ::                       0         32768 i



Cisco – Multiprotocol BGP for IPv6 Configuration Example


Leave a Reply