Trunk (Trunk Links) và Gắn Thẻ VLAN (VLAN Tagging)
Tình huống thực tế
Bạn vừa hoàn tất việc cấu hình VLAN trên hai switch access. Mỗi phòng ban như Engineering, HR và Finance đều đã được gán vào VLAN riêng, đồng thời bạn cũng đã xác minh rằng các cổng được cấu hình chính xác.
Mọi thứ hoạt động tốt… cho đến khi bạn kết nối hai switch với nhau.
Lúc này, bạn phát hiện ra rằng:
Ví dụ:
SW1 SW2
PC1(VLAN10) PC4(VLAN10)
PC2(VLAN10) PC5(VLAN10)
Mặc dù tất cả đều thuộc VLAN 10 nhưng:
PC1 ❌ PC4
PC1 ❌ PC5
không thể giao tiếp.
Nguyên nhân là VLAN chỉ tồn tại cục bộ (locally significant) trên từng switch nếu giữa các switch chưa có cơ chế truyền thông tin VLAN.
Để giải quyết vấn đề này, chúng ta cần một phương pháp cho phép lưu lượng của nhiều VLAN đi qua kết nối giữa các switch nhưng vẫn duy trì sự cô lập (segmentation) của từng VLAN. Đây chính là vai trò của 802.1Q Trunking.
Nếu không có Trunk thì sao?
Không sử dụng trunk đồng nghĩa với việc mỗi VLAN phải có một kết nối vật lý riêng.
Ví dụ:
Có ba VLAN:
Khi đó:
SW1 ---------------- SW2 (VLAN10)
SW1 ---------------- SW2 (VLAN20)
SW1 ---------------- SW2 (VLAN30)
Cần:
Nếu có:
thì cách làm này hoàn toàn không khả thi.
VLAN Trunking
Thay vì sử dụng nhiều kết nối vật lý, chúng ta chỉ cần:
SW1 ======== Trunk ======== SW2
Một đường vật lý duy nhất có thể mang lưu lượng của:
Quá trình này được gọi là:
Trunk là gì?
Trunk là một kết nối Point-to-Point giữa hai thiết bị mạng, thường là:
được sử dụng để vận chuyển lưu lượng của nhiều VLAN trên cùng một kết nối vật lý.
Ví dụ:
Switch ===== Trunk ===== Switch
hoặc
Switch ===== Trunk ===== Router
(Router-on-a-Stick)
Access Port và Trunk Port khác nhau như thế nào?
Access Port
Chỉ thuộc về một VLAN duy nhất.
Ví dụ:
interface Fa0/1
switchport mode access
switchport access vlan 10
Fa0/1 chỉ mang:
VLAN 10
Trunk Port
Không thuộc về một VLAN cụ thể.
Nó hoạt động như một "đường cao tốc dùng chung" (shared conduit) cho nhiều VLAN.
Ví dụ:
interface Gi0/1
switchport mode trunk
Gi0/1 có thể mang:
VLAN10
VLAN20
VLAN30
VLAN100
VLAN200
...
Lưu ý
Mặc định trên Cisco Catalyst:
Ví dụ:
Switch có:
VLAN1
VLAN10
VLAN20
VLAN30
Sau khi cấu hình:
switchport mode trunk
thì tất cả các VLAN trên đều được phép đi qua trunk.
Trong thực tế, các kỹ sư CCNP/CCIE thường giới hạn VLAN được phép:
switchport trunk allowed vlan 10,20,30
để:
VLAN Tagging hoạt động như thế nào?
Khi nhiều VLAN cùng chia sẻ một đường trunk, switch phải biết frame thuộc VLAN nào.
Giải pháp là:
Tag này chứa:
VID (VLAN Identifier)
cho biết frame thuộc VLAN nào.
Switch ở đầu bên kia sẽ đọc VID này để quyết định:
Ví dụ từng bước
Bước 1 – Broadcast được tạo
Giả sử:
PC1 ----- Fa0/1 (VLAN10) ----- SW1
PC1 gửi ARP Request:
Who has 192.168.10.1?
Đây là Broadcast:
FF:FF:FF:FF:FF:FF
SW1 nhận frame tại:
Fa0/1
và biết rằng:
Fa0/1 ∈ VLAN10
Bước 2 – Gắn VLAN Tag
SW1 phải chuyển Broadcast này sang SW2.
Trước khi gửi qua trunk:
Fa0/23
SW1 chèn:
802.1Q Tag
VID = 10
Frame trở thành:
Broadcast
+
802.1Q Tag
+
VID = 10
Bước 3 – SW2 xử lý
SW2 nhận frame từ trunk:
Fa0/23
SW2 đọc:
VID = 10
và hiểu:
SW2 sau đó:
Ví dụ:
Fa0/1
Fa0/2
Không gửi đến:
VLAN20
VLAN30
Ví dụ với VLAN 20
Giả sử:
PC3 (VLAN20)
gửi Broadcast.
SW1:
Tag VID=20
↓
Send over trunk
SW2:
Read VID=20
↓
Remove tag
↓
Forward only to VLAN20 ports
Broadcast của VLAN20 sẽ không bao giờ xuất hiện trong VLAN10.
Đây chính là cơ chế duy trì:
của VLAN.
802.1Q Tag nằm ở đâu?
Ethernet Frame ban đầu:
Destination MAC
Source MAC
Type
Payload
FCS
Sau khi gắn Tag:
Destination MAC
Source MAC
802.1Q Tag
Type
Payload
FCS
Tag có kích thước:
4 bytes
bao gồm: TPID (Tag Protocol Identifier)
Giá trị:
0x8100
cho biết frame có gắn thẻ 802.1Q. TCI (Tag Control Information)
Chứa:
Trong đó:
VID dài:
12 bits
cho phép:
2^12 = 4096 VLAN
Giá trị sử dụng:
1 – 4094
Câu hỏi ôn tập
PC1 gửi Broadcast.
Broadcast chỉ được chuyển tới các PC nằm trong cùng VLAN với PC1, dù chúng ở switch nào.
Nếu theo sơ đồ:
PC1 ∈ VLAN10
PC2 ∈ VLAN10
PC7 ∈ VLAN10
thì đáp án đúng là:
✅ PC2 và PC7
Các máy:
PC4
PC5
PC6
nằm trong VLAN khác sẽ không nhận được Broadcast.
Kết luận
Trunking và VLAN Tagging là hai công nghệ nền tảng giúp mở rộng VLAN trên nhiều switch mà vẫn duy trì sự phân đoạn mạng.
802.1Q thực hiện điều này bằng cách:
Trong các doanh nghiệp lớn, nơi các phòng ban như Engineering, HR và Finance trải rộng trên nhiều tầng hoặc nhiều tòa nhà, trunking là cơ chế bắt buộc để các thiết bị cùng VLAN có thể giao tiếp với nhau mà vẫn bảo đảm tính cô lập và bảo mật của từng miền quảng bá (Broadcast Domain).
Tình huống thực tế
Bạn vừa hoàn tất việc cấu hình VLAN trên hai switch access. Mỗi phòng ban như Engineering, HR và Finance đều đã được gán vào VLAN riêng, đồng thời bạn cũng đã xác minh rằng các cổng được cấu hình chính xác.
Mọi thứ hoạt động tốt… cho đến khi bạn kết nối hai switch với nhau.
Lúc này, bạn phát hiện ra rằng:
- Các thiết bị cùng VLAN và cùng switch có thể giao tiếp với nhau.
- Nhưng các thiết bị thuộc cùng một VLAN nhưng nằm trên hai switch khác nhau lại hoàn toàn không thể liên lạc.
Ví dụ:
SW1 SW2
PC1(VLAN10) PC4(VLAN10)
PC2(VLAN10) PC5(VLAN10)
Mặc dù tất cả đều thuộc VLAN 10 nhưng:
PC1 ❌ PC4
PC1 ❌ PC5
không thể giao tiếp.
Nguyên nhân là VLAN chỉ tồn tại cục bộ (locally significant) trên từng switch nếu giữa các switch chưa có cơ chế truyền thông tin VLAN.
Để giải quyết vấn đề này, chúng ta cần một phương pháp cho phép lưu lượng của nhiều VLAN đi qua kết nối giữa các switch nhưng vẫn duy trì sự cô lập (segmentation) của từng VLAN. Đây chính là vai trò của 802.1Q Trunking.
Nếu không có Trunk thì sao?
Không sử dụng trunk đồng nghĩa với việc mỗi VLAN phải có một kết nối vật lý riêng.
Ví dụ:
Có ba VLAN:
- VLAN 10 – Engineering
- VLAN 20 – HR
- VLAN 30 – Finance
Khi đó:
SW1 ---------------- SW2 (VLAN10)
SW1 ---------------- SW2 (VLAN20)
SW1 ---------------- SW2 (VLAN30)
Cần:
- 3 dây cáp
- 3 cổng switch ở mỗi đầu
Nếu có:
- 20 VLAN
- 50 VLAN
- 100 VLAN
thì cách làm này hoàn toàn không khả thi.
VLAN Trunking
Thay vì sử dụng nhiều kết nối vật lý, chúng ta chỉ cần:
SW1 ======== Trunk ======== SW2
Một đường vật lý duy nhất có thể mang lưu lượng của:
- VLAN 10
- VLAN 20
- VLAN 30
- …
- hàng trăm VLAN khác.
Quá trình này được gọi là:
VLAN Trunking
Trunk là gì?
Trunk là một kết nối Point-to-Point giữa hai thiết bị mạng, thường là:
- Switch ↔ Switch
- Switch ↔ Router
- Switch ↔ Server có NIC hỗ trợ VLAN Tagging
- Switch ↔ Hypervisor (VMware ESXi, Hyper-V, KVM)
được sử dụng để vận chuyển lưu lượng của nhiều VLAN trên cùng một kết nối vật lý.
Ví dụ:
Switch ===== Trunk ===== Switch
hoặc
Switch ===== Trunk ===== Router
(Router-on-a-Stick)
Access Port và Trunk Port khác nhau như thế nào?
Access Port
Chỉ thuộc về một VLAN duy nhất.
Ví dụ:
interface Fa0/1
switchport mode access
switchport access vlan 10
Fa0/1 chỉ mang:
VLAN 10
Trunk Port
Không thuộc về một VLAN cụ thể.
Nó hoạt động như một "đường cao tốc dùng chung" (shared conduit) cho nhiều VLAN.
Ví dụ:
interface Gi0/1
switchport mode trunk
Gi0/1 có thể mang:
VLAN10
VLAN20
VLAN30
VLAN100
VLAN200
...
Lưu ý
Mặc định trên Cisco Catalyst:
Trunk sẽ mang tất cả các VLAN đã được cấu hình trên switch.
Ví dụ:
Switch có:
VLAN1
VLAN10
VLAN20
VLAN30
Sau khi cấu hình:
switchport mode trunk
thì tất cả các VLAN trên đều được phép đi qua trunk.
Trong thực tế, các kỹ sư CCNP/CCIE thường giới hạn VLAN được phép:
switchport trunk allowed vlan 10,20,30
để:
- tăng bảo mật;
- giảm Broadcast không cần thiết;
- giảm khả năng VLAN Hopping Attack;
- giảm kích thước STP domain.
VLAN Tagging hoạt động như thế nào?
Khi nhiều VLAN cùng chia sẻ một đường trunk, switch phải biết frame thuộc VLAN nào.
Giải pháp là:
Gắn thêm một VLAN Tag vào Ethernet Frame.
Tag này chứa:
VID (VLAN Identifier)
cho biết frame thuộc VLAN nào.
Switch ở đầu bên kia sẽ đọc VID này để quyết định:
- Frame thuộc VLAN nào.
- Forward đến những cổng nào.
Ví dụ từng bước
Bước 1 – Broadcast được tạo
Giả sử:
PC1 ----- Fa0/1 (VLAN10) ----- SW1
PC1 gửi ARP Request:
Who has 192.168.10.1?
Đây là Broadcast:
FF:FF:FF:FF:FF:FF
SW1 nhận frame tại:
Fa0/1
và biết rằng:
Fa0/1 ∈ VLAN10
Bước 2 – Gắn VLAN Tag
SW1 phải chuyển Broadcast này sang SW2.
Trước khi gửi qua trunk:
Fa0/23
SW1 chèn:
802.1Q Tag
VID = 10
Frame trở thành:
Broadcast
+
802.1Q Tag
+
VID = 10
Bước 3 – SW2 xử lý
SW2 nhận frame từ trunk:
Fa0/23
SW2 đọc:
VID = 10
và hiểu:
Đây là lưu lượng của VLAN 10.
SW2 sau đó:
- Loại bỏ VLAN Tag (de-tagging)
- Chỉ Forward tới các cổng thuộc VLAN10.
Ví dụ:
Fa0/1
Fa0/2
Không gửi đến:
VLAN20
VLAN30
Ví dụ với VLAN 20
Giả sử:
PC3 (VLAN20)
gửi Broadcast.
SW1:
Tag VID=20
↓
Send over trunk
SW2:
Read VID=20
↓
Remove tag
↓
Forward only to VLAN20 ports
Broadcast của VLAN20 sẽ không bao giờ xuất hiện trong VLAN10.
Đây chính là cơ chế duy trì:
Broadcast Domain Isolation
của VLAN.
802.1Q Tag nằm ở đâu?
Ethernet Frame ban đầu:
Destination MAC
Source MAC
Type
Payload
FCS
Sau khi gắn Tag:
Destination MAC
Source MAC
802.1Q Tag
Type
Payload
FCS
Tag có kích thước:
4 bytes
bao gồm: TPID (Tag Protocol Identifier)
Giá trị:
0x8100
cho biết frame có gắn thẻ 802.1Q. TCI (Tag Control Information)
Chứa:
- PCP (Priority Code Point)
- DEI (Drop Eligible Indicator)
- VLAN ID (VID)
Trong đó:
VID dài:
12 bits
cho phép:
2^12 = 4096 VLAN
Giá trị sử dụng:
1 – 4094
Câu hỏi ôn tập
PC1 gửi Broadcast.
Broadcast chỉ được chuyển tới các PC nằm trong cùng VLAN với PC1, dù chúng ở switch nào.
Nếu theo sơ đồ:
PC1 ∈ VLAN10
PC2 ∈ VLAN10
PC7 ∈ VLAN10
thì đáp án đúng là:
✅ PC2 và PC7
Các máy:
PC4
PC5
PC6
nằm trong VLAN khác sẽ không nhận được Broadcast.
Kết luận
Trunking và VLAN Tagging là hai công nghệ nền tảng giúp mở rộng VLAN trên nhiều switch mà vẫn duy trì sự phân đoạn mạng.
802.1Q thực hiện điều này bằng cách:
- Gắn VLAN ID vào Ethernet Frame.
- Cho phép nhiều VLAN cùng chia sẻ một kết nối vật lý.
- Duy trì Broadcast Domain riêng biệt cho từng VLAN.
- Giảm số lượng cổng và cáp cần triển khai.
- Giúp hệ thống mạng doanh nghiệp có khả năng mở rộng cao.
Trong các doanh nghiệp lớn, nơi các phòng ban như Engineering, HR và Finance trải rộng trên nhiều tầng hoặc nhiều tòa nhà, trunking là cơ chế bắt buộc để các thiết bị cùng VLAN có thể giao tiếp với nhau mà vẫn bảo đảm tính cô lập và bảo mật của từng miền quảng bá (Broadcast Domain).