gpt4 book ai didi

linux - DPDK 和 Netfilter 的区别

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:13 41 4
gpt4 key购买 nike

我想绕过 Linux 网络堆栈并将原始数据包转换为我在 userland 中的自定义代码并在那里处理它们。

我知道您可以使用 pf-rings 或 DPDK 等来制作您的自定义驱动程序。但是我不明白为什么我要制作这些类型的驱动程序,而我可以使用 Netfilter 并将我的模块挂接到 NF_IP_PRE_ROUTING 状态并将数据包发送到 userland

如果有人能向我解释它们之间的主要区别,那将对我有很大帮助。

最佳答案

DPDK 和 Netfilter Hook 之间存在巨大差异。当使用 Netfilter/hooking NF_IP_PRE_ROUTING 时,您劫持了数据包流并将数据包从内核空间复制到用户空间。这种复制会导致很大的开销。

当使用 DPDK 时,您实际上是将网卡的数据包缓冲区映射到用户空间内存区域。这意味着内核不是从 NIC 获得中断,而是将其传递通过所有队列,直到它到达 NF_IP_PRE_ROUTING ,后者会根据请求将打包程序复制到用户空间,DPDK 为您提供从用户空间直接访问映射数据包缓冲区的可能性,绕过内核的所有元处理,有效地提高性能(以代码复杂性和安全性为代价)。

关于linux - DPDK 和 Netfilter 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53360136/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com