36.3. 使用 iproute2 为 MPTCP 应用程序临时配置和启用多个路径
每个 MPTCP 连接都使用一个类似于纯 TCP 的单个子流。要获得 MPTCP 优点,请为每个 MPTCP 连接的最大子流数指定更高的限值。然后配置额外的端点以创建这些子流。
重要
在重启机器后,这个过程中的配置不会保留。
请注意,MPTCP 尚不支持为同一套接字混合 IPv6 和 IPv4 端点。使用属于同一地址系列的端点。
前提条件
-
已安装
mptcpd
软件包 -
安装了
iperf3
软件包 服务器网络接口设置:
-
enp4s0:
192.0.2.1/24
-
enp1s0:
198.51.100.1/24
-
enp4s0:
客户端网络接口设置:
-
enp4s0f0:
192.0.2.2/24
-
enp4s0f1:
198.51.100.2/24
-
enp4s0f0:
流程
将客户端配置为接受 1 个额外的远程地址,如服务器提供的:
# ip mptcp limits set add_addr_accepted 1
在服务器上将 IP 地址
198.51.100.1
添加为新的 MPTCP 端点:# ip mptcp endpoint add 198.51.100.1 dev enp1s0 signal
signal
选项可确保在三向手后发送ADD_ADDR
数据包。启动
iperf3
服务器,并强制它创建 MPTCP 套接字而不是 TCP 套接字:# mptcpize run iperf3 -s Server listening on 5201
将客户端连接到服务器,并强制它创建 MPTCP 套接字而不是 TCP 套接字:
# mptcpize iperf3 -c 192.0.2.1 -t 3
验证
验证连接是否已建立:
# ss -nti '( sport :5201 )'
验证连接和 IP 地址限制:
# ip mptcp limit show
验证新添加的端点:
# ip mptcp endpoint show
在服务器上使用
nstat MPTcp*
命令验证 MPTCP 计数器:# nstat MPTcp* #kernel MPTcpExtMPCapableSYNRX 2 0.0 MPTcpExtMPCapableACKRX 2 0.0 MPTcpExtMPJoinSynRx 2 0.0 MPTcpExtMPJoinAckRx 2 0.0 MPTcpExtEchoAdd 2 0.0
其他资源
-
您系统上的
mptcpize (8)
和ip-mptcp (8)
手册页