MTU带来的问题
发布网友
发布时间:2024-10-07 13:21
我来回答
共1个回答
热心网友
时间:2024-10-07 23:56
割接旧专线流量到带有GRE隧道的新专线时,发现部分用户电脑浏览网站异常,问题聚焦于GRE隧道技术。GRE(General Routing Encapsulation)技术可以将一种协议的数据报文封装在另一种协议中,用于解决异种网络间的传输。然而,在新专线中,GRE隧道的引入导致了数据包大小问题,引发用户体验问题。MTU(最大传输单元)和MSS(最大报文段大小)成为了关键因素。
MTU限制了一个数据包的最大尺寸,以太网标准为1500字节。在使用GRE隧道时,数据包会增加GRE头部和新的IP头部,MTU会相应减少到1476字节,以确保数据包能在以太网中传输。如果数据包过大,GRE隧道会将其分片,以适应网络的MTU。然而,分片会增加数据包的传输时延和复杂性,影响整体性能。
在传输过程中,如果数据包中的分片丢失,传输层(如TCP)将需要重新传输所有分片,这会显著降低数据传输的成功率。为了避免分片,服务器在TCP握手阶段会与对方协商MSS大小,通常会将MSS协商为1460字节,以适应GRE隧道的MTU。然而,这种方法仅解决了源主机与目的主机之间的MTU问题,不能应对路径中更小MTU的挑战。
PMTU(路径MTU发现)机制被用来动态确定从数据包源到目的地路径上的最小MTU,但其依赖于ICMP消息,实际生产环境中防火墙和安全策略可能阻止这些消息,导致主机无法获取正确的MTU信息,影响TCP/UDP网络通信。
通过模拟测试,发现GRE隧道接口MTU减小至1476字节,而服务器默认协商的MSS为1500字节,导致数据包在传输过程中被丢弃。为解决此问题,可以调整服务器的MSS为1436字节,避免分片。然而,这需要服务器与网络设备之间的协商一致。
在处理普通电脑浏览网页异常问题时,发现原因是电脑防火墙策略阻止了ICMP消息的接收,导致MSS无法更新,数据包被丢弃。解决此问题的方法包括配置防火墙允许ICMP消息、调整生产网接口MTU或避免使用IP隧道技术。综合考虑实施复杂度和成本,最终选择使用无IP隧道的专线,有效解决了MTU引发的故障。