08-12-2023
03:48 AM
- last edited on
10-30-2023
01:44 AM
by
Translator
Hello Community,
Can you please explain below output of
show version command
? I'm confused with it, why it indicates there are two operating systems IOS & IOS-XR on the same router? And plus both operating systems have different versions. How is it possible that different operating systems are running on the same router? Output is from Router - ISR4331/K9. Thank you.
Router# show version
Cisco IOS XE Software, Version 03.16.04b.S - Extended Support Release
Cisco IOS Software, ISR Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 15.5(3)S4b, RELEASE SOFTWARE (fc1)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2016 by Cisco Systems, Inc.
Compiled Mon 17-Oct-16 20:23 by mcpre
Solved! Go to Solution.
08-13-2023 05:18 PM - edited 08-14-2023 12:59 PM
"Am I correct with the statement above?"
Personally, I think that's correct, more-or-less.
Why more-or-less?
When XE first came out, just going by Cisco's publicly released information, I was under the impression, the Linux portion was mostly performing in a role much like a product like VMWare, allowing "classic" IOS to run under it. Also much like OS|2 allowed DoS or Windows to run under it, or something like GNS3 running actual "classic" IOS binaries under it.
From the information that @Ramblin Tech provided, it sounds like "classic" IOS was, even initially, bound much tighter to Linux, than I understood.
Regardless, though, definitely there are two major components to XE, the Linux portion and the modified version of classic IOS to run under it.
For whatever reason (Jim's mentioned possible why this was done - as a "sales" feature [laugh - perhaps Cisco's version of "new and improved" or "lemon freshened"]), Cisco chose to make it clear there were these two major component parts of XE.
As to version numbers, software developers can do whatever they want, and whether different component numbers need match, or only "mate" with a specific corresponding number, again, up to the software developer's.
(As an aside, on one major software project I worked on decades ago, I proposed version numbers as part of the information we passed between programs exchanging data. At first, the other developers say, huh? I said, how else can we easily check we're actually usually the same "template"? Interestingly, decades later, Cisco Catalyst 3750 appeared to have a version/release number embedded in their StackWise code, so that stack members running different IOS versions could determine if their StackWise code was compatible. [I recall, if StackWise version number matched, but release number differed, stack would throw a warning, but if the StackWise version number differed, StackWise would throw an error message and the whole stack would not function as a single unit.])
08-15-2023 02:45 PM
@NetworkingGeek1 Yes, the infrastructure component (let's call that "BINOS") and control plane component (IOSd) that runs on top of the infra are two separate pieces of s/w bundled up and shipped together. I tend to think of the 3.16.4 release numbering as encompassing all components in the bundle: infra, IOSd control plane, data plane (code to drive the NPU and interfaces), etc. But, I think it is quibbling of me to say any other view on that is wrong (unless that other view is coming from the XE engineering org, in which case I'll just finally shut up).
Thankfully, as you have seen with your upgrade to 17.6.5, there is now only one release number system in use with XE. Whew!
08-12-2023
04:01 AM
- last edited on
10-30-2023
02:12 AM
by
Translator
The router is loaded with a very old IOS version because the IOS "naming" convention has two of the versions, namely,
15.5(3)S4b
(old IOS "name") and the newer name of
3.16.4b.
Both versions are the same except the old naming convention is no longer in use.
08-12-2023
04:09 AM
- last edited on
10-30-2023
02:15 AM
by
Translator
@Leo Laohoo Thank you for the reply. But also what confuses me is that it's written
IOS XE Software and IOS Software. But IOS and IOS XE are two different operating systems. So, which version operating system it actually runs? I suppose it's IOS XE, but why they also indicate IOS Software?
08-12-2023 04:15 AM
The code is a "transition" from the old naming convention to the new one.
But ISR 4k run on IOS-XE.
08-12-2023
04:22 AM
- last edited on
10-30-2023
02:18 AM
by
Translator
My understanding of XE (4k ISRs are not XR) systems is two OSs are used, a LINUX as a "VM" running a "classic" IOS converted to run under/with LINUX, IOSd. (see https://en.m.wikipedia.org/wiki/Cisco_IOS_XE). The advantage of this, other "things" can run concurrently which 1) don't need to be tied into the IOS, and 2), can leverage multiple CPU cores.
I believe what that
show version
reveals is the version of LINUX and IOSd (the "d" might be for "daemon").
Whether XE's architecture has since evolved, that I don't know. (Possibly, some of the "evolution" might be change what
show version
displays as many network engineers are a bit confused by this. [BTW, nothing wrong with the question.])
08-12-2023
05:06 AM
- last edited on
10-30-2023
02:19 AM
by
Translator
@Leo Laohoo & @Joseph W. Doherty Thank you. After this Router was upgrades to the
IOS XE version 17.06.05
, it looks like this:
Router#show version
Cisco IOS XE Software, Version 17.06.05
Cisco IOS Software [Bengaluru], ISR Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 17.6.5, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2023 by Cisco Systems, Inc.
Compiled Wed 25-Jan-23 16:08 by mcpre
Still indicates both IOS XE and IOS, but this time version is the same.
08-12-2023 05:57 AM
It is OK. IOS and IOS-XE are the same, can be used interchangeably and means the same thing.
08-12-2023
08:29 AM
- last edited on
10-30-2023
02:20 AM
by
Translator
Technically, I suspect the two OSs are still different versions, but they are set to be the same version so you have a "matched set".
Years (and years) ago, some routers had a mini IOS, for booting into (BTW not ROMMON software) that, I recall, had the same version as the "full" IOS variants. I further recall (?) Cisco recommended both be upgraded at the same time, but actually you almost never needed to update the mini version, but if you didn't, you would see two different IOS versions displayed with
show version
.
08-12-2023
10:36 AM
- last edited on
10-30-2023
03:38 AM
by
Translator
[Warning: Pedantry ahead. Stop reading now if you cannot stand old people who drone on endlessly about things that don't matter, some of which might be true (memories get hazy)]
The original IOS was a monolithic OS created in the same era at Stanford as Sun Microsystems workstations, even originally running on the same processor family (Motorola 68000) as Sun. It was a monolithic image in the sense that the routing code was compiled and statically linked into its proprietary real-time kernel, along with the device drivers that interface to the outside world (console, ethernet & serial interfaces, etc). The code was non-reentrant and non-relocatable, full of propreitary APIs, and its "processes" (threads, really) did not have memory protection and ran-to-completion (as opposed to being interruptable and scheduled). Any bug fix required a complete recompilation and linking to produce a new image to be booted, as there were no dynamic libraries that could be replaced while the system was running. In short, great for the 1980's, but not so much in the 21st century.
In the early 2000's there was an attempt to move to a next-gen IOS that would replace the home-grown kernel in the monolith with a commercially available micro-kernel that was already being implemented in the new CRS product: QNX Neutrino. The idea behind this project, code named ION (IOS on Neutrino), was that IOS routing "blob" (all the IOS routing good stuff) would initially be kept intact but run on top of Neutrino as a single process. Slowly, IOS processes would be peeled out of the blob and rewritten ("IONized") to run as discrete processes on the kernel. Commercially, ION was launched on the Catalyst 6500 as "Modular IOS" and planned for widespread adoption across most all IOS platforms. However, it turned out to be a very expensive proposition to rewrite IOS to ION APIs and the initiative lost steam after the 6500, because there was a better idea...
In 2004 Cisco acquired BCN Systems, which was full of ex-Cisco and ex-Juniper developers who had good ideas about how network operating systems could be built. Out of their ideas came the idea of separating the device drivers out of the IOS monolith, discarding the original kernel, and running the blob (IOSd) and everything else as processes on a linux kernel. This would move IOS closer to the linux world which has many more developers familiar with its toolchains and APIs. A new product line was in the works, code named Mid-range Convergence Platform (MCP), that would launch with this new linux-based IOS. The new IOS branch was referred to as MCPdev and given 3.x.y numbering that required a decoder ring to find the equivalent
IOS number (12.x.y, 15.x.y, etc)
for its routing blob. Commercially, MCP launched as the ASR1000 and MCPdev was IOS-XE. Cisco eventually moved away from public use the
MCPdev 3.x.y
numbering because it was so confusing, but you can still find artifacts of it buried in many places.
Short version: IOS-XE is IOS with the old proprietary kernel and devices drivers stripped out and replaced by linux components. The platform-independent routing blobs are the same in both.
08-12-2023 12:33 PM
@Ramblin Tech Thank you for the reply. Actually I'm also person who drone on endlessly about things that don't matter. So, what in that case it means, that router which I bring as example runs only IOS-XE, but it has two code names - old and new? Or it's really two operating systems - IOS and IOS-XE which runs on the same router? From your post I understood that it's only IOS-XE, which runs on the router, but it has two code names - old and new.
08-12-2023 01:19 PM
@Ramblin Tech being an insider, unsurprisingly, has information not widely known outside of Cisco. I found his last reply both informative and unsurprising. Unfortunately, unless you have some grounding in OS architectures, it's difficult to clarify what XE is.
IOS is an OS. Linux is an OS. When you combine them, is the result one OS or two? Well, the answer to that is, "it depends".
If you can take an existing OS binary and run it directly "under" another OS, most would say you have two OSs.
If you basically rebuild one OS to be an integral part of the resultant combination (like XR?), you've a single OS.
But there's a huge spread between those two cases.
I suspect the goal of XE, was to use as much of IOS, without change, but provide a evolution path allowing classic IOS to become more like XR.
08-12-2023 02:01 PM
"I suspect the goal of XE, was to use as much of IOS, without change, but provide a evolution path..."
Yep, there are too many millions of lines of IOS code already written to just throw away and rewrite everything, as ION / Modular IOS would have required. Ironically, Cisco did in fact throw away IOS and rewrite NOS's from scratch, twice: XR and NXOS. These efforts were rationalized by saying they were targeted at specific use-cases / customers: SPs and DCs.
An issue realized by dev management back then was that it took entirely too long for a developer new to IOS to become productive due to its proprietary nature and the belief was that if IOS was more linux-like and used more well-known APIs and system calls, IOS devs could come up to speed faster. Hence the replacement of proprietary IOS kernel with linux in XE (well, one of the reasons).
XR has been on its own path toward linux as well, as it originally started out with the commercial QNX Neutrino microkernel and the concept of a distributed OS (instances of XR running on every module in the chassis, with only the RPs running routing code) on the CRS. The distributed OS concept was never ported over to the ASR9K and every instance of Neutrino required a royalty payment to QNX that nobody at Cisco liked, and it was still a proprietary kernel. Meanwhile linux became more attractive as a hardened real-time OS, so Neutrino was ditched with the development of 64-bit eXR in favor of a Yocto-based linux distro. XR blob ran as a VM or container (depending on the platform) on top of the linux kernel. The newest XR products are getting the XR7 treatment ("XR7" is a marketing brand) in which the XR VM/LXC is done away with and XR code runs directly as linux processes, with more platform management functions being performed with linux toolchains. XR7 is to XR as XE is to IOS: its the same PI code, just packaged up differently. In this regard, I believe XR is more "linux-ized" than XE (but XE devs might disagree; I was just an SE outside of the engineering dev org).
08-12-2023 02:09 PM
Think of an XE router as an appliance dedicated to routing. It has an OS (linux) and a set of apps to perform the routing (IOS), all of which now go only by the version number of its IOS components.
08-12-2023
02:45 PM
- last edited on
10-30-2023
02:37 AM
by
Translator
@Ramblin Tech so, does it mean that from output below, that
Linux version is 15.5(3)S4b
and IOS version which runs on top of it is
03.16.04b.S
? Or maybe vice versa? It's a bit confusing, could you please clarify what is the Linux version and what's IOS version here. Thank you.
Router# show version
Cisco IOS XE Software, Version 03.16.04b.S - Extended Support Release
Cisco IOS Software, ISR Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 15.5(3)S4b, RELEASE SOFTWARE (fc1)
08-12-2023
03:35 PM
- last edited on
10-30-2023
03:40 AM
by
Translator
@NetworkingGeek1 This is precisely why Cisco has now downplayed the
mcpdev numbering (3.x.y)
: it is too confusing! Historically, when the mcpdev train was created, it had its own numbering that mapped directly to a traditionally numbered IOS release that it used for its IOS component. It was very difficult talking to customers of the ASR1K/ASR903/ASR920/etc in terms of their mcpdev numbering when the customers were used to IOS numbering, so I created a spreadsheet decoder ring that showed the mapping between mcpdev and IOS to help (I no longer have that spreadsheet and, as a retiree, no longer have access to the Cisco internal sites that have the mapping).
Do not think of mcpdev numbering as the linux numbering, as the mcpdev train was actually used to create branches for platforms that ran monolithic IOS (ASR901, Cisco 7600; yes, very confusing). Think of the mcpdev numbering as a mistake that has since been corrected. It originally indicated IOSd on linux (XE), but that later changed (901/7600), and now that most all new IOS platforms have linux kernels, no need to differentiate with ones that don't. Every new IOS release should only be using the traditional IOS numbering (I sure hope that is the case, as I worked almost exclusively with XR products the last 7+ years).
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide