Red Hat Training

A Red Hat training course is available for RHEL 8

28.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.101.2/24
  • enp6s0: 192.0.2.5/24

前提条件

  • 関連するインターフェイスでデフォルトゲートウェイを設定している

手順

  1. カーネルで MPTCP ソケットを有効にします。

    # echo "net.mptcp.enabled=1" > /etc/sysctl.d/90-enable-MPTCP.conf
    # sysctl -p /etc/sysctl.d/90-enable-MPTCP.conf
  2. サーバーで、追加のサブフロー制限を 2 に設定します。

    1. 次の内容で /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 カーネル設定で定義されているサブフロー制限もありません。代わりに、すべての起動プロセスでネットワーク (network.target) が動作可能になった後に ip mptcp limits set subflows 2 コマンドを実行する同様の oneshot ユニットを使用します。

      ip mptcp limits set subflows 2 コマンドは、各接続の 追加 サブフローの最大数を設定するため、合計が 3 になります。

    2. set_mptcp_limit サービスを有効にします。

      # systemctl enable --now set_mptcp_limit
  3. 接続のアグリゲーションに使用するすべての接続プロファイルで 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 フラグも使用する必要があります。

検証

  1. MPTCP カーネルパラメーターが有効になっていることを確認します。

    # sysctl net.mptcp.enabled
    net.mptcp.enabled = 1
  2. サブフロー制限を正しく設定したことを確認します。

    # ip mptcp limit show
    add_addr_accepted 1 subflows 2
  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
    ...