Xử lý lỗi MTU Mismatch: Khi Jumbo Frames ‘phản chủ’ trong hạ tầng vSphere

VMware tutorial - IT technology blog
VMware tutorial - IT technology blog

MTU Mismatch: ‘Kẻ sát nhân thầm lặng’ trên Production

Hệ thống cluster 8 host ESXi của mình tuần trước bỗng dưng đổ bệnh. Dấu hiệu ban đầu khá kỳ quặc: các máy ảo (VM) chạy database vẫn ping thấy nhau, nhưng cứ hễ backup dữ liệu hoặc truyền file lớn là kết nối đứt gánh giữa đường. Thậm chí, quá trình vMotion cứ lết đến đúng 14% là đứng hình rồi báo lỗi timeout.

Sau 2 giờ rà soát, mình tìm ra thủ phạm: MTU Mismatch. Một đồng nghiệp mới đã bật Jumbo Frames (MTU 9000) trên VMkernel nhưng lại quên cấu hình trên Switch vật lý Cisco Nexus. Kết quả là throughput tụt thảm hại từ 10Gbps xuống còn chưa đầy 200Mbps, kèm theo một lượng lớn gói tin bị drop không thương tiếc.

MTU (Maximum Transmission Unit) đơn giản là kích thước gói tin lớn nhất mà một cổng mạng có thể tải. Trong thế giới VMware, chỉ cần một mắt xích trong chuỗi (VM -> vSwitch -> Physical Switch -> Storage) bị lệch pha, hệ thống của bạn sẽ gặp rắc rối ngay lập tức.

Kiểm tra nhanh trong 5 phút bằng vmkping

Đừng ngồi đoán già đoán non khi mạng chập chờn. Hãy SSH trực tiếp vào host ESXi và dùng lệnh vmkping. Đây là cách nhanh nhất để biết gói tin lớn có thực sự thông suốt hay không.

Để test thử đường truyền Jumbo Frames (MTU 9000), bạn hãy chạy lệnh:

# Cú pháp chuẩn trên ESXi:
# -d: Không cho phép chia nhỏ gói tin (Disallow fragmentation)
# -s 8972: Payload thực tế (9000 byte - 28 byte header)

vmkping -I vmk0 -d -s 8972 192.168.10.20

Đọc kết quả:

  • Nếu thấy Reply: Đường truyền đã ngon lành.
  • Nếu báo “Message too long”: Chắc chắn MTU đang bị nghẽn ở đâu đó.

4 mắt xích cần kiểm tra để đồng bộ MTU

Khắc phục lỗi này không khó, quan trọng là bạn phải rà soát đủ 4 lớp dưới đây. Đừng bỏ sót lớp nào nếu không muốn “ăn hành” tiếp.

1. VMkernel Port

Đây là nơi xử lý các traffic quan trọng như vMotion, iSCSI hay vSAN. Nếu xác định dùng Jumbo Frames cho lưu trữ, bạn bắt buộc phải set MTU 9000 tại đây.

Thao tác: Networking -> VMkernel adapters -> Edit -> Chỉnh MTU thành 9000.

2. vSwitch hoặc Distributed Switch (vDS)

Hãy coi vSwitch như một cái phễu. Nếu VMkernel là 9000 nhưng vSwitch vẫn giữ mặc định 1500, gói tin sẽ bị kẹt ngay tại cửa ngõ này. Kiểm tra nhanh bằng lệnh:

esxcfg-vswitch -l

3. Switch vật lý (Physical Switch)

Đây là mắt xích dễ bị bỏ quên nhất. Các dòng switch doanh nghiệp của Cisco, Dell hay Arista thường mặc định MTU 1500. Bạn cần login vào Switch và cấu hình MTU trên các Port tương ứng.

Mẹo nhỏ: Mình thường set MTU trên switch vật lý là 9216. Con số này giúp bù đắp phần header phát sinh nếu sau này bạn triển khai thêm các giao thức như VXLAN hoặc NSX.

4. Hệ điều hành máy ảo (Guest OS)

Cuối cùng là bên trong máy ảo. Nếu ứng dụng của bạn yêu cầu MTU lớn (như các hệ thống chuyên dụng cho Video Streaming), hãy nhớ chỉnh lại thông số này trong card mạng của Windows hoặc Linux.

Dùng PowerCLI để quét lỗi toàn bộ Cluster

Đi click từng host để check MTU là cực hình nếu cluster có hàng chục node. Thay vào đó, mình dùng đoạn script PowerCLI này để tìm ra những host đang “lệch pha” chỉ trong vài giây:

# Kiểm tra MTU trên tất cả vSwitch
Get-VMHost | Get-VirtualSwitch | Select-Object @{N="Host";E={$_.VMHost.Name}}, Name, MTU | ft

# Kiểm tra MTU trên các cổng VMkernel
Get-VMHost | Get-VMHostNetworkAdapter | Select-Object @{N="Host";E={$_.VMHost.Name}}, Name, IP, MTU | ft

Dòng nào hiện 1500 trong khi cả đội đang là 9000? Đó chính là nơi bạn cần ra tay xử lý.

Vài lưu ý “xương máu” từ thực tế

Sau nhiều lần thức đêm xử lý sự cố mạng vSphere, mình rút ra 3 quy tắc:

  • Chỉ bật khi cần thiết: Đừng lạm dụng Jumbo Frames cho mạng Management. Nó chỉ thực sự phát huy sức mạnh với iSCSI, vSAN hoặc vMotion để giảm tải cho CPU.
  • Quy tắc End-to-End: MTU phải thông suốt từ đầu đến cuối. Nếu dùng iSCSI, hãy kiểm tra cả thông số MTU trên Controller của tủ đĩa (NetApp, Dell EMC).
  • Luôn nhớ con số 28: Khi ping 9000 byte mà không trừ đi 28 byte header, lệnh sẽ luôn fail. Đừng để chi tiết nhỏ này làm bạn rối trí khi troubleshooting.

Xử lý MTU Mismatch không đòi hỏi kỹ thuật siêu đẳng, mà cần sự tỉ mỉ. Hy vọng kinh nghiệm này giúp bạn tự tin hơn khi quản trị hạ tầng VMware.

Share: