首页 > 系统 > Linux > 正文

多路径TCP(MPTCP)

2024-08-28 00:23:09
字体:
来源:转载
供稿:网友

前言: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)。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表