소개
이 문서에서는 CSMP 프로토콜의 세부 사항과 등록 문제 해결 단계를 설명합니다.
사용되는 구성 요소
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
CSMP(CoAP Simple Management Protocol)
CSMP(CoAP Simple Management Protocol)는 대역폭이 제한된 대규모 네트워크 내에서 실행되는 내장형 네트워킹 디바이스를 위한 원격 네트워크 관리 프로토콜입니다.
CSMP는 CoAP(Constrained Application Protocol)를 기반으로 구축됩니다. CoAP는 제한된 멀티캐스트 친화적 환경에서 최소한의 헤더 오버헤드로 HTTP 유사 의미 체계(URL이 있는 리소스의 GET/POST)를 제공하도록 설계된 UDP 기반 이진 프로토콜입니다.
CSMP는 데이터 교환을 위한 엔드포인트를 나타내는 특정 URL 경로로 식별되는 소규모 CoAP 리소스 집합을 정의합니다.
NMS와 엔드 디바이스는 중간 프록시 또는 게이트웨이 없이 CoAP를 통해 직접 통신합니다.
임베디드 디바이스에서 실행되는 관리 에이전트는 CoAP를 클라이언트로 사용하여 네트워크 관리 애플리케이션과 직접 통신합니다.
임베디드 디바이스의 CSMP 클라이언트는 애플리케이션의 CSMP 서버가 제공하는 특정 CoAP 리소스에 요청을 보냅니다.
FAN 솔루션의 네트워크 관리 애플리케이션은 FND(Field Network Director)입니다.
또한 임베디드 디바이스에서 실행되는 관리 에이전트는 CoAP를 서버로 사용하여 원격 위치에서 실행되는 FND의 요청을 수락합니다.
FND의 CSMP 클라이언트는 내장된 장치에 있는 CSMP 서버가 제공하는 특정 CoAP 리소스에 요청을 보냅니다.
참고로 CoAP 메시지는 다음과 같은 구조를 갖습니다.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver| T | 호스트 이름 | 코드 | 메시지 ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 옵션(있는 경우)...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 페이로드(있는 경우)...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
옵션은 다음과 같은 구조를 갖는 CoAP별 TLV입니다.
+—+—+—+—+—+—+—+—+
| 옵션 델타 | 길이 | 0.14의 경우
+—+—+—+—+—+—+—+—+
| 옵션 값 ...
+—+—+—+—+—+—+—+—+
CoAP HTTP와 유사한 메서드 코드 또는 응답 코드는 "Code" 필드에 포함되어 있습니다. CoAP 옵션 집합에는 리소스 URL(호스트, 포트, 경로 및 쿼리 부분으로 분할)이 포함됩니다.
Field Area Network에서 CSMP 사용
가스 계량기, 수도 계량기 또는 전력 계량기이든 FND는 메시 또는 미터 엔드포인트를 관리합니다. FND는 위에서 언급한 CSMP 프로토콜을 사용하여 미터 엔드포인트와 통신합니다.
CSMP 메시지는 암호화됩니다. HSM 또는 SSM은 CSMP 메시지 암호화에 사용되는 키를 저장합니다.
SSM(Software Security Module) 또는 HSM(Hardware Security Module)은 통신에 필요한 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,"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","version": 5.6.2" ,"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":"hwInfo": {Id": "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 인증서의 유효 여부를 식별할 수 있습니다.
하드웨어 손상이면 플래시에서 읽은 모든 매개변수가 NULL입니다(예: SSID 필드). 따라서 SSID 이름이 있으면 하드웨어 손상이 아닙니다.
SSID 이름이 올바르고 NMSCertValid 필드가 false로 보고되면 계량기에 복사된 인증서 파일에 문제가 있을 수 있습니다.
계량기의 XML 구성 파일 유효성 검사
<DevCfgSchema>, 계량기가 데모 모드에 남아 있는 경우 계량기 공급업체에 지원을 문의하십시오.
<DemoMode_Cfg> <DemoModeEnable>true</DemoModeEnable> </DemoMode_Cfg>
NTP와의 FND 클럭 동기화
이 오류가 나타납니다.
%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 인증서 설정. 또한 디바이스와 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 정기 메트릭 등록 중 미터기에 대한 요청.
미터-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 주소가 아닌 VIP(로드 밸런서 IP)에 회신을 보내는 경우 추가 컨피그레이션을 사용하여 적절히 라우팅해야 합니다.
CSMP 등록 흐름도