Protocolos de Comunicación de Datos Ingeniero en Computación 8° Semestre
Contenido Unidades I.
Introducción a los protocolos de comunicación …..........( ..........( 03)
II.
Estructura de los protocolos protocolos……………………………………….(17)
III. Control de error ………………………………………………………….(42)
IV. Control de flujo………………………………...........................…(55) V.
Modelos de Validación……………………......................…....(65) ....(65)
VI. Criterios de corrección…………………………………………..…..(95) ..(95)
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
2
Unidad I Introducción a los protocolos de comunicación
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
3 Regresar a Contenido
¿Protocolo? •
Conjunto de reglas o convenios que gobiernan el formato y el control de la información transmitida a través de una red.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
4
Protocolos como Lenguajes La definición completa de un protocolo se parece mucho a la definición de un lenguaje:
Define el formato preciso de mensajes válidos (sintaxis)
Define las reglas para el intercambio de datos (gramática)
Define un vocabulario de mensajes válidos que pueden ser intercambiados, con su significado (semántica).
La gramática del protocolo debe ser consistente y completa: bajo cualquier circunstancia las reglas deben dictar de manera no ambigua lo que está prohibido y lo que está permitido.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
5
Estandarización de Protocolos La normalización o estandarización es la redacción y aprobación de normas que se establecen para garantizar el acoplamiento de elementos construidos independientemente, así como garantizar el repuesto en caso de ser necesario, garantizar la calidad de los elementos fabricados, la seguridad de funcionamiento y trabajar con responsabilidad social. La normalización es el proceso de elaborar, aplicar y mejorar las normas que se aplican a distintas actividades científicas, industriales o económicas con el fin de ordenarlas y mejorarlas. La asociación estadounidense para pruebas de materiales (ASTM) define la normalización como el proceso de formular y aplicar reglas para una aproximación ordenada a una actividad específica para el beneficio y con la cooperación de todos los involucrados. Según la ISO (International Organization for Standarization) la normalización es la actividad que tiene por objeto establecer, ante problemas reales o potenciales, disposiciones destinadas a usos comunes y repetidos, con el fin de obtener un nivel de ordenamiento óptimo en un contexto dado, que puede ser tecnológico, político o económico.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
6
Objetivos fundamentales de la normalización •
•
•
•
Simplificación: se trata de reducir los modelos para quedarse únicamente con los más necesarios. Unificación: para permitir el intercambio a nivel internacional. Especificación: se persigue evitar errores de identificación creando un lenguaje claro y preciso.
Las elevadas sumas de dinero que los países desarrollados invierten en los organismos normalizadores, tanto nacionales como internacionales, es una prueba de la importancia que se da a la normalización.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
7
Organismos Internacionales de Normalización •
ITU - Unión Internacional de Telecomunicaciones (engloba CCITT y CCIR).
•
ISO - La Organización Internacional de Normalización o ISO.
•
ANSI - Instituto Nacional Estadounidense de Estándares.
•
IETF -Internet Engineering Task Force.
•
IEEE corresponde a las siglas de (Institute of Electrical and Electronics Engineers) en español Instituto de Ingenieros Eléctricos y Electrónicos. Algunos estándares son: • • • • • • •
VHDL POSIX IEEE 1394 IEEE 488 IEEE 802 IEEE 802.11 IEEE 754
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
8
Estandarización de Protocolos Se requiere de métodos convincentes y efectivos para: •
Diseñar y describir protocolos.
•
Verificar que el protocolo es correcto.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
9
FDT (Técnicas de Descripción Formal) Se han desarrollado especificación de protocolos:
SDL
Lotos
Estelle
tres
lenguajes
para
la
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
10
FDT •
•
•
SDL (Specification and Description Language). Desarrollado por el CCITT (1987). Inicialmente creado para la especificación y el diseño de sistemas de telecomunicaciones. Lotos (Language of Temporal Ordering Specifications). Desarrollado por ISO (1989). Especificación formal del comportamiento de los procesos desde un alto nivel de abstracción. Estelle. Desarrollado por ISO (1989). Basado en una extensión de concepto de máquina de estado finito.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
11
Identificación del problema ¿Cómo diseñar un conjunto de reglas para el intercambio de información que sean mínimas, consistentes, completas e implementadas de manera eficiente?
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
12
Disciplina de diseño Durante el diseño del protocolo se seguirá un conjunto de reglas autoimpuestas que ayudarán a evitar posteriores problemas. Además, se seguirá la siguiente política:
•
Todo protocolo debe ser considerado como incorrecto, hasta que se demuestre lo contrario.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
13
Herramientas de diseño Los métodos de diseño que se usarán están basados en el modelo de validación. Un modelo de validación: •
Expresa las características esenciales del protocolo.
•
No entra en detalles de implementación.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
14
Herramientas automatizadas interpretan estos modelos de validación y reportan deficiencias de diseño PROMELA (Protocol Meta Language). Desarrollado por AT&T Bell Labs. Gerard Holzmann.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
15
Ejercicios: •
•
¿Cuál es el propósito del diseño de protocolos? Escriba el nombre de cinco protocolos de comunicación.
•
Describa las principales características del TCP/IP.
•
En qué consisten las Técnicas de Descripción Formal?
•
4 1 0 2 / 1 0 / 8 1
Cuáles organizaciones protocolos?
definen
la
estandarización
de
e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
16
4 1 0 2 / 1 0 / 8 1
Unidad II Estructura de Protocolos
e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
17 Regresar a Contenido
Introducción Durante el diseño de protocolos, dos tipos de errores son difíciles de evitar:
•
Diseño de un conjunto incompleto de reglas.
•
Diseño de reglas contradictorias.
La ambición de idea es hacer que el conjunto de reglas sea tanto completo como consistente.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
18
Los Cinco Elementos de un Protocolo La especificación de un protocolo, consiste de las siguientes partes: •
•
El servicio provisto por el protocolo. Las suposiciones hechas acerca del medio ambiente en el cual el protocolo será ejecutado.
•
El vocabulario de mensajes usados para implementar el protocolo.
•
La codificación (formato) de cada mensaje del vocabulario.
•
Las reglas de intercambio de mensajes.
El último elemento es el más difícil de diseñar y de verificar; nos dedicaremos principalmente al diseño y validación del conjunto de reglas no ambiguas.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
19
Ejemplo de la especificación de un Protocolo Especificación del Servicio
El objetivo del protocolo es la transferencia de archivos texto como consecuencia de caracteres a través de una línea telefónica, con detección y corrección de errores. •
Transferencia full-duplex.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
20
Ejemplo de la especificación de un Protocolo Reconocimientos positivos y negativos para el tráfico de A a B son enviados por el canal de B a A y viceversa. Cada mensaje contiene dos partes: 1. Información 2. Control aplicado al tráfico en el canal inverso.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
21
Supuestos acerca del Medio Ambiente •
•
•
•
•
Por lo menos dos usuarios del servicio de transferencia de archivos y un canal de transmisión. Los usuarios simplemente realizan una petición para la transferencia de archivo y esperan su terminación. El canal de transmisión puede distorsionar los mensajes de manera arbitraria. El canal de transmisión no pierde, duplica, inserta o reordena mensajes. Se asume que un módulo de nivel inferior es el encargado de detectar mensajes alterados y reemplazarlos por mensajes no alterados de tipo err .
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
22
Vocabulario del Protocolo Define tres tipos de mensajes: •
ack. Mensaje combinado con un reconocimiento positivo.
•
nack. Mensaje combinado con un reconocimiento negativo.
•
err. Mensaje con error de transmisión.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
23
Vocabulario del Protocolo De manera breve, el vocabulario puede ser expresado como un conjunto: V = {ack, err, nak}
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
24
Formato de los Mensajes Cada mensaje consiste de dos campos de tamaño fijo: •
•
Campo de control que identifica el tipo de mensaje. Campo de datos conteniendo el carácter.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
25
Formato de los Mensajes La forma general de cada mensaje puede ser representada de manera simbólica como una simple estructura de dos campos: {control tag, data}
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
26
En lenguaje C, de manera más detallada, se tendría: enum control {ack, nak, err} struct message{ enum control tag; unsigned char data; };
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
27
Conjunto de Reglas De manera informal, las reglas del protocolo son: •
•
Si el mensaje recibido no contiene errores, el siguiente mensaje que será enviado por el canal en sentido inverso, contendrá un reconocimiento positivo; si el mensaje recibido tuvo error, entonces contendrá un reconocimiento negativo. Si el mensaje recibido contiene un reconocimiento negativo o es un error, entonces retransmitir el mensaje viejo; en otro caso, generar un nuevo mensaje para ser transmitido.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
28
Para formalizar estas reglas, se puede hacer uso de las siguientes técnicas: •
Diagramas de transición de estados.
•
Diagramas de flujo .
•
Expresiones algebraicas , etc.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
29
Servicio y Medio Ambiente •
Modelo OSI de ISO (Introducción) 4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
30
Servicio y Medio Ambiente La necesidad de intercambiar información entre sistemas heterogéneos, es decir, entre sistemas cuyas tecnologías son muy diferentes entre sí, llevó a la ISO (International Standard Organization) a buscar la manera de regular dicho intercambio de información. El modelo de referencia OSI (Open Systems Interconnection) surgió en el año de 1983 y fue el resultado del trabajo de la ISO para la estandarización internacional de los protocolos de comunicación.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
31
Modelo OSI El modelo OSI consta de siete capas o niveles. Las características generales de las capas son las siguientes:
Cada una de las capas desempeña funciones bien definidas. Los servicios proporcionados por cada nivel son utilizados por el nivel superior.
Existe una comunicación virtual entre dos mismas capas, de manera horizontal.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
Existe una comunicación vertical entre una capa de nivel N y la capa de nivel N + 1. 32
Arquitectura de red basada en el modelo OSI Provee servicios generales relacionados con
N7
Aplicación
N6
Presentación
Formato de datos (ASCII)
N5
Sesión
Coordina la interacción en la sesión de usuarios
N4
Transporte
Provee una transmisión de datos confiable punto a punto
N3
Red
Enruta unidades de información
N2
Enlace de datos
Provee intercambio de datos entre dispositivos en el mismo medio
N1
Físico
Transmite un flujo de bits a través del medio físico
aplicaciones (transferencia de archivos)
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
33
Comparativo entre el Modelo OSI y el Modelo TCP/IP OSI Aplicación Presentación
TCP/IP
Aplicación
Sesión
Transporte Red
Transporte Internet
Enlace de Datos Física
Red
PROTOCOLOS HTTP, Telnet, FTP,
LPD, SNMP, TFTP, SMTP, NFS, X Windows, JPEG, MPEG TCP, UDP ICMP, BOOTP, ARP, RARP, IP, IPX Ethernet, FastEthernet, Token Ring, FDDI, HDLC, FrameRelay
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
34
Vocabulario y formato de protocolos A nivel más bajo, se tienen los siguientes formatos:
Orientado a bit. Orientado a caracteres. Orientado a un número total de bytes.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
35
- Orientado a bit 4 1 0 2 / 1 0 / 8 1
El protocolo transmite los datos como una secuencia de bits crudos.
e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
36
- Orientado a carácter
El número de bits por carácter es fijado a n bits (normalmente 7 u 8).
La transmisión se lleva a cabo en grupos de n bits.
Por ejemplo, código ASCII.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
37
- Orientado a un número total de bytes En algún lugar predefinido después del carácter de control, se incluye el número total de bytes que el mensaje contiene.
No se necesitaría una bandera de inicio ni una bandera de fin.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
38
Encabezados y colas (headers and trailers) •
format = {header, data, trailer}
•
header = {type, destination, sequence number, count}
•
STX
4 1 0 2 / 1 0 / 8 1
trailer = {checksum, return address}
header
user data
trailer
ETX
e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
39
Trama Ethernet
Preámbulo
Dir. destino
Dir. fuente
Tipo trama
Datos
CRC
8 bytes
6 bytes
6 bytes
2 bytes
46-1500 bytes
4 bytes
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
40
Ejercicios: 1. Escriba su ejemplo de especificación de un protocolo. 2. Describa las capas del Modelo OSI y sus principales funciones. 3. Escriba un ejemplo de protocolo de Enlace y de Red. 4. Mencione tres protocolos de la capa de Aplicación. 5. ¿En qué consiste la técnica de piggybacking?. 6. ¿Cuál es el enfoque de formato que utiliza la mayoría de protocolos actuales?
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
7. Explique las Diez Reglas de Diseño de Protocolos. 41
4 1 0 2 / 1 0 / 8 1
Unidad III Control de Error
e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
42 Regresar a Contenido
Control de Error Existen diferentes probabilidades de error en los medios de transmisión guiados o no guiados. •
Enlace fibra óptica: transmitidos.
10-9.
En promedio 1 en
•
Cable coaxial: 10-6.
•
Línea telefónica: 10-4... 10-5.
109 bits
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
43
Control de Error Vel. Transmisión
Prob. de error
Tipo de enlace
1 error cada:
9600 bps
10-4
Línea telefónica
1.04 segs
9600 bps
10-6
Coaxial
104 segs
9600 bps
10-9
Fibra óptica
3303 años
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
44
Tipos de Errores de Transmisión •
Inserción
•
Pérdida
•
Duplicación
•
Distorsión
•
Reordenamiento
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
45
Cyclic Redundancy Check (CRC) •
•
•
Al mensaje original (palabra código) se le agrega una secuencia de bits. Si no hay error, el método garantiza que la palabra código junto con la secuencia de bits agregada, es divisible por un factor dado.
El factor utilizado determina el rango de errores de transmisión que pueden ser detectados.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
46
Cyclic Redundancy Check (CRC) El método está basado en asimilar las secuencias de bit con polinomios de coeficientes 0 o 1. 0110110 0
x6 +
1
x5 +
1
x4 +
0
x3 +
1
x2 +
1x+0
x5 + x4 + x2 + x Para usar este método emisor y receptor acuerdan utilizar un polinomio G(x), que es el polinomio generador. La información redundante generada por este polinomio se denomina checksum.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
47
Cyclic Redundancy Check (CRC) •
El cálculo del checksum se lleva a cabo de forma que el polinomio que representa la trama de datos + checksum sea divisible por G(x).
•
M(x) = polinomio que representa los bits de datos.
•
T(x) = trama de datos + checksum.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
48
Algoritmo para el cálculo del checksum: 1.- Añadir r bits 0 al final de los datos xr M(x) 4 1 0 2 / 1 0 / 8 1
r = grado (G(x))
Ejemplo:
G(x) = x5 + x4 + x2 + 1
M(x) = x9 + x7 + x3 + x2 + 1
r=5
101000110100000
e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
49
Algoritmo para el cálculo del checksum: 2.- Dividir xr M(x) entre G(x) utilizando aritmética en módulo 2. 101000110100000 110101 0111011 110101 00111010 110101 00111110 110101 00101100 110101 0110010 110101 0001110
|110101 1101010110
cociente Q(x) y resto R(x)
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
50
Algoritmo para el cálculo del checksum: 3.- Restar xr M(x) - R(x) = T(x) que es lo que se transmite 101000110100000 1110 101000110101110
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
51
Algoritmo para el cálculo del checksum: 4.- Receptor:
T’(x) / G(x)
Þ R’(x)
Si R’(x) = 0 la trama de datos recibida se da como buena Si R’(x) ¹ 0 la trama de datos tendrá errores Aunque si R’(x) = 0 no se puede asegurar que no tenga errores ya que pueden haberse producido muchos errores en T(x) y que al dividirlo por G(x) de 0. Condiciones que debe cumplir G(x) para detectar errores de 1 bit: T’(x) / G(x) = T(x) + E(x) / G(x) = T(x) / G(x) + E(x) / G(x)
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
52
Algoritmo para el cálculo del checksum: •
Si sólo se ha producido un error en la transmisión: E(x) = xi
•
•
•
i = posición del error.
Para detectar errores de un bit, G(x) deberá tener más de un término. ¿Qué debe cumplir G(x) para detectar un número impar de errores? Si E(x) tiene un número impar de términos, no tiene (x+1) como factor entonces, si G(x) tiene a (x+1) como factor, E(x) no es divisible por G(x)
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
53
Polinomios más utilizados: G(x) = x12 + x11 + x3 + x2 + x + 1
•
CRC-12
•
CRC-16
G(x) = x16 + x15 + x2 + 1
CRC-CCITT
G(x) = x16 + x12 + x5 + 1
•
Los polinomios de grado 16 son capaces de detectar ráfagas de error de hasta 16 bits.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
54
4 1 0 2 / 1 0 / 8 1
Unidad IV Control de Flujo
e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
55 Regresar a Contenido
Control de Flujo El Control de flujo consiste en ajustar la tasa a la cual el transmisor envía datos con la tasa a la cual el receptor puede procesar.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
56
Protocolo x-on / x-off •
•
El funcionamiento correcto del protocolo, depende de las propiedades de transmisión del canal. •
Mensaje suspend perdido => overflow.
•
Mensaje resume perdido => procesos bloqueados.
Se requiere solucionar los siguientes problemas: •
Proteger contra problemas de overflow
•
Proteger contra la pérdida de mensajes
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
57
Protocolo de Reconocimiento Positivo con Retransmisión •
•
El emisor envía un paquete y espera un mensaje de reconocimiento de parte del receptor, antes de enviar el siguiente paquete.
El emisor, después de enviar un paquete, activa un temporizador: si éste expira antes de la llegada del reconocimiento, el emisor retransmite el paquete.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
58
Protocolos de Ventana Deslizante •
Más eficiente
•
Aprovechamiento del ancho de banda de la red.
•
•
•
•
El emisor transmite un número determinado de paquetes antes de esperar el reconocimiento. Este número está limitado por el tamaño de la ventana. Un tamaño de ventana igual a 1 corresponde al protocolo de reconocimiento positivo.
Conforme el tamaño de ventana aumenta es posible eliminar el tiempo de ocio de la red completamente. En el estado de equilibrio, el emisor transmite paquetes a la misma tasa con la que la red los puede procesar, lo que implica que se obtiene un máximo desempeño de la red.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
59
Otras consideraciones: •
•
•
La transmisión ya no es simplex sino que se transmite información en ambos sentidos (duplex o semi-duplex). Van a haber tramas de datos y reconocimiento mezcladas en el canal, para diferenciarlas se usará el campo clase. Se usará una técnica de reconocimiento llamada PIGGIBACKING, consiste en enviar el reconocimiento junto a la trama de datos.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
60
Problema: Si no hay tráfico de sentido inverso. Se deberá habilitar un temporizador para esperar un cierto tiempo si hay datos para enviar, en caso contrario se enviará una trama de reconocimiento.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
61
Ventajas: al haber menos tramas se realizará un mejor uso del canal. •
•
•
Todas las tramas están identificadas por un número de secuencia entre 0 y 2n-1. Permiten el envío de varias tramas antes de que las estaciones se queden bloqueadas esperando el reconocimiento. Las estaciones que utilizan estos protocolos mantienen una ventana de emisión (lista con los números de tramas enviadas por esa estación y que están pendientes de reconocimiento) y una de recepción.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
62
Ventajas •
•
El hecho de enviar varias tramas antes de que se bloquee la estación implica el tener unos buffers con las tramas enviadas por si se deben volver a enviar, esto añade cierta complejidad a los protocolos.
La ventana de recepción contiene una lista con los números de secuencia de las tramas que puede aceptar la máquina receptora.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
63
Ejercicios: •
•
•
•
•
¿Cómo determinar cada cuánto tiempo ocurre un error en los medios de transmisión? ¿Cuáles son los diferentes tipos de errores de transmisión? ¿Cómo se detectan errores de transmisión conociendo los datos recibidos y el polinomio CRC utilizado? ¿Cómo evitar o reducir la congestión en un canal de comunicación?
¿En qué casos se deben utilizar protocolos de ventana deslizante?
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
64
4 1 0 2 / 1 0 / 8 1
Unidad V Modelos de Validación
e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
65 Regresar a Contenido
Modelos de Validación 4 1 0 2 / 1 0 / 8 1
Un modelo de validación define las interacciones de procesos en un sistema distribuido.
e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
66
Se definen los modelos de validación en términos de tres tipos de objetos: objetos: •
Procesos
•
Canales
•
Variables
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
67
PROMELA PR OMELA (Prot (Protocol ocol Meta Language).
Es un lenguaje usado para describir modelos de validación. PROMELA fue creado en 1980 y es un subconjunto de C y OCAN.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
68
Enunciados Ejecutables •
•
•
•
En PROMELA no hay diferencias entre condiciones y enunciados. Los enunciados son ejecutables o bloqueantes. El estado ejecutable de un enunciado representa el medio principal de sincronización. Un proceso puede esperar a que un evento suceda hasta que un enunciado se vuelva ejecutable.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
69
Por ejemplo: •
•
•
•
•
En lugar de escribir: while (a != b) skip /* wait for == b */ En PROMELA se tiene el mismo efecto con el siguiente enunciado: (a == b)
La condición es ejecutada sólo si es verdadera. Si la condición es falsa, la ejecución es bloqueada hasta que la condición sea verdadera. La asignación a variables siempre es ejecutable.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
70
Variables y Tipos de Datos •
•
•
Las variables pueden ser globales o locales a un proceso. Una variable puede ser de alguno de los siguientes tipos predefinidos: bit, bool, byte, short, int, chan . Un canal es un objeto que puede almacenar un conjunto de valores agrupados en estructuras definidas por el usuario.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
71
Arreglos byte state [N]
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
72
Procesos proctype A() { byte state; state = 3 } ** ';' y '->' son separadores equivalentes de enunciados. Ejemplo: byte state = 2;
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
proctype A () { (state == 1) -> state = 3 } proctype B () { state = state - 1 }
73
Proceso init •
•
Equivalente a la función main( ) de lenguaje C.
La especificación más pequeña posible en PROMELA es: init { skip }
•
Otros ejemplos, init { printf ( "Hola, crayolas! \n" ) }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
74
Para instanciar los procesos A y B: init { run A (); run B () } •
•
•
•
•
El proceso init lanza dos procesos, que serán ejecutados de manera concurrente.
En éste caso, el proceso init termina después de haber lanzado el segundo proceso. run instancia una copia del proceso dado como operando, no espera a que el proceso termine. run es un enunciado ejecutable y regresa un número positivo (pid) sólo si el proceso pudo ser instanciado. Es no ejecutable y regresa 0 si el proceso no pudo ser instanciado.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
75
Paso de Parámetros a un Nuevo Proceso proctype A (byte state; short set) { ( state == 1) -> state = set } init { run A (1, 3) }
•
Sólo valores de cualquiera de los tipos base, pueden ser pasados como parámetros.
•
No es posible pasar arreglos ni procesos.
•
run puede ser usado en cualquier proceso para crear nuevos procesos.
•
Un proceso muere cuando termina, es decir, cuando alcanza el final de su cuerpo, siempre y cuando todos sus procesos hijos hayan terminado.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
76
Canales de comunicación •
•
Usados para modelar la transferencia de información entre procesos. Pueden ser locales o globales. chan a, b; chan c [3]
•
Define a y b como identificadores de canal; c como arreglo de identificadores de canal.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
77
Declaración de un canal con un inicializador 1. chan a = [16] of { short }
El canal puede almacenar hasta 16 mensajes de tipo short.
2. chan c [3] = [4] of { byte }
3. chan qname = [2] of { byte, int, chan }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
78
Envío de Mensajes qname ! expr
Envía el valor de la expresión expr a través del canal qname; lo coloca en el buffer asociado al canal qname (política FIFO).
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
79
Recepción de Mensajes •
qname ? msg
byte
int
4 1 0 2 / 1 0 / 8 1
chan
byte
int
Recupera el primer mensaje en el buffer asociado al canal qname y almacena su valor en la variable msg.
chan
e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
80
Envío y Recepción de Mensajes estructurados qname ! expr1, expr2, expr3 qname ? var1, var2, var3
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
81
Comunicación Síncrona (Rendezvous) chan port = [0] of { byte } •
•
Estamos definiendo un tamaño de buffer para el canal port igual a 0, por lo que no es posible almacenar mensajes. La comunicación es síncrona y binaria; sólo dos procesos, un transmisor y otro receptor son sincronizados.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
82
Control de Flujo •
Selección case.
•
Repetición.
•
Jumps incondicionales.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
83
Selección Case if :: (a != b) -> opcion1 :: (a == b) -> opcion2 fi •
Sólo una secuencia de enunciados (opción1 u opción2) es ejecutada.
•
Una secuencia es seleccionada sólo si su primer enunciado es ejecutable.
•
El primer enunciado es llamado guardia.
•
•
Si más de un guardia es ejecutable, una sola secuencia de las asociadas a dichos guardias, es seleccionada de manera aleatoria. Si ningún guardia es ejecutable, el proceso se bloquea hasta que por lo menos uno de ellos pueda ser seleccionado.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
84
Ejemplo 1: #define a 1 #define b 2 chan ch = [1] of { byte } proctype A () { ch ! a } proctype B () { ch ! b } proctype C () { if :: ch ? a :: ch ? b fi } init { atomic { run A(); run B(); run C () }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
85
Ejemplo 2: byte count; proctype counter() { if :: count = count + 1 :: count = count - 1 fi }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
86
Repetición •
El siguiente ciclo incrementa o decrementa la variable de manera aleatoria:
byte count; proctype counter() { do :: count = count + 1 :: count = count - 1 :: (count == 0) -> break od }
•
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
El ciclo puede ser roto con el enunciado break cuando count es igual a 0. 87
•
Puede no terminar ya que las otras dos opciones son seleccionables.
Repetición proctype counter() { do :: (count != 0) -> if :: count = count + 1 :: count = count - 1 fi :: (count == 0) -> break od }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
88
Saltos incondicionales (jumps) proctype Euclid (int x, y) { do :: (x > y) -> x = x - y :: (x < y) -> x = y - x :: (x == y) -> goto done od done: skip }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
89
Funciones, procedimientos y recursión proctype fact (int n; chan p) { int result; if :: (n <= 1) p ! 1 :: (n >= 2) -> chan child = [1] of { int }; run fact (n - 1, child); child ? result; p ! n * result fi } init { int result; chan child = [1] of { int }; run fact (3, child); child ? result; printf ("Resultado: %d \n", result) }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
90
Definición de los Tipos de Mensaje mtype = {ack, nak, err, next, accept}
Equivalente a: #define ack 1 #define nack 2 #define err 3 #define next 4 #define accept 5
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
91
Temporizadores proctype watchdog () { do :: timeout -> guard ! reset od } •
timeout es una condición predefinida que se vuelve
verdadera sólo cuando ningún otro enunciado en el sistema distribuido es ejecutable. •
No modela errores causados por la expiración prematura del temporizador en un sistema real.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
92
Tipos de Enunciados •
Asignación y condición.
•
Selección y repetición.
•
send y receive.
•
goto y break.
•
timeout.
•
run y len no son enunciados, sino operadores unarios que
pueden ser usados en asignaciones y condiciones. •
skip es un seudo enunciado.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
93
Ejercicios: •
•
¿Cuáles son los tres tipos de objetos que definen los modelos de validación? ¿Cuál es el equivalente a la función main() de C en el lenguaje PROMELA?
•
¿A qué se refiere el término Rendezvous?
•
¿Cómo realiza PROMELA el control de flujo?
•
¿Cómo implementa un temporizador?
•
¿Cómo se definen en PROMELA los tipos de mensaje?
•
¿Cuáles son los tipos básicos de enunciados definidos en PROMELA?
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
94
4 1 0 2 / 1 0 / 8 1
Unidad VI Criterios de corrección
e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
95 Regresar a Contenido
Criterios de Corrección El objetivo principal del lenguaje PROMELA es validar, y no implementar. 4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
96
Validación •
•
•
•
•
Para validar un diseño, es necesario especificar de manera clara y precisa lo que entendemos por un diseño correcto.
Un diseño puede ser considerado correcto sólo para un conjunto específico de criterios de corrección. Necesitamos de un formalismo para especificar los criterios de corrección. Entre más expresiva sea nuestra notación, menos útil será en la práctica. Por lo tanto, los criterios de corrección que pueden ser especificados en PROMELA han sido escogidos cuidadosamente.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
97
Razonamiento sobre el comportamiento •
•
•
Formalizamos los criterios de corrección como afirmaciones sobre el comportamiento de un modelo de validación en PROMELA. Un comportamiento es: Inevitable o imposible. Los criterios de corrección que pueden ser expresados en PROMELA definen comportamientos considerados como imposibles.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
98
Justificación Para afirmar que un comportamiento es inevitable, por ejemplo, podemos estipular que todos los comportamientos posibles que nos alejan de él, son imposibles.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
99
Definiciones en PROMELA •
•
•
El comportamiento de un modelo de validación se define como el conjunto de todas las secuencias de ejecución posibles. Una secuencia de ejecución es simplemente un conjunto finito de estados ordenados. Un estado está dado por el valor de todas las variables locales y globales, puntos de control de flujo de los procesos en ejecución y por el contenido de todos los mensajes de comunicación.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
100
Conjunto finito de estados •
•
•
Un conjunto finito de estados ordenados, es considerado válido para un modelo M dado si satisface los siguientes criterios: El estado inicial de la secuencia, por ejemplo, el estado 1, es el estado inicial de M, con todas las variables inicializadas en 0, todos los canales de comunicación vacíos y sólo con el proceso init activo.
Si M es colocado en el estado i, existe por lo menos un enunciado ejecutable que lo llevará al estado i + 1.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
101
Secuencias Especiales: Terminales y Cíclicas •
•
•
•
•
Una secuencia es terminal si ningún estado aparece más de una vez en la secuencia y el modelo M no contiene enunciados ejecutables una vez alcanzado el último estado de la secuencia.
Una secuencia es cíclica si todos los estados menos el último son diferentes, y este último es igual a alguno de los estados precedentes. Secuencias cíclicas definen ejecuciones potencialmente infinitas. Las secuencias terminales y cíclicas que pueden ser generadas al ejecutar un modelo en PROMELA, definen juntas el comportamiento del sistema para ese modelo. La unión de todos los estados incluidos en el comportamiento del sistema, define el conjunto de estados alcanzables del modelo.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
102
Criterios de validación •
Aserciones: •
•
assert ( condición)
Invariantes del sistema: •
proctype monitor () { assert (invariante) }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
103
Ejemplo: Semáforos Dijkstra #define p 0 #define v 1 chan semaf = [0] of { bit } proctype dijkstra () { do :: semaf ! p -> semaf ? v od } proctype user () { semaf ? p; /* Sección crítica */ semaf ! v /* Sección no crítica */ } init { atomic { run dijkstra(); run user(); run user(); run user(); } }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
104
Ejemplo: Semáforos Dijkstra •
•
El semáforo garantiza acceso exclusivo a la región crítica de cada proceso user. Se puede modificar el proceso user de tal manera que la variable global count contenga el número de procesos que se encuentran en su sección crítica como se muestra a continuación.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
105
Ejemplo: Semáforos Dijkstra (sesión crítica) byte count; proctype user() { semaf ? p count = count + 1; /* Sección crítica */ count = count - 1; semaf ! v /* Sección no crítica */ }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
106
Verificación del funcionamiento del semáforo La siguiente invariante del sistema puede ser utilizada para verificar el funcionamiento correcto del semáforo: proctype monitor () { assert ( count == 0 || count == 1 ) } init { atomic { run dijkstra(); run monitor(); run user(); run user(); run user(); } }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
107
Deadlocks: proctype dijkstra () { end: do :: semaf ! p -> semaf ? v od }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
108
Ciclos erróneos: •
•
Existen dos propiedades sobre las secuencias cíclicas correspondientes a dos tipos estándares de criterios de corrección.
Las dos propiedades se basan en el marcado explícito de estados en el modelo de validación.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
109
Ciclos sin progresión: proctype dijkstra () { end : do :: semaf ! p -> progress : semaf ? v od }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
110
Livelocks: proctype dijkstra () { end : do :: semaf ! p -> accept : semaf ? v od }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
111
Exigencias temporales never { do :: skip od -> P -> ! Q }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
112
Conclusiones •
•
•
•
•
Se ha introducido el resto de las directivas de validación PROMELA. Estas directivas están relacionadas con la especificación de los criterior de corrección para un modelo: Enunciados de aserción, Etiquetas end, progress y accept , Exigencia temporal never. Es prácticamente imposible verificar manualmente requerimientos de corrección. El comportamiento de inclusive protocolos simples es bastante complejo. Herramientas automatizadas como PROMELA son imprescindibles, no sólo para expresar los requerimientos de corrección del diseño de un protocolo, sino también para validarlos de manera confiable.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
113
Ejercicios: •
•
•
•
•
Explique los principales criterios de validación. ¿Explique los ejemplos de Deadlocks y Livelocks? ¿Cuáles son las dos propiedades sobre las secuencias cíclicas correspondientes a los dos tipos estándares de criterios de corrección? ¿Cómo se hace referencia a instancias de procesos en PROMELA? ¿Cómo se hace referencia a las variables locales de procesos?
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
114
Validación de Protocolos Se necesita verificar la consistencia lógica de una especificación formal. La especificación es formalizada como un modelo de validación en PROMELA, por ejemplo.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
115
Método Manual de Prueba •
•
•
•
•
•
•
Considere un sistema simple de transmisión con un transmisor S y un receptor R. El proceso S envía mensajes al proceso R a través de un medio no confiable de transmisión. Cada mensaje transmitido lleva un número de secuencia, incialmente igual a 1 e incrementado en 1 después de cada transmisión. El receptor reconoce el mensaje recibido mediante la transmisión del número de secuencia a través de un canal similar. El receptor almacena el número de secuencia más grande que ha recibido correctamente en su variable local B. El emisor guarda en la variable A el número de secuencia más grande que R ha recibido correctamente. Inicialmente, A = B = 0.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
116
En PROMELA: #define W cte_positiva chan R = [W] of { int } chan S = [W] of { bit } mtype = { mesg, ack } proctype S () { int A = 0; do :: R ! mesg (A + rand () % W) /* S1 */ :: S ? ack(A) /* S2 */ od } proctype R () { int B = 0, b; do :: S ! ack (B) /* R1 */ :: atomic { /* R2 */ R ? mesg (b); B = fct (b, B); } od }
4 1 0 2 / 1 0 / 8 1
fct (b, B) memoriza la recepción del mensaje con número de secuencia igual a b y regresa un valor X ≥ B para el cual garantiza que todos los mensajes con número de secuencia menor o igual a X fueron grabados previamente por fct ().
e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
117
Discusión sobre los Métodos Manuales •
•
•
•
•
Basados en la noción de estados invariantes. Contrariamente a los métodos usados en sistemas de validación automatizados, el método manual no se basa en la inspección de estados del sistema alcanzables, sino en la inspección de transmisiones de estado. Normalmente hay menos transiciones de estado que estados del sistema alcanzables. Sin embargo, puede requerir demasiado esfuerzo verificar que una transición no puede invalidar ninguna de las invariantes del sistema.
Lo anterior implica que es un método ineficiente para sistemas grandes, por lo cual se requieren herramientas automatizadas para la construcción de pruebas.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
118
Métodos de Validación Automatizados
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
119
Algoritmos de Análisis de Estados Alcanzables •
•
Este tipo de algoritmos trata de generar e inspeccionar todos los estados de un sistema distribuido que son alcanzables a partir de un estado inicial.
Existen tres tipos: Búsqueda completa (sistemas con hasta 105 estados), Búsqueda parcial controlada (sistemas con hasta 108 estados), Simulación aleatoria(sistemas aún más grandes).
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
120
Algoritmos de Análisis de Estados Alcanzables
El intérprete SPIN puede ser utilizado en las tres modalidades: Simulaciones aleatorias, Búsqueda parcial y Búsqueda exhaustiva.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
121
Método 1: Búsqueda completa o exhaustiva del espacio de estados •
•
•
•
Se lleva a cabo un análisis de todos los estados alcanzables y los no alcanzables. Se separan los estados alcanzables y los no alcanzables. Cada estado alcanzable y toda secuencia de estados alcanzables pueden ser verificados por un conjunto de criterios de corrección. Ejemplos de criterios de corrección: Ausencia de deadlocks, saturación de buffers, requerimientos temporales, invariantes del sistema, etc.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
122
ALGORITMO DE BÚSQUEDA COMPLETA DEL ESPACIO DE ESTADOS: start(){ W = { initial_state }; /* estados por analizar */ A = { }; /* estados previamente analizados */ analyze(); } analyze() { /* Búsqueda exhaustiva */ if ( W is empty ) return; q = last element from W; add q to A; if (q == error_state) report_error(); else { for each succesor state s of q if (s is not in A or W){ add s to W; analyze(); } } delete q from W; }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
123
Discusión sobre el Método de Búsqueda Exhaustiva •
•
•
El problema principal consiste en la capacidad de memoria disponible así como en la velocidad de procesamiento. Considere un protocolo con dos procesos, cada uno con 100 posibles estados, un canal de comunicación y 5 variables locales. Ambos canales están limitados a 5 entradas cada uno, en donde el número de mensajes diferentes a intercambiar es 10. Los valores distintos para las variables locales está limitada a 10. Búsqueda exhaustiva: sistemas con hasta 10 5 alcanzables.
estados
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
124
Método 2: Búsqueda Parcial Controlada Basada en la premisa de que en la mayoría de los casos prácticos, el número máximo de estados que pueden ser analizados, A, es sólo una fracción del número total de los estados alcanzables R.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
125
Una búsqueda parcial controlada tiene los siguientes objetivos: 1. Analizar exactamente A estados.
2. Seleccionar los A estados del conjunto completo de estados alcanzables R, de tal manera que la mayoría de las funcionalidades del protocolo sean probadas. 3.
Seleccionar los A estados de manera que la calidad de búsqueda, como la probabilidad de encontrar algún error dado, sea mejor que la cobertura A/R.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
126
Algoritmo de búsqueda parcial controlada analyze() { /* Búsqueda parcial controlada */ if ( W is empty ) return; q = last element from W; add q to A; if (q == error_state) report_error(); else { for some succesor state s of q if (s is not in A or W){ add s to W; analyze(); } } delete q from W; }
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
127
Métodos para establecer criterios de selección La selección de los estados sucesores puede ser hecha basada en una heurística para favorecer ejecuciones que revelen, con una probabilidad alta, errores de diseño.
• • • • •
Límite de profundidad, Búsqueda dispersa, Búsqueda probabilística, Orden parcial, Selección aleatoria.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
128
Métodos para establecer criterios de selección -
-
Límite de profundidad: Se establece un límite en la longitud de las secuencias que serán analizadas. Limita la búsqueda a un subconjunto representativo de comportamientos.
Búsqueda probabilística: Los estados son analizados, según su probabilidad de ocurrencia, en orden decreciente. Las transiciones del sistema son etiquetadas con una alta o baja probabilidad de ocurrencia, lo cual sirve como criterio de selección.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
129
Métodos usados para establecer los criterios de selección: - Orden parcial: Los procesos son clasificados en procesos de alta y baja prioridad. Una transición perteneciente a un proceso de alta prioridad es favorecida a una transición de un proceso de baja prioridad.
- Selección aleatoria: No se realiza ningún esfuerzo para predecir los estados del sistema en los cuales se encontrarán los errores errores más probables. Este método método es el más sencillo de implementar y el que produce una búsqueda con la más alta calidad.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
130
Discusión sobre los Métodos de Búsqueda Parcial Controlada •
•
•
Las primeras tres técnicas para controlar la búsqueda parcial tienen el siguiente problema en común: tratan de predecir dónde pueden ser encontrados los errores del protocolo. A pesar de que estos métodos reducen el número de estados del sistema analizados, estos están limitados ya en la práctica a sistemas con hasta 10 8 estados. Corolario de la Ley de Murphy : •
Los errores se esconden muy probablemente en donde el diseñador o el validador han decidido no buscar.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
131
Método 3: Simulaciones Aleatorias
•
•
Utilizado para sistemas con más de 10 8 estados.
El algoritmo descarta los conjuntos A y W y explora el espacio de estados usando la técnica de "Baco".
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
132
Algoritmo de Simulación aleatoria analyze() { /* Simulación aleatoria */ q = initial state; while (1){ if (q is error_state){ report_error(); q = initial state; { else q = a succesor state of q; } } El algoritmo funciona de manera independiente al tamaño y complejidad del sistema modelado (inclusive sistemas de tamaño infinito).
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
133
Algoritmo Supertrace: •
•
La implementación en C del algoritmo forma parte del intérprete Spin.
Recuérdese que Spin ofrece las tres modalidades: Búsqueda exhaustiva, Búsqueda parcial controlada y Simulación aleatoria.
4 1 0 2 / 1 0 / 8 1 e e d r t n s e ó i m c a e c i S n ° 8 u / m R o R C A C e / d s s o o t a l o D c o t o r P
134