【发布时间】:2014-07-11 20:00:11
【问题描述】:
我有一个内核模块,它从 netfilter 挂钩读取数据包并使用 sk_buff 访问数据。
我观察到,当数据包以慢速到达时,sk_buff->len 表现正常,但是当数据包以更高的速率(1Gbps 等)到达时,sk_buff->len 的少数数据包开始增加(始终是 8 的倍数)。
我正在重放的数据也有碎片数据包。碎片数据包是否附加在相同的 sk_buff 中导致 sk_buff->len 增加?如果是,sk_buff 如何知道堆栈以及在什么时候?
有人可以解释为什么会发生这种情况以及如何解决这个问题。对某些文档的任何引用也会有所帮助。
【问题讨论】:
标签: c linux-kernel kernel linux-device-driver kernel-module