Prueba la funcionalidad de TCP con la CLI de OT

Ver código fuente en GitHub

OpenThread ofrece comandos de TCP que se pueden usar con una red Thread para probar la comunicación entre pares entre extremos de TCP. cli tcp proporciona un extremo TCP de muestra y un objeto de escucha de TCP de muestra con los que interactúan todos los comandos tcp.

Las descripciones generales de los comandos y el siguiente ejemplo proporcionan información sobre cómo inicializar el extremo TCP y el objeto de escucha de TCP de ejemplo, cómo conectarse a un extremo TCP de intercambio de tráfico y cómo enviar un mensaje al intercambio de tráfico.

Comandos de TCP

Para obtener una lista de comandos tcp, escribe help:

tcp help
abort
benchmark
bind
connect
deinit
init
listen
send
sendend
stoplistening
Done
Para obtener descripciones y sintaxis de todos los comandos, consulta la referencia de comandos de la CLI. Los comandos de TCP comienzan en orden alfabético con tcp abort.

Comando init

Usa el comando tcp init para inicializar el módulo TCP y comenzar la comunicación de TCP. Luego, el módulo de TCP puede realizar muchas funciones, como escuchar conexiones entrantes con el objeto de escucha de TCP de ejemplo que proporciona la CLI de tcp. Para anular la inicialización del objeto de escucha de TCP de ejemplo y el extremo TCP de ejemplo, emite el comando tcp deinit.

Comando bind

Para vincular el extremo TCP de ejemplo una vez que hayas inicializado el módulo TCP, ejecuta un comando tcp bind a fin de asignar una dirección IPv6 y un puerto al extremo TCP. Esto vincula el extremo para la comunicación. La asignación de la dirección IPv6 y el puerto también se conoce como “nombrar el extremo”.

Comando listen

Para usar el objeto de escucha de TCP de ejemplo una vez que hayas inicializado el módulo TCP, ejecuta un comando tcp listen y especifica la dirección IPv6 y el puerto de escucha.

Para evitar que el objeto de escucha de TCP de ejemplo escuche las conexiones TCP entrantes, emite el comando tcp stoplistening.

Comando connect

Un comando tcp connect conecta el extremo TCP de ejemplo a una dirección de extremo TCP de intercambio de tráfico.

Comando send

Una vez que se establece una conexión entre dos nodos, emite un comando tcp send para enviar un mensaje al intercambio de tráfico.

Comandos benchmark

Una vez que se establece una conexión TCP entre dos nodos, puedes usar los comandos benchmark de forma opcional para enviar grandes cantidades de datos entre los nodos a fin de probar el ancho de banda y el rendimiento de la red. En los resultados de benchmark, se proporcionarán la cantidad de bytes transmitidos en milisegundos y el Goodput de TCP.

Comando abort

Para finalizar una conexión TCP de inmediato y sin problemas, ejecuta el comando tcp abort en cualquier nodo para hacer la transición del extremo TCP a un estado cerrado.

Comando sendend

Cuando un nodo termina de enviar datos al otro nodo, el primer nodo puede emitir un comando tcp sendend para alertar al segundo nodo que ya no espera datos. El segundo nodo también puede enviar un tcp sendend al primer nodo. Una vez que cada nodo recibe un mensaje TCP: Disconnected, se interrumpe la conexión TCP entre los dos nodos. Se recomienda, aunque no es obligatorio, emitir este comando cuando se completa la transferencia de datos.

Envía un mensaje entre dos nodos

  1. En el nodo 1, inicializa el módulo de la CLI de TCP y, luego, detecta conexiones entrantes con el objeto de escucha de TCP de ejemplo.

    tcp init
    tcp listen :: 30000
    

    El uso de :: indica que listen debe usar la dirección IPv6 no especificada, por lo que la pila de TCP/IPv6 asigna la dirección IPv6. El puerto es 30000.

  2. En el nodo 2, inicializa el módulo de la CLI de TCP, conéctate al nodo 1 y, luego, envía un mensaje simple.

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

Verificación

En función de los pasos de ejemplo que se muestran arriba, se espera el siguiente resultado:

  • Después de que el nodo 2 ejecute el comando tcp connect, debería recibir el mensaje TCP: Connection established.
  • Luego, el nodo 1 debería recibir los mensajes (con un puerto y una dirección IPv6 de ejemplo):
    • Accepted connection from [fe80:0:0:0:8f3:f602:bf9b:52f2]:49152
    • TCP: Connection established
  • Después de que el nodo 2 ejecute el comando tcp send, este debería recibir el mensaje TCP: Received 5 bytes: hello.