7

Is there any reason why Cisco show run does not show the full version which is 16.3.7 in this example?

IOSSW#show running-config | include ersion
version 16.3

while show version does?

IOSSW#show version
...
Switch Ports Model              SW Version        SW Image              Mode
------ ----- -----              ----------        ----------            ----
*    1 56    WS-C3850-48T       16.3.7            CAT3K_CAA-UNIVERSALK9 BUNDLE
...
IOSSW#
13

Is there any reason why Cisco show run does not show the full version which is 16.3.7 in this example?

For the simple reason that the only the major and minor versions are necessary for a complete understanding of the configuration. While there may be feature changes and/or enhancements between 16.2 and 16.3, changes in the build/revision should not impact the configuration in any way.

Stated another way, the difference from 16.3.6 to 16.3.7 may include fixes to caveats (bugs, flaws, and vulnerabilities), but this should not in any way impact what the configuration actually means to the device.

So when you do a show running-config it is helpful to know the major and minor versions to understand the configuration. However if you need the full version, you should use the show version command.

6

To put it in other words...

The running-config has a version listed because that's the version of IOS that was used to create/write that config most recently. Every statement in that config should work with any 16.3.anything version of IOS.

Your show version is showing the exact version running on that hardware. Since 16.3.7 matches, you can be confident all the config statements are loading and working as you expect.


Now hypothetically if you ended up running version 17.0.0 or 16.4.0, there is a non-zero chance that some configuration directives have changed, either completely or perhaps have subtle differences in parameters.

The first wr mem will update the version in the saved config, but it may drop some items that weren't recognised by the new version.

Most of the time this Just Works, but there's always a gotcha fishhook, which is why we all have test labs that replicate production hardware and versions... (cough)

6

I would have said the numbers represent different things:

  • show version says "I am running this version", and of necessity has much detail
  • version output in show conf says "This configuration will run on this version"

If you copy the config somewhere, it still says "This configuration runs on this version"

For analogy:

  • "How old are you?" -- "I am 23 and 3 months and 2 days"
  • "What are the voting laws in the UK?" | include age -- "You must be 18 to vote in the UK"
  • 1
    That is an excellent example and describes the difference nicely. I'm stealing that btw. – Criggie Apr 24 at 22:16
  • I like the analogy ... Btw, the community here is very good and supportive. Can't decide which answers are the best, as all of them are. – user11392987 Apr 25 at 2:02
3

You are comparing apples and oranges. The show running-config command gives you a simplified version number that the beginning, but it is designed to show you the configuration, not the full version:

Current configuration : 15095 bytes
!
version 15.5

The show version command gives you more information about the versions in the device, but nothing about the configuration.

The two commands are simply aimed at different information. If you have a problem with that, you must take it up with Cisco. There is nothing we can do about it here.

3

Cisco IOS stores its configuration in a text file (except security information since version 12 (IIRC)). On booting (or after a config memory command), the configuration file is read and interpreted.

A version string is written in the configuration file so the boot loader can decide whether it is likely to understand the file or not. As far as I can remember, a warning is written to the console in the case of a version mismatch, but the router or switch continues to boot. It is neither necessary nor useful to have the complete version string in the file (and a configuration will load without any version string).

As one can copy config files from external storage directly to flash memory, or even boot an IOS device from a configuration stored remotely, it's useful to those who manage config files to have the version string at the start of the file.

show running-config displays in text the currently-running configuration, so it will generate the version string from the currently-running IOS as it would be written if one saved the configuration.

show version reports the version string embedded in the running IOS image, which is quite another thing. In this case, one is usually interested in the full details.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.