Cisco IOS and Catalyst

Cisco IOS and Catalyst, from first boot to rollback

I have built networks on Cisco IOS (Internetwork Operating System) throughout my career, from telecoms networks to Catalyst 9000 campuses, ISR (Integrated Services Router) branches and SD-WAN (software defined wide area network) edges. This page shows how the software is built, how devices boot and upgrade, how stacks survive failures and how packets are forwarded. It also covers how I harden, automate and troubleshoot them.

  • IOS and IOS XE
  • Catalyst 9000
  • ISR and Catalyst 8000
  • Install mode upgrades
  • StackWise stacks
  • Packet forwarding
  • Model driven telemetry
  • Hardening
A Catalyst stack and a branch router carrying user traffic A laptop, a phone and an access point connect to a three switch Catalyst stack. Traffic runs round the stack ring, then up an uplink to a router running IOS XE and on to the WAN. Switch 1 is active and switch 2 is standby. Laptop802.1X PhonePoE Access pointUPOE+ Switch 1active Switch 2standby Switch 3member RouterIOS XE WANSD-WAN Catalyst 9300 stack uplink
Live view · a branch on Catalyst and IOS XE
The IOS family

One command line, several operating systems underneath

Cisco IOS (Internetwork Operating System) has run Cisco routers and switches for decades. Today the name covers several systems. Classic IOS is still on older kit. IOS XE runs current Catalyst switches and routers, with IOS itself as one process, IOSd (the IOS daemon), on a Linux kernel and an ASIC (application specific integrated circuit) doing the forwarding. CatOS once ran the big Catalyst chassis. Knowing which one a device runs tells me how it boots, how it upgrades and how it fails.

Classic IOS, IOS XE and CatOS compared Three states compare how Cisco built its operating systems. Classic IOS is one image where routing, the CLI, drivers and the scheduler share memory above the hardware. IOS XE runs IOSd, FED, platform managers and apps as separate processes on a Linux kernel, with FED programming the ASIC. CatOS hybrid mode on a Catalyst 6500 runs CatOS on the switch processor and IOS on the MSFC, linked inside the supervisor; native mode replaced it with one IOS image. One image, one shared memoryRoutingprotocolsCommandsparser, configDriversinterfacesSchedulerone at a timeShared memory, no wall between tasksRouter or switch hardwarethe processor forwards most packetsone bad task can reload it all Separate processes, each with its own memoryIOSdrouting, configFEDprograms ASICPlatformpower, fansAppsguest shellOperational database and programming interfacesLinux kernelASIC: the forwarding chiproute into the ASIC Catalyst 6500 supervisor in hybrid modeCatOS on the switch processorports, spanning treeIOS on the routing cardroutinginsideConsole> (enable) set vlan 10 3/1Router(config)# interface Vlan10Native mode: one Cisco IOS image runs the switch and the router Classic IOS: everything in one program IOS XE: the same CLI on a Linux kernel CatOS: two images, two command lines The commands look alike. How the software is built decides how it boots, upgrades and fails.

Swipe sideways to see the whole diagram.

Classic IOS is one image that runs as a single program. Routing, the CLI (command line interface), drivers and every other task share one memory space, and a scheduler lets each task run until it hands back control. It is small and fast, but one faulty task can corrupt memory and reload the whole device. The 2811 routers and 3750 switches in my lab run it.

IOS XE runs on a Linux kernel. IOSd, the IOS daemon, still holds routing and the CLI, so the commands look the same, but it is one process among many. FED (the forwarding engine driver) writes routes into the ASIC (application specific integrated circuit), platform managers look after power and fans, and a database feeds the programming interfaces. A fault in one process need not take the device down.

CatOS ran the switching side of older Catalyst chassis such as the 4000, 5000 and 6500. In hybrid mode the supervisor ran CatOS for ports and spanning tree, while its routing card, the MSFC (multilayer switch feature card), ran IOS. That meant two command lines, two configs and session 15 to jump between them. Native mode put one IOS image on both, and CatOS is long retired.

Animation

Cisco operating systems today

Operating systemHow it is builtWhere it runsWhat it is like to use
IOS (classic)One image, one shared memory spaceISR G1 and G2 routers such as the 2811 and 2911; Catalyst 2960, 3560 and 3750 switchesThe original show and configure terminal CLI. Changes apply the moment I press Enter.
IOS XEIOSd and other processes on a Linux kernelCatalyst 9000 and C9000 switches, Catalyst 8000 and ISR 1000 and 4000 routers, ASR (Aggregation Services Router) 1000, Catalyst 9800 wireless controllersThe same CLI as IOS, plus install mode packages, programmable interfaces and a guest shell.
IOS XRDistributed processes on LinuxService provider routers: ASR 9000, NCS (Network Convergence System) and Cisco 8000A candidate config and commit, closer to Junos than to IOS.
NX-OSModular processes on LinuxNexus data centre switchesAn IOS style CLI with feature commands, checkpoints and vPC. It has its own page.
CatOSIts own image, separate from IOSCatalyst 4000, 5000 and 6500 supervisors (retired)set, clear and show commands, with no configure mode.

Read the version first

show version tells me the operating system, the release, the uptime and why it last reloaded. Half of all upgrade and support decisions start from that one screen.

Same commands, different behaviour

A command that works on a 3750 may work differently, or not at all, on a Catalyst 9300. Hardware programming, defaults and licensing changed with IOS XE, so I test configs on the target release.

Process faults show up differently

On IOS XE, show processes cpu platform sorted shows Linux processes as well as IOSd. A busy FED process points at the ASIC, a busy IOSd at routing or the CLI.

Platforms

Catalyst switches and routers, matched to the job

Current Cisco campus and branch kit almost all runs IOS XE, but the hardware underneath differs. Catalyst 9000 switches forward in UADP (Unified Access Data Plane) ASICs or Cisco Silicon One. Branch routers forward in software on multicore processors, and WAN (wide area network) aggregation routers use the QFP (Quantum Flow Processor). The hardware sets the limits: table sizes, upgrade options and throughput with services turned on.

Where each Catalyst and router platform sits A campus of Catalyst 9300 and 9200 access switches, a Catalyst 9500 distribution pair and a Catalyst 9600 core connects to a Catalyst 8500 or ASR 1000 WAN aggregation router. Across a carrier or the internet, a branch has a Catalyst 8300 or ISR 1000 router and a Catalyst 9200 switch. Traffic flows between the branch, the access layer and the core. Campus WAN and branch Catalyst 9600campus core Catalyst 9500 pairStackWise Virtual Catalyst 9300 stackaccess, PoE Catalyst 9200smaller closets Catalyst 8500 or ASR 1000WAN aggregation Carrier or internetMPLS, SD-WAN Catalyst 8300or ISR 1000 Catalyst 9200branch access Every box here runs IOS XE, so one set of standards covers the campus, the WAN edge and the branch.

Swipe sideways to see the whole diagram.

Animation

Live view: branch traffic crosses the WAN edge to the core, while campus users reach the core and the WAN.

Platforms and what forwards the packets

