Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Principio
Principio
Problema
Implementar un protocolo RDT sobre una capa no confiable. Por ejemplo: TCP es un protocolo RDT que está
implementado sobre la capa de red (IP) que no es confiable.
Generalizando el problema
La capa sobre la que se realiza la comunicación punto a punto puede ser la capa de enlace, dado por un link
(Link-Level Data Transfer Protocol), o una internetwork global (Transport-Level Protocol).
1
3) Construyendo un RDTP
Se asume que el canal que está por debajo es confiable, no hay errores de bits y no se pierden
paquetes.
Sender:
Receiver:
Conclusión: Nada puede salir mal, no hay necesidad para que el receiver envíe paquetes de control al
sender.
Desventajas: Este esquema sirve para presentar el problema de RDT con su estructura, no
sirve a la práctica.
Asumiendo que todos los paquetes se reciben y en orden en que fueron enviados. Pero durante la
transmisión pueden ocurrir errores de bits.
2
Sender:
Es un protocolo Stop-and-Wait, es decir, mientras espera por paquetes ACK o NACK no puede
recibir llamadas de la capa superior y por lo tanto no envía nuevos datos hasta asegurarse de
que el paquete llegó correctamente.
Receiver:
Conclusión:
Ventajas: Plantea el caso de que los paquetes de datos pueden llegar corruptos.
Desventajas:
● No plantea el caso de que los paquetes de control (ACK y NACK) puedan llegar
corruptos.
● Es un protocolo Stop-and-Wait, por lo que es ineficiente.
● Se asume que todos los paquetes se reciben y en el orden en que fueron enviados. Es
para ayudar a plantear de a poco el escenario del problema. No sirve.
3
c) RDT 2.1:
Se asume el mismo canal subyacente que en RDT 2.0. Solo se agrega el Nro. de Secuencia a los
paquetes de datos, es una solución para determinar si el receiver recibe un paquete nuevo o
retransmitido.
Sender:
Receiver:
4
Se envía ACK para confirmar que el paquete llegó correctamente y se reenvía ACK por llegar
corrupto.
Mientras que se envía NACK para indicar que el paquete llegó incorrectamente.
5
Conclusión:
Ventajas:
● Plantea el caso de que los paquetes de datos y de control pueden llegar corruptos.
● Mediante el nro. de secuencia le permite al receiver detectar duplicados de paquetes.
Desventajas:
● No plantea el caso de que los paquetes de control (ACK y NACK) puedan llegar
corruptos.
● Es un protocolo Stop-and-Wait, mientras espera por paquetes ACK o NACK, no puede
recibir llamadas de la capa superior y por lo tanto no envía nuevos datos hasta
asegurarse de que el paquete emitido llegó correctamente.
● Se asume que todos los paquetes se reciben y en el orden en que fueron enviados. Es
para ayudar a plantear de a poco el escenario del problema. No sirve.
Se asume el mismo canal que antes, solo que no se cuenta con respuestas de tipo NACK y se incluye
un número de secuencia en el ACK.
Sender:
6
Receiver:
Escenarios posibles:
7
b) Error de transmisión de ACK1.
Conclusión:
Ventajas:
● Plantea el caso de que los paquetes de datos y control pueden llegar corruptos.
● Introduce la idea de nros de secuencia sobre todos los paquetes de datos y de
control. Permite determinar si el receptor recibe un paquete nuevo o retransmitido, e
identificar que el ACK[i] corresponde al paquete de dato SP[i]. Sin perder funcionalidad al
reemplazar el mecanismo de NACK.
● Los resultados funcionales son prácticamente iguales que en RDT 2.1, solo que el
autómata del receptor contiene 2 transiciones menos.
Desventajas:
● Es un protocolo Stop-and-Wait, mientras espera por paquetes ACK o NACK, no puede
recibir llamadas de la capa superior y por lo tanto no envía nuevos datos hasta
asegurarse de que el paquete emitido llegó correctamente.
● Se asume que todos los paquetes se reciben y en el orden en que fueron enviados. Es
para ayudar a plantear de a poco el escenario del problema. No sirve.
8
d) RDT 3.0:
Sender:
9
Receiver:
El receiver del RDTP 3.0 se mantiene igual que el RDTP 2.2. No se altera.
Escenarios posibles:
10
c) Las del libro:
Conclusión:
Ventajas:
● Primer algoritmo en plantear una solución para un canal subyacente inseguro por pérdida de
paquetes o paquetes corruptos. Primero que sirve de algo.
● Introduce la idea del timer con un tiempo límite. El cuál debe ser calculado mediante probabilidad
de pérdida.
11
Desventajas:
● Timers con límite de tiempo corto introducen duplicados de paquetes.
● Es un protocolo Stop-and-Wait. Es decir, mientras espera por paquetes ACK o NACK, no puede
recibir llamadas de la capa superior y por lo tanto no envía nuevos datos hasta asegurarse de
que el paquete emitido llegó correctamente. No tiene buen rendimiento.
A
modo de ejemplo, si entre 2 hosts existe un enlace R de 1Gbps (10^9 b/s) con un RTT de 30
milisegundos. Al transmitirse un paquete de tamaño L = 1000 bytes (8000 bits) incluyendo
campos del header y datos, el tiempo que toma transmitir el paquete es:
Por lo que si se utiliza menos de 0.001% del enlace, para enviar un paquete de 1000 bytes, tomó
30.008 milisegundos (0.030008 segundos), entonces el throughput efectivo es de 266595,5 bps
= 267 kbs aproximadamente, cuando el enlace es de 1Gbps.
Por lo que esto claramente explica la importancia de los protocolos y como limitan las
capacidades del canal subyacente de la capa física.
12
○ El receiver puede tener que almacenar los paquetes recibidos correctamente.
El sender tiene un buffer de hasta N paquetes enviados y no reconocidos por el receiver. (Se limita por
control de flujo).
ACK ya
recibidos = [0, base-1]
Esperando por ACK = [base, nextseqnum - 1]
Utilizables, todavía no enviados = [nextseqnum, base + N - 1]
No utilizables = [base + N, →]
Por lo tanto, La ventana se va deslizando a la derecha a medida que se reciben ACK. GBN es un
protocolo de ventana deslizante (Sliding window protocol) .
El rango de números de secuencia es [0, 2^K - 1] con k = cantidad de bits de campo en header. Y por
consecuencia se utiliza aritmética en módulo 2^K. De esta forma luego del número de secuencia 2^K -
1, se utiliza el 0.
Nota: RDT 3.0 utiliza aritmética 2^1 (K=1), debido a que el rango es [0, 1]=[0, 2^1 - 1].
Nota: TCP utiliza aritmética 2^32 (K=32), pero cuenta bytes y no paquetes.
13
Sender:
Receiver:
14
Escenarios posibles:
15
Mejora 1: El sender, al recibir ACK[i] debería hacer lo siguiente:
Mejora 2: El receptor ignora paquetes no esperados (Con número de secuencia mayor al esperado),
de esta forma, el receiver nunca va a enviar ACK repetidos innecesariamente y el sender nunca va a
recibir paquetes ACK repetidos que puedan llevar a reiniciar el timer.
16
c) ACK perdido.
d) ACK perdido.
17
Algoritmo con mejoras:
18
Conclusión:
Ventajas:
● Plantear una solución para un canal subyacente inseguro por pérdida de paquetes o paquetes
corruptos.
● Primero en plantear una solución con pipeline o procesamiento de cadena.
● No es un protocolo Stop & Wait como los anteriores. El emisor puede enviar muchos paquetes sin
la necesidad de esperar la confirmación de uno solo.
● Primero en plantear e introducir el concepto de espacio de números de secuencia (mayor cantidad
que solo 0 y 1) y ventana deslizante.
● Como el receptor siempre espera los paquetes según su nro de secuencia, se garantiza que si se
entregó el k-ésimo paquete a la capa superior, entonces los paquetes con nro de sec menor a k
también fueron entregados correctamente.
● Modelo de buffer simple.
● Se entregan en orden los datos.
● El receptor no necesita de un buffer, basta con un índice que identifique al nro de secuencia del
paquete esperado.
● El tamaño de la ventana puede ser igual al tamaño del espacio de números de secuencia menos 1.
Desventajas:
● El emisor necesita un buffer para almacenamiento.
● Se descartan paquetes de datos correctos que no llegan en orden.
● Ante un error se retransmiten todos los paquetes no reconocidos por el emisor. Si la ventana es
grande se produce un problema importante de rendimiento.
● ACK de paquetes recibidos fuera de orden y de paquetes corruptos reinician el buffer
innecesariamente, cuando la idea es agilizar la retransmisión de los datos.
El esquema es similar a GBN, solo que el receiver almacena los paquetes recibidos correctamente en un
buffer.
Se utiliza un temporizador independiente para cada paquete enviado no reconocido por el receiver.
19
El receiver confirma paquetes recibidos correctamente, por más que estén fuera de orden. Los almacena hasta
obtener un lote ordenado completo para entregar a la capa superior.
Sender:
● SendData:
○ Comprueba el siguiente número de secuencia disponible.
○ Si el número de secuencia está dentro de la ventana del Sender →
■ Se empaquetan los datos y se envían, iniciando su respectivo timer[i].
○ Sino, se almacena en un buffer, o se rechaza como en GBN.
● Timeout[i]:
○ Se reenvía el paquete[i] cuyo timer llegó a su fin, luego se reinicia el timer[i].
● rcv_ACK[i]:
○ Si el ACK[i] está dentro de la ventana, se marca el paquete[i] como recibido y se detiene el
timer[i].
○ Si (i == base) →
■ Se desplaza la ventana un lugar a la derecha.
■ Si al mover la ventana, existen paquetes (en buffer de salida) con número de secuencia
que ahora entran en la ventana, se envían y se inician sus respectivos timers.
Receiver:
● rcv_pkt(RP[i])
&& no_corrupt(RP[i])
&& ( base <= i )
&& ( i <= base + N - 1 )
● Se envía ACK[i] al emisor y se almacena RP[i] en el buffer.
● Si (base == i) →
○ Se envían todos los K paquetes almacenados y consecutivos comenzando por base.
○ Se desplaza la ventana K lugares a la derecha.
● rcv_pkt(RP[i])
&& no_corrupt(RP[i])
&& ( base - N <= i )
&& ( i <= base - 1 )
● Se reenvía ACK[i]. Ya que había sido reconocido por el receptor previamente.
20
Escenarios:
1) Pérdida de
paquete SP2:
21
2) Escenarios que muestran el problema del tamaño de la ventana, cuando es muy grande con respecto al
rango.
22
Ejemplo en video: https://www.youtube.com/watch?v=Cs8tR8A9jm8
Conclusión:
Ventajas:
● Cuenta con buffer en el receiver para almacenar los paquetes recibidos correctamente y
no descartarlos ante una eventual pérdida de un paquete anterior como en GBN.
● Cuenta con temporizadores independientes para que un timeout no afecte otros
paquetes.
Desventajas:
● Contar con un temporizador por cada paquete en la ventana es muy caro (Se puede usar
un solo timer de HW para emular N de sw).
23