This article examines IPv6 routing implementations over Cisco IOS XR. It would be great if you have some basic access level knowledge of Cisco IOS XR (if not, then you can take the reference from my previous posts on IOS XR). As we already said, “IOS XR is one of the best IOS platforms from the house of Cisco Systems and is used widely on high-end carrier routers such as the CRS-1, 12000, and ASR9000 series. IOS XR works as a distributed operating system to provide modularity and memory protection between processes. Cisco’s self-healing feature provides a functionality to restart a failed process without disturbing others.”

This article covers IPv6 routing implementation examples and we have two IOS XR devices in our scenario (as shown in figure 1). This article offers an opportunity to learn IPv6 routing configuration of EIGRP, OSPF, and BGP with hand-on implementation.

Let’s start with the very first PIv6 routing configuration example of Cisco IOS XR.

Note: Following set of commands is preconfigured on both routers.

Router xr1:

Tue Feb 16 17:18:27.551 UTC
Building configuration...
!! IOS XR Configuration 5.1.1
!! Last configuration change at Tue Feb 16 10:06:54 2016 by nitin
!
hostname xr1 
cdp
interface Loopback1
 ipv6 address 1::1/128
!
interface MgmtEth0/0/CPU0/0
 cdp
 ipv6 address FD01:1111::1/126
!
End

Router xr2:

Tue Feb 16 17:20:42.551 UTC
Building configuration...
!! IOS XR Configuration 5.1.1
!! Last configuration change at Mon Feb 15 11:22:34 2016 by nitin
!
hostname xr2 
cdp
interface Loopback1
 ipv6 address 2::2/128
!
interface MgmtEth0/0/CPU0/0
 cdp
 ipv6 address FD01:1111::2/126
!
End

Objective: xr1# ping 2::2 source 1::1 & xr2# ping 1::1 source 2::2

Static Routing: Let’s first learn how to achieve the given objective with IPv6 static routing configuration on both routers.

As we already discussed in previous articles, IOS XR does not support the traditional “ipv6 route” command, so that you will have to use the “router static” command in configuration mode to enable static routing and then all required PIv6 static routes must be configured under the “IPv6 address-family.”

Syntax to configure an IPv6 Static Route

(config)#router static
(config -static)# address-family ipv6  <unicast/multicast>
(config -static-afi)# <network/CIDR>  

I hope you have found it very easy. The following configuration is required to fulfill the objective’s need.

Router xr1:

RP/0/0/CPU0:xr1(config)# router static
RP/0/0/CPU0:xr1(config -static)# address-family ipv6 unicast     /* to configure ipv6 unicast route
RP/0/0/CPU0:xr1(config -static-afi)# 2::2/128 FD01:1111::2       /* Destination network with next hop address
RP/0/0/CPU0:xr1(config -static-afi)# root       /* back to config mode
RP/0/0/CPU0:xr1(config)# commit                 /* to save above configuration to running-

Router xr2:

RP/0/0/CPU0:xr2(config)# router static
RP/0/0/CPU0:xr2(config -static)# address-family ipv4 unicast
RP/0/0/CPU0:xr2(config -static-afi)# 1::1/128 FD01:1111::1
RP/0/0/CPU0:xr2(config -static-afi)# root
RP/0/0/CPU0:xr2(config)#commit

To verify the above configuration, RP/0/0/CPU0:xr1#show route ipv6 static //**, you will definitely get an IPv6 static route in your routing table, as shown in Fig. 2 below:

In Figure 2, you can see the entry of 2::2/128 as an PIv6 static route in the routing table of xr1 and an entry of 1::1/128 in xr2 device. Now it’s time to ping 2::2 with the source address 1::1 from router xr1 (as per given objective). And, I am sure that you will get the same output result as I got (refer to Fig. 3).

Routing information Protocol (RIP): IOS XR does not support RIPng (with 5.1 release).

Enhanced Interior Gateway Routing Protocol (EIGRP): Now let’s learn “how to implement IPv6 EIGRP routing” on both routers to achieve the given objective. As we have already discussed, automatic summarization is disabled by default, so there is no need to execute “no auto-summary” under the EIGRP process. The following set of configurations will be required to enable the EIGRP routing process with interface-ids under the IPv6 address family.

Syntax to configure EIGRP:

