tcpdump hiển thị gói 64 KB: offload và điểm bắt gói
Một gói khổng lồ trong bản bắt trên máy chủ có thể xuất hiện trước khi phân đoạn hoặc sau khi gộp. Xác định điểm quan sát trước khi kết luận rằng đường hầm đã bỏ qua MTU của nó.
Bắt gói trên một máy chủ có thể cho thấy một gói 64 KB trên giao diện có MTU 1420, và kết luận hiển nhiên là đường hầm đã bỏ qua giới hạn kích thước của nó. Kết luận đó thường sai. Các điểm bắt gói trên máy chủ nằm bên trong đường xử lý, nơi việc phân đoạn, gộp và tính checksum có thể chưa diễn ra. Hãy đọc vị trí của người quan sát trước khi đọc kích thước gói.
Nơi bạn bắt gói thay đổi những gì bạn thấy
Offload truyền cho phép ngăn xếp giao một đơn vị lớn cho thiết bị mạng, thiết bị này sau đó cắt nó thành các mảnh cỡ dây. Gộp khi nhận làm ngược lại trên đường vào, nối các đoạn trước khi một người quan sát phía máy chủ nhìn thấy chúng. Vì vậy bản bắt ghi lại góc nhìn bên trong của máy chủ tại điểm đó, không nhất thiết là các khung trên liên kết. Cả hai cơ chế đều phụ thuộc vào thiết bị và đường đi.
ethtool -k eth0 | grep -E 'tso|gso|gro'
Hãy bắt ở điểm thứ hai, lý tưởng là một bộ nhận độc lập hoặc một gương, trước khi coi kích thước là lỗi. Nếu đơn vị lớn chỉ xuất hiện trên máy chủ gửi, dây có thể chưa bao giờ mang nó. Hai điểm quan sát mạnh hơn một tệp, đặc biệt khi câu hỏi là điều gì thực sự rời khỏi máy.
Tách giao diện trong và ngoài
Đường hầm thêm giao diện của riêng nó, và góc nhìn ngoài và trong khác nhau về đóng gói và về xử lý. Bản bắt trên thiết bị đường hầm cho thấy gói bên trong; bản bắt trên bộ điều hợp vật lý cho thấy gói bên ngoài. Kích thước, địa chỉ và trạng thái checksum có thể khác nhau giữa chúng vì những lý do không liên quan gì đến lỗi.
Ghi lại giao diện nào đã tạo ra từng tệp. Kích thước thấy trên thiết bị đường hầm mô tả gói bên trong, không phải khung mà bộ điều hợp cuối cùng đã gửi. Trộn cả hai trong một phân tích là cách một khác biệt đóng gói bình thường trở thành bí ẩn.
Cảnh báo checksum cũng mang tính vị trí
Bản bắt phía gửi có thể cho thấy trường checksum trước khi phần cứng điền vào, điều này tạo ra cảnh báo mà không bộ nhận nào từng thấy. Đây là bằng chứng khác với việc một máy chủ từ xa từ chối gói bị hỏng. Hướng và điểm bắt quyết định bạn có cái nào trong hai.
Khi một lần truyền thực sự thất bại, hãy so sánh các quan sát tại bộ nhận hoặc tại một điểm khác trên đường. Giữ hướng, giao diện và lớp đóng gói cùng với bản ghi, vì ảnh chụp màn hình không có chúng sẽ không thể diễn giải về sau.
Chỉ tắt offload như một thử nghiệm có kiểm soát
Tắt offload thay đổi hiệu năng và xử lý gói, nên đó không phải phản ứng đầu tiên với một hiển thị kích thước lạ. Nếu bạn thử, hãy đổi một cài đặt và ghi lại đường cơ sở trước. Một lần chạy cũng thay đổi MTU, quy tắc tường lửa và hồ sơ máy khách không thể quy kết kết quả cho offload. Khôi phục cài đặt sau đó.
ethtool -K eth0 tso off gro off
ping -M do -s 1400 example.com
Sự đình trệ thực sự của một lần truyền lớn là câu hỏi riêng về MTU của đường đi và phản hồi mà ứng dụng nhận được. Đơn vị đã gộp của máy chủ không chứng minh cũng không bác bỏ một giới hạn kích thước phía sau, và tỷ lệ CPU thấp không xác định offload là nguyên nhân.
Kết quả hữu ích là một điểm bắt gói được giải thích cùng với một quan sát ứng dụng có thể lặp lại. Khi hai điều đó được tách ra, một thay đổi MTU có thể nhắm vào một ràng buộc thực thay vì hình dạng của một bộ đệm bên trong.