Ở đâu đó trong một hướng dẫn có một con số, thường nằm giữa sáu mươi và tám mươi byte, mà ai đó đã trừ đi từ 1500 để có MTU giao diện. Con số đó mô tả một kiểu đóng gói cụ thể trên một đường đi cụ thể. Đổi chế độ, họ địa chỉ bên ngoài, thuật toán mã hóa hoặc việc có NAT, và phép tính không còn áp dụng cho đường hầm của bạn nữa.

Con số đó đến từ một đường hầm khác

Phụ trội không phải là thuộc tính của IPsec nói chung. Nó là thuộc tính của gói tin thực sự được dựng nên: một chế độ đã thương lượng, một tiêu đề ngoài, một tiêu đề bảo vệ, phần đệm, một trường toàn vẹn và có thể là một lớp bọc UDP thêm.

Con số được nêu cho chế độ truyền tải với IPv4 và không có NAT mô tả một gói tin nhỏ hơn chế độ đường hầm với IPv6 dưới sự đi qua NAT. Cả hai đều đúng cho trường hợp của mình. Sao chép một trong hai sang một triển khai khác chính là cách người ta kết thúc với một MTU làm hỏng các lần truyền lớn. Sự cố diễn ra âm thầm vì các yêu cầu nhỏ vẫn tiếp tục hoạt động.

Cộng các lớp thực sự có mặt

Bắt đầu từ tiêu đề IP bên ngoài và đi vào trong. Ở chế độ đường hầm, gói tin gốc nằm bên trong, nên tiêu đề ngoài là phần thêm vào chứ không phải thay thế. RFC 4303 mô tả tiêu đề ESP, phần đệm và dữ liệu toàn vẹn theo sau nó.

LayerWhat it addsWhen it applies
Outer IP header20 bytes for IPv4, 40 for IPv6Always, and 40 rather than 20 if the outer path is v6
ESP header8 bytes of SPI and sequence numberAlways
Block cipher IV8 to 16 bytes depending on the transformWhen the negotiated cipher uses one
Padding and trailerPadding to the block size, plus two trailer bytesAlways, and the amount varies with payload length
Integrity data12 to 16 bytes for common authenticated ciphersWhen integrity protection is negotiated
UDP encapsulation8 bytesNAT traversal on port 4500, which is common for clients behind NAT

Không hàng nào trong số đó là hằng số giữa các triển khai, và hàng đệm thậm chí không hằng số trong một triển khai. Đó là toàn bộ lý do khiến một con số phụ trội được công bố làm người ta thất vọng.

Hai điểm có thể không đồng ý về cùng một đường hầm

Gói tin được bảo vệ vẫn phải đi qua đường đi bên ngoài, và đường đi bên ngoài không giống nhau ở mọi nơi. Một liên kết truy cập PPPoE chở ít hơn một phân đoạn Ethernet sạch. Mạng di động có thể co lại hơn nữa, và nhà cung cấp đóng gói lưu lượng của chính mình vào đường hầm sẽ thêm một lớp đóng gói nữa mà không ai nhắc đến. Một đường hầm chạy được trên liên kết này mà hỏng trên liên kết khác đang mô tả liên kết thứ hai, không phải giao thức.

Hai chiều cũng có thể khác nhau. Một tuyến không đối xứng có thể cho bạn tải lên hoạt động và tải xuống bị kẹt, điều này được đọc như vấn đề ứng dụng cho đến khi bạn nhìn vào kích thước gói tin thay vì khả năng tiếp cận. Một ping nhỏ thành công chứng minh rất ít về một phản hồi đầy đủ kích thước.

Đo thay vì trừ

Tìm datagram lớn nhất đi qua được đường đi. Sau đó so sánh nó với giá trị mà giao diện báo cáo:

ip link show eth0 | grep -o 'mtu [0-9]*'
ip xfrm state list
ping -M do -s 1400 198.51.100.7
ping -M do -s 1372 198.51.100.7
tcpdump -ni any -c 20 'esp or udp port 4500'

Hạ kích thước ping xuống cho đến khi có phản hồi, và coi giá trị lớn nhất còn hoạt động là ngân sách cho đường đi đó. Đầu ra của xfrm cho bạn biết chế độ và thuật toán nào đã được thương lượng, và đó là đầu vào cho mọi phép tính trung thực. Bản bắt gói xác nhận trên dây là ESP hay ESP bọc trong UDP, và điều đó giải quyết câu hỏi NAT mà không phải đoán.

Dành riêng một giá trị cho mặt phẳng điều khiển nữa. Các gói bắt tay IKE có cấu trúc khác với gói dữ liệu, nên kích thước suy ra từ một bản bắt bắt tay không phải là MTU của mặt phẳng dữ liệu.

Đặt con số vào đúng chỗ của nó

Với TCP đi qua một đường hầm, việc chặn MSS thường là biện pháp kiểm soát ít xâm lấn nhất, vì nó giảm những gì các đầu cuối gửi mà không thay đổi bản thân đường hầm. Với đường hầm dựa trên tuyến, hãy đặt MTU của giao diện đường hầm một cách có chủ đích và ghi lại lý do. Làm cả hai cùng lúc rồi đo sẽ không cho bạn biết cái nào đã giúp.

Giữ cùng nhau trong phiếu hỗ trợ chế độ đã thương lượng, họ bên ngoài, điều kiện NAT và triệu chứng có thể tái hiện. Một bộ bốn sự kiện được ghi lại thắng một hằng số ghi nhớ, và đó là phiên bản duy nhất của điều này sống sót qua lần nâng cấp ứng dụng khách tiếp theo.

Bài viết liên quan