35.4. MPTCP アプリケーションの複数パスの永続的な設定
nmcli
コマンドを使用してマルチパス 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
) が動作した後に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 アドレスフラグを設定します。MPTCP が NetworkManager 接続プロファイルで有効になっている場合、設定により、関連するネットワークインターフェイスの 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 ...