Formato PDF - Departamento de Lenguajes y Sistemas e Ingeniería
Transcripción
Formato PDF - Departamento de Lenguajes y Sistemas e Ingeniería
INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES (MÓDULO 1) F. I. M. INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS F. I. M. FIM LSIIS TELEMÁTICA L.S.I.I.S L.S.I.I.S INGENIERÍA DE PROTOCOLOS (MÓDULO 1) http://pegaso.ls.fi.upm.es/~lmengual/inicio_IP.html LUIS MENGUAL GALÁN INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS OBJETIVOS Describir las técnicas de descripción formal utilizadas para especificar formalmente protocolos de comunicaciones y presentar sus ventajas en la ingeniería de protocolos Analizar las interfaces de programación más utilizadas en el entorno corporativo: Sockets de Berkeley, Windows Sockets, Sockets en Java. Comprender las técnicas de implementación de aplicaciones distribuidas utilizando las diferentes interfaces de programación y el modelo cliente-servidor. Estudiar el rendimiento de las implementaciones de software cliente y servidor. INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS ÍNDICE 1. ESPECIFICACIÓN, DISEÑO Y VERIFICACIÓN DE PROTOCOLOS 1.1 Niveles de descripción de una arquitectura estructurada 1.1.1 Definición de la Arquitectura 1.1.2 Especificación de servicios 1.1.3 Especificación formal de protocolos 1.2 Desarrollo de Protocolos 1.2.1 Especificación Formal 1.2.1.1 Validación 1.2.1.2 Verificación 1.2.1.3 Análisis de Prestaciones 1.2.2 Implementación 1.2.3 Conformidad 1.3 Metodologías de Especificación 1.3.1 Lenguaje Natural 1.3.2 Grafos de Control de Comunicaciones 1.3.3 Máquinas de Estados Finitos Extendidas 1.3.4 Redes de Petri 1.3.5 SDL 1.3.6 Estelle 1.3.7 Lotos 1.3.8 Prolog INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS 1 ÍNDICE 2. IMPLEMENTACIÓN DE PROTOCOLOS (I) 2.1 Modelo cliente-servidor 2.1.1 Terminología y conceptos 2.1.2 Comparación con otros modelos 2.1.2.1 Aplicaciones peer to peer, 2.1.2.2 Teoría de Agentes 2.2 Modelo Unix 2.2.1 Comunicación entre procesos 2.2.2 Procesos Concurrentes 2.2.3 E/S asíncronas 2.3 Interfaces de Programación de Aplicaciones (API, Aplication Programming Interface) 2.3.1 Funcionalidad y especificación de las Interfaces de Programación 2.3.2 Interfaces existentes INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS 1 ÍNDICE 2. IMPLEMENTACIÓN DE PROTOCOLOS (II) 2.4 Interfaz Sockets de Berkeley 2.4.1 Algoritmos de diseño Software Cliente 2.4.1.1 Arquitectura del cliente 2.4.1.2 Tipos de clientes (TCP/UDP) 2.4.2 Implementación Software Cliente 2.4.2.1 Ejemplos clientes TCP/UDP 2.4.3 Algoritmos de diseño Software Servidor 2.4.3.1 Arquitectura del servidor 2.4.3.2 Tipos de servidores (TCP/UDP, concurrentes, iterativos) 2.4.4 Implementación Software Servidor 2.4.4.1 Servidores Iterativos no Orientados a Conexión (UDP) 2.4.4.2 Servidores Iterativos Orientados a Conexión (TCP) 2.4.4.3 Servidores Concurrentes orientados a conexión (TCP) 2.4.4.4 Servidores Concurrentes. Un solo proceso TCP 2.4.4.5 Servidores Multiprotocolo (TCP, UDP) 2.4.4.6 Servidores Multiservicio (TCP, UDP) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS ÍNDICE 1 2. IMPLEMENTACIÓN DE PROTOCOLOS (III) 2.4.5 Eficiencia y gestión de la concurrencia en servidores 2.4.5.1 Elección entre un modelo iterativo y concurrente 2.4.5.2 Nivel de concurrencia 2.4.5.3 Concurrencia en función de la demanda 2.4.5.4 Coste de la concurrencia 2.4.6 Concurrencia en clientes 2.4.6.1 Ventajas de la concurrencia 2.4.6.2 Implementaciones con varios procesos 2.4.6.3 Implementación con un solo proceso 2.4.7 Procedimientos Remotos 2.4.7.1 Servicios Básicos sobre RPC 2.4.7.2 Construcción de aplicaciones INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS ÍNDICE 2. IMPLEMENTACIÓN DE PROTOCOLOS (IV) 2.5 Interfaz Windows Sockets 2.5.1 Comparación sockets de Berkeley 2.5.2 Desarrollo de aplicaciones 2.6 Interfaz sockets en Java 2.6.1. Introducción 2.6.2. Direcciones de Internet 2.6.3. Sockets TCP 2.6.3.1 Sockets para clientes 2.6.3.2 Sockets para servidores 2.6.3.3 Servidores multiusuario 2.6.3.4 Sockets seguros 2.6.4. Datagramas y sockets UDP 2.6.5. Sockets multicast 2.6.6. Conexiones a URLs 2.6.7. Otras alternativas (Java RMI, Java IDL) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS BIBLIOGRAFÍA “USING FORMAL DESCRIPTION TECHIQUES” An Introduction to Estelle, Lotos and SDL. Edited by K.J. Turner. John Wiley &Sons 1993 “INTERNETWORKING WITH TCP/IP. CLIENT-SERVER PROGRAMMING AND APLICATIONS BSD SOCKETS” VERSION VOLUME III. D. Comer, R. Stevens. Prentice Hall. 1993 “UNIX NETWORK PROGRAMMING”. R. Stevens, Prentice Hall. 1998 “INTERNETWORKING WITH TCP/IP VOLUME III: CLIENT-SERVER PROGRAMMING AND APPLICATIONS”. Window Sockets Version. D. Comer, R. Stevens. Prentice Hall. 1997 NETWORK PROGRAMMING FOR MICROSOFT WINDOWS. Second Edition. Anthony Jones, Jim Ohlund. Microsoft Press “WINDOWS SOCKETS NETWORK PROGRAMMING”. B. Quin, D. Shute. Addison-Wesley Publishing Company. 1995 “JAVA NETWORK PROGRAMMING”. E. R. Harold. O’Reilly 2000, 2ª Edition “JAVA SECURITY”. S. Oaks. O’Reilly 2001, 2ª Edition INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESPECIFICACIÓN DE PROTOCOLOS (I) Especificación sistemas: – Definir un sistema dinámico de forma univoca Especificar un protocolo de comunicaciones consiste en: – Especificar un algoritmo distribuido de tiempo real que se desarrolla en un entorno compuesto por varios usuarios que quieren comunicarse entre sí y por unas conexiones a través de las cuales deben de comunicarse las distintas entidades del protocolo. INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESPECIFICACIÓN Y DISEÑO DE PROTOCOLOS (I) La creciente utilización de sistemas distribuidos hace cada vez más complejos los protocolos de comunicaciones – Esto plantea nuevas problemas de diseño detrás de los cuales, está casi siempre la necesidad de una especificación precisa del protocolo Las primeras descripciones de protocolos eran narrativas llevando fácilmente a ambigüedades Inicialmente no se disponía de herramientas formales de validación, verificación y comprobación de los protocolos especificados y sus implementaciones INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESPECIFICACIÓN Y DISEÑO DE PROTOCOLOS (II) Hoy en día se entiende que una especificación precisa debe de permitir: – Verificar si un protocolo cumple el servicio para el que ha sido diseñado – Validar el funcionamiento del sistema (estados alcanzables, no bloqueos, etc) – Facilitar al máximo la realización del protocolo de forma ejecutable, para la ó las máquinas en cuestión INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESPECIFICACIÓN DE PROTOCOLOS (II) Beneficios – Se pueden derivar muchas implementaciones cambiando pocas líneas en la especificación – Se puede asegurar previamente un comportamiento correcto del protocolo de acuerdo a las exigencias del cliente. – Se ahorra tiempo y dinero en la contratación de personal encargado de implementar en lenguaje de alto nivel (pascal, C, etc) si se dispone de una herramienta que me permita la generación de manera automática o semiautomática de código. – Permite fácilmente generar un nuevo código del protocolo adaptado a los nuevos cambios tecnológicos. INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS NIVELES DE DESCRIPCIÓN ARQUITECTURAS DE COMUNICACIONES (I) DEFINICIÓN DE LA ARQUITECTURA DEFINICIÓN DE LOS SERVICIOS ESPECIFICACIÓN DE LOS PROTOCOLOS ARQUITECTURA SERVICIOS MECANISMOS FUNCIONES SERVICIOS PROTOCOLO MECANISMOS FUNCIONES INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS NIVELES DE DESCRIPCIÓN ARQUITECTURAS DE COMUNICACIONES (II) APLICACIÓN APLICACIÓN TRANSPORTE TRANSPORTE ESPECIFICACIÓN SERVICIOS RED ENLACE FISICO DEFINICIÓN ARQUITECTURA RED ESPECIFICACIÓN PROTOCOLO ENLACE FISICO INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES --ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS FASES DEL DESARROLLO DE PROTOCOLOS ESPECIFICACIÓN FORMAL – VALIDACIÓN » Especificación Completa, Ausencia de Bloqueos, Ausencia de lazos improductivos, Terminación, Todos los estados alcanzables – VERIFICACIÓN – ANÁLISIS DE PRESTACIONES IMPLEMENTACIÓN CONFORMIDAD INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS METODOLOGÍAS DE ESPECIFICACIÓN DE PROTOCOLOS AUTÓMATAS MÁQUINAS DE ESTADOS EXTENDIDAS REDES DE PETRI SDL – CCITT Recommendation Z.100, Specification and Description Language SDL, AP IX-35 1988 ESTELLE – ISO/DP 9074. A formal Description technique based on an Extended State Transition model, 1985 LOTOS – A Formal Description Technique based on the Temporal Ordering of Observational Behaviour. ISO 8807, 1988. Language Of Temporal Ordering Specification PROLOG INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS AUTÓMATAS Un autómata es una quíntupla A = < E,S,Q,f,g > : E : CONJUNTO FINITO DE ENTRADAS S : CONJUNTO FINITO DE SALIDAS Q : CONJUNTO DE ESTADOS f: FUNCION DE TRANSICION g : FUNCION DE SALIDA f : E ×Q → Q g: E × Q → S INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS DIAGRAMA DE TRANSICIONES (DIAGRAMA DE MOORE) a/1 q 3 b/0 a/0 a/0 b/0 q 1 q b/1 2 INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS TABLA DE TRANSICIONES E E ={ a, b } S ={ 0,1 } Q ={ q1, q2 , q3} Q a b q 1 q /0 q /1 1 2 q 2 q /0 q /0 3 2 q 3 q /1 q /0 3 1 INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROTOCOLO PARADA-ESPERA V(S) 0 V(R) I(0) 0 ACK1 1 V(S) V(R) x I(0) T 1 I(1) ACK0 0 0 I(0) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS MÁQUINA DE ESTADOS EXTENDIDA: PROTOCOLO PARADA-ESPERA TRAMA ACK RECIBIDA / ERROR TRAMA I RECIBIDA / MANDAR ACK DESOCUPADO TRAMA ACK RECIBIDA / PROCESO ACK TRAMA I LISTA PARA ENVIAR / ENVIO TRAMA EXPIRA T / RETRANS. DESOCUPADO RECEPTOR ESPERANDO ACK EMISOR INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS MÁQUINA DE ESTADOS EXTENDIDA: PROTOCOLO PARADA-ESPERA EVENTO ESTADO ACTUAL DESOCUPADO (0) ESPERANDO ACK (1) EVENTO ESTADO ACTUAL DESOCUPADO (0) EXPIRA TEMP. NA 0 RETRANS. TRAMA 1 TRAMA I LISTA TRANS. TRAMA 1 TRAMA ACK RECIBIDA ERROR ACCION 0 NUEVO ESTADO RETARDO PROC. ACK ACCION 1 0 TRAMA I RECIBIDA MANDAR ACK ACCION 0 NUEVO ESTADO NUEVO ESTADO INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS REDES DE PETRI (I) ∏ = { p 1 , p 2 , p 3 , . . p r } Conjunto LUGARES ∑ = { t1 , t 2 , t 3 , . . t s } Conjunto TRANSICIONES F: ∏ × ∑ → N * Función incidencia PROGRESIVA B: ∏ × ∑ → N * Función incidencia REGRESIVA M : ∏ → N * MARCAJE INICIAL LUGARES REPRESENTACIÓN GRAFICA TRANSICIONES FUNCIONES DE INCIDENCIA INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS REDES DE PETRI (II) ∏ = { p 1 , p 2 , p 3} M 0 = { 3 ( p 1 ), 1 ( p 2 ), 0 ( p 3 ) } ∑ = { t1 , t 2 , t 3 , t 4 } t1 . .. p 1 . p 2 t2 t4 t3 p 3 INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS REDES DE PETRI (III) F p 1 p 2 p 3 t1 t2 t3 t4 1 0 0 0 0 1 0 0 B p 1 p 2 t1 t2 t3 t4 0 0 1 0 2 1 0 0 0 2 0 0 p 0 0 1 pi → ti 1 3 ti → pi INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES --ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS REDES DE PETRI: PROTOCOLO PARADA-ESPERA T p2 1 (ENVIO TRAMA) p3 p1 T 2 (RECEP.ACK) T 3 p4 (REENVIO TRAMA) p5 p EMISOR 1 : DESOCUPADO p2 p : DATOS NIVEL SUPERIOR p3 : ESPERANDO ACK p5 4 : ACK RECIBIDO :TEMPORIZADOR EXPIRADO INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: PROTOCOLO PARADA-ESPERA ESTELLE es una técnica de descripción formal para la especificación de sistemas concurrentes distribuidos Una especificación ESTELLE está orientada a la descripción de un conjunto de máquinas de estado finito que se comunican entre sí y cuyas acciones internar están definidas por sentencias Pascal (con algunas restricciones y extensiones) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Elementos de la especificación Módulos o procesos – El comportamiento interno de un módulo está descrito como una máquina de estados finíta extendida no determinística – Las transiciones se expresan en forma de sentencias Pascal (con restricciones y extensiones) – Cada módulo tiene un conjunto de puntos de acceso de entrada/salida llamados puntos de interacción. Estos puntos de interacción se utilizarán para la comunicación entre procesos de distintos módulos INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Elementos de la especificación Transiciones – La ejecución de una acción está relacionada con el estado de control del proceso, los valores actuales de las variables de contexto, los mensajes recibidos y encolados de otros procesos y la prioridad asociada a cada transición – Las transiciones no son determinísticas en el sentido de que en cualquier instante dado puede haber más de una acción que un módulo puede ejecutar – Cuando se ejecuta una transición un módulo pasa a un nuevo estado se actualizan ciertas variables e incluso se pueden enviar ciertos mensajes por los puntos de interacción definidos INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Elementos de la especificación Comunicación entre procesos – Los módulos o procesos definidos en ESTELLE se comunican intercambiando mensajes o interacciones a través de canales lógicos – Un proceso puede enviar un mensaje a otro proceso a través de un canal lógico establecido entre dos puntos de interacción. – Un proceso siempre puede mandar un mensaje o interacción – Un mensaje recibido por un proceso en un punto de interacción se introducirá en una cola FIFO asociada con ese punto de interacción INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Elementos de la especificación Paralelismo y no Determinismo: – La comunicación entre procesos es asíncrona. – Los módulos operan independientemente y se comunican asíncronamente a través de los canales. – Cada proceso definido en un módulo seleccionará el conjunto de transiciones o acciones listas para ser ejecutadas. – Aunque los procesos pueden intercambiar mensajes entre ellos, éstos se ejecutan de manera asíncrona, de modo que sus pasos son completamente independientes uno de otros. INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: PROTOCOLO PARADA-ESPERA USUARIO_E (UE) USUARIO_R (UR) U U C 1 envia(datos) recibe(datos) U U RECEPTOR (R) EMISOR (E) MR MT ack(n) C3 C 2 envia(n,datos) recibe(n,datos) C4 MR MT MEDIO (M) ack(n) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓNFORMAL DE PROTOCOLOS DE PROTOCOLOS ESTELLE: PROTOCOLO PARADA-ESPERA CHANNEL C1 (usuario, proveedor); CHANNEL C3 (usuario, proveedor); by usuario : by proveedor: envia (datos:tipo_datos); recibe (datos : tipo_datos); CHANNEL C2 (usuario, proveedor); by usuario : envia (n:sec;datos tipo_datos); by proveedor: ack (n : sec); CHANNEL C4 (usuario, proveedor); by usuario: ack (n :sec); by proveedor: recibe (n:sec;:datos : tipo_datos); INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: PROTOCOLO PARADA-ESPERA MODULE USUARIO_E; ip U : C1(usuario); MODULE USUARIO_R; ip U : C3(usuario); MODULE EMISOR; ip U : C1(proveedor); MT: C2(usuario); MODULE RECEPTOR; ip U : C3(proveedor); MR: C4(usuario); MODULE MEDIO; ip MT: C2(proveedor); MR: C4(proveedor); BODY USUARIO_E_BODY FOR USUARIO_E; EXTERNAL; BODY USUARIO_R_BODY FOR USUARIO_R; EXTERNAL; BODY EMISOR_BODY FOR EMISOR; EXTERNAL; BODY RECEPTOR_BODY FOR RECEPTOR; EXTERNAL; BODY MEDIO_BODY FOR MEDIO; EXTERNAL; INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: PROTOCOLO PARADA-ESPERA INITIALIZE BEGIN MODVAR E : EMISOR; R : RECEPTOR; UE: USUARIO_E; UR: USUARIO_R; M: MEDIO; INIT UE WITH USUARIO_E_BODY; INIT E WITH EMISOR_BODY; INIT M WITH MEDIO_BODY; INIT UR WITH USUARIO_R_BODY; INIT R WITH RECEPTOR_BODY; CONNECT UE.U TO E.U; CONNECT E.MT TO M.MT; CONNECT UR.U TO R.U; CONNECT R.MR TO M.MR; END; INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - - ESPECIFICACIÓN IMPLEMENTACIÓNFORMAL DE PROTOCOLOS DE PROTOCOLOS ESTELLE TRANSICIONES CONDICION DE DISPARO – – – – ESTADO ORIGEN (FROM) ENTRADA (WHEN) PREDICADO (PROVIDED) PRIORIDAD (PRIORITY) ACCIONES – ESTADO DESTINO (TO) – SALIDAS (OUTPUT) TRANSICIONES ESPONTANEAS – NO TIENEN ENTRADA (WHEN) – PUEDEN TENER LA CLAUSULA DELAY INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: PROTOCOLO PARADA-ESPERA EMISOR_BODY FOR EMISOR STATE desocupado, esperando_ack INITIALIZE BEGIN STATE TO desocupado; nsec : 0; END TRANS WHEN U.envia(datos) FROM desocupado TO esperando_ack BEGIN buffer :=datos; OUTPUT MT.envia(nsec,buffer); END INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: PROTOCOLO PARADA-ESPERA TRANS WHEN MT.ack(n) FROM esperando_ack TO desocupado PROVIDED n=nsec+1; (MOD2) BEGIN nsec := nsec+1; (MOD2) END TRANS FROM esperando_ack TO same DELAY (timeout) BEGIN OUTPUT MT.envia(nsec,buffer); END INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: PROTOCOLO PARADA-ESPERA RECEPTOR_BODY FOR RECEPTOR INITIALIZE BEGIN nesp=o; END WHEN MR.recibe(n,datos) BEGIN IF n<>nesp THEN BEGIN OUTPUT MR.ack(nesp+1); END IF n=nesp THEN BEGIN OUTPUT U.recibe(datos); nesp=nesp+1; OUTPUT MR.ack(nesp); END END END INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Asentimientos Selectivos USER U DATA_INDICATION RECEIVER U N SEND_AK(ak_no) NETWORK DATA_INDICATION N INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Asentimientos Selectivos RECEIVER_BODY FOR RECEIVER STATE IDLE, ACK_SENT INITIALIZE BEGIN (* initialization part *) STATE TO IDLE min:=1; max:=20; inactive_period:=60; ak_no:=0; END TRANS (* transition part *) FROM IDLE TO IDLE PRYORITY MEDIUM WHEN N.DATA_INDICATION; {T1} begin output U. DATA_INDICATION; ak_no:=ak_no+1; end INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Asentimientos Selectivos TO ACK_SENT PROVIDED (ak_no>0) and (ak_no<=4) PRYORITY LOW DELAY (min,max) {T2} begin output N. SEND_AK(ak_no); end PROVIDED (ak_no>4) and (ak_no<7) PRYORITY high DELAY (min) {T3} begin output N. SEND_AK(ak_no); end PROVIDED (ak_no=7) PRYORITY high {T4} begin output N. SEND_AK(ak_no); end PROVIDED (ak_no=0) PRYORITY low DELAY (inactive_period) {T5} begin output N. SEND_AK(ak_no); end INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Asentimientos Selectivos FROM AK_SENT TO IDLE {T6} begin ak_no:=0; end end; (* transsition part *) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Asentimientos Selectivos Inmediatamente después de la inicialización, arranca el temporizador cláusula delay de la transición T5 – Si pasan 60s y no llega ningún mensaje entrante se dispara la transición T5 mandándose un ack artificial para evitar la desconexión – Si llega un mensaje antes de 60s se dispara la transición T1 y se cancela el temporizador de la transición T5. » El valor de ack_no = 1 » El estado final es IDLE Inicio T5 60s INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Asentimientos Selectivos Después de llegar el primer mensaje arranca el temporizador de la cláusula delay de la transición t2 – Si los mensajes llegan en cantidades de 1-4 cada 20s. ellos pueden ser reconocidos uno por uno o en bloques de 2-4 mensajes dependiendo de la distribución de mensajes en el tiempo Inicio Tem. Delay T2 M1 T1 1s 20s INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Asentimientos Selectivos Inicio Tem. Delay T2 M2 M1 1s Inicio Tem. Delay T2 M1 T2 20s M2 M3 1s T2 20s Inicio Tem. Delay T2 M1 M2 M3 1s M4 T2 20s INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Asentimientos Selectivos Inicio Tem. Delay T2 M1 M2 M3 1s M4 T2 20s Inicio Tem. Delay T2 M1 M2 M3 M4 1s T2 20s INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Asentimientos Selectivos Después de llegar el quinto mensaje y no haber sido asentidos los cuatro anteriores – Se cancela el temporizador asociado al delay de la T2 – Arranca arranca el temporizador de la cláusula delay de la transición T3 – Después de 1s se disparará la T3 si no se recibe el mensaje 7 Inicio Tem. Delay T3 M1 M2 M3 M4 M5 T3 Inicio Tem. Delay T3 M1 M2 M3 M4 1s M5 M6 1s T3 INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Asentimientos Selectivos Después de llegar el séptimo mensaje y no haber sido asentidos los mensaje anteriores – Se cancela el temporizador asociado al delay de la T3 – Se dispara la T4 inmediatamente Disparo T4 Inicio Tem. Delay T2 M1 M2 M3 M4 Inicio Tem. Delay T3 M5 M6 M7 1s Cancela Temp T3 INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ESTELLE: Asentimientos Selectivos Conclusiones: – Alta carga: » Llegada de 7 mensajes en menos de 1s: Los asentimientos son enviados en bloques de 7 mensajes – Carga Media: » Cuando se reciben más de cuatro mensajes en menos de 20s: Se manda un asentimiento conjunto después de un retardo de 1s. desde el quinto mensaje. – Esto ocurre si no se recibe antes el mensaje 7, en cuyo caso el asentimiento es inmediato – Carga Baja: » Cuando solo se reciben de 1 a 4 mensajes en 20s se manda un asentimiento al final de este tiempo (de 1, 2, 3 o 4) – Sin tráfico » Si no se envía ningún mensaje en el periodo de 60s se envía un ack de mantenimiento de la línea INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS SDL (Specification and Description Language) introducción SDL : Leguaje de Especificación y Descripción Basado en autómatas extendidos y comunicación asíncrona de procesos Normalizado por el CCITT: SDL-72, SDL76, ..SDL-88 / ITU: SDL-92 Notación textual (SDL/PR) y gráfica (SDL/GR) Aplicación: sistemas distribuidos, de tiempo real, interactivos, protocolos de comunicaciones – Ejemplo: Estándar IEEE 802.11 Herramientas: Telelogic Tau INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS SDL: Estructura de una Especificación System S Block B1 Process P11 Process P12 Block B2 Process P13 Process P21 Process P22 INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS SDL: Estructura de un Sistema Enviroment System Channel Block Channel Channel Block INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS SDL: Estructura del Bloque Signal route Process Signal route Process Signal route Channel Channel Block INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS SDL: Proceso: Modelo Básico INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS SDL: Constructores para la descripción de un Proceso S1 START STATE A B INPUT OUTPUT S2 NEXSTATE INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS SDL: Proceso: Estados y Transiciones II INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS SDL: PROTOCOLO PARADA-ESPERA DESOCUPADO ESPERANDO ACK DATOS NIVEL SUPERIOR TRAMA DATOS DESOCUPADO T ACK(n) n<>nsec n=nsec n SET(NOW+13,T) ESPERANDO ACK TRAMA DATOS TRAMA DATOS TRAMA ACK SET(NOW+13,T) DESOCUPADO ESPERANDO ACK EMISOR ESPERANDO ACK DESOCUPADO RECEPTOR INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS TELELOGIC SDL INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS SDL PROTOCOLO PARADA-ESPERA Descripción Sistema INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS SDL PROTOCOLO PARADA-ESPERA Descripción Bloques I INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS SDL PROTOCOLO PARADA-ESPERA Descripción Bloques II INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS SDL PROTOCOLO PARADA-ESPERA Descripción Procesos I INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS SDL PROTOCOLO PARADA-ESPERA Descripción Procedimientos INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS SDL PROTOCOLO PARADA-ESPERA Descripción Procesos II INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS (o) (1) (1) (o) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS LOTOS INTRODUCCIÓN En LOTOS Se hace una descripción dinámica del sistema basado en una ordenación de eventos Los eventos ocurren en puntos de interacción de procesos denominados puertas Un evento corresponde a la activación de una puerta El proceso de modelado consiste en: – Seleccionar los aspectos más relevantes del sistema decidir como trasladarlos a puertas – El comportamiento del sistema es especificado describiendo todas las posibles secuencias de eventos que el sistema puede ofrecer al entorno INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS LOTOS REPRESENTACIÓN DE EVENTOS Y PUERTAS estados b a c d puertas a: ?x1:int, ?x2:int, !(3+5), !true, ?x3:bool; INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS LOTOS OPERADOR DE ELECCIÓN (CHOICE [ ]) Operador Choice [ ]: ( Net1_in? Datagrama: ip_dtgrm; encamina(Datagrama); ............................. ) [] ( ) Net2_in? Datagrama: ip_dtgrm; encamina(Datagrama); ............................. INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS LOTOS SELECCIÓN DE EVENTOS Y OPERADORES DE GUARDA Selección de Eventos: a ? x:int [x<0]; a: ? x:int, !y [x>y] Operadores de Guarda: Net1_in? Datagrama: ip_dtgrm; ( ( [ruta(datagrama)=2] -> Net2_out ! Datagrama; .........) [] ( [ruta(datagrama)=3] -> Net3_out ! Datagrama; ..........) ) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS LOTOS ENTRELAZADO DE PROCESOS a1 a2 b1 b2 ||| a1 a2 b2 b1 a2 b2 a1 b2 a2 b1 a1 b1 INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS LOTOS SINCRONIZACIÓN PARCIAL a a b | [ a, d ] | c d d f a c b d f b f INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS LOTOS SINCRONIZACIÓN DE PUERTAS (I) Las puertas tienen el mismo nombre y e es un valor de tipo t a?x:t a!e Las puertas tienen el mismo nombre y los valores s1 y s2 coinciden a ! s1 y y a ! s2 Los valores ofrecidos en la puerta son del mismo tipo (t1=t2), pero no están definidos a ? x : t1 y a ? y : t2 (En este caso el valor del evento que ocurrirá en el modelo no está definido) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS LOTOS SINCRONIZACIÓN DE PUERTAS (I) Ejemplos: a: ?x1:int, ?x2:int, !(3+5), !true, ?x3:bool a: !7, !9, ?y1:int, !true, ?y2:bool a: !7, !9, ?y1:bool, !true, ?y2:bool a: !7, !9 INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS LOTOS PROTOCOLO PARADA-ESPERA SPECIFICACION BIT ALTERNANTE behaviour ( EMISOR [get, tout, send, receive ] (0) ||| RECEPTOR [ give, send, receive] (0) ) | [ tout, send, receive] | LINEA [tout, send, receive] where process EMISOR [get, tout, send, receive ] (0) ( ........... ) process RECEPTOR [ give, send, receive] (0) ( ........... ) process LINEA [tout, send, receive] ( ........... ) endspec INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS LOTOS PROTOCOLO PARADA-ESPERA receive !info ?rec:SNum ?data:BitString send !info !seq !data tout rec=nesp receive !ack !inc(seq) !empty give !data rec<>nesp send !ack !inc(nesp)!empty RECEPTOR EMISOR exit RECEPTOR (inc(nesp)) send !ack !inc(nesp)!empty send ?f:trame ?seq:SNum ?data:BitString receive !f !seq!data i LINEA tout INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS EJEMPLO ESPECIFICACIÓN PROTOCOLO RDSI Q.931 RTC RED DE CONMUTACION DE PAQUETES USUARIO USUARIO TELEX RED BANDA ANCHA USUARIO RDSI USUARIO INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS RED DIGITAL SERVICIOS INTEGRADOS S/T U CENTRAL LOCAL RDSI TR 1 AT R TERMINAL RDSI ACCESO BÁSICO 2B+D TERMINAL NO RDSI .... S T U TR 1 AT R TERMINAL RDSI .... TERMINAL NO RDSI . . . CENTRALITA DIGITAL MULTISERVICIO (NT2) CENTRAL LOCAL RDSI ACCESO PRIMARIO 30B+D INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS RED DIGITAL SERVICIOS INTEGRADOS MULTIPLEXACION A NIVEL FISICO: – ACCESO BASICO » 2B (64Kbps) + D (16Kbps) – ACCESO PRIMARIO » 30B (64Kbps) + D (64Kbps) PLANO DE CONTROL: – CANAL D PLANO DE USUARIO: – CANAL B Y D El PLANO DE CONTROL estructurado en 3 niveles (alineado con el modelo OSI) El plano de usuario depende de las aplicaciones INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS RED DIGITAL SERVICIOS INTEGRADOS CONTROL DE LLAMADAS POR CANAL COMUN INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS RED DIGITAL SERVICIOS INTEGRADOS ARQUITECTURA DE PROTOCOLOS EN EL INTERFAZ USUARIO-RDSI APLICACION PRESENTACION SESION SEÑALIZACION USUARIO EXT-EXT TRANSPORTE RED ENLACE SEÑALIZACION CONTROL(I.451) X.25 NIVEL PAQUETE X.25 NIVEL PAQUETE LAP- D FRAME-RELAY LAP-B NIVEL 1 (I.430, I.431) FISICO SEÑALIZACION PAQUETES CANAL D TELEMETRIA CONMUTACION CIRCUITOS LINEA DEDICADA CANAL B CONMUTACION PAQUETES INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS ARQUITECTURA DE COMUNICACIONES RDSI I.451/ Q.931 MENSAJE I.451 / Q.931 LAP-D (I.441) INTERFAZ BASICO (I.430) INTERFAZ PRIMARIO (I.431) CABECERA LAPD MENSAJE I.451 / Q.931 FIN LAPD INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS FORMATO DE LOS MENSAJES Q.931 DISCRIMINADOR PROTOCOLO R.LL 0 0 0 0 1 LONGITUD DEL V.R.Ll. IDENTIFICADOR E.I. CONTENIDOS E.I. Formato E.I. tipo 1 I VALOR DE REFERENCIA DE LLAMADA 0 1 IDENTIFICADOR E.I. Formato E.I. tipo 2 TIPO DE MENSAJE 0 ELEMENTOS DE INFORMACION OBLIGATORIOS Y ADICIONALES IDENTIFICADOR E.I. LONGITUD E.I. CONTENIDOS E.I. Formato E.I. tipo 3 INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS MENSAJES Q.931 MENSAJES ESTABLECIMIENTO ESTABLECIMIENTO, ACUSE ESTABLECIMIENTO, LLAMADA EN CURSO, AVISO, PROGRESO, CONEXION, ACUSE CONEXION MENSAJES FASE INFORMACION SUSPENSION, ACUSE SUSPENSION, RECHAZO SUSPENSION, REANUDACION, ACUSE REANUDACION, RECHAZO, REANUDACION INFORMACION USUARIO MENSAJES LIBERACION DESCONEXION, LIBERACION, LIBERACION COMPLETADA MENSAJES DIVERSOS INFORMACION, ESTADO, CONSULTA DE ESTADO, NOTIFICACION, CONTROL DE LA CONGESTION INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROCEDIMIENTOS LLAMADA Q.931 ESTABLECIMIENTO ESTABLECIMIENTO LLAMADA EN CURSO AVISO AVISO CONEXION CONEXION ACUSE CONEXION ACUSE CONEXION DATOS DESCONEXION LIBERACION DESCONEXION LIBERACION LIBERACION COMPLETA LIBERACION COMPLETA INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS Diagrama de transición de estados para el establecimiento de la llamada Q.931 por Conmutación de Circuitos INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS Diagrama de transición de estados para la finalización de la llamada Q.931 por Conmutación de Circuitos INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS EJEMPLO ESPECIFICACIÓN PROTOCOLO RDSI Q.931 CON SERVICIOS DE SEGURIDAD AUTORIDAD CERTIFICACIÓN M. INFORMACIÓN USUARIO (Mensaje 1) M. INFORMACIÓN USUARIO (Mensaje 2) USUARIO A M. ESTABLECIMIENTO (Mensaje 3) M. AVISO (Mensaje 4) USUARIO B INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS EJEMPLO ESPECIFICACIÓN PROTOCOLO RDSI Q.931 CON SERVICIOS DE SEGURIDAD INTERCAMBIOS DEL PROTOCOLO DE SEGURIDAD INCORPORADO EN EL CANAL D DE LA RDSI 1 : A → C : Re q, A, B, encrypt(K PC , encrypt( K SA , [A, N1 ]); 2 : C → A : encrypt(K SC , [A, K PA , T ]), encrypt(K SC , [B, K PB , T ]), encrypt(K PA , N2 ); 3 : A → B : encrypt(K SC , [A, K PA , T ]), encrypt(K PB , encrypt( K SA , [SK, T , N3 ]); 4 : B → A : encrypt (SK , N 4 ); INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS EJEMPLO ESPECIFICACIÓN PROTOCOLO RDSI Q.931 CON SERVICIOS DE SEGURIDAD behaviour ( ISDN_USER[isdn, user, scontrol_call,choice_random,timeout] (userA) ||| ISDN_USER[isdn, user, scontrol_call,choice_random,timeout] (userB) ||| CERTIFICATION_AUTHORITY[isdn, user,t imeout](guide) ) |[isdn, timeout]| NETWORKING_SERVICE[isdn, control_isdn, timeout] where ........................................... INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS EJEMPLO ESPECIFICACIÓN LOTOS PROTOCOLO RDSI Q.931 CON SERVICIOS DE SEGURIDAD ISDN_USER [isdn,user,scontrol_call,choice_random,timeout] (own_name : user_name) : noexit := user ! initiate ! own_name ? tpname, peer_name : user_name; . SECURITY_SERVICE_PHASE_1 [isdn, user,scontrol_call,choice_random, timeout ] (own_name, tpname, peer_name) isdn ! setup_security_message ! own_name ? call_refd : call_reference_value ? one_setup: setup_security; SECURITY_SERVICE_RESPOND[isdn, user] (own_name, call_refd,one_setup) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS SECURITY_SERVICE_PHASE_1 [isdn,user,scontrol_call,timeout] (own_name, guide, peer_name : user_name): exit := . timeout isdn !release_complete !own_name !call_refs ?one_release_complete; exit . . scontrol_call ? call_refs: - isdn !setup !m_setup(----) isdn !call_proc !own_name !call_refs ?one-call_proc . isdn ! alerting !own_name !call_refs ?one_alerting . isdn ! connect!own_name !call_refs ?one_connect . i exit isdn ! ui ! m_ui(----) i . CLEAR_USER1[isdn] (own_name, call_refs) SECURITY_SERVICE_PHASE_2[isdn,user,scontrol_call] (own_name, peer_name, cp) ) ) )) M1-> isdn ! ui !own_name !call_refs ?one_ui . <-M2 user ! guide_service_down; exit INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS SECURITY_SERVICE_PHASE_2 [ isdn, user, scontrol_call,timeout] (own_name, peer_name : user_name, cp: public_key) : exit := . timeout . . scontrol_call ? call_refs: - isdn ! setup_security !m_setup(----) isdn !call_proc !own_name !call_refs ?one-call_proc . isdn !release_complete !own_name !call_refs ?one_release_complete; exit M3-> isdn ! alerting_security !own_name !call_refs ?one_alerting <-M4 . user !authentication_service_rejected !own_name ; exit user ! authentication _service_comptete !own_name ; exit INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS CERTIFICATION_AUTHORITY [isdn,user,timeout] (own_name : user_name) : exit := . isdn !release_complete !m_release_complete(---) exit . isdn ! setup !own_name ? call_refd ?one_setup isdn ! alerting !m_alerting(---) . isdn ! connect !m_conect(---) . CLEAR_USER2[isdn] (own_name, call_refs) isdn ! ui !own_name ! call_refd ?one_ui . M1-> isdn ! ui !m_ui(---) (guide_service_accepted/ guide_service_rejected) exit <-M2 INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS SECURITY_SERVICES_RESPOND [isdn, user] (own_name : user_name, call_refd : call_reference_value, one_setup : setup_security) : exit := . isdn !release_complete !m_release_complete(---) exit . isdn ! setup_security !own_name ? call_refd ?one_setup * setup_acepted . user ! authentication _service_rejected !own_name . isdn ! alerting !m_alerting(---) exit user ! authentication _service_accepted !own_name . isdn ! alerting_security !m_alerting(---) exit INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS NETWORKING_SERVICE[isdn, scontrol_call] : noexit := . isdn ! setup_security ?one_setup: setup_security isdn ! setup ?one_setup: setup . . scontrol_call ? call_refd scontrol_call ? call_refd . isdn ! call_proc !source !call_refs ! m_call_proc(---) isdn ! setup_security !destination !call_refd !one_setup_security . timeout . isdn ! call_proc !source !call_refs ! m_call_proc(---) timeout . isdn ! setup !destination !call_refd !one_setup . isdn ! alerting_security ? one_alerting [call_refd == get_cr (one_alerting)] . i . isdn ! alerting _security !source !call_refs ! one_alerting_security exit (I) isdn ! alerting ? one_alerting [ call_refd == get_cr(one_alerting)] 1 CLEAR_1[isdn] (source, call_refs, destination, call_refd) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS NETWORKING_SERVICE[isdn, scontrol_call] : noexit := 1 i . NETWORK_SERVICE[isdn] (user) isdn ! alerting !source !call_refs ! one_alerting isdn ! connect ? one_connect [call_refd == get_call_ref(one_connect)] . . isdn ! connect ! source !call_refs !one_connect DATA_TRANSMISION[isdn] (source, call_refs, destination, call_refd) (II) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Introducción PROLOG es un lenguaje de programación desarrollado para representar y utilizar el conocimiento que se tiene sobre un determinado dominio. Un dominio es un conjunto de objetos y el conocimiento sobre ese dominio se representa por un conjunto de relaciones o reglas que describen las propiedades de los objetos y sus interacciones. Un programa PROLOG no es más que un conjunto de reglas que describen las propiedades e interacciones entre los objetos. Un programa PROLOG consta de tres elementos básicos: • Declaración de hechos (“facts”) acerca de los objetos y sus relaciones. • Definición de reglas (“rules”) hechos que dependen de otros hechos • Preguntas (“questions”) acerca de hechos INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Hechos “facts” Los “hechos” no es más que el conocimiento que se tiene de los objetos y sus relaciones. En PROLOG una colección de “hechos” que son utilizadas para resolver un problema particular se denomina “Base de Conocimiento”. conoce(juan, parís). Hecho: “Juan conoce París” Predicado (nombre de la relación) Argumentos (nombres de los objetos) INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Consultas, Objetivos Una vez que tenemos algunos hechos, podemos formular algunas preguntas acerca de ellos Cuando se hace una pregunta el intérprete PROLOG buscará si dicho hecho coincide con alguno otro existente en su Base de Conocimiento. Estos dos hechos coincidirán si sus predicados son los mismos y los argumentos coinciden y están en la misma posición. Para el intérprete PROLOG una consulta implica satisfacer el objetivo expresado. Si el intérprete PROLOG encuentra un hecho que coincide con el hecho definido en la interrogación responderá afirmativamente. ?- conoce(juan, parís). INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Variables En PROLOG no sólo se pueden utilizar nombres para denominar a objetos concretos sino que también se puede utilizar nombres para denominar a objetos todavía no determinados. Los nombres de este segundo tipo se denominan variables Cuando PROLOG utiliza una variable, dicha variable puede estar o no instanciada: – Una variable está instanciada cuando hay un valor particular asociado a dicha variable. – Una variable no está instanciada cuando todavía no hay un valor particular asociado a dicha variable. PROLOG distingue las variables de los nombres de objetos concretos debido a que las variables comienzan con una letra mayúscula Cuando se realiza una pregunta a un intérprete PROLOG conteniendo una variable, éste explora todos los hechos de su Base de Conocimiento con el fin de encontrar un objeto para el que se pueda asociar a dicha variable. INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Variables conoce(juan, parís). conoce(juan, estocolmo). conoce(juan, oslo). ?- conoce(juan, X). X=paris; X=estocolmo; X=oslo; Base de Conocimiento Consulta Resultado INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Conjunciones (mecanismo de Backtracking) ?-conoce(juan,X) , conoce(maria,X). •Primer objetivo satisfecho. Se asigna “X”=oslo. •Prolog marca el punto de la BD en el que se satisface el objetivo. •Se intenta satisfacer el segundo objetivo para ese valor de “X”. conoce(juan,oslo). conoce(juan,paris). conoce(juan,londres). conoce(maria,paris). ?-conoce(juan,X) , conoce(maria,X). • El segundo objetivo falla • Se intenta re-satisfacer el primer objetivo asignando un nuevo valor a “X” a partir del punto marcado en la exploración anterior. conoce(juan,oslo). conoce(juan,paris). conoce(juan,londres). conoce(maria,paris). INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Conjunciones (mecanismo de Backtracking) ?-conoce(juan,X), conoce(maria,X). Primer objetivo satisfecho de nuevo. Se asigna “X”=paris Prolog marca el punto de la B.D. en el que se satisface el objetivo Se intenta satisfacer el segundo objetivo para ese valor de “X”. conoce(juan,oslo). conoce(juan,paris). conoce(juan,londres). conoce(maria,paris). ?-conoce(juan,X), conoce(maria,X). El segundo objetivo tiene éxito. El intérprete Prolog informa de ello, y queda a la espera de realizar una nueva exploración conoce(juan,oslo). conoce(juan,paris). conoce(juan,londres). conoce(maria,paris). INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Reglas En PROLOG se utilizan reglas cuando es necesario expresar hechos que dependen de uno u otros hechos. En PROLOG una regla consta de una cabecera y un cuerpo. La cabecera y el cuerpo están conectadas por el símbolo “:-”. – La cabecera de la regla define el hecho que dicha regla intenta definir. – El cuerpo define una conjunción de objetivos que deben de ser satisfechos uno por uno para que la cabecera tenga éxito. Hecho: “X es hermana de Y si X es mujer y X e Y tienen los mismos padres” hermana_de(X,Y):=mujer(X), padres(X,P,M), padres(Y,P,M). INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Análisis de la vulnerabilidad de Protocolos de Seguridad Se puede utilizar PROLOG para analizar la vulnerabilidad de un protocolo de seguridad – A partir de la definición (o especificación) de un protocolo de seguridad se puede representar su comportamiento con un conjunto de reglas PROLOG – A partir del conocimiento de alguna información relativa a los contenidos del P.S. (grabada por un intruso) y de las reglas que definen el comportamiento del protocolo se puede analizar su vulnerabilidad INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS EJEMPLO ESPECIFICACIÓN PROTOCOLO C •C y A comparte una clave Ka •C y B comparte una clave Kb (1) (3) A 1 : A → C : E K ( B ); a { [ (4) 2 :C → A : EK K S ,EK K S A a b [ 3 : A → B : EK K S A b 4 : B → A : E K [dat ] s ] (2) B ]} * Protocolo de Needham Schroeder INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Especificación Protocolos de Seguridad (P.S.) PROTOCOL SPECIFICATION CONSTANTS a,b,x,c:address; dat,req,ok:data; ksa,ksb,kx,ks:key; n1,n2:int; t1,t2:ctime. MESSAGES 1:a->c:encrypt(KSA,B); 2:C->A:encrypt(KSA,[KS,encrypt(KSB,[KS,A])]); 3:A->b:encrypt(KSB,[KS,a]); 4:B->A:encrypt(KS,dat). RELATIONS 1:secret_key(a,KSA:a); 2:secret_key(B,KSB:C),secret_key(A,KSA:C),sesion_key(KS:C). RULES secret_key(a,ksa:a,c),secret_key(b,ksb:b,c),secret_key(x,kx:x,c); sesion_key(ks:c). KNOWS kx,encrypt(ksa,x). INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Traducción P.S. a un conjunto de reglas Prolog REGLAS DE DERIVACIÓN DE MENSAJES sent([a,c,encrypt(KSA,B)],[],1):-secret_key(a,KSA,a). derives([a,c,encrypt(KSA,B)], [C,A,encrypt(KSA,[KS,encrypt(KSB,[KS,A])])],2,MH):secret_key(B,KSB,C),secret_key(A,KSA,C),sesion_key(KS,C). derives([C,A,encrypt(KSA,[KS,encrypt(KSB,[KS,A])])], [A,b,encrypt(KSB,[KS,a])],3,MH). derives([A,b,encrypt(KSB,[KS,a])], [B,A,encrypt(KS,dat)],4,MH). INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Traducción P.S a un conjunto de reglas Prolog REGLAS ASOCIADAS A LA EMISIÓN / RECEPCIÓN DE MENSAJES Y A LA MODIFICACIÓN DE LOS MISMOS sent(Ms,[Mr|H],N):- R is N-1,R>0,received(Mr,H,R),derives(Mr,Ms,N,H). received(Mr,[Ms|PH],N):-sent(Ms,PH,N),p_modified(Mr,Ms,PH,N). p_modified([],[],_,_). p_modified([X|Mr],[Y|Ms],H,N):- isomorphic(X,Y), p_knows_initially(X), p_modified(Mr,Ms,H,N). p_modified([Y|Mr],[Y|Ms],H,N):- p_modified(Mr,Ms,H,N). p_knows_initially(kx). p_knows_initially(encrypt(ksa,x)). INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Traducción P.S a un conjunto de reglas Prolog REGLAS ASOCIADAS AL ESTUDIO DE LA VULNERABILIDAD DE UN PROTOCOLO DE SEGURIDAD (I) p_knows(X,H,0):-p_knows_initially(X). p_knows(X,H,N):- N>0,R is N-1, p_knows(X,H,R). p_knows(X,[M|PH],N):- N>0, sent(M,PH,N), p_gets(X,M,PH,PH,N). INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Traducción P.S a un conjunto de reglas Prolog REGLAS ASOCIADAS AL ESTUDIO DE LA VULNERABILIDAD DE UN PROTOCOLO DE SEGURIDAD (II) p_gets(X,M,PH,H,N):-member(X,M). p_gets(X,M,PH,H,N):-encrypt_field0(encrypt(K0,W)), member(encrypt(K0,W),M), p_knows_ph1(K0,PH,H,N), member(X,W). p_gets(X,M,PH,H,N):-encrypt_field1(encrypt(K0,[V,encrypt(K1,W)])), member(encrypt(K0,[V,encrypt(K1,W)]),M), p_knows_ph1(K0,PH,H,N), p_knows_ph1(K1,PH,H,N), member(X,W). member(X,X). member(X,[X|_]). member(X,[_|Y]):-member(X,Y). INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS PROLOG: Análisis vulnerabilidad del P.S. ?- sent(M,H,1). M = [a,c,encrypt(ksa,b)] H = [] -> ?- sent(M,H,2). M = [c,a,encrypt(ksa,encrypt(kx,[ks,a]))] H = [[a,c,encrypt(ksa,x)],[a,c,encrypt(ksa,b)]] ->; M = [c,a,encrypt(ksa,encrypt(ksb,[ks,a]))] H = [[a,c,encrypt(ksa,b)],[a,c,encrypt(ksa,b)]] ->; ?- sent(M,H,3). M = [a,b,encrypt(kx,[ks,a])] H = [[c,a,encrypt(ksa,encrypt(kx,[ks,a]))],[c,a,encrypt(ksa,encrypt(kx,[ks,a]) )], [a,c,encrypt(ksa,x)],[a,c,encrypt(ksa,b)]] ->; M = [a,b,encrypt(ksb,[ks,a])] H = [[c,a,encrypt(ksa,encrypt(ksb,[ks,a]))],[c,a,encrypt(ksa,encrypt(ksb,[ks,a]))], [a,c,encrypt(ksa,b)],[a,c,encrypt(ksa,b)]] ->; Reconsulting ... ?- p_knows(ks,H,3). H= [[a,b,encrypt(kx,[ks,a])],[c,a,encrypt(ksa,encrypt(kx,[ks,a]))],[c,a, encrypt(ksa,encrypt(kx,[ks,a]))],[a,c,encrypt(ksa,x)],[a,c,encrypt(ksa,b)]] -> INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS IMPLEMENTACIÓN PROTOCOLO PARADA-ESPERA PROGRAM emisor TYPE eventos=(trama_i_lista, trama_ack_recibida, expira_tem) estados=(desocupado, esperando_ack) acciones=(na, trans_trama, error, retrans_trama, retardo, proc_ack) VAR tabla_eventos_estados=array[estados,eventos] of record accion: acciones nuevoestado: estados end estado_actual: estados tipo_evento: eventos Nseq: Numsecuencia INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS IMPLEMENTACIÓN PROTOCOLO PARADA-ESPERA PROCEDURE inicializar { Inicializa las variables de estado y los conteniods de la tabla_eventos _estados} PROCEDURE transmitir_trama {Construcción de la trama (inserción de número de secuencia y datos de nivel superior). Pone la trama en linea. Salva la trama en un buffer. Activa el temporizador.} PROCEDURE retransmitir_trama {Recupera trama de buffer. Pone la trama en línea. Activa temporizador} PROCEDURE proceso_ack {Si ack es correcto : Borrar trama del buffer. Incrementar nº de secuencia} PROCEDURE retardo {Retarda un corto intervalo de tiempo} INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS IMPLEMENTACIÓN PROTOCOLO PARADA-ESPERA PROCEDURE Error { Situación error} BEGIN Inicializar; REPEAT esperar a que se produzca un evento tipo_evento:= evento WITH tabla_estados_eventos[estado_actual, tipo_evento] DO BEGIN CASE accion of ¨{acciones} trans_trama: transmitir_trama retrans_trama: retransmitir_trama pro_ack: proceso_ack retardo: retardo errror: error END estado actual: nuevo END UNTIL forever END INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES -- ESPECIFICACIÓN IMPLEMENTACIÓN DE PROTOCOLOS FORMAL DE PROTOCOLOS IMPLEMENTACIÓN PROTOCOLO PARADA-ESPERA PROCEDURE receptor VAR nesp BEGIN Inicializar nesp REPEAT esperar a una trama I IF nseq de la trama= nesp THEN BEGIN incrementar nesp mandar ack(nesp) END if nseq de la trama<>nesp THEN mandar ack(nesp) UNTIL forever END