我正在寻找一个客户端/服务器应用程序,该应用程序可用于将网络数据包切成两半,通过独立的udp连接对数据包的每半部分进行隧道传输(因为每个udp连接将通过不同的wifi链接),然后重新组装在另一端拆分数据包。除了拆分数据包之外,每个半数据包还必须具有ID和序列号,以便可以正确地重组它们。
基本上我正在尝试做类似于MLPPP的事情
我正在寻找使用python和TUN/TAP网络驱动程序来做到这一点。
我发现以下我认为可能对该项目有用的python代码示例和模块。
Python Tun/Tap
Python原始数据包处理
我的问题是可以使用python进行必要的数据包修改吗?我可以使用上面的模块来执行此操作还是有更好的解决方案?我正在寻找一些可以指导我正确方向的输入,因为我不是一个经验丰富的程序员。欢迎任何代码示例或其他链接。
最佳答案
我们在生产中正在做类似的事情,并且效果很好。但是,我们不拆分单个数据包。我们为每个连接(无限制)设置分数权重,然后将数据包发送出去。我们有一些代码可以处理每行上的不同延迟。另一方面,我们对它们进行缓冲并重新排序。性能非常好-我们的站点拥有5条以上的ADSL线路,下载速度达到40 Mbps以上,速度非常好。
拆分数据包(例如1500/2 = 750)会带来不必要的开销……请保持您的数据包尽可能大。
我们已经为UDP数据包开发了自己的协议(protocol)( header 格式)。我们已经在tun/tap上进行了高达200 Mbps的环回测试,因此内核与用户空间交互的确可以很好地工作。以前我们使用NFQUEUE,但是存在可靠性问题。
以上所有内容都是用Python编写的。
关于python - 如何使用tun/tap接口(interface)拆分数据包,隧道传输然后重新组装。 (类似于MLPPP),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6018185/