(config)# router eigrp 
(config -eigrp)# address-family ipv6        /* to enter IPv6 address-family
(config –eigrp-af)# interface    /* to enable this interface under EIGRP
(config -eigrp-af-if)# root

Router xr1:

RP/0/0/CPU0:xr1(config)# router eigrp 10
RP/0/0/CPU0:xr1(config -eigrp)# address-family ipv6
RP/0/0/CPU0:xr1(config –eigrp-af)# interface MgmtEth0/0/CPU0/0
RP/0/0/CPU0:xr1(config -eigrp-af-if)# exit
RP/0/0/CPU0:xr1(config –eigrp-af)# interface loopback 1
RP/0/0/CPU0:xr1(config –eigrp-af-if)# root
RP/0/0/CPU0:xr1(config)#commit

Router xr2:

RP/0/0/CPU0:xr2(config)# router eigrp 10
RP/0/0/CPU0:xr2(config -eigrp)# address-family ipv6
RP/0/0/CPU0:xr2(config –eigrp-af)# interface MgmtEth0/0/CPU0/0
RP/0/0/CPU0:xr2(config -eigrp-af-if)# exit
RP/0/0/CPU0:xr2(config –eigrp-af)# interface loopback 1
RP/0/0/CPU0:xr2(config –eigrp-af-if)# root
RP/0/0/CPU0:xr2(config)#commit

After configuring the above commands, you will definitely get the IPv6 EIGRP route in your routing table, as shown in Fig. 4.

Finally, it’s time to check the end-to-end reachability between the routers and you will get the same result as displayed in Fig. 3 (above in this article).

Note: In IOS XR, the EIGRP router-id can be different for different address-families (it can also be the same). The router-id can be configured in EIGRP under address-family using the following command: “(config-eigrp-af)#router-id 1.1.1.1”.

Open Shortest Path First: As we already know, OSPF is a link state IGP that runs on the IP layer and uses IP port number 89. OSPF uses FF02::5 for multicasting LSAs and hello packets, and uses the FF02::6 multicast address for handling queries to DR/BDR in IPv6 routing. OSPF is an area-based routing protocol where “area 0” is considered as the backbone area. You can refer to our previously published Cisco IOS based articles to learn the more technical aspects of the OPSF routing protocol.

As we already discussed in previous articles, IOS XR does not support the traditional “network” command to establish IGP neighbor-ship or to advertise networks, so you will have to enable required interfaces to form IPv6 OSPF neighborship and network advertisement. The following set of commands is used to define an OSPF process on an IOS XR-based router.

Syntax to configure OSPF routing

(config)#router ospfv3      /* process id is locally significant
(config-ospf)# router-id 
(config-ospf)# area 
(config-ospf-ar)#interface    /* to enable OSPF on an interface 
(config-ospf-ar-if)#exit

The following configuration is required to fulfill the objective’s need.

Router xr1:

RP/0/0/CPU0:xr1(config)# router ospfv3 1
RP/0/0/CPU0:xr1(config-ospf)# router-id 1.1.1.1
RP/0/0/CPU0:xr1(config-ospf)# area 0
RP/0/0/CPU0:xr1(config-ospf-ar)# interface loopback 1
RP/0/0/CPU0:xr1(config-ospf-ar-if)# exit
RP/0/0/CPU0:xr1(config-ospf-ar)# interface MgmtEth0/0/CPU0/0
RP/0/0/CPU0:xr1(config –ospf-ar-if)# root       /* back to config mode
RP/0/0/CPU0:xr1(config)# commit                 /* to save above configuration to running-config  

Router xr2:

RP/0/0/CPU0:xr2(config)# router ospfv3 1
RP/0/0/CPU0:xr2(config-ospf)# router-id 2.2.2.2
RP/0/0/CPU0:xr2(config-ospf)# area 0
RP/0/0/CPU0:xr2(config-ospf-ar)# interface loopback 1
RP/0/0/CPU0:xr2(config-ospf-ar-if)# exit
RP/0/0/CPU0:xr2(config-ospf-ar)# interface MgmtEth0/0/CPU0/0
RP/0/0/CPU0:xr2(config –ospf-ar-if)# root       /* back to config mode
RP/0/0/CPU0:xr2(config)# commit                 /* to save above configuration to running-config 

To verify the above configuration, RP/0/0/CPU0:xr1#show route ipv6 ospf //**, you will definitely get an OSPF learned ipv6 route (1::1/128) in your routing table, as shown in Fig. 5 below.

