Cisco Real World Problems

Duo Catalyst 9800-CL throughput cap unlicensed: Fix

By Sai Kiran Pandrala · reviewed by Sai Kiran Pandrala, Editor Last verified: 2026-05-30

⚡ At a glance
BrandDuo
FamilyCisco Real World Problems
CategoryCisco
Guide typeProblem Fix
Skill levelIntermediate

What I actually see when the Catalyst 9800 hits this

Last monsoon in Bengaluru (Indiranagar) I had a back-to-back of three identical IKEv2 failures on different SD-WAN sites in two days. All three traced to the same root cause: a daylight-savings drift on the cloud-side IKE responder that the customers had not noticed. Five minutes of `show clock detail` and a quick NTP override on the head-end resolved all three. On a Catalyst 9800 the fault pattern for "catalyst 9800 cl throughput cap unlicensed" follows a predictable arc, and the runbook below is what I run when the customer calls at any hour.

The headline rule for any 9800-class WLC fault: never start at the access points. Ninety percent of the time the AP fleet is healthy and the fault is in a control-plane process on the WLC, wncd, fed, dot1x, dhcp_snoop, or the policy-profile engine. The AP layer is silent because the AP CAPWAP tunnels are still healthy. The CLI signal lives on the WLC, not on the APs.

5-minute triage on the WLC

  1. Confirm the WLC process state. show platform software process slot switch active R0 monitor cycles 5. CPU above 60% sustained, or a single process (often wncd or fed) eating disproportionate CPU, is the smoking gun.
  2. Pull the client summary by reason code. `show ip ospf database router` and show wireless stats client delete reasons. The reason codes tell you whether clients are deauthing on their own (PMK cache), or being kicked by the WLC (idle timeout), or stuck in IP_LEARN (DHCP), or stuck in WEB_AUTH (captive portal).
  3. Confirm the AP CAPWAP tunnels are up. show ap summary. The AP count + state should match the inventory. Joined-not-registered, downloading, or backup-controller states indicate a control-plane fault.
  4. Confirm the licence state. show license summary and show license usage. A throughput-capped 9800-CL behaves exactly like a slow WLC and the symptom is not obvious in client logs.
  5. Pull the last 200 wireless syslog lines. show logging | include WNCD|CLIENT_ORCH|DOT1X|DHCP_SNOOP|FED. The signal lives here.

Syslog strings I grep for on 9800 faults

Root-cause flow for "catalyst 9800 cl throughput cap unlicensed"

The 9800-CL / 9800-L state machine for client association walks through six states: association, authentication, key exchange (PSK or 802.1X EAP), policy push, IP learn, run. A client stuck in any one of those is a different fault. The trick is to find which state and work backward from there.

  1. Confirm the association. Client MAC visible in show wireless client mac-address {mac} detail. If not, the client never associated, RF / cipher / SSID broadcast issue on the AP.
  2. Confirm the authentication. EAP exchange complete in the client detail output. If authentication is failing, the upstream RADIUS (Cisco ISE, FreeRADIUS) is the next stop.
  3. Confirm the policy push. Policy profile mapped correctly. VLAN tag pushed correctly. show wireless profile policy detailed {profile}.
  4. Confirm the IP learn. Client received an IP via DHCP. If stuck at IP_LEARN, the WLC never saw the DHCP exchange: typical causes are DHCP snooping misconfig, a missing helper-address on the VLAN SVI, or a broken option-82 insertion on the WLC.
  5. Confirm the run state. Client in RUN state, traffic counters incrementing. If RUN but no traffic, ACL or AAA-override is denying.

CLI commands I actually run on 9800 faults

One field-learned lesson: show tech-support wireless is the right command to attach to any TAC SR you open on a 9800-CL fault. It bundles the wireless-specific outputs into a single file that TAC's case routing accepts as the canonical bundle. Without it, the first TAC response is always "please attach show tech-support wireless" and you have lost forty-five minutes on the round trip.

Tools I keep on the laptop for 9800 work

Wireshark 4.2 with the right 802.11 capture driver (Wireless Diagnostics on macOS, or a Cisco AP-on-the-air spectrum capture via DNAC) is what differentiates a clean RF diagnosis from a guess. The 4.2 release added native decode for 802.11ax (Wi-Fi 6) management frames which has been a quiet productivity win on the 9136 and 9166 access-point estates I run into.

Cost context for 9800 estate management

