Once again it’s time to say “your search ends here.” Yes, we are going to learn some of IOS XR based routing fundamentals here. This article assumes that you have some basic access level knowledge of Cisco IOS XR (if not then you can take the reference from my previous post on IOS XR). As we already discussed, 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.

CCNA Training – Resources (Intense)

I know many of you guys have not experienced IOS XR yet and it’s a big hurdle for most executive network engineers to work with this IOS platform just because the lack of comfort level with XR. You will be more confident after covering some hands-on tutorials of IOS XR. That’s why I am going to start this article with a very simple configuration example involving two XR devices only (as shown in figure 1). First we will examine the basics of static, Rip and EIGRP routing configuration with command line implementation on given topology (as shown in Fig. 1). Later we will learn more technically advanced features of EIGRP, OSPF, ISIS, BGP, Route-filtering, IPv6, etc. with another hands-on interactive lab.

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

Note: The following set of commands are preconfigured on both routers:

Router xr1:

Tue Dec 30 17:18:27.551 UTC
Building configuration...
!! IOS XR Configuration 5.1.1
!! Last configuration change at Tue Dec 29 10:06:54 2014 by nitin
!
hostname xr1
cdp
interface Loopback1
ipv4 address 1.1.1.1 255.255.255.255
!
interface MgmtEth0/0/CPU0/0
cdp
ipv4 address 12.1.1.1 255.255.255.252
!
End

Router xr2:

Tue Dec 30 17:20:42.551 UTC
Building configuration...
!! IOS XR Configuration 5.1.1
!! Last configuration change at Mon Dec 29 11:22:34 2014 by nitin
!
hostname xr2
cdp
interface Loopback1
ipv4 address 2.2.2.2 255.255.255.255
!
interface MgmtEth0/0/CPU0/0
cdp
ipv4 address 12.1.1.2 255.255.255.252
!
End

Objective : xr1# ping 2.2.2.2 source 1.1.1.1 & xr2# ping 1.1.1.1 source 2.2.2.2

Static Routing: First we will learn how to achieve a given objective with static routing configuration on both routers.

As we already discussed in previous articles, IOS XR does not support traditional “ip route” command, so you have to use “router static” command over configuration mode to configure a static route and then all static routes must be configured under the respective “address-families” (it might be ipv4 or ipv6 with unicast /multicast transmission according to network’s need). That means that all static routes must be configured under address families only.

Syntax to configure Static Route

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

I hope you have found it very easy. Following configuration is required to fulfil an objective’s need.

Router xr1:

RP/0/0/CPU0:xr1(config)# router static
RP/0/0/CPU0:xr1(config -static)# address-family ipv4 unicast /* to configure ipv4 unicast route
RP/0/0/CPU0:xr1(config -static-afi)# 2.2.2.2/32 12.1.1.2 /* required 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-config

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.1.1/32 12.1.1.1
RP/0/0/CPU0:xr2(config -static-afi)# root
RP/0/0/CPU0:xr2(config)#commit

Check-point: RP/0/0/CPU0:xr1(config)#do show route //** you will definitely get a static route in your routing table, as it showing in fig. 2

Figure 2 displays the output result of “show route” command (“show route static” command can also be used to check static routes). You can see the entry of 2.2.2.2/32 as static route in the routing table. Now it’s time to ping 2.2.2.2 with source address 1.1.1.1 (as per given objective). Yes, you will get the same result as I got (refer to Fig. 3).

Routing information Protocol (RIP): Let’s learn how to configure RIP routing on both routers to achieve a given objective and to be sure that RIP should not advertise routing updates on loopback interfaces.

RIP is a simple and easy to configure routing protocol and has two versions. RIP uses Bellmen ford algorithm, periodic updates (every 30 seconds) and is limited to 15 hops only. You can refer to our previously published articles (IOS based) to learn the technical fundamentals of RIP routing protocol. By default IOS XR supports RIPv2 and there’s no need to disable automatic summarisation to receive classless routes because automatic summarisation is disabled by default.

Interface-related information such as database entries and statistics can be cleared using “clear rip interface” command for RIP.

Syntax to configure RIP protocol:

(config)#router rip
(config -rip)# interface  /* interfaces that need to be enabled for RIP
(config –rip-if)#passive-interface /* RIP will not advertise the routing updates to this interface
(config –rip-if)# root /* back to config mode

RIP can be configured on both routers xr1 & xr2 by enabling required interfaces under RIP process using following set of configurations to achieve the given objective.

Router xr1:

