对于 IPSec 通信, 帕洛阿尔托网络防火墙将在三路握手中自动调整 TCP MSS。无论 VPN 外部接口上启用了 "调整 TCP MSS" 选项, 都将发生这种情况。
计算的 MSS 是以下两个值的下限:
- 隧道接口 MTU-40 字节
- 基于接口 MTU、加密、身份验证算法的 MSS 计算
原始数据包大小、加密算法、认证算法和接口 MTU 之间的关系
让我们考虑以下情况:
客户端——— Palto ———互联网———远程防火墙———服务器
\n (IPSec)
客户端 MTU: 1500
服务器 MTU: 1500
VPN 终止接口的 MTU: 1500
隧道接口 MTU: 1500
加密算法: AES-256-CBC
身份验证算法: SHA1
ESP 开销: (所有大小以字节为单位)
外部 IP 头 | 20 |
序号 | 4 |
SPI | 4 |
初始化矢量 | 16 |
ESP 填充 | [0-15] |
填充长度 | 1 |
下一页标题 | 1 |
身份验证数据 | 12 |
| |
总计 | [58-73] |
因此, AES-256 与 SHA1 产生的最大开销为73字节。
原始数据包大小 + 最大开销<= 1500></= 1500>
tcp 段 + tcp 报头 + IP 报头 + 最大开销<= 1500></= 1500>
TCP 段 + 20 字节 + 20 字节 + 73 字节<= 1500></= 1500>
TCP 段<= 1387 bytes 1387=""></= 1387 bytes>
如果 MSS 被视为 1388, 那么在这种情况下产生的 ESP 头将仅为1496字节。(填充将仅为10个字节)
从上面,
- 基于隧道接口 MTU 的 MSS = 1500-20 字节 (IP 报头)-20 个字节 (TCP 报头) = 1460 字节
- 基于接口 MTU、加密、身份验证算法 = 1388 字节的 MSS 计算
最终 MSS 计算: MIN (1460, 1388) = 1388。
同样的计算可以用于各种加密/认证算法的组合。已知的一些值为:
初始化向量的大小
身份验证数据的大小
- MD5/SHA-1:12 字节
- SHA-256:16 字节
- SHA-384:24 字节
- SHA-512:32 字节
最大填充大小
注意:
- 上述行为已在 PAN OS 6.0 和更高版本中进行了测试。
- 在上面相同的情况下, 如果将隧道接口的 MTU 设置为 1400, 则生成的 MSS 将为 1360, 而不是1388。
上述计算也可用于计算 IPSec 隧道的最佳 MSS 值。如果防火墙在考虑 ESP 开销的情况下不自动调整 MSS, 则可以在隧道上设置 MTU 的正确值。用于 TCP 调整的 X 接口。
例如, 如果在上述情况下, 防火墙没有根据 ESP 开销调整 MSS, 则可以将隧道接口 MTU 设置为 1387 + 40 = 1427 字节。这将导致 MSS 值被调整为相同的1387字节。
这有助于提高 TCP 应用程序在 IPSec 隧道上的性能。