简介
本文档介绍CSMP协议的详细信息以及解决注册问题的步骤。
使用的组件
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
CoAP简单管理协议(CSMP)
CoAP简单管理协议(CSMP)是一种远程网络管理协议,适用于在大规模带宽受限的网络中运行的嵌入式网络设备。
CSMP建立在受约束的应用协议(CoAP)之上。CoAP是基于UDP的二进制协议,用于在受限、组播友好的环境中提供类似HTTP的语义(使用URL的资源的GET/POST)和最小的报头开销。
CSMP定义了由代表数据交换终端的特定URL路径标识的一小组CoAP资源。
NMS和终端设备直接通过CoAP相互通信,无需干预代理或网关。
在嵌入式设备上运行的管理代理使用CoAP作为客户端来直接与网络管理应用通信。
嵌入式设备中的CSMP客户端向应用中的CSMP服务器提供的特定CoAP资源发送请求。
对于FAN解决方案,网络管理应用是Field Network Director (FND)。
此外,运行在嵌入式设备上的管理代理使用CoAP作为服务器来接受来自运行在远程位置的FND的请求。
FND中的CSMP客户端向嵌入式设备中的CSMP服务器提供的特定CoAP资源发送请求。
例如,CoAP消息具有以下结构:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver| T | OC | 代码 | 消息 ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 选项(如果有)……
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 负载(如果有)……
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
选项是具有以下结构的CoAP特定TLV:
+—+—+—+—+—+—+—+
| 选项增量 | 长度 | 对于0..14
+—+—+—+—+—+—+—+
| 选项值……
+—+—+—+—+—+—+—+
CoAP类HTTP方法代码或响应代码包含在“代码”字段中。CoAP选项集包括资源URL(拆分为主机、端口、路径和查询部分)。
CSMP在现场局域网中的使用
FND管理网状或电表终端,无论是燃气表、水表或电力表。如上所述,FND使用CSMP协议与计量器终端通信。
CSMP消息已加密。 HSM或SSM存储用于加密CSMP消息的密钥。
SSM(软件安全模块)或HSM(硬件安全模块)也存储通信所需的CSMP证书。
排除CSMP故障
签名错误
Server.log指向存在签名错误的仪表。
%IOTFND-6-UNSPECIFIED: %[ch=HandleMessage][eid=0007810800CA759B][sev=INFO][tid=CoAP Conformant-3]:设备上运行的固件组为id=243,但必须为id=317(CSMP签名无效)。 正在发送GroupAssign。
验证仪表硬件/固件信息
例如,为计量器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,"fileDefault" : "\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": 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]#
验证仪表证书
使用CGMSSTATUS的TLV 43代码并验证字段NMSCertValid。
NMSCertValid字段可以确定FND证书是否有效。
如果是硬件损坏,则从闪存读取的所有参数均为空,例如SSID字段。因此,如果存在SSID名称,则它不是硬件损坏。
如果SSID名称正确并且NMSCertValid字段报告为false,则可能是抄送在计量器上的证书文件存在问题。
验证计量表上的XML配置文件
<DevCfgSchema> ,如果仪表处于演示模式,请与仪表供应商联系以获得支持。
<DemoMode_Cfg> <DemoModeEnable>true</DemoModeEnable> </DemoMode_Cfg>
与NTP的基金时钟同步
出现此错误:
%IOTFND-7-UNSPECIFIED: %[ch=EventProducer][sev=DEBUG][tid=CoAP-7]:发送的事件对象= EventObject [netElementId=1149847, eventTime=1622146931202, eventSeverity=0, eventSource=cgmesh, eventTypeName=signatureFailure, eventDisplayName=Invalid CSMP Signature, eventTypeId=1085, eventMessage=验证证书设置。此外,请验证设备和IoT-FND的时间是否同步。, lat=1000.0, lng=1000.0, geoHash=null, eid=F433280000005DE8, issueId=0, eventSev=CRITICAL, moduleId=null, domainName=root]
症状:在FND中,关联设备进入“registering”状态而不是显示UP。
- 检查FND和NTP时钟是否同步,
- 检查FND和终端时钟是否同步。
FND报告仪表
如果ME/meters在FND中报告为DOWN,请检查是否有防火墙阻止传入CSMP消息。
要修复FND服务器上的问题,请禁用firewalld服务:
[root@iot-fnd ~]# systemctl list-unit-files | grep firewalld
firewalld.service disabled
如果已启用,您可以使用以下命令将其禁用:
[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.
负载均衡策略和CSMP消息
在负载均衡集群环境中,检查源地址和目标地址之间的通信,以及计量终端(ME)和FND之间的端口。
使用getStats.sh输出检验CSMP统计信息。 如果其中一个应用服务器的CSMP处理速率远远高于其他应用服务器,则负载均衡可能配置不正确。 此外,当您分析输出时,如果您看到队列大小增加,会确认某处存在瓶颈进程。
CSMP呼叫流示例:
CSMP在定期指标注册期间向计量器发出请求。
仪表到基础
源IP测量器IPv6地址
目的IPv6基础IP地址
源UDP端口61624
DST UDP端口61624
从FND手动刷新米
源ip基础ipv6地址
目的IP测量器IPv6地址
源UDP端口任意示例:9251
DST UDP端口61624
手动指标刷新请求期间的仪表响应(来自FND)
源IP测量器IPv6地址
目的IP基础IPv6地址
源UDP端口61624
发送的DST UDP端口示例:9251
如果ME向负载均衡器IP (VIP)发送应答,而不是向其接收CSMP“请求”所请求的IP地址,“则需要使用其他配置正确路由它。
CSMP注册流程图