Тестирование функциональности TCP с помощью OT CLI

Посмотреть исходный код на GitHub

OpenThread предлагает команды TCP для использования в сети потоков для проверки одноранговой связи между конечными точками TCP. cli tcp предоставляет один пример конечной точки TCP и один образец прослушивателя 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, предоставляемого tcp CLI. Чтобы деинициализировать пример прослушивателя 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 команду

Как только соединение между двумя узлами будет установлено, введите команду tcp send , чтобы отправить сообщение одноранговому узлу.

команды benchmark

После установки TCP-соединения между двумя узлами можно дополнительно использовать команды benchmark для отправки больших объемов данных между узлами для проверки пропускной способности и производительности сети. Количество переданных байтов в миллисекундах, а также TCP Goodput будут указаны в результатах benchmark .

команда abort

Чтобы немедленно и бесцеремонно завершить TCP-соединение, запустите команду tcp abort на любом узле, чтобы перевести конечную точку TCP в закрытое состояние.

команда sendend

Когда один узел завершает отправку данных на другой узел, первый узел может выдать команду tcp sendend , чтобы предупредить второй узел о том, что он больше не ожидает данных. Второй узел также может отправить tcp sendend первому узлу. Как только каждый узел получает сообщение TCP: Disconnected , TCP-соединение между двумя узлами разрывается. Рекомендуется, но не обязательно, подавать эту команду после завершения передачи данных.

Отправить сообщение между двумя узлами

  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