MTU và “DF flag” best practice on VNG Cloud
Last updated
Last updated
Địa chỉ
VNG CorporationDefault MTU trên môi trường Internet là 1500 bytes, tuy nhiên công nghệ ảo hóa yêu cầu đóng gói thêm một số Extended Headers, điều này làm cho giá trị thực tế sẽ < 1500 bytes.
Hiện tại hạ tầng VNG Cloud đang hỗ trợ tốt ở giá trị Interface MTU 1450 bytes, do đó sau quá trình đóng gói các protocol/application headers, gói tin được gửi ra khỏi VM được khuyến cáo nên ≤ 1450 bytes (1).
Việc VM gửi ra các gói có MTU lớn hơn giá trị MTU đang hỗ trợ dẫn đến hiện tượng “packet fragmentation”, gói tin gốc sẽ được chia thành nhiều gói nhỏ hơn truyền đi và ghép lại khi đến đích, đây là một quá trình hoàn toàn bình thường xảy ra khi dữ liệu được truyền trên môi trường Internet. “Packet fragmentation” sẽ đáp ứng phần lớn nhu cầu của khách hàng.
Tuy nhiên, đối với một số dịch vụ đặc thù như Voice SIP(UDP), VPN Tunnel (IPSec/GRE), có 2 vấn đề thường xuyên dẫn đến issues:
Các gói tin được truyền đi với cờ "Do Not Fragment" (DF flag) (2).
Custom SIP Headers hoặc IPSec/GRE Headers được thêm vào gói tin gốc, làm cho kích thước gói tin lớn hơn 1450 Bytes.
Khi cả hai điều kiện trên xảy ra đồng thời, hạ tầng có thể bỏ qua gói tin ra khỏi máy ảo.
Vì thế VNG Cloud khuyến khích khách hàng chủ động giảm giá trị MTU khi khởi tạo, nếu có sử dụng các “dịch vụ nhạy cảm về MTU và yêu cầu “DF flag”” theo một trong các cách như sau để hạn chế rủi ro khi sử dụng dịch vụ:
Thay đổi cấu hình Application/Service để loại bỏ các Headers không cần thiết (ví dụ custom SIP Headers, IPSec Authentication and Encryption Algorithm).
Thay đổi MTU của VM (đối với các VM sử dụng custom flavor của KH không theo chuẩn chung VNG Cloud) về 1450 (hoặc nhỏ hơn nếu cần).
PFSense: WEB UI - Interfaces - WAN - MTU = 1450
FortiGate CLI:
Ubuntu/Linux
Liên hệ đội ngũ support qua Portal Lưu ý: (1) đối với các IPSec Tunnel yêu cầu xác thực và mã hóa cao, giá trị Headers có thể lên đến hơn 100 bytes, do đó tùy theo nhu cầu sử dụng, khách hàng nên lựa chọn giá trị MTU phù hợp 1200 – 1300 – 1450 bytes. Bảng dưới mô tả ví dụ IPSec Headers Size được thêm vào làm ảnh hưởng đến giá trị MTU thực tế đối với gói tin có Payload ban đầu 1340 bytes.
Payload
Size
New IPv4 Header for IPsec
20
AH Header
12
Next Header - 1
Payload - 1
Reserved - 2
SPI - 4
Sequence - 4
AH Digest
12
ESP Header
8
SPI - 4
Sequence - 4
ESP IV
16
Original IPv4 Header
20
Original IPv4 Payload
1320
ESP Trailer
36
ESP Pad - 2
Pad Length - 1
Next Header - 1
ESP ICV - 32
Total IPsec Packet Size sending out from VM
1444
Bảng 1: Không enable NAT-T và không enable GRE
Payload
Size
New IPv4 Header for IPsec
20
UDP Header (NAT-T)
8
AH Header
12
Next Header - 1
Payload - 1
Reserved - 2
SPI - 4
Sequence - 4
AH Digest
12
ESP Header
8
SPI - 4
Sequence - 4
ESP IV
16
Original IPv4 Header
20
Original IPv4 Payload
1320
ESP Trailer
36
ESP Pad - 2
Pad Length - 1
Next Header - 1
ESP ICV - 32
Total IPsec Packet Size sending out from VM
1452
Bảng 2: Enable NAT-T và không enable GRE
Payload
Size
New IPv4 Header for IPsec
20
UDP Header (NAT-T)
8
AH Header
12
Next Header - 1
Payload - 1
Reserved - 2
SPI - 4
Sequence - 4
AH Digest
12
ESP Header
8
SPI - 4
Sequence - 4
ESP IV
16
New IPv4 Header for GRE
20
GRE Header + Tunnel Key
8
Original IPv4 Header
20
Original IPv4 Payload
1320
ESP Trailer
40
ESP Pad - 6
Pad Length - 1
Next Header - 1
ESP ICV - 32
Total IPsec Packet Size sending out from VM
1484
Bảng 3: Enable NAT-T và GRE