RolePlatformForwarding hardwareWhat I note
Small closets and branchesCatalyst 9200 and 9200LUADPRuns the lighter cat9k_lite image. Stacks of up to 8 with StackWise-160, or StackWise-80 on the 9200L.
Main access closetsCatalyst 9300 and 9300XUADPStacks of up to 8 with StackWise-480, or StackWise-1T on the 9300X. Models with UPOE+ (Cisco Universal Power over Ethernet Plus) give 90 W per port.
Large access, one chassisCatalyst 9400UADPDual supervisors, so it can upgrade with ISSU (in service software upgrade).
Distribution and coreCatalyst 9500 and 9500XUADP, Silicon One on the 9500XFixed switches, usually paired with StackWise Virtual or routed links.
Large campus coreCatalyst 9600 and 9600XUADP, Silicon One on the 9600XModular, with redundant supervisors and StackWise Virtual.
Next generation switchingC9350, C9550 and C9610 smart switchesSilicon OneIOS XE again. Cisco positions them as the next step from the 9300, 9500 and 9600.
Small branchISR 1000Multicore processorFixed router with built in switch ports.
BranchCatalyst 8200 and 8300Multicore processor, cores set aside for forwardingReplaced the ISR 4000. Runs in autonomous mode or as a Catalyst SD-WAN edge.
WAN aggregation and internet edgeCatalyst 8500 and ASR 1000QFPHeadends, carrier hand offs and high throughput crypto.
Cloud and virtualCatalyst 8000Vx86 server processorRuns on hypervisors and in public clouds. Replaced the older CSR (Cloud Services Router) 1000v.

End of life milestones I plan around

Product lineEnd of saleLast date of supportCisco's suggested move
Cisco 2800, including the 2811 in my lab1 November 201131 October 2016ISR G2, then ISR 4000, now Catalyst 8000
Catalyst 385030 October 202031 October 2025Catalyst 9300
Catalyst 2960-X31 October 202231 October 2027Catalyst 9200L
ISR 4000, main models7 November 202330 November 2028Catalyst 8200 and 8300

Dates from Cisco end of life notices. A notice also sets end of software maintenance and end of security fixes, which arrive years before the last date of support.

Licensing

Base licence

Catalyst 9000 switches carry a perpetual Network Essentials or Network Advantage licence. Advantage adds the larger routing and fabric feature set on models that support it.

Subscription

A term subscription, sold as DNA (Digital Network Architecture) Essentials or DNA Advantage, sits alongside and covers Catalyst Center features. Cisco has repackaged these tiers more than once, so I check the current names and terms before I order.

Smart Licensing Using Policy

Since IOS XE 17.3 a device runs first and reports later. Usage goes to CSSM (Cisco Smart Software Manager) directly, through CSLU (Cisco Smart License Utility), through Catalyst Center or offline for closed sites. show license summary shows what is in use.

Choices I make

Stack, chassis or pair

I use 9300 stacks for closets of up to eight switches, a 9400 chassis where one closet needs dual supervisors, and 9500 or 9600 pairs at distribution and core. Stacks are cheaper; a chassis upgrades with less disruption.

Install mode, extended releases

Every Catalyst 9000 runs in install mode on an extended support release, one standard release per platform family, with the next one under test in the lab.

Autonomous or SD-WAN

Catalyst 8000 and ISR 1000 routers run either as classic IOS XE routers or as Catalyst SD-WAN edges, switched with controller-mode enable. I choose per estate, never per site. The fabric side is on the SD-WAN page.

Buy for the life of the box

Campus kit typically stays in service for seven years or more, so I size uplinks, PoE (Power over Ethernet) budgets and table space for the end of that life, not for day one. Spanning tree and campus design rules are on the switching page.

Boot

From power on to a working config

When a device will not come back after a reload, the fault sits at whichever boot stage failed. Knowing the stages, and the settings that steer them, turns a dead box at 2am into a short ROMMON (read only memory monitor) session. Step through a boot on a classic router and on a current switch.

What happens when a Cisco router or switch boots Six stages of a boot in a row: power on self test, ROMMON, finding the image, loading it, starting processes and loading the config. A marker moves from stage to stage. Two lanes below show what each stage means on classic IOS, such as a 2811, and on IOS XE, such as a Catalyst 9300. Power onself test ROMMONboot loader Find imageboot variable Loadinto memory Startprocesses Configstartup config Classic IOS, such as a 2811 IOS XE, such as a Catalyst 9300 Power on self test checks memory and interfaces Self test, with secure boot checking each stage is signed Config register 0x2102: boot normally ROMMON variables: BOOT, MANUAL_BOOT and others boot system flash, else the first image in flash boot system flash:packages.conf (install mode) Decompress the image into RAM, then run it Boot the Linux kernel and mount the package files IOS starts its tasks and brings up interfaces IOSd, FED and platform managers start; a stack elects an active Load the startup config from NVRAM, or run setup Load the startup config, or try Plug and Play or ZTP Each stage hands over to the next. A fault stops the boot at the last stage that worked.

Swipe sideways to see the whole diagram.

Step 1
  1. The device tests its memory, processor and interfaces. Current hardware adds secure boot: each stage checks that the next is signed by Cisco before running it, so a tampered image will not load.

  2. ROMMON is the small boot loader. On routers the config register decides what happens next: 0x2102 boots normally and loads the startup config, and 0x2142 skips the startup config for password recovery. Catalyst 9000 switches use ROMMON variables instead.

  3. The boot variable names the image. In install mode it points at packages.conf, a list of the package files to load. In bundle mode it points at one .bin file. If the variable is empty or wrong, the device tries the first image it finds, or stops at ROMMON.

  4. Classic IOS decompresses its image into RAM (random access memory) and runs it. IOS XE boots a Linux kernel and mounts its packages. Install mode boots faster because nothing has to be unpacked at each boot.

  5. Processes start and the ASICs are programmed. In a stack, the members elect an active and a standby switch before ports come up, so a full stack takes longer to boot than a single switch.

  6. The startup config loads from NVRAM (non volatile RAM). A new device with no config can join Catalyst Center through Plug and Play, or fetch a Python script through ZTP (zero touch provisioning), using DHCP (Dynamic Host Configuration Protocol) to find it.

Boot and recovery settings I check

TaskCommandWhat it does
Normal router bootconfig-register 0x2102Boots the image named by boot system and loads the startup config.
Router password recoveryconfreg 0x2142 then reset in ROMMONBoots without the startup config. I copy it into the running config, set a new secret and put the register back to 0x2102.
Catalyst 9000 password recoverySWITCH_IGNORE_STARTUP_CFG=1 then boot in ROMMONThe same idea on switches. I reset the variable to 0 afterwards.
Stop recoveryno service password-recoveryAnyone with the console can then recover only by erasing the config. I use it where the console is not physically secure.
Check how it bootedshow version, show bootThe image, the config register or boot variables, the uptime and the reason for the last reload.
Check install modeshow install summaryThe packages and their states. A device in bundle mode shows a .bin file instead.

Recovery needs console access, which is why I treat console ports, terminal servers and out of band networks as privileged access. My lab has a terminal server for exactly this, a 2811 with a console cable to every device.

Upgrades

Upgrades that can undo themselves

Install mode is Cisco's recommended way to run IOS XE. It splits the image into packages, upgrades in clear stages and keeps a way back. Upgrade outages usually come from skipped checks rather than bad software, so I follow the same stages every time, and pick releases from Cisco's extended support trains.

