OT CLI を使用して TCP 機能をテストする

GitHub でソースを表示

OpenThread には、TCP エンドポイント間のピアツーピア通信をテストするための Thread ネットワークで使用する TCP コマンドが用意されています。cli tcp は、1 つのサンプル TCP エンドポイントと 1 つのサンプル TCP リスナーを提供し、すべての tcp コマンドがやり取りします。

コマンドの概要と次の例では、サンプル TCP エンドポイントと TCP リスナーの初期化、ピア TCP エンドポイントへの接続方法、ピアにメッセージを送信する方法について説明します。

TCP コマンド

tcp コマンドのリストについては、help と入力します。

tcp help
abort
benchmark
bind
connect
deinit
init
listen
send
sendend
stoplistening
Done
すべてのコマンドの説明と構文については、CLI コマンド リファレンスをご覧ください。TCP コマンドはアルファベット順で tcp abort で始まります。

init コマンド

tcp init コマンドを使用して TCP モジュールを初期化し、TCP 通信を開始します。TCP モジュールは、tcp CLI によって提供される TCP リスナーの例を使用して受信接続をリッスンするなど、多くの機能を実行できます。TCP リスナーの例と TCP エンドポイントの例を初期化解除するには、tcp deinit コマンドを実行します。

bind コマンド

TCP モジュールを初期化した後にサンプルの TCP エンドポイントをバインドするには、tcp bind コマンドを実行して IPv6 アドレスとポートを TCP エンドポイントに割り当てます。これにより、通信のためにエンドポイントがバインドされます。IPv6 アドレスとポートの割り当ては、「エンドポイントの命名」とも呼ばれます。

listen コマンド

TCP モジュールを初期化した後に TCP リスナーの例を使用するには、tcp listen コマンドを実行して、IPv6 アドレスとリスニング ポートを指定します。

サンプルの TCP リスナーが受信 TCP 接続をリッスンしないようにするには、tcp stoplistening コマンドを実行します。

connect コマンド

tcp connect コマンドは、サンプルの TCP エンドポイントをピア TCP エンドポイント アドレスに接続します。

send コマンド

2 つのノード間で接続が確立されたら、tcp send コマンドを発行してピアにメッセージを送信します。

benchmark コマンド

2 つのノード間で TCP 接続が確立されたら、必要に応じて benchmark コマンドを使用してノード間で大量のデータを送信し、ネットワーク帯域幅とパフォーマンスをテストします。ミリ秒単位の送信バイト数と TCP Goodput は、benchmark の結果で提供されます。

abort コマンド

TCP 接続を直ちに終了するには、いずれかのノードで tcp abort コマンドを実行して、TCP エンドポイントをクローズ状態に移行します。

sendend コマンド

一方のノードが他方のノードへのデータ送信を完了すると、最初のノードは tcp sendend コマンドを実行して、2 番目のノードがデータを想定しなくなることを警告できます。2 番目のノードも最初のノードに tcp sendend を送信できます。各ノードが TCP: Disconnected メッセージを受信すると、2 つのノード間の TCP 接続が切断されます。データ転送が完了したら、このコマンドを発行することをおすすめしますが、必須ではありません。

2 つのノード間でメッセージを送信する

  1. ノード 1 で TCP CLI モジュールを初期化し、サンプルの TCP リスナーを使用して受信接続をリッスンします。

    tcp init
    tcp listen :: 30000
    

    :: を使用すると、listen が未指定 IPv6 アドレスを使用し、TCP/IPv6 スタックで IPv6 アドレスが割り振られることを示します。ポートは 30000 です。

  2. ノード 2 で TCP CLI モジュールを初期化し、ノード 1 に接続して簡単なメッセージを送信します。

    tcp init
    tcp connect fe80:0:0:0:a8df:580a:860:ffa4 30000
    tcp send hello
    

検証

上記の手順の例では、次の出力が想定されます。

  • ノード 2 が tcp connect コマンドを実行すると、ノード 2 はメッセージ TCP: Connection established を受信します。
  • ノード 1 はメッセージ(IPv6 アドレスとポートの例を含む)を受信します。
    • Accepted connection from [fe80:0:0:0:8f3:f602:bf9b:52f2]:49152
    • TCP: Connection established
  • ノード 2 が tcp send コマンドを実行すると、ノード 1 にメッセージ TCP: Received 5 bytes: hello が表示されます。