Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ECP
• Las características del canal no fiable determinan la complejidad del protocolo RDT
2
Transferencia de datos fiable: comenzando
ECP
rdt_rcv(): llamado cuando llega un paquete
al lado receptor del canal
3
Transferencia de datos fiable: comenzando
¿Qué haremos? :
• Desarrollar incrementalmente los extremos emisor y receptor del protocolo de
transferencia de datos fiable (rdt)
• Considerar solo la transferencia de datos unidireccional
Pero la información de control fluirá en ambas direcciones!
• Usar máquinas de estado finito (FSM) para especificar el emisor y el receptor
ECP
siguiente evento
4
Rdt1.0: Transferencia fiable sobre un canal fiable
ECP
emisor receptor
5
Rdt2.0: canal con errores de bit
ECP
6
rdt2.0: Especificación FSM
emisor receptor
ECP
7
rdt2.0: operación sin errores
rdt_send(data)
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
Espera Espera isNAK(rcvpkt) rdt_rcv(rcvpkt) &&
llamada ACK o corrupt(rcvpkt)
udt_send(sndpkt)
de arriba NAK udt_send(NAK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
ECP
deliver_data(data)
udt_send(ACK)
8
rdt2.0: Escenario con error
rdt_send(data)
rdt_rcv(rcvpkt) &&
Espera Espera rdt_rcv(rcvpkt) && corrupt(rcvpkt)
llamada ACK o isNAK(rcvpkt)
de arriba NAK udt_send(NAK)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
ECP
deliver_data(data)
udt_send(ACK)
9
rdt2.0 tiene una falla fatal!
¿Qué ocurre si los ACK/NAK se Manejar duplicados:
corrompen?
• El emisor retransmite el paquete actual si
el ACK/NAK está dañado
• El emisor agrega un número de
• El emisor no sabe que ocurrió en el
receptor! secuencia a cada paquete
• El receptor descarta (no entrega hacia
• No puede retransmitir simplemente:
posible duplicado arriba) el paquete duplicado
ECP
El emisor envia un paquete y espera la respuesta del receptor
10
rdt2.1: El emisor maneja ACK/NAKs dañados
ECP
11
rdt2.1: el receptor maneja ACK/NAKs dañados
ECP
12
rdt2.1: Discusión
Emisor: Receptor:
• #sec agregado al paquete • Debe verificar si el paquete
recibido es duplicado
• Dos #sec (0,1) serán suficientes. El estado indica si el #sec
¿Porqué? esperado es 0 o 1
• Debe verificar si el ACK/NAK • Nota: el receptor no puede
recibido esta dañado saber si su último ACK/NAK
• Dos veces mas estados fue recibido correctamente en
Un estado debe “recordar” si el paquete
el emisor
“actual” tiene #sec 0 o 1
ECP
13
rdt2.2: Un protocolo libre de NAK
ECP
14
rdt2.2: Emisor
ECP
15
rdt2.2: Receptor
ECP
16
rdt3.0: Canal con errores y pérdida
ECP
17
rdt3.0 emisor
ECP
18
rdt3.0 en acción
ECP
19
rdt3.0 en acción
ECP
20
Desempeño de rdt3.0
• rdt3.0 funciona, pero el desempeño es bajo
• Ejemplo:
En un enlace de 1 Gbps, con retardo de propagación de 15 ms, y
tamaño de paquete de 8000 bits:
𝐿 8000𝑏
𝑑𝑡𝑟𝑎𝑛𝑠 = = 9 = 8µ𝑠
𝑅 10 𝑏𝑝𝑠
ECP
21
rdt3.0: operación de parada y espera
𝐿ൗ 0.008𝑚𝑠
𝑈𝑒𝑚𝑖𝑠𝑜𝑟 = 𝑅 = = 0.00027
𝐿
𝑅𝑇𝑇 + ൗ𝑅 30.008𝑚𝑠
ECP
1 PDU de 1KB cada 30 ms → 33KBps (267Kbps) aún sobre un enlace de 1Gbps
El protocolo de red limita el uso de los recursos físicos!
22
Protocolos entubados (encauzados)
Encauzamiento: el emisor permite múltiples paquetes, “en camino”, por confirmar
El rango de números de secuencia debe incrementarse
Buffers en el emisor y receptor
ECP
23
Encauzamiento: utilización mejorada
Incrementa la
utilización
en un factor de 3!
3 × 𝐿ൗ𝑅 0.024
𝑈𝑒𝑚𝑖𝑠𝑜𝑟 = = = 0.0008
𝐿
ECP
𝑅𝑇𝑇 + ൗ𝑅 30.008
24
Protocolos encauzados
Regresar a N: Repetición selectiva:
• El emisor puede tener hasta N paquetes sin • El emisor puede tener hasta N
confirmar en el cauce paquetes sin confirmar en el cauce
• El receptor solo envía ACKs acumulativos • El receptor confirma paquetes
No confirma un paquete si existe un espacio individuales
ECP
25
Regresar a N
Emisor:
• #sec de k bits en encabezado de paquete
• “Ventana” de hasta N, paquetes consecutivos sin confirmar permitidos
ACK(n): Confirma todos los paquetes hasta #sec n inclusive – “ACK acumulativo”
Puede recibir ACKs duplicados (ver receptor)
Timer para cada paquete en camino
timeout(n): Retransmite el paquete n y todos los paquetes con #sec mayor en la ventana
ECP
26
Regresar a N: FSM extendido del emisor
ECP
27
Regresar a N: FSM extendido del receptor
ECP
28
Regresar a N en acción
ECP
29
Repetición selectiva
• El emisor solo reenvía los paquetes para los cuales no se recibió un ACK
Un timer por cada paquete no confirmado en el emisor
ECP
30
Repetición selectiva: ventanas de emisor y receptor
ECP
31
Repetición selectiva
Emisor Receptor
Paquete n en [rcvbase, rcvbase+N-1]
Datos desde arriba :
enviar ACK(n)
• Si el siguiente #sec disponible esta en la Fuera de orden: buffer
ventana, enviar paquete En orden: entregar (también entregar
paquetes ordenados en buffer),
Timeout(n):
avanzar la ventana al siguiente
• Reenviar paquete n, reiniciar timer paquete por recibir
Paquete n en [rcvbase-N,rcvbase-1]
ACK(n) en [sendbase,sendbase+N]:
Paquete duplicado. Enviar ACK(n)
• Marcar paquete n como recibido En otro caso:
• Si n es el paquete menor sin confirmar, Ignorar paquete
avanzar la base de la ventana al
siguiente #sec sin confirmar
ECP
32
Repetición selectiva en acción
ECP
33
Repetición selectiva: dilema
Ejemplo:
• #’s sec: 0, 1, 2, 3
• Tamaño de ventana=3
ECP
34