Inleiding
In dit document worden de details van het CSMP-protocol beschreven, samen met de stappen voor het oplossen van registratieproblemen.
Gebruikte componenten
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.
CoAP Simple Management Protocol (CSMP)
CoAP Simple Management Protocol (CSMP) is een protocol voor extern netwerkbeheer dat is bedoeld voor ingebedde netwerkapparaten die worden uitgevoerd binnen grootschalige netwerken met beperkte bandbreedte.
CSMP is gebaseerd op het Constrained Application Protocol (CoAP). CoAP is een op UDP gebaseerd binair protocol dat is ontworpen om HTTP-achtige semantiek (GET / POST van bronnen met URL's) te bieden met minimale overhead voor de header in een beperkte, multicast-vriendelijke omgeving.
CSMP definieert een kleine set CoAP-bronnen die worden geïdentificeerd door specifieke URL-paden die eindpunten voor gegevensuitwisseling vertegenwoordigen.
De NMS en de eindapparaten communiceren rechtstreeks met elkaar via CoAP, zonder tussenliggende proxies of gateways.
Een beheeragent die op het ingesloten apparaat wordt uitgevoerd, gebruikt CoAP als een client om rechtstreeks met een netwerkbeheertoepassing te communiceren.
De CSMP-client in het ingesloten apparaat verzendt verzoeken naar bepaalde CoAP-bronnen die door een CSMP-server in de toepassing worden geleverd.
Met de FAN-oplossing is de netwerkbeheertoepassing de Field Network Director (FND).
Bovendien gebruikt de beheeragent die op het ingesloten apparaat wordt uitgevoerd CoAP als een server om verzoeken van een FND die op een externe locatie wordt uitgevoerd, te accepteren.
De CSMP-client in de FND verzendt verzoeken naar bepaalde CoAP-bronnen die door een CSMP-server in de ingesloten apparaten worden geleverd.
Ter referentie, een CoAP-bericht heeft deze structuur:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
|ver| t | oc | code | bericht-id |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| Eventuele opties ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| Eventuele nuttige last ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
De opties zijn CoAP-specifieke TLV's met deze structuur:
+----+------------+----+----+
| Optie Delta | Lengte | voor 0,14
+----+------------+----+----+
| Optiewaarde ...
+----+------------+----+----+
De CoAP HTTP-achtige methode code of response code is opgenomen in het veld "Code". De set CoAP-opties bevat de resource-URL (gesplitst in host-, poort-, pad- en querygedeelten).
Gebruik van CSMP in Field Area Networks
FND beheert de Mesh- of Meter-eindpunten, of het nu een gasmeter, watermeter of vermogensmeter is. FND communiceert met metereindpunten met behulp van het CSMP-protocol zoals hierboven vermeld.
CSMP-berichten worden gecodeerd. HSM of SSM slaat de sleutels op die worden gebruikt voor het coderen van de CSMP-berichten.
SSM (Software Security Module) of HSM (Hardware Security Module) slaat ook het CSMP-certificaat op dat nodig is voor communicatie.
Problemen met CSMP oplossen
Handtekeningsfouten
Server.log verwijst naar meters met handtekeningfouten.
%IOTFND-6-UNSPECIFICATED: %[ch=HandleMessage][eid=0007810800CA759B][sev=INFO][tid=CoAP Conformant-3]: De firmwaregroep die op het apparaat wordt uitgevoerd, is id=243, maar moet id=317 zijn (ongeldige CSMP-handtekening). Groep toewijzen verzenden.
Hardware-/firmwaregegevens van de meter valideren
Bijvoorbeeld de resulterende uitvoer voor de EID-meter "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]#
Metercertificaat valideren
TLV 43-code gebruiken voor CGMSSTATUS en het veld NMSCertValid verifiëren.
Het veld NMSCertValid kan aangeven of het FND-certificaat geldig is of niet.
Als het een hardwarecorruptie is, zijn alle parameters die van de flitser worden gelezen NULL, bijvoorbeeld het SSID-veld. Als de SSID-naam aanwezig is, is er dus geen sprake van hardwarecorruptie.
Als de SSID-naam juist is en het NMSCertValid-veld als false wordt gerapporteerd, is er mogelijk een probleem met het cert-bestand dat op de meter is gekopieerd.
Het XML-configuratiebestand op de meter valideren
<DevCfgSchema> als de meter in Demo-modus blijft staan, neemt u contact op met de leverancier van de meter voor ondersteuning.
<DemoMode_Cfg> <DemoModeEnable>true</DemoModeEnable> </DemoMode_Cfg>
FND-kloksynchronisatie met NTP
Deze fout wordt gezien:
%IOTFND-7-UNSPECIFIED: %[ch=EventProducer][sev=DEBUG][tid=CoAP-7]: gebeurtenisobject dat wordt verzonden = EventObject [netElementId=1149847, eventTime=1622146931202, eventSeverity=0, eventSource=cgmesh, eventTypeName=signatureFailure, eventDisplayName=Ongeldige CSMP-handtekening, eventTypeId=1085, eventMessage=Certificaatinstelling controleren. Controleer ook of apparaat en IoT-FND tijdsynchronisatie hebben., lat=1000.0, lng=1000.0, geoHash=null, eid=F433280000005DE8, issueId=0, eventSev=CRITICAL, moduleId=null, domainName=root]
Symptoom: In FND gaat het bijbehorende apparaat in een 'registrerende' staat in plaats van te verschijnen.
- Controleer of de FND- en NTP-klokken synchroon lopen,
- Controleer of de FND- en Eindpuntklokken synchroon lopen.
Meters worden gerapporteerd in FND
Als de ME/meters als DOWN in FND worden gerapporteerd, controleer dan of er een firewall is die binnenkomende CSMP-berichten blokkeert.
Als u het probleem op de FND-server wilt oplossen, schakelt u de firewallservice uit:
[root@iot-fnd ~]# systemctl list-unit-files | grep firewalld
firewalld.service disabled
In het geval dat het is ingeschakeld, kunt u het uitschakelen met behulp van de onderstaande opdracht:
[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.
Beleid voor taakverdeling en CSMP-berichten
Controleer in een clusteromgeving met taakverdeling de communicatie tussen de bron- en bestemmingsadressen en de poorten tussen metereindpunten (ME) en FND.
Controleer CSMP-statistieken met de output getStats.sh. Als een van de toepassingsservers een veel hogere CSMP-verwerkingssnelheid heeft dan de andere, is de taakverdeling waarschijnlijk onjuist geconfigureerd. Bovendien, wanneer u de uitvoer analyseert, als u ziet dat uw wachtrijgroottes toenemen, bevestigt dit dat er ergens een knelpuntproces is.
CSMP-gespreksstroomvoorbeeld:
CSMP-verzoek aan de meter tijdens periodieke metrische registratie.
Meter naar FND
IPv6-adres SrcIP-meter
Bestemming IPv6 FND IP-adres
Bron UDP-poort 61624
DST UDP-poort 61624
Handmatige metrische verversing voor een meter van FND
Bron ip FND ipv6 adres
IP Meter IPv6-adres bestemming
Bron UDP poort elk voorbeeld: 9251
DST UDP-poort 61624
Meterrespons tijdens handmatige aanvraag voor metrische verversing (van FND)
IP Meter IPv6-adres bron
Bestemming IP FND ipv6-adres
Bron UDP-poort 61624
DST UDP-poort die het stuurde op voorbeeld: 9251
Als de ME een antwoord verstuurt naar de Load balancer IP (VIP) in plaats van het gevraagde IP-adres waarop hij het "verzoek" van de CSMP heeft ontvangen, " moet het correct worden gerouteerd met behulp van extra configuratie.
Flowchart voor CSMP-registratie
