DNP3 por camadas: enlace, transporte e aplicação
Entenda a arquitetura DNP3 por camadas e aprenda a separar meio físico, Data Link, pseudo-transporte, Application Layer e transporte IP durante configuração e diagnóstico.
Camadas DNP3 e perguntas de diagnóstico
| Nível | Responsabilidade principal | Campos/evidências | Falhas típicas |
|---|---|---|---|
| Meio físico/rede | Transportar sinais/quadros | nível, BER, CRC de interface, VLAN, rota, perda | ruído, polaridade, fibra, RF, ACL, rota |
| Data Link DNP3 | Framing e endereço lógico | 0x05 0x64, Length, Link Control, Source, Destination, CRC | endereço incorreto, quadro truncado, corrupção |
| Pseudo-transporte | Segmentar/remontar fragmentos | FIR, FIN, sequência | perda de segmento, resposta grande incompleta |
| Application Layer | Telecontrole e semântica | Function Code, objetos, qualifier, IIN, sequência | objeto não suportado, request inválido, serviço incompatível |
| Processo/SCADA | Mapear informação e operação | lista de pontos, qualidade, timestamp, comando | índice errado, escala, classe, intertravamento |
Por que pensar em camadas muda o diagnóstico
DNP3 foi desenhado para operar em meios diversos e, por isso, separa responsabilidades. Na prática de campo, essa separação é a ferramenta mais útil para evitar diagnósticos por tentativa. Se uma resposta chega com CRC inválido, o problema não é corrigido alterando Class 1. Se a sessão TCP abre mas o master recebe IIN de objeto desconhecido, o caminho IP já não é o primeiro suspeito. Cada camada produz evidências diferentes e deve ser validada na ordem correta.
O modelo DNP3 não deve ser confundido mecanicamente com o OSI de sete camadas. A implementação clássica possui Data Link Layer, uma função de pseudo-transporte para segmentar e remontar fragmentos da aplicação e a Application Layer. Quando DNP3 roda em IP, Ethernet, IP e TCP ou UDP acrescentam suas próprias responsabilidades abaixo do DNP3. O engenheiro precisa saber qual campo pertence a qual nível para interpretar uma captura.
Data Link Layer: framing, endereços e integridade do quadro
A camada de enlace DNP3 delimita o frame, identifica origem e destino lógicos e protege blocos com CRC. O cabeçalho conhecido inicia com 0x05 0x64, seguido por comprimento, controle de enlace, Destination, Source e CRC. O dado do usuário é protegido em blocos adicionais. Essa estrutura foi criada para detectar corrupção em canais que podem ser ruidosos ou de baixa qualidade.
Source e Destination são endereços DNP3, não endereços IP. Esse detalhe explica um cenário recorrente: o master conecta ao IP correto, recebe bytes na porta correta, mas a outstation ignora ou rejeita o tráfego porque o endereço lógico não corresponde ao configurado. Em enlaces seriais multiponto, o endereçamento é ainda mais importante porque vários dispositivos podem compartilhar o mesmo meio físico.
- Start — O que é: assinatura 0x05 0x64 do frame. Efeito: permite delimitar o início de uma unidade DNP3. Validar: captura serial ou PCAP decodificada.
- Length — O que é: campo de comprimento do frame. Efeito: define quanto dado pertence à unidade. Validar: comparar valor declarado e bytes recebidos em quadros problemáticos.
- Link Control — O que é: campo de controle da camada de enlace. Efeito: expressa direção e função de enlace. Validar: observar sequência e função sem confundir com Function Code da aplicação.
- Source/Destination — O que é: endereços lógicos DNP3. Efeito: selecionam origem e destino do frame. Validar: configuração das pontas e captura.
- CRC — O que é: verificação de integridade por blocos. Efeito: detecta corrupção. Validar: erros recorrentes, qualidade do meio, serial, conversores e contadores.
Pseudo-transporte: FIR, FIN e sequência entre fragmentos
A função de transporte DNP3 existe para dividir fragmentos maiores da aplicação em unidades que cabem no enlace e remontá-los no destino. Seus indicadores de início e fim permitem que o receptor saiba quando um fragmento começa e termina, enquanto o número de sequência ajuda a detectar perda ou ordem inesperada. É uma camada pequena, mas crucial quando respostas crescem, como em integrity polls com muitos pontos.
Uma instalação pode funcionar com poucas variáveis e falhar apenas em respostas grandes. Nesse caso, investigar somente o banco do SCADA é insuficiente. Compare o caso curto com o longo, verifique continuidade das unidades de transporte, perda de blocos, MTU do caminho IP quando aplicável, buffers de gateways e qualidade de rádio ou serial. A primeira quebra na sequência é a evidência que orienta o próximo passo.
Application Layer: Function Code, objetos, sequência e IIN
É na camada de aplicação que DNP3 passa a representar telecontrole. O master envia funções como leitura, escrita, confirmação ou operações de controle; a mensagem carrega objetos definidos por Group e Variation, qualifiers, ranges e índices. A resposta da outstation inclui informações internas que podem sinalizar restart, necessidade de tempo, eventos pendentes, overflow, função não suportada ou objeto desconhecido.
A sequência da aplicação e o mecanismo de confirmação não devem ser confundidos com ACK do TCP. TCP confirma entrega de bytes no transporte; DNP3 possui semântica própria para confirmar determinadas mensagens e eventos. Em troubleshooting, uma retransmissão TCP e uma repetição de uma transação DNP3 são fenômenos diferentes e podem ter causas diferentes.
DNP3 sobre TCP/IP: as camadas continuam existindo
Quando DNP3 usa TCP/IP, o frame DNP3 continua carregando seus endereços e controles. O IP resolve roteamento; TCP entrega um fluxo confiável e ordenado; DNP3 continua responsável por objetos, eventos, classes, IIN e comandos. A porta TCP 20000 é a porta convencional associada ao DNP3, mas deve ser confirmada na engenharia e no equipamento, porque projetos podem utilizar parâmetros diferentes.
O teste deve ser encadeado. Primeiro: ARP/VLAN/rota/ACL. Segundo: handshake TCP e estabilidade da sessão. Terceiro: framing DNP3 e endereços lógicos. Quarto: Function Code e objetos. Quinto: comportamento funcional do processo. Essa ordem economiza tempo porque elimina hipóteses inteiras a cada evidência obtida.
Exemplo de diagnóstico por primeira divergência
Considere um religador que responde a ping, aceita conexão TCP na porta configurada, mas permanece offline no SCADA. A captura mostra SYN, SYN-ACK e ACK normais. Em seguida aparece um frame DNP3 do master, porém nenhum frame DNP3 de retorno. Nesse ponto não faz sentido alterar deadband ou classes: ainda não existe resposta da aplicação. Compare Destination/Source com o Device Profile e a configuração do equipamento.
Em outro caso, a outstation responde e o analisador decodifica IIN com indicação de Object Unknown. Agora o enlace e o transporte já foram provados. A investigação deve migrar para Group/Variation, qualifier, range, capacidades do Device Profile e versão/firmware. A metodologia é sempre a mesma: localizar o primeiro ponto em que o comportamento observado diverge do esperado.
Referências técnicas e normas
As explicações do Portal são autorais. Normas e fontes oficiais são priorizadas; materiais acadêmicos e documentação pública de fabricantes complementam a implementação e não substituem a edição normativa aplicável ao projeto.
- IEEE 1815-2012 — IEEE Standard for Electric Power Systems Communications—Distributed Network Protocol (DNP3) — IEEE Standards Association. Edição publicada de referência para estrutura, funções, opções interoperáveis e requisitos de conformidade do DNP3.
- IEEE P1815 — Draft Standard for Electric Power Systems Communications—Distributed Network Protocol (DNP3) — IEEE Standards Association. Página oficial do projeto de revisão da norma; útil para acompanhar a evolução do padrão sem substituir a edição publicada aplicável ao equipamento.
- Overview of DNP3 Protocol — DNP Users Group. Visão geral oficial do protocolo e do papel do DNP Users Group como mantenedor do DNP3/IEEE 1815.
- DNP Users Group — Public Documents — DNP Users Group. Documentos públicos, guias, boletins e materiais de implementação e interoperabilidade.
- Understanding DNP3 — Inductive Automation. Material didático complementar sobre conceitos e comportamento de DNP3; não substitui a norma.
- DNP3 — trabalho didático de Redes de Computadores — GTA/UFRJ. Material acadêmico introdutório útil para leitura guiada da arquitetura; deve ser confrontado com IEEE 1815 e documentação atual do fabricante.
- opendnp3 User Guide — Automatak / opendnp3. Guia público de uma implementação amplamente usada, útil para relacionar a norma a parâmetros reais de master e outstation.
- DNP3 Communication Protocol Solutions — Triangle MicroWorks. Referência de implementador para recursos como events, deadbands, unsolicited, time sync, file transfer e ferramentas de teste.
- DNP3 Application Layer Function Codes — Rockwell Automation. Exemplo público de fabricante para Function Codes, incluindo COLD_RESTART, WARM_RESTART e ENABLE/DISABLE_UNSOLICITED.
- Wireshark User’s Guide — Wireshark Foundation. Documentação oficial de captura, filtros, estatísticas e interpretação da interface do analisador.
Continue estudando
Os próximos conteúdos foram escolhidos para formar uma sequência técnica, relacionando fundamento, configuração, diagnóstico e aplicação.