首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux原始套接字(layer2) -最佳策略

Linux原始套接字(layer2) -最佳策略
EN

Stack Overflow用户
提问于 2015-01-22 07:46:33
回答 1查看 910关注 0票数 1

背景:

我正在考虑处理数据包的最佳方式,从nic到应用程序。

我有4个进程运行和接收数据包从以太网网卡。

它们运行pf_packet套接字,以便接收第二层数据包。

问题是,他们都必须过滤他们看到的数据包。

没有竞争条件,因为过滤是通过端口完成的。一个应用程序对一个独特的端口感兴趣。

问题是:

有没有办法避免每个应用程序过滤所有的数据包?有一个核心的过滤器和通信包到正确的应用程序需要上下文切换成本。

nic是否可以将与自定义端口相对应的数据包放入定义的rx队列中?那样的话,我的应用程序就会确定那些包是专门为它准备的。

最好的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2015-01-23 10:07:04

如果您不想使用BPF和libpcap,也许您可以使用Linux套接字过滤器https://www.kernel.org/doc/Documentation/networking/filter.txt --这将在将包套接字传递给您的包套接字之前过滤内核空间中的数据包。

对于一些语法示例,请使用BSD BPF手册页https://www.freebsd.org/cgi/man.cgi?query=bpf&sektion=4或google/duckduckgo。

但是我也建议,如果您的应用程序是性能关键的,那么在放弃任何一个替代品(比如libpcap)之前,您可以对不同的替代方案进行原型和度量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28090768

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档