这个警告通常是由于发送的数据包大小超过了网络接口的MTU(最大传输单元)而引起的。MTU是指在网络中可以传输的最大数据包大小,它是由网络协议和硬件设备共同决定的。
当我们尝试发送一个超过MTU大小的数据包时,操作系统会将其分成多个较小的数据包进行传输。但是,在某些情况下,操作系统可能无法正确地分割数据包,或者网络接口可能无法处理这样的数据包,从而导致发送失败并出现上述警告。
要解决这个问题,有以下几种方法:
1. 调整发送的数据包大小,确保不超过网络接口的MTU。可以使用ping命令测试网络接口的MTU大小,并根据需要调整发送数据包的大小。
2. 使用TCP协议代替UDP协议发送数据包。TCP协议会自动将数据包分割成适当的大小,并保证可靠传输。
3. 在发送数据包之前,检查网络接口的MTU大小,并根据需要将数据包分割成多个较小的数据包进行传输。
4. 如果您使用的是DPDK等高性能网络库,可以考虑使用Jumbo帧来增加MTU大小,以便发送更大的数据包。
总之,当出现“Unable to send packet: Error with PF_PACKET send() [11]: Message too long (errno = 90)”警告时,我们需要检查发送的数据包大小是否超过了网络接口的MTU,并根据需要采取适当的措施来解决问题。