7.5 Multipath Transport
Last updated
Last updated
在互联网早期,连接到网络的主机仅有一个网络接口(网卡),而现今的设备通常至少拥有接入两个不同网络的接口。最常见的例子是拥有蜂窝和WiFi接口的移动电话。另一个例子是数据中心,它们经常为服务器分配多个网络接口以提高容错能力。许多应用程序一次只使用一个网络接口,但事实是存在通过同时使用多个网络接口来提升性能的可能。这种多路径通信的想法已经存在数十年,并且IETF也正对这个想法进行了一系列工作,以标准化扩展 TCP 使得端到端连接可以利用两个主机之间的多条路径。这被称为多路径TCP (MPTCP)。
一对主机通过两条或更多路径同时发送流量时,对于拥塞控制有一定的影响。例如,如果两条路径都经过一个共同的瓶颈链路,那么每个路径一个TCP连接的简单实现,相比一个标准的TCP连接,将会占用瓶颈链路两倍的带宽份额。MPTCP 的设计者们旨在解决这种潜在的不公平问题,同时又能享受多路径带来的好处。这里提出的拥塞控制方法同样可以应用于其他传输协议,如QUIC。MPTCP拥塞控制的总体目标包括:
至少要达到单个常规 TCP 数据流在最佳可用路径上的表现。
不要从任何路径上获取超过单个常规 TCP 数据流所会获取的资源。
将尽可能多地将流量从最拥挤的路径转移开,这与前两个目标一直。
这里可以看出,MPTCP 为了对其他 TCP 流保持公平性,是有一些仔细的思考的。这里的公平性思考与 3.2 节介绍的公平性是一致的。
虽然 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. Design, Implementation and Evaluation of Congestion Control for Multipath TCP. NSDI, April 2011.
C. Raiciu, M. Handley and D. Wischik. Coupled Congestion Control for Multipath Transport Protocols. RFC 6356, October 2011.