Red Hat Training

A Red Hat training course is available for RHEL 8

28.3. iproute2 を使用した MPTCP アプリケーションの複数パスの一時的な設定と有効化

各 MPTCP 接続は、プレーンな TCP と似た 1 つのサブフローを使用します。MPTCP の利点を活用するには、各 MPTCP 接続のサブフローの最大数に上限を指定します。次に、追加のエンドポイントを設定して、それらのサブフローを作成します。

重要

この手順の設定は、マシンを再起動すると保持されません。

MPTCP は現在、同じソケットの IPv6 エンドポイントと IPv4 エンドポイントの組み合わせに対応していません。同じアドレスファミリーに属するエンドポイントを使用します。

前提条件

  • iperf3 がインストールされている。
  • サーバーネットワークインターフェイスの設定:

    • enp4s0: 192.0.2.1/24
    • enp1s0: 198.51.100.1/24
  • クライアントネットワークインターフェイスの設定:

    • enp4s0f0: 192.0.2.2/24
    • enp4s0f1: 198.51.100.2/24

手順

  1. サーバーで、追加のサブフロー制限を 1 に設定します。

    # ip mptcp limits set subflow 1

    注記: 各接続に設定できる 追加 サブフローの上限を設定します (最初の 1 つを除く)。

  2. クライアントで、接続ごと、および追加のサブフロー制限を 1 に設定します。

    # ip mptcp limits set subflow 1 add_addr_accepted 1
  3. IP アドレス 198.51.100.1 を、サーバー上の新しい MPTCP エンドポイントとして追加します。

    # ip mptcp endpoint add 198.51.100.1 dev enp1s0 signal

    signal オプションは、スリーウェイハンドシェイクの後に ADD_ADDR パケットが送信されるようにします。

  4. iperf3 サーバーを起動します。

    # iperf3 -s
    
    Server listening on 5201
  5. クライアントをサーバーに接続します。

    # iperf3 -c 192.0.2.1 -t 3

検証手順

  1. 接続が確立されたことを確認します。

    # ss -nti '( sport :5201 )'
  2. 接続および IP アドレス制限を確認します。

    # ip mptcp limit show
  3. 新たに追加されたエンドポイントを確認します。

    # ip mptcp endpoint show
  4. サーバーで 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

関連情報

  • ip-mptcp(8) man ページ
  • mptcpize(8) man ページ