Ok, time to get re-familiar with IOS XR code – been some time, worked on IOS for many many years – time to get my hands dirty again. So based on that, time to share!
Let’s start with the basic difference between Cisco IOS and Cisco IOS XR code, the Operating System.
In Cisco IOS, the kernel is monolithic, meaning everything in installed in a single image and all processes share the same address space. There is no memory protection between processes, so if one crashes it can impact all other processes on the box – thus forcing or causing a reload. The other thing with monolithic code is that it has a run to completion scheduler, so the kernel will not preempt a process that is running, the process must make a kernel call before another process has a chance to execute.
In Cisco IOS XR, the kernel is based on an OS called QNX Neutrino that runs some very powerful and reliable systems. QNX runs – per their News Release here, they run things from EKG machines, to Air Traffic Control systems, and among other things – automated beer bottle inspection systems. IOS XR offers modularity and memory protection between processes, threads and supports preemptive scheduling as well as the ability to restart a failed process. BGP, OSPF, OSPFv3, RIBv4, RIBv6, etc all run in separate spaces – is one has a fault, it will not impact the others. Also an added bonus, if you run multiple OSPF processes, each will run in its own memory space – this is an important feature of Service Providers – any fault with one customer will not impact another.
Another big difference between IOS and IOS XR is the configuration model. IOS is a single stage model meaning that as soon as you make a change, it is applied to the active running config. With IOS XR, you have a running (active) config that you cannot modify directly, all your changes are made in a staging area first before being committed to the running config. After you make your changes, you commit them and promote the staging config to the active config. Before the change is made active, the IOS XR will run a sanity check on it making sure that the commands are correct to a certain degree, if there is a problem it will tell you so that you can correct the error
% Failed to commit one or more configuration items. Please use ‘show configuration failed’ to view the errors
Here is a table of some of the other significant differences between IOS and IOS XR
IOS XR | IOS | |
Config changes do not take place immediately | Config changes take place immediately | |
Config changes must be COMMITed before taking effect | No commit, changes are immediate | |
You can check your configuration before applying | No verification, immediate | |
Two stage configuration | Single Stage | |
Configuration Rollback | Not easy to do, has to be tricked per-se with archive commands. | |
Feature Centric | Interface Centric |
I will be doing more and more posts about IOS XR and comparison to IOS going forward. Time to learn 🙂
Oh yeah, feedback and suggestion are welcomed. It has been some time since I looked at this stuff – so dont be shy 🙂
Brian Christopher Raaen said:
Yes I’ve been working through an ASR9000 deployment and am trying to note some on my lesions on my blog as I put together notes from the different configurations I’m working on. I have to say while the ASR9000 is quite different I find the platform quite rewarding as I am beginning to gain more mastery of the finer details.
N1x said:
IOS XR copy paste of junos logic 🙂
dpothier said:
Here’s another reference to converting IOS configuration to IOS XR configuration. Even though the release is older at 3.5 (current release is 4.2.1) the CLI commands still apply. Note that IOS XR runs on 3 Platforms (CRS, ASR9K, XR12K(GSR)) and the PI(Platform Independent) CLI such as routing,etc is the same across all IOS XR platforms.
http://www.cisco.com/en/US/docs/ios_xr_sw/iosxr_r3.5/xr12000_conversion/reference/guide/cn35main.html
dpothier said:
Here’s another reference to converting IOS configuration to IOS XR configuration. Even though the release is older at 3.5 (current release is 4.2.1) the CLI commands still apply. Note that IOS XR runs on 3 Platforms (CRS, ASR9K, XR12K(GSR)) and the PI(Platform Independent) CLI such as routing,etc is the same across all IOS XR platforms.
http://www.cisco.com/en/US/docs/ios_xr_sw/iosxr_r3.5/xr12000_conversion/reference/guide/cn35main.html
Pingback: IOS vs IOS XR – excellent introduction to XR and comparison | netport.org : networking blog
fcaron said:
Not too familiar with XR, great article FryGuy. Seems like config management (e.g. backing-up config so it can rolled-back or restored) is more complex than for IOS (just do a “show config” and capture and store output). Do you have a recommendation or a best practice to do that?
fryguy said:
Hmm… that sounds like another blog post!
fcaron said:
Not too familiar with XR, great article FryGuy. Seems like config management (e.g. backing-up config so it can rolled-back or restored) is more complex than for IOS (just do a “show config” and capture and store output). Do you have a recommendation or a best practice to do that?
LP said:
I work w XR in my lab exclusively. Thanks for this article. If you dont mind Id like to use this as a basis for presentation.
jjfry18018 said:
By all means, please feel free. I have quite a bit of content on the IOS XR here, so feel free to look around.
Thank you!
Jeff
LP said:
Cool!
jjfry18018 said:
By all means, please feel free. I have quite a bit of content on the IOS XR here, so feel free to look around.
Thank you!
Jeff
LP said:
I work w XR in my lab exclusively. Thanks for this article. If you dont mind Id like to use this as a basis for presentation.
jjfry18018 said:
By all means, please feel free. I have quite a bit of content on the IOS XR here, so feel free to look around.
Thank you!
Jeff
LP said:
Cool!
mirage said:
Many thanks! Timely help!