如何进行TCP转储,保证真正通过网络的所有数据包都被捕获,并且没有遗漏?
详细信息:我们与在 SCTP 堆栈之上提供解决方案的第 3 方供应商有问题,他也实施了该解决方案。
在相当高的吞吐量(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 个硬件线程
网络:10 GBit,流量在位于一个机架中的 HP 刀片之间。
瑞尔 6.