目录

简介

使用的组件

CoAP简单管理协议(CSMP)

CSMP在现场局域网中的使用

排除CSMP故障

签名错误

验证仪表硬件/固件信息

验证仪表证书

验证仪表上的XML配置文件

与NTP的基金时钟同步

FND报告仪表

Load-BalancingPolicy和CSMP消息

CSMP呼叫流示例：

仪表到基础

从FND手动刷新度量

在手动指标刷新请求期间计量器响应（来自FND）

CSMP注册流程图

简介

本文档介绍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。

1. 检查FND和NTP时钟是否同步，

2. 检查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注册流程图