RP/0/0/CPU0:xr1(config)# router rip
RP/0/0/CPU0:xr1(config -rip)# interface MgmtEth0/0/CPU0/0
RP/0/0/CPU0:xr1(config - -rip-if)# exit
RP/0/0/CPU0:xr1(config -rip)# interface loopback 1
RP/0/0/CPU0:xr1(config -rip)# passive-interface
RP/0/0/CPU0:xr1(config -rip-if)# exit
RP/0/0/CPU0:xr1(config)#commit /* uncommitted configuration can be checked using privilege mode command "show running-config router rip"

Router xr2:

RP/0/0/CPU0:xr2(config)# router rip
RP/0/0/CPU0:xr2(config -rip)# interface MgmtEth0/0/CPU0/0
RP/0/0/CPU0:xr2(config - -rip-if)# exit
RP/0/0/CPU0:xr2(config -rip)# interface loopback 1
RP/0/0/CPU0:xr2(config -rip)# passive-interface
RP/0/0/CPU0:xr2(config -rip-if)# exit
RP/0/0/CPU0:xr2(config)#commit

After configuring the above commands, you will definitely get a RIP route in the routing table (as shown in Fig. 4). Now you can check the reachability between router’s loopbacks using ping command and you will get the same output result as per Fig. 3.

Useful Note on RIP:

Status of a RIP process can be checked using “show process rip.” This command is also useful for RIP process recovery without impacting Routing information Base (RIB). A RIP process can be restarted, shutdown, or blocked using the following privilege mode commands:

RP/0/0/CPU0:xr1# process restart rip
RP/0/0/CPU0:xr1# process shutdown rip
RP/0/0/CPU0:xr1# process blocked  /* job-id can be checked using "show process rip"

Enhanced Interior Gateway Routing Protocol (EIGRP): Now let’s learn “how to configure EIGRP routing protocol” on both routers to achieve the given objective.

EIGRP supports both address families – IPv4 & IPv6 in IOS XR – and we have to enable the required interfaces under relative address families. Automatic summarisation is disabled by default so there’s no need to execute “no auto-summary” under EIGRP process. The following set of configurations is used to enable the EIGRP routing process and required interfaces in EIGRP IPv4 address family.

Syntax to configure EIGRP:

(config)# router eigrp 
(config -eigrp)# address-family ipv4 /* to enter IPv4 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 ipv4
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 ipv4
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 EIGRP route in your routing table as it is showing in Fig. 5.

Finally, it’s time to check the end to end reachability between both routers and you will get the same result as it displayed in Fig. 3.

Useful Note on EIGRP:

  • In IOS XR, the EIGRP router-id can be different for different address-families (it can also be the same). Router-id can be configured in EIGRP under the address-family using the following command “(config-eigrp-af)#router-id 1.1.1.1”
  • The “show protocols eigrp” command is used to check EIGRP K-values, router-id, variance, AD, eigrp enabled interfaces, etc.
  • The “show eigrp interfaces ” command displays the information of EIGRP enabled interfaces, you can check Hello/Hold timers, EIGRP metric, Authentication mode, bandwidth percentage, etc. with this command.
  • “show eigrp topology” is used to check EIGRP database. This command also provides the information of feasible successor, feasible distance, reported distance.
  • The “clear eigrp neighbor” command is used to reload EIGRP neighbor table.

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 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 feedback and you can also share your Intenseschool.com experience.

And don’t forget to spread the link of this article on your Facebook, Twitter and LinkedIn so that the maximum number of people can get this exclusive piece of information. Keep reading at Instanseschool.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 and knowledge, the following sources helped me a lot to design this content.

http://www.cisco.com/c/en/us/products/ios-nx-os-software/ios-xr-software/index.html

http://www.cisco.com/c/en/us/td/docs/routers/crs/software/crs_r42/routing/command/reference/b_routing_cr42crs/b_routing_cr42crs_chapter_01001.html

http://www.cisco.com/c/en/us/td/docs/routers/crs/software/crs_r42/routing/command/reference/b_routing_cr42crs/b_routing_cr42crs_chapter_0111.html

http://www.cisco.com/c/en/us/td/docs/ios/fundamentals/command/reference/cf_book.html

http://www.cisco.com/c/en/us/td/docs/ios_xr_sw/iosxr_r38/routing/command/reference/rr38/rr38egp.pdf

http://www.cisco.com/c/en/us/td/docs/routers/crs/software/crs_r42/routing/configuration/guide/b_routing_cg42crs/b_routing_cg42crs_chapter_010.html