我们正在使用原始套接字测试UDP流量。测试是将IP接口MTU
设置为700 B,并在特定的原始套接字上设置IP_MTU_DISCOVER
选项,该选项应启用PMTUD
并为传出数据包设置DF
位。
在向套接字发送1000 B大小的数据包之后,我们观察到,在离开绑定了套接字的特定IP接口并且未设置DF
标志(MF
标志之后,数据包立即被分成较小的数据包而是设置了。)
我们尝试使用选项IP_PMTUDISC_WANT
和IP_PMTUDISC_DO
,但最终效果相同-每种情况下数据包都是碎片化的。
我们的期望是,一旦将MTU
选项设置为IP_MTU_DISCOVER
,内核将丢弃比相应接口IP_PMTUDISC_DO
大的数据包。
而是,无论特定的IP_MTU_DISCOVER
选项值集如何,数据包都会被分段。
有什么办法可以避免这种碎片化?即使在套接字所在的接口上,特定的套接字选项也应用DF
位吗?