## VLAN Creation When you create a VLAN, it gets added to either: - the **VLAN database** (`vlan.dat` in bootflash) - or the **running-config** (for extended VLANs) ### Normal VLANs (1–1005) - Stored in `vlan.dat` - Not saved in `running-config` - Persist through reload if `vlan.dat` is present ### Extended VLANs (1006–4094) - Stored in `running-config` - Saved to **NVRAM** on `write mem` - Used for **internal VLANs**, routed ports, etc. ```none (config)# vlan 10 ``` ### What Happens Internally? When a VLAN is created, the switch instantiates: - A [[Spanning Tree Protocol (STP)]] instance. - An entry in the [[MAC Address Table]]. You can verify with: ```none show spanning-tree vlan 10 show mac address-table vlan 10 ``` --- ## Access vs Trunk Ports ### Access Ports ```none interface FastEthernet1/0/2 switchport mode access switchport access vlan 30 ``` - Forwards only VLAN 30 - Drops all tagged traffic (except [[CDP & LLDP]]) - Can use voice VLAN if configured ### Trunk Ports ```none interface GigabitEthernet1/0/24 switchport trunk encapsulation dot1q switchport mode trunk switchport trunk native vlan 99 switchport trunk allowed vlan 1-50 ``` - Carries **multiple VLANs** - Tags all VLANs **except** the **native VLAN** (in this case, 99) - When untagged traffic is received on a trunk port, it is considered to be a part of the native VLAN (defaults to 1). - Ideal for switch uplinks and routed links **Tune trunks with the following:** ``` interface GigabitEthernet1/0/24 switchport trunk allowed vlan allowed 1-50 switchport trunk allowed vlan remove 1-5 switchport trunk allowed vlan add 1-5 ``` --- ## Internal VLANs If you apply `no switchport` on a Layer 2 interface, the switch **allocates an internal VLAN** behind the scenes. This is required to bind Layer 3 interfaces to the switching backend. ```none interface Ethernet1/1 no switchport ``` This **allocates a VLAN** from the **extended range (1006–4094)**. By default, internal VLANs are assigned **in ascending order** starting at **1006**, but you can reverse it: ```none vlan internal allocation policy descending ``` **Verify with:** ```none show running-config | include internal show vlan internal usage VLAN Usage ---- -------------------- 1006 GigabitEthernet0/0 4094 GigabitEthernet0/1 ``` > Note: In this example, `descending` mode was applied after some internal VLANs were already allocated, which is why you see both high and low VLANs being used. --- ## Voice VLANs Voice VLANs help IP phones (like Cisco VoIP phones) get placed into the correct VLAN using **CDP** advertisements. These phones often have built-in switches, allowing a PC to daisy-chain through them. There are multiple ways to design this, depending on how **voice and data** traffic should behave. ### Option 1: Voice and Data on Same VLAN ```none interface FastEthernet1/0/1 switchport mode access switchport access vlan 10 ``` Everything (PC + phone) goes on VLAN 10 — no voice isolation or QoS differentiation. --- ### Option 2: Separate Voice and Data VLANs ```none interface FastEthernet1/0/1 switchport mode access switchport access vlan 10 switchport voice vlan 20 ``` - PC is untagged on VLAN 10 - Phone tags voice frames as VLAN 20 Clean separation, better for QoS and security. --- ### Option 3: Same VLAN, But QoS via Dot1p Let’s say you want PC and phone on the same VLAN but **still prioritize voice** traffic. ```none interface FastEthernet1/0/1 switchport mode access switchport access vlan 10 switchport voice vlan dot1p ``` In this case: - PC sends **untagged** frames on VLAN 10 - Phone sends **tagged frames** with VLAN ID **0**, but with CoS = 5 - Switch reclassifies VLAN 0 → VLAN 10 internally, but **preserves QoS** --- ## Commands Reference | Action | Command | | ---------------------------------- | --------------------------------------------------------- | | Create VLAN | `vlan [ID]` | | Assign VLAN to Access Port | `switchport access vlan [ID]` | | Enable Voice VLAN | `switchport voice vlan [ID]` | | Enable Dot1p Voice | `switchport voice vlan dot1p` | | Set Internal VLAN Allocation Order | `vlan internal allocation policy [ascending\|descending]` | | Make Port Routed | `no switchport` | | Show Internal VLAN Usage | `show vlan internal usage` | | Show VLAN Config | `show vlan brief` |