Routing IPv6 with BGP – The Basics

Are you sensing a theme lately?  Since we covered the basics of the main IGPs (I'm an enterprise guy, so no IS-IS comments, please.), I thought I'd try to describe the basics of advertising IPv6 routes over BGP.  Yet again, we're not going to do any route manipulation or change any of the 948284928 BGP attributes.  We're just trying to get routes exchanged.


There's no new version of BGP for IPv6 here.  It's the standard BGP version 4 that we've all been using for years, but we're going to take advantage of the multiprotocol support (MPBGP, RFC 2858 RFC 4760).  We'll get to the differences in a second, but the first thing to do is to set up the BGP process as normal.  

Just as with the IGPs covered so far, the router ID needs to be set somehow.  Let's just manually set it for now.  We'll be routing on behalf of AS 65001.

Router(config)#router bgp 65001
Router(config-router)#bgp router-id

Since we're not using that archaic IPv4 any more, we need to disable IPv4 unicast, which is enabled by default when you configure MPBGP.

Router(config-router)#no bgp default ipv4-unicast

All is good so far?  Now comes the part that's different from your standard BGPv4 deployment with your ISP.  To enable the protocol for IPv6, we need to use the address-family directive.  This tells BGP which of the several protocols that you want to use in MPBGP.  We'll use IPv6, obviously; the others are well beyond our scope.

Router(config-router)#address-family ipv6

This will take your to the address family config mode which is where you can configure your neighbors and network statements just like you did in more traditional configurations of BGP.  A difference here is that you have to activate the neighbor before the address family is enabled for it.  Luckily, that's so easy I won't even explain it; I'm confident you can figure out which command does this.  Heh.  Let's peer with the router at fc00::2 using AS 65002 and advertise fc00:1::/64 to it, shall we?

Router(config-router-af)#neighbor fc00::2 remote-as 65002
Router(config-router-af)#neighbor fc00::2 activate
Router(config-router-af)#network fc00:1::/64

Piece of cake, right?

I've got to note that this is just one way to configure the IPv6 address family under MPBGP; there are other orders of command entry that can be used to get to the same config.  That's actually evident if you look at the config after your'e done.  

You'll see that config items don't land in the order and place that you configured them.  The end results are the same.

Checking Our Work

First, let's see if we have a neighbor adjacency.  We're all used to running show ip bgp summary, but we're not running IPv4.  The equivalent is show bgp ipv6 unicast summary.  The whole unicast/multicast thing is beyond both the scope of this article and of my comfortable knowledge.  🙂

We can see the neighbor is up and that we have a single prefix from that guy.  Let's check out exactly which route that is with the show bgp ipv6 unicast neighbor fc00::2 routes command.  That was a mouthful, eh?

It looks like we have a route to fc00:2::/64 through that neighbor.  That's a good thing since we're trying to exchange routes.  The next question is whether we are sending any routes to the neighbor.  Run show bgp ipv6 unicast neighbor fc00::2 advertised-routes (even more of a mouthful!) to find out.

That looks right.  We're advertising the route to fc00:1::/64 just as we configured in our neighbor statement above.  We're on a roll!

Finally, let's check the routing table to make sure that route from the neighbor landed there.  Run show ipv6 route like we've done with the IGPs, and you should see prefix as a "B" like in the old days of IPv4.

Well, there it is.  The only thing you may not have see is the concept of address families, but there's not much to that at all.  

Send any as-path prepends questions to me.

Aaron Conaway

I shake my head around sometimes and see what falls out. That's what lands on these pages.

More Posts

Follow Me:

3 comments for “Routing IPv6 with BGP – The Basics

  1. FRom
    February 10, 2011 at 11:04 am

    Thanks a lot for this!, 
    However, different syntax and even lengths of commands are bearable, but I find it frustrating, that we can't refer peer by name (which we can easily define, while configuring peer) in show bgp ipv6 nei … commands. (Or am I missing something?)
    With IPv6 it was ok, most of peer names were well know, but in a new world I find it hard to remember v6 addresses of my 6 BGP peers…

  2. Brent
    March 20, 2011 at 6:47 am

    Please note that RFC 4760 obsoletes RFC 2858

    • March 21, 2011 at 11:48 am

      Thanks, Brent. Updated to reflect the newer RFC.

Leave a Reply

Your email address will not be published. Required fields are marked *