Chi phí phụ trội của IPsec: chế độ, NAT-T và thuật toán đều thay đổi nó
Một con số phụ trội được công bố chỉ mô tả một kiểu đóng gói trên một đường đi. Hãy cộng các tiêu đề mà đường hầm của bạn thực sự thương lượng, rồi đo đường đi.
Ở đâ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ó.
| Layer | What it adds | When it applies |
|---|---|---|
| Outer IP header | 20 bytes for IPv4, 40 for IPv6 | Always, and 40 rather than 20 if the outer path is v6 |
| ESP header | 8 bytes of SPI and sequence number | Always |
| Block cipher IV | 8 to 16 bytes depending on the transform | When the negotiated cipher uses one |
| Padding and trailer | Padding to the block size, plus two trailer bytes | Always, and the amount varies with payload length |
| Integrity data | 12 to 16 bytes for common authenticated ciphers | When integrity protection is negotiated |
| UDP encapsulation | 8 bytes | NAT 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.