当今的网络是多路径的:移动设备具有多个无线接口,数据中心在服务器之间具有许多冗余路径,多宿主已成为大型服务器场的标准。
但是,当前的广泛使用的可靠传输协议TCP在本质上是一种单路径协议:建立TCP连接时,该连接将绑定到两个通信主机的IP地址。 如果这些地址任何一个发生改变,无论出于何种原因,该连接都会失败。 实际上,TCP连接甚至无法在网络中的多个路径上实现负载平衡,因为这会导致数据包重新排序,并且TCP在拥塞时会误解此重新排序,并减慢速度。
当今的多路径网络与TCP的单路径设计之间的这种不匹配带来了明显的问题。 例如
- 如果智能手机的WiFi信号丢失,则与之关联的TCP连接就会停止; 无法将它们迁移到其他工作接口,例如3G、4G、5G,每次切换都需要重新建立TCP连接。
- 现代数据中心是另一个示例:两个端点之间有许多路径可用,多路径路由为特定的TCP连接随机选择一个。 这可能会导致在将多个流置于同一链路上的情况下发生冲突,从而使吞吐量受到损害,以致在某些情况下平均吞吐量减半。
多路径TCP(MPTCP)是对TCP的主要修改,它允许单个传输连接同时使用多个路径。 多路径TCP规避了上述问题以及影响TCP的其他一些问题。 将TCP更改为使用多个路径并不是一个新主意。 它最初是由克里斯蒂安·惠特玛(Christian Huitema)于15年前在互联网工程任务组(IETF)中提出的,此后又出现了六到六次类似的提议。 多路径TCP借鉴了先前工作中积累的经验,并进一步解决了与常规TCP竞争引起的公平性问题以及当今Internet中间盒带来的部署问题。 IETF最近已经对多路径TCP协议进行了标准化,并且Linux内核中的一种实现现已可用。
多路径TCP允许为单个MPTCP会话设置多个子流。 MPTCP会话从初始子流开始,该子流类似于如上所述的常规TCP连接。 设置第一个MPTCP子流后,可以建立其他子流。 每个其他子流也看起来类似于常规的TCP连接,具有SYN握手和FIN拆除功能,但不是单独的连接,而是将子流绑定到现有的MPTCP会话中。 然后,可以通过任何具有接受能力的活动子流来发送用于连接的数据。
通过MPTCP使用两个不同的流传输TCP数据
谁在使用MPTCP
苹果iOS7支持多路径TCP,用来传输Siri的流量。这是第一个广泛部署的MPTCP例子。
Citrix’s Netscaler 和 F5 BIG-IP 也支持多路径TCP!
三星的 Galaxy S6 and S6 Edge 也支持 MPTCP。
Multiple TCP的基本操作
分为三个阶段:
- connection establishment
- data transfer [2]
- connection release [2]
Global sequence number and subflow sequence number
因为两个路径通常具有不同的延迟特性,所以将不会按顺序接收通过两个子流发送的数据段。常规TCP使用每个TCP数据包报头中的序列号将数据放回原始顺序。一个简单的多路径TCP解决方案是按原样重用此序列号。不幸的是,这种简单的解决方案会给一些现有的中间盒(如防火墙)造成问题。在每个路径上,中间盒只能看到一半的数据包,因此它将观察到TCP序列空间中的许多间隙。测量结果表明,某些中间盒在遇到TCP序列号空白时会以奇怪的方式做出反应,例如一些会丢弃乱序段,而另一些则会尝试更新TCP确认以“弥补”某些差距。在路径上使用这种中间盒时,多路径TCP无法安全地发送TCP序列号空间中带有间隙的TCP段。另一方面,多路径TCP也不能发送所有子流中的每个数据段。那将浪费资源。
为了解决此问题,多路径TCP使用其自己的序列空间。多路径TCP发送的每个段都包含两个序列号:常规TCP头中的子流序列号,以及TCP选项中携带的附加数据序列号(DSN)。此解决方案确保在任何给定子流上发送的段具有连续的序列号,并且不会破坏中间框。然后,多路径TCP可以在一个路径上发送一些数据序列号,而在另一路径上发送其余数据;旧的中间盒将忽略DSN选项,多路径TCP接收器将使用它来对字节流重新排序,然后再将其提供给接收应用程序。
存在的问题
但是MPTCP也存在一些问题,针对其中的一些特点(全局、局部序列号;身份认证等)也出现了一些攻击方法,例如[3]中提出了MPTCP中存在的一些问题:1. 窃听一个MPTCP子流的攻击者可以推断出其他子流的吞吐量;2.攻击者可以注入伪造的MPTCP报文来改变任何MPTCP子流的优先级。根本的原因是缺乏一种有效的身份认证机制。
结论
多路径TCP是过去20年来TCP发生的最重大变化。 它使现有的TCP应用程序能够在当今的网络上实现更好的性能和鲁棒性,并且IETF已对其进行了标准化。 Linux内核的实现表明,可以在实践中获得这些好处。 但是,与对TCP所做的任何更改一样,多路径TCP的部署门槛很高。 只有时间才能证明多路径TCP带来的好处是否会超过它在端主机堆栈中产生的增加的复杂性。
学习资料
MPTCP详细学习ppt
http://multipath-tcp.org/data/MultipathTCP-netsys.pdf
参考文献
[1] Bonaventure, O., Handley, M., & Raiciu, C. (2012). An Overview of Multipath TCP. USENIX Login, 17–23.
[2]
rfc8684tools.ietf.org/html/rfc8684
[3] Munir, A., Qian, Z., Shafiq, Z., Liu, A., & Le, F. (2017). Multipath TCP traffic diversion attacks and countermeasures. Proceedings - International Conference on Network Protocols, ICNP, 2017-Octob.
Multipath TCP traffic diversion attacks and countermeasuresdoi.org/10.1109/ICNP.2017.8117547



