I know this would be a new beginning for Intense School readers to learn the best of Cisco IOS; yes, I am talking about IOS XR. Most of you guys always wanted to experience IOS XR fundamentals with ease of learning but were not getting the proper platform to learn it brick by brick.

Your search ends here for learning IOS XR technologies: Intense School is going to provide an exclusive opportunity to all of its users with very interactive IOS XR fundamental exercises. All of these exercises are designed to teach XR functionalities and command level executions of various technologies over IOS XR.

CCNA Training – Resources (Intense)

So let’s start the journey with a very brief introduction to IOS XR (which has already been published in my previous article, titled “Evolution of Cisco IOS”): 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 provide a functionality to restart a failed process without disturbing others.

First of all, let me lift a burden from your shoulders: Network theory of all technologies are almost the same here, meaning that fundamentals of BGP, OSPF, EIGRP, etc., are almost the same, so there is no need to start learning EIGRP/OPSF/BGP/MPLS from the beginning for this platform. The only new things from the learning point of view are the variety of different CLI command syntaxes.

Note: I am using Cisco ASR 9000 and 12000 series routers for configuration examples with IOS release 5.1.1.\

Figure 1 shows the rear panel of Cisco ASR 9001 AC router with some useful information.

Taking a closer look at Figure 1, IOS XR device has built-in console and auxiliary port; it also has physical management LAN ports that can be configured using “interface MgmtEth0/0/CPU0/0” and “interface MgmtEth0/0/CPU0/1” in global configuration mode.

An authorized account (username and password) is required to log in to IOS XR software. Figure 2 shows the output display of login prompt to access Cisco 12000 series IOS XR based router.

Let’s start our technical journey: IOS XR explores the new way to do implementation via a two-step configuration method.

In the first stage, you make required changes to the current configuration and this stage tests for transport error and proper command syntax before any kind of operational execution of the configuration to prevent routers’ inconsistency, which means it will not affect running configuration; this is the same as doing changes in a Word file before saving the changes, we just go through the correctness of changes. This kind of functionality is very useful to prevent real-time command execution errors such as syntax error; a transport error means your configured changes will not be applied immediately to running configuration as it is done with classic IOS.

The second stage allows you to take the effects of your configuration changes to a running configuration; you can save the changes using the “commit” command on the configuration mode. “Commit” command is very sensitive towards the execution: Either all or nothing will be accepted; if one of your configuration commands is not correct from the bunch of configurations, then not even a single change will be applied. Configuration changes can be checked with the “show configuration” command.

Note: Before triggering commit, final configuration after commit can be checked using

“show configuration merge” configuration mode command.

The following points describe the functional events behind every successful commit:

  1. Configuration session is locked before placing commit command.
  2. Make changes to configuration and create a rollback point for any kind of restore.
  3. Create a configuration history entry for commit execution which can be viewed with “show configuration history” command.
  4. Syslog configuration change log is generated.
  5. Merge target configuration with running configuration.
  6. Unlock the configuration session.

The commit command can be applied using some different sub-options to the router. The following sub-options of commit should be enough for a quick reference.

RP/0/0/CPU0:R1(config)# commit ?
best-effort       Commit the configuration changes via best-effort operation
comment           Assign a comment to this commit
confirmed         Rollback this commit unless there is a confirming commit
force             Override the memory checks
label             Assign a label to this commit
replace           Replace the contents of running configuration
save-running      Save running configuration to a file
<cr>              Commit the configuration changes via pseudo-atomic operation

IOS XR is also loaded with a great utility to check recent committed configurations with the “show configuration changes” command. The following figure (Figure 3) displays the output result of “show configuration commit changes?” where “?” helps you to choose the most applicable option with commit-id of recent committed configuration.

To check what configuration is committed with commit id 1000000005 (as shown in Figure 3), you can use “show config commit changes 1000000005”; Figure 4 displays the output result of this command.

“Show configuration” command is not only limited to check configuration implementation of a router. This command is one the most useful utilities for checking the different ways of configuring a router. You can refer to the sub-options of this command, as shown in Figure 5. This command is very useful for following the recent history of configuration events, to check rollback changes with any of specific commit id, running configuration, and most especially to check whether the configuration is locked or unlocked by using “sessions” sub-option.

