はじめに
このドキュメントでは、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メッセージには次の構造があります。
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|バージョン| T | OC | コード | メッセージ ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| オプション(存在する場合)...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ペイロード(存在する場合)...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
オプションは、次の構造を持つCoAP固有のTLVです。
+—+—+—+—+—+—+—+—
| オプション差分 | 長さ | 0..14用
+—+—+—+—+—+—+—+—
| オプションの値…
+—+—+—+—+—+—+—+—
CoAP HTTPに似たメソッドコードまたは応答コードが「コード」フィールドに含まれています。CoAPオプションのセットには、リソースURL(ホスト、ポート、パス、およびクエリ部分に分割)が含まれます。
フィールドエリアネットワークでのCSMPの使用
FNDは、ガスメーター、水道メーター、または電力メーターなどのメッシュまたはメーターのエンドポイントを管理します。FNDは、前述のように、CSMPプロトコルを使用してメーターエンドポイントと通信します。
CSMPメッセージは暗号化されます。 HSMまたはSSMには、CSMPメッセージの暗号化に使用されるキーが格納されます。
SSM(Software Security Module)またはHSM(Hardware Security Module)には、通信に必要なSMP証明書も格納されています。
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,"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": "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=Verify certificate。また、デバイスと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/メーターが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出力を使用してCPSMP統計情報を確認します。 いずれかのアプリケーションサーバのCPSMP処理レートが他のサーバよりも非常に高い場合、ロードバランシングが正しく設定されていない可能性があります。 さらに、出力を分析すると、キューのサイズが増加している場合は、どこかにボトルネックプロセスがあることを確認できます。
CSMPコールフローの例
定期的なメトリック登録中のメーターへのCSMP要求。
メーターからFND
送信元IPメーターのIPv6アドレス
宛先IPv6 FND IPアドレス
送信元UDPポート61624
DST UDPポート61624
FNDからのメーターの手動メトリックリフレッシュ
送信元IP FND ipv6アドレス
宛先IPメーターのIPv6アドレス
送信元UDPポート:任意の例:9251
DST UDPポート61624
手動メトリック更新要求中のメーター応答(FNDから)
送信元IPメーターのIPv6アドレス
宛先IP FND ipv6アドレス
送信元UDPポート61624
送信したDST UDPポートの例:9251
MEが、CSMP「要求」を受信した要求されたIPアドレスではなく、ロードバランサIP(VIP)に応答を送信する場合、「追加の設定を使用して、MEが適切にルーティングされる必要があります。
CSMP登録のフローチャート