多路径TCP(MPTCP)

2019-10-27 09:25:15 来源:易采站长站 作者:王旭

前言:tcp连接时,一直以来都是只能绑定一个ip地址,但是随着多网卡主机越来越多,从一个主机到另一个主机往往都会有多条链路可以到达,这种情况下,如何充分利用这多条链路进行并行的传输或者作为链路备份,就变得十分有意义,本篇就简单介绍其中一种多路径传输的方法—多路径TCP。

一. 多路径传输的背景

我们来看另一个常见的场景:用户的手机一般都有4G和WIFI两种网络接入方式,当用户进行下载数据时,如果接入了WIFI了就会优先使用WIFI,但是如果中间WIFI链路断了,那么只能提示下载失败,并不会切换到4G中接着下载。同时,对于已经存在的多条链路,并没有充分使用以提高带宽。

以上就是其中的一个重要的应用场景,解下来我们重点说明一下其中的一种实现方法—MPTCP。

二. 实施多路径传输的关键点

    多路径流量的调度和拥塞控制。

    多路径的流量调度是指对于存在的多个子路径,如何分配流量到各个子路径,以达到尽可能提高带宽的目的。但另一方面,又需要对各个子路径进行统一的拥塞控制,当一条链路上的流量发送拥塞时,把流量导到另一条链路上去。

    路径发送失败后的重传。

    既然依然是可靠通信,那么就会涉及到失败后的重传问题。重传的时候自然就要找到对应的序列号,然而,在多路径传输时,本来序列号连续的包可能被调度到不同的链路中发送,导致出现一个问题:在每个链路中发送的包的序列号不是连续的,在网络传输中可能会被网络安全设备拦截下来。所以需要解决重传时的序列号的问题。

    建立和管理子路径。

    对于传输时的多路径,需要对路径进行管理,以便能够知晓链路情况,在链路被移除的时候,通知对端不再使用这条链路。在链路添加的时候,使能对应的链路。

三. 多路径TCP

在第一节中我们提到了多路径传输,从实现的层次来说,可以分为网络层实现,传输层实现,应用层实现。首先说这个应用层实现,这个实施起来代价最高,因为需要改动现有的应用程序。而在网络层实现在面对流量控制等问题时时又困难重重,只有在传输层可以借助天然的TCP的可靠性机制,进行改造。

3.1 多路径TCP的体系结构

多路径tcp的功能和过程如下:

    初始化一个连接 使能一个新的子流 数据序列号的映射 可靠性和重传 拥塞控制 链路管理 快速关闭 回落功能

3.1.1 初始化一个连接

初始化时,是通过SYN,SYN/ACK,ACK报文交互后完成的,在这些报文的tcp选项中,带有这一端使能的标志---MP_CAPABLE。同时也会传递一个生成的64位的key值来标示这条连接,在后面有新的子流添加到这条连接时,就会用来进行鉴权(确切说是以这个key生成的token)。

微信扫一扫

易采站长站微信账号