Factory Reset Attempt with IOS XR

Often we use “write erase,” “erase startup-config,” followed by “reload” on classic IOS to make a factory reset. Are these commands also applicable for IOS XR? Or, as a frequently asked question regarding IOS XR, “How to factory reset an IOS-XR deceive?” and the answer is, “IOS XR uses a special set of commands to perform factory reset; you can use either ‘commit replace’ or ‘commit replace best-effort.'” Both of these commands will wipe all configuration out from a start-up configuration; in other words, a start-up configuration will be replaced by an empty start-up configuration.

Backup and Restore Configurations

Using the following command, we will save the running configuration to a file named myconfig to disk0 file system (you can also use tftp/ftp/nvram instead of using disk0 , as I have used disk0 file system in the following example).

RP/0/0/CPU0:R1#copy running-config disk0:myconfig
  Destination file name control-c to abort: [/myconfig]?         /** press Y or enter to execute 
  Building configuration.

And after executing the above command, you can check the existence of a saved file using the following “dir” command:

RP/0/0/CPU0:R1#dir disk0:

To restore this file “myconfig” to running configuration, you will have to use following “copy” command:

RP/0/0/CPU0:R1#copy disk0:myconfig running-config

The above command will make the required changes to the running configuration on the basis of myconfig file. All of you guys know very well that the copy command is used over privilege level only. Cisco IOS XR also facilitates file restore using the “load” command, which can be executed in global configuration mode; the following set of commands can be used to restore a file to running configuration.

RP/0/0/CPU0:R1(config)#load disk0:myconfig  /* this command will take effect only with commit command, so it’s a compulsionry to execute commit after load command execution. 

You can load a file from multiple sources including TFTP, FTP, NVRAM etc.

Rommon Mode Recovery

A ROMMON mode variable called BOOTLDR is used with Cisco 12000 series to restore an IOS image to bootflash from a TFTP server.

Following is the set of BOOTLDR commands to restore an IOS to bootflash from TFTP:

Rommon>set BOOTLDR=bootflash:/
Rommon>unset BOOT
Rommon>unset TFTP_FILE
Rommon>IP_ADDRESS= <IP_address>
Rommon>TURBOBOOT=on,[disk0] | [disk1] | [compactflash]

Abort or Step Back with Uncommitted Configuration

The following example will show you how to deal with the changes in uncommitted configuration:

RP/0/0/CPU0:R1(config)#hostname nv         /** I have set hostname to nv
RP/0/0/CPU0:R1(config)#show configuration      /** to check uncommitted configuration
Tue Dec 16 23:04:30.903 UTC
Building configuration...
!! IOS XR Configuration 5.1.1
hostname nv

RP/0/0/CPU0:R1(config)#clear         /** to clear uncommitted configuration
RP/0/0/CPU0:R1(config)#show configuration    /** to check whether “clear” worked or not
Tue Dec 16 23:04:45.062 UTC
Building configuration...  
!! IOS XR Configuration 5.1.1  
End                                 /** yes it worked you can see blank uncommitted configuration here 

Uncommitted configuration can also be flushed with “abort” command. Let’s check it again; In the following example, I am going to reconfigure the hostname to “nv”:

RP/0/0/CPU0:R1(config)#hostname nv 
RP/0/0/CPU0:R1(config)#show configuration
Tue Dec 16 23:05:09.920 UTC
Building configuration...
!! IOS XR Configuration 5.1.1
hostname nv

RP/0/0/CPU0:R1(config)#abort    /** let’s see the result with abort command
RP/0/0/CPU0:R1#conf t             /** as I entered abort, CLI prompt moved to privilege mode
Tue Dec 16 23:05:20.349 UTC
RP/0/0/CPU0:R1(config)#show configuration  
Tue Dec 16 23:05:22.449 UTC       /** let’s check the uncommitted configuration here 
Building configuration...
!! IOS XR Configuration 5.1.1    /** configuration is cleared.

I hope all of you have gained some of 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 representations 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 maximum of people can get this exclusive piece of information. Keep reading @ Instanseschool.com and you can join our Facebook group, http://www.facebook.com/intenseschool, to get updates on new posts.


Apart from my work experience and knowledge, the following sources helped me a lot to design this exclusive content.