何时使用调整 MSS

何时使用调整 MSS

120786
Created On 10/15/19 09:43 AM - Last Modified 03/26/21 17:49 PM


Symptom


TCP 传输失败/超时一段时间后。 
例如,客户端 PC 正在尝试访问网站,网页不会加载和超时发生或仅部分加载。
浏览器可能提供"ERR_CONNECTION_TIMED_OUT"或仅加载网页的某些部分。
网页可能需要很长时间才能完全加载到浏览器上。


Environment


任何 TCP 基于的转移。 
本文档中讨论了网站访问问题。


Cause


初步检查 :
必须首先检查浏览器的错误或状态,看看问题是否由服务器问题引起。
如果看到 500 或 400 系列的 http 错误代码,则可能是服务器或授权相关问题。
如果没有这样的错误代码,如果 PC 能够解决 URL ,那么问题可能是由于 MTU 路径上的问题。

为清楚和简单起见,本文档将下面的拓扑视为设置。

拓扑 :


用户添加的图像


假设:
MTUR1 路由器 eth1/1 接口上的设置为 1400 字节。
10.10.40.1 是托载 abcd.com 网站的 Web 服务器。
客户端上的 abcd.com PC 解析为 10.10.40.1
网站不加载客户 PC 端。
 


Resolution


如何降低 MTU 影响 TCP 通信:
在这种情况下,由于 MTU 路由器 R1 的 eth1/1 接口设置为 1400 字节,那么 1400 字节的大小数据包必须分散才能从此界面发送出去。
如果"不要碎片 " DF () 标记设置在 IP 数据包的标题上,则路由器 R1 必须删除数据包并将"需要的碎片但 DF 位设置 "(类型 3,代码 4) ICMP 错误代码发送到源。
大多数 TCP 基于的应用程序都会在 DF 标题上设置位 IP 。
考虑从服务器 10.10.40.1 发送到客户端 10.10.10.1 的大小 1500 字节的数据包。
由于 DF 此数据包上的标记将被设置,路由器 R1 在尝试将其从以太网 1/1 界面发送时会丢弃该数据包。
这将导致所有大小包超过 1400 字节被丢弃,因此网页不会加载到客户端。
如果 SSL HTTPS ()连接正在使用,那么与服务器证书的数据包通常是大包,可能会被丢弃,导致 SSL / TLS 握手失败。

如何查找 MTU 问题和最佳 MSS :
并不总是可以访问路径中的所有主机来检查 MTU 设置。
A 客户端或服务器的简单 ping 测试 PC 可用于确定 MTU 路径中是否存在问题。
在执行 Ping 时必须设置以下参数。
1. 不要碎片位 (-f)
2. 大小 (-l)
下面的输出取自 Windows PC 。 不同的命令必须用于运行不同设备的机器 OS 。
如上所述,由于 MTU R1 路由器上的 eth1/1 设置为 1400 字节,因此客户端上的 ping 测试将显示以下结果。

C:\Users\skadmin>ping 10.10.40.1 -f -l 1472
Pinging 10.10.40.1 with 1472 bytes of data:
Packet needs to be fragmented but DF set.
Packet needs to be fragmented but DF set.
之所以选择 1472 字节作为第一次测试的大小,是因为完整的数据包将是 1500 字节。
完整包=20B( IP 标题)=8B( ICMP 标题)=1472B(有效载荷)=1500字节。 
我们可以看到 ICMP "需要碎片但 DF 已设置位"的消息正在恢复。 
因此,我们执行多个这样的 Ping 测试,以找出能够到达服务器和返回而不获取片段的最大数据包大小。
C:\Users\admin>ping 10.10.40.1 -f -l 1440
Pinging 10.10.40.1 with 1440 bytes of data:
Packet needs to be fragmented but DF set.

C:\Users\admin>ping 10.10.40.1 -f -l 1350
Pinging 10.10.40.1 with 1350 bytes of data:
Reply from 10.10.40.1: bytes=1350 time=447ms TTL=58

C:\Users\skadmin>ping 10.10.40.1 -f -l 1380
Pinging 10.10.40.1 with 1380 bytes of data:
Packet needs to be fragmented but DF set.

C:\Users\admin>ping 10.10.40.1 -f -l 1372
Pinging 10.10.40.1 with 1372 bytes of data:
Reply from 10.10.40.1: bytes=1372 time=438ms TTL=58

C:\Users\admin>ping 10.10.40.1 -f -l 1373
Pinging 10.10.40.1 with 1373 bytes of data:
Packet needs to be fragmented but DF set.
分割和征服方法已用于查找 ping 成功的 Max 值。 
基于上述测试输出,可以看到 ping 在大小为 1372 字节时工作,在 1373 字节时失败。 
这意味着只有 1400 字节 数据包才能到达服务器并返回,而不会变得支离破碎。
1372字节+ ICMP 标题8字节+ IP 标题20字节=1400字节。 

要确定可以使用 的最佳值 MSS ,请采取上述测试的结果,即 1400 字节,并减去潜在的 TCP 标题和 IP 标题值。 
1400字节-( IP 标题20字节+ TCP 标题20字节)=1360字节。 
因此, MSS 可以使用的最佳是 1360字节。 

如何使用此最佳 MSS 配置:
大多数防火墙和路由器都能够 MSS TCP 通过它们调整连接的价值。
它们可以重写 MSS SYN SYN ACK 客户端和 Sever 之间交换的包和数据包上的值。
此功能可用于将 MSS 值设置为计算的最佳 MSS 值 1360 字节,以便客户端和服务器都将仅构建其细分市场到该大小。
TCP IP 然后添加标题和标题后,完整数据包的大小将等于 1400 字节,这是无需碎裂即可通过的最大数据包大小。 
细分 1360 字节 + TCP 标题 20 字节 + IP 标题 20 字节 = 1400 字节。


因此,可以避免路径上的碎片问题,避免 TCP 连接和数据包掉落。
请注意,即使调整 MSS 价值就 PA firewall 解决了问题,问题不是由 Firewall 。
问题是由设置较低的路径中的其他主机引起的 MTU 。

PA firewall要将值调整 MSS 为 1360 字节,调整大小必须配置为 140 字节。
1500 - 1360 = 140 字节

请参阅以下链接以配置 MSS 调整值。 
配置 MSS 调整大小


Additional Information


其他有用链接:
TCP MSS IPSEC PA 防火墙
HOW THE PALO ALTO NETWORK FIREWALL HANDLES PACKETS THAT EXCEEDTHE MTU
HOW TO CONFIGURE MTU AND MSS SETTINGS FROM THE CLI隧道上的流量如何自动调整



Actions
  • Print
  • Copy Link

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

Choose Language