Red Hat Training
A Red Hat training course is available for RHEL 8
34.4. 为 MPTCP 应用程序永久配置多路径
您可以使用 nmcli
命令配置 MultiPath TCP (MPTCP),以在源和目标系统之间永久建立多个子流。子流可以使用不同的资源,不同的路由到目的地,甚至不同网络。例如以太网、单元格、wifi 等。因此,您可以实现组合连接,这提高了网络弹性和吞吐量。
服务器在我们的示例中使用以下网络接口:
-
enp4s0:
192.0.2.1/24
-
enp1s0:
198.51.100.1/24
-
enp7s0:
192.0.2.3/24
客户端在我们的示例中使用以下网络接口:
-
enp4s0f0:
192.0.2.2/24
-
enp4s0f1:
198.51.100.2/24
-
enp6s0:
192.0.2.5/24
先决条件
- 您在相关接口上配置了默认网关。
步骤
在内核中启用 MPTCP 套接字:
# echo "net.mptcp.enabled=1" > /etc/sysctl.d/90-enable-MPTCP.conf # sysctl -p /etc/sysctl.d/90-enable-MPTCP.conf
可选:用于子流限制的 RHEL 内核默认是 2。如果您需要更多:
使用以下内容创建
/etc/systemd/system/set_mptcp_limit.service
文件:[Unit] Description=Set MPTCP subflow limit to 3 After=network.target [Service] ExecStart=ip mptcp limits set subflows 3 Type=oneshot [Install] WantedBy=multi-user.target
在每个引导过程中,当网络 (
network.target
) 可以正常工作后,oneshot 单元会执行ip mptcp limits set subflows 3
命令。ip mptcp limits set subflows 3
命令为每个连接设置附加子流的最大数量,即 4 个。可以最多添加 3 个额外的子流。启用
set_mptcp_limit
服务:# systemctl enable --now set_mptcp_limit
在要用于连接聚合的所有连接配置集上启用 MPTCP:
# nmcli connection modify <profile_name> connection.mptcp-flags signal,subflow,also-without-default-route
connection.mptcp-flags
参数配置 MPTCP 端点和 IP 地址标志。如果在 NetworkManager 连接配置集中启用 MPTCP,则设置会将相关网络接口的 IP 地址配置为 MPTCP 端点。默认情况下,如果没有默认网关,NetworkManager 不会将 MPTCP 标记添加到 IP 地址。如果要绕过该检查,则需要使用
also-without-default-route
标志。
验证
验证您启用了 MPTCP 内核参数:
# sysctl net.mptcp.enabled net.mptcp.enabled = 1
验证您正确设置了子流限制,如果默认值是不够的:
# ip mptcp limit show add_addr_accepted 2 subflows 3
验证您正确配置了每个地址 MPTCP 设置:
# ip mptcp endpoint show 192.0.2.1 id 1 subflow dev enp4s0 198.51.100.1 id 2 subflow dev enp1s0 192.0.2.3 id 3 subflow dev enp7s0 192.0.2.4 id 4 subflow dev enp3s0 ...
其他资源
-
nm-settings-nmcli(5)
-
ip-mptcp(8)
- 第 34.1 节 “了解 MPTCP”
- 了解多路径 TCP:端点和高可用性以及未来的网络
- RFC8684:通过多个地址进行多路径操作的 TCP 扩展
- 使用多路径 TCP 更好地停机并增加带宽