Cisco IOS® is the world's leading network infrastructure software, integrating innovation and business-critical services for enterprise networks. This document describes Cisco IOS naming convention and defines various components that constitute an IOS version.
Question: Which of the following IOS versions is the most recent?
Answer: All of these IOS versions could be latest available for their respective platforms on Cisco.com. The point is that, between different Cisco platforms, you cannot determine chronology simply based on version number. Within a platform you still can't reliably use IOS version to determine what is most recent. You can rely upon a higher rebuild number of the same train and throttle being newer than a matching IOS with a lower rebuild number.
In real world, it would be understandable to think that a Catalyst 6500 switch running IOS version 12.2(33)SXI8 is running "older version" compared to a 2911 router running IOS version15.1(4)M4. Because different platforms ultimately run different IOS versions, business units for each platform control their IOS release process. However, there are some efforts to try to get things more consistent across business units. For example IOS version 12.2(33)SRE for 7600 routers migrated to being version 15.0(1)S. More IOS versions are likely to collapse to a uniform numbering system in the future.
Deciphering numbers and letters of an IOS version
Note: This section will use the terms "train", "throttle", and "rebuild". For now please pay attention to the numbering. Details about these terms will follow in the next section.
Consider the following IOS version:
The first set of numbers (in red) before the parenthesis is the first part of the throttle. In this case "12.4".
Immediately following the throttle number is the train identifier (in red). This gives us some information as to the feature set or "build strategy". In this case "T" is the second part of this IOS version's Train for a combined train ID of 12.4T.
The second set of numbers within the parenthesis (in green) indicates the throttle number. The last number after the throttle identifier (in blue) is the rebuild number. This tells us how many times a throttle has been rebuilt. Effectively it tells us how many rounds of bug fixes that an IOS version has seen. In this example the rebuild number is "7".
Question: What is the train, throttle, and rebuild number of IOS version 15.0(1)M8 ?
There are three sets of numbers that give us information about any version of IOS. These numbers represent the hierarchy that governs how IOS versions are created.
The IOS Train is something like major version number if you think about conventional software nomenclature. This is where the foundation of an IOS feature set is established. More features can be added later when a new throttle is created.
Using Cisco ISR G1/G2 as an example, here are some of the recent trains:
15.1T (The M and T are important but will be elaborated upon later)
To some degree you can identify the platform that an IOS is made for by looking at the train. Some common examples are:
IOS Throttle is roughly a minor version number where some new features and bug fixes may have been added. For Cisco IOS the general rule of thumb is that new features are not added "mid-throttle". In other words, when new feature need to be added, they would be added when a new throttle is started.
Again using Cisco ISR G1/G2 as an example, build for the above train numbers are:
IOS Rebuilds typically consist of bug fixes. Adding new features to a rebuild is generally avoided but it does happen sometimes. With rebuilds it can be confidently stated that one version of IOS is more recent than another. For example, 12.4(24)T7 is newer than 12.4(24)T5.
Again using ISR G1/G2 IOS versions as an example:
From these values it can be told that 15.0(1)M8 has been "rebuilt" 8 times. That means that there have been 8 rounds of bug fixes for this version of IOS. Older ISR mainline versions use lowercase numbers in alphabetical order to indicate the same convention. In our example the IOS versions would have been:
12.2(10) -> 12.2(10a) -> 12.2(10b)
One thing to note is that when an IOS version is established it effectively has a rebuild number of 0, which is then suppressed. This may help some understand that each rebuild is just an improvement upon the previous version.
15.0(1)M0 -> 15.0(1)M1 - 15.0(1)M1 etc
You may see sometimes that a software bug has an integrated fix in one of such interim images, For example, 15.0(1)M0.2.
IOS Best Practices
Please note that the best practice recommendations below are generic and may not apply to all the networks. Before implementing any of the recommendations below, please evaluate them in context of your network requirements.
As a general rule an IOS version with more rebuilds would be expected to be more stable than a previous version with less rebuilds. When moving from one IOS version to another, closer the destination IOS is to the current IOS, less you need to worry about important things changing, like memory requirements, commands being deprecated, hardware not supported in previous versions, etc.
Upgrading to the latest revision, 15.0(1)M4 -> 15.0(1)M8 for instance is a relatively tiny jump. On the other hand, downgrading from 12.2(33)SXJ3 to 12.2(18)SXF17b would need to be reviewed and evaluated prior to downgrade.
When upgrading IOS make sure that the hardware has enough installed memory to support the new IOS. When downgrading an IOS glance over the configuration to see if any new features are in use that may not be supported on the downgrade target IOS.
For ISR G1 routers, jump to IOS version 15.x is a big one as memory requirements go from 256MB on earlier train of IOS to 512MB.
If possible run mainline (15.0(1)Mx, 15.1(4)Mx, etc) IOS version as it gets more rebuilds and is more widely deployed.
If possible, avoid running T Train (Technology Train, 15.1(2)Tx, etc.) New features are introduced in T Train and generally there is a potential for more issues because of this. Please note that new equipment may require T Train IOS image, as usually there will not be a supported mainline version of IOS at the time the new hardware is released.
Catalyst 6500 switches
Avoid modular IOS (ION) whenever possible, modular IOS has been discontinued for the latest Catalyst 6500 throttle (SXJ).
You can recognize a modular IOS because it has a "v" in the filename instead of "m". For example: