我们正在实施基于 SIP 的解决方案,并已将设置配置为与 RTPProxy 一起使用。现在,我们正在通过 RTPProxy 路由所有内容,因为我们在依赖 ICE 的媒体传输方面遇到了一些问题。如果我们没记错的话,如果两个客户端位于对称 NAT 之后,则中央中继服务器对于在两个客户端之间中继流数据是必要的。实际上,这是否占所有消费者用户的很大一部分?如果我们实施适当的路由以在不需要时跳过中继服务器,我们将节省多少带宽。我们还缺少更好的解决方案吗?
按有用性降序排列:
如果你实现上面的完整列表,那么你必须放弃很少的连接,并且不必在代理的带宽利用率上花费太多时间。我比较熟悉的 BitTorrent 协议通常止于 UPnP,但提供了一个内置测试来测试通过 NAT 的连接性。
真的很奇怪为什么 IPv6 没有早点实现——这是在浪费程序员的时间。
真实世界的 NAT 类型调查(虽然不是一个庞大的数据集):
https://web.archive.org/web/20200213115759/http://nattest.net.in.tum.de/results.php
根据谷歌的说法,大约有8%的流量需要中转:http://code.google.com/apis/talk/libjingle/important_concepts.html
大部分(如果不是大多数)家庭用户使用 NAT,因为那些 xDSL/有线路由器使用它来提供对本地网络的网络访问。
理论上可以使用UPnP打开端口,在路由器上设置转发规则,透明通过NAT。不幸的是(或者幸运的是,取决于你是谁)许多用户理所当然地在他们的路由器上禁用 UPnP,并且可能不喜欢必须手动添加转发规则。
您可能能够做的(以及 Skype 所做的 AFAIK)是让一些具有清晰网络路径和足够带宽的用户充当中继节点。除了路由和 QoS 问题,您至少必须找到一些方法来确保任何人(包括中继节点的所有者)的任何中继数据的隐私。此外,除了技术问题外,这种方法可能还有法律问题需要解决。