Linux 在不丢失数据包的情况下进行TCP转储

Linux 在不丢失数据包的情况下进行TCP转储,linux,networking,tcpdump,sctp,Linux,Networking,Tcpdump,Sctp,如何在保证所有真正通过网络的数据包都被捕获并且没有丢失的情况下进行TCP转储 详情: 我们与第三方供应商有一个问题,他们在SCTP堆栈上提供了一个解决方案,他也实现了这个解决方案。 在相当高的吞吐量每秒52000条消息的情况下,SCTP链路中断时,平均消息大小为500字节。 我们认为该缺陷存在于供应商的SCTP堆栈中。 但供应商表示,之所以会出现这种情况,是因为SCTP堆栈发送消息,不接收其中的ACK,发送多次重传,也不接收其中的ACK,并关闭SCTP链接。 所以供应商说,这是有罪的网络,因为它

如何在保证所有真正通过网络的数据包都被捕获并且没有丢失的情况下进行TCP转储

详情: 我们与第三方供应商有一个问题,他们在SCTP堆栈上提供了一个解决方案,他也实现了这个解决方案。 在相当高的吞吐量每秒52000条消息的情况下,SCTP链路中断时,平均消息大小为500字节。 我们认为该缺陷存在于供应商的SCTP堆栈中。 但供应商表示,之所以会出现这种情况,是因为SCTP堆栈发送消息,不接收其中的ACK,发送多次重传,也不接收其中的ACK,并关闭SCTP链接。 所以供应商说,这是有罪的网络,因为它丢失了数据包

在客户端和服务器两侧的TCP转储中,我们看到原始消息到达服务器,并且看到服务器没有应答ACK。但该供应商表示,TCP转储不可靠,在捕获TCP转储时,某些数据包可能无法捕获,因为libpcap库仅在一个硬件线程内工作,其功能可能不足以记录所有数据包

技术数据: 52000条消息/秒,平均消息大小为500字节,因此总共使用了4条SCTP链路,速度为26MB/秒。 硬件:CPU E5-2670,2.6 GHz,8个硬件线程 网络:10 GBit,流量在位于一个机架中的HP刀片服务器之间。
RHEL 6.

您是否真的在转储中丢失了数据包?我想tcpdump会告诉您是否有未捕获的数据包。@Barmar实际上没有捕获的数据包:/usr/sbin/tcpdump-w 1.pcap tcpdump:eth0上的侦听,链接类型EN10MB以太网,捕获大小65535字节^C392812数据包捕获395167数据包由筛选器接收2332数据包由内核丢弃检查此线程:您需要在能够捕获所有数据包的硬件上运行捕获。哦,我忘了,它是Linux!当然,你可以放慢你的网卡速度,而不是买一张慢一点的:我会先试试100BaseT。如果内核仍然丢弃包,那么您可以使用10BaseT,这会更慢。