7.5 Multipath Transport
Last updated
Last updated
在互联网早期,连接到网络的主机仅有一个网络接口(网卡),而现今的设备通常至少拥有接入两个不同网络的接口。最常见的例子是拥有蜂窝和WiFi接口的移动电话。另一个例子是数据中心,它们经常为服务器分配多个网络接口以提高容错能力。许多应用程序一次只使用一个网络接口,但事实是存在通过同时使用多个网络接口来提升性能的可能。这种多路径通信的想法已经存在数十年,并且IETF也正对这个想法进行了一系列工作,以标准化扩展 TCP 使得端到端连接可以利用两个主机之间的多条路径。这被称为多路径TCP (MPTCP)。
一对主机通过两条或更多路径同时发送流量时,对于拥塞控制有一定的影响。例如,如果两条路径都经过一个共同的瓶颈链路,那么每个路径一个TCP连接的简单实现,相比一个标准的TCP连接,将会占用瓶颈链路两倍的带宽份额。MPTCP 的设计者们旨在解决这种潜在的不公平问题,同时又能享受多路径带来的好处。这里提出的拥塞控制方法同样可以应用于其他传输协议,如QUIC。MPTCP拥塞控制的总体目标包括:
至少要达到单个常规 TCP 数据流在最佳可用路径上的表现。
不要从任何路径上获取超过单个常规 TCP 数据流所会获取的资源。
将尽可能多地将流量从最拥挤的路径转移开,这与前两个目标一直。
这里可以看出,MPTCP 为了对其他 TCP 流保持公平性,是有一些仔细的思考的。这里的公平性思考与 介绍的公平性是一致的。
虽然 MPTCP 算法的细节较为复杂,但它的整体方法还是直接简单的。它在每个子流上的拥塞控制算法大致模仿了TCP,并且整体会尽量确保满足上述三个目标。算法的核心是,当子流收到了ACK时,使用以下公式增加每个单独子流的拥塞窗口大小。
CongestionWindowTotal 是所有子流的拥塞窗口大小之和,CongestionWindowi 是子流 i 的拥塞窗口。 MIN 的第二个参数模仿标准 TCP 拥塞窗口的增加,从而确保子流不会比标准 TCP 更具侵略性(目标 2)。第一个参数使用变量 α 来确保,多路径流总体上获得与它使用最佳可用路径时相同的吞吐量(目标 1)。α 的计算在 RFC 6356 中有详细描述。请注意,未拥塞的路径能够比拥塞路径增长更多的拥塞窗口,因为它们没有丢包,因此随着时间的推移,更多流量会移动到未拥塞的路径上(目标 3)。
尽管这里描述的足够简单,但正如Wischik及其同事在一篇 NSDI 论文中所描述的一样,大量有趣的分析被用来确定正确的方法。
更多阅读:D. Wischik, C. Raiciu, A. Greenhalgh and M. Handley. . NSDI, April 2011.
C. Raiciu, M. Handley and D. Wischik. . RFC 6356, October 2011.