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
-
enp4s0:
クライアントネットワークインターフェイスの設定:
-
enp4s0f0:
192.0.2.2/24
-
enp4s0f1:
198.51.100.2/24
-
enp4s0f0:
手順
サーバーによって提供される追加のリモートアドレスを最大 1 つ受け入れるようにクライアントを設定します。
# ip mptcp limits set add_addr_accepted 1
IP アドレス
198.51.100.1
を、サーバー上の新しい MPTCP エンドポイントとして追加します。# ip mptcp endpoint add 198.51.100.1 dev enp1s0 signal
signal
オプションは、スリーウェイハンドシェイクの後にADD_ADDR
パケットが送信されるようにします。iperf3
サーバーを起動します。# iperf3 -s Server listening on 5201
クライアントをサーバーに接続します。
# iperf3 -c 192.0.2.1 -t 3
検証
接続が確立されたことを確認します。
# ss -nti '( sport :5201 )'
接続および IP アドレス制限を確認します。
# ip mptcp limit show
新たに追加されたエンドポイントを確認します。
# ip mptcp endpoint show
サーバーで
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 ページ