我需要在我的 NetFilter 挂钩中窃取一些 SKB,并将它们保留一段时间。
内核对我一次可以使用多少个 SKB 有限制吗?在我的内核模块中保存大约 100,000 个甚至更多的 SKB 会有什么后果?如果我可以有很多很多 SKB,我可以避免复制我的数据包两次。
问候, 丹尼斯
我需要在我的 NetFilter 挂钩中窃取一些 SKB,并将它们保留一段时间。
内核对我一次可以使用多少个 SKB 有限制吗?在我的内核模块中保存大约 100,000 个甚至更多的 SKB 会有什么后果?如果我可以有很多很多 SKB,我可以避免复制我的数据包两次。
问候, 丹尼斯
如果你的内存没有问题。限制是 32 位 x86 机器上的内核数据空间通常限制为 1G(参见http://kerneltrap.org/node/2450)。意识到每个 skb 消耗 skb 数据结构以及它引用的内存。您还可以使用 ipqueue 在用户空间中进行处理(有更多可用内存)。
上面的链接失效,最后一个已知版本缓存在这里