讨论:为什么没有”pluggable multipath tcp”

2016-10-25 09:22:30 +08:00
 Siril
标题的 pluggable 借自 tor 的 obfsproxy ,设想的用法相同。

设想 site a 到 site b 有带宽、延迟相近的多条链路,之间用 ovpn 连接。
例如 site a 有 3 条 20Mbps/4Mbps 的 pppoe ,
site b 有 1 条 100M 对等的固定 ip 线路。
为何没有一种超级简单的办法,从 site a 到 site b 的一个 tcp 连接(比如说 ovpn )可以负载均衡到不同线路上呢?可以获得接近 60Mbps/12Mbps 的带宽呢?

或者 udp ?

其中的主要技术障碍在哪,造个轮子出来有多难?
2574 次点击
所在节点    宽带症候群
6 条回复
bazingaterry
2016-10-25 10:05:40 +08:00
有,路由器支持链路叠加即可。
raysonx
2016-10-25 10:41:32 +08:00
如果 site A 到 B 有多条 TCP 连接,是可以把不同的连接均衡到不同链路上的。
但是,如果是同一条 TCP 连接的话, TCP 在设计上一条连接只有一个 source IP 和一个 destination IP ,如果你的 site A 不同链路 IP 是不同的,就无法单纯通过 TCP 解决了。当然,套层隧道还是可以的。
UDP 本身无连接,只要你设计好上层协议毫无压力。
est
2016-10-25 10:50:50 +08:00
tcp 是内核实现的。。。内核做 module 也是可行的。。只不过需要 root 。很多 openvz 的可能各种兼容性问题。。。

还有就是代码写的不好就 kernel panic 了。。

要多链路多 demultiplexing 的方案还是有的,基于 UDP 和 IP 的应该都有。免费开源的就不知道咯。
jedihy
2016-10-25 11:11:35 +08:00
多路 TCP 没你想的那么简单,目前在学术界是一个热门的研究领域,在数据中心网络中有部分已经在使用了。
举一个简单的例子,多路 TCP 那么多乱序的怎么去拼接?广域网内各链路拥塞程度不一样,整个传输性能瓶颈会卡在最慢的那条流上,如何避免,重发?拥塞窗口怎么控制?丢一个包降多少窗口?是不是会增加丢包率?每条流权重是不是一样,不一样的话怎么控制?
flyfishcn
2016-10-25 15:04:34 +08:00
带宽叠加都是基于多连接的。基于链路聚合这种的只能完成 OSI 二层下的内容。一旦涉及协议了,单连接是无法聚合的。
bybyte
57 天前
有的,我试过,一个 tcp 链接通过多个链路发出,实现思路就是在本地把 tcp 打散为基于 udp 的可靠协议,例如 kcp ,然后 udp 想怎么发就怎么发了,通过 N 个链路转发都行,只要发到目的地,然后把 udp 再转回去就行了,即使其中任意一条链路断开或者延迟都不影响这一整条 tcp 链接都断开,但是这样做就会浪费很大的带宽,但是提高了可用性

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/315206

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX