簡介
本文檔介紹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消息具有以下結構:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 版本 | 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/HashImageInfo]: {"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」、「版本」:「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>
FND時鐘與NTP同步
出現此錯誤:
%IOTFND-7-UNSPECIFIED: %[ch=EventProducer][sev=DEBUG][tid=CoAP-7]:傳送的事件對象= EventObject [netElementId=1149847,eventTime=1622146931202,eventSeverity=0,eventSource=cgmesh,eventTypeName=signatureFailure,eventDisplayName=無效的CSMP簽名,eventTypeId=1085,eventMessage=驗證證書設定。還要驗證裝置和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伺服器上的問題,請停用防火牆服務:
[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 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註冊流程圖