Cisco 9800 FlexConnect Local Switching – Policy Profile Walkthrough

Cisco 9800 FlexConnect local switching diagram with policy profile access policies showing VLAN 20, local switching enabled, and a Catalyst C9800-40 controller

FlexConnect · Cisco 9800 · IOS-XE · WLAN Design

Cisco 9800 FlexConnect Local Switching – Policy Profile Walkthrough

FlexConnect on the Catalyst 9800, built by hand: WLAN profiles, policy profiles, policy tags, site tags, and Flex profiles, and how they decide local vs. central switching at the AP.


Key Takeaways

  • On a 9800, switching behavior is controlled by the policy profile, not the WLAN profile. Central vs. local is a policy decision, not an SSID decision.
  • The site tag and Flex profile are what actually put an AP into FlexConnect mode, the policy tag alone is not enough.
  • Locally switched clients get DHCP directly from the local network. There is no WLC SVI and no DHCP proxy in that path.
  • ACLs for local switching must be applied in both the policy profile and the Flex profile, only then are they pushed down to the AP data path.
  • Changing a tag assignment on an AP triggers an AP rejoin (Cisco Systems, “Understand FlexConnect on Catalyst 9800”). Plan tag changes during a maintenance window.

1. Overview: Mixed Central and Local Switching

I built a mixed FlexConnect design on the Catalyst 9800. Mixed means some SSIDs are centrally switched, traffic tunneled back to the WLC, and others are locally switched, with the AP forwarding frames directly onto the local LAN without hitting the controller data plane.

Why mixed? In a branch or remote site, you typically want guest or IoT traffic to break out locally while corporate traffic hairpins back to HQ through the controller. FlexConnect handles both simultaneously. The 9800 makes switching mode a policy decision, not an SSID decision. That separation keeps a mixed design clean.

Key Architecture Point

The WLAN profile defines the SSID (name, security, QoS). The policy profile defines what happens to the traffic, central switch or local switch, which VLAN, which ACL. These are separate objects. One SSID can have completely different switching behavior depending on which policy profile it is bound to through the policy tag.

2. Profile and Tag Architecture on the 9800

The 9800 uses a three-tag model to define AP behavior. Every AP gets a policy tag, a site tag, and an RF tag (Cisco Systems, “Understand FlexConnect on Catalyst 9800”). For FlexConnect, the policy tag and site tag are the ones that matter.

Object What It Controls FlexConnect Relevance
WLAN Profile SSID name, security method, 802.1X policy, QoS Defines the SSID broadcast by the AP
Policy Profile Switching mode (central/local), VLAN, ACLs, session timeout Sets local vs. central switching per SSID
Policy Tag Binds WLAN profiles to policy profiles Applied per-AP; maps SSIDs to switching behavior
Site Tag AP join profile, Flex profile, local site flag Enabling the Flex profile here is what puts the AP in FlexConnect mode
Flex Profile Local VLAN mappings, native VLAN, ACL push to AP Required for local switching VLAN definitions and ACL enforcement

3. WLAN Profile to Policy Profile Mapping

Inside the policy tag, you create one or more WLAN-policy mappings. Each entry pairs a WLAN profile with a policy profile. This is the binding that tells the AP: when a client connects to SSID X, apply the switching rules from policy profile Y.

In this example, I have two SSIDs. The corporate SSID maps to a centrally switched policy profile, traffic tunnels to the WLC and exits via the controller’s SVI. The branch SSID maps to a locally switched policy profile, traffic goes directly out the AP’s switchport without touching the WLC data plane.

! Example: Policy tag with two WLAN-to-policy mappings
wireless tag policy BRANCH-POLICY-TAG
 wlan CORP-WLAN policy CENTRAL-POLICY-PROFILE
 wlan BRANCH-WLAN policy LOCAL-POLICY-PROFILE
Watch This

Tag assignments are per-AP, not per-SSID globally. Two APs in different buildings can broadcast the same SSID but have completely different switching behavior if they carry different policy tags. This is intentional and powerful, but it requires disciplined tag naming and documentation.

4. Site Tag and Flex Profile: Putting APs Into Flex Mode

The site tag is what actually converts the AP into FlexConnect mode. Inside the site tag, you reference a Flex profile. When the AP joins and receives a site tag that has a Flex profile attached, it transitions to FlexConnect mode. This triggers an AP rejoin (Cisco Systems, “Understand FlexConnect on Catalyst 9800”).

! Flex profile with local VLAN mappings
wireless profile flex BRANCH-FLEX-PROFILE
 native-vlan-id 10
 vlan-name BRANCH-DATA vlan 20
 vlan-name BRANCH-VOICE vlan 30

! Site tag referencing the Flex profile
wireless tag site BRANCH-SITE-TAG
 ap-profile DEFAULT-AP-PROFILE
 flex-profile BRANCH-FLEX-PROFILE
 local-site

The local-site keyword under the site tag is critical. It tells the controller this is a remote/branch site where the AP should operate in standalone capable mode and locally switch traffic per the Flex profile (Cisco Systems, “Understand FlexConnect on Catalyst 9800”).

AP Rejoin Warning

Changing the site tag on a live AP causes it to rejoin the controller (Cisco Systems, “Understand FlexConnect on Catalyst 9800”). Clients disconnect. If you are changing an AP from local mode to FlexConnect (or vice versa) in production, do it during a maintenance window. The tag change itself takes seconds, the rejoining and re-establishment of client sessions takes longer.