An install mode upgrade on a Catalyst 9300, with its safety net A switch bootflash holds packages.conf and the 17.15.6 packages. A new 17.18.4 image is copied in from a file server, expanded by install add, and activated, which reloads the switch and starts a 120 minute auto abort timer. The new packages move from inactive to activated uncommitted, then to committed with install commit. The alternative ending shows an abort or timeout reloading the switch into 17.15.6. bootflash on the switch packages.conf points at 17.15.6 packages.conf points at 17.18.4 17.15.6 packages 17.18.4 .bin file, copied in install add expands it 17.18.4 packages C I I U C Catalyst 9300 runs 17.15.6 reloading runs 17.18.4 back on 17.15.6 Auto abort timer120 minutes install commitkeep 17.18.4 abort or timeoutreload into 17.15.6 File serversecure copy Copy the new image into flash install add: expand and check, nothing changes yet install activate: reload, and start the timer Test while the new release is uncommitted install commit: the new release becomes the base Or roll back: abort, or let the timer expire C committed · U activated, uncommitted · I inactive

Swipe sideways to see the whole diagram.

Step 1
  1. I copy the new image into flash and check its hash with verify /md5 against the value Cisco publishes. Before copying, install remove inactive clears old packages, because one stack member short of space fails the whole upgrade.

  2. install add file flash:cat9k_iosxe.17.18.04.SPA.bin expands the image into package files and checks them. The new packages sit inactive, state I. Nothing running has changed yet.

  3. install activate rewrites packages.conf and reloads. An auto abort timer starts, 120 minutes by default. Every member of a stack upgrades at the same time.

  4. The switch runs 17.18.4 in state U: activated, not yet committed. While the timer runs, I check the version, the stack, routing neighbours, PoE devices and a sample of user traffic against my before readings.

  5. install commit makes 17.18.4 the committed release, state C, and stops the timer. Later, install remove inactive frees the space the old release used.

  6. If tests fail, install abort reloads into 17.15.6. If I lose access, the timer does the same on its own. After a commit, show install rollback lists rollback points and install rollback to id returns to one.

IOS XE releases and how long they last

ReleaseTypeStatus in October 2026
17.9Extended supportSecurity fixes ended in September 2026. Upgrade.
17.12Extended supportMaintenance releases ended in March 2026. Security fixes continue to September 2027.
17.15Extended supportRecommended by Cisco for Catalyst 9000. Maintenance to March 2027.
17.18Extended supportRecommended by Cisco for Catalyst 9000. Maintenance to February 2028.
17.10, 17.11, 17.13, 17.14, 17.16, 17.17Standard support12 months of fixes from first shipment, then move on.
26.1 onwardsExtended support, every releaseNumbered by year. Two releases a year, each with 48 months of support.

Lifetimes from Cisco's IOS XE lifecycle statement and its recommended releases page for Catalyst 9000, checked in October 2026. Per release dates as tracked by endoflife.date from Cisco's notices. I confirm them against Cisco's own notice before I plan an upgrade.

Image and version decoder

Type an image file name or a release number, or pick an example. It tells me the platform, the release, its support type and what to check before I use it.

Platform
Catalyst 9300, 9400, 9500 and 9600
Software
IOS XE 17.15.6: release 17.15, rebuild 6
Support
Extended support. Cisco recommended it for Catalyst 9000 in September 2026, with 17.18. Maintenance to March 2027, security fixes to September 2028.
File
A bundle signed by Cisco (SPA). On Catalyst 9000 I install it with install add file, then activate and commit.
Before I use it
Read the release notes and open caveats, run the release through the Cisco Software Checker for security advisories, check ROMMON and firmware notes, and check flash space on every member.

17.15.6: an extended support release that Cisco recommends for Catalyst 9000. A sound standard for an estate.

Upgrade options by platform

PlatformHow it upgradesWhat users notice
Catalyst 9200Install mode only, with a full reloadAn outage while the switch or stack reloads, so I upgrade in a change window.
Catalyst 9300 stackInstall mode, with xFSU (extended fast software upgrade) where the model and release support itA shorter outage than a full reload. There is no ISSU on a 9300.
Catalyst 9400 with two supervisorsISSUSupervisors upgrade one at a time. Line cards keep forwarding.
Catalyst 9500 or 9600 with StackWise VirtualISSUOne switch at a time. Devices dual homed to both keep forwarding.
RoutersInstall mode, reload in a change windowSites with two routers fail over to the second, so I upgrade one router per window.
A single fixSMU (software maintenance upgrade): install add file ... activate commitA hot SMU applies without a reload. A cold SMU needs one.

How I run an upgrade

  1. Choose the release. Extended support, recommended for the platform, and clean in the Cisco Software Checker for the features I run.
  2. Read the release notes. Open caveats, ROMMON or firmware updates that add reboots, and features that were removed or changed defaults.
  3. Take before readings. Routing neighbours, route and address table counts, PoE devices, stack state, licences and a saved config, so I can compare after.
  4. Lab, pilot, then waves. One lab device, one quiet site, then waves through change control, each with a tested rollback.
  5. Upgrade with a safety net. Install mode with the auto abort timer, so a device I cannot reach rolls itself back.
  6. Compare, then commit. Only when the after readings match the before readings do I commit and clean up flash.
Command line

The command line, and changes I can take back

IOS applies each command the moment I press Enter, whether I type it in the EXEC (the IOS command interpreter) or in a configuration mode. That makes it quick to work with, and easy to break things with. I protect myself three ways: TACACS+ (Terminal Access Controller Access Control System Plus) so every command is authorised and logged, an archive of every saved config, and changes that roll back on a timer unless I confirm them.

The IOS command modes and how to move between them The IOS command modes in order: ROMMON, user EXEC reached from the console or SSH, privileged EXEC through enable, global configuration through configure terminal, then interface, routing and line modes. Each state highlights one mode, shows how to get there and lists example commands for it. enable configure terminal reload, send a break during boot Console or SSH ROMMONrommon 1 > User EXECSwitch> Privileged EXECSwitch# Global config(config)# Interface(config-if)# Routing(config-router)# Line(config-line)# confreg 0x2142 · boot flash:packages.conf · reset show version · ping 10.0.0.1 · enable show running-config · copy run start · reload hostname ACC1 · vlan 10 · interface Gi1/0/1 switchport access vlan 10 · router ospf 1 · line vty 0 15

Swipe sideways to see the whole diagram.

Logging in through the console or SSH (Secure Shell) lands me in user EXEC, shown by the > prompt. I can run basic show commands and ping, but I cannot change anything or read the config.

enable moves me to privileged EXEC, the # prompt, at privilege level 15. Everything that changes state starts here: show running-config, copy, reload, debug and clear.

configure terminal enters global configuration. Each change takes effect when I press Enter, in the running config only. Nothing survives a reload until I save it with copy running-config startup-config.

Interfaces, routing protocols and lines each have their own mode. exit goes up one level, and end or Ctrl+Z goes straight back to privileged EXEC. do runs an EXEC command, such as do show ip interface brief, from any config mode.

ROMMON sits below IOS. I reach it by sending a break on the console while the device boots, or it appears when no image will load. Its short command set covers password recovery and booting a chosen image.

