はじめに
このドキュメントでは、CSMPプロトコルの詳細と、登録問題のトラブルシューティング手順について説明します。
使用するコンポーネント
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
CoAP Simple Management Protocol(CSMP)
CoAP Simple Management Protocol(CSMP)は、帯域幅に制約のある大規模なネットワーク内で実行される組み込みネットワークデバイス向けのリモートネットワーク管理プロトコルです。
CSMPは、Constrained Application Protocol(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です。
+—+—+—+—+—+—+—+—
|オプションデルタ|長さ| for 0..14
+—+—+—+—+—+—+—+—
|オプションの値…
+—+—+—+—+—+—+—+—
CoAP HTTPに似たメソッドコードまたは応答コードは、「コード」フィールドに含まれています。CoAPオプションのセットには、リソースURL(ホスト、ポート、パス、およびクエリ部分に分割)が含まれます。
フィールドエリアネットワークでのCSMPの使用
FNDは、ガスメーター、水道メーター、または電力メーターなどのメッシュまたはメーターのエンドポイントを管理します。FNDは、前述のようにCSMPプロトコルを使用してメータエンドポイントと通信します。
CSMPメッセージは暗号化されます。 HSMまたはSSMには、CSMPメッセージの暗号化に使用されるキーが格納されます。
SSM(Software Security Module)またはHSM(Hardware Security Module)には、通信に必要なCPM証明書も保存されます。
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]:": 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","version": "5.6.21","fileSize": 305408,"blockSize": 650,"isDefault": false,"isRunning": false,"hwId": {"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": "cg-mesh-node-5.6.2 1","version": "5.6.21","fileSize": 305408,"blockSize": 650,"isDefault": true,"isRunning": false,"hwId": "RFLAN/3.60/3.80"} [75/FirmwareImageInfo]: {"index": 4,"File" : "\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フィールドなど)がNULLになります。したがって、SSID名が存在する場合、ハードウェアの破損ではありません。
SSID名が正しく、NMSCertValidフィールドがfalseとして報告される場合、メーターにコピーされた証明書ファイルの問題である可能性があります。
メーターのXML構成ファイルを検証します
メーターがデモモードのままになっている場合は、<DevCfgSchema>、メーターのベンダーにサポートを依頼してください。
<DemoMode_Cfg> <DemoModeEnable>true</DemoModeEnable> </DemoMode_Cfg>
NTPによるFNDクロック同期
次のエラーが表示されます(図1を参照)。
%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=CertificateVerify。また、デバイスとIoT-FNDが時間同期されていることを確認します。, lat=1000.0, lng=1000.0, geoHash=null, eid=F433280000005DE8, issueId=0, eventSev=CRITICAL, moduleId=null, domainName=root]
症状:FNDでは、関連付けられたデバイスはUPではなく「registering」状態になります。
- FNDクロックとNTPクロックが同期していることを確認します。
- FNDクロックとエンドポイントのクロックが同期しているかどうかを確認します。
メーターはFNDで報告されます。
FNDでME/メーターがダウンとして報告される場合は、着信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
送信元IPメーターのIPv6アドレス
宛先IPv6 FND IPアドレス
送信元UDPポート61624
宛先UDPポート61624
FNDからのメーターの手動メトリック更新
送信元IP FND ipv6アドレス
宛先IPメーターのIPv6アドレス
送信元UDPポート:任意の例:9251
宛先UDPポート61624
手動でのメトリック更新要求中のメーター応答(FNDから)
送信元IPメーターIPv6アドレス
宛先IP FND ipv6アドレス
送信元UDPポート61624
送信したDST UDPポートの例:9251
MEが、CSMP「要求」を受信した要求されたIPアドレスではなく、ロードバランサIP(VIP)に応答を送信する場合、「その応答は、追加の設定を使用して適切にルーティングされる必要があります。
CSMP登録のフローチャート
