简介
本文档介绍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]:{"索引":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","文件名":"cg-mesh-node-5.6.2 1","版本":"5.6.21","fileSize":305408,"isDefault":false,"isRunning":true,"hwInfo":{"hwId":“RFLAN/3.60/3.80”} [75/FirmwareImageInfo]:{"索引":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","文件名":"cg-mesh-node-5.6.2 1","版本":"5.6.21","fileSize":305408,"blockSize":650,"isDefault":false,"isRunning":false,"hwInfo":{"hwId":“RFLAN/3.60/3.80”} [75/FirmwareImageInfo]:{"索引":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","文件名":"cg-mesh-node-5.6.2 1","版本":"5.6.21","fileSize":305408,"blockSize":650,"isDefault":true,"isRunning":false,"hwInfo":{"hwId":“RFLAN/3.60/3.80”} [75/FirmwareImageInfo]:{"索引":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","文件名":"cg-mesh-itron30-sl -REL-5.2.25","版本":"5.2.25","文件大小":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]:发送的Event Object = EventObject [netElementId=1149847, eventTime=1622146931202, eventSeverity=0, eventSource=cgmesh, eventTypeName=signatureFailure, eventDisplayName=Invalid CSMP Signature, eventTypeId=1085, eventMessage=Verify certificate setup。还要验证设备和IoT-FND的时间已同步。, lat=1000.0, lng=1000.0, geoHash=null, eid=F433280000005DE8, issueId=0, eventSev=CRITICAL, moduleId=null, domainName=root]
症状:在FND中,关联设备进入“注册”状态,而不是显示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在定期指标注册期间向计量器发出请求。
计量器至FND
Src ip Meter IPv6地址
目的IPv6基础IP地址
源UDP端口61624
DST UDP端口61624
从FND手动刷新仪表
源ip FND ipv6地址
目的IP度量IPv6地址
源UDP端口任意示例:9251
DST UDP端口61624
手动指标刷新请求期间的指标响应(来自FND)
源ip计量IPv6地址
目的IP基础IPv6地址
源UDP端口61624
发送的DST UDP端口示例:9251
如果ME向负载均衡器IP(VIP)发送应答,而不是向其接收CSMP“请求”时所请求的IP地址,则需要使用其他配置正确路由它。
CSMP注册的流程图
