Introdução
Este documento descreve os detalhes do protocolo CSMP juntamente com as etapas para solucionar problemas de registro.
Componentes Utilizados
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Protocolo de Gerenciamento Simples (CSMP - Simple Management Protocol) CoAP
O protocolo de gerenciamento simples (CSMP - Simple Management Protocol) CoAP é um protocolo de gerenciamento de rede remoto destinado a dispositivos de rede incorporados que são executados em redes com restrições de largura de banda de larga escala.
O CSMP é construído sobre o protocolo de aplicação restrita (CoAP). CoAP é um protocolo binário baseado em UDP que é projetado para fornecer semântica similar a HTTP (GET/POST de recursos com URLs) com sobrecarga mínima de cabeçalho em um ambiente restrito e amigável para multicast.
O CSMP define um pequeno conjunto de recursos CoAP identificados por caminhos de URL específicos que representam pontos finais para troca de dados.
O NMS e os dispositivos finais comunicam-se entre si diretamente por CoAP, sem proxies ou gateways interferentes.
Um agente de gerenciamento em execução no dispositivo incorporado usa o CoAP como um cliente para se comunicar diretamente com um aplicativo de gerenciamento de rede.
O cliente CSMP no dispositivo incorporado envia solicitações a recursos CoAP específicos fornecidos por um servidor CSMP no aplicativo.
Com a solução FAN, o aplicativo de gerenciamento de rede é o Field Network Diretor (FND).
Além disso, o agente de gerenciamento em execução no dispositivo incorporado usa CoAP como servidor para aceitar solicitações de um FND em execução em um local remoto.
O cliente CSMP no FND envia solicitações a recursos CoAP específicos fornecidos por um servidor CSMP nos dispositivos incorporados.
Como referência, uma mensagem CoAP tem esta estrutura:
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver| T | OC | Code | ID da mensagem |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Opções (se houver) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Carga útil (se existir) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
As opções são TLVs específicos de CoAP que têm esta estrutura:
+—+—+—+—+—+—+—+—+
| Opção Delta | Duração | para 0..14
+—+—+—+—+—+—+—+—+
| Valor da opção ...
+—+—+—+—+—+—+—+—+
O código do método tipo HTTP do CoAP ou o código de resposta está contido no campo "Código". O conjunto de opções de CoAP inclui o URL do recurso (dividido em host, porta, caminho e partes de consulta).
Utilização de CSMP em redes de campo
O FND gerencia os Endpoints de malha ou medidor, seja um medidor de gás, medidor de água ou medidor de energia. O FND se comunica com os endpoints do medidor usando o protocolo CSMP, conforme mencionado acima.
As mensagens CSMP são criptografadas. O HSM ou SSM armazena as chaves usadas para criptografar as mensagens CSMP.
O SSM (Software Security Module, Módulo de segurança de software) ou o HSM (Hardware Security Module, Módulo de segurança de hardware) também armazena o certificado CSMP necessário para comunicação.
Solucionar problemas do CSMP
Erros de Assinatura
Server.log aponta para medidores que apresentam erros de assinatura.
%IOTFND-6-UNSPECIFIED: %[ch=HandleMessage][eid=0007810800CA759B][sev=INFO][tid=CoAP Conformant-3]: o grupo de firmware em execução no dispositivo é id=243, mas deve ser id=317 (Assinatura CSMP inválida). Enviando GroupAssign.
Validar informações de hardware/firmware do medidor
Por exemplo, a saída resultante para o medidor 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.1","version": "5.6.21","fileSize": 305408,"blockSize": 650,"isDefault": false,"isRunning": false,"hwInfo": {"hwId": "RFLAN/3.60/3.80"}} [75/FirmwareImageInfo]: {"hwInfo" 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,"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","version": "5.2.25","fileSize": 40960} [root@lcdcfndappp01 bin]#
Validar certificado do medidor
Utilizar o código TLV 43 para CGMSSTATUS e verificar o campo NMSCertValid.
O campo NMSCertValid pode identificar se o certificado FND é válido ou não.
Se for um corrompimento de hardware, todos os parâmetros lidos da memória flash serão NULL, por exemplo, o campo SSID. Portanto, se o nome SSID estiver presente, ele não estará corrompido por hardware.
Se o nome SSID estiver correto e o campo NMSCertValid for informado como falso, é possível que haja um problema com o arquivo de certificado copiado no medidor.
Validar o arquivo de configuração XML no medidor
<DevCfgSchema> , se o medidor for deixado no modo de demonstração , entre em contato com o fornecedor do medidor para obter suporte.
<DemoMode_Cfg> <DemoModeEnable>true</DemoModeEnable> </DemoMode_Cfg>
Sincronização de relógio FND com NTP
Este erro é visto:
%IOTFND-7-UNSPECIFIED: %[ch=EventProducer][sev=DEBUG][tid=CoAP-7]: Objeto de Evento enviado = EventObject [netElementId=1149847, eventTime=1622146931202, eventSeverity=0, eventSource=cgmesh, eventTypeName=signatureFailure, eventDisplayName=Assinatura CSMP inválida, eventTypeId=1085, eventMessage=Verificar configuração do certificado. Verifique também se o dispositivo e a IoT-FND estão sincronizados com a hora., lat=1000.0, lng=1000.0, geoHash=null, eid=F433280000005DE8, issueId=0, eventSev=CRITICAL, moduleId=null, domainName=root]
Sintoma: no FND, o dispositivo associado entra em um estado de 'registro' em vez de aparecer UP.
- Verificar se os relógios FND e NTP estão em sincronia,
- Verifique se os relógios FND e Endpoints estão sincronizados.
Os medidores são registrados em FND
Se os medidores de ME forem reportados como INATIVOS no FND, verifique se há um firewall bloqueando as mensagens de CSMP de entrada.
Para corrigir o problema no servidor FND, desabilite o serviço firewald:
[root@iot-fnd ~]# systemctl list-unit-files | grep firewalld
firewalld.service disabled
Caso esteja habilitado, você poderá desabilitá-lo usando o comando abaixo:
[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.
Política de balanceamento de carga e mensagens CSMP
Em um ambiente de cluster de balanceamento de carga, verifique a comunicação entre os endereços origem e destino e as portas entre os terminais de medidor (ME) e FND.
Verifique as estatísticas do CSMP com a saída getStats.sh. Se um dos servidores de aplicativos tiver uma taxa de processamento CSMP muito mais alta do que os outros, o balanceamento de carga provavelmente está configurado incorretamente. Além disso, ao analisar a saída, se você vir o aumento do tamanho da fila, isso confirmará que há um processo de gargalo em algum lugar.
Exemplo de fluxo de chamada CSMP:
Solicitação CSMP para o medidor durante o registro periódico da métrica.
Medidor para FND
Endereço IPv6 do Medidor de IPv6 de origem
Endereço IP FND IP destino IPv6
61624 de porta UDP de origem
61624 de porta DST UDP
Atualização de métrica manual para um medidor do FND
Endereço IP FND IPv6 origem
Endereço IPv6 do medidor IP de destino
Porta UDP origem qualquer exemplo: 9251
61624 de porta DST UDP
Resposta do medidor durante solicitação de atualização de métrica manual (do FND)
Endereço IPv6 do medidor de IP de origem
Endereço IP destino FND ipv6
61624 de porta UDP de origem
Porta UDP do Horário de Verão que enviou no exemplo: 9251
Se o ME estiver enviando uma resposta para o IP do balanceador de carga (VIP) em vez do endereço IP solicitado no qual recebeu a "solicitação" do CSMP, " ele precisará ser roteado corretamente usando a configuração adicional.
Fluxograma para Registro do CSMP