我需要编写一个位于两个服务器之间的应用程序,并通过向每个数据包添加特定的HTTP标头来修改从一个服务器发送到另一个服务器的HTTP数据包。
显然它必须尽可能快地完成,我发现通过使用eBFP和XDP,我可以捕获具有高性能的数据包,但据我所知,XDP判决是中止,丢弃,传递和TX 。
使用 tx 判断我可以将捕获的数据包发送到用户空间程序进行修改,但是我无法弄清楚如何在修改标头后发送数据包?这段视频here解释了使用eBPF和XDP可以做些什么,并说它可以完成,但我无法找到方法。
任何帮助将不胜感激。
答案 0 :(得分:1)
据我所知,for val in s["chris"]:
print(len(val))
将不让数据包通过用户空间。它将在来自其的同一NIC上返回数据包。另外,您可以修改数据包,但是我看不到扩展数据包的简便方法。因此,要编写其他标题,您将不得不覆盖一些数据。
您似乎有两个选择:
答案 1 :(得分:0)
如果您仍然对该主题感兴趣,那么答案是否定的。但是,可以使用XDP套接字从内核空间或用户空间转发/发送新数据包。在github上签出XDP教程,或查看Linux内核samples/bpf
中的代码。