The documentation set for this product strives to use bias-free language. For the purposes of this documentation set, bias-free is defined as language that does not imply discrimination based on age, disability, gender, racial identity, ethnic identity, sexual orientation, socioeconomic status, and intersectionality. Exceptions may be present in the documentation due to language that is hardcoded in the user interfaces of the product software, language used based on RFP documentation, or language that is used by a referenced third-party product. Learn more about how Cisco is using Inclusive Language.
This document describes how to upgrade a pair of 9800 wireless controllers in HA SSO using the ISSU (In-Service Software Upgrade) method.
The document covers the procedure, limitation, precautions to take and the upgrade instructions.
Cisco recommends that you have knowledge of these topics:
This document is not restricted to specific software and hardware versions.
The information in this document was created from the devices in a specific lab environment. All devices used in this document started with a cleared (default) configuration. If your network is live, ensure that you understand the potential impact of any command.
ISSU is a feature that allows to upgrade the 9800 wireless controllers with minimal downtime. If you have enough coverage, then the upgrade is seamless, and the wireless clients must not observe any downtime. To make this possible, ISSU has a mechanism that upgrades one controller at a time and allows APs to upgrade in staggered manner.
Here is a brief overview of the different steps that occur during an ISSU upgrade:
These are the limitation you need to be aware of before proceeding to a ISSU upgrade:
Before proceeding to the upgrade of the 9800 wireless controllers using ISSU, there are a few requirements and verifications to make to ensure a smooth upgrade of the controllers and the access points.
Step 1: Verify there is no active or uncommitted version running
CLI command:
show install summary
Expected output:
You see only one version in "C" (for Activated & Committed) state:
WLC#show install summary
[ Chassis 1/R0 2/R0 ] Installed Package(s) Information:
State (St): I - Inactive, U - Activated & Uncommitted,
C - Activated & Committed, D - Deactivated & Uncommitted
--------------------------------------------------------------------------------
Type St Filename/Version
--------------------------------------------------------------------------------
IMG C 17.09.04a.0.6
Step 2: Verify the controller is in INSTALL mode
Ensure that both Active and Standby controllers are in install mode and are booted from "bootflash:/packages.conf" (see step 3).
CLI command:
show version | i Installation mode
Expected output:
WLC#show version | i Installation mode
Installation mode is INSTALL
Step 3: Check the file used for boot ("packages.conf")
If the controller is in INSTALL mode, it must be booting from the "packages.conf" file.
CLI command:
show boot
Expected output:
WLC#show boot
BOOT variable = bootflash:packages.conf,12;
CONFIG_FILE variable =
BOOTLDR variable does not exist
Configuration register is 0x102
Standby BOOT variable = bootflash:packages.conf,12;
Standby CONFIG_FILE variable =
Standby BOOTLDR variable does not exist
Standby Configuration register is 0x102
Step 4: Check redundancy states
The active controller must be in ACTIVE state and the standby controller must be in STANDBY-HOT state, meaning that the communication is UP and that they are communicating with each other.
CLI command:
show chassis rmi
show redundancy
Expected output:
WLC#show chassis rmi
Chassis/Stack Mac Address : 000c.29c4.caff - Local Mac Address
Mac persistency wait time: Indefinite
H/W Current
Chassis# Role Mac Address Priority Version State IP RMI-IP
--------------------------------------------------------------------------------------------------------
*1 Active 000c.29c4.caff 2 V02 Ready 169.254.10.9 198.19.10.9
2 Standby 000c.29d2.4018 1 V02 Ready 169.254.10.10 198.19.10.10
WLC#show redundancy
Redundant System Information :
------------------------------
...
Hardware Mode = Duplex
Configured Redundancy Mode = sso
Operating Redundancy Mode = sso
Maintenance Mode = Disabled
Communications = Up
Current Processor Information :
-------------------------------
Active Location = slot 1
Current Software state = ACTIVE
...
Peer Processor Information :
----------------------------
Standby Location = slot 2
Current Software state = STANDBY HOT
...
Step 5: Check if there is enough space in the bootflash to store the new image
A *.bin image size is around 1GB. Make sure that you have multiple GB of free space in the bootflash before proceeding.
CLI command:
dir bootflash:/ | in free
Expected output:
WLC#dir bootflash:/ | in free
14785671168 bytes total (11446026240 bytes free)
Step 6: Check that there is no other upgrade in progress
This is a crucial step, because if the controller is stuck in a previous upgrade, then the new upgrade fails.
CLI command:
show issu state detail
Expected output:
WLC#show issu state detail
Current ISSU Status: Enabled
Previous ISSU Operation: N/A
=======================================================
System Check Status
-------------------------------------------------------
Platform ISSU Support Yes
Standby Online Yes
Autoboot Enabled Yes
SSO Mode Yes
Install Boot Yes
Valid Boot Media Yes
Operational Mode HA-REMOTE
=======================================================
No ISSU operation is in progress
After all checks passed, we can now proceed to the upgrade of the wireless controllers. You can choose to either upgrade the controllers using the GUI or the CLI. There are advantages/disadvantages to both methods. CLI gives you more control since you can initiate each step individually, but this requires a bit more work than upgrading via the GUI. Upgrading the controller via the GUI can be done with a single press of button and all steps are done automatically. However, if something fails during the upgrade, you need to go into CLI to re-initiate the specific step that failed. This guide only shows the CLI upgrade procedure, as GUI procedure can be done simply by executing the GUI instructions.
This section shows a brief summary of the commands executed to upgrade the controllers. A complete explanation of each commands and all steps is provided:
Command | Description |
install add file <file> | Image downloaded from CCO to the bootflash is loaded to the controller and expanded into packages |
ap image predownload | AP images corresponding to v2 image are pre-downloaded to APs |
install activate issu [auto-abort-timer <30-1200>] | ISSU orchestration of one WLC reload followed by the other. The activate trigger does the AP reset in a staggered manner with a best-effort attempt to retain connectivity for clients |
install commit | The commit make the changes permanent |
Step 1: Clear AP pre-download statistics
It is best if you clear those statistics before upgrading so you can get a fresh output that only relates to the current upgrade. There must not be any pre-download in progress before starting the upgrade.
CLI command:
clear ap predownload statistics
show ap image
Expected output:
WLC#show ap image
Total number of APs : 2
Number of APs
Initiated : 0
Downloading : 0
Predownloading : 0
...
Predownload in progress : No
Step 2: Remove the previous software image
In case of not enough space in bootflash, you can always consider to clean up the old installation files using the install remove inactive command.
CLI command:
install remove inactive
Step 3: Configure the value of AP rolling upgrade percentage
You can set this value up to 25% (max value). Note that if you choose 5% (min value), less APs are upgraded per iteration and the upgrade takes longer, but this helps reduce the global downtime as well. Choose this value according to your deployment and your AP coverage.
CLI command:
conf t
ap upgrade staggered {5 | 15 | 25 | one-shot}
end
write memory
Step 4: Download the .bin image on the controller
Yon can either upload this image via CLI or via the GUI. With the GUI, this is done when you launch the upgrade process.
CLI command:
dir bootflash:*.bin
[OPTIONAL] copy ftp://<username>:<password>@<SERVER_IP>/<IMAGE_FILE> bootflash:
Step 5: Install the image
This step initiates the first phase of the upgrade. The controller software image is added to the flash and expanded into packages. This must take a couple of minutes. Once the install add process is complete, check that the new image is seen as "Inactive" from the "show install summary" command.
CLI command:
install add file bootflash:<filename>
show install summary
Expected output:
WLC#show install summary
[ Chassis 1/R0 2/R0 ] Installed Package(s) Information:
State (St): I - Inactive, U - Activated & Uncommitted,
C - Activated & Committed, D - Deactivated & Uncommitted
--------------------------------------------------------------------------------
Type St Filename/Version
--------------------------------------------------------------------------------
IMG C 17.09.04a.0.6
IMG I 17.12.02.0.2739
Step 6: Pre-download the image to the APs
Before activating the image, we need to instruct the APs to pre-download the image that is currently inactive (V2). If the pre-download is not initiated, then the ISSU upgrade fails since this is a required step to minimise downtime. This operation can take several minutes depending on the number of APs that are joined to the controller and the link latency.
CLI command:
ap image predownload
show ap image
Expected output:
WLC#show ap image
Total number of APs : 2
Number of APs
Initiated : 0
Downloading : 0
Predownloading : 2
Completed downloading : 0
Completed predownloading : 0
Not Supported : 0
Failed to Predownload : 0
Predownload in progress : Yes
Step 7: Activate the new image
Once the pre-download is finished, you can activate the new image. This is the longest step of the upgrade process. It runs compatibility checks, installs the package, and updates the package status details. Optionally, you can configure the time limit to cancel the addition of new software without committing the image. Valid values are from 30 to 1200 minutes. Default value is 360 minutes (6 hours). Once you launch the upgrade, the whole ISSU process takes place : standby upgrades, switchover, then new standby upgrades and then the AP staggered upgrade.
CLI command:
install activate issu [auto-abort-timer <30-1200 mins>]
Expected output:
WLC#install activate issu
install_activate: START Sun Jan 14 08:29:36 EST 2024
install_activate: Activating ISSU
NOTE: Going to start Activate ISSU install process
STAGE 0: System Level Sanity Check
===================================================
--- Verifying install_issu supported ---
--- Verifying standby is in Standby Hot state ---
--- Verifying booted from the valid media ---
--- Verifying AutoBoot mode is enabled ---
--- Verifying Platform specific ISSU admission criteria ---
--- Verifying Image ISSU Compatibility ---
Finished Initial System Level Sanity Check
STAGE 1: Installing software on Standby
===================================================
--- Starting install_remote ---
[2] install_remote package(s) on chassis 2/R0
WARNING: Found 1545 disjoint TDL objects.
[2] Finished install_remote on chassis 2/R0
install_remote: Passed on [2/R0]
Finished install_remote
STAGE 2: Restarting Standby
===================================================
--- Starting standby reload ---
Finished standby reload
--- Starting wait for Standby to reach terminal redundancy state ---
Finished wait for Standby to reach terminal redundancy state
STAGE 3: Installing software on Active
===================================================
--- Starting install_active ---
WARNING: Found 2969 disjoint TDL objects.
[1] install_active package(s) on chassis 1/R0
[1] Finished install_active on chassis 1/R0 install_active: Passed on [1/R0]
Finished install_active
STAGE 4: Restarting Active (switchover to standby)
===================================================
--- Starting active reload ---
New software will load after reboot process is completed
It is a good idea to monitor the current status of the upgrade using the "show chassis rmi" and "show redundancy" commands periodically. This shows you once a controller is removed from the HA pair and when it comes back, and on which version. Note that the process can take around 20 to 30 minutes.
Once the upgrade is completed, you will see the image as active but "uncommitted" :
WLC#show install summary
[ Chassis 1/R0 2/R0 ] Installed Package(s) Information:
State (St): I - Inactive, U - Activated & Uncommitted,
C - Activated & Committed, D - Deactivated & Uncommitted
--------------------------------------------------------------------------------
Type St Filename/Version
--------------------------------------------------------------------------------
IMG U 17.12.02.0.2739
--------------------------------------------------------------------------------
Auto abort timer: active , time before rollback - 05:23:37
--------------------------------------------------------------------------------
Once the installation is over, the WLC will start to reload the APs in staggered manner. To monitor the AP staggered upgrade, you can use the GUI (under "AP Upgrade Statistics" in the "Software Upgrade" section) or the CLI command "show ap uptime", which will show the CAPWAP uptime of the APs. This gives an indication of which APs have already reloaded. You can also check that the AP upgrade is over by checking the logs, using the "show logging" command on the controller:
Jan 20 14:23:22.478: %UPGRADE-6-STAGGERED_UPGRADE_COMPLETE: Chassis 2 R0/0: wncmgrd: Staggered AP Upgrade completed succesfully
Step 8: [OPTIONAL] Stop the "auto-abort" timer
In case you need more time than the default 6 hours for the upgrade (when you have a lot of APs to upgrade and want to make sure this is working fine before committing the image), you can stop this timer. This way the auto rollback will not take place.
CLI command:
install auto-abort-timer stop
Step 9: Make the new software persistent
Commit the activation changes to be persistent across reloads using the install commit command. This is the final step in a normal upgrade process. The install commit command makes software persistent across reboots.
CLI command:
install commit
Expected output:
WLC#show install summary
[ Chassis 1/R0 2/R0 ] Installed Package(s) Information:
State (St): I - Inactive, U - Activated & Uncommitted,
C - Activated & Committed, D - Deactivated & Uncommitted
--------------------------------------------------------------------------------
Type St Filename/Version
--------------------------------------------------------------------------------
IMG C 17.12.02.0.2739
Once the version is committed and the APs have reloaded on the new version, the ISSU upgrade is finished.
You can find some other operations that you possibly need to do during or after the ISSU upgrade, such as aborting the upgrade or rollback to a previous version :
Abort ISSU
This step cancels the upgrade process done so far and returns the device to the previous installation state (V1)in ISSU fashion. This is applicable for both controllers and the APs. This can be done in case you notice a severe impact due to the upgrade and if you did not commit the image yet. This command and process only works if “install commit” has not been issued yet. Once the image has been committed you cannot rollback in ISSU manner.
CLI command:
install abort issu
Expected output:
STAGE 1: Rolling Back software on Standby
===================================================
--Starting Deactivation at the standby --
--- Starting abort_standby ---
[1] abort_standby package(s) on chassis 1/R0
WARNING: Found 1545 disjoint TDL objects.
[1] Finished abort_standby on chassis 1/R0
abort_standby: Passed on [1/R0]
Finished abort_standby
STAGE 2: Restarting Standby
===================================================
--- Starting standby reload ---
Finished standby reload
--- Starting wait for Standby to reach terminal redundancy state ---
Finished wait for Standby to reach terminal redundancy state
STAGE 3: Rolling Back software on Active
===================================================
--Starting Deactivation at the active --
--- Starting abort_active ---
WARNING: Found 1545 disjoint TDL objects.
[2] abort_active package(s) on chassis 2/R0
[2] Finished abort_active on chassis 2/R0
abort_active: Passed on [2/R0]
Finished abort_active
STAGE 4: Restarting Active (switchover to standby)
===================================================
--- Starting active reload ---
New software will load after reboot process is completed
SUCCESS: install_abort Wed Jan 17 21:58:52 CET 2024
client_loop: send disconnect: Broken pipe
Switchover to the "primary" controller
In a production environment this step can be desired if you want to have the original controller being active again. Remember that once ISSU upgrade has completed, the "secondary" unit is the active controller. You can always return to the original state by performing a manual switchover. You need to make sure that the peer unit is in "Standby Hot" state before proceeding.
CLI command:
redundancy force-switchover
Rollback to previous state once ISSU Upgrade has been completed
Once the upgrade has been committed, ISSU downgrade is not supported for Cisco Catalyst 9800 Series Wireless Controller platforms. At this point a rollback will mean that both Wireless Controllers and APs will reload because of the code change and this will create downtime. You can start by checking the available rollback points and then decide to which one to rollback.
CLI command:
show install rollback
show install rollback id <id number>
install rollback to id <id number>
Expected output:
WLC#sh install rollback
ID Label Description
-------------------------------------------------------
3 No Label No Description
2 No Label No Description
1 No Label No Description
WLC#sh install rollback id 2
Rollback id - 2 (Created on 2024-04-22 10:31:57.000000000 +0000)
Label: No Label
Description: No Description
Reload required: NO
State (St): I - Inactive, U - Activated & Uncommitted,
C - Activated & Committed, D - Deactivated & Uncommitted
--------------------------------------------------------------------------------
Type St Filename/Version
--------------------------------------------------------------------------------
IMG C 17.09.04a.0.6
WLC#install rollback to id 2
install_rollback: START Thu May 30 09:44:38 UTC 2024
install_rollback: Rolling back to id 2
This operation may require a reload of the system. Do you want to proceed? [y/n]y
--- Starting Rollback ---
Performing Rollback on all members
[2] Rollback package(s) on Chassis 2/R0
[1] Rollback package(s) on Chassis 1/R0
[2] Finished Rollback package(s) on Chassis 2/R0
Checking status of Rollback on [1/R0 2/R0]
Rollback: Passed on [1/R0 2/R0]
Finished Rollback operation
SUCCESS: install_rollback Thu May 30 09:45:40 UTC 2024
In case you are facing an issue before, during or after the upgrade of the 9800 wireless controllers using ISSU, we recommend that you go through this document that explains the common problems encountered and their solutions.
Revision | Publish Date | Comments |
---|---|---|
1.0 |
20-Sep-2024 |
Initial Release |