Bạn chụp các gói 1400 byte trên giao diện đường hầm, chụp lại trên giao diện vật lý, và các con số không chịu khớp nhau. Địa chỉ khác nhau, kích thước khác nhau, và tệp thứ hai trông giống một cuộc trò chuyện khác. Không có gì hỏng cả. Hai gói khác nhau đang nằm ở hai lớp khác nhau, và khoảng cách giữa chúng chính là thứ mà đường hầm làm với lưu lượng của bạn. Hãy đọc cả hai góc nhìn trước khi đổ lỗi cho MTU.

Hai góc nhìn, và gói mà mỗi góc nhìn cho thấy

Bản chụp thu trên giao diện đường hầm cho thấy gói bên trong: tải trọng của ứng dụng mang nguồn và đích gốc của nó, trước khi bất kỳ lớp bảo vệ nào được áp dụng. Bản chụp trên giao diện vật lý cho thấy gói bên ngoài: một tiêu đề IP, một tiêu đề giao vận, phần đóng gói, rồi đến gói bên trong đã mã hóa làm tải trọng. Cùng một cuộc trò chuyện, nhưng là những đối tượng khác nhau. Khi bạn đã gọi tên được tệp chứa cái nào, sự lệch nhau không còn là điều bí ẩn nữa.

Chênh lệch kích thước là phần chi phí phụ, còn chênh lệch địa chỉ là do thiết kế. Đảo lại cách nhìn và sự nhầm lẫn trở nên có thể đoán trước: người ta so một gói bên trong 1400 byte với một gói bên ngoài 1450 byte, kết luận là có gì đó sai, rồi bắt đầu thay đổi các thiết lập MTU vốn không hề có lỗi. Hãy dán nhãn tệp theo giao diện và lớp, vì nhãn đó là thứ đầu tiên người đọc cần và cũng là thứ đầu tiên người ta bỏ qua.

Xác định lớp trước khi bắt đầu chụp

Xác định lớp nào trả lời câu hỏi của bạn trước khi gói đầu tiên được ghi. Một câu hỏi về MTU thường cần góc nhìn bên ngoài, vì đó là nơi các tiêu đề tích tụ và nơi giới hạn của đường đi xuất hiện. Một câu hỏi về ứng dụng thường cần góc nhìn bên trong, vì đó là nơi tải trọng bạn quan tâm vẫn còn tồn tại. Chụp cả hai mà không có kế hoạch sẽ tạo ra hai tệp và không có kết luận.

Hãy dùng một phép thử vô hại, được cấp phép, và lọc theo nguồn, đích và thời điểm bạn quan tâm. Đọc các tùy chọn giao diện và bộ lọc của công cụ chụp trước khi thu thập, vì siêu dữ liệu thường đã đủ và dễ chia sẻ hơn nhiều so với tải trọng. Hãy mặc định coi bản chụp bên trong là nhạy cảm, vì nó chứa dữ liệu ứng dụng chưa mã hóa mà chỉ được bảo vệ ở đoạn xa hơn trên đường đi.

Chênh lệch kích thước thực sự chứa những gì

Gói bên ngoài mang thêm các tiêu đề và vật liệu bảo vệ, và nó mang bao nhiêu phụ thuộc vào giao thức cùng các tùy chọn của giao thức đó. Việc phân mảnh, gộp hoặc sắp xếp lại dọc đường đi có thể phá vỡ mối quan hệ một-một bề ngoài giữa một gói bên trong và các gói bên ngoài chở nó, nên không phải lúc nào cũng có thể so sánh từng kích thước một. Với một lỗi MTU bị nghi ngờ, hãy tìm phản hồi về kích thước và điểm mà lưu lượng dừng lại, rồi so điều đó với những gì ứng dụng báo cáo. Một kiểu truyền lại không có hồi đáp là tín hiệu khác với một lỗi ICMP mang kích thước chặng kế tiếp.

Chỉ một gói rời khỏi máy chủ không chứng minh được gì về việc đầu xa có nhận được nó hay không. Nếu bản chụp của bạn kết thúc tại giao diện của chính bạn, bạn mới chỉ cho thấy rằng nhân hệ điều hành đã phát ra thứ gì đó, đây là bằng chứng yếu nhất hiện có về đường đi. Hãy kết hợp bản chụp với một triệu chứng lặp lại được: cùng đích, cùng thao tác, cùng kích thước, chạy hai lần với một biến số được thay đổi.

Đọc phần offload vào các con số

Phân đoạn phía máy chủ và các dạng offload khác thêm một méo mó thứ hai, và chính nó khiến các bản chụp cục bộ không khớp với đường truyền. Một bản chụp cục bộ có thể cho thấy những bộ đệm mà bộ điều hợp chia nhỏ sau đó, nên các khung trên liên kết nhỏ hơn và nhiều hơn so với những gì tệp gợi ý. Đó là lý do một bộ đệm lớn trong tệp chụp không chứng minh rằng một khung quá cỡ đã đi qua mọi liên kết. Nếu kích thước có ý nghĩa với kết luận của bạn, hãy ghi lại nơi chụp và liệu offload có đang hoạt động trên giao diện đó hay không.

Nếu không, bạn đang đo sự tiện lợi của máy chủ thay vì hành vi của đường đi. Hai tệp được dán nhãn giao diện và trạng thái offload sẽ giải quyết hầu hết những tranh cãi này trong một phút.

Nơi bản chụp thôi làm bằng chứng

Thấy các gói bên ngoài đã mã hóa cho thấy có một ranh giới bảo vệ tồn tại trong những điều kiện thử nghiệm này, và nó không nói gì về các ứng dụng khác trên thiết bị, cách nhà điều hành xử lý, hay trạng thái của chính đầu cuối. Thấy văn bản rõ bên trong đường hầm cũng không có nghĩa đường hầm bị hỏng; điều đó có nghĩa bạn đã chụp ở phía trên điểm mã hóa, một vị trí hợp lệ để quan sát. Một bản chụp là bằng chứng về một nơi chốn, không phải phán quyết về một hệ thống, và phiếu sự cố nên mô tả nó theo cách đó. Hãy giữ câu nêu phạm vi trong báo cáo, vì chính nó ngăn một quan sát đơn lẻ trở thành một tuyên bố kiểm toán.

Đặt tên mỗi tệp theo giao diện, bộ lọc và dấu thời gian, rồi xóa nó khi điều tra kết thúc. Hướng dẫn tcpdump mô tả các cờ giao diện và bộ lọc được dùng ở đây, kể cả những cờ giúp bản chụp nhỏ gọn.

Nếu buộc phải chia sẻ bằng chứng, hãy chia sẻ kích thước, dấu thời gian và các cờ thay vì tải trọng. Câu hỏi là về kích thước gói, và câu trả lời hiếm khi cần dữ liệu của bất kỳ ai.

Bài viết liên quan