Figure 5 also displays the output result of the “show ospfv3 neighbors” command on router xr2; you can see an entry of OSPF neighbor as 1.1.1.1. Now it’s time to ping 1::1 with source address 2::2 from router xr2 (as per given objective). For sure, you will get the same result as I got (refer to Fig. 3).

Border Gateway Protocol (BGP): Now let’s learn “how to configure BGP routing protocol” on both XR routers to achieve the given objective.

By default, automatic summarization is disabled in BGP, so there is no need to execute “no auto-summary” under the BGP process. The most important thing is the network advertisement; all required networks to be advertised within IPv6 address-families “(config-bgp-af)#” only. The following set of configurations is used to initialize the BGP routing process and to advertise networks in IPv6 address family.

Syntax to configure BGP routing:

(config)# router bgp 
(config-bgp)#neighbor <Neighbor’s IP>
(config-bgp-nbr)#remote-as <Neighbor’s AS >
(config-bgp-nbr)#address-family  ipv6         
(config-bgp-nbr-af)#exit
(config-bgp-nbr)#exit
(config-bgp)#address-family     
(config-bgp-af)#network <X.X.X.X/X | X:….::X/X >  /* to advertise IPv6 address into BGP
(config –bgp-af)# root
(config)#commit

Router xr1:

RP/0/0/CPU0:xr1(config)#router bgp 10
RP/0/0/CPU0:xr1(config-bgp)#neighbor FD01:1111::2
RP/0/0/CPU0:xr1(config-bgp-nbr)#remote-as 10
RP/0/0/CPU0:xr1(config-bgp-nbr)#address-family ipv6 unicast
RP/0/0/CPU0:xr1(config-bgp-nbr-af)#exit
RP/0/0/CPU0:xr1(config-bgp-nbr)#exit
RP/0/0/CPU0:xr1(config-bgp)#address-family ipv6 unicast
RP/0/0/CPU0:xr1(config-bgp-af)#network 1::1/128
RP/0/0/CPU0:xr1(config –bgp-af)# root
RP/0/0/CPU0:xr1(config)#commit

Router xr2:

RP/0/0/CPU0:xr2(config)#router bgp 10
RP/0/0/CPU0:xr2(config-bgp)#neighbor FD01:1111::1
RP/0/0/CPU0:xr2(config-bgp-nbr)#remote-as 10
RP/0/0/CPU0:xr2(config-bgp-nbr)#address-family ipv6 unicast
RP/0/0/CPU0:xr2(config-bgp-nbr-af)#exit
RP/0/0/CPU0:xr2(config-bgp-nbr)#exit
RP/0/0/CPU0:xr2(config-bgp)#address-family ipv6 unicast
RP/0/0/CPU0:xr2(config-bgp-af)#network 2::2/128
RP/0/0/CPU0:xr2(config –bgp-af)# root
RP/0/0/CPU0:xr2(config)#commit

“show bgp ipv6 unicast summary” will be used to verify the status of IPv6 BGP peer and if your peer is UP then you will definitely get an IPv6 BGP route in your routing table by using the “show bgp ipv6 unicast” command, as shown in Fig. 7.

Finally, it’s time to check the end-to-end reachability between the routers and you will surely get the same result as it displayed in Fig. 3 (above in this article).

I hope all of you have gained some exclusive information from this article. IOS XR is very handy if you follow some simple guidelines. I will come back soon with some more interactive and exclusive hands-on representation of IOS XR scenarios. Now it’s your time to write feedback and comments about this article, I am eagerly waiting to read your feedbacks and you can also share your Intenseschool.com experience.

And don’t forget to spread the link of this article on your Facebook, Twitter & LinkedIn so that maximum of people can get this exclusive piece of information. Keep reading @ Intenseschool.com and you can join our Facebook group, http://www.facebook.com/intenseschool, to get updates on new posts.

References

Apart from my work experience & knowledge, the following sources helped me a lot in writing this exclusive content.

http://www.cisco.com/c/en/us/td/docs/ios_xr_sw/iosxr_r37/routing/command/reference/rr37osp3.html

Cisco IOS XR Fundamentals, written by Mobeen Tahir, Mark Ghattas, Dawit Birhanu and Syed Natif Nawaz.