Bên Trong Thẻ IEEE 802.1Q – Vì Sao Một Đường Trunk Có Thể Mang Hàng Ngàn VLAN?
Khi kết nối hai switch với nhau, một câu hỏi rất tự nhiên được đặt ra là:
Làm sao switch biết một frame thuộc VLAN nào khi chỉ có một sợi cáp vật lý duy nhất kết nối giữa hai switch?
Câu trả lời nằm ở IEEE 802.1Q (802.1Q Tagging). Đây là cơ chế cho phép một liên kết vật lý duy nhất (trunk link) có thể mang lưu lượng của hàng nghìn VLAN khác nhau mà vẫn đảm bảo sự tách biệt hoàn toàn giữa chúng.
IEEE 802.1Q là gì?
Cisco Catalyst Switch sử dụng chuẩn IEEE 802.1Q để hỗ trợ VLAN Trunking.
Khi một switch gửi Ethernet frame qua một trunk link, nó phải cho switch ở đầu bên kia biết:
Để thực hiện điều đó, switch sẽ chèn thêm một 802.1Q Tag dài 4 byte vào bên trong Ethernet frame.
802.1Q Tag được chèn vào giữa:
Destination MAC | Source MAC | Type/Length
Sau khi gắn thẻ:
Destination MAC | Source MAC | 802.1Q Tag | Type/Length
Do Ethernet frame đã bị thay đổi, switch phải tính toán lại:
để đảm bảo tính toàn vẹn dữ liệu.
Quá trình hoạt động của 802.1Q
Bước 1: Frame đi vào switch
Ví dụ:
PC thuộc VLAN 20 gửi frame đến switch.
Switch biết:
Port Gi1/0/10 → VLAN 20
Frame ban đầu:
Dst MAC | Src MAC | Payload | FCS
Bước 2: Frame đi qua Trunk
Switch thêm:
802.1Q Tag (4 bytes)
Frame trở thành:
Dst MAC
Src MAC
802.1Q Tag
Payload
FCS mới
Tag này mang thông tin:
Đây là frame của VLAN 20
Bước 3: Switch bên kia nhận frame
Switch nhận trunk frame:
Người dùng cuối hoàn toàn không nhìn thấy VLAN tag này.
Bên trong 802.1Q Tag có gì?
802.1Q Tag có kích thước:
4 Bytes = 32 bits
Nó bao gồm các trường sau.
1. TPID (Tag Protocol Identifier)
Kích thước:
16 bits
Giá trị:
0x8100
Ý nghĩa:
Cho switch biết:
Nếu switch nhìn thấy:
0x8100
nó hiểu ngay rằng cần đọc tiếp thông tin VLAN bên trong tag.
2. Priority (PCP – Priority Code Point)
Kích thước:
3 bits
Cho phép:
2³ = 8 mức ưu tiên
(0-7)
Trường này được sử dụng trong:
IEEE 802.1p QoS
Ví dụ:
Ví dụ thực tế:
Cuộc gọi VoIP đi qua trunk.
Switch có thể đánh dấu:
Priority = 5
để đảm bảo:
Đây là lý do vì sao voice traffic thường có chất lượng tốt ngay cả khi mạng đang bận.
3. CFI (Canonical Format Identifier)
Kích thước:
1 bit
Trường này được sử dụng để tương thích với:
Ngày nay, Token Ring gần như đã biến mất nên bit này hầu như không còn được sử dụng trong các mạng hiện đại.
Trong chuẩn mới, bit này thường được gọi là:
DEI (Drop Eligible Indicator)
và có thể được dùng trong các cơ chế QoS để chỉ ra gói tin có thể bị loại bỏ khi xảy ra congestion.
4. VLAN Identifier (VID)
Kích thước:
12 bits
Cho phép:
2¹² = 4096 giá trị
Tuy nhiên:
Do đó số VLAN có thể sử dụng:
4094 VLAN
(VLAN 1 – VLAN 4094)
Ví dụ:
VID = 10 → VLAN 10
VID = 20 → VLAN 20
VID = 100 → VLAN 100
Chính trường này cho phép một trunk có thể mang đồng thời:
trên cùng một đường cáp vật lý.
Native VLAN là gì?
Trên trunk port, một VLAN được chỉ định là:
Native VLAN
Các frame thuộc VLAN này:
không được gắn tag (untagged).
Mặc định:
Native VLAN = VLAN 1
Ví dụ: VLAN 10
Frame có tag
VID=10 VLAN 20
Frame có tag
VID=20 VLAN 1 (Native VLAN)
Frame không có tag
Switch nhận frame untagged như thế nào?
Khi switch nhận được một frame không có tag trên trunk:
Nó sẽ tự động giả định:
Frame thuộc Native VLAN
Ví dụ:
Switch A Native VLAN = 1
Switch B Native VLAN = 1
Frame untagged:
→ VLAN 1
Nguy cơ Native VLAN Mismatch
Ví dụ: Switch A
Native VLAN = 1 Switch B
Native VLAN = 20
Switch A gửi:
Frame untagged
Switch B hiểu:
Frame thuộc VLAN 20
Kết quả:
Cisco sẽ cảnh báo:
%CDP-4-NATIVE_VLAN_MISMATCH
Vì sao nên đổi Native VLAN?
IEEE 802.1Q giữ lại Native VLAN để tương thích với các hệ thống cũ (legacy LAN) vốn sử dụng nhiều frame untagged.
Tuy nhiên trong môi trường hiện đại, best practice là: Không sử dụng VLAN 1 cho Native VLAN
Ví dụ:
VLAN 999
Best Practice trong doanh nghiệp
Tạo VLAN riêng cho Native VLAN
vlan 999
name NATIVE-VLAN
Đổi Native VLAN trên trunk
interface GigabitEthernet1/0/1
switchport mode trunk
switchport trunk native vlan 999
Không gán user vào VLAN 999
Native VLAN chỉ dành cho:
Không dùng cho:
Bật Native VLAN Tagging
Một số nền tảng Cisco hỗ trợ:
vlan dot1q tag native
Lệnh này buộc:
Ngay cả Native VLAN cũng phải được gắn tag.
Kết quả:
Liên hệ thực tế
Giả sử doanh nghiệp có:
Tất cả các VLAN đều đi chung một đường trunk giữa hai switch.
802.1Q Tag đảm bảo:
Engineering ↔ Engineering
HR ↔ HR
Finance ↔ Finance
mà không bị lẫn lưu lượng.
Nếu Native VLAN cấu hình sai, frame untagged có thể đi nhầm VLAN, dẫn đến:
Kết luận
IEEE 802.1Q là nền tảng của VLAN Trunking trong mạng doanh nghiệp hiện đại. Bằng cách chèn thêm 4-byte tag chứa TPID, Priority, CFI/DEI và VLAN ID, switch có thể vận chuyển lưu lượng của hàng nghìn VLAN trên cùng một liên kết vật lý mà vẫn duy trì sự phân tách hoàn toàn giữa các broadcast domain. Hiểu rõ cách hoạt động của 802.1Q Tag và Native VLAN không chỉ giúp bạn cấu hình trunk chính xác mà còn giúp thiết kế hệ thống mạng an toàn hơn, tránh traffic leakage, native VLAN mismatch và các cuộc tấn công như VLAN Hopping. Đây là kiến thức nền tảng mà mọi kỹ sư CCNA, CCNP và CCIE đều phải nắm vững khi triển khai mạng doanh nghiệp thực tế.
Khi kết nối hai switch với nhau, một câu hỏi rất tự nhiên được đặt ra là:
Làm sao switch biết một frame thuộc VLAN nào khi chỉ có một sợi cáp vật lý duy nhất kết nối giữa hai switch?
Câu trả lời nằm ở IEEE 802.1Q (802.1Q Tagging). Đây là cơ chế cho phép một liên kết vật lý duy nhất (trunk link) có thể mang lưu lượng của hàng nghìn VLAN khác nhau mà vẫn đảm bảo sự tách biệt hoàn toàn giữa chúng.
IEEE 802.1Q là gì?
Cisco Catalyst Switch sử dụng chuẩn IEEE 802.1Q để hỗ trợ VLAN Trunking.
Khi một switch gửi Ethernet frame qua một trunk link, nó phải cho switch ở đầu bên kia biết:
"Frame này thuộc VLAN nào?"
Để thực hiện điều đó, switch sẽ chèn thêm một 802.1Q Tag dài 4 byte vào bên trong Ethernet frame.
802.1Q Tag được chèn vào giữa:
Destination MAC | Source MAC | Type/Length
Sau khi gắn thẻ:
Destination MAC | Source MAC | 802.1Q Tag | Type/Length
Do Ethernet frame đã bị thay đổi, switch phải tính toán lại:
- Frame Check Sequence (FCS)
để đảm bảo tính toàn vẹn dữ liệu.
Quá trình hoạt động của 802.1Q
Bước 1: Frame đi vào switch
Ví dụ:
PC thuộc VLAN 20 gửi frame đến switch.
Switch biết:
Port Gi1/0/10 → VLAN 20
Frame ban đầu:
Dst MAC | Src MAC | Payload | FCS
Bước 2: Frame đi qua Trunk
Switch thêm:
802.1Q Tag (4 bytes)
Frame trở thành:
Dst MAC
Src MAC
802.1Q Tag
Payload
FCS mới
Tag này mang thông tin:
Đây là frame của VLAN 20
Bước 3: Switch bên kia nhận frame
Switch nhận trunk frame:
- Đọc VLAN ID trong tag
- Xác định frame thuộc VLAN nào
- Loại bỏ 802.1Q Tag
- Chuyển frame đến các port thuộc VLAN tương ứng
Người dùng cuối hoàn toàn không nhìn thấy VLAN tag này.
Bên trong 802.1Q Tag có gì?
802.1Q Tag có kích thước:
4 Bytes = 32 bits
Nó bao gồm các trường sau.
1. TPID (Tag Protocol Identifier)
Kích thước:
16 bits
Giá trị:
0x8100
Ý nghĩa:
Cho switch biết:
"Đây là Ethernet frame đã được gắn thẻ theo chuẩn IEEE 802.1Q."
Nếu switch nhìn thấy:
0x8100
nó hiểu ngay rằng cần đọc tiếp thông tin VLAN bên trong tag.
2. Priority (PCP – Priority Code Point)
Kích thước:
3 bits
Cho phép:
2³ = 8 mức ưu tiên
(0-7)
Trường này được sử dụng trong:
IEEE 802.1p QoS
Ví dụ:
| 0 | Best Effort |
| 5 | Voice |
| 6 | Video |
| 7 | Network Control |
Cuộc gọi VoIP đi qua trunk.
Switch có thể đánh dấu:
Priority = 5
để đảm bảo:
- độ trễ thấp
- jitter thấp
- ít bị drop packet
Đây là lý do vì sao voice traffic thường có chất lượng tốt ngay cả khi mạng đang bận.
3. CFI (Canonical Format Identifier)
Kích thước:
1 bit
Trường này được sử dụng để tương thích với:
- Token Ring
- Ethernet
Ngày nay, Token Ring gần như đã biến mất nên bit này hầu như không còn được sử dụng trong các mạng hiện đại.
Trong chuẩn mới, bit này thường được gọi là:
DEI (Drop Eligible Indicator)
và có thể được dùng trong các cơ chế QoS để chỉ ra gói tin có thể bị loại bỏ khi xảy ra congestion.
4. VLAN Identifier (VID)
Kích thước:
12 bits
Cho phép:
2¹² = 4096 giá trị
Tuy nhiên:
- VLAN 0: dùng cho QoS
- VLAN 4095: reserved
Do đó số VLAN có thể sử dụng:
4094 VLAN
(VLAN 1 – VLAN 4094)
Ví dụ:
VID = 10 → VLAN 10
VID = 20 → VLAN 20
VID = 100 → VLAN 100
Chính trường này cho phép một trunk có thể mang đồng thời:
- VLAN 10
- VLAN 20
- VLAN 30
- VLAN 100
- VLAN 500
- …
trên cùng một đường cáp vật lý.
Native VLAN là gì?
Trên trunk port, một VLAN được chỉ định là:
Native VLAN
Các frame thuộc VLAN này:
không được gắn tag (untagged).
Mặc định:
Native VLAN = VLAN 1
Ví dụ: VLAN 10
Frame có tag
VID=10 VLAN 20
Frame có tag
VID=20 VLAN 1 (Native VLAN)
Frame không có tag
Switch nhận frame untagged như thế nào?
Khi switch nhận được một frame không có tag trên trunk:
Nó sẽ tự động giả định:
Frame thuộc Native VLAN
Ví dụ:
Switch A Native VLAN = 1
Switch B Native VLAN = 1
Frame untagged:
→ VLAN 1
Nguy cơ Native VLAN Mismatch
Ví dụ: Switch A
Native VLAN = 1 Switch B
Native VLAN = 20
Switch A gửi:
Frame untagged
Switch B hiểu:
Frame thuộc VLAN 20
Kết quả:
- Traffic leakage
- Broadcast đi sai VLAN
- Lỗi khó phát hiện
- Nguy cơ bảo mật nghiêm trọng
Cisco sẽ cảnh báo:
%CDP-4-NATIVE_VLAN_MISMATCH
Vì sao nên đổi Native VLAN?
IEEE 802.1Q giữ lại Native VLAN để tương thích với các hệ thống cũ (legacy LAN) vốn sử dụng nhiều frame untagged.
Tuy nhiên trong môi trường hiện đại, best practice là: Không sử dụng VLAN 1 cho Native VLAN
Ví dụ:
VLAN 999
Best Practice trong doanh nghiệp
Tạo VLAN riêng cho Native VLAN
vlan 999
name NATIVE-VLAN
Đổi Native VLAN trên trunk
interface GigabitEthernet1/0/1
switchport mode trunk
switchport trunk native vlan 999
Không gán user vào VLAN 999
Native VLAN chỉ dành cho:
- protocol control traffic
- frame untagged
- mục đích quản trị
Không dùng cho:
- PC
- Server
- Printer
- IP Phone
Bật Native VLAN Tagging
Một số nền tảng Cisco hỗ trợ:
vlan dot1q tag native
Lệnh này buộc:
Ngay cả Native VLAN cũng phải được gắn tag.
Kết quả:
- Không còn frame untagged trên trunk
- Giảm nguy cơ cấu hình sai
- Tăng tính nhất quán
- Giảm khả năng bị tấn công VLAN Hopping
Liên hệ thực tế
Giả sử doanh nghiệp có:
- Engineering → VLAN 10
- HR → VLAN 20
- Finance → VLAN 30
Tất cả các VLAN đều đi chung một đường trunk giữa hai switch.
802.1Q Tag đảm bảo:
Engineering ↔ Engineering
HR ↔ HR
Finance ↔ Finance
mà không bị lẫn lưu lượng.
Nếu Native VLAN cấu hình sai, frame untagged có thể đi nhầm VLAN, dẫn đến:
- rò rỉ dữ liệu
- broadcast không mong muốn
- lỗi kết nối khó xử lý
- nguy cơ bảo mật nghiêm trọng
Kết luận
IEEE 802.1Q là nền tảng của VLAN Trunking trong mạng doanh nghiệp hiện đại. Bằng cách chèn thêm 4-byte tag chứa TPID, Priority, CFI/DEI và VLAN ID, switch có thể vận chuyển lưu lượng của hàng nghìn VLAN trên cùng một liên kết vật lý mà vẫn duy trì sự phân tách hoàn toàn giữa các broadcast domain. Hiểu rõ cách hoạt động của 802.1Q Tag và Native VLAN không chỉ giúp bạn cấu hình trunk chính xác mà còn giúp thiết kế hệ thống mạng an toàn hơn, tránh traffic leakage, native VLAN mismatch và các cuộc tấn công như VLAN Hopping. Đây là kiến thức nền tảng mà mọi kỹ sư CCNA, CCNP và CCIE đều phải nắm vững khi triển khai mạng doanh nghiệp thực tế.