Chuyển đến nội dung
Tất cả bài viết
Blog & hướng dẫn/Kiến thức Proxy
Kiến thức Proxy

MTU, MSS và PMTUD khi dùng proxy: vì sao tải lớn có thể bị treo?

MTU và MSS không phải thông số tốc độ proxy. Bài viết giải thích cách kích thước gói tin, PMTUD và từng chặng TCP liên quan đến lỗi truyền dữ liệu.

MTU, MSS và PMTUD khi dùng proxy: vì sao tải lớn có thể bị treo?
NỘI DUNG BÀI VIẾTHướng dẫn chi tiết từ ProxySmart

Tải nhỏ qua proxy thành công nhưng tệp lớn bị treo cần được điều tra. MTU có thể liên quan, song chưa đủ để kết luận. Giới hạn dung lượng, timeout, mất gói và xử lý phía máy chủ cũng có thể gây triệu chứng ấy.

MTU khác MSS như thế nào?

MTU là giới hạn kích thước gói IP mà một liên kết có thể mang. MSS là giới hạn phần dữ liệu TCP được quảng bá cho phía gửi; nó không tính header IP và TCP. Đó là hai đại lượng ở hai lớp khác nhau, không phải dung lượng tối đa của một yêu cầu HTTP. RFC 6691 về TCP Options và MSS giải thích cách tính MSS và xử lý phần header.

Ví dụ minh họa: nếu MTU là 1.500 byte, dùng header IPv4 20 byte và TCP 20 byte, phép trừ cho giá trị 1.460 byte. Đây không phải cấu hình phù hợp cho mọi mạng. Header tùy chọn, IPv6 và lớp đóng gói có thể làm phần dữ liệu thực tế khác đi.

Path MTU và PMTUD làm việc gì?

Path MTU là giới hạn nhỏ nhất trên đường đi của một luồng. PMTUD giúp bên gửi điều chỉnh kích thước gói theo đường truyền. Với IPv6, thông báo ICMPv6 Packet Too Big có vai trò quan trọng. RFC 8201 về IPv6 Path MTU Discovery mô tả quá trình này; giá trị có thể thay đổi khi đường đi thay đổi.

Có thể hình dung kiện hàng đi qua nhiều cửa, cửa hẹp nhất quyết định giới hạn. Nhưng TCP chia luồng dữ liệu thành các đoạn; một tệp không được gửi nguyên trong một gói.

Vì sao dữ liệu nhỏ qua được, dữ liệu lớn bị treo?

Một tình huống có thể xảy ra là gói lớn không đi qua được, nhưng thông báo cần giảm kích thước không tới bên gửi. RFC 2923 về các vấn đề TCP với PMTUD gọi đây là một dạng black hole. Bắt tay TCP hoặc truyền ít dữ liệu vẫn có thể thành công trước khi việc truyền tải gặp vấn đề.

Tệp lớn không chứng minh gói IP lớn. Tệp được chia thành nhiều đoạn; lỗi còn có thể do thời gian truyền dài, bộ nhớ đệm hoặc giới hạn ứng dụng. Cần xem log và dấu hiệu truyền lại, không chỉ vòng xoay tải trang.

Proxy tạo các chặng cần kiểm tra riêng

Với HTTP CONNECT hoặc SOCKS chuyển tiếp TCP thông thường, máy khách kết nối đến proxy, rồi proxy tạo kết nối đến đích. Hai chặng có thể dùng đường mạng, IP và Path MTU khác nhau. Kết nối máy khách đến proxy tốt không chứng minh chặng ra của proxy cũng tốt. Đường hầm ứng dụng cũng không đồng nghĩa chỉ có một phiên TCP xuyên suốt.

Ví dụ giả định: máy tính dùng Wi-Fi, proxy ra máy chủ kiểm thử qua tuyến khác. Nếu lỗi nằm ở chặng sau, giảm MTU máy tính có thể không giúp ích. Cần trao đổi với bên quản lý chặng ấy.

Quy trình kiểm tra ít tải, có đối chứng

  1. Chọn endpoint bạn sở hữu hoặc được cho phép kiểm tra, chuẩn bị tệp nhỏ và tệp vừa với dữ liệu không nhạy cảm.
  2. Thử từng lượt, chẳng hạn 8 KiB rồi 256 KiB; ghi mã HTTP, thời gian và số byte thực nhận.
  3. So sánh truy cập trực tiếp và qua proxy, giữ nguyên endpoint, thiết bị và thời điểm gần nhau.
  4. Kiểm tra timeout, giới hạn tải và log ứng dụng trước khi xem cấu hình mạng.

Thử vài lần cách nhau đủ lâu. Các kích thước trên không phải ngưỡng chuẩn. Khi bắt gói trên hệ thống được phép, giới hạn phạm vi và che thông tin nhạy cảm trước khi chia sẻ.

Tránh sửa MTU hoặc firewall theo phỏng đoán

Không hạ MTU toàn hệ thống bằng một con số lấy trên mạng. Không tắt firewall hoặc cho phép toàn bộ ICMP để thử cho nhanh. Người quản trị cần kiểm tra loại thông báo phục vụ PMTUD, áp dụng chính sách có phạm vi và xác thực phù hợp. Nếu phải thử đổi MTU hoặc MSS, làm trong môi trường kiểm thử, lưu cấu hình cũ và có đường hoàn tác.

Sau thay đổi, kiểm tra cả hai chiều và tính toàn vẹn tệp. Xem kiểm tra toàn vẹn khi tải tệp qua proxy và đánh giá độ ổn định proxy. Một lượt tải thành công chưa chứng minh lỗi đã hết.

Câu hỏi thường gặp

MSS nhỏ hơn có luôn nhanh hơn không?

Không. Chia dữ liệu thành nhiều đoạn hơn có thể tăng chi phí xử lý. Giá trị phù hợp phụ thuộc đường truyền và triển khai.

Ping được có loại trừ lỗi MTU không?

Không. Gói ping nhỏ thành công chỉ kiểm tra một trường hợp; nó không chứng minh mọi kích thước hoặc chặng proxy đều hoạt động.

Hãy kiểm tra giới hạn ứng dụng trước, đối chiếu từng chặng và chỉ đổi MTU hoặc MSS khi đã có bằng chứng rõ ràng.