我正在为我最近工作的网络项目寻求帮助和意见建议。这需要Linux机器成为被动网络设备。
网络数据包来自一个网络接口,来自另一个接口(net - eth0 - > Linux PC - eth1 - > net),而不对数据进行任何修改。
将在Linux系统上运行的应用程序将仅更改数据包的顺序。这将是一个愚蠢的"网络仿真器应用程序。
第一个实现是使用RAW套接字进行的,每次数据包到达用户空间时都会调用read(),而当以太网数据包应该发送到NIC时调用write()。
我想知道是否有比RAW套接字更实用和更直接的方法,绕过Linux的网络堆栈。
答案 0 :(得分:1)
如果您想要的是绕过内核,Linux中的DPDK和FreeBSD中的NetMap可以做到这一点。
答案 1 :(得分:0)
确实,这可以在Linux中的dpdk中完成。 dpdk树的examples文件夹中有l3fw和l2fwd示例应用程序,这可能会激发您的灵感。还可以考虑使用vpp,一个由Linux Foundation托管的fd.io项目,它可以使用dpdk。
拉米罗森