5. VLAN Behavior: Central vs. Local Switching

This is where the trunking and VLAN awareness requirements at the AP switchport come in. Centrally switched SSIDs tunnel traffic to the WLC, the AP switchport only needs access to the management VLAN for the CAPWAP tunnel. Locally switched SSIDs forward traffic directly, the AP switchport must trunk all locally switched VLANs.

Switching Mode AP Switchport Requirement VLAN Origin DHCP Source
Central Switching Access or trunk, management VLAN required Defined on WLC policy profile (SVI on WLC) WLC acts as DHCP relay or proxy
Local Switching Trunk, must carry all locally switched VLANs Defined in Flex profile VLAN mappings Local DHCP server on access switch or local subnet

If the AP switchport is missing a locally switched VLAN in its trunk allowed list, clients on that SSID will associate but fail to get an IP. The AP is forwarding the frames, they just have nowhere to go at layer 2. This is one of the most common misconfiguration points I see in FlexConnect deployments.

6. DHCP for Locally Switched Clients

For centrally switched clients, the WLC has an SVI and can act as a DHCP relay or run a local DHCP pool. That plumbing does not exist for locally switched clients (Cisco Systems, “Understand FlexConnect on Catalyst 9800”). The WLC is not in the data path. DHCP requests exit the AP directly onto the local VLAN and must reach a DHCP server on the local network.

No WLC Relay for Local Switching

Do not expect the WLC to relay DHCP for locally switched clients. There is no SVI on the controller for that VLAN in local switching mode. The DHCP server must be reachable from the local subnet, either a server on-site, a DHCP relay configured on the access switch SVI, or a local DHCP scope on the branch router.

Validate this during deployment. A quick test: associate a client to the locally switched SSID and run a packet capture on the AP switchport. You should see the DHCP Discover going out unencapsulated on the correct VLAN. If it is showing up in a CAPWAP tunnel, your policy profile still has central switching enabled (Cisco Systems, “Understand FlexConnect on Catalyst 9800”).

! Verify DHCP behavior, client should pull from local network
show wireless client detail mac-address <CLIENT-MAC>
! Check "Policy Profile" field and "VLAN" assignment
! "Central Switch" should read "No" for local switching

7. ACL Placement for Local Switching

ACLs on the 9800 for centrally switched clients are applied in the policy profile and enforced on the WLC. For locally switched clients, the WLC is not in the data path, so an ACL applied only in the policy profile will not be enforced (Cisco Systems, “Understand FlexConnect on Catalyst 9800”). The ACL must also be defined in the Flex profile so it gets pushed down to the AP and enforced locally in the AP data path.

ACL Must Be in Both Places

For a locally switched SSID: apply the ACL in the policy profile (for central fallback and policy association) AND in the Flex profile (for actual enforcement at the AP). If the ACL is only in the policy profile, it will not be enforced when the AP is locally switching. The AP enforces ACLs from the Flex profile download, not from the policy profile alone.

! ACL defined on the WLC
ip access-list extended BRANCH-LOCAL-ACL
 permit ip 192.168.20.0 0.0.0.255 any
 deny   ip any any

! Applied in the policy profile
wireless profile policy LOCAL-POLICY-PROFILE
 ipv4 acl BRANCH-LOCAL-ACL

! Also referenced in the Flex profile so it is pushed to the AP
wireless profile flex BRANCH-FLEX-PROFILE
 acl-policy BRANCH-LOCAL-ACL

8. Verification: Show Commands

After configuration, verify tag assignment, profile state, and client policy with these show commands. These are the ones I run every time before I call a FlexConnect deployment complete (Cisco Systems, “Understand FlexConnect on Catalyst 9800”).

! Verify AP tag assignments
show ap name <AP-NAME> config general | include Tag

! Detailed view of a policy tag and its WLAN-policy bindings
show wireless tag policy detailed <POLICY-TAG-NAME>

! Detailed view of the site tag, confirm Flex profile is bound
show wireless tag site detailed <SITE-TAG-NAME>

! Verify the policy profile switching mode
show wireless profile policy detailed <POLICY-PROFILE-NAME>

! Check AP Flex mode and VLAN mappings pushed to the AP
show ap name <AP-NAME> flex

! Verify a connected client's policy, confirm local switching
show wireless client detail mac-address <CLIENT-MAC>

In the show wireless client detail output, look for the Central Switch field. It should read No for a locally switched client. If it reads Yes, your policy profile is still set to central switching or the correct policy tag is not bound to that AP.

Also check the VLAN field in the client detail output. It should match the VLAN you defined in the Flex profile for that SSID, not a WLC-side VLAN. If the VLAN looks right but DHCP is failing, go back to the access switch and verify the trunk allowed list on the AP switchport.

Systematic Verification Order

When troubleshooting FlexConnect issues, check in this order: (1) site tag has the Flex profile bound and local-site set, (2) AP is actually operating in FlexConnect mode, (3) policy tag has the correct WLAN-to-policy binding, (4) policy profile has local switching enabled, (5) AP switchport trunks the correct VLANs, (6) DHCP is reachable locally on that VLAN. Jumping straight to packet captures without verifying tag/profile state wastes time.

Works Cited

  1. Cisco Systems. “Understand FlexConnect on Catalyst 9800 Wireless Controller.” Cisco Configuration Guide, IOS-XE 17.9.x, Cisco, 22 May 2024.

Leave a Reply

Your email address will not be published. Required fields are marked *