Ingeniería de protocolo - Protocol engineering
La ingeniería de protocolos es la aplicación de métodos sistemáticos al desarrollo de protocolos de comunicación . Utiliza muchos de los principios de la ingeniería de software , pero es específico para el desarrollo de sistemas distribuidos.
Historia
Cuando se desarrollaron las primeras redes informáticas experimentales y comerciales en la década de 1970, el concepto de protocolos aún no estaba bien desarrollado. Estos fueron los primeros sistemas distribuidos . En el contexto de la arquitectura de protocolo en capas recientemente adoptada (ver modelo OSI ), la definición del protocolo de una capa específica debe ser tal que cualquier entidad que implemente esa especificación en una computadora sea compatible con cualquier otra computadora que contenga una entidad que implemente la misma. especificación, y sus interacciones deben ser tales que se obtenga el servicio de comunicación deseado. Por otro lado, la especificación del protocolo debe ser lo suficientemente abstracta para permitir diferentes opciones para la implementación en diferentes computadoras.
Se reconoció que era importante una especificación precisa del servicio esperado proporcionado por la capa dada. Es importante para la verificación del protocolo, que debe demostrar que el servicio de comunicación se proporciona si ambas entidades del protocolo implementan la especificación del protocolo correctamente. Este principio se siguió más tarde durante la estandarización de la pila de protocolos OSI , en particular para la capa de transporte .
También se reconoció que algún tipo de especificación de protocolo formalizada sería útil para la verificación del protocolo y para desarrollar implementaciones, así como casos de prueba para verificar la conformidad de una implementación con la especificación. Si bien inicialmente se utilizaron principalmente máquinas de estados finitos como modelos (simplificados) de una entidad de protocolo, en la década de 1980 se estandarizaron tres lenguajes de especificación formal, dos por ISO y uno por ITU. Este último, llamado SDL , se utilizó más tarde en la industria y se ha fusionado con máquinas de estado UML .
Principios
Los siguientes son los principios más importantes para el desarrollo de protocolos:
- Arquitectura en capas: una capa de protocolo en el nivel n consta de dos (o más) entidades que tienen una interfaz de servicio a través de la cual se proporciona el servicio de la capa a los usuarios del protocolo, y que utiliza el servicio proporcionado por una entidad local nivel (n-1).
- La especificación de servicio de una capa describe, en una vista abstracta y global, el comportamiento de la capa como visible en las interfaces de servicio de la capa.
- La especificación del protocolo define los requisitos que debe cumplir la implementación de cada entidad.
- La verificación del protocolo consiste en mostrar que dos (o más) entidades que satisfacen la especificación del protocolo proporcionarán en sus interfaces de servicio el servicio especificado de esa capa.
- La especificación del protocolo (verificado) se utiliza principalmente para las dos actividades siguientes:
- El desarrollo de una implementación de entidad. Tenga en cuenta que las propiedades abstractas de la interfaz de servicio están definidas por la especificación del servicio (y también utilizadas por la especificación del protocolo), pero la naturaleza detallada de la interfaz se puede elegir durante el proceso de implementación, por separado para cada entidad.
- Desarrollo de suite de pruebas para pruebas de conformidad . Las pruebas de conformidad del protocolo verifican que la implementación de una entidad determinada se ajuste a la especificación del protocolo. Los casos de prueba de conformidad se desarrollan en base a la especificación del protocolo y son aplicables a todas las implementaciones de entidades. Por lo tanto, se han desarrollado conjuntos de pruebas de conformidad estándar para ciertos estándares de protocolo.
Métodos y herramientas
Las herramientas para las actividades de verificación de protocolos, implementación de entidades y desarrollo de conjuntos de pruebas se pueden desarrollar cuando la especificación del protocolo está escrita en un lenguaje formalizado que la herramienta pueda entender. Como se mencionó, se han propuesto lenguajes de especificación formal para la especificación de protocolos, y los primeros métodos y herramientas se basaron en modelos de máquinas de estados finitos. Se propuso el análisis de accesibilidad para comprender todos los posibles comportamientos de un sistema distribuido, que es esencial para la verificación del protocolo. Esto se complementó más tarde con la verificación del modelo . Sin embargo, las descripciones de estados finitos no son lo suficientemente poderosas para describir las restricciones entre los parámetros del mensaje y las variables locales en las entidades. Estas limitaciones pueden describirse mediante los lenguajes de especificación formal estandarizados mencionados anteriormente, para los cuales se han desarrollado herramientas poderosas.
Es en el campo de la ingeniería de protocolos donde el desarrollo basado en modelos se utilizó muy temprano. Estos métodos y herramientas se han utilizado posteriormente para la ingeniería de software y el diseño de hardware, especialmente para sistemas distribuidos y en tiempo real. Por otro lado, muchos métodos y herramientas desarrollados en el contexto más general de la ingeniería de software también pueden usarse para el desarrollo de protocolos, por ejemplo , la verificación de modelos para la verificación de protocolos y métodos ágiles para implementaciones de entidades.
Métodos constructivos para el diseño de protocolos
La mayoría de los protocolos están diseñados por intuición humana y discusiones durante el proceso de estandarización. Sin embargo, se han propuesto algunos métodos para usar métodos constructivos posiblemente apoyados por herramientas para derivar automáticamente protocolos que satisfagan ciertas propiedades. Los siguientes son unos cuantos ejemplos:
- Síntesis de protocolo semiautomática: el usuario define todas las acciones de envío de mensajes de las entidades y la herramienta deriva todas las acciones de recepción necesarias (incluso si hay varios mensajes en tránsito).
- Protocolo de sincronización: las transiciones de estado de una entidad de protocolo las da el usuario, y el método deriva el comportamiento de la otra entidad de modo que permanece en estados que corresponden a la entidad anterior.
- Protocolo derivado de la especificación del servicio: la especificación del servicio la da el usuario y el método deriva un protocolo adecuado para todas las entidades.
- Protocolo para aplicaciones de control: se da la especificación de una entidad (llamada planta, que debe ser controlada), y el método deriva una especificación de la otra entidad de manera que nunca se alcancen ciertos estados de falla de la planta y ciertas propiedades las interacciones de servicio de la planta están satisfechas. Este es un caso de control de supervisión .
Libros
- Ming T. Liu, Protocol Engineering, Advances in Computers , Volumen 29, 1989, Páginas 79-195.
- GJ Holzmann, Diseño y validación de protocolos informáticos , Prentice Hall, 1991.
- H. König, Ingeniería de protocolo , Springer, 2012.
- M. Popovic, Ingeniería de Protocolo de Comunicación , CRC Press, 2ª Ed. 2018.
- P. Venkataram, SS Manvi, BS Babu, Ingeniería de protocolos de comunicación , 2014.