Tester la fonctionnalité TCP avec OT CLI

Voir la source sur GitHub

OpenThread propose des commandes TCP à utiliser avec un réseau Thread pour tester la communication peer-to-peer entre les points de terminaison TCP. cli tcp fournit un exemple de point de terminaison TCP et un exemple d'écouteur TCP avec lesquels toutes les commandes tcp interagissent.

Les présentations de commandes et l'exemple qui suit fournissent des informations sur l'initialisation de l'exemple de point de terminaison TCP et d'écouteur TCP, de la connexion à un point de terminaison TCP pair et de l'envoi d'un message au pair.

Commandes TCP

Pour obtenir la liste des commandes tcp, saisissez help :

tcp help
abort
benchmark
bind
connect
deinit
init
listen
send
sendend
stoplistening
Done
Pour obtenir la description et la syntaxe de toutes les commandes, consultez la documentation de référence sur les commandes CLI. Les commandes TCP commencent alphabétiquement par tcp abort.

Commande init

Utilisez la commande tcp init pour initialiser le module TCP afin de commencer la communication TCP. Le module TCP peut ensuite effectuer de nombreuses fonctions, telles que l'écoute des connexions entrantes à l'aide de l'exemple d'écouteur TCP fourni par la CLI tcp. Pour déinitialiser l'exemple d'écouteur TCP et l'exemple de point de terminaison TCP, exécutez la commande tcp deinit.

Commande bind

Pour lier l'exemple de point de terminaison TCP une fois que vous avez initialisé le module TCP, exécutez une commande tcp bind pour attribuer une adresse IPv6 et un port au point de terminaison TCP. Cela permet de lier le point de terminaison pour la communication. L'attribution de l'adresse et du port IPv6 est également appelée « nom du point de terminaison ».

Commande listen

Pour utiliser l'exemple d'écouteur TCP une fois que vous avez initialisé le module TCP, exécutez une commande tcp listen et spécifiez l'adresse IPv6 et le port d'écoute.

Pour empêcher l'exemple d'écouteur TCP d'écouter les connexions TCP entrantes, exécutez la commande tcp stoplistening.

Commande connect

Une commande tcp connect connecte l'exemple de point de terminaison TCP à une adresse de point de terminaison TCP pair.

Commande send

Une fois la connexion établie entre deux nœuds, exécutez une commande tcp send pour envoyer un message au pair.

Commandes benchmark

Une fois qu'une connexion TCP est établie entre deux nœuds, vous pouvez éventuellement utiliser les commandes benchmark pour envoyer de grandes quantités de données entre les nœuds afin de tester la bande passante et les performances du réseau. Le nombre d'octets transmis en millisecondes ainsi que le Goodput TCP sont indiqués dans les résultats benchmark.

Commande abort

Pour mettre fin immédiatement et de manière non cérémonie à une connexion TCP, exécutez la commande tcp abort sur l'un des nœuds afin de faire passer le point de terminaison TCP à un état fermé.

Commande sendend

Lorsqu'un nœud a fini d'envoyer des données à l'autre nœud, le premier nœud peut émettre une commande tcp sendend pour alerter le second nœud afin qu'il n'attende plus de données. Le deuxième nœud peut également envoyer un tcp sendend au premier nœud. Une fois que chaque nœud reçoit un message TCP: Disconnected, la connexion TCP entre les deux nœuds est interrompue. Il est recommandé, mais pas obligatoire, d'exécuter cette commande une fois le transfert de données terminé.

Envoyer un message entre deux nœuds

  1. Sur le nœud 1, initialisez le module CLI TCP, puis écoutez les connexions entrantes à l'aide de l'exemple d'écouteur TCP.

    tcp init
    tcp listen :: 30000
    

    L'utilisation de :: indique que listen doit utiliser l'adresse IPv6 non spécifiée, ce qui permet à la pile TCP/IPv6 d'attribuer l'adresse IPv6. Le port est 30000.

  2. Sur le nœud 2, initialisez le module de CLI TCP, connectez-vous au nœud 1, puis envoyez un message simple.

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

Validation

D'après les exemples d'étapes présentés ci-dessus, vous devriez obtenir le résultat suivant:

  • Une fois que le nœud 2 a exécuté la commande tcp connect, le nœud 2 doit recevoir le message TCP: Connection established.
  • Le nœud 1 doit ensuite recevoir les messages (avec exemple d'adresse IPv6 et de port) :
    • Accepted connection from [fe80:0:0:0:8f3:f602:bf9b:52f2]:49152
    • TCP: Connection established
  • Une fois que le nœud 2 a exécuté la commande tcp send, le nœud 1 doit recevoir le message TCP: Received 5 bytes: hello.