Red Hat Training

A Red Hat training course is available for RHEL 8

34.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 add_addr_accepted 1
  2. IP アドレス 198.51.100.1 を、サーバー上の新しい MPTCP エンドポイントとして追加します。

    # ip mptcp endpoint add 198.51.100.1 dev enp1s0 signal

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

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

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

    # 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 ページ