一、MPTCP介绍
多路径TCP(MPTCP)是一种通过修改TCP来实现同时使用多个IP地址/接口方法,MPTCP向应用程序提供常规的TCP接口,同时实际上跨多个子流传播数据。这样做的好处包括更好的资源利用率、更好的吞吐量和更平滑的故障响应。
在第一篇博客里面介绍了如何使Ubuntu支持MPTCP,接下来介绍如何为多个网络接口配置相应路由策略,这一步可以手动配置,也可以下载脚本自动配置。本文主要介绍如何下载脚本自动配置。
二、MPTCP需要配置路由的原因
在多个网卡接口上定义了多个地址后,希望能够告诉内核“如果我选择了这样的源地址,请使用特定的接口+网关,而不是默认接口+网关。因此,我们可以为每个网卡接口配置一个路由表,每个路由表由一个数字标识。然后,路线选择过程分两个阶段进行。首先,内核在策略表中进行查找(需要使用ip规则进行配置)。在我们的示例中,策略将是对于此类源前缀,转到路由表编号x。然后检查相应的路由表,以根据目标地址选择网关。(简而言之就是要让不同的网卡走它对应的网关进行路由)
三、官网教程
MultiPath TCP - Linux Kernel implementation : Users - Configure Routing browse
四、从官网下载脚本文件并将其复制到指定路径
相关命令:
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网卡信息
ens33:以太网桥接网卡
wlx8c882adfca5c:WiFi网卡
查看网卡的路由表情况
相关命令:
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 所有帮到过我的博客作者!