我需要通过两个不同的(不可靠的)互联网连接复制 RTP 流。
在接收器端,我可能会运行一个自定义程序,该程序将使用缓冲区并在使用它之前重建流。
但我在通过两个连接分配流量时遇到了一些麻烦。我做了一些研究,发现也许tc
(部分iproute2
)可能是我所需要的。
答案1
Linux 内核版本 2.6.35 引入了一个新的配置选项CONFIG_NETFILTER_XT_TARGET_TEE
:
此选项添加一个“TEE”目标,通过该目标可以克隆数据包,并将该克隆重新路由到另一个下一跳。
iptables从 1.4.8 开始支持该-j TEE
目标。
早期的支持是通过xtables 插件,其中包括内核模块和用户态工具。如果您更愿意坚持使用发行版的内核并且它太旧而无法使用,您可能仍然更喜欢此选项TEE
。
有一个教程由 bjou 提供(在该功能包含在官方内核和 iptables 之前编写)。
答案2
网络协议栈旨在限制重复。
通过 TCP 建立隧道可能会更好。否则,您可能需要构建自己的程序来复制输出。你们的关系多么不可靠。我的通常可靠度超过 99.9%。
答案3
也许是一个数据包嗅探包,例如斯卡比可以帮你。我最近用它来拦截数据包并修改它们的标头。它本质上相当于按照 BillThor 的建议创建一个新程序,但我发现 scapy 非常易于使用。虽然这可能不是同类中最好的包,但也许类似的东西会满足您的需求。