背景:
我正在将一个数据包解析/操作程序从 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 测试的管理限制。我正在搜索(某物/任何东西)的系统文档,但无济于事。关于什么可能限制这一点的任何想法?