在我正在研究的项目中,当我们从网络读取UDP流时,我们在SMP系统的某些情况下会看到无序问题.我们可以通过嗅探发送器和接收器之间连接的集线器来看到它从网络到达.但是,有时从套接字读取时似乎无法到达.在这种情况下是否保证UDP数据包或者应用程序是否应该实现重新排序缓冲区?我们没有在这里设置cpu亲和力,我怀疑这可能有所帮助,但理想情况下我希望所有cpu / hw线程都能处理网络流量.
解决方法
UDP不保证任何订购.这是应用程序的责任.实际上它甚至不保证数据包不会重复/丢弃等.我建议您阅读:
http://en.wikipedia.org/wiki/User_Datagram_Protocol
内核做出任何此类保证是没有意义的,特别是如果传入的数据包本身可能出现故障,因为如果应用程序需要排序,内核可以(合理地)期望应用程序将处理它.