Test della funzionalità TCP con OT CLI

Visualizza il codice sorgente su GitHub

OpenThread offre comandi TCP da utilizzare con una rete Thread per testare la comunicazione peer-to-peer tra gli endpoint TCP. cli tcp fornisce un endpoint TCP di esempio e un listener TCP di esempio con cui interagiscono tutti i comandi tcp.

Le panoramiche dei comandi e l'esempio che segue forniscono informazioni sull'inizializzazione dell'endpoint TCP e del listener TCP di esempio, su come connettersi a un endpoint TCP peer e su come inviare un messaggio al peer.

Comandi TCP

Per un elenco dei comandi tcp, digita help:

tcp help
abort
benchmark
bind
connect
deinit
init
listen
send
sendend
stoplistening
Done
Per le descrizioni e la sintassi di tutti i comandi, consulta la documentazione di riferimento sui comandi dell'interfaccia a riga di comando. I comandi TCP iniziano in ordine alfabetico con tcp abort.

Comando init

Utilizza il comando tcp init per inizializzare il modulo TCP e iniziare la comunicazione TCP. Il modulo TCP può quindi eseguire molte funzioni, come l'ascolto delle connessioni in entrata utilizzando il listener TCP di esempio fornito dall'interfaccia a riga di comando tcp. Per annullare l'inizializzazione del listener TCP di esempio e dell'endpoint TCP di esempio, esegui il comando tcp deinit.

Comando bind

Per associare l'endpoint TCP di esempio dopo aver inizializzato il modulo TCP, esegui un comando tcp bind per assegnare un indirizzo IPv6 e una porta all'endpoint TCP. Questo associa l'endpoint per la comunicazione. L'assegnazione dell'indirizzo e della porta IPv6 è anche definita "denominazione dell'endpoint".

Comando listen

Per utilizzare il listener TCP di esempio dopo aver inizializzato il modulo TCP, esegui un comando tcp listen e specifica l'indirizzo IPv6 e la porta di ascolto.

Per impedire al listener TCP di esempio di ascoltare le connessioni TCP in entrata, emetti il comando tcp stoplistening.

Comando connect

Un comando tcp connect connette l'endpoint TCP di esempio a un indirizzo dell'endpoint TCP peer.

Comando send

Una volta stabilita una connessione tra due nodi, esegui un comando tcp send per inviare un messaggio al peer.

benchmark comandi

Una volta stabilita una connessione TCP tra due nodi, puoi utilizzare facoltativamente i comandi benchmark per inviare grandi quantità di dati tra i nodi al fine di testare la larghezza di banda e le prestazioni della rete. Nei risultati di benchmark verranno forniti il numero di byte trasmessi in millisecondi e il Goodput TCP.

Comando abort

Per terminare immediatamente e senza cerimonie di una connessione TCP, esegui il comando tcp abort su uno dei due nodi per far passare l'endpoint TCP in uno stato chiuso.

Comando sendend

Quando un nodo invia dati all'altro, il primo nodo può inviare un comando tcp sendend per avvisare il secondo di non aspettarsi più dati. Anche il secondo nodo può inviare un codice tcp sendend al primo. Quando ogni nodo riceve un messaggio TCP: Disconnected, la connessione TCP tra i due nodi viene interrotta. È consigliabile, ma non obbligatorio, emettere questo comando una volta completato il trasferimento dei dati.

Invia un messaggio tra due nodi

  1. Sul nodo 1, inizializza il modulo dell'interfaccia a riga di comando TCP, quindi resta in ascolto delle connessioni in entrata utilizzando il listener TCP di esempio.

    tcp init
    tcp listen :: 30000
    

    L'uso di :: indica che listen deve usare l'indirizzo IPv6 non specificato, in modo che lo stack TCP/IPv6 assegni l'indirizzo IPv6. Il numero della porta è 30.000.

  2. Sul nodo 2, inizializza il modulo dell'interfaccia a riga di comando TCP, connettiti al nodo 1, quindi invia un semplice messaggio.

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

Verifica

In base ai passaggi di esempio mostrati sopra, l'output previsto è il seguente:

  • Dopo che il nodo 2 ha eseguito il comando tcp connect, il nodo 2 dovrebbe ricevere il messaggio TCP: Connection established.
  • Il nodo 1 dovrebbe quindi ricevere i messaggi (con la porta e l'indirizzo IPv6 di esempio):
    • Accepted connection from [fe80:0:0:0:8f3:f602:bf9b:52f2]:49152
    • TCP: Connection established
  • Dopo che il nodo 2 ha eseguito il comando tcp send, il nodo 1 dovrebbe ricevere il messaggio TCP: Received 5 bytes: hello