在内核中使用 qdiscs 进行网络输出缓冲

在内核中使用 qdiscs 进行网络输出缓冲

我必须实现网络输出数据包的缓冲和释放。我的目标是实现某种东西,可以缓冲某些服务器生成的传出数据包,然后在收到信号后将其释放到外部世界。这对正在运行的服务器应该是透明的,即不需要对服务器进行修改。此链接https://docs.huihoo.com/doxygen/linux/kernel/3.7/sch__plug_8c_source.html似乎解决了这个问题,但我无法生成任何可以模拟此问题的小型工作示例。问题是我应该如何获取传递给函数的参数,例如struct sk_buff *skbstruct nlattr *opt

正如在 I/O 缓冲部分中提到的那样(https://wiki.qemu.org/Features/MicroCheckpointing雷穆斯(虚拟机的容错方法)的实现qemu/kvm也这样做。他们的代码有点复杂,难以理解,我们甚至无法在 github 页面上打开问题,所以我正在寻找一个可以执行操作以缓冲和释放内核队列中的数据包的plug工作示例。unplugqdiscs

我已经花了两周时间,但还是没能做到。如果可以用我不知道的其他方法做到,请也发布这些解决方案。

相关内容