收到ICMP碎片需要消息时应该发生什么?

一般来说,特别是在Solaris 10的机器上…

看,我们的networking有问题。 我处理负载均衡器后面的Solaris 10服务器上的一些反向代理实例,有些用户通过NAT防火墙访问这个实例,无论如何,在两天前的某个时刻,它全部崩溃,无法工作。

在数据包捕获和分析之后的几个小时内,我们看到的是,当内部客户端之一试图访问一个站点时(特别是当我们发送服务器Hello SSL消息的时候),LB发回需要一个ICMP Fragmentation消息,说明MTU是508字节,而数据包是用Dont Fragment位设置的,就像在Solaris中默认的那样。

好吧,一切都好。 但是接下来发生的一切就是,由于没有收到ACK(因为客户端从未接收到数据包),Solaris机器再次发送数据包…相同的大小,相同的DF位。

所以当然这最终没有可能的沟通。

在收到这个ICPM消息时,Solaris OS是否应该取消这些数据包的DF位,或者将MSS的连接调整为<该消息告诉我们的MTU? 这是什么东西,可以configuration为启用/禁用? 或者这是应该发生什么?

我不确定Solaris 10中的pathMTU发现是如何实现的,但是如果它不考虑此消息,那么它如何调整MSS?

提前感谢任何指针,帮助或只是想法在哪里看:)