Introduzione
Questo documento descrive i dettagli del protocollo CSMP e la procedura per risolvere i problemi di registrazione.
Componenti usati
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Protocollo CSMP (CoAP Simple Management Protocol)
Il protocollo CSMP (CoAP Simple Management Protocol) è un protocollo di gestione remota delle reti destinato ai dispositivi di rete incorporati in esecuzione in reti con larghezza di banda limitata su larga scala.
CSMP è basato sul protocollo CoAP (Constrained Application Protocol). CoAP è un protocollo binario basato su UDP progettato per fornire semantica di tipo HTTP (GET/POST di risorse con URL) con un sovraccarico di intestazione minimo in un ambiente vincolato e multicast.
CSMP definisce un piccolo insieme di risorse CoAP identificate da percorsi URL specifici che rappresentano gli endpoint per lo scambio di dati.
Il NMS e i dispositivi terminali comunicano tra loro direttamente tramite CoAP, senza proxy o gateway intermedi.
Un agente di gestione in esecuzione sul dispositivo incorporato utilizza CoAP come client per comunicare direttamente con un'applicazione di gestione di rete.
Il client CSMP nel dispositivo incorporato invia le richieste a particolari risorse CoAP fornite da un server CSMP nell'applicazione.
Con la soluzione FAN, l'applicazione di gestione della rete è Field Network Director (FND).
Inoltre, l'agente di gestione in esecuzione sul dispositivo incorporato utilizza CoAP come server per accettare le richieste da un FND in esecuzione in una posizione remota.
Il client CSMP in FND invia le richieste a particolari risorse CoAP fornite da un server CSMP nei dispositivi incorporati.
Per riferimento, un messaggio CoAP ha la seguente struttura:
+-+-+-+--+-+--+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-++++++++++-+++++++++++++++++++++++++++++++-
|Versione| T | OC | Codice | ID messaggio |
+-+-+-+--+-+--+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-++++++++++-+++++++++++++++++++++++++++++++-
| Opzioni (se disponibili) ...
+-+-+-+--+-+--+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-++++++++++-+++++++++++++++++++++++++++++++-
| Carico utile (se presente) ...
+-+-+-+--+-+--+-+--+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-++++++++++-+++++++++++++++++++++++++++++++-
Le opzioni sono TLV specifici del CoAP con la seguente struttura:
+—+—+—+—+—+—+—+—+—+
| Opzione Delta | Lunghezza | per 0..14
+—+—+—+—+—+—+—+—+—+
| Valore opzione...
+—+—+—+—+—+—+—+—+—+
Il codice di risposta o il codice del metodo simile a HTTP CoAP è contenuto nel campo "Codice". Il set di opzioni CoAP include l'URL della risorsa (suddiviso in parti host, porta, percorso e query).
Uso di CSMP nelle reti Field Area
FND gestisce gli endpoint Mesh o Meter, che si tratti di un contatore di gas, di un contatore dell'acqua o di un contatore di potenza. FND comunica con gli endpoint dei contatori utilizzando il protocollo CSMP, come indicato in precedenza.
I messaggi CSMP sono crittografati. HSM o SSM archivia le chiavi utilizzate per crittografare i messaggi CSMP.
SSM (Software Security Module) o HSM (Hardware Security Module) archivia anche il certificato CSMP necessario per la comunicazione.
Risoluzione dei problemi relativi a CSMP
Errori di firma
Server.log fa riferimento ai contatori con errori di firma.
%IOTFND-6-UNSPECIFIED: %[ch=HandleMessage][eid=0007810800CA759B][sev=INFO][tid=CoAP Conformant-3]: l'esecuzione del gruppo firmware sul dispositivo è id=243 ma deve essere id=317 (firma CSMP non valida). Invio di GroupAssign.
Convalida informazioni su hardware/firmware
Ad esempio, l'output risultante per il misuratore 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/FirmwareImage]: {"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/FirmwareImage]: {"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/FirmwareImage]: {"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]#
Convalida certificato contatore
Utilizzo del codice TLV 43 per CGMSSTATUS e verifica del campo NMSCertValid.
Il campo NMSCertValid consente di identificare se il certificato FND è valido o meno.
Se l'hardware è danneggiato, tutti i parametri letti dalla memoria flash sono NULL, ad esempio il campo SSID. Pertanto, se il nome SSID è presente, non si tratta di danneggiamento dell'hardware.
Se il nome SSID è corretto e il campo NMSCertValid viene segnalato come falso, è possibile che si tratti di un problema con il file del certificato copiato sullo strumento di misura.
Convalidare il file di configurazione XML sullo strumento di misura
<DevCfgSchema> , se lo strumento di misura viene lasciato in modalità Demo, contattare il fornitore dello strumento di misura per assistenza.
<DemoMode_Cfg> <DemoModeEnable>true</DemoModeEnable> </DemoMode_Cfg>
Sincronizzazione orologio FND con NTP
Questo errore viene rilevato:
%IOTFND-7-UNSPECIFIED: %[ch=EventProducer][sev=DEBUG][tid=CoAP-7]: Oggetto evento inviato = EventObject [netElementId=1149847, eventTime=1622146931202, eventSeverity=0, eventSource=cgmesh, eventTypeName=signatureFailure, eventDisplayName=Firma CSMP non valida, eventTypeId=10 85, eventMessage=Verifica l'installazione del certificato. Verificare inoltre che il dispositivo e IoT-FND siano sincronizzati in base all'ora., lat=1000.0, lng=1000.0, geoHash=null, eid=F433280000005DE8, issueId=0, eventSev=CRITICAL, moduleId=null, domainName=root]
Sintomo: in FND, il dispositivo associato passa in uno stato di 'registrazione' invece di visualizzare UP.
- Verificare che gli orologi FND e NTP siano sincronizzati,
- Verificare che gli orologi FND ed Endpoints siano sincronizzati.
I misuratori sono riportati in basso nel FND
Se ME/metri sono segnalati come NON ATTIVI in FND, verificare se è presente un firewall che blocca i messaggi CSMP in ingresso.
Per risolvere il problema sul server FND, disabilitare il servizio firewall:
[root@iot-fnd ~]# systemctl list-unit-files | grep firewalld
firewalld.service disabled
Se è abilitata, è possibile disabilitarla utilizzando il comando seguente:
[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.
Messaggi CSMP e criteri di bilanciamento del carico
In un ambiente cluster di bilanciamento del carico verificare la comunicazione tra gli indirizzi di origine e di destinazione e le porte tra gli endpoint dei contatori (ME) e FND.
Verificare le statistiche CSMP con l'output getStats.sh. Se uno degli application server presenta una velocità di elaborazione CSMP molto più elevata rispetto agli altri server, è probabile che il bilanciamento del carico non sia configurato correttamente. Inoltre, quando si analizza l'output, se si nota che le dimensioni della coda aumentano, si conferma che da qualche parte si verifica un processo collo di bottiglia.
Esempio di flusso di chiamata CSMP:
Richiesta CSMP allo strumento di misura durante la registrazione periodica della metrica.
Misuratore a FND
Indirizzo IPv6 misuratore ip Src
Indirizzo IP FND IPv6 di destinazione
Porta UDP di origine 61624
Porta UDP DST 61624
Aggiornamento manuale delle metriche per un metro da FND
Indirizzo ipv6 FND IP di origine
Indirizzo IPv6 misuratore di destinazione
Porta UDP di origine, ad esempio: 9251
Porta UDP DST 61624
Risposta del misuratore durante la richiesta di aggiornamento manuale della metrica (da FND)
Indirizzo IPv6 misuratore IP di origine
Indirizzo IP FND ipv6 di destinazione
Porta UDP di origine 61624
Porta UDP DST inviata nell'esempio: 9251
Se il server ME invia una risposta all'indirizzo IP del servizio di bilanciamento del carico (VIP) anziché all'indirizzo IP richiesto su cui ha ricevuto la "richiesta" CSMP in data, " deve essere correttamente instradato utilizzando una configurazione aggiuntiva.
Diagramma di flusso per registrazione CSMP