Configuration et configuration du routeur de bordure OpenThread

Voir la source sur GitHub

Ce guide présente la compilation et la configuration de base du routeur de bordure OpenThread (OTBR). À la fin de cette procédure, vous disposerez d'un service de distribution par contournement (OTBR, over-threading) qui fonctionne comme un appareil à thread complet dans un design RCP.

Configurer la plate-forme

Configurez une plate-forme matérielle compatible:

Build et flash RCP

OTBR s'exécute sur une conception RCP. Sélectionnez une plate-forme OpenThread compatible à utiliser comme système RCP, puis suivez les instructions de création et de clignotement applicables à cette plate-forme.

Pour obtenir une vue d'ensemble de la création d'OpenThread, consultez le guide de création.

Vous trouverez des instructions spécifiques sur la création de plates-formes compatibles avec GNU Autotools dans chaque dossier de plate-forme de l'exemple.

Installation OTBR

OTBR communique avec le RCP via une Spinelle. Pour installer OTBR sur la plate-forme matérielle configurée, procédez comme suit :

Clonez le dépôt OTBR:

git clone https://github.com/openthread/ot-br-posix

Installer des dépendances

La configuration par défaut active BORDER_ROUTING pour la plupart des plates-formes. Pour obtenir la liste complète des options OTBR par défaut, consultez les exemples de plates-formes sur GitHub. Sélectionnez votre plate-forme, puis cliquez sur default (si disponible).

  • Utilisation par défaut:

    cd ot-br-posix
    ./script/bootstrap
    
  • BeagleBone Black avec Network Manager (facultatif):

    cd ot-br-posix
    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/bootstrap
    

Compiler et installer OTBR

  • Utilisation par défaut. Le script de configuration active le routage des frontières par défaut. Pour activer le routage des frontières, spécifiez l'interface Ethernet ou Wi-Fi de votre plate-forme:

    Utiliser Ethernet:

    INFRA_IF_NAME=eth0 ./script/setup
    

    Utilisez le Wi-Fi:

    INFRA_IF_NAME=wlan0 ./script/setup
    
  • Noir Beagle Utilisez Network Manager (facultatif):

    NETWORK_MANAGER=1 NETWORK_MANAGER_WIFI=1 ./script/setup
    

Associer et configurer un appareil RCP

Connectez le périphérique RCP Flash à la plate-forme Border Routeur via USB.

Pour configurer le port série de l'appareil RCP dans otbr-agent, commencez par déterminer le nom du port série pour l'appareil RCP en vérifiant /dev:

ls /dev/tty*

Vérifiez ensuite vos paramètres otbr-agent.

cd /etc/default
cat otbr-agent

Le fichier de configuration otbr-agent contient le nom de l'interface Thread, l'interface Ethernet ou Wi-Fi, et le nom du port série RCP.

OTBR_AGENT_OPTS="-I wpan0 -B OTBR_INFRA_IF_NAME spinel+hdlc+uart:///dev/ttyACM0 trel://OTBR_INFRA_IF_NAME"

Tous les appareils ne sont pas associés au même nom de port série. Les noms de port les plus courants sont ttyACM* et ttyUSB*. Reportez-vous à la documentation de votre appareil pour déterminer le nom de port série attendu.

Si nécessaire, mettez à jour le fichier de configuration otbr-agent. Par exemple, pour une interface Wi-Fi et un nom de port série de ttyUSB0:

OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyUSB0 trel://wlan0"

Pour mettre à jour une interface Ethernet:

OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyUSB0 trel://eth0"

Arrêtez et redémarrez le routeur de bordure. Si vous utilisez la plate-forme BeagleBone Black, n'oubliez pas d'appuyer de manière prolongée sur le bouton BOOT.

Le service OTBR doit démarrer au démarrage.

Vérifier les services

Vérifiez que tous les services requis sont activés:

sudo systemctl status

Si le script setup a abouti, les services suivants apparaissent dans la sortie:

  • mdns.service
  • otbr-agent.service
  • otbr-web.service

Exemple :

● raspberrypi
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: Thu 1970-01-01 00:00:01 UTC; 47 years 7 months ago
   CGroup: /
           ├─user.slice
           │ └─user-1000.slice
           │   ├─user@1000.service
           │   │ └─init.scope
           │   │   ├─576 /lib/systemd/systemd --user
           │   │   └─580 (sd-pam)
           │   └─session-c1.scope
           │     ├─480 /bin/login --
           │     └─585 -bash
           ├─init.scope
           │ └─1 /sbin/init
           └─system.slice
             ├─systemd-timesyncd.service
             │ └─334 /lib/systemd/systemd-timesyncd
             ├─dbus.service
             │ └─339 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
             ├─hciuart.service
             │ └─442 /usr/bin/hciattach /dev/serial1 bcm43xx 921600 noflow -
             ├─ssh.service
             │ └─621 /usr/sbin/sshd -D
             ├─avahi-daemon.service
             │ ├─341 avahi-daemon: running [raspberrypi.local]
             │ └─361 avahi-daemon: chroot helper
  # enabled  ├─otbr-web.service
             │ └─472 /usr/sbin/otbr-web
             ├─triggerhappy.service
             │ └─354 /usr/sbin/thd --triggers /etc/triggerhappy/triggers.d/ --socket /run/thd.socket --user nobody --deviceglob /dev/input/event*
             ├─systemd-logind.service
             │ └─353 /lib/systemd/systemd-logind
  # enabled  ├─otbr-agent.service
             │ └─501 /usr/sbin/otbr-agent -I wpan0
             ├─cron.service
             │ └─350 /usr/sbin/cron -f
             ├─systemd-udevd.service
             │ └─154 /lib/systemd/systemd-udevd
             ├─rsyslog.service
             │ └─345 /usr/sbin/rsyslogd -n
             ├─bluetooth.service
             │ └─445 /usr/lib/bluetooth/bluetoothd
  # enabled  ├─mdns.service
             │ └─725 /usr/sbin/mdnsd
             ├─systemd-journald.service
             │ └─136 /lib/systemd/systemd-journald
             └─dhcpcd.service
               ├─409 wpa_supplicant -B -c/etc/wpa_supplicant/wpa_supplicant.conf -iwlan0
               └─466 /sbin/dhcpcd -q -w

Si ces services sont en cours d'exécution, mais que l'indice d'impact sur la route est dégradé, un autre service n'a pas pu démarrer. Vérifiez les éléments suivants:

sudo systemctl --failed

Vous pouvez également vérifier chaque service individuellement:

sudo service mdns status
sudo service otbr-agent status
sudo service otbr-web status

otbr-web est activé par défaut pour la plupart des plates-formes. Si otbr-web n'est pas installé, essayez de transmettre l'indicateur WEB_GUI:

WEB_GUI=1 ./script/bootstrap
INFRA_IF_NAME=wlan0 WEB_GUI=1 ./script/setup

Vérifier le RCP

Vérifiez que le système RCP:

sudo ot-ctl state

ot-ctl est un utilitaire de ligne de commande fourni avec OTBR. Elle permet de communiquer avec l'interface PAN du thread (par défaut, wpan0) à laquelle otbr-agent est lié dans la conception RCP.

Si le RCP s'exécute correctement et que le nœud n'est pas membre d'un réseau Thread, le résultat doit être semblable à ce qui suit:

disabled

Si la sortie est OpenThread daemon is not running, procédez comme suit pour résoudre le problème:

  1. Vérifiez que le routeur de bordure dispose d'une puissance électrique suffisante (utilisez l'adaptateur secteur externe approprié).
  2. Déconnectez et reconnectez la carte RCP à la plate-forme de bordures.
  3. Vérifiez que l'appareil série RCP est présent. Par exemple, si l'appareil doit être associé à /dev/ttyUSB0 :

    ls /dev/ttyUSB*
    /dev/ttyUSB0
    
  4. Réinitialisez le RCP avec sudo ot-ctl reset.

Vérifiez à nouveau l'état du RCP avec sudo ot-ctl state.