Einleitung
In diesem Dokument werden die Details des CSMP-Protokolls sowie die Schritte zur Fehlerbehebung bei Registrierungsproblemen beschrieben.
Verwendete Komponenten
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.
CoAP Simple Management Protocol (CSMP)
CoAP Simple Management Protocol (CSMP) ist ein Remote-Netzwerkverwaltungsprotokoll für integrierte Netzwerkgeräte, die in Netzwerken mit begrenzter Bandbreite ausgeführt werden.
CSMP basiert auf dem Constrained Application Protocol (CoAP). CoAP ist ein UDP-basiertes Binärprotokoll, das entwickelt wurde, um HTTP-ähnliche Semantik (GET/POST von Ressourcen mit URLs) mit minimalem Header-Overhead in einer eingeschränkten, Multicast-freundlichen Umgebung bereitzustellen.
CSMP definiert eine kleine Gruppe von CoAP-Ressourcen, die durch spezifische URL-Pfade identifiziert werden, die Endpunkte für den Datenaustausch darstellen.
Das NMS und die Endgeräte kommunizieren direkt über CoAP miteinander, ohne dazwischen liegende Proxys oder Gateways.
Ein auf dem integrierten Gerät ausgeführter Management-Agent verwendet CoAP als Client für die direkte Kommunikation mit einer Netzwerkmanagement-Anwendung.
Der CSMP-Client im integrierten Gerät sendet Anfragen an bestimmte CoAP-Ressourcen, die von einem CSMP-Server in der Anwendung bereitgestellt werden.
Bei der FAN-Lösung fungiert der Field Network Director (FND) als Netzwerkmanagement-Anwendung.
Darüber hinaus verwendet der auf dem integrierten Gerät ausgeführte Management-Agent CoAP als Server, um Anfragen von einem FND entgegenzunehmen, der an einem entfernten Standort ausgeführt wird.
Der CSMP-Client im FND sendet Anfragen an bestimmte CoAP-Ressourcen, die von einem CSMP-Server in den integrierten Geräten bereitgestellt werden.
Zur Referenz hat eine CoAP-Nachricht die folgende Struktur:
+-+-+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+---+--+--+--+---+--+--+-+-+-
|Ver| T | OC | Code | Nachrichten-ID |
+-+-+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+---+--+--+--+---+--+--+-+-+-
| Optionen (falls vorhanden) ...
+-+-+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+---+--+--+--+---+--+--+-+-+-
| Nutzlast (falls vorhanden) ...
+-+-+-+-+-+-+-+-+-+-+-+--+-+-+-+-+-+-+--+--+--+--+--+--+--+--+--+--+--+---+--+--+--+---+--+--+-+-+-
Bei den Optionen handelt es sich um CoAP-spezifische TLVs mit folgender Struktur:
+—+—+—+—+—+—+—+—+—+—+—
| Optionsdelta | Länge | für 0,14
+—+—+—+—+—+—+—+—+—+—+—
| Optionswert ...
+—+—+—+—+—+—+—+—+—+—+—
Der CoAP-HTTP-ähnliche Methodencode oder Antwortcode ist im Feld "Code" enthalten. Die CoAP-Optionen umfassen die Ressourcen-URL (aufgeteilt in Host-, Port-, Pfad- und Abfrageabschnitte).
Einsatz von CSMP in Field Area Networks
FND verwaltet Mesh- oder Zählerendpunkte, seien es Gaszähler, Wasserzähler oder Stromzähler. FND kommuniziert wie oben erwähnt über das CSMP-Protokoll mit Meterendgeräten.
CSMP-Nachrichten sind verschlüsselt. HSM oder SSM speichert die zur Verschlüsselung der CSMP-Nachrichten verwendeten Schlüssel.
SSM (Software Security Module) oder HSM (Hardware Security Module) speichert auch das für die Kommunikation erforderliche CSMP-Zertifikat.
Fehlerbehebung bei CSMP
Signaturfehler
Server.log verweist auf Messgeräte mit Signaturfehlern.
%IOTFND-6-UNSPECIFIED: %[ch=HandleMessage][eid=0007810800CA759B][sev=INFO][tid=CoAP Conformant-3]: Die Ausführung der Firmware-Gruppe auf dem Gerät ist id=243, muss jedoch id=317 sein (ungültige CSMP-Signatur). GroupAssign wird gesendet.
Überprüfen Sie die Hardware-/Firmware-Informationen des Messgeräts
Beispiel: Die resultierende Ausgabe für Meter EID "fd00:abd:51:c000:207:8108:e7:6fda"
[root@lcdcfndappp01 bin]# /opt/cgms-tools/bin/csmp-request -r [fd00:abd:51:c000:207:8108:e7:6fda] 75
[75/FirmwareImageInfo]: {"index": 1,"fileHash": "\x25\x9c\xcf\x36\xf9\x19\x8d\x4e\x13\xaa\x7f\x83\xa3\x94\x4a\xee\xe8\xc1\xc6\xc1\x0d\x7e\x11\xd2\xc0\x2d\x4f\xbc\xad\xdd\x97\x83","fileName": "cg-mesh-node-5.6.2 1","version": "5.6.21","fileSize": 305408,"isDefault": false,"isRunning": true,"hwInfo": { "hwId": "RFLAN/3.60/3.80"} [75/FirmwareImageInfo]: {"index": 2,"fileHash": "\x25\x9c\xcf\x36\xf9\x19\x8d\x4e\x13\xaa\x7f\x83\xa3\x94\x4a\xee\xe8\xc1\xc6\xc1\x0d\x7e\x11\xd2\xc0\x2d\x4f\xbc\xad\xdd\x97\x83","fileName": "cg-mesh-node-5.6.2.1","version": "5.6.21","fileSize": 305408 ,"blockSize": 650,"isDefault": false,"isRunning": false,"hwInfo": {"hwId": "RFLAN/3.60/3.80"}} [75/FirmwareImageInfo]: {"index": 3,"fileHash": "\x25\x9c\xcf\x36\xf9\x19\x8d\x4e\x13\xaa\x7f\x83\xa3\x94\x4a\xee\xe8\xc1\xc6\xc1\x0d\x7e\x11\xd2\xc0\x2d\x4f\xbc\xad\xdd\x97\x83","fileName": "cg-mesh-node-5.6.2 1","version": "5.6.21","fileSize": 305408,"blockSize": 650,"isDefault": true,"isRunning": false,"hwInfo": {"hwId": "RFLAN/3.60/3.80"} [75/FirmwareImageInfo]: {"index": 4,"fileHash": "\x3d\x03\xe4\x6c\xa7\x10\x3c\x75\x21\xf2\x41\x8f\x88\x4f\x56\x0e\x46\x7a\x06\xfc\x78\x24\x69\xeb\x0e\x8b\xfc\x03\x64\xb8\x8f\x85","fileName": "cg-mesh-itron30-sl -REL-5.2.25","version": "5.2.25","fileSize": 40960} [root@lcdcfndappp01 bin]#
Meterzertifikat validieren
Verwenden von TLV 43-Code für CGMSSTATUS und Überprüfen des Felds "NMSCertValid".
Das Feld "NMSCertValid" kann angeben, ob das FND-Zertifikat gültig ist.
Wenn es sich um eine Hardwarebeschädigung handelt, sind alle vom Flash gelesenen Parameter NULL, z. B. das SSID-Feld. Wenn also der SSID-Name vorhanden ist, handelt es sich nicht um eine Hardwarebeschädigung.
Wenn der SSID-Name korrekt ist und das Feld "NMSCertValid" als "false" gemeldet wird, liegt möglicherweise ein Problem mit der auf den Zähler kopierten Zertifikatsdatei vor.
Validierung der XML-Konfigurationsdatei auf dem Messgerät
<DevCfgSchema> , wenn der Zähler sich im Demomodus befindet, wenden Sie sich an den Hersteller des Zählers, um Unterstützung zu erhalten.
<DemoMode_Cfg> <DemoModeEnable>true</DemoModeEnable> </DemoMode_Cfg>
Synchronisierung der FND-Uhr mit NTP
Dieser Fehler tritt auf:
%IOTFND-7-UNSPECIFIED: %[ch=EventProducer][sev=DEBUG][tid=CoAP-7]: Ereignisobjekt, das gesendet wird = EventObject [netElementId=1149847, eventTime=1622146931202, eventSeverity=0, eventSource=cgmesh, eventTypeName=signatureFailure, eventDisplayName=Invalid CSMP-Signatur, eventTypeId=1085, eventMessage=Certificate setup überprüfen. Überprüfen Sie außerdem, ob Gerät und IoT-FND zeitsynchron sind., lat=1000.0, lng=1000.0, geoHash=null, eid=F433280000005DE8, issueId=0, eventSev=CRITICAL, moduleId=null, domainName=root]
Symptom: In FND wechselt das verknüpfte Gerät in den Status "Registrieren", statt "UP" anzuzeigen.
- Überprüfen der Synchronisierung von FND und NTP
- Überprüfen Sie, ob die FND- und die Endpunktuhren synchronisiert sind.
Zähler werden in FND ausgefallen gemeldet
Wenn ME/Meter in FND als DOWN gemeldet werden, prüfen Sie, ob eine Firewall eingehende CSMP-Nachrichten blockiert.
Um das Problem auf dem FND-Server zu beheben, deaktivieren Sie den Firewall-Dienst:
[root@iot-fnd ~]# systemctl list-unit-files | grep firewalld
firewalld.service disabled
Falls sie aktiviert ist, können Sie sie mit dem folgenden Befehl deaktivieren:
[root@iot-fnd ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Load-Balancing-Richtlinie und CSMP-Nachrichten
Überprüfen Sie in einer Cluster-Umgebung mit Lastenausgleich die Kommunikation zwischen Quell- und Zieladresse sowie zwischen den Ports zwischen Meterendpunkten (ME) und FND.
Überprüfen Sie die CSMP-Statistik mit der Ausgabe von getStats.sh. Wenn einer der Anwendungsserver eine wesentlich höhere CSMP-Verarbeitungsrate als die anderen aufweist, ist der Lastenausgleich wahrscheinlich falsch konfiguriert. Wenn Sie die Ausgabe analysieren und feststellen, dass die Warteschlangengrößen ansteigen, bestätigt dies, dass irgendwo ein Engpass vorliegt.
Beispiel für CSMP-Anruffluss:
CSMP-Anfrage an das Messgerät während der periodischen metrischen Registrierung.
Meter zu FND
Src IP Meter IPv6-Adresse
IP-Zieladresse für IPv6-FND
Quell-UDP-Port 61624
DST UDP-Port 61624
Manuelle Aktualisierung der Kennzahlen für einen Zähler von FND
IPv6-Adresse des Quell-FND
IPv6-Adresse des Ziel-IP-Messgeräts
Beliebiges Beispiel für UDP-Quellport: 9251
DST UDP-Port 61624
Zählerantwort bei manueller Anforderung zur Metrikaktualisierung (von FND)
IPv6-Adresse des Quell-IP-Messgeräts
IP-FND IPv6-Zieladresse
Quell-UDP-Port 61624
DST-UDP-Port, den er am Beispiel 9251 schickte
Wenn der ME eine Antwort an die Load Balancer-IP (VIP) sendet und nicht an die angeforderte IP-Adresse, an der er die CSMP-"Anforderung" am empfangen hat, muss er mithilfe zusätzlicher Konfiguration ordnungsgemäß weitergeleitet werden.
Flussdiagramm für die CSMP-Registrierung