IPSec 通信的 TCP MSS 调整

IPSec 通信的 TCP MSS 调整

221732
Created On 09/25/18 19:21 PM - Last Modified 04/21/20 00:20 AM


Resolution


 

对于 IPSec 通信, 帕洛阿尔托网络防火墙将在三路握手中自动调整 TCP MSS。无论 VPN 外部接口上启用了 "调整 TCP MSS" 选项, 都将发生这种情况。

 

计算的 MSS 是以下两个值的下限:

 

  1. 隧道接口 MTU-40 字节
  2. 基于接口 MTU、加密、身份验证算法的 MSS 计算

 

原始数据包大小、加密算法、认证算法和接口 MTU 之间的关系

 

让我们考虑以下情况:

 

客户端——— Palto ———互联网———远程防火墙———服务器

                              \n (IPSec)

 

客户端 MTU: 1500

服务器 MTU: 1500

VPN 终止接口的 MTU: 1500

隧道接口 MTU: 1500

加密算法: AES-256-CBC

身份验证算法: SHA1

 

ESP 开销: (所有大小以字节为单位)

 

外部 IP 头20
序号4
SPI4
初始化矢量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个字节)

 

从上面,

 

  1. 基于隧道接口 MTU 的 MSS = 1500-20 字节 (IP 报头)-20 个字节 (TCP 报头) = 1460 字节
  2. 基于接口 MTU、加密、身份验证算法 = 1388 字节的 MSS 计算

 

最终 MSS 计算: MIN (1460, 1388) = 1388。

 

同样的计算可以用于各种加密/认证算法的组合。已知的一些值为:

 

初始化向量的大小

  • AES:16 字节
  • DES: 8 字节

 

身份验证数据的大小

  • MD5/SHA-1:12 字节
  • SHA-256:16 字节
  • SHA-384:24 字节
  • SHA-512:32 字节

 

最大填充大小

  • AES:15 字节
  • DES: 7 字节

 

注意:

 

  • 上述行为已在 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 隧道上的性能。



Actions
  • Print
  • Copy Link

    https://knowledgebase.paloaltonetworks.com/KCSArticleDetail?id=kA10g000000ClW3CAK&lang=zh_CN&refURL=http%3A%2F%2Fknowledgebase.paloaltonetworks.com%2FKCSArticleDetail

Choose Language