802.1Q Encapsulation – Cơ chế gắn thẻ VLAN hoạt động như thế nào?
Tại sao switch có thể biết một frame thuộc VLAN nào khi đi qua đường trunk? Đây là một câu hỏi tưởng đơn giản nhưng lại mở ra một khái niệm cực kỳ quan trọng trong switching: 802.1Q VLAN tagging. Nếu hiểu sâu phần này, bạn sẽ hiểu nền tảng của trunking, inter-VLAN communication, native VLAN, thậm chí là nhiều chủ đề nâng cao trong CCNP/CCIE.
Ethernet Frame gốc không mang thông tin VLAN
Một Ethernet frame tiêu chuẩn bao gồm các trường quen thuộc:
Điểm quan trọng là:
Frame Ethernet bình thường không có trường nào chỉ ra nó thuộc VLAN nào.
Điều này không thành vấn đề khi frame chỉ ở trong một switch và cổng access đã gắn với VLAN cụ thể. Nhưng khi traffic của nhiều VLAN cần đi giữa hai switch qua cùng một đường link vật lý, ta gặp bài toán:
Làm sao phân biệt frame của VLAN 10, VLAN 20 hay VLAN 30 cùng đi chung trên một trunk link?
Đó là lý do 802.1Q ra đời.
Trunk là gì?
Một trunk link là kết nối cho phép mang traffic của nhiều VLAN qua cùng một đường truyền.
Ví dụ:
Hai switch nối với nhau bằng trunk sẽ phải chuyển toàn bộ traffic của cả ba VLAN qua cùng một physical interface.
Không thể dùng frame Ethernet gốc để làm việc này.
Cần có tagging mechanism.
802.1Q làm gì?
802.1Q chèn thêm 4 byte tag vào Ethernet frame.
Frame lúc này trở thành:
Tag này được chèn giữa Source MAC và EtherType.
Đây gọi là encapsulation 802.1Q.
Cấu trúc 4-byte VLAN Tag
1. TPID – Tag Protocol Identifier (16 bits)
Giá trị mặc định:
0x8100
Nó báo cho switch:
"Đây là frame có gắn VLAN tag."
2. TCI – Tag Control Information (16 bits)
TCI chia thành ba phần: Priority (3 bits)
Đây là trường 802.1p CoS dùng QoS Layer 2.
Giá trị từ 0–7.
Ví dụ:
Đây là lý do VoIP có thể được ưu tiên ngay ở Layer 2.
DEI / CFI (1 bit)
Historically gọi là:
Hiện thường dùng là:
Dùng cho QoS/drop precedence.
VLAN ID (12 bits)
Đây là phần quan trọng nhất.
12 bits cho phép:
2¹² = 4096 giá trị
VLAN usable:
1–4094
Ví dụ:
VLAN 10 được ghi vào đây.
Switch ở đầu nhận đọc trường này và biết frame thuộc VLAN nào.
Quá trình hoạt động
Giả sử PC ở VLAN 20 gửi frame.
Switch đầu tiên:
Frame đi qua trunk.
Switch phía bên kia:
Đó gọi là:
Vì sao Ethernet frame không bị lỗi kích thước?
Ethernet chuẩn:
1518 bytes
802.1Q thêm 4 bytes:
1522 bytes
Switch hỗ trợ "baby giant frames" xử lý việc này.
Đây là điều nhiều người mới học hay bỏ qua.
Hai giao thức trunk từng tồn tại
1. 802.1Q
Chuẩn IEEE mở.
Hầu như tất cả vendor hỗ trợ:
Đây là chuẩn hiện nay.
2. ISL (Inter-Switch Link)
Cisco proprietary.
Khác với 802.1Q chèn 4 bytes vào frame, ISL encapsulate cả frame trong header mới.
Overhead lớn hơn.
Đã gần như biến mất.
CCIE lab hiện đại chủ yếu dùng 802.1Q.
Native VLAN – ngoại lệ đặc biệt
Một điểm quan trọng:
Traffic thuộc Native VLAN mặc định được gửi không gắn tag (untagged).
Mặc định Cisco:
Native VLAN = VLAN 1
Ví dụ:
interface g0/1
switchport trunk encapsulation dot1q
switchport mode trunk
switchport trunk native vlan 99
Lúc này VLAN 99 đi untagged.
Đây là nền tảng để hiểu:
Các chủ đề rất hay trong security.
Ví dụ thực tế dễ hình dung
Hãy tưởng tượng trunk như một xe tải chở hàng.
Nếu không dán nhãn, bên nhận không biết hàng thuộc nhóm nào.
802.1Q tag chính là nhãn dán trên từng kiện hàng.
Đơn giản vậy thôi.
Kiểm tra trên Cisco
Xem trunk:
show interfaces trunk
Kiểm tra encapsulation:
show interface g0/1 switchport
Có thể thấy:
Điểm CCNA hay hỏi
Frame VLAN đi qua trunk có luôn tagged không?
Không.
Native VLAN mặc định untagged.
Đây là câu dễ gài bẫy.
Góc nhìn CCIE
Hiểu 802.1Q không chỉ để cấu hình trunk.
Nó liên quan trực tiếp đến:
Một khái niệm nhỏ nhưng đụng đến rất nhiều thứ lớn.
Kết luận
802.1Q giải quyết một vấn đề cực cơ bản nhưng cực quan trọng:
Làm sao nhiều VLAN có thể đi chung trên một physical link mà không lẫn với nhau?
Câu trả lời là:
Thêm VLAN tag vào Ethernet frame.
Chỉ 4 byte nhỏ, nhưng là nền tảng của switching hiện đại.
Tại sao switch có thể biết một frame thuộc VLAN nào khi đi qua đường trunk? Đây là một câu hỏi tưởng đơn giản nhưng lại mở ra một khái niệm cực kỳ quan trọng trong switching: 802.1Q VLAN tagging. Nếu hiểu sâu phần này, bạn sẽ hiểu nền tảng của trunking, inter-VLAN communication, native VLAN, thậm chí là nhiều chủ đề nâng cao trong CCNP/CCIE.
Ethernet Frame gốc không mang thông tin VLAN
Một Ethernet frame tiêu chuẩn bao gồm các trường quen thuộc:
- Preamble
- Start Frame Delimiter (SFD)
- Destination MAC
- Source MAC
- Length/Type
- Data
- FCS (Frame Check Sequence)
Điểm quan trọng là:
Frame Ethernet bình thường không có trường nào chỉ ra nó thuộc VLAN nào.
Điều này không thành vấn đề khi frame chỉ ở trong một switch và cổng access đã gắn với VLAN cụ thể. Nhưng khi traffic của nhiều VLAN cần đi giữa hai switch qua cùng một đường link vật lý, ta gặp bài toán:
Làm sao phân biệt frame của VLAN 10, VLAN 20 hay VLAN 30 cùng đi chung trên một trunk link?
Đó là lý do 802.1Q ra đời.
Trunk là gì?
Một trunk link là kết nối cho phép mang traffic của nhiều VLAN qua cùng một đường truyền.
Ví dụ:
- VLAN 10 cho phòng Kế toán
- VLAN 20 cho Kỹ thuật
- VLAN 30 cho VoIP
Hai switch nối với nhau bằng trunk sẽ phải chuyển toàn bộ traffic của cả ba VLAN qua cùng một physical interface.
Không thể dùng frame Ethernet gốc để làm việc này.
Cần có tagging mechanism.
802.1Q làm gì?
802.1Q chèn thêm 4 byte tag vào Ethernet frame.
Frame lúc này trở thành:
- Destination MAC
- Source MAC
- 802.1Q Tag (4 bytes)
- Type/Length
- Data
- FCS
Tag này được chèn giữa Source MAC và EtherType.
Đây gọi là encapsulation 802.1Q.
Cấu trúc 4-byte VLAN Tag
1. TPID – Tag Protocol Identifier (16 bits)
Giá trị mặc định:
0x8100
Nó báo cho switch:
"Đây là frame có gắn VLAN tag."
2. TCI – Tag Control Information (16 bits)
TCI chia thành ba phần: Priority (3 bits)
Đây là trường 802.1p CoS dùng QoS Layer 2.
Giá trị từ 0–7.
Ví dụ:
- Voice traffic có thể đánh priority 5
- Video có thể priority 4
- Data bình thường priority 0
Đây là lý do VoIP có thể được ưu tiên ngay ở Layer 2.
DEI / CFI (1 bit)
Historically gọi là:
- CFI (Canonical Format Indicator)
Hiện thường dùng là:
- DEI (Drop Eligible Indicator)
Dùng cho QoS/drop precedence.
VLAN ID (12 bits)
Đây là phần quan trọng nhất.
12 bits cho phép:
2¹² = 4096 giá trị
- VLAN 0 reserved
- VLAN 4095 reserved
VLAN usable:
1–4094
Ví dụ:
VLAN 10 được ghi vào đây.
Switch ở đầu nhận đọc trường này và biết frame thuộc VLAN nào.
Quá trình hoạt động
Giả sử PC ở VLAN 20 gửi frame.
Switch đầu tiên:
- Nhận frame từ access port VLAN 20
- Khi đẩy ra trunk, thêm tag VLAN 20
Frame đi qua trunk.
Switch phía bên kia:
- Đọc tag VLAN ID=20
- Biết frame thuộc VLAN 20
- Gỡ tag (de-tagging) khi chuyển ra access port.
Đó gọi là:
- Tagging
- Forwarding
- Untagging
Vì sao Ethernet frame không bị lỗi kích thước?
Ethernet chuẩn:
1518 bytes
802.1Q thêm 4 bytes:
1522 bytes
Switch hỗ trợ "baby giant frames" xử lý việc này.
Đây là điều nhiều người mới học hay bỏ qua.
Hai giao thức trunk từng tồn tại
1. 802.1Q
Chuẩn IEEE mở.
Hầu như tất cả vendor hỗ trợ:
- Cisco
- Juniper
- Arista
- Huawei
Đây là chuẩn hiện nay.
2. ISL (Inter-Switch Link)
Cisco proprietary.
Khác với 802.1Q chèn 4 bytes vào frame, ISL encapsulate cả frame trong header mới.
Overhead lớn hơn.
Đã gần như biến mất.
CCIE lab hiện đại chủ yếu dùng 802.1Q.
Native VLAN – ngoại lệ đặc biệt
Một điểm quan trọng:
Traffic thuộc Native VLAN mặc định được gửi không gắn tag (untagged).
Mặc định Cisco:
Native VLAN = VLAN 1
Ví dụ:
interface g0/1
switchport trunk encapsulation dot1q
switchport mode trunk
switchport trunk native vlan 99
Lúc này VLAN 99 đi untagged.
Đây là nền tảng để hiểu:
- Native VLAN mismatch
- VLAN hopping attacks
- Double tagging attacks
Các chủ đề rất hay trong security.
Ví dụ thực tế dễ hình dung
Hãy tưởng tượng trunk như một xe tải chở hàng.
- Gói hàng màu đỏ = VLAN 10
- Gói xanh = VLAN 20
- Gói vàng = VLAN 30
Nếu không dán nhãn, bên nhận không biết hàng thuộc nhóm nào.
802.1Q tag chính là nhãn dán trên từng kiện hàng.
Đơn giản vậy thôi.
Kiểm tra trên Cisco
Xem trunk:
show interfaces trunk
Kiểm tra encapsulation:
show interface g0/1 switchport
Có thể thấy:
- Operational Mode: trunk
- Encapsulation: dot1q
- Native VLAN
- Allowed VLANs
Điểm CCNA hay hỏi
Frame VLAN đi qua trunk có luôn tagged không?
Không.
Native VLAN mặc định untagged.
Đây là câu dễ gài bẫy.
Góc nhìn CCIE
Hiểu 802.1Q không chỉ để cấu hình trunk.
Nó liên quan trực tiếp đến:
- Router-on-a-Stick subinterfaces
- QinQ (802.1ad)
- EVPN/VXLAN VLAN-to-VNI mapping
- MPLS EVC service delimiting
- Campus segmentation design
Một khái niệm nhỏ nhưng đụng đến rất nhiều thứ lớn.
Kết luận
802.1Q giải quyết một vấn đề cực cơ bản nhưng cực quan trọng:
Làm sao nhiều VLAN có thể đi chung trên một physical link mà không lẫn với nhau?
Câu trả lời là:
Thêm VLAN tag vào Ethernet frame.
Chỉ 4 byte nhỏ, nhưng là nền tảng của switching hiện đại.