簡介
本檔案將介紹CSMP通訊協定的詳細資訊,以及排解註冊問題疑難問題的步驟。
採用元件
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
CoAP簡易管理通訊協定(CSMP)
CoAP簡單管理協定(CSMP)是一種遠端網路管理協定,適用於在大規模頻寬受限網路中運行的嵌入式網路裝置。
CSMP構建在受約束應用協定(CoAP)之上。 CoAP是一種基於UDP的二進位制協定,旨在在受限、便於組播的環境中,提供類似HTTP的語義(使用URL的資源的GET/POST),並且報頭開銷最小。
CSMP定義了一小組CoAP資源,這些資源由代表資料交換終端的特定URL路徑標識。
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","fileName":"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","fileName":"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","fileName":"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","fileName":"cg-mesh-itron30-sl -REL-5.2.25","版本":"5.2.25","fileSize":40960} [root@lcdcfndappp01 bin]#
驗證計量器證書
使用CGMSSTATUS的TLV 43代碼並驗證欄位NMSCertValid。
NMSCertValid欄位可以標識FND證書是否有效。
如果硬體損壞,則從快閃記憶體讀取的所有引數都為空,例如SSID欄位。因此,如果SSID名稱存在,則說明它不是硬體損壞。
如果SSID名稱正確並且NMSCertValid欄位報告為false,則可能是抄表時複製的cert檔案有問題。
驗證計量器上的XML配置檔案
<DevCfgSchema> ,如果儀表處於演示模式,請與儀表供應商聯絡以獲得支援。
<DemoMode_Cfg> <DemoModeEnable>true</DemoModeEnable> </DemoMode_Cfg>
使用NTP的FND時鐘同步
出現以下錯誤:
%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報告有米數
如果FND中的ME/meters報告為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註冊流程圖