Animation
Changing a live config with a way back The running config in RAM saves to the startup config in NVRAM and to an archive in flash. A change made under a revert timer rolls back on its own unless I confirm it. configure replace compares a full config file with the running config and applies only the differences, and can restore an archived version. Me, by SSH Running configin RAM, live Startup configNVRAM Archiveflash:archive a copy at every save Revert timer10 minutes confirmed Full config fileflash:new.cfg Differences onlylines added, removed archive: keep every saved version configure terminal revert timer 10 configure confirm, then save configure replace: apply the differences configure replace an archived version

Swipe sideways to see the whole diagram.

Step 1
  1. An archive block with a path and write-memory keeps a numbered copy each time I save. log config also records who typed which command, which helps after an incident.

  2. configure terminal revert timer 10 starts a change I might regret. If I lock myself out, the device rolls back to the archived config after 10 minutes on its own.

  3. configure confirm stops the timer and keeps the change. Then copy running-config startup-config saves it, which also adds a version to the archive.

  4. configure replace flash:new.cfg list compares a complete config file with the running config and applies only the differences, adding and removing lines. list shows each line it applied. This is how I apply a config built from a template.

  5. configure replace with an archived file returns to a known version. show archive config differences shows what changed between any two versions before I commit to one.

Access control and an audit trail

Device access through TACACS+ on Cisco ISE (Identity Services Engine), with a local account for when the servers cannot be reached. Names and addresses are examples.

aaa new-model
tacacs server ISE-1
 address ipv4 10.0.0.15
 key <shared secret>
aaa group server tacacs+ ISE
 server name ISE-1
 ip vrf forwarding Mgmt-vrf
 ip tacacs source-interface GigabitEthernet0/0
aaa authentication login default group ISE local
aaa authorization exec default group ISE local if-authenticated
aaa authorization commands 15 default group ISE local if-authenticated
aaa accounting commands 15 default start-stop group ISE
username breakglass privilege 15 algorithm-type scrypt secret <long random secret>
archive
 path flash:archive/cfg
 write-memory
 log config
  logging enable
  notify syslog
Privilege levelWhat it allowsHow I use it
0A handful of commands, such as enable and exitRarely used.
1User EXEC: basic show commands and pingThe default after login, before enable.
2 to 14Custom sets of commandsI avoid these. Per group command authorisation in TACACS+ is easier to audit.
15EverythingEngineers, through TACACS+, with every command logged.

Filters I use every day

I want to seeCommand
One part of the configshow running-config | section router ospf
One interfaceshow running-config interface GigabitEthernet1/0/1
Lines that matchshow running-config | include ^hostname|^ip route
Defaults as well as my settingsshow running-config all | section line vty
What changed since the last saveshow archive config differences
Who changed whatshow archive log config all

How sessions in Arista EOS (Extensible Operating System) and the Junos commit model compare with line by line changes in IOS is on the Arista and Juniper page.

Switching

Catalyst access switches that ride through failures

On Catalyst switches the work that matters most happens at the access layer: stacks that survive failures, power for phones and access points, and ports that know who is plugged in. Spanning tree, VLAN (virtual local area network) and EtherChannel basics are on the switching page, and network access control is on the security page.

How a Catalyst 9300 stack rides through failures Four Catalyst 9300 switches are joined in a stack ring, with an EtherChannel from switches 1 and 4 to distribution. Normally traffic runs both ways round the ring with switch 1 active and switch 2 standby. When a cable fails the ring wraps. When switch 3 fails only its ports go down. When switch 1 fails, switch 2 takes over and switch 4 carries the uplink traffic. Switch 1 active active active failed Switch 2 standby standby standby active now Switch 3 member member failed new standby Switch 4 member member member member Switch 3failed, ports down Switch 1failed Switch 2active now, took over DistributionEtherChannel one bundle, two members switch 4 carries it all stack ring A ring in both directions, one active switch A stack cable fails: the ring wraps, nothing drops A member fails: only its own ports go down The active fails: the standby takes over Stack cables join up to eight Catalyst 9300 switches into one logical switch.

Swipe sideways to see the whole diagram.

Stack cables join up to eight Catalyst 9300 switches into one logical switch, with one config and one management address. Traffic runs both ways round the ring, at up to 480 Gb/s with StackWise-480. The active switch runs the control plane, the standby keeps a synchronised copy, and every member forwards its own ports in hardware.

If one stack cable fails or is pulled, the ring becomes a line and traffic wraps back the other way. Stack bandwidth halves until it is fixed, but nothing drops. show switch stack-ports summary shows which port is down, and I treat it as urgent because a second failure splits the stack.

If a member fails, its own ports go down and nothing else does. The uplinks are one EtherChannel spread across switches 1 and 4, so the stack keeps its way out. Devices that matter, such as access points and door controllers, can be split across members.

If the active switch fails, the standby takes over the control plane with SSO (stateful switchover) and the stack elects a new standby. The other members keep forwarding through the change. Because the uplink bundle also lands on switch 4, the stack stays connected to distribution.

Animation

The active switch is chosen in this order: the current active, then the highest priority, then the lowest MAC (media access control) address. I set priority 15 and 14 on the two switches I want as active and standby, so a reload never hands control to a random member. The comparison with StackWise Virtual, VSS (Virtual Switching System) and vPC (virtual port channel) is on the switching page.

Power over Ethernet

StandardNameAt the switch portAt the deviceTypical devices
IEEE 802.3afPoE (Power over Ethernet)15.4 W12.95 WPhones, simple cameras
IEEE 802.3atPoE+30 W25.5 WOlder access points, video phones
Cisco UPOEUniversal PoE, Cisco's own60 WAbout 51 WThin clients, early four pair devices
IEEE 802.3bt Type 3Four pair PoE60 W51 WCurrent Wi-Fi access points
IEEE 802.3bt Type 4UPOE+ on Cisco90 W71.3 WLarge access points, displays, building systems

Power at the device is lower than at the port because of losses in up to 100 m of cable. The switch budget, set by its power supplies, caps the total across all ports.

I size the budget for every port in use at once, plus headroom, and set port priority so access points and phones keep power before a desk fan or a display does. Perpetual PoE on Catalyst 9000 keeps devices powered while the switch reloads, which turns a software upgrade into a short network outage rather than a reboot of every phone and access point.

Access security on Catalyst

Port authentication

Ports authenticate users with 802.1X, and printers or cameras with MAB (MAC authentication bypass), against ISE. Current IOS XE uses policy maps for this, often called IBNS (Identity Based Networking Services) 2.0; authentication display new-style converts older configs. show access-session interface Gi1/0/5 details shows the result.

MACsec

IEEE 802.1AE encrypts each frame on the wire. I use it on uplinks that leave a secure room, keyed with MKA (MACsec Key Agreement) and a pre shared key between switches, or through 802.1X to hosts. show macsec summary and show mka sessions confirm it.

Device tracking

IOS XE learns which IP (Internet Protocol) address sits behind which port with its device tracking feature. 802.1X, IP source guard and SD-Access all rely on it, so I check show device-tracking database when a client looks invisible.

Commands I use on access switches

