IPsec-VPN连接只支持传输已经分片的数据包,不支持对数据包分片及数据包分片重组。在您使用IPsec-VPN时,IPsec协议会对数据包进行加密,加密过程会扩大数据包长度,扩大后的数据包长度可能会超过网络中设置的最大数据传输单元MTU(Maximum Transmission Unit),影响数据包的正常传输。本文介绍如何设置MTU以确保数据包的正常传输。
MTU配置原则
本文以上图场景为例说明MTU配置原则。本地数据中心已与专有网络VPC(Virtual Private Cloud)建立了IPsec-VPN连接。在客户端访问VPC资源时,数据包将在本地网关设备中加密后被传输至互联网,经过互联网中的网络设备(图例中为路由器2和路由器3)被传输至VPN网关。
在数据包从客户端传输至VPN网关的过程中,数据包的大小将会受到以下三种MTU的限制:
用户MTU
用户MTU即客户端和本地网关设备之间所有网络设备接口MTU的最小值。该MTU会限制客户端发送的数据包的大小。
本示例用户MTU取标记为1的接口中MTU的最小值。
公网接口MTU
公网接口MTU即本地网关设备连接VPN网关的公网接口上的MTU。该MTU会限制被加密后的数据包的大小。
本示例公网接口MTU取标记为2的接口的MTU。
路径MTU
路径MTU即互联网中所有网络设备接口MTU的最小值。该MTU会限制被加密后的数据包的大小。
您可以向相关互联网厂商咨询路径MTU。通常以太网的路径MTU默认为1500字节。
本示例中路径MTU取标记为3的接口中MTU的最小值。
为确保数据包被正常传输,您需要在本地数据中心配置用户MTU和公网接口MTU,使上述三种MTU满足以下关系:
用户MTU的最大值=min{公网接口MTU,路径MTU}-101 # 101是IPsec协议为数据包加密后占用的最大字节数。
对于2021年04月01日之前创建的VPN网关,如果配置本地数据中心的用户MTU大于1300字节(不包含1300字节),则可能存在IPsec-VPN连接不通的问题,建议您将VPN网关升级至最新版本以规避该问题。关于如何升级VPN网关,请参见升级VPN网关。
MTU配置示例
如上图所示,假设路径MTU为1500字节,您设置的本地网关设备公网接口的MTU也为1500字节,则:
用户MTU的最大值=min{1500,1500}-101=1500-101=1399字节
即客户端发送数据包时,数据包的大小建议不超过1399字节,否则可能会导致数据包无法正常传输。
MSS配置建议
在通过IPsec-VPN连接传输TCP流量的场景下,如果需要确保数据包不被分段传输,则最大分段大小MSS(Maximum Segment Size)和用户MTU需保证以下关系:
MSS=用户MTU-IP数据包头部占用字节数(20字节)-TCP数据包头部占用字节数(20字节)
例如,在公网接口MTU和路径MTU均为1500字节的情况下,用户MTU最大为1399字节,为确保数据包不被分段传输,MSS的最大值为1359字节。