Khắc phục sự cố Trunk trong mạng chuyển mạch Cisco
Trong hệ thống mạng doanh nghiệp, trunk link là một thành phần cực kỳ quan trọng vì nó cho phép nhiều VLAN cùng truyền qua một liên kết vật lý duy nhất. Nếu access port giống như một con đường chỉ phục vụ cho một khu dân cư duy nhất, thì trunk giống như một tuyến cao tốc đa làn, nơi traffic của nhiều VLAN cùng chia sẻ một đường truyền nhưng vẫn được phân biệt rõ ràng.
Trunk thường xuất hiện trong các kết nối giữa switch với switch, switch với router trong mô hình Router-on-a-Stick, hoặc switch với các máy chủ/hypervisor cần phục vụ nhiều VLAN. Khi trunk gặp sự cố, hậu quả thường không chỉ ảnh hưởng đến một host đơn lẻ mà có thể làm gián đoạn toàn bộ giao tiếp giữa các VLAN hoặc giữa các phân đoạn mạng khác nhau. Vì vậy, hiểu rõ cách troubleshooting trunk là kỹ năng rất quan trọng đối với kỹ sư mạng.
Trunk hoạt động như thế nào?
Thông thường, một access port chỉ thuộc về một VLAN duy nhất. Ví dụ, nếu một PC được cắm vào cổng access thuộc VLAN 100, toàn bộ traffic đi qua cổng đó đều được coi là traffic của VLAN 100.
Nhưng trong môi trường thực tế, giữa hai switch có thể cần truyền traffic của:
Nếu mỗi VLAN dùng một dây vật lý riêng thì hệ thống sẽ nhanh chóng trở nên cồng kềnh và lãng phí tài nguyên. Đó là lý do trunk ra đời.
Trunk sử dụng cơ chế tagging để đánh dấu VLAN ID cho từng frame Ethernet, từ đó cho phép nhiều VLAN cùng chia sẻ một liên kết vật lý.
Ví dụ:
SW1 -------- trunk -------- SW2
Nếu PC trong VLAN 100 gửi frame:
Cơ chế này nghe có vẻ đơn giản, nhưng thực tế có nhiều lỗi cấu hình khiến trunk không hình thành hoặc hoạt động sai.
Encapsulation Mismatch
Một trong những lỗi kinh điển là encapsulation mismatch.
Cisco Catalyst hỗ trợ hai kiểu trunk encapsulation:
802.1Q
Đây là chuẩn IEEE phổ biến nhất hiện nay. Cơ chế của nó là chèn thêm một VLAN tag dài 4 byte vào frame Ethernet.
ISL (Inter-Switch Link)
Đây là giao thức độc quyền của Cisco. Khác với 802.1Q chỉ thêm tag, ISL encapsulate toàn bộ frame Ethernet, tạo thêm overhead khoảng 30 byte.
Điểm quan trọng nhất là:
Nếu một đầu dùng:
dot1q
và đầu kia dùng:
isl
thì trunk sẽ không hình thành.
Kiểm tra bằng lệnh:
show interfaces gi0/2 switchport
Ví dụ:
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: dot1q
Nếu switch bên kia hiển thị:
Administrative Trunking Encapsulation: isl
Operational Trunking Encapsulation: isl
thì đây chính là nguyên nhân.
Bạn cũng có thể xác minh nhanh bằng:
show interfaces trunk
Ví dụ:
SW1:
Gi0/2 on 802.1q trunking
và:
SW2:
Gi0/1 on isl trunking
Rõ ràng hai bên không cùng "ngôn ngữ".
Incompatible Trunking Modes
Không phải cứ hai switch cắm vào nhau là trunk tự hình thành.
Cisco hỗ trợ nhiều chế độ trunk khác nhau.
Nếu cổng được cấu hình:
switchport mode access
thì cổng đó sẽ không bao giờ trở thành trunk.
Nếu cấu hình:
switchport mode trunk
thì cổng luôn hoạt động như trunk.
Ngoài ra còn có hai chế độ động:
dynamic desirable
và
dynamic auto
Dynamic desirable là chế độ chủ động. Nó liên tục gửi DTP để yêu cầu hình thành trunk.
Dynamic auto thì thụ động hơn. Nó chỉ chờ nếu phía bên kia chủ động đề nghị.
Đây là điểm mà nhiều người nhầm.
Nếu cả hai đầu đều:
dynamic auto
thì trunk sẽ không bao giờ hình thành.
Lý do rất đơn giản:
Hai bên đều đang chờ nhau nói trước.
Không ai chủ động cả.
Trong khi đó:
dynamic desirable + dynamic auto
sẽ hoạt động bình thường.
Kiểm tra:
show interfaces gi0/2 switchport
Nếu thấy:
Administrative Mode: dynamic auto
ở cả hai phía, nguyên nhân đã rõ.
VTP Domain Name Mismatch
Một lỗi khác thường bị bỏ qua là VTP domain mismatch.
Nếu trunk đang sử dụng DTP để negotiate, hai switch phải thuộc cùng VTP domain.
Ví dụ:
SW1:
VTP domain = VNPRO
SW2:
VTP domain = LAB
Lúc này syslog có thể báo:
%DTP-5-DOMAINMISMATCH:
Unable to perform trunk negotiation
Điều này có nghĩa:
DTP từ chối tạo trunk vì domain không khớp.
Kiểm tra:
show vtp status
Native VLAN Mismatch
Lỗi này đặc biệt quan trọng với trunk 802.1Q.
Khái niệm native VLAN tồn tại vì trong 802.1Q, traffic thuộc native VLAN sẽ đi không gắn tag.
Mặc định:
VLAN 1
Nhưng trong nhiều hệ thống, native VLAN được đổi sang VLAN khác để tăng bảo mật.
Ví dụ:
SW1:
switchport trunk native vlan 1
SW2:
switchport trunk native vlan 99
Trunk vẫn có thể up.
Nhưng traffic sẽ bị xử lý sai.
Frame untagged từ một phía sẽ bị đầu kia gán vào native VLAN của nó.
Kết quả:
Nếu CDP bật, bạn sẽ thấy:
%CDP-4-NATIVE_VLAN_MISMATCH
Kiểm tra:
show interfaces trunk
Ví dụ:
SW1:
Native vlan 1SW2:
Native vlan 99
Mismatch rõ ràng.
Allowed VLANs
Theo mặc định, trunk cho phép tất cả VLAN:
1-4094
Tuy nhiên trong môi trường doanh nghiệp, admin thường giới hạn để tăng bảo mật và giảm broadcast không cần thiết.
Ví dụ:
switchport trunk allowed vlan 100,200
Điều này có nghĩa:
Chỉ VLAN 100 và VLAN 200 được phép đi qua trunk.
Nếu host thuộc VLAN 300, traffic sẽ không đi dù trunk vẫn up hoàn toàn bình thường.
Đây là lỗi rất dễ khiến người mới bối rối vì:
nhưng traffic của một VLAN cụ thể vẫn chết.
Kiểm tra:
show interfaces trunk
Ví dụ:
Port Vlans allowed on trunk
Gi0/2 100,200
Hoặc:
show interfaces gi0/2 switchport
Access vs Trunk Mismatch
Một lỗi khó chịu khác là một đầu là access, đầu còn lại là trunk.
Ví dụ:
SW1:
switchport mode access
switchport access vlan 100
SW2:
switchport mode trunk
Triệu chứng là đôi khi ping được, đôi khi không.
Nguyên nhân nằm ở cách trunk xử lý frame untagged.
Access port gửi frame không gắn tag.
Trunk port nhận frame untagged sẽ coi đó là traffic native VLAN.
Nếu:
thì traffic có thể vô tình hoạt động.
Nếu không:
traffic thất bại.
Đây là lý do hiện tượng "limited connectivity" xảy ra.
Phương pháp troubleshooting thực chiến
Khi trunk gặp sự cố, kỹ sư mạng thường bắt đầu với:
show interfaces trunk
Đây là lệnh quan trọng nhất.
Nó cho bạn biết:
Sau đó kiểm tra chi tiết:
show interfaces gi0/2 switchport
Nếu nghi ngờ VTP:
show vtp status
Nếu nghi ngờ VLAN:
show vlan brief
Nếu cần xem cấu hình thật:
show run interface gi0/2
Kết luận
Phần lớn lỗi trunk trong thực tế đều rơi vào một số nhóm quen thuộc:
Điểm quan trọng nhất là đừng chỉ nhìn interface up/down.
Một trunk có thể up nhưng vẫn forwarding sai.
Trong troubleshooting Cisco switching, hiểu sâu trunking gần như là điều bắt buộc, bởi đây là nền tảng của VLAN communication trong toàn bộ hệ thống mạng doanh nghiệp.
Trong hệ thống mạng doanh nghiệp, trunk link là một thành phần cực kỳ quan trọng vì nó cho phép nhiều VLAN cùng truyền qua một liên kết vật lý duy nhất. Nếu access port giống như một con đường chỉ phục vụ cho một khu dân cư duy nhất, thì trunk giống như một tuyến cao tốc đa làn, nơi traffic của nhiều VLAN cùng chia sẻ một đường truyền nhưng vẫn được phân biệt rõ ràng.
Trunk thường xuất hiện trong các kết nối giữa switch với switch, switch với router trong mô hình Router-on-a-Stick, hoặc switch với các máy chủ/hypervisor cần phục vụ nhiều VLAN. Khi trunk gặp sự cố, hậu quả thường không chỉ ảnh hưởng đến một host đơn lẻ mà có thể làm gián đoạn toàn bộ giao tiếp giữa các VLAN hoặc giữa các phân đoạn mạng khác nhau. Vì vậy, hiểu rõ cách troubleshooting trunk là kỹ năng rất quan trọng đối với kỹ sư mạng.
Trunk hoạt động như thế nào?
Thông thường, một access port chỉ thuộc về một VLAN duy nhất. Ví dụ, nếu một PC được cắm vào cổng access thuộc VLAN 100, toàn bộ traffic đi qua cổng đó đều được coi là traffic của VLAN 100.
Nhưng trong môi trường thực tế, giữa hai switch có thể cần truyền traffic của:
- VLAN 100
- VLAN 200
- VLAN 300
- VLAN 400
Nếu mỗi VLAN dùng một dây vật lý riêng thì hệ thống sẽ nhanh chóng trở nên cồng kềnh và lãng phí tài nguyên. Đó là lý do trunk ra đời.
Trunk sử dụng cơ chế tagging để đánh dấu VLAN ID cho từng frame Ethernet, từ đó cho phép nhiều VLAN cùng chia sẻ một liên kết vật lý.
Ví dụ:
SW1 -------- trunk -------- SW2
Nếu PC trong VLAN 100 gửi frame:
- switch gắn VLAN tag 100
- frame đi qua trunk
- switch bên kia đọc tag
- xác định frame thuộc VLAN 100
- forward đúng nơi
Cơ chế này nghe có vẻ đơn giản, nhưng thực tế có nhiều lỗi cấu hình khiến trunk không hình thành hoặc hoạt động sai.
Encapsulation Mismatch
Một trong những lỗi kinh điển là encapsulation mismatch.
Cisco Catalyst hỗ trợ hai kiểu trunk encapsulation:
802.1Q
Đây là chuẩn IEEE phổ biến nhất hiện nay. Cơ chế của nó là chèn thêm một VLAN tag dài 4 byte vào frame Ethernet.
ISL (Inter-Switch Link)
Đây là giao thức độc quyền của Cisco. Khác với 802.1Q chỉ thêm tag, ISL encapsulate toàn bộ frame Ethernet, tạo thêm overhead khoảng 30 byte.
Điểm quan trọng nhất là:
Hai đầu trunk phải dùng cùng kiểu encapsulation.
Nếu một đầu dùng:
dot1q
và đầu kia dùng:
isl
thì trunk sẽ không hình thành.
Kiểm tra bằng lệnh:
show interfaces gi0/2 switchport
Ví dụ:
Administrative Trunking Encapsulation: dot1q
Operational Trunking Encapsulation: dot1q
Nếu switch bên kia hiển thị:
Administrative Trunking Encapsulation: isl
Operational Trunking Encapsulation: isl
thì đây chính là nguyên nhân.
Bạn cũng có thể xác minh nhanh bằng:
show interfaces trunk
Ví dụ:
SW1:
Gi0/2 on 802.1q trunking
và:
SW2:
Gi0/1 on isl trunking
Rõ ràng hai bên không cùng "ngôn ngữ".
Incompatible Trunking Modes
Không phải cứ hai switch cắm vào nhau là trunk tự hình thành.
Cisco hỗ trợ nhiều chế độ trunk khác nhau.
Nếu cổng được cấu hình:
switchport mode access
thì cổng đó sẽ không bao giờ trở thành trunk.
Nếu cấu hình:
switchport mode trunk
thì cổng luôn hoạt động như trunk.
Ngoài ra còn có hai chế độ động:
dynamic desirable
và
dynamic auto
Dynamic desirable là chế độ chủ động. Nó liên tục gửi DTP để yêu cầu hình thành trunk.
Dynamic auto thì thụ động hơn. Nó chỉ chờ nếu phía bên kia chủ động đề nghị.
Đây là điểm mà nhiều người nhầm.
Nếu cả hai đầu đều:
dynamic auto
thì trunk sẽ không bao giờ hình thành.
Lý do rất đơn giản:
Hai bên đều đang chờ nhau nói trước.
Không ai chủ động cả.
Trong khi đó:
dynamic desirable + dynamic auto
sẽ hoạt động bình thường.
Kiểm tra:
show interfaces gi0/2 switchport
Nếu thấy:
Administrative Mode: dynamic auto
ở cả hai phía, nguyên nhân đã rõ.
VTP Domain Name Mismatch
Một lỗi khác thường bị bỏ qua là VTP domain mismatch.
Nếu trunk đang sử dụng DTP để negotiate, hai switch phải thuộc cùng VTP domain.
Ví dụ:
SW1:
VTP domain = VNPRO
SW2:
VTP domain = LAB
Lúc này syslog có thể báo:
%DTP-5-DOMAINMISMATCH:
Unable to perform trunk negotiation
Điều này có nghĩa:
DTP từ chối tạo trunk vì domain không khớp.
Kiểm tra:
show vtp status
Native VLAN Mismatch
Lỗi này đặc biệt quan trọng với trunk 802.1Q.
Khái niệm native VLAN tồn tại vì trong 802.1Q, traffic thuộc native VLAN sẽ đi không gắn tag.
Mặc định:
VLAN 1
Nhưng trong nhiều hệ thống, native VLAN được đổi sang VLAN khác để tăng bảo mật.
Ví dụ:
SW1:
switchport trunk native vlan 1
SW2:
switchport trunk native vlan 99
Trunk vẫn có thể up.
Nhưng traffic sẽ bị xử lý sai.
Frame untagged từ một phía sẽ bị đầu kia gán vào native VLAN của nó.
Kết quả:
- traffic leakage
- VLAN confusion
- STP inconsistency
Nếu CDP bật, bạn sẽ thấy:
%CDP-4-NATIVE_VLAN_MISMATCH
Kiểm tra:
show interfaces trunk
Ví dụ:
SW1:
Native vlan 1SW2:
Native vlan 99
Mismatch rõ ràng.
Allowed VLANs
Theo mặc định, trunk cho phép tất cả VLAN:
1-4094
Tuy nhiên trong môi trường doanh nghiệp, admin thường giới hạn để tăng bảo mật và giảm broadcast không cần thiết.
Ví dụ:
switchport trunk allowed vlan 100,200
Điều này có nghĩa:
Chỉ VLAN 100 và VLAN 200 được phép đi qua trunk.
Nếu host thuộc VLAN 300, traffic sẽ không đi dù trunk vẫn up hoàn toàn bình thường.
Đây là lỗi rất dễ khiến người mới bối rối vì:
- trunk có vẻ hoạt động
- interface up
- DTP OK
- encapsulation đúng
nhưng traffic của một VLAN cụ thể vẫn chết.
Kiểm tra:
show interfaces trunk
Ví dụ:
Port Vlans allowed on trunk
Gi0/2 100,200
Hoặc:
show interfaces gi0/2 switchport
Access vs Trunk Mismatch
Một lỗi khó chịu khác là một đầu là access, đầu còn lại là trunk.
Ví dụ:
SW1:
switchport mode access
switchport access vlan 100
SW2:
switchport mode trunk
Triệu chứng là đôi khi ping được, đôi khi không.
Nguyên nhân nằm ở cách trunk xử lý frame untagged.
Access port gửi frame không gắn tag.
Trunk port nhận frame untagged sẽ coi đó là traffic native VLAN.
Nếu:
- access VLAN = native VLAN
thì traffic có thể vô tình hoạt động.
Nếu không:
traffic thất bại.
Đây là lý do hiện tượng "limited connectivity" xảy ra.
Phương pháp troubleshooting thực chiến
Khi trunk gặp sự cố, kỹ sư mạng thường bắt đầu với:
show interfaces trunk
Đây là lệnh quan trọng nhất.
Nó cho bạn biết:
- trunk có up không
- encapsulation là gì
- native VLAN là gì
- VLAN nào được allow
- VLAN nào đang forwarding
Sau đó kiểm tra chi tiết:
show interfaces gi0/2 switchport
Nếu nghi ngờ VTP:
show vtp status
Nếu nghi ngờ VLAN:
show vlan brief
Nếu cần xem cấu hình thật:
show run interface gi0/2
Kết luận
Phần lớn lỗi trunk trong thực tế đều rơi vào một số nhóm quen thuộc:
- encapsulation mismatch
- trunk mode mismatch
- VTP domain mismatch
- native VLAN mismatch
- allowed VLAN filtering
- access/trunk mismatch
Điểm quan trọng nhất là đừng chỉ nhìn interface up/down.
Một trunk có thể up nhưng vẫn forwarding sai.
Trong troubleshooting Cisco switching, hiểu sâu trunking gần như là điều bắt buộc, bởi đây là nền tảng của VLAN communication trong toàn bộ hệ thống mạng doanh nghiệp.