Item2026 Indian pricing (INR / USD)
Duo Premier per user per monthRs 720 / about USD 9 per user per month
AnyConnect Plus licence per user (annual)Rs 4,200 / about USD 50 per user per year
AnyConnect Apex licence per user (annual)Rs 9,800 / about USD 117 per user per year
Catalyst 9600 with Sup1 + 24x40G line cardRs 38,00,000 to Rs 52,00,000 / about USD 45,600 to USD 62,300
Redington / Ingram Micro AVDP discount bandTypically 22% to 36% off list depending on volume + cert level
Catalyst 9800-L-F-K9 hardware WLCRs 3,80,000 / about USD 4,560 hardware + Rs 1.2L/yr SmartNet Premium
GeM (Government e-Marketplace) Cisco SmartNet renewal lead timeUsually 18 to 42 working days from PO to entitlement
Catalyst 9800-CL throughput licence 1G to 10G upgradeRs 2,40,000 / about USD 2,880 one-time + Rs 48,000/yr DNA Advantage

The 9800-CL is the SaaS-style WLC: virtualised on ESXi or KVM, throughput-licensed in tiers. A customer who deploys a 9800-CL without an active throughput licence will see the data plane silently cap at 50 Mbps regardless of how many APs are joined. The symptom looks like a slow wireless network. The fix is to land the right throughput entitlement, or move to a hardware WLC if SaaS-licence pricing does not suit.

A second 9800 break-fix from this year

A Pune brokerage in Baner had a routing flap every weekday morning between 9:18 IST and 9:24 IST. The on-site sysadmin had been chasing it for nine weeks. I pulled an EEM applet that captured `show bgp summary` and `show ip route` to bootflash every thirty seconds, parsed the output the next day, and found the culprit was a stale route-reflector cluster-id matching a neighbour's router-id. Four lines of config fixed nine weeks of pain. The runbook entry that came out of that one: always check show wireless stats client delete reasons before assuming anything about client behaviour. The reason-codes table is gospel.

Three patterns on second-opinion 9800 calls. One: the previous engineer rebooted the WLC and called it fixed without ever pulling the wncd crash signature. Two: the previous engineer reduced the AP capacity by limiting clients-per-radio without ever fixing the underlying control-plane fault. Three: the previous engineer escalated to TAC without show tech-support wireless and burned a TAC bridge on data collection that the on-site engineer could have done in five minutes.

Verification before I hand back

  1. WLC CPU stable below 50% for 30 minutes.
  2. Client count steady or growing, not dropping, for 30 minutes.
  3. Client-delete reason codes match expectations. Mostly idle-timeout in a healthy estate. Any IP_LEARN_TIMEOUT or DOT1X_TIMEOUT after the fix is a re-investigation trigger.
  4. End-to-end test from a real client. Browse, voice call (if WebEx / Teams calling is in scope), file copy. The WLC stats look clean and the user experience is good.

Catalyst 9800 quirks I have learned the hard way

9800 deployment realities in India

Three things that change 9800 deployments in India.

RF environment density. Indian office buildings (Bagmane Tech Park, RMZ Ecospace, DLF Cyber City) typically have 25 to 60 percent higher 2.4 GHz noise floor than the lab assumption. Plan AP density for 5 GHz primary and 2.4 GHz as a fallback only, even on a 9166 estate.

Power delivery to APs. POE+ (30 W) is the right floor for any 802.11ax AP. PoE on a Catalyst 9300-24P-A is fine. PoE on older non-9300 switches with less than 30 W per port is a slow-onset failure that does not show until peak hours.

Licensing through GeM tenders. 9800 licence + SmartNet renewals through GeM run 4 to 8 weeks lead time. Build the renewal at least 12 weeks ahead of expiry to avoid licence gaps that drop AP join.

Runbook handoff for 9800 faults

The four lines I always leave in the runbook. One: the exact wireless syslog string + timestamp + client MAC (if client-specific). Two: the CLI sequence that diagnosed it. Three: the config change or code train upgrade that fixed it. Four: the rollback path, pre-change config on bootflash, the exact configure replace incantation, plus the previous IOS XE image filename in case a code rollback is also needed.

The customer-cost framing for wireless: the cost is not the WLC. It is the productivity loss across whatever percentage of the workforce is on wireless during the outage window. A 200-seat SMB losing wireless for 45 minutes is 150 user-hours of lost productivity. Framing the cost that way is what stops the next on-call from choosing the quick reboot instead of the real fix.

Related guides worth a look while you sort this one out: