Vượt qua những yêu cầu hỗ trợ kiểu “Mạng chậm quá”
Tất cả chúng ta đều đã từng gặp tình huống này. Một yêu cầu hỗ trợ gửi đến với lời phàn nàn mơ hồ rằng “mạng chậm quá”, và bạn bị bỏ lại với một màn hình terminal trống rỗng. Đó là một điểm bắt đầu đầy ức chế. Có phải do cáp Ethernet hỏng, giao diện 10G bị quá tải, hay do cấu hình sai tuyến BGP? Để khắc phục, bạn cần dữ liệu thực tế chứ không chỉ là linh cảm.
Khi tôi xử lý sự cố hiệu năng, tôi tập trung vào ba thông số: Throughput, Latency và Jitter. Throughput đo lượng dữ liệu thực tế di chuyển qua đường truyền. Latency theo dõi thời gian một gói tin đi từ điểm A đến B. Jitter đo mức độ dao động của độ trễ đó. Làm chủ được các thông số này là kỹ năng sinh tồn của bất kỳ quản trị viên nào. Không có chúng, bạn đang mò mẫm trong bóng tối khi xảy ra sự cố.
Xác định các thông số quan trọng
Nhiều kỹ sư thường nhầm lẫn giữa bandwidth (băng thông) và throughput (lưu lượng thực tế). Hãy coi bandwidth như số làn đường trên đường cao tốc. Throughput là số lượng xe thực sự đi qua một điểm mỗi giây. Trên một liên kết 1Gbps, bạn hiếm khi thấy tốc độ truyền dữ liệu đạt đúng 1000Mbps. Do TCP overhead và các header, một liên kết 1Gbps “sạch” thường đạt tối đa khoảng 940Mbps.
Latency là Thời gian khứ hồi (RTT). Dù bandwidth cao rất tốt cho việc tải xuống, nhưng latency thấp mới là yếu tố then chốt cho các truy vấn cơ sở dữ liệu hoặc VoIP. Độ trễ 500ms có thể chấp nhận được với email, nhưng sẽ khiến một phiên làm việc qua SSH có cảm giác như đang ở dưới nước.
Jitter là sự biến thiên của độ trễ đó. Nếu gói tin đầu tiên mất 20ms và gói tiếp theo mất 150ms, jitter của bạn đang ở mức cao. Đây là kẻ thù chính của lưu lượng thời gian thực (real-time traffic). Jitter cao thường chỉ ra tình trạng tắc nghẽn mạng hoặc bộ đệm (buffer) trên router bị đầy bất thường.
Đo Throughput với iperf3
iperf3 là công cụ tiêu chuẩn để kiểm tra băng thông tối đa có thể đạt được. Nó hoạt động theo mô hình client-server. Bạn cần cài đặt nó trên hai máy: một máy đóng vai trò lắng nghe (server) và một máy để tạo lưu lượng (client).
Thiết lập Server
Trên máy đích—có thể là một server trong trung tâm dữ liệu của bạn—hãy khởi động iperf3 ở chế độ server. Theo mặc định, nó lắng nghe trên cổng 5201.
# Cài đặt iperf3
sudo apt update && sudo apt install iperf3 -y
# Khởi động server
iperf3 -s
Hãy đảm bảo tường lửa của bạn cho phép lưu lượng đi qua cổng 5201. Nếu bạn cần duy trì bài kiểm tra cho nhiều phiên làm việc, tôi khuyên bạn nên chạy nó bên trong một phiên tmux hoặc screen.
Chạy kiểm tra phía Client
Bây giờ, hãy chuyển sang máy cục bộ và trỏ nó tới IP của server. Thay thế 1.2.3.4 bằng địa chỉ server thực tế của bạn.
# Kiểm tra TCP tiêu chuẩn trong 10 giây
iperf3 -c 1.2.3.4
Một luồng TCP đơn lẻ thường không đủ để làm quá tải liên kết 10Gbps tốc độ cao. Điều này xảy ra do nghẽn cổ chai CPU trên một lõi đơn hoặc giới hạn TCP window scaling.
Mẹo chuyên nghiệp: Luồng song song
Để thực sự ép phần cứng tới giới hạn, tôi luôn chạy nhiều luồng song song. Điều này mô phỏng các điều kiện thực tế khi hàng chục người dùng cùng truy cập mạng một lúc.
# Chạy 10 luồng song song
iperf3 -c 1.2.3.4 -P 10
Kiểm tra UDP để đo Jitter và Packet Loss
TCP che giấu các lỗi mạng bằng cách truyền lại các gói tin bị mất. Để thấy được sức khỏe thực sự của kết nối, hãy sử dụng UDP. Bạn phải chỉ định băng thông mục tiêu vì UDP không có cơ chế kiểm soát tắc nghẽn tích hợp.
# Kiểm tra với lưu lượng UDP 100Mbps
iperf3 -c 1.2.3.4 -u -b 100M
Kiểm tra kết quả để xem tỷ lệ mất gói (packet loss). Nếu bạn thấy mất gói hơn 0,5% trên mạng dây nội bộ, có khả năng bạn đang gặp vấn đề về cáp hỏng hoặc sai lệch chế độ duplex (duplex mismatch).
Phân tích đường truyền với mtr
Nếu iperf3 cho bạn biết “bao nhiêu”, thì mtr (My Traceroute) sẽ cho bạn biết “ở đâu”. Nó kết hợp ping và traceroute thành một bảng điều khiển cập nhật trực tiếp.
Tại sao mtr lại vượt trội hơn
Traceroute tiêu chuẩn chỉ gửi ba gói tin cho mỗi hop rồi dừng lại. Cách đó rất dễ bỏ lỡ các đợt tăng đột biến không liên tục. mtr chạy liên tục, cho phép bạn thấy các xu hướng. Nếu hop 3 hiển thị 20% mất gói nhưng từ hop 4 đến 10 hiển thị 0%, hãy bỏ qua hop 3. Router đó có thể chỉ đang giới hạn tốc độ (rate-limiting) lưu lượng ICMP. Tuy nhiên, nếu tình trạng mất gói bắt đầu từ hop 3 và tiếp diễn đến đích, bạn đã tìm thấy điểm nghẽn của mình.
Chạy quét trực tiếp
Cài đặt phiên bản ncurses để có trải nghiệm tương tác tốt nhất.
sudo apt install mtr -y
# Chạy mtr tới một mục tiêu
mtr google.com
Tạo báo cáo làm bằng chứng
Khi tôi cần chứng minh vấn đề của nhà cung cấp cho ISP, tôi sử dụng chế độ báo cáo. Chế độ này chạy 100 chu kỳ và tạo ra một bảng dữ liệu sạch sẽ.
# Tạo báo cáo sau 100 gói tin
mtr -rw -c 100 google.com
Hãy tập trung vào cột StDev (Standard Deviation – Độ lệch chuẩn). StDev cao cho thấy latency của bạn đang nhảy vọt liên tục, dấu hiệu của một đường truyền không ổn định.
Những bài học từ thực tế Data Center
Luôn kiểm tra theo cả hai chiều. Định tuyến Internet thường không đối xứng. Lưu lượng của bạn có thể đi theo đường thẳng tới server nhưng lại vòng qua ba quốc gia khác nhau trên đường về. Sử dụng cờ -R trong iperf3 để kiểm tra theo chiều ngược lại.
# Kiểm tra tốc độ tải xuống (từ server đến client)
iperf3 -c 1.2.3.4 -R
Hãy chú ý mức sử dụng CPU. Nếu bạn đang kiểm tra liên kết 10G trên một máy ảo cloud rẻ tiền, bạn có thể chạm mức 100% CPU trước khi đạt tới giới hạn mạng. Nếu một lõi CPU bị quá tải, các con số throughput của bạn sẽ không chính xác.
Cuối cùng, hãy xem xét MTU (Maximum Transmission Unit). Nếu bạn đang sử dụng VPN hoặc tunnel GRE, các gói tin lớn 1500-byte có thể bị phân mảnh. Điều này khiến throughput sụt giảm nghiêm trọng. Hãy sử dụng cờ -M trong iperf3 để hạ thấp MSS (Maximum Segment Size) và xem liệu hiệu năng có ổn định lại không.
Tổng kết
Xử lý sự cố mạng không nên là một trò chơi đoán mò. Với iperf3, bạn có thể định lượng chính xác lượng dữ liệu mà đường truyền của mình có thể tải. Với mtr, bạn có thể xác định chính xác router nào đang gây ra độ trễ. Hai công cụ này biến những lời phàn nàn mơ hồ thành dữ liệu có thể thực thi được. Lần tới khi ai đó nói mạng chậm, bạn sẽ có sẵn báo cáo để chỉ cho họ thấy chính xác lý do tại sao.