CheckCommand
Stack members, roles and versionsshow switch
Stack cables and ring stateshow switch stack-ports summary
Control plane redundancyshow redundancy
Power budget and each portshow power inline
One powered device in detailshow power inline GigabitEthernet1/0/12 detail
Who is on a port, and how they authenticatedshow access-session interface GigabitEthernet1/0/5 details
Routing

How IOS forwards, and how it fails over

A router's first job is to move packets quickly. Cisco has done that three ways over the years, and the third, CEF (Cisco Express Forwarding), is the one every current device uses. Around it sit the features I rely on at branches and edges: routes tracked by IP SLA (IP service level agreement) probes, NAT (network address translation), VRF (virtual routing and forwarding) tables, flow records and event scripts. ARP (Address Resolution Protocol) supplies the next hop's hardware address in each case.

Process, fast and CEF switching compared Packets enter on one interface and leave on another, by one of three paths. In process switching every packet goes through the processor. In fast switching the first packet goes through the processor and the rest use a route cache. In CEF a FIB and adjacency table are built in advance from the processor's tables, every packet uses them, and only exceptions are sent to the processor. Gi0/0/0packets in Gi0/0/1packets out Processorrouting table, ARP Route cachefast switching CEFforwarding tables every packet first packet only exceptions only built in advance Process switching: the processor handles every packet Fast switching: look up once, then use the cache CEF: tables built before the first packet arrives On Catalyst switches and the ASR 1000 these tables live in hardware, so transit traffic never reaches the processor.

Swipe sideways to see the whole diagram.

Process switching sends every packet to the processor, which looks up the routing table and ARP for each one. It is the slowest path. Today only packets the forwarding path cannot handle take it, but the name survives in the counters of show interfaces switching.

Fast switching sent the first packet to a destination through the processor, then cached the result so later packets skipped the lookup. Caches went stale when routes changed, and a flood of new destinations, such as a worm scanning addresses, filled the cache and the processor at once.

CEF builds two tables in advance from the routing table and ARP: the FIB (forwarding information base) and the adjacency table, which holds the rewritten Layer 2 header for each next hop. Every packet is looked up in them, the first one included. Only exceptions reach the processor: packets for the router itself, packets whose TTL (time to live) has run out, and next hops with no ARP entry yet.

Animation
IP SLA and object tracking move the default route A branch router has a primary and a backup line to the internet. IP SLA probes a target through the primary line, and a track object controls the default route. When the carrier fails upstream, the probes fail, the track goes down and a floating default route through the backup line takes over. When probes succeed again, traffic returns after a delay. Branch LANusers Branch routerIP SLA 10, track 1 Primary linedefault route Backup linefloating route Internetprobe target track 1 is up probes failing track 1 is down S* 0.0.0.0/0 [1/0] via 203.0.113.1 S* 0.0.0.0/0 [250/0] via 198.51.100.1 Probes every 10 seconds prove the path, not just the link The carrier fails upstream, but my link stays up The track goes down and the floating route takes over Probes succeed again, and a delay stops flapping

Swipe sideways to see the whole diagram.

Step 1
  1. IP SLA sends an ICMP (Internet Control Message Protocol) echo to a target beyond the carrier every 10 seconds. A track object follows the result, and the default route through the primary line is tied to that track. A second default route with administrative distance 250 waits in reserve.

  2. The carrier fails beyond my router, but the link to it stays up. A plain static route would stay in the table and send traffic into the failure. The probes start to fail instead.

  3. Once the probes fail, the track goes down after its delay down time and the tracked route leaves the routing table. The floating route through the backup line is installed and traffic moves. An EEM (Embedded Event Manager) applet logs the change.

  4. When probes succeed again, delay up 60 makes the track wait a minute before it comes up, so a line that flaps does not drag traffic back and forth. Then the primary route returns.

Tracked default route with a floating backup, and an EEM applet that logs the change. Addresses are documentation examples.

ip sla 10
 icmp-echo 203.0.113.10 source-interface GigabitEthernet0/0/0
 frequency 10
ip sla schedule 10 life forever start-time now
track 1 ip sla 10 reachability
 delay down 10 up 60
ip route 0.0.0.0 0.0.0.0 203.0.113.1 track 1
ip route 0.0.0.0 0.0.0.0 198.51.100.1 250
event manager applet WAN-FAILOVER
 event track 1 state down
 action 1.0 syslog msg "Primary internet path down, using backup"

Router features I use most

FeatureWhat I use it forHow I check it
NATInternet edges, and partner networks that overlap with mineshow ip nat translations, show ip nat statistics
VRF liteSeparate routing tables for guest, building systems or management, without MPLS (Multiprotocol Label Switching)show vrf, show ip route vrf GUEST
Zone based firewallStateful inspection between zones on a branch routershow policy-map type inspect zone-pair sessions
Flexible NetFlowWho and what is using a link, exported to a collectorshow flow monitor WAN-MON cache
IP SLA and trackingPath checks, failover and delay and jitter measurementshow ip sla statistics, show track
EEMRunning commands or raising alerts when a log message or event appearsshow event manager policy registered

Routing protocols themselves, from OSPF (Open Shortest Path First) to BGP (Border Gateway Protocol), are on the routing page. Tunnels, VPN (virtual private network) designs and DMVPN (Dynamic Multipoint VPN) are on the WAN and VPN page.

Control plane

Keep transit traffic in hardware, and the processor safe

A Catalyst switch forwards almost everything in its ASIC. The processor runs the control plane: routing protocols, spanning tree, logins and monitoring. Trouble starts when traffic that should stay in hardware is punted to the processor, or when a hardware table fills. CoPP (control plane policing) and TCAM (ternary content addressable memory) are where I look.

Control plane policing protects the processor Four sources send traffic into a switch ASIC: routing peers, management stations, users and a flood. User traffic is forwarded in hardware to servers and never reaches the processor. Routing and management traffic is punted up through CoPP to the processor within its rate. The flood is punted too, but CoPP drops it once it exceeds its class rate. Routing peershellos, updates Managementlogins, polling Userstransit traffic A floodattack or loop Processorcontrol plane CoPPpolice each class ASICforwards in hardware Serversfar side within its rate: allowed over its rate: dropped never punted Transit traffic stays in the ASIC. Traffic for the device itself is punted, and CoPP limits each kind.

Swipe sideways to see the whole diagram.

Animation

Live view: user traffic crosses the ASIC, while routing and management traffic is punted to the processor within its rate and the flood is dropped at CoPP.

What reaches the processor

Packets addressed to the device, and routing and spanning tree control traffic. Also ARP for addresses it does not know yet, packets whose TTL has run out, IP options, and anything matched by an ACL (access control list) line with log. A loop or a scan can send a lot of these very quickly.

Catalyst 9000 defaults

Catalyst 9000 switches apply a built in policy, system-cpp-policy, with a class and rate for each kind of punted traffic. I tune its rates from a baseline rather than replace it. show policy-map control-plane shows each class and its drops.

Routers

On ISR, Catalyst 8000 and ASR routers I build my own policy on the control-plane: routing, management from known addresses, monitoring, then everything else at a low rate. I start in a report only mode with generous rates and tighten them once I know the normal levels.

Tables in the ASIC

ResourceWhat it holdsHow I check it
FIB in TCAMIPv4 and IPv6 routes the ASIC can forwardshow platform hardware fed switch active fwd-asic resource tcam utilization
MAC tableLearned MAC addressesshow mac address-table count
ACL and QoS (quality of service) TCAMSecurity ACLs, QoS classifiers and policy based routingThe same TCAM command, by region
AdjacenciesNext hops with their rewrite informationshow adjacency summary, show ip arp summary
SDM (Switch Database Management) templateHow the ASIC splits its tables between those usesshow sdm prefer, then sdm prefer and a reload to change it
Punt causesWhy traffic was sent to the processorshow platform software fed switch active punt cause summary

When a table fills, new entries either fail or fall back to the processor. Both look like random faults, so I watch utilisation as I would disk space.

A router CoPP policy in outline. Rates are indicative starting points, set from a baseline in practice.

ip access-list extended COPP-ROUTING
 permit ospf any any
 permit tcp any any eq bgp
ip access-list extended COPP-MGMT
 permit tcp 10.0.0.0 0.0.0.255 any eq 22
 permit udp 10.0.0.0 0.0.0.255 any eq snmp
class-map match-all COPP-ROUTING
 match access-group name COPP-ROUTING
class-map match-all COPP-MGMT
 match access-group name COPP-MGMT
policy-map COPP
 class COPP-ROUTING
  police 512000 conform-action transmit exceed-action transmit
 class COPP-MGMT
  police 256000 conform-action transmit exceed-action drop
 class class-default
  police 128000 conform-action transmit exceed-action drop
control-plane
 service-policy input COPP
Programmability

The same switch, driven by code

IOS XE describes its config and state in YANG (Yet Another Next Generation) data models. It exposes them through NETCONF (Network Configuration Protocol), RESTCONF (its web based equivalent) and gNMI (gRPC Network Management Interface), which runs over gRPC, Google's remote procedure call framework. That lets tools change devices without screen scraping, and lets devices stream their state instead of waiting for SNMP (Simple Network Management Protocol) polls. Catalyst Center builds on the same interfaces.

Configuration in through models, telemetry out by stream A Catalyst 9300 in the centre exposes YANG models. An automation host sends NETCONF requests on port 830 and receives replies. The switch streams telemetry to a collector over gRPC. Catalyst Center manages it with Plug and Play and software images, and logs and traps still go to a syslog server and SNMP poller. AutomationAnsible, Python Telemetry collectortime series store Catalyst 9300YANG models Catalyst Centertemplates, images Syslog serverand SNMP poller NETCONF, port 830 gRPC dial out Plug and Play, images syslog, traps Config goes in through models. State streams out on a schedule, instead of being polled.

Swipe sideways to see the whole diagram.

Animation

Live view: NETCONF requests and replies, telemetry streaming on a schedule, Catalyst Center managing the switch, and logs going to a syslog server.

InterfaceCarried overWhat I use it for
NETCONFSSH, port 830Reading and changing config through YANG models from Ansible or Python, with a candidate datastore if I enable it.
RESTCONFHTTPS (Hypertext Transfer Protocol Secure)The same models over a REST (representational state transfer) API (application programming interface), for tools built around web requests.
gNMIgRPCConfig and telemetry for collectors built around the OpenConfig tools.
Model driven telemetrygRPC dial out, or dial in through NETCONF or gNMIInterface counters, CPU (processor) use and routing state every few seconds, instead of SNMP polls every five minutes.
Guest shellA Linux container on the devicePython on the box, ZTP scripts and small tools, kept apart from IOSd.
Catalyst CenterNETCONF, SSH and SNMPPlug and Play, software image management, templates and Assurance across the estate.
SNMP and syslogUDP (User Datagram Protocol)Still the common ground for monitoring tools. I run SNMPv3 with authentication and encryption only.

Turning on the programmable interfaces, and one telemetry subscription that streams five second CPU use every 60 seconds. Addresses are examples.

netconf-yang
restconf
ip http secure-server
ip http authentication local
iox
telemetry ietf subscription 101
 encoding encode-kvgpb
 filter xpath /process-cpu-ios-xe-oper:cpu-usage/cpu-utilization/five-seconds
 source-address 10.0.0.21
 stream yang-push
 update-policy periodic 6000
 receiver ip address 10.0.0.50 57500 protocol grpc-tcp

update-policy periodic counts in hundredths of a second, so 6000 means every 60 seconds. Pipelines, testing and source of truth design are on the network automation page.

Hardening

A management plane that is hard to abuse

Most attacks on network devices go after the management plane: weak passwords, Telnet on the VTY (virtual terminal) lines, open web servers and default SNMP communities. None of these are hard to fix, but they reappear whenever a device is built by hand. I keep a baseline, apply it from a template and audit against it.

Config hardening check

Paste part of an IOS or IOS XE config, or edit the sample, then run the check. It looks for the weaknesses that turn up most often in audits. It runs entirely in this page, and nothing is sent anywhere.

6 problems and 8 warnings, with 0 good controls found.

  • Enable password enable password stores the password weakly. Use enable algorithm-type scrypt secret.
  • Local account A username ... password line can be reversed. Use algorithm-type scrypt secret.
  • Telnet VTY lines accept Telnet, which sends passwords in clear text. Use transport input ssh.
  • No idle timeout exec-timeout 0 0 leaves sessions open for ever. Use exec-timeout 10 0.
  • Web server ip http server is on. Turn it off, and keep ip http secure-server only if RESTCONF or the web interface needs it.
  • SNMP community A well known community string such as public. Replace it with SNMPv3 using auth and priv.
  • Type 7 service password-encryption only hides passwords from a glance. Type 7 is reversible.
  • VTY access list No access-class on the VTY lines, so anyone who can reach the device can try to log in.
  • Other VTY lines Only line vty 0 4 is set. Check lines 5 to 15 have the same controls.
  • SSH version No ip ssh version 2. Set it, so no older release falls back to version 1.
  • Login protection No login block-for, so password guessing is not slowed down.
  • Central logins No aaa new-model: logins use local accounts only, with no central audit trail.
  • Remote logging No logging host, so logs are lost when the device reloads.
  • Time No ntp server, so log times cannot be trusted or lined up across devices.

The controls I apply to every device

ControlCommandsWhy
Strong secretsenable algorithm-type scrypt secret, username ... algorithm-type scrypt secretType 9 (scrypt) and type 8 (PBKDF2, Password Based Key Derivation Function 2) hashes resist cracking. Type 5 is an older MD5 (Message Digest 5) hash, and type 7 can be reversed.
SSH onlyip ssh version 2, transport input ssh, crypto key generate rsa modulus 3072Telnet sends every keystroke in clear text.
Management from known placesaccess-class MGMT-ONLY in vrf-also, a management VRFOnly management networks can reach the login prompt at all.
Slow down guessinglogin block-for 120 attempts 5 within 60, exec-timeout 10 0Blocks logins for two minutes after five failures, and closes idle sessions.
Turn off what I do not useno ip http server, no cdp enable on internet facing portsEvery service left on is something to attack, or something that leaks information.
Monitoring that cannot be readsnmp-server group NMS v3 privSNMPv3 with authentication and encryption, instead of community strings.
Logs and timelogging host, service timestamps log datetime msec, ntp serverLogs leave the device with timestamps I can line up across the estate.
Trusted softwareverify /md5, show software authenticity runningThe image is the one Cisco signed, and the hash matches the published value.

The core of my management plane baseline. Secrets and addresses are placeholders.

service timestamps log datetime msec localtime show-timezone
no ip http server
no ip http secure-server
ip ssh version 2
ip ssh time-out 60
ip ssh authentication-retries 3
login block-for 120 attempts 5 within 60
login on-failure log
enable algorithm-type scrypt secret <long random secret>
ip access-list standard MGMT-ONLY
 permit 10.0.0.0 0.0.0.255
line vty 0 15
 access-class MGMT-ONLY in vrf-also
 transport input ssh
 exec-timeout 10 0
snmp-server group NMS v3 priv
snmp-server user nms1 NMS v3 auth sha <auth key> priv aes 256 <privacy key>
logging host 10.0.0.60
ntp server 10.0.0.1

I build the baseline from Cisco's IOS XE hardening guide and the CIS (Center for Internet Security) benchmarks, then check every device against it on a schedule, so drift shows up as a report rather than an incident. Wider security design is on the security page.

Troubleshooting

Finding faults on Catalyst and IOS, layer by layer

Most faults on these platforms fall into a small set: a damaged link, a protection feature doing its job, a busy processor, a full hardware table, a half finished upgrade or an access problem. I work from the bottom up and read the counters before I touch the config. Choose a symptom to see where it sits and what I run first. My general method is on the troubleshooting page.

A fault finder for Catalyst switches and IOS routers Five places a fault on a Catalyst switch or IOS router can sit, in order: physical, Layer 2, platform, Layer 3 and access. For each symptom, test traffic flows as far as the place that fails. A panel shows what I see and the first command I run. Physicalcables, power Layer 2ports, loops Platformprocessor, tables Layer 3routes, NAT Accesslogins What I see What I run first Symptom: Errors and slow transfers on one port Input errors climbing on Gi1/0/12show interfaces GigabitEthernet1/0/12 counters errors Symptom: Phones or access points keep rebooting Power denied on some ports, budget nearly usedshow power inline Symptom: A port went dead after a device was plugged in Port err-disabled by a guard or port securityshow interfaces status err-disabled Symptom: Slow logins and routing flaps Processor busy, CoPP drops risingshow processes cpu platform sorted Symptom: New routes or ACL lines do nothing One TCAM region at or near 100% usedshow platform hardware fed switch active fwd-asic resource tcam utilization Symptom: Switches missing from a stack after a reload A member shows a software version mismatchshow switch Symptom: The switch went back to the old release Upgrade activated but never committedshow install summary Symptom: One subnet cannot reach the internet No translations at all for 10.20.0.0/24show ip nat translations | include 10.20. Symptom: My directory login fails on one device TACACS+ server marked dead, local login worksshow tacacs

Swipe sideways to see the whole diagram.

Errors and slow transfers on one port. CRC (cyclic redundancy check) errors mean frames arrive damaged: a bad cable, a dirty or failing optic, or a duplex mismatch with an old device. I check counters on both ends, run test cable-diagnostics tdr interface Gi1/0/12 on copper, read optic levels with show interfaces transceiver detail, then replace the cheapest part first.

Phones or access points keep rebooting. The switch has run out of power budget, a device needs more than its port can give, or a power supply has failed. show power inline shows used and remaining power per switch and per port. I add power, move the device to a UPOE+ port, or set port priority so critical devices keep power first.

A port went dead after a device was plugged in. A protection feature shut it: BPDU (bridge protocol data unit) guard saw a switch on an access port, or port security saw too many MAC addresses. I find what was connected and remove the cause, then shutdown and no shutdown the port. Automatic recovery on a timer is possible, but I use it with care.

Slow logins and routing flaps. Something is being punted to the processor: an ARP storm, a loop, a routing loop expiring TTLs, or ACLs with log. show processes cpu platform sorted shows whether IOSd or FED is busy, show platform software fed switch active punt cause summary shows why, and an EPC (Embedded Packet Capture) on the control plane shows who. I fix the source, then check CoPP.

New routes or ACL lines do nothing. The hardware table for that feature is full, so new entries fail or fall back to the processor, and the log usually says so. I summarise routes, shorten ACLs with object groups, or move to an SDM template that gives that table more room, which needs a reload.

Switches missing from a stack after a reload. A member came back on different software and sits in version mismatch, or a stack cable is loose. show switch shows each member's state, and show switch stack-ports summary the cables. The software auto upgrade feature can copy the stack's release to the member; otherwise I upgrade it alone and rejoin it.

The switch went back to the old release. The upgrade was activated but never committed, so the auto abort timer rolled it back, as designed. show install summary shows the packages and their states. I upgrade again and run install commit once my checks pass, or stop the timer with install auto-abort-timer stop if testing needs longer.

One subnet cannot reach the internet. Its traffic is not being translated: the subnet is missing from the NAT ACL, or a new interface lacks ip nat inside. show ip nat translations and show ip nat statistics show what is translated and how often the ACL matched. show ip route on the way back checks the return path.

My directory login fails on one device. The device cannot reach TACACS+, or ISE does not know it. Usual causes are a wrong source interface, a VRF the server group does not use, or a shared key mismatch. show tacacs shows failed connections, test aaa group ISE tests one login, and the ISE live log shows whether the request arrived. The breakglass account gets me in meanwhile.

Animation

The commands I reach for

QuestionCommandWhat it tells me
What is this device, and why did it reload?show versionThe release, the uptime and the last reload reason.
What happened recently?show loggingEvents with timestamps, if NTP (Network Time Protocol) and timestamps are set.
Which ports have errors?show interfaces counters errorsCRC, runts, giants and discards on every port.
Where is the processor going?show processes cpu sorted, show processes cpu platform sortedBusy IOSd tasks, and busy Linux processes such as FED.
Is memory running out?show platform software status control-processor briefProcessor load and memory per control processor, read over time.
What does the hardware hold?show platform hardware fed switch active ...ASIC tables, queues and drop counters.
What is the packet doing?EPC with monitor capture, or packet trace on routersReal packets captured on the box, or each feature a packet passed and why it dropped.
What does Cisco need?show tech-supportThe bundle Cisco TAC (Technical Assistance Center) asks for first.

Embedded Packet Capture on a Catalyst switch. The file opens in Wireshark.

monitor capture CAP interface GigabitEthernet1/0/12 both
monitor capture CAP match ipv4 host 10.20.0.15 any
monitor capture CAP buffer size 10
monitor capture CAP start
! reproduce the fault, then
monitor capture CAP stop
show monitor capture CAP buffer brief
monitor capture CAP export flash:cap.pcap

Packet trace on an ISR, Catalyst 8000 or ASR 1000 router: each feature a packet hit, and the drop reason if it died.

debug platform condition ipv4 10.20.0.15/32 both
debug platform packet-trace packet 64
debug platform condition start
! reproduce the fault, then
debug platform condition stop
show platform packet-trace summary
show platform packet-trace packet 0

I change one thing at a time, and repeat the same test after each change. Before I open a case with Cisco I collect show tech-support and the exact time of the fault, because the first question is always which release and what changed.

Engagement

How I run a Catalyst and IOS XE refresh, from audit to steady state

A campus or branch refresh usually starts with end of life dates, a security finding or a new need such as more power for access points. I follow the same path each time: agree the drivers, audit what is really installed, design standards and templates, prove them in a lab and a pilot, then hand over an estate that someone can keep current.

How an engagement runs, from first conversation to lifecycle Seven stages from left to right: engage (stakeholders), requirements (FR and NFR), discovery (audit), design (HLD and LLD), build and test (lab and pilot), support (handover), lifecycle (keep current). For each stage the panel shows who I work with and what comes out of it. After the lifecycle stage the loop returns to the start. Engagestakeholders RequirementsFR and NFR Discoveryaudit DesignHLD and LLD Buildlab and pilot Supporthandover Lifecyclekeep current Step 1 · EngageAgree what the refresh must deliverWho I work withWhat comes outInfrastructure ownerSecurity and riskSite and facilities leadsScope: sites, closets and routersDrivers: end of life, PoE, securityDecision log and RACIChange windows by site Step 2 · RequirementsPorts, power, uptime and security targetsWho I work withWhat comes outApplication ownersService deskSecurity architectsPort and PoE counts per closetAvailability and upgrade targetsSecurity baseline and NAC needsMonitoring and support needs Step 3 · DiscoveryWhat is installed, how it is used, what is oldWho I work withWhat comes outNetwork operationsSite engineersCisco account teamInventory with serials and releasesEnd of life and contract statusPort, PoE and uplink useConfig standards and drift Step 4 · DesignPlatforms, standards and a migration planWho I work withWhat comes outDesign authoritySecurity architectsFacilities and powerPlatform and licence choicesGolden configs and templatesSoftware release standardCutover and rollback plan Step 5 · Build and testProve the templates, then cut over in wavesWho I work withWhat comes outEngineersPilot site usersChange advisory boardLab tests of templates and upgradesPilot closet cutoverWave plan through change controlBefore and after checks Step 6 · SupportMonitoring, runbooks and spares in placeWho I work withWhat comes outService desk and NOCField engineersCisco TACDevices in monitoring and backupRunbooks for common faultsSpares and RMA processHypercare exit criteria Step 7 · LifecycleReleases, field notices and end of lifeWho I work withWhat comes outDesign authorityNetwork operationsCisco account teamRelease standard reviewed twice a yearSecurity advisories assessedField notices trackedRefresh plan from end of life dates

Swipe sideways to see the whole diagram.

Step 1
  1. I agree the drivers first: end of life dates, audit findings, or new devices that need more power or speed. Then the sites, closets and routers in scope, and who decides, recorded in a RACI (responsible, accountable, consulted, informed) chart. Each site tells me which change windows it can live with.

  2. I turn the drivers into requirements with numbers: ports and PoE per closet, uplink speeds, availability, and how long an upgrade may interrupt users. Security sets the hardening baseline, NAC (network access control) and logging needs. Each requirement has an owner who signs it off.

  3. I audit the estate before designing anything: every device with its serial, release and end of life dates, how full each closet is, how much power is drawn, and how far configs have drifted from the standard. The account team confirms contract and end of life data by serial number.

  4. The high level design picks platforms, stacking or pairing, licences and the software release standard. The low level design turns that into golden configs and templates, port maps, power budgets and a cutover plan for each closet, each with a tested way back.

  5. I prove the templates and the upgrade method in the lab, then cut over one pilot closet out of hours. Every wave follows the same runbook: stage the new kit, load its config through Plug and Play, move the cables, then compare before and after checks.

  6. Before handover every device is in monitoring, config backup and the CMDB (configuration management database). The NOC (network operations centre) gets runbooks for common faults, spares sit at the right sites and the RMA (return material authorisation) process is tested. Hypercare ends when agreed criteria are met.

  7. I review the release standard twice a year against Cisco's recommended releases, assess each security advisory against the features in use, and track field notices. End of life notices feed a rolling refresh plan, so no platform reaches its last date of support by surprise.

Functional requirements

What it must do.

  • Give every user, phone, access point and building device a port with the right speed, VLAN and power.
  • Authenticate users and devices on every access port, with an ISE policy for each type.
  • Route between VLANs at distribution or access, and connect each site to the WAN and the data centres.
  • Keep each site working through the loss of one stack member, uplink, power supply or router.
  • Upgrade software with a way back, in agreed windows, without visiting the site.
  • Send logs, flow records and telemetry to central tools, and back up every config on change.

Non functional requirements

How well it must do it, with a number wherever one can be agreed.

Availability
99.99% for core and distribution, 99.9% for a single access closet (typical).
Upgrade impact
No outage at core and distribution with ISSU, and one reload per access closet inside an agreed window (typical).
PoE headroom
At least 20% of each switch's power budget spare with every port in use (typical).
Uplinks
Access to distribution oversubscription of 20 to 1 or better (typical).
Security
Every device on the hardening baseline: SSH only, TACACS+ logins, SNMPv3 and logs sent off the device.
Software
One extended support release per platform family, and never more than two in the estate.
Recovery
Config backed up on every change, and a failed switch replaced and restored within one business day (typical).
Operability
Every device in monitoring, inventory and the CMDB before handover.

Numbers are typical starting points. Each organisation agrees its own.

Projects

Where I have used it

Cisco IOS runs through my whole career, from telecoms networks in East Africa and South America to Catalyst campuses and SD-WAN across a global software company. My lab still runs classic IOS on 2811 routers and 3750 switches, which keeps the fundamentals close at hand.

Home lab · ongoing

Classic IOS in a 42U rack

Cisco 2811 routers form an MPLS core with two P (provider) and five PE (provider edge) routers, with Catalyst 3750 switches at each site and a 2811 terminal server giving console access to every device. I use it for proof of concept work, troubleshooting and certification study. See the topology.

BNY Mellon · 2018 to 2019

Refreshing a regional network

The EMEA (Europe, the Middle East and Africa) network refresh: audit, high and low level design and implementation of LAN (local area network), WAN, SD-WAN and data centre infrastructure. It replaced end of life equipment with minimal impact on global operations and no service outages.

AVEVA · 2020 to 2021

Catalyst at every site worldwide

Designed and built LAN and WAN on Catalyst SD-WAN, SD-Access and Catalyst Center, and upgraded every global site remotely during the lockdowns through local enablement, with no delay.

XIDA · 2025 to now

From discovery to provisioning

Led network and security transformation from discovery to provisioning across Cisco Nexus, Catalyst SD-WAN, SD-Access and the Amazon Web Services, Azure and Google Cloud environments.

JJ Food Wholesale · 2007 to 2011

A group wide network

LAN, WAN, VoIP (voice over IP), virtualisation and security across the group, including warehouse, cold chain and temperature monitoring systems at the food depots, linked to the group ERP (enterprise resource planning) system.

Passport Telecom · 2004 to 2007

Cisco networks on two continents

Cisco based telecoms infrastructure for over 4,000 clients across East Africa and South America.

Backed by CCNP (Cisco Certified Network Professional) Enterprise and Routing and Switching, CCNA (Cisco Certified Network Associate) Routing and Switching and CCDP (Cisco Certified Design Professional). I have also passed the CCIE (Cisco Certified Internetwork Expert) Routing and Switching written exam and the Cisco Certified Specialist exams in Enterprise Core and Enterprise Advanced Infrastructure Implementation. See all credentials