用户空间桥接 – Linux与FreeBSD

背景:

我正在努力将数据包解析/操作程序从FreeBSD移植到Linux(特别是Debian – jessie).该程序在两个物理接口之间实现双向桥接,同时在TX操作之前执行解析/操作.

在FreeBSD中,这个应用程序使用Pcap到RX / TX.在Linux中,到目前为止,我已经使用Pcap,PACKET_MMAP(使用TPACKET_V2)和Vanilla PF_RING进行了测试.

检测结果:

使用相同的硬件和实验室环境,我观察了使用iperf执行的几个测试的以下(近似)吞吐量结果:

> FreeBSD内核桥:880Mb / s
> FreeBSD Pcap(用户空间)网桥:700Mb / s
> Debian内核桥:880Mb / s
> Debian Pcap(用户空间)网桥:120Kb / s
> Debian Vanilla PF_RING(用户空间)网桥:980Kb / s
> Debian PACKET_MMAP(用户空间)网桥:480Kb / s

思考和问题:

Debian用户空间速度对我来说似乎很荒谬.他们无法使用 – 我怀疑我错过了什么.我需要启用一个系统选项(“快速”,大声笑)?

或者这就是Linux用户空间桥接的方式?

编辑/更新

我一直怀疑存在影响Debian测试的管理限制.我正在搜索(某些/任何东西)的系统文档但无济于事.关于什么可以限制这个的任何想法?

解决方法:

晦涩的问题找不到晦涩的答案……

经过大量研究后,我发现在这种情况下Linux的“问题”实际上是优化的结果.显然,默认情况下,系统正在针对大型持续负载进行优化(因此YMMV具有以下“修复”).

我通过使用ethtool调整我的两个桥接接口上的优化来解决速度问题并找到与FreeBSD系统相同的吞吐量:

ethtool -K eth1 gso off gro off tso off ufo off lro off

在上述两个接口之后,PF_RING和PACKET_MMAP满足内核桥接速度(这是我测试实验室的最大速度),Pcap测试导致大约300Mb / s.

上一篇:linux – syslog在日志轮换后停止记录


下一篇:php – Web服务器配置文件的版本控制