5
DNP3 DNP3 (acrónimo del inglés Distributed Network Proto- col, en su versión 3) es un protocolo industrial para comu- nicaciones entre equipos inteligentes (IED) y estaciones controladores, componentes de sistemas SCADA. Es un protocolo ampliamente utilizado en el sector eléctrico, de gran difusión en Estados Unidos y Canadá, y menor pre- sencia en Europa donde el uso de alternativas como IEC- 60870 101 e IEC-60870 104 gozan de mayor populari- dad. También se puede encontrar en otros campos (agua, gas, entre otros tipos de empresas de servicio). 1 Historia Cuando la especificación IEC 60870-5 se encontraba aún en desarrollo y no había sido estandarizada, surgió la ne- cesidad de crear un estándar que permitiera la interopera- tibilidad entre componentes SCADA de diferentes fabri- cantes, con el objetivo de ser utilizado en el sector eléc- trico. De este modo, en 1993, GE-Harris Canada (ante- riormente conocido como Westronic, Inc.) tomó parte de lo que había desarrollado hasta el momento de las especi- ficaciones de IEC 60870-5 como base para el desarrollo de un sistema abierto que satisficiera las necesidades del sector de automatización estadounidense. El protocolo DNP3.0 fue diseñado para establecer comu- nicaciones fiables en medios y entornos desfavorables a los cuales los equipos de automatización del sector eléc- tricos suelen estar sometidos.previo al SPI y PCI Por ello, se diseñó para superar las distorsiones que la inducción electromagnética produce en las comunicaciones, la an- tigüedad de los componentes, y medios de transmisión poco potentes. 2 Seguridad Aunque el protocolo fue desarrollado en base a requisitos de gran fiabilidad, no se prestó demasiada importancia a los aspectos de seguridad relacionada con los ataques de Hackers u otros factores malintencionados que pudiesen interferir en el correcto comportamiento de las comuni- caciones entre los diversos sistemas de control. Esto su- puso un importante error de diseño. Debido a que el protocolo puede utilizar los niveles de transporte y enlace proporcionados por la suite TCP/IP, gran parte del problema de añadir un Sistema de Auten- ticación Seguro quedaba resuelto. DNP3 es actualmente compatible con las especificaciones de seguridad IEC 62351-5. Cabe destacar además que el protocolo DNP3 se men- ciona en el estándar IEEE 1379-2000, el cual recomien- da un conjunto de prácticas recomendables para la im- plementación de enlaces de comunicación entre maestros SCADA - RTU/IED. Este estándar no sólo incluye cifra- do, sino toda una serie de prácticas que mejoran la segu- ridad frente a métodos intrusivos conocidos. 3 Detalles Técnicos El protocolo DNP3 presenta importantes funcionalida- des que lo hacen más robusto, eficiente y compatible que otros protocolos más antiguos, tales como Modbus, con la contrapartida de resultar un protocolo mucho más com- plejo. DNP3 es un protocolo de tres capas o niveles según el modelo OSI: nivel de enlace (Data Link Layer), Nivel de Aplicación (Application Layer), y un tercer nivel de Transporte (Transport Layer) que realmente no cumple con todas las especificaciones del modelo OSI, y por lo cual se suele denominar pseudo-nivel de Transporte. Por este motivo suele referirse a él como un protocolo de dos capas o niveles. El formato de trama utilizado está basado en el FT3 reco- gido en las especificaciones IEC 60870-5 (es una redefi- nición de este formato, no una implementación idéntica), y hace uso de la Comprobación de Redundancia Cíclica (CRC) para la detección de errores. La estructuración en capas o niveles, sigue el siguiente esquema: Los mensajes a nivel de aplicación son denominados Fragmentos. El tamaño máximo de un fragmento está establecido en 1024 bytes. Los mensajes a nivel de transporte son denominados Segmentos. Los mensajes a nivel de enlace son denominados Tramas. El tamaño máximo de una trama DNP3 es de 292 bytes. Cuando se transmiten datos, estos sufren las siguientes transformaciones al pasar por las diferentes capas: 1

DNP3

Embed Size (px)

DESCRIPTION

Protocolo DNP3

Citation preview

Page 1: DNP3

DNP3

DNP3 (acrónimo del inglés Distributed Network Proto-col, en su versión 3) es un protocolo industrial para comu-nicaciones entre equipos inteligentes (IED) y estacionescontroladores, componentes de sistemas SCADA. Es unprotocolo ampliamente utilizado en el sector eléctrico, degran difusión en Estados Unidos y Canadá, y menor pre-sencia en Europa donde el uso de alternativas como IEC-60870 101 e IEC-60870 104 gozan de mayor populari-dad. También se puede encontrar en otros campos (agua,gas, entre otros tipos de empresas de servicio).

1 Historia

Cuando la especificación IEC 60870-5 se encontraba aúnen desarrollo y no había sido estandarizada, surgió la ne-cesidad de crear un estándar que permitiera la interopera-tibilidad entre componentes SCADA de diferentes fabri-cantes, con el objetivo de ser utilizado en el sector eléc-trico. De este modo, en 1993, GE-Harris Canada (ante-riormente conocido comoWestronic, Inc.) tomó parte delo que había desarrollado hasta el momento de las especi-ficaciones de IEC 60870-5 como base para el desarrollode un sistema abierto que satisficiera las necesidades delsector de automatización estadounidense.El protocolo DNP3.0 fue diseñado para establecer comu-nicaciones fiables en medios y entornos desfavorables alos cuales los equipos de automatización del sector eléc-tricos suelen estar sometidos.previo al SPI y PCI Por ello,se diseñó para superar las distorsiones que la inducciónelectromagnética produce en las comunicaciones, la an-tigüedad de los componentes, y medios de transmisiónpoco potentes.

2 Seguridad

Aunque el protocolo fue desarrollado en base a requisitosde gran fiabilidad, no se prestó demasiada importancia alos aspectos de seguridad relacionada con los ataques deHackers u otros factores malintencionados que pudieseninterferir en el correcto comportamiento de las comuni-caciones entre los diversos sistemas de control. Esto su-puso un importante error de diseño.Debido a que el protocolo puede utilizar los niveles detransporte y enlace proporcionados por la suite TCP/IP,gran parte del problema de añadir un Sistema de Auten-ticación Seguro quedaba resuelto.

DNP3 es actualmente compatible con las especificacionesde seguridad IEC 62351-5.Cabe destacar además que el protocolo DNP3 se men-ciona en el estándar IEEE 1379-2000, el cual recomien-da un conjunto de prácticas recomendables para la im-plementación de enlaces de comunicación entre maestrosSCADA - RTU/IED. Este estándar no sólo incluye cifra-do, sino toda una serie de prácticas que mejoran la segu-ridad frente a métodos intrusivos conocidos.

3 Detalles Técnicos

El protocolo DNP3 presenta importantes funcionalida-des que lo hacen más robusto, eficiente y compatible queotros protocolos más antiguos, tales comoModbus, con lacontrapartida de resultar un protocolo mucho más com-plejo.DNP3 es un protocolo de tres capas o niveles según elmodelo OSI: nivel de enlace (Data Link Layer), Nivelde Aplicación (Application Layer), y un tercer nivel deTransporte (Transport Layer) que realmente no cumplecon todas las especificaciones del modelo OSI, y por locual se suele denominar pseudo-nivel de Transporte. Poreste motivo suele referirse a él como un protocolo de doscapas o niveles.El formato de trama utilizado está basado en el FT3 reco-gido en las especificaciones IEC 60870-5 (es una redefi-nición de este formato, no una implementación idéntica),y hace uso de la Comprobación de Redundancia Cíclica(CRC) para la detección de errores.La estructuración en capas o niveles, sigue el siguienteesquema:

• Los mensajes a nivel de aplicación son denominadosFragmentos. El tamaño máximo de un fragmentoestá establecido en 1024 bytes.

• Los mensajes a nivel de transporte son denominadosSegmentos.

• Los mensajes a nivel de enlace son denominadosTramas. El tamaño máximo de una trama DNP3es de 292 bytes.

Cuando se transmiten datos, estos sufren las siguientestransformaciones al pasar por las diferentes capas:

1

Page 2: DNP3

2 5 NIVEL DE TRANSPORTE

• Los datos se encapsulan en fragmentos a nivel deaplicación.

• El nivel de transporte es el encargado de adaptar losFragmentos para poder encapsularlos en tramas (ni-vel de enlace), para lo cual, secciona el mensaje delnivel de aplicación si es necesario, y les agrega lacabecera de transporte, formando de este modo lossegmentos.

• En el nivel de enlace, los segmentos recibidos del ni-vel de transporte son empaquetados en tramas, paralo cual se les añade a estos una cabecera de enlace,y además, cada 16 bytes un CRC de 2 bytes.

Cuando se reciben datos, las transformaciones se sucedende la siguiente forma:

• El nivel de enlace se encarga de extraer de las tramasrecibidas los Segmentos que son pasados al nivel detransporte.

• El nivel de transporte lee la cabecera de los segmen-tos recibidos del nivel de enlace, y con la informa-ción obtenida extrae y compone los fragmentos queserán pasados al nivel de aplicación.

• En el nivel de aplicación los fragmentos son analiza-dos y los datos son procesados según el modelo deobjetos definido por las especificaciones del están-dar.

fragmento

segmento

Nivel de Aplicación

Nivel de Enlace

Nivel de Transporte

Cabecera Transporte

trama

segmento

Cabecera Enlace

CRC

4 Nivel de enlace

Los mensajes DNP3 a nivel de enlace se encuentran enbloques de no más de 292 bytes denominados tramas. Elformato de trama es similar al FT3, si bien presenta cier-tas diferencias.Una trama DNP3 consta de tres bloques bien diferencia-dos:

CabeceraDNP3: son los diez primeros bytes de la trama,y está constituida por los siguientes campos:

• 2 bytes de inicio (start bytes), cuyo valor es fijo. 0x05(valor en hexadecimal) para el primero y 0x64 parael segundo.

• 1 byte con el tamaño de la trama. Este valor no tieneen cuenta ni la cabecera, ni los CRC.

• 1 byte con el código de control, que permite fijar losservicios del nivel de enlace, el sentido del flujo, etc.

• 2 bytes con la dirección de destino, codificada enbig-endian.

• 2 bytes con la dirección de origen, codificada en big-endian.

• 2 bytes de CRC.

Datos.Cada 16 bytes de datos, así como al final de la trama, seencontrarán 2 bytes de CRC.

El nivel de enlace en DNP es balanceado, de modo quetanto la estación controladora como la controlada tienenresponsabilidad tanto en los envíos de los datos como en lagestión (establecimiento y liberación) del nivel de enlace(fuera del alcance de las especificaciones del protocolo).El empleo de doble direccionamiento (dirección de ori-gen y dirección de destino) se debe a la funcionalidad queproporciona DNP3 basado en funcionamiento por excep-ción. De tal modo las comunicaciones no son iniciadasúnicamente por la estación controladora, enviando pre-guntas a las estaciones controladas, sino que además estasúltimas pueden iniciar una conversación dependiendo dela alteración de determinada información configurada enella para ser reportada en estas condiciones. A este tipo demensajes, en los cuales la estación controlada transmitelos eventos de determinados objetos configurados en ella,se les denomina “respuestas no solicitadas”.El nivel de enlace proporciona una serie de servicios pa-ra la gestión de la comunicación entre las estaciones, talescomo la petición o envío con o sin confirmación, las con-firmaciones de tramas recibidas (ACK), las confirmacio-nes negativas (NACK), el reset de enlace (Reset Link) oel chequeo del estado del enlace (Link Status).

5 Nivel de transporte

El nivel de transporte es el encargado de permitir mensa-jes únicos estructurados tanto en múltiples tramas como

Page 3: DNP3

6.1 Modelo de Objetos en DNP3 3

en múltiples fragmentos. Esta es una de las característi-cas diferenciadoras de DNP3 frente a otros protocolos decomunicación industriales del mismo ámbito, tales comoIEC 60870, y permite el concepto de mensajes de tamañoilimitado.A continuación se describirá el funcionamiento de estenivel, dependiendo del sentido del flujo de los datos dentrode la estructura de capas del protocolo.

5.1 Datos transmitidos desde el nivel deaplicación hacia el nivel de enlace

El nivel de aplicación pasa los fragmentos al nivel detransporte, y este se encarga de trocearlos y agregarles alprincipio la cabecera de transporte, la cual ocupa un bytey contiene el número de secuencia que identifica el seg-mento dentro del fragmento. El tamaño de los fragmentosha de ser tal, que una vez agregadas las cabeceras del nivelde enlace (diez bytes) y los correspondientes CRCs, el ta-maño total no exceda los 292 bytes máximos permitidospara una trama.

5.2 Datos transmitidos desde el nivel deenlace hacia el nivel de aplicación

En este caso, el nivel de transporte se encarga de recom-poner los fragmentos del nivel de aplicación a partir delos segmentos que le proporciona el nivel de enlace. Pa-ra ello, recurre a las cabeceras de transporte y al númerode secuencia que identifica la posición de cada segmentodentro del fragmento.

6 Nivel de aplicación

El nivel de aplicación se encarga de procesar los fragmen-tos que le pasa el nivel de transporte, y obtener la infor-mación de control y monitorización en ellos encapsuladosatendiendo al modelo de datos.Entre los servicios que proporciona este nivel, se encuen-tran la escritura y lectura de valores, la congelación decontadores y la selección y ejecución de mandos. El có-digo de función es el que permite indicar qué operacióndebe realizarse en este nivel.Por otro lado, las estaciones controladas disponen de laposibilidad de informar a la estación controladora de di-ferentes aspectos relacionados con este nivel gracias a dosbytes denominados indicaciones internal (Internal Indi-cations, IIN). La estación controlada puede servirse deestas indicaciones para informar acerca de la presenciade eventos de clase 1, clase 2 o clase 3, de la necesidadde ser sincronizada o de la presencia de anomalías en laconfiguración o en la base de datos.

El modelo de datos en DNP3 está basado en un esquemade objetos.

6.1 Modelo de Objetos en DNP3

El modelo de objetos en DNP3 permite, en rasgos gene-rales, definir los tipos de datos que se manejarán en lasdiferentes transacciones entre estación controlada y esta-ción controlante. A pesar de ello, existen objetos orienta-dos más bien a servicios a nivel de aplicación que a forma-to de datos en sí, como pueden ser el objeto 60 (Objetode Clase), o el objeto 80 (indicaciones internas).Mediante las denominadas variaciones, es posible esta-blecer, además del tipo de dato definido por el objeto, elformato del mismo (tamaño y formato de los valores, porejemplo).A continuación, se describen algunos de los objetos máscomúnmente utilizados en comunicaciones DNP3:

• Objeto 1 - Entradas digitales: este objeto hace re-ferencia a las entradas digitales. Permite la lecturade las mismas, mediante el código de función 1, ola asignación de clase mediante el código de función22 (códigos de función también soportados por otrosobjetos como contadores o entradas analógicas).

• Objeto 2 - Eventos de las entradas digitales: esimportante destacar que DNP3 maneja los valoresestáticos y sus eventos como objetos diferentes. Así,los eventos de las entradas digitales (objeto 1) seagruparán en el objeto 2.

• Objeto 12 - Mandos digitales: este objeto hace re-ferencia a los controles digitales. Mediante los códi-gos de función de selección, ejecución, selección yejecución y ejecución sin confirmación, se podránrealizar estas operaciones sobre los elementos espe-cificados bajo este objeto.

• Objeto 20 - Contadores: mediante este objeto,DNP3 permite la lectura o manipulación (congela-ción, reseteo, etc.) de contadores.

• Objeto 22 - Eventos de contadores: este es el ob-jeto utilizado para agrupar la información relativa aeventos generados por contadores (objeto 20).

• Objeto 30 - Entradas analógicas: los valoresanalógicos se agrupan bajo este objeto.

• Objeto 32 - Eventos de las entradas analógicas:este es el objeto utilizado para los eventos de las en-tradas analógicas definidas mediante el objeto 30.

• Objeto 41 - Mandos analógicos: este es el obje-to utilizado para ejecutar mandos analógicos o SetPoints. Admite las mismas funciones que los man-dos digitales.

Page 4: DNP3

4 8 ENLACES EXTERNOS

• Objeto 50 - Hora y fecha: la variación 1 de esteobjeto permite a la estación controladora sincronizara la estación controlada.

• Objeto 60 - Objeto de clase: como se comentó másarriba, este objeto no distingue exactamente entreun tipo de dato, sino más bien hace alusión a una se-rie de servicios del nivel de aplicación. Dependiendodel código de función utilizado, mediante este obje-to la estación controlada puede realizar peticionespor clase, o asignar clases a los eventos de los obje-tos estáticos configurados en la estación controlada.

Las clases en DNP3 permiten agrupar los eventos en tresniveles diferentes (recurso útil para priorizar el esque-ma de peticiones del maestro). Las peticiones por clasepermiten el polling por eventos. Un caso excepcional esuna cuarta clase denominada clase 0, mediante la cual elmaestro puede solicitar al esclavo el envío de todos losvalores estáticos configurados en su base de datos.

7 Más información• IEC 60870-5

• IEC 60870-5-101

• IEC 60870-5-104

• IEC 60870-5-103

• IEC 61850

8 Enlaces externos• DNP Users Group

• Visión general del protocolo DNP3

• Simulador DNP3 Gratis

• Teoria DNP3

• Protocolo DNP, implementaciones en microcontro-ladores

Page 5: DNP3

5

9 Text and image sources, contributors, and licenses

9.1 Text• DNP3 Fuente: http://es.wikipedia.org/wiki/DNP3?oldid=77030700 Colaboradores: RedTony, Muro Bot, OboeCrack, Lloizaga, AVBOT,Ezarate, Luckas-bot, Conrado martin, RedBot, Sergio Andres Segovia, Yesid8, Addbot y Anónimos: 8

9.2 Images• Archivo:Datalinklayer.png Fuente: http://upload.wikimedia.org/wikipedia/commons/c/ca/Datalinklayer.png Licencia: Public domainColaboradores: Creación propia Artista original: Conrado

• Archivo:Niveles_dnp3.svg Fuente: http://upload.wikimedia.org/wikipedia/commons/7/7c/Niveles_dnp3.svg Licencia: Public domainCo-laboradores: Creación propia Artista original: Conrado Martín

9.3 Content license• Creative Commons Attribution-Share Alike 3.0