如何建立TCP转储,以确保捕获真正通过网络的所有数据包,并且不会遗漏任何内容?
详细说明:
我们遇到了第三方供应商的问题,他们在SCTP堆栈之上提供解决方案,他也实施了这个解决方案
在相当高的吞吐量(52 000条消息/秒,平均消息大小为500字节)下,SCTP链路断开
我们认为该漏洞存在于供应商的SCTP堆栈中。
但是供应商说,这是因为SCTP堆栈发送消息,没有接收到ACK,发送多次重传,也没有接收到它们的ACK并关闭SCTP链接。
所以供应商说,这是一个有罪的网络,因为它丢失了数据包。
在双方,客户端和服务器的TCP转储中,我们看到原始消息到达服务器并看到服务器没有用ACK回答。但供应商表示TCP转储不可靠,在捕获TCP转储时,可能无法捕获某些数据包,因为libpcap库仅在一个硬件线程内工作,其功率可能不足以记录所有数据包。
技术数据:
52 000消息/秒,平均消息大小为500字节,因此总共26 MB /秒,使用4个SCTP链接
硬件:CPU E5-2670,2.6 GHz,8个HW螺纹
网络:10 GBit,流量位于HP刀片之间,HP刀片位于一个机架中
RHEL 6.