Testar a funcionalidade do TCP com a CLI OT

Confira o código-fonte no GitHub

O OpenThread oferece comandos TCP para uso com uma rede Thread para testar a comunicação ponto a ponto entre endpoints TCP. O cli tcp fornece um exemplo de endpoint TCP e um exemplo de listener TCP com que todos os comandos tcp interagem.

As visões gerais dos comandos e o exemplo a seguir fornecem informações sobre como inicializar o endpoint TCP e o listener TCP de exemplo, como se conectar a um endpoint TCP de peering e como enviar uma mensagem ao peering.

Comandos TCP

Para ver uma lista de comandos tcp, digite help:

tcp help
abort
benchmark
bind
connect
deinit
init
listen
send
sendend
stoplistening
Done
Para descrições e sintaxe de todos os comandos, consulte a Referência de comandos da CLI. Os comandos TCP começam em ordem alfabética com tcp cancel.

Comando init

Use o comando tcp init para inicializar o módulo TCP e iniciar a comunicação TCP. O módulo TCP pode executar muitas funções, como detectar conexões de entrada usando o listener TCP de exemplo fornecido pela CLI tcp. Para desinicializar o listener TCP de exemplo e o endpoint TCP de exemplo, emita o comando tcp deinit.

Comando bind

Para vincular o endpoint TCP de exemplo depois de inicializar o módulo TCP, execute um comando tcp bind para atribuir um endereço IPv6 e uma porta ao endpoint TCP. Isso vincula o endpoint para comunicação. A atribuição do endereço e da porta IPv6 também é chamada de "nomear o endpoint".

Comando listen

Para usar o listener TCP de exemplo depois de inicializar o módulo TCP, execute um comando tcp listen e especifique o endereço IPv6 e a porta de detecção.

Para interromper a detecção de conexões TCP de entrada no listener TCP de exemplo, emita o comando tcp stoplistening.

Comando connect

Um comando tcp connect conecta o endpoint TCP de exemplo a um endereço de endpoint TCP de peering.

Comando send

Depois que uma conexão for estabelecida entre dois nós, emita um comando tcp send para enviar uma mensagem ao peering.

benchmark commands

Depois que uma conexão TCP for estabelecida entre dois nós, você pode usar os comandos benchmark para enviar grandes quantidades de dados entre os nós e testar a largura de banda e o desempenho da rede. O número de bytes transmitidos em milissegundos, bem como o Goodput do TCP, serão fornecidos nos resultados de benchmark.

Comando abort

Para encerrar uma conexão TCP de forma imediata e sem cerimônia, execute o comando tcp abort em qualquer um dos nós para fazer a transição do endpoint TCP para um estado fechado.

Comando sendend

Quando um nó terminar de enviar dados para o outro, o primeiro nó poderá emitir um comando tcp sendend para alertar o segundo nó para não esperar mais dados. O segundo nó também pode enviar um tcp sendend para o primeiro nó. Depois que cada nó recebe uma mensagem TCP: Disconnected, a conexão TCP entre os dois nós é eliminada. É recomendável, mas não obrigatório, emitir esse comando quando a transferência de dados for concluída.

Enviar uma mensagem entre dois nós

  1. No nó 1, inicialize o módulo TCP CLI e detecte conexões de entrada usando o listener TCP de exemplo.

    tcp init
    tcp listen :: 30000
    

    O uso de :: indica que listen precisa usar o endereço IPv6 não especificado, fazendo com que a pilha TCP/IPv6 atribua o endereço IPv6. A porta é 30000.

  2. No nó 2, inicialize o módulo TCP CLI, conecte-se ao nó 1 e envie uma mensagem simples.

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

Verificação

Com base nas etapas de exemplo mostradas acima, a seguinte saída é esperada:

  • Depois que o nó 2 executar o comando tcp connect, ele receberá a mensagem TCP: Connection established.
  • O nó 1 receberá as mensagens com o endereço IPv6 e a porta de exemplo:
    • Accepted connection from [fe80:0:0:0:8f3:f602:bf9b:52f2]:49152
    • TCP: Connection established
  • Depois que o Nó 2 executar o comando tcp send, o Nó 1 receberá a mensagem TCP: Received 5 bytes: hello.