Tru*_*ats 5 linux debian network-programming freebsd pf-ring
我正在将数据包解析/处理程序从FreeBSD移植到Linux(特别是Debian-jessie)。该程序在执行TX操作之前执行解析/操作的同时,在两个物理接口之间实现了双向桥接。
在FreeBSD中,此应用程序使用Pcap进行RX / TX。到目前为止,在Linux中,我已经对Pcap,PACKET_MMAP(使用TPACKET_V2)和Vanilla PF_RING进行了测试。
使用相同的硬件和实验室环境,我观察了通过iperf进行的几次测试的以下(大致)吞吐量结果:
Debian用户空间的速度对我来说似乎很可笑。它们无法使用-我怀疑我缺少了一些东西。我是否需要启用系统选项(“快转”,大声笑)?
还是这仅仅是Linux用户空间桥接的方式?
我一直怀疑,有一个管理上的限制会影响Debian测试。我正在搜索系统文档以查找(某物/任何东西)无济于事。有什么想法可以限制这一点吗?
晦涩的问题会找到晦涩的答案......
经过大量研究,我发现Linux在这种情况下的“问题”实际上是优化的结果。显然,默认情况下,系统正在针对大型持续负载进行优化(因此 YMMV 具有以下“修复”)。
我解决了速度问题,并通过使用 ethtool 调整两个桥接接口的优化,发现与 FreeBSD 系统相同的吞吐量:
ethtool -K eth1 gso off gro off tso off ufo off lro off
Run Code Online (Sandbox Code Playgroud)
在两个接口上执行上述操作后,PF_RING 和 PACKET_MMAP 满足内核桥接速度(这是我的测试实验室的最大速度),并且 Pcap 测试结果约为 300Mb/s。
| 归档时间: |
|
| 查看次数: |
472 次 |
| 最近记录: |