Introduction
Ce document décrit les détails du protocole CSMP ainsi que les étapes de dépannage des problèmes d'enregistrement.
Composants utilisés
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.
Protocole CSMP (Simple Management Protocol) CoAP
Le protocole de gestion simple CoAP (CSMP) est un protocole de gestion de réseau à distance destiné aux périphériques réseau intégrés fonctionnant sur des réseaux à large bande passante.
CSMP est construit sur le protocole CoAP (Constrained Application Protocol). CoAP est un protocole binaire basé sur UDP qui est conçu pour fournir une sémantique de type HTTP (GET/POST de ressources avec des URL) avec une surcharge d'en-tête minimale dans un environnement contraint et compatible avec la multidiffusion.
CSMP définit un petit ensemble de ressources CoAP identifiées par des chemins d'URL spécifiques qui représentent des points d'extrémité pour l'échange de données.
Le NMS et les périphériques finaux communiquent directement entre eux par le biais du protocole CoAP, sans proxy ni passerelles.
Un agent de gestion exécuté sur le périphérique intégré utilise le protocole CoAP comme client pour communiquer directement avec une application de gestion de réseau.
Le client CSMP dans le périphérique intégré envoie des requêtes à des ressources CoAP particulières fournies par un serveur CSMP dans l'application.
Avec la solution FAN, l'application de gestion du réseau est le FND (Field Network Director).
En outre, l'agent de gestion s'exécutant sur le périphérique intégré utilise CoAP comme serveur pour accepter les requêtes d'un FND s'exécutant dans un emplacement distant.
Le client CSMP dans le FND envoie des requêtes à des ressources CoAP particulières fournies par un serveur CSMP dans les périphériques intégrés.
Pour référence, un message CoAP a la structure suivante :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver| T | OC | Code | ID du message |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options (le cas échéant) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Charge utile (le cas échéant) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Les options sont des TLV spécifiques au CoAP qui ont cette structure :
+—+—+—+—+—+—+—+—+—+
| Option Delta | Longueur | pour 0,14
+—+—+—+—+—+—+—+—+—+
| Valeur d'option...
+—+—+—+—+—+—+—+—+—+
Le code de méthode ou code de réponse de type HTTP CoAP est contenu dans le champ « Code ». L'ensemble d'options CoAP inclut l'URL de la ressource (divisée en parties hôte, port, chemin et requête).
Utilisation du protocole CSMP dans les réseaux de terrain
FND gère les terminaux Mesh ou Meter, qu'il s'agisse d'un compteur de gaz, d'eau ou d'énergie. FND communique avec les terminaux de mesure à l'aide du protocole CSMP mentionné ci-dessus.
Les messages CSMP sont chiffrés. HSM ou SSM stocke les clés utilisées pour chiffrer les messages CSMP.
SSM (Software Security Module) ou HSM (Hardware Security Module) stocke également le certificat CSMP nécessaire à la communication.
Dépannage de CSMP
Erreurs de signature
Server.log indique que les compteurs comportent des erreurs de signature.
%IOTFND-6-UNSPECIFIED : %[ch=HandleMessage][eid=0007810800CA759B][sev=INFO][tid=CoAP Conformant-3] : le groupe de microprogrammes en cours d'exécution sur le périphérique est id=243 mais doit être id=317(Signature CSMP non valide). Envoi de GroupAssign.
Valider les informations de matériel/micrologiciel du compteur
Par exemple, le résultat obtenu pour le compteur 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,"file" "Hash" : "\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","File" ": "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]#
Valider le certificat du compteur
Utilisation du code TLV 43 pour CGMSSTATUS et vérification du champ NMSCertValid.
Le champ NMSCertValid peut indiquer si le certificat FND est valide ou non.
S'il s'agit d'une corruption matérielle, tous les paramètres lus à partir de la mémoire flash sont NULL, par exemple, le champ SSID. Par conséquent, si le nom SSID est présent, il ne s'agit pas d'une corruption matérielle.
Si le nom SSID est correct et que le champ NMSCertValid est signalé comme faux, il est possible que le fichier de certificat soit copié sur le compteur.
Validez le fichier de configuration XML sur le compteur
<DevCfgSchema> , si le multimètre reste en mode Démo , contactez le fournisseur du multimètre pour obtenir de l'aide.
<DemoMode_Cfg> <DemoModeEnable>true</DemoModeEnable> </DemoMode_Cfg>
Synchronisation d'horloge FND avec NTP
Cette erreur est visible :
%IOTFND-7-UNSPECIFIED : %[ch=EventProducer][sev=DEBUG][tid=CoAP-7] : objet d'événement qui est envoyé = EventObject [netElementId=1149847, eventTime=1622146931202, eventSeverity=0, eventSource=cgmesh, eventTypeName=signatureFailure, eventDisplayName=Signature CSMP non valide, eventTypeId=1085, eventMessage=Vérifier la configuration du certificat. Vérifiez également que le périphérique et l'IoT-FND sont synchronisés., lat=1000.0, lng=1000.0, geoHash=null, eid=F433280000005DE8, issueId=0, eventSave=CRITICAL, moduleId=null, domainName=root]
Symptôme : dans FND, le périphérique associé passe à l'état « enregistrement » au lieu d'afficher UP.
- Vérifiez si les horloges FND et NTP sont synchronisées,
- Vérifiez si les horloges FND et Endpoints sont synchronisées.
Les compteurs sont signalés dans FND
Si les ME/mètres sont signalés comme ÉTEINTS dans FND, vérifiez si un pare-feu bloque les messages CSMP entrants.
Pour résoudre le problème sur le serveur FND, désactivez le service de pare-feu :
[root@iot-fnd ~]# systemctl list-unit-files | grep firewalld
firewalld.service disabled
Si elle est activée, vous pouvez la désactiver à l'aide de la commande ci-dessous :
[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.
Stratégie d'équilibrage de charge et messages CSMP
Dans un environnement de cluster d’équilibrage de charge, vérifiez la communication entre les adresses source et de destination, ainsi que les ports entre les points d’extrémité de compteur (ME) et FND.
Vérifiez les statistiques CSMP avec le résultat de getStats.sh. Si l'un des serveurs d'applications a un taux de traitement CSMP beaucoup plus élevé que les autres, alors l'équilibrage de charge est probablement mal configuré. En outre, lorsque vous analysez le résultat, si vous voyez que la taille de votre file d'attente augmente, cela confirme qu'il y a un processus de goulot d'étranglement quelque part.
Exemple de flux d'appels CSMP :
Requête CSMP adressée au compteur lors de l'enregistrement périodique des mesures.
Compteur à FND
Adresse IPv6 du lecteur IP Src
Adresse IP FND IPv6 de destination
Port UDP source 61624
Port UDP DST 61624
Actualisation manuelle de la métrique pour un compteur à partir de FND
Adresse IP source FND ipv6
Adresse IPv6 du compteur IP de destination
Port UDP source n'importe quel exemple : 9251
Port UDP DST 61624
Réponse du compteur lors de la demande manuelle d'actualisation de la mesure (depuis FND)
Adresse IPv6 du compteur IP source
Adresse IP IPv6 de destination FND
Port UDP source 61624
Port UDP DST qu'il a envoyé dans l'exemple : 9251
Si le ME envoie une réponse à l'IP d'équilibrage de charge (VIP) plutôt qu'à l'adresse IP demandée sur laquelle il a reçu la « requête » CSMP, « il doit être correctement routé à l'aide d'une configuration supplémentaire.
Organigramme pour l'enregistrement CSMP