[英]TCP and PF_RING
我正在考虑使用PF_RING
在我的应用程序中发送和接收。
如果我打算使用PF_RING
维护TCP连接,看起来我需要自己手动“伪造”IP和TCP消息,因为pfring_send
发送原始数据包。 这是否意味着我必须在PF_RING
之上手动重新实现TCP?
我知道有利用接收明显的优势PF_RING
,有没有人试图与发送数据PF_RING
? 与普通的发送呼叫相比,有明显的优势吗?
注意:我没有使用DNA(直接NIC访问),我只是使用具有NIC感知驱动程序的内核部分旁路。
要回答您的第一个问题,是的,您必须从头开始,MAC地址和所有人手动构建TCP / IP消息。 有关示例,请查看ntop.org中的pfsend.c 。
ntop.org也提供了PF_RING
用户指南 ,其中包含解释。
至于使用PF_RING
发送数据,绝对可能的想法是绕过网络上实际数据的所有概念并尽可能快地发送,参见ntop.org的线速流量生成 。 它使用内核进行TCP / IP的正常发送调用的唯一优势是,您可以更快地发送数据1.并且完全未格式化到线路上。 例如,当您想要将先前捕获的数据包/多个数据包回放到网络上时,2可以很方便。
除非您有一个特定的用例,要求您在没有内核干预的情况下访问原始底层数据,否则完全没有理由以任何方式使用PF_RING
。 您最好的选择是使用可用的标准socket()
,在大多数情况下,您可以实现的性能绰绰有余。
您有什么具体用例?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.