28.3. iproute2 を使用した MPTCP アプリケーションの複数パスの一時的な設定と有効化
各 MPTCP 接続は、プレーンな TCP と似た 1 つのサブフローを使用します。MPTCP の利点を活用するには、各 MPTCP 接続のサブフローの最大数に上限を指定します。次に、追加のエンドポイントを設定して、それらのサブフローを作成します。
この手順の設定は、マシンを再起動すると保持されません。
MPTCP は現在、同じソケットの IPv6 エンドポイントと IPv4 エンドポイントの組み合わせに対応していません。同じアドレスファミリーに属するエンドポイントを使用します。
前提条件
-
mptcpd
がインストールされている。 -
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
に設定します。# ip mptcp limits set subflow 1
注記: 各接続に設定できる 追加 サブフローの上限を設定します (最初の 1 つを除く)。
クライアントで、接続ごと、および追加のサブフロー制限を
1
に設定します。# ip mptcp limits set subflow 1 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
サーバーを起動し、TCP ソケットの代わりに MPTCP ソケットを強制的に作成する場合は、次のコマンドを実行します。# mptcpize run iperf3 -s Server listening on 5201
クライアントをサーバーに接続し、TCP ソケットの代わりに MPTCP ソケットを強制的に作成する場合は、次のコマンドを実行します。
# mptcpize 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 ページ