Red Hat Training
A Red Hat training course is available for RHEL 8
28.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.101.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
在服务器中将每个连接额外的子流限制设置为
2:
使用以下内容创建
/etc/systemd/system/set_mptcp_limit.service
文件:[Unit] Description=Set MPTCP subflow limit to 2 After=network.target [Service] ExecStart=ip mptcp limits set subflows 2 Type=oneshot [Install] WantedBy=multi-user.target
在 RHEL 8 中,无法使用
nmcli
实用程序设置子流限制。也没有是 RHEL 内核配置中定义的子流限制。反之,使用类似的 oneshot 单元来执行ip mptcp 限制在网络(network.target )之后设置子流 2
命令(network.target
)在每个引导过程中正常运行。ip mptcp 限制设置子流 2 命令设置
每个连接的最大 附加 子流数,因此 3 共 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 1 subflows 2
验证您正确配置了每个地址 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 ...
其他资源
-
nm-settings-nmcli(5)
-
ip-mptcp(8)
- 第 28.1 节 “了解 MPTCP”
- 了解多路径 TCP:端点和高可用性以及未来的网络
- RFC8684:通过多个地址进行多路径操作的 TCP 扩展
- 使用多路径 TCP 更好地停机并增加带宽