Netzwerkdaten mit OT-Befehlszeile aufrufen und verwalten

Quelle auf GitHub ansehen

Thread-Netzwerkdaten enthalten Informationen über Border-Router und andere im Thread-Netzwerk verfügbare Server. Border-Router und Geräte, die Dienste anbieten, registrieren ihre Informationen beim Leader. Der Leader sammelt und strukturiert diese Informationen in den Thread-Netzwerkdaten und verteilt die Informationen an alle Geräte im Thread-Netzwerk.

Border-Router können dem Thread-Netzwerk zugewiesene Präfixe und Präfixe registrieren, für die sie Routen anbieten. Dienste können alle Informationen registrieren, die für den Dienst selbst relevant sind.

Die Informationen des Border-Routers und der Dienste können dauerhaft oder vorübergehend sein. Stabile Thread-Netzwerkdaten werden an alle Geräte verteilt, einschließlich Sleepy End Devices (SEDs). Temporäre Netzwerkdaten werden an alle Knoten außer SEDs verteilt.

Netzwerkdatenbefehle

Geben Sie help ein, um eine Liste von netdata-Befehlen aufzurufen:

netdata help
help
full
length
maxlength
publish
register
show
steeringdata
unpublish
Done

full-Befehle

Die full-Befehle melden den Flag-Status oder prüfen das Flag, um nachzuverfolgen, ob der Callback „net data full“ (Nettodaten voll) aufgerufen wurde.

Dieser Befehl erfordert OPENTHREAD_CONFIG_BORDER_ROUTER_SIGNAL_NETWORK_DATA_FULL.

length- und maxlength-Befehle

Mit dem Befehl length wird die aktuelle Länge der Thread-Netzwerkdaten als Anzahl von Byte abgerufen. maxlength-Befehle rufen die maximal beobachtete Länge ab oder setzen die erfasste maximale Länge zurück.

publish-Befehle

Der Netzwerkdaten-Publisher bietet Mechanismen zur Begrenzung der Anzahl ähnlicher Dienst- und Präfixeinträge (On-Mesh-Präfix oder externe Route) in den Thread-Netzwerkdaten. Dazu werden die Netzwerkdaten überwacht und festgelegt, wann Einträge hinzugefügt oder entfernt werden sollen.

Der Verlag oder Webpublisher benötigt OPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE.

Netzwerk einrichten und Präfix konfigurieren

  1. Neue Netzwerkkonfiguration generieren.

    dataset init new
    Done
    
  2. Rufen Sie die Netzwerkkonfiguration auf.

    dataset
    Active Timestamp: 1
    Channel: 13
    Channel Mask: 0x07fff800
    Ext PAN ID: d63e8e3e495ebbc3
    Mesh Local Prefix: fd3d:b50b:f96d:722d::/64
    Network Key: dfd34f0f05cad978ec4e32b0413038ff
    Network Name: OpenThread-8f28
    PAN ID: 0x8f28
    PSKc: c23a76e98f1a6483639b1ac1271e2e27
    Security Policy: 0, onrcb
    Done
    
  3. Übertragen Sie das neue Dataset per Commit zum aktiven operativen Dataset im nichtflüchtigen Speicher.

    dataset commit active
    Done
    
  4. Thread-Schnittstelle aktivieren

    ifconfig up
    Done
    thread start
    Done
    
  5. Zeigt IPv6-Adressen an, die der Thread-Schnittstelle zugewiesen sind.

    ipaddr
    fd3d:b50b:f96d:722d:0:ff:fe00:fc00
    fd3d:b50b:f96d:722d:0:ff:fe00:dc00
    fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
    fe80:0:0:0:a40b:197f:593d:ca61
    Done
    
  6. Registrieren Sie ein IPv6-Präfix, das dem Thread-Netzwerk zugewiesen ist.

    prefix add fd00:dead:beef:cafe::/64 paros med
    Done
    netdata register
    Done
    
  7. Thread-Netzwerkdaten anzeigen.

    netdata show
    Prefixes:
    fd00:dead:beef:cafe::/64 paros med dc00
    Routes:
    fd49:7770:7fc5:0::/64 s med 4000
    Services:
    44970 5d c000 s 4000
    44970 01 9a04b000000e10 s 4000
    Done
    

    Präfixe und Routen enthalten Argumentzuordnungen und den RLOC-Wert.

    Diensteinträge enthalten otServiceConfig-Werte wie mEnterpriseNumber, mServiceData, otServerConfig::mServerData und s, um otServerConfig::mStable anzugeben. Das RLOC wird auch an das Ende des Datensatzes angehängt.

  8. Zeigt die aktuelle Länge der Thread-Netzwerkdaten von Partition in Byte an.

    netdata length
    23
    Done
    
  9. Zeigt IPv6-Adressen an, die der Thread-Schnittstelle zugewiesen sind, einschließlich des hinzugefügten Präfixes.

    ipaddr
    fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa
    fd3d:b50b:f96d:722d:0:ff:fe00:fc00
    fd3d:b50b:f96d:722d:0:ff:fe00:dc00
    fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
    fe80:0:0:0:a40b:197f:593d:ca61
    Done
    

An vorhandenes Netzwerk anhängen

Für die Verbindung eines Geräts mit einem Thread-Netzwerk ist nur der Netzwerkschlüssel erforderlich.

Obwohl dies nicht erforderlich ist, wird durch Angabe des Kanals die Notwendigkeit einer Suche über mehrere Kanäle vermieden, wodurch sowohl die Latenz als auch die Effizienz des Verknüpfungsvorgangs verbessert wird.

Nachdem ein Gerät erfolgreich mit einem Thread-Netzwerk verbunden wurde, ruft es das vollständige aktive operative Dataset ab.

  1. Erstellen Sie ein partielles aktives operatives Dataset.

    dataset networkkey dfd34f0f05cad978ec4e32b0413038ff
    Done
    dataset commit active
    Done
    
  2. Aktivieren Sie die Thread-Schnittstelle.

    ifconfig up
    Done
    thread start
    Done
    
  3. Nachdem Sie eine Verbindung zum vorhandenen Netzwerk hergestellt haben, werden Thread-Netzwerkdaten angezeigt.

    netdata show
    Prefixes:
    fd00:dead:beef:cafe::/64 paros med dc00
    Routes:
    Services:
    Done
    
  4. Zeigt die aktuelle Länge der Thread-Netzwerkdaten von Partition in Byte an.

    netdata length
    23
    Done
    
  5. Zeigt IPv6-Adressen an, die der Thread-Schnittstelle zugewiesen sind.

    ipaddr
    fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa
    fd3d:b50b:f96d:722d:0:ff:fe00:fc00
    fd3d:b50b:f96d:722d:0:ff:fe00:dc00
    fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
    fe80:0:0:0:a40b:197f:593d:ca61
    Done
    

Fehlerbehebung und Diagnose

Netzwerkdaten haben eine begrenzte Größe von 254 Byte. Wenn Border-Router weiter Einträge (z. B. Präfixe, Routen oder Diensteinträge) zu den Netzwerkdaten hinzufügen, können sie voll werden. In diesem Fall werden neue Anfragen von einem Border Router zum Hinzufügen neuer Elemente vom Leader abgelehnt oder ignoriert. Der Leader signalisiert dem Border Router nicht unbedingt die Ablehnung, sodass er möglicherweise nicht sofort erkennt, dass die Netzwerkdaten voll sind. Es gibt jedoch eine Methode, um zu erkennen, wann die Netzwerkdaten voll sind.

Die Erkennungsmethode, die sowohl auf Border-Routern als auch auf dem Leader implementiert ist, verwendet einen Callback-API-Mechanismus und ermöglicht es Nutzern, benachrichtigt zu werden, wenn die Netzwerkdaten voll sind. Der Callback kann verwendet werden, um Aktionen auszuführen, z. B. veraltete Präfixe oder Diensteinträge zu entfernen. Die netdata full-Befehle werden für das Flag verwendet, das verfolgt, ob der Callback „net data full“ aufgerufen wurde. Mit diesen Befehlen kann der Status des Flags gemeldet oder zurückgesetzt werden.

Für die typischen Anwendungsfälle von Thread ist es unwahrscheinlich, dass die Netzwerkdaten vollständig sind, selbst wenn es viele Border Router gibt und alle Routenpräfixe hinzufügen.

Es ist technisch möglich, dass die Netzwerkdaten voll sind. Dies ist jedoch häufig auf eine fehlerhafte Konfiguration oder ein Problem mit dem Border Router zurückzuführen. Mit den Befehlen netdata length und netdata maxlength können Sie Fehler bei vollständigen Netzwerkdaten beheben. length ruft die aktuelle Länge der Netzwerkdaten ab, die als Byte gemeldet wird, und maxlength ruft die maximal beobachtete Länge ab und kann auch die erfasste maximale Länge zurücksetzen.