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
|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 🙂