La Capa de Transporte Mecanismos sobre un servicio fiable

Anuncio
La Capa de Transporte
Mecanismos sobre un servicio fiable
abril de 2008
Mecanismos sobre un
servicio fiable
Índice
• La Capa de Transporte.
• Primitivas de servicio.
• Elementos de una Capa de Transporte.
–
–
–
–
Direccionamiento.
Multiplexación.
Control de flujo y bufereado de TPDUs.
Establecimiento y liberación de conexiones.
• Un ejemplo sencillo.
• Resumen.
abril de 2008
2
1
Mecanismos sobre un
servicio fiable
La Capa de Transporte (I)
• Esencia: La capa de transporte es responsable de completar los
servicios de la red subyacente para ofrecerlos a la capa de aplicación.
– Servicios fiables orientados a conexión
– Servicios sin conexión
– Parametrización de la Calidad de Servicio
• Importante: las aplicaciones generalmente demandarán servicios
eficientes, en particular conexiones fiables.
• Nota: dependiendo de los servicios ofertados por la capa de red la
funcionalidad a añadir puede variar considerablemente. Vamos a
considerar un servicio de red fiable.
abril de 2008
3
Mecanismos sobre un
servicio fiable
La Capa de Transporte (II)
• Cuestión: ¿Por qué una nueva capa?
abril de 2008
4
2
Mecanismos sobre un
servicio fiable
El segmento o TPDU
abril de 2008
5
Mecanismos sobre un
servicio fiable
Servicios de una capa de transporte
Primitiva
Paquete enviado
Significado
LISTEN
(ninguno)
Se bloquea hasta que un proceso intenta
la conexión
CONNECT
CONNECTION REQ.
Intenta activamente establecer una
conexión
SEND
DATA
Envía información
RECEIVE
(ninguno)
Se bloquea hasta que llega un paquete
DATA
DISCONNECT
DISCONNECTION REQ.
Este lado quiere liberar la conexión
abril de 2008
6
3
Mecanismos sobre un
servicio fiable
Diagrama de estado de manejo de una
conexión (simplificado)
abril de 2008
7
Mecanismos sobre un
servicio fiable
Elementos de un protocolo de transporte
• Observación: Los protocolos de transporte se parecen mucho a los
de la capa de enlace. Sin embargo el entorno de trabajo es tan
diferente que las soluciones adoptadas también lo son.
abril de 2008
8
4
Mecanismos sobre un
servicio fiable
Direccionamiento (I)
Hay que localizar completamente el otro extremo:
• La máquina de destino (dirección de red).
• El usuario de destino (proceso o servicio).
• La entidad de transporte (si se pueden usar varias, como TCP
o UDP).
abril de 2008
9
Mecanismos sobre un
servicio fiable
Direccionamiento (II)
• Observación: ¿Cómo podemos saber dónde está el otro extremo?
abril de 2008
10
5
Mecanismos sobre un
servicio fiable
Direccionamiento (III)
•
Podemos tener un servidor en una dirección bién conocida y que maneje una gran cantidad
de servicios.
abril de 2008
11
Mecanismos sobre un
servicio fiable
Direccionamiento (y IV)
• Pero a veces no es posible (imaginemos un proceso con
acceso especial al hardware). Hay que encontrar la
dirección.
• Solución: Utilizar un servidor de direcciones. Pero esto no
es trivial.
• También podemos tener una lista de TSAPs bien
conocidos donde sabemos que se encuentran los servicios
de destino.
abril de 2008
12
6
Mecanismos sobre un
servicio fiable
Multiplexación
• Idea 1: Si la red sólo ofrece un número limitado de CVs o el usuario no quiere
pagar demasiado, utilizar un solo CV para varias conexiones: multiplexación
hacia arriba.
• Idea 2: Si un usuario necesita mucho más ancho de banda del que proporciona un
CV de red, utilizar varios para una sola conexión de transporte: multiplexación
hacia abajo.
abril de 2008
13
Mecanismos sobre un
servicio fiable
Control de flujo y bufereado de TPDUs
Similar a lo visto en la capa de enlace, pero:
• Problema principal: a este nivel puede haber tantas conexiones que
ya no es factible tener reservados los recursos. Necesitamos un
esquema dinámico.
– Si la red ofrece un servicio NO fiable, el emisor debe (además) buferear TPDUs hasta
que sean confirmadas.
– El receptor puede decidir descartar TPDUs si no tiene espacio
– Si la red ofrece un servicio fiable, el emisor aún debe buferear las TPDUs (¿por qué?).
En general se usan mecanismos de ventana de tamaño variable.
abril de 2008
14
7
Mecanismos sobre un
servicio fiable
Establecimiento y liberación de
conexiones
Entidad de
transporte A
Active Open
SYN
Entidad de
transporte B
Entidad de
transporte A
Pasive Open
Active Open
Entidad de
transporte B
SYN
SYN
Active Open
SYN
Para liberar la conexión hay dos modelos:
• Simétrico: Un lado envía la petición y espera a que se confirme.
• Asimétrico: Un lado envía la petición y listo.
Nota: En el segundo pueden perderse datos, si es dúplex. En el primero si el servicio de red
NO es fiable veremos que es imposible de implementar.
abril de 2008
15
Mecanismos sobre un
servicio fiable
Un ejemplo (I)
abril de 2008
16
8
Mecanismos sobre un
servicio fiable
Un ejemplo
( y II)
abril de 2008
17
Mecanismos sobre un
servicio fiable
Resumen
• La Capa de Transporte debe completar la funcionalidad de la capa de red y ofrecer
servicios fiables a la capa de aplicación.
• Su presencia es necesaria sea cual sea el servicio ofertado por la capa de red, ya que se
ejecuta en la máquina de usuario y no en la subred.
• Aunque las necesidades son similares a las vistas en la capa de enlace las soluciones
no lo son.
• Los mecanismos que debe implementar sea el servicio de red fiable o no, incluyen:
– Direccionamiento completo del proceso remoto.
– Multiplexación de las conexiones de transporte sobre las de red.
– Control de flujo y bufereado de TPDUs.
– Establecimiento y liberación de conexiones.
abril de 2008
18
9
La Capa de Transporte
Mecanismos sobre un servicio no
fiable
abril de 2008
Mecanismos sobre un
servicio no fiable
Índice
• Implicaciones de un servicio de red no fiable.
–
–
–
–
Transporte ordenado y retransmisión.
Detección de duplicados.
Control de flujo.
Establecimiento y liberación de conexiones.
• Temporizadores.
• Resumen.
abril de 2008
20
10
Mecanismos sobre un
servicio no fiable
Si el servicio de red no es fiable
• La subred, además de retrasar paquetes, puede perderlos, entregarlos
fuera de secuencia o incluso entregarlos duplicados.
• Esto crea problemas en los mecanismos vistos en el tema anterior y
es necesario plantear modificaciones importantes en algunos
aspectos:
– Transporte ordenado, retransmisión y detección de duplicados.
– Control de flujo.
– Establecimiento y liberación de conexiones.
abril de 2008
21
Mecanismos sobre un
servicio no fiable
Transporte ordenado y retransmisión
• Idea: Numerar los segmentos con números consecutivos para poder ordenar
posteriormente.
• Utilizar protocolos ARQ para forzar retransmisiones de segmentos perdidos.
• Problema: esto requiere utilizar temporizadores. ¿Qué valor de temporización
debe utilizarse?
– Fijo
– Adaptativo
• Otro problema: si un temporizador expira antes de que un segmento llegue a
destino, se producirá un duplicado.
• Pregunta: ¿Puede suponerse que será detectado siempre gracias a su número de
secuencia?
abril de 2008
22
11
Mecanismos sobre un
servicio no fiable
Atacando los duplicados (I)
Entidad de
transporte A
SN(0)
SN(1)
SN(2)
SN(0)
Timeout para SN(0)
Retransmisión SN(0)
SN(3)
Se agota el rango de
números de secuencia.
Se usa de nuevo el 0.
ACK para SN(0), SN(1) y SN(2)
ACK(2)
ACK(3)
SN(0)
Entidad de
transporte B
Llega el viejo SN(0) y es aceptado.
ERROR
Se supone duplicado y se descarta
ERROR
• Solución: Restringir el tiempo de vida de un paquete en la red y utilizar un espacio
de números de secuencia “suficientemente” grande.
abril de 2008
23
Mecanismos sobre un
servicio no fiable
Atacando los duplicados (y II)
• Pero ¿y si alguna de las entidades de transporte cae? ¿dónde continuar la
numeración?
– Esperar un tiempo para la reconexión (un múltiplo del tiempo máximo de vida del
paquete). Este puede ser muy grande en algunos sistemas.
– (Tomlinson 1975 y Sunshine y Dalal 1978) Utilizar un reloj externo y asignar el número
inicial dependiendo de éste. Es necesario vigilar que la numeración no entre en la
región prohibida.
abril de 2008
24
12
Mecanismos sobre un
servicio no fiable
Control de flujo
abril de 2008
25
Mecanismos sobre un
servicio no fiable
Establecimiento de conexiones
• No sólo establecer la conexión de forma fiable, sino acordar los
números de secuencia iniciales (ISN).
• La solución es el acuerdo de tres vías (three-way handshake)
abril de 2008
26
13
Mecanismos sobre un
servicio no fiable
Liberación de la conexión (I)
El problema de los dos ejércitos
abril de 2008
27
Mecanismos sobre un
servicio no fiable
Liberación de la conexión (II)
• Si no existe una solución ¿qué hacer?
• Ser pragmáticos. Utilizar temporizaciones que detectan la mayoría de los casos
y asumir que siempre pueden existir conexiones medio-abiertas (half-open
connections).
abril de 2008
28
14
Mecanismos sobre un
servicio no fiable
Liberación de la conexión (y III)
abril de 2008
29
Mecanismos sobre un
servicio no fiable
Temporizadores
Temporizador de retransmisión
Para retransmitir un segmento no confirmado.
Temporizador de reconexión
Tiempo mínimo entre la liberación de una conexión y el
establecimiento de otra con la misma dirección de
destino.
Temporizador de ventana
Tiempo máximo entre segmentos de ventana.
Temporizador de retransmisión de
segmentos de conexión
Tiempo entre intentos de establecer una conexión
Temporizador de persistencia
Para cancelar una conexión cuando no se confirman
segmentos
Temporizador de inactividad
Para cancelar una conexión cuando no se reciben
segmentos
Temporizador de desconexión
Para cerrar la conexión en el extremo de recepción
abril de 2008
30
15
Mecanismos sobre un
servicio no fiable
Resumen
•
•
•
•
•
•
•
Cuando el servicio de red no es fiable, los mecanismos estudiados en el tema anterior deben
revisarse.
El problema principal es la necesidad de reenviar segmentos que puedan haberse perdido y
secuenciarlos correctamente si se desordenan. Esto produce segmentos duplicados que hay que
poder detectar.
Para ello es necesario utilizar temporizadores de retransmisión y cuidar la asignación de
números de secuencia (utilizando posiblemente un temporizador de reconexión).
El control de flujo mediante ventanas puede tener problemas. Establecer un temporizador de
ventana.
Los números de secuencia iniciales se establecen en la conexión, que ahora debe realizarse
mediante el acuerdo de tres vías.
Para la liberación de la conexión no hay una solución. Hay que ser pragmáticos, utilizar
temporizadores y asumir la existencia posible de conexiones medio-abiertas.
¿Queda algo? ¿Podemos recuperar una conexión en caso de caída de un host donde se dejó?
abril de 2008
31
16
Descargar