Why This Matters
You sit down at a Cisco device. You type show platform and get an output you don't recognize. Or you try to configure something that definitely worked on the last router and the command doesn't exist. This happens constantly โ and it happens because Cisco has been running three different operating systems for years, with different architectures, different commands, and different troubleshooting tools.
This is my attempt to actually explain the differences rather than just listing which devices run which OS.
Classic IOS: The Original
Cisco IOS has been around since the late 1980s. It's a monolithic operating system โ meaning the entire OS runs as a single process. There's no separation between the kernel and the network software. This made it extremely fast and efficient on the hardware of the time, but it also means that if any part of the OS crashes, the whole router reboots.
Classic IOS runs on older Cisco platforms: the 2900/3900 ISR series (older), Catalyst 3750/3850 switches (older), the 7200 series, and others. If you're touching legacy infrastructure, you're likely dealing with classic IOS.
The CLI is what most people learn on. Clean, logical, hierarchical. It's the basis for every Cisco certification exam up to a certain point.
! Classic IOS โ you'll recognize this
Router# show version
Cisco IOS Software, Version 15.4(3)M2...
Router# show ip route
Router# show interfaces GigabitEthernet0/0
IOS-XE: IOS on Linux
IOS-XE is what Cisco built when they realized the monolithic architecture wasn't going to scale. The idea: put a Linux kernel underneath and run IOS as a daemon on top of it. This gives you process isolation, memory protection, and the ability to update components without a full reboot.
IOS-XE runs on the modern enterprise lineup: Catalyst 9000 series switches, ISR 4000 series routers, ASR 1000 series routers, and CSR 1000v (the virtual router). If you're working in a modern enterprise environment, this is almost certainly what you're looking at.
The CLI is nearly identical to classic IOS โ that was the whole point. But under the hood, things are very different. You can SSH into the Linux shell, run top, check memory usage properly, and use advanced troubleshooting tools like Embedded Event Manager (EEM) scripts more effectively.
! IOS-XE โ CLI looks the same, more underneath
Router# show version
Cisco IOS XE Software, Version 17.6.1...
Router# request platform software trace rotate all
Router# show platform software fed switch active punt rates
IOS-XR: Built for Service Providers
IOS-XR is a completely different codebase. Not a rewrite of IOS, not IOS on Linux โ a ground-up redesign for carrier-grade infrastructure. It runs on the ASR 9000, NCS 5500, CRS, and similar platforms. If you're working at a service provider or a very large enterprise with carrier-grade gear, this is what you'll find.
The key differences from an operational standpoint:
- Commit model: Configuration changes are staged and then committed. Nothing takes effect until you type
commit. This is both safer and more complex โ you can roll back commits if something breaks. - Distributed architecture: Route processor, line cards, and fabric all run their own OS instances. The system can survive a route processor failure.
- Different CLI structure: The commands look similar but the hierarchy is different. Getting things like
show bgp neighborsright in XR takes some adjustment. - No
enable: You're either in user EXEC or you have root-system privileges. The classicenableprompt doesn't exist.
! IOS-XR โ different enough to trip you up
RP/0/RSP0/CPU0:Router# show version
Cisco IOS XR Software, Version 7.3.1
RP/0/RSP0/CPU0:Router# configure
RP/0/RSP0/CPU0:Router(config)# interface GigE 0/0/0/0
RP/0/RSP0/CPU0:Router(config-if)# ipv4 address 10.0.0.1/30
RP/0/RSP0/CPU0:Router(config-if)# no shutdown
RP/0/RSP0/CPU0:Router(config-if)# commit โ nothing happens without this
The Quick Reference
When you're troubleshooting in the field and need to figure out what you're dealing with quickly:
show version ! Works on all three โ look for "IOS Software", "IOS XE Software", or "IOS XR Software"
Then:
- Classic IOS: Monolithic, older hardware, no commit model, no Linux underneath
- IOS-XE: Linux kernel, modern enterprise gear, familiar CLI, process isolation, still has
enable - IOS-XR: Carrier-grade, commit model, distributed architecture, different CLI hierarchy, service provider platforms
NX-OS: The Fourth One Nobody Mentions
While we're here โ Cisco also has NX-OS, which runs on Nexus data center switches. It's yet another separate codebase, also Linux-based, with its own CLI conventions. The show commands look similar to IOS but the structure is different, VDCs (Virtual Device Contexts) exist, and the configuration model has some quirks.
If you're in a data center environment, you'll hit NX-OS. The good news is that the Cisco certification tracks (particularly CCNP Data Center) cover it explicitly, and once you understand the pattern โ that Cisco has platform-specific operating systems tailored to the use case โ navigating between them becomes much easier.
The lesson isn't to memorize every command on every platform. It's to always verify which OS you're working on before assuming anything.