1 配置IPIP隧道通信
目录
1.1 环境准备
内核模块加载执行modprobe ipip加载IPIP内核模块,通过lsmod | grep ipip验证是否加载成功。若需永久生效,可将模块名添加到/etc/modules文件中。
网络拓扑规划明确隧道两端公网IP(如A端IP为192.168.122.80,B端IP为192.168.122.90)及隧道内部私有IP(如A端分配192.168.1.80,B端分配192.168.2.90)
1.2 隧道配置步骤
A端配置(示例IP:192.168.122.80)
创建IPIP隧道接口
ip tunnel add tun0 mode ipip remote 192.168.122.90 local 192.168.122.80 ttl 64
启用隧道并设置MTU
ip link set tun0 up mtu 1400
分配隧道IP地址
ip addr add 192.168.1.80 peer 192.168.2.90 dev tun0
添加路由规则
ip route add 192.168.2.0/24 dev tun0
B端配置(示例IP:192.168.122.90)
ip tunnel add tun0 mode ipip remote 192.168.122.80 local 192.168.122.90 ttl 64
ip link set tun0 up mtu 1400
ip addr add 192.168.2.90 peer 192.168.1.80 dev tun0
ip route add 192.168.1.0/24 dev tun0
配置完成即可从Aduan 直接访问B端隧道IP: 192.168.2.90
2 doca-ofed安装
以KOS5.8 SP2 U1为例,安装操作系统并配置网络,可正常访问在线源。
rpm -ivh kernel-abi-stablelists-4.18.0-372.96.1.2.kos5.noarch.rpm
yum install kernel-devel
#确保kernel升级至5.10.134-17.2.3.kos5 更新内核后重启
yum update kernel kernel-devel
重启后:
sudo rpm -i doca-host-3.0.0-058000_25.04_anolis86.x86_64.rpm
sudo dnf clean all
sudo dnf -y install doca-extra
yum install make
/opt/mellanox/doca/tools/doca-kernel-support
继续安装:
rpm -Uvh /tmp/DOCA.dAhSJGzazv/doca-kernel-repo-25.04.0.6.1.0-1.kver.5.10.134.17.2.3.kos5.x86.64.x86_64.rpm
yum makecache
yum install doca-ofed-userspace
yum install --disablerepo=doca doca-kernel-5.10.134.17.2.3.kos5.x86.64-25.04.0.6.1.0-1.kver.5.10.134.17.2.3.kos5.x86.64.noarch
3 MPTCP配置模式
MPTCP(Multipath TCP)是 TCP 协议的扩展,允许单个网络连接通过多条底层路径传输数据。其核心特性包括:
多路径抽象:将多个物理链路抽象为逻辑连接,应用层无需感知底层路径变化
子流管理:支持创建、管理多个 TCP 子流,并在子流上分发数据
无缝切换:链路失效时自动切换,保持连接不中断
带宽聚合:同时利用多条链路提升传输速度
MPTCP 核心应用场景:
智能网络选择
低延迟场景:优先选择延迟最低的链路(如语音、视频应用)
高带宽场景:自动识别并利用带宽充裕的链路
无缝网络切换
移动场景:设备在 WiFi 与蜂窝网络间移动时保持连接
企业办公:员工在不同 WiFi 接入点间移动时业务不中断
带宽聚合优化
数据中心:服务器通过多条链路传输大文件,缩短时间
云计算:分布式应用通过多路径获取更高吞吐量
3.1 启用 MPTCP 支持
内核参数配置:
# 启用MPTCP内核支持
sysctl -w net.mptcp.enabled=1
# 设置最大子流数量(可选)
sysctl -w net.mptcp.subflows_max=4
# 查看MPTCP状态
sysctl net.mptcp
应用程序适配:
// 传统TCP创建方式
int sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
// MPTCP创建方式
int mptcp_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_MPTCP);
也可以使用eBPF程序替换。
3.2 子流创建模式详解
3.2.1 Signal 模式(服务器主动通告)
# 服务器配置
sysctl -w net.mptcp.enabled=1
ip mptcp limit set subflows 1
ip mptcp endpoint add 2.2.2.1 dev eth2 signal
启动服务端:
iperf3 -s
# 客户端配置
sysctl -w net.mptcp.enabled=1
ip mptcp limit set subflows 1 add_addr_accepted 1
启动服务端:
iperf3 -c 1.1.1.1
#验证正确设置了子流限制
# ip mptcp limit show
add_addr_accepted 2 subflows 3
server端主动通告client其额外可供通信的IP地址,client端收到后将对其发起连接
iperf3将使用两条链路发送数据,并且传输速度是两条线路的速度总和
3.2.2 Subflow 模式(客户端主动创建)
# 客户端配置
sysctl -w net.mptcp.enabled=1
ip mptcp limit set subflows 1
ip mptcp endpoint add 2.2.2.2 dev eth2 subflow
路由配置:
ip rule add from 1.1.1.2 table 1
ip r a default via 1.1.1.1 table 1
ip rule add from 2.2.2.2 table 2
ip r a default via 2.2.2.1 table 2
启动客户端:
iperf3 -c 4.4.4.2
# 服务器配置
sysctl -w net.mptcp.enabled=1
ip mptcp limit set subflows 1
启动服务端:
iperf3 -s
Client端根据配置主动发起一条subflow
iperf3将使用两条链路发送数据,并且传输速度是两条线路的速度总和
3.2.3 Backup 模式(备用链路模式)
# 客户端配置
sysctl -w net.mptcp.enabled=1
ip mptcp limit set subflows 1
ip mptcp endpoint add 2.2.2.2 dev eth2 subflow backup
路由配置:
ip rule add from 1.1.1.2 table 1
ip r a default via 1.1.1.1 table 1
ip rule add from 2.2.2.2 table 2
ip r a default via 2.2.2.1 table 2
启动客户端:
iperf3 -c 4.4.4.2
# 服务器配置
sysctl -w net.mptcp.enabled=1
ip mptcp limit set subflows 1
启动服务端:
iperf3 -s
client端根据配置主动发起一条subflow,但此subflow处于backup状态,只有所有非backup的subflow都不可用才启用backup subflow传输数据
iperf3将只使用其中一条链路传输数据
4 结语
MPTCP 通过多路径传输为网络连接稳定性和带宽效率提供了新方案,从移动设备到数据中心均展现出重要价值。随着技术完善,MPTCP 有望成为未来网络传输的基础技术。