一、MPTCP介绍

    多路径TCP(MPTCP)是一种通过修改TCP来实现同时使用多个IP地址/接口方法,MPTCP向应用程序提供常规的TCP接口,同时实际上跨多个子流传播数据。这样做的好处包括更好的资源利用率、更好的吞吐量和更平滑的故障响应。

     在第一篇博客里面介绍了如何使Ubuntu支持MPTCP,接下来介绍如何为多个网络接口配置相应路由策略,这一步可以手动配置,也可以下载脚本自动配置。本文主要介绍如何下载脚本自动配置。

二、MPTCP需要配置路由的原因

        在多个网卡接口上定义了多个地址后,希望能够告诉内核“如果我选择了这样的源地址,请使用特定的接口+网关,而不是默认接口+网关。因此,我们可以为每个网卡接口配置一个路由表,每个路由表由一个数字标识。然后,路线选择过程分两个阶段进行。首先,内核在策略表中进行查找(需要使用ip规则进行配置)。在我们的示例中,策略将是对于此类源前缀,转到路由表编号x。然后检查相应的路由表,以根据目标地址选择网关。(简而言之就是要让不同的网卡走它对应的网关进行路由)

三、官网教程

MultiPath TCP - Linux Kernel implementation : Users - Configure Routing browse

四、从官网下载脚本文件并将其复制到指定路径

ubuntu netplan 多个routes ubuntu多路径配置_tcp/ip

ubuntu netplan 多个routes ubuntu多路径配置_路由表_02

ubuntu netplan 多个routes ubuntu多路径配置_路由表_03

相关命令:

git config --global user.email "user@100ask.com"
git config --global user.name "100ask"
git clone https://github.com/kristrev/multihomed-routing.git
sudo cp mptcp-scripts/scripts/rt_table/mptcp_up /etc/network/if-up.d/
sudo cp mptcp-scripts/scripts/rt_table/mptcp_down /etc/network/if-post-down.d/

 五、使用ip命令查看是否配置成功

未配置路由或者配置不成功打印信息如下:

ubuntu netplan 多个routes ubuntu多路径配置_网络_04

 路由配置成功打印信息如下:

ubuntu netplan 多个routes ubuntu多路径配置_网络协议_05

路由配置成功后,每一个网卡都会对应一个路由表

Ubuntu网卡信息

 ens33:以太网桥接网卡

wlx8c882adfca5c:WiFi网卡

 查看网卡的路由表情况

ubuntu netplan 多个routes ubuntu多路径配置_网络协议_06

相关命令:

ip rule show
ip route show table ens33
ip route show table wlx8c882adfca5c

六、解释路由表配置 

0:    from all lookup local

32766:    from all lookup main 
32767:    from all lookup default

路由规则中有3个路由表,local、main、default,我们平常用route看到的,实际是路由表main,这些规则是按序号大小顺序走的,一个不同,则走下一个,知道通路或走完为止。如果不配置路由,所有网卡可能都会使用main对应的网关进行路由,只要不在一个局域网下通信,就不符合MPTCP的实际应用

0:    from all lookup local 
32764:    from 192.168.1.116 lookup wlx8c882adfca5c 
32765:    from 192.168.1.108 lookup ens33 
32766:    from all lookup main 
32767:    from all lookup default 
根据路由表编号由小到大进行检查,根据ip匹配对应的路由表。

 至此,Ubuntu已经完成了MPTCP的路由配置,接下来如果你有两台电脑都配置了MPTCP,我们就可以进行mptcp的数据传输测试啦!

如果这篇Blog有帮到你,请点个赞再走,Respect 所有帮到过我的博客作者!