Protocolos de Red: IP, TCP y UDP
Protocolos de Red: IP, TCP y UDP
R2
R3
R4
Red B R6
Red C
Conmutación
Reenviar los bits por el camino
Servicios posibles
Circuitos (telefonía, longitud de onda)
Paquetes
Cada paquete del mismo flujo
Circuitos virtuales …
sigue la misma ruta
Datagramas …
Cada paquete es conmutado
independientemente
Red D
Red A
R1
R5
R2
R3
R4
Red B R6
Red C
Características de IP
Nivel de red
Servicio de datagramas, sin conexión
Routing en función de la dirección destino
No fiable
Best effort
Provee:
Independencia de las tecnologías de cada red
Direccionamiento global
TOS
Fragmentación y reensamblado
Otros aspectos
Direccionamiento
Nivel 2: local, plano ⇒ no escalable
Nivel 3: según lugar, jerárquico ⇒ escalable
Direcciones temporales
Network Address Translation para reducir direcciones
Routing
Basado en la dirección destino
La red se descompone en dominios
Routing interdomain : algoritmo path-vector
Routing intradomain : link state o distance vector
Más
Multicast; Ad-hoc; P2P; Sensores, etc
Routing en IP
Llevado a cabo por un proceso
que se ejecuta en cada router
(cálculo distribuido) …
Resultado: una “tabla de rutas”
en cada router …
Red D
Routing
Routing
Red A process
process
R1
R5
Routing
Routing process
process R2
R3
R4
Routing
process
Red B RoutingR6
Red C
process
Routing en IP
Llevado a cabo por un proceso
que se ejecuta en cada router Destino Next-hop
Red D
Routing
Routing
Red A process
process if1
if0 R1 if1 R5
if0
Routing
Routing if1 process
process if0 R2 if0 if1
if2
R3
R4 if2
if1 if0 Routing
process
Red B RoutingR6 if1
Red C
process
Forwarding en IP
Tarea de “reenviar” por el interfaz
adecuado el paquete recibido Destino Next-hop
En base a la tabla de rutas del router Red A IP de if1 de R1
La tabla indica cuál es el siguiente router Red B IP de if0 de R3
(next-hop) en el camino Red C IP de if0 de R4
El router tendrá conectividad a nivel 2 Red D IP de if0 de R4
con él … …
Red D
Routing
Routing
Red A process
process if1
if0 R1 if1 R5
if0
Routing
Routing if1 process
process if0 R2 if0 if1
if2
R3
R4 if2
if1 if0 Routing
process
Red B RoutingR6 if1
Red C
process
Encapsulación
RedRedRed
Enlace Enlace
Aplicación Aplicación
Físico Físico
Transporte Transporte
Red Red
Enlace RedRedRed Enlace
Físico Enlace Enlace Físico
Físico Físico
R1
R5
R2
R3
R4
R6
Algunas características de IP
Muy bueno en escalabilidad
Millones de nodos
Tablas de rutas deben ser “pequeñas”
Actualizaciones deben ser “manejables”
Bueno ante cambios de topología
Los routers calculan nuevas rutas
Los cambios no afectan a la mayoría
Pobre rendimiento
Utilización de los enlaces no se balancea
Las actualizaciones no son muy rápidas
Algunos flujos deberían tener garantías de calidad
No detecta errores de configuración
No se protege ante ataques
Representación de las direcciones
bit 0 bit 31
Dirección IP
10000010110011101011100001010101 = 2194585685
130 206 184 85
[Link]
[Datos]
Contenido
Internet Protocol UDP
Características TCP
IP en LAN Ethernet (ARP)
Características
Direccionamiento (subredes, Proxy-
ARP, CIDR) Gestión de conexiones
Fragmentación y reensamblado Control de flujo
ICMP Retransmisiones
Enrutamiento en Internet Control de congestión
Distance-Vector
Link-State
Path-Vector
Lecturas recomendadas
[Kurose05] 5.4
[Stevens] 4
Contenido
Introducción
ARP
Motivación
Funcionamiento
Ejemplos
Comunicación entre hosts en distintas
LANs
Introducción
Nivel de red permite que paquetes lleguen de
unas redes a otras
Dentro de cada red depende de la tecnología
(nivel Host a Red)
Veamos cómo se realiza la comunicación en el
caso de una LAN Ethernet …
Red D
Red A
R1
R5
R2
R3
R4
Red B R6
Red C
Introducción
Nivel de red permite que paquetes lleguen de
unas redes a otras
Dentro de cada red depende de la tecnología
(nivel Host a Red)
Veamos cómo se realiza la comunicación en el
caso de una LAN Ethernet …
Red D
R5
Direcciones IP y MAC
Direcciones IP:
Direcciones del nivel de red, de 32 bits Aplicación
Empleadas para que el datagrama llegue a la red
IP destino Transporte
Lógicas
Red
Direcciones MAC (direcciones LAN o físicas o
Ethernet): Enlace
Para que una trama llegue de un interfaz a otro Físico
físicamente conectado en la misma red, de 48
bits en la mayoría de LANs
Red D
A fuego en la ROM de la tarjeta
Físicas R5
Direcciones MAC y ARP
Cada tarjeta en la LAN tiene una dirección MAC única
PC1
Dirección de broadcast = FF-FF-FF-FF-FF-FF
[Link]
PC2
R5
LAN
[Link] [Link] = tarjeta
[Link]
PC3
ARP: Address Resolution Protocol
¿Cómo enviar un paquete IP Ejemplo: Paquete IP de
de un nodo a otro de la [Link] a [Link]
misma red? Deberá ir en una trama
PC1
Ethernet…
[Link]
[Link]
([Link])
PC2 dst_addr = IPPC3
R5
([Link])
LAN src_addr = IPPC1
[Link] [Link]
[Link]
PC3
[Link] [Link]
ARP: Address Resolution Protocol
¿Cómo enviar un paquete IP Ejemplo: Paquete IP de
de un nodo a otro de la [Link] a [Link]
misma red? Deberá ir en una trama
PC1
Ethernet…
[Link] Ethertype: 0x0800 (IP)
[Link]
MAC origen la de la tarjeta que
envía
PC2
MAC destino…
R5
LAN
[Link] [Link] [Link]
[Link] [Link]
PC3
[Link] [Link]
src_hwaddr = MACPC1
([Link])
?
0x0800
ARP: Address Resolution Protocol
¿Cómo enviar un paquete IP ARP
de un nodo a otro de la 1. ARP Request: El emisor envía
misma red? una trama ARP a la dirección
MAC de broadcast
PC1 ([Link]). Contiene
[Link] la IP destino
[Link]
2. Todos los interfaces de la LAN
PC2
leen esa trama…
R5
LAN
[Link] [Link] ¿Cuál es la MAC del interfaz
con IP [Link]?
[Link] ([Link])
PC3
[Link] [Link] dst_hwaddr = MAC Broadcast
([Link])
src_hwaddr = MACPC1 0x0806
ARP: Address Resolution Protocol
¿Cómo enviar un paquete IP ARP
de un nodo a otro de la 3. ARP Reply: El interfaz con esa
IP responde con otra trama
misma red? ARP…
PC1
[Link]
[Link]
PC2
R5
LAN
[Link] [Link]
Yo tengo la IP [Link] y
[Link] ([Link])
mi MAC es [Link]
PC3 dst_hwaddr = MACPC1
[Link] [Link]
([Link])
src_hwaddr = MACPC3 0x0806
ARP: Address Resolution Protocol
¿Cómo enviar un paquete IP Ahora puede colocar la MAC
de un nodo a otro de la destino…
misma red? Y enviarla…
PC1
[Link] Entrega directa
[Link]
PC2
R5
LAN
[Link] [Link] [Link]
[Link] [Link]
[Link] [Link]
PC3
src_hwaddr = MACPC1
([Link])
?
dst_hwaddr = MACPC3
([Link]) 0x0800
Formato de la PDU de ARP
hard size
EtherType
prot size
Dest Src hard prot op sender sender target target
FCS
Addr Addr type type Ether addr IP addr Ether addr IP addr
Bytes: 6 6 2 2 2 11 2 6 4 6 4 4
Trailer
Cabecera Ethernet Ethernet
0x0800
0x0806
[Link] [Link] [Link] 65.123. [Link] 65.123.
FCS
1 6 4 1 [Link] 67.42 [Link] 67.54
ARP Request [Link] [Link]
0x0800
0x0806
FCS’
ARP Reply [Link] [Link] [Link] 65.123. [Link] 65.123.
[Link] [Link]
1 6 4 2 [Link] 67.54 [Link] 67.42
Aplicación
Red IP
Enlace ARP
Físico
ARP: Address Resolution Protocol
¿Y si el destino está en Entregar el paquete a un router en
distinta red? … su red:
Averiguar la MAC del interfaz del
[Link] router: ARP …
PC1 Entrega el paquete IP al router…
[Link]
[Link]
[Link]
PC2 ([Link])
R5 0
1
([Link]) dst_addr = IPPC4
LAN src_addr = IPPC1
[Link]
[Link]
[Link]
[Link]
[Link]
PC3
dst_hwaddr = MACR5,if0
([Link])
0x0800
[Link]
src_hwaddr = MACPC1
[Link]
PC4 ([Link])
ARP: Address Resolution Protocol
¿Y si el destino está en El router, como un host, repite el
distinta red? proceso:
Calcula la MAC del siguiente
[Link] salto/destino …
PC1 Envía la trama …
[Link]
[Link]
[Link]
Entrega indirecta
PC2 ([Link])
R5 0
1
([Link]) dst_addr = IPPC4
LAN src_addr = IPPC1
[Link]
[Link]
[Link]
[Link]
[Link]
PC3
src_hwaddr = MACPC4
([Link])
0x0800
[Link]
src_hwaddr = MACR5,if1
[Link]
PC4 ([Link])
Contenido
Internet Protocol UDP
Características TCP
IP en LAN Ethernet (ARP)
Características
Direccionamiento (subredes,
Proxy-ARP, CIDR) Gestión de conexiones
Fragmentación y reensamblado Control de flujo
ICMP Retransmisiones
Enrutamiento en Internet Control de congestión
Distance-Vector
Link-State
Path-Vector
Lecturas recomendadas
LAN B R6
LAN C
Direccionamiento Classful
Se pensó que podría haber redes de diferente tamaño (número de
hosts)
Se crearon 3 “tipos” de redes: clase A, clase B y clase C
Las direcciones IP tendrán 2 partes:
Identificador de la red (network ID) …
Identificador del host (host ID) …
bit 0 bit 31
Network ID Dirección IPHost ID
LAN D
LAN A
R1
R5
Backbone
R2
R3
R4
LAN B R6
LAN C
Clase A
Network ID: Host ID:
8 bits, primero a 0 (…) 24 bits (…)
Primer byte: 0 - 127 (…) Más de 16M direcciones!!
50% de las direcciones
Redes “MUY” grandes
bit 0 bit 31
0 Network ID DirecciónHost
IP ID
LAN D
LAN A
R1
R5
Backbone
R2
R3
R4
LAN B R6
LAN C
Clase B
Network ID: Host ID:
16 bits, primeros a 10 (…) 16 bits (…)
Primer byte: 128 - 191 (…) 64K direcciones
16K redes
25% de las direcciones Redes grandes
bit 0 bit 31
10 Network ID Dirección IP Host ID
LAN D
LAN A
R1
R5
Backbone
R2
R3
R4
LAN B R6
LAN C
Clase C
Network ID: Host ID:
24 bits, primeros a 110 (…) 8 bits (…)
Primer byte: 192 - 223 (…) 256 direcciones
2M redes
12.5% de las direcciones Redes pequeñas
bit 0 bit 31
110 NetworkDirección
ID IP Host ID
LAN D
LAN A
R1
R5
Backbone
R2
R3
R4
LAN B R6
LAN C
¿Y el resto de direcciones?
Clase D: Clase E:
Primeros bits a 1110 Reservadas para futuro uso
Primer byte: 224 - 239 Reparto en clases:
Grupos multicast
A
B C D E
bit 0 bit 31
1110 Grupo Multicast
1111
LAN D
LAN A
R1
R5
Backbone
R2
R3
R4
LAN B R6
LAN C
Direcciones especiales
Dirección de red Redes reservadas:
0
Host ID = 0s
127 (loopback) (…)
Ej: [Link]
10 (privada)
Dirección de broadcast 169.254 (no IP)
de red (…) 172.16 a 172.31 (privada)
Host ID = 1s 192.0.2 (TEST-NET)
192.168.0 a 192.168.255
Ej: [Link]
(privada)
Broadcast limitado 192.18.0 a 192.19.255
[Link] (pruebas prestaciones)
App App
Transporte
Red (IP)
Enlace
loopback
Direccionamiento Classful
¿Por qué así?
Routers emplean el Network ID para la decisión de reenvío
bit 0 bit 31
Network ID DirecciónHost
IP ID
src_addr=IPH
dst_addr=IPD IPD
H D if0
R1
gw
if1
IPH IPgw,if0
src_hwaddr=MAC H
dst_hwaddr=MAC D
Direccionamiento Classful
Envío de paquetes desde los hosts
Tienen configurado:
Su dirección IP (IPH)
Dirección IP del router de salida de su LAN en el interfaz conectado a la
misma (IPgw)
Pueden averiguar el NetID de su LAN a partir de su IP
Dada la IPD del destino al que desean enviar un paquete :
Calculan el NetID
¿Es el mismo que el de mi red?
Sí: está en mi red, se lo envío directamente (a su MAC) … …
No: está en otra red, se lo envío al router (a la MAC del router) … …
src_addr=IPH
dst_addr=IPd
H D if0
R1
gw
if1
dst_hwaddr=MAC gw,if0
Direccionamiento Classful
Reenvío de paquetes en los routers
Sin estado. Decisiones paquete
Sí: Es una ruta a ese host, lo
a paquete.
envía según indica la fila
Tienen configurado:
No: Calcula el NetID.
IP de cada uno de sus
interfaces Busca una ruta a esa red
Tabla de rutas Sí: Es una ruta a esa red, lo
envía según indica la fila
Dada IPD que no es ninguna de No: Busca en la tabla una ruta
sus direcciones IP: por defecto. ¿Encuentra una?
Busca en la tabla fila t.q. Sí: Lo envía según indica la fila
“Destino” = IPD No: No sabe cómo hacer llegar
el paquete al destino. Lo
descarta (lo tira)
Destino Next-hop Interfaz
R1 R5
R2
R3
R4
R6
Problemas del esquema Classful
Las redes pueden llegar a ser muy grandes
Clase A:
Direcciones para millones de hosts
Difícil que una tecnología de LAN soporte esa cifra de
máquinas conectadas
Situaciones en que hace falta “partir” la red:
LANs en edificios distantes (enlaces punto-a-punto)..
LANs de diferentes tecnologías …
Exceder límites tecnológicos (número de hosts,
distancias, etc)
Congestión por comunicación entre ciertos pares de
hosts …
Excesivo tráfico de broadcast a nivel de enlace
Una organización con más de una LAN
Un NetworkID para cada una
Pro:
No requiere modificaciones
Cons:
Crecen las tablas de rutas
Se propaga al exterior información interna
Ruta a LAN C
LAN C
Una organización con más de una LAN
Un solo NetworkID y
asignar direcciones a los hosts sin
tener en cuenta las diferentes LANs
(“transparent subnets”)
Proxy ARP
particionar el espacio de direcciones
para las diferentes LANs (“explicit
subnets”)
Modificar implementación de IP
Proxy ARP
También llamado el “ARP Hack”
PC1 desea enviar un paquete IP a PC2
PC1
Para PC1 ambos están en la misma LAN
Manda un ARP Request… … ?
Router sabe que PC2 está en otro
segmento …
Router responde al ARP con su
MAC… PC2
bit 0 bit 31
Network ID Subnetwork ID
Dirección IP
Host ID
Host ID
ExtendedNetworkID
111……………………………111 00………………00
Máscara
Subnetting
Algunas restricciones:
SubnetworkID ≠ 0s (“this” network)
SubnetworkID ≠ 1s (“all” subnetworks) ⇒ Al menos 2 bits
Misma máscara en todas las subredes de la misma red (FLSM)
En cada subred:
Dirección de la subred (HostID=0s)
Dirección de broadcast de la subred (HostID=1s)
bit 0 bit 31
Network ID Subnetwork ID
Dirección IP
Host ID
Host ID
ExtendedNetworkID
111……………………………111 00………………00
Máscara
Subnetting: Ejemplo
LAN: [Link] (clase ?)
Queremos al menos poder conectar 1000 máquinas en
cada subred
2 subredes ⇒ mínimo número de bits? …
1000 máquinas ⇒ mínimo número de bits? …
¿Y si hay bits “sobrantes”?…
Por ejemplo 4 bits para el Subnetwork ID …
bit 0 bit 15 bit 31
Network ID Subnetwork ID
Dirección IP
Host ID
Host ID
ExtendedNetworkID
…
135.100 Al menos 2 bits Al menos 10 bits
11111111111111111111000000000000
Máscara con 20 “1s” y 12 “0s” = [Link]
Subnetting: Ejemplo
Direcciones de subred:
1000011101100100 0001 000000000000
Hosts: [Link] a [Link]
1000011101100100 0010 000000000000
Hosts: [Link] a [Link]
Máscara: [Link]
Subred: [Link]
[Link]
[Link]
Subred: [Link]
Subnetting
Envío de paquetes desde los hosts
Tienen configurado:
Su dirección IP (IPH)
La máscara de subred
Dirección IP del router de salida de su LAN en el interfaz conectado a la misma (IPgw)
Pueden averiguar el Extended Network ID de su LAN a partir de su IP:
[Link] = 10000111011001000010001101000011
[Link] = 11111111111111111111000000000000 (AND)
ExtendedNetID = 10000111011001000010000000000000 = [Link]
Dada la IPD del destino al que desean enviar un paquete :
Aplica (AND) la máscara de subred
¿El resultado es el ExtendedNetworkID de mi subred?
Sí: se lo envío directamente (a su MAC)
No: está en otra subred o en otra red,
se lo envío al router (a la MAC del router)
src_addr=IPH
dst_addr=IPD IPD
H D if0
R1
gw
if1
IPH
src_hwaddr=MAC H
IPgw,if0 IP’D
dst_hwaddr=MAC D ó gw,if0
Subnetting
Reenvío de paquetes en los routers
Tienen configurado:
¿Encuentra ese identificador de
IP en cada uno de sus
interfaces red/subred en su tabla de rutas?
Máscara en cada uno Sí: lo envía según indica la ruta
Tabla de rutas No: Busca en la tabla una ruta por
defecto
IPD que no es ninguna de sus
direcciones IP ¿Encuentra una?
Calcula el NetworkID de la red a Sí: Lo envía según indica la
ruta
la que pertenece (classful)
No: Descarta el paquete
¿Tiene un interfaz en esa red?
No: Red destino identificada
Sí: Toma la máscara del interfaz
Red B
que tiene en esa red Subred B.1
Calcula el ExtendedNetworkID Backbone
Subred B.3
Subnetting
Ejemplo: IPd=[Link]
Destino Next-hop if
[Link] (B) [Link] (R2) 1
[Link]
[Link]
[Link]
…
R1 (otro)
(otro)
(otro)
…
0
0
2
…
Red B
R1
Subred B.1
Backbone
R2
R3
Subred B.2
Red A [Link]
Subred B.3
Subnetting
Ejemplo: IPd=[Link]
…
-
-
1
2
3
…
Red B
R1
Subred B.1
Backbone
R2
R3
Subred B.2
Red A [Link]
Subred B.3
Subnetting
Ejemplo: IPd=[Link]
…
-
-
1
2
3
…
Red B
R1
default
R3
[Link] (B.2)
[Link] (B.3)
-
[Link] (R2)
[Link] (R2)
1
0
0
R2
R3
Subred B.2
Red A [Link]
Subred B.3
Lecturas recomendadas
[Forouzan03] 5.1-5.3
RFC 1519
Contenido
Evolución de los esquemas de
direccionamiento
VLSM
Supernetting
CIDR
Problemas con Subnetting
Todas las subredes deben emplear la misma máscara
Subredes de tamaño heterogénero ⇒ desaprovechar direcciones
Ejemplo:
Red [Link] Red B
Se crean 3 subredes
B.1: Al menos 50 hosts Backbone Subred B.1
Subred B.2
Subred B.3
Subnetwork ID host ID
193.65.67.
Network ID Host ID
VLSM
Subnetting = FLSM (Fixed Length
Subnet Masks)
FLSM es “one-size-fits-all”
¿Cómo ajustar mejor el tamaño de
cada subred? Red B
VLSM = Variable Length Subnet
Masks Backbone Subred B.1
Ejemplo: R2
B.1 50 hosts ⇒ HostID = 6 bits
193.65.67. [ 00 XXXXXX ] R3
B.2 20 hosts ⇒ HostID = 5 bits Subred B.2
193.65.67. [ 01 0 XXXXX ]
B.3 20 hosts ⇒ HostID = 5 bits
193.65.67. [ 01 1 XXXXX ]
Subred B.3
Quedan sin asignar:
193.65.67. [ 1X XXXXXX ]
VLSM (Ejemplo)
B.1 50 hosts ⇒ HostID = 6 bits
193.65.67. [ 00 XXXXXX ]
Dir. Red = [Link]
Máscara = [Link]
Red B
B.2 20 hosts ⇒ HostID = 5 bits
193.65.67. [ 01 0 XXXXX ] Subred B.1
Backbone
Dir. Red = [Link]
Máscara = [Link] R2
B.3 20 hosts ⇒ HostID = 5 bits
R3
193.65.67. [ 01 1 XXXXX ]
Dir. Red = [Link] Subred B.2
Máscara = [Link]
Quedan sin asignar:
193.65.67. [ 1X XXXXXX ]
Subred B.3
Dir. Red = [Link]
Máscara = [Link]
VLSM
Cada subred puede tener una máscara diferente
Las rutas en la tabla de rutas deben incluir la máscara
Red B
R2
R3
Subred B.3
Supernetting
El problema
Clases A y B casi agotadas
Muchas redes clase C pero pequeñas (256 direcciones)
Ejemplo:
Red para 1000 hosts
Clase C: insuficiente
Clase B: ¡ desperdicia más de 60.000 direcciones (98%) !
Solución: Asignar varias redes de Clase C
Una ruta para cada Clase C: Explosión de rutas
¿ Cómo evitarlo ?
Supernetting
¿Cómo?
Asignar las redes formando un bloque
Redes consecutivas
Sin “huecos”
Ejemplo
1000 hosts ⇒ 4 redes clase C ⇒ 4 rutas (…)
[Link] = 11001000 00101101 01000000 00000000
[Link] = 11001000 00101101 01000001 00000000
[Link] = 11001000 00101101 01000010 00000000
[Link] = 11001000 00101101 01000011 00000000
Resultado (…):
Red [Link], Máscara de Superred:
[Link] = 11111111 11111111 11111100 00000000
Una sola ruta (…)
Máscaras en las tablas de rutas
CIDR
Classless InterDomain Routing
Respuesta a los problemas de:
Agotamiento de direcciones ¡¡Problema
Crecimientosin resolver!!
exponencial
Crecimiento de tablas de rutas (…)
Junta VLSM y Supernetting
Las clases (A, B y C) dejan de tener
significado
Un bloque de direcciones viene
dado por:
Dirección de red
Máscara
Slash notation = CIDR notation: Ejemplos:
A.B.C.D/n 11001011 01100001 00000010 00000000
[Link]/24
A.B.C.D = dirección de red (prefix)
11001011 01100001 00000010 11000000
n = prefix length ⇒ máscara con n
[Link]/26
bits a 1
11001011 01100001 00000000 00000000
Evolución de las rutas (… …) [Link]/18
CIDR
Permite: Necesita:
Asignar redes más ajustadas al Rutas deben llevar máscara
tamaño necesario
El protocolo de enrutamiento debe
Bloque puede estar en cualquier transportar las máscaras
rango disponible (ignora clases)
“Resumir” (summarization) varias Debería hacerse un reparto
rutas en una (≈Supernetting) manteniendo jerarquía
Ya no existe un “Subnetwork ID” Regional Internet Registries (RIR):
Ya no hay que eliminar subred 0’s RIPE NCC ([Link])
Broadcast a subredes obsoleto ⇒ Europa, Oriente Medio, Asia Central,
se puede usar la subred 1’s África norecuatorial
ARIN ([Link])
América, parte del Caribe y África
subecuatorial
Redes privadas:
[Link]/8 APNIC ([Link])
[Link]/12 Asia y Pacífico
[Link]/16 LACNIC ([Link])
América Latina y Caribe
CIDR
¿Cómo actúan los hosts y los routers?
Tienen configurado: Destino Máscara Next-hop Interfaz
IP en cada uno de sus interfaces
[Link] Máscara IP_next If X
Máscara en cada uno … … … …
Tabla de rutas
IPD que no es ninguna de sus direcciones IP
La máscara no tiene por qué ser la de una red final (summaries)
Comprueba con cada ruta si lleva hacia IPD:
( (IPD AND Máscara) == [Link] ) ? válida : no válida
¿ Ninguna ruta es válida ? ⇒ descarta paquete
Escoge la ruta válida con prefijo más largo (máscara con más
1’s)
Longest Match
CIDR
Ejemplo: IPd=[Link]
Destino Next-hop if
[Link]/17 [Link] (R2) 1
…
R1
[Link]/18
[Link]/18
(otro)
(otro)
…
0
2
…
R1
Red B
R4 Backbone
R2
R3
Red A Red C
[Link]
Red D
CIDR
Ejemplo: IPd=[Link]
Destino Next-hop if
Destino Next-hop if
[Link]/20 - 1
[Link]/17 [Link] (R2) 1
R1 R2
[Link]/21 [Link] (R3) 1
[Link]/18 (otro) 0 [Link]/18 - 2
[Link]/18 (otro) 2 [Link]/23 - 3
… … … [Link]/10 [Link] (R4) 4
[Link]/0 [Link] (R1) 0
R1
Red B
R4 Backbone
R2
R3
Red A Red C
[Link]
Red D
CIDR
Ejemplo: IPd=[Link]
Destino Next-hop if
Destino Next-hop if
[Link]/20 - 1
[Link]/17 [Link] (R2) 1
R1 R2
[Link]/21 [Link] (R3) 1
[Link]/18 (otro) 0 [Link]/18 - 2
[Link]/18 (otro) 2 [Link]/23 - 3
… … … [Link]/10 [Link] (R4) 4
[Link]/0 [Link] (R1) 0
R1
[Link]/0 R3
[Link]/21 -
[Link] (R2)
1
0
R2
R3
Red A Red C
[Link]
Red D
Un par de detalles sobre los resúmenes
Ventajas Desventajas
Menos memoria Menor precisión
Menos CPU Puede crear asimetrías (…)
Menos BW en updates
Esconde inestabilidades (…) [Link]/18
[Link]/28 [Link]/25
[Link]/28
[Link]/28
[Link]/28
[Link]/28
[Link]/28
[Link]/28 [Link]/18
[Link]/28
Contenido
Internet Protocol UDP
Características TCP
IP en LAN Ethernet (ARP)
Características
Direccionamiento (subredes, Proxy-
ARP, CIDR) Gestión de conexiones
Fragmentación y reensamblado Control de flujo
ICMP Retransmisiones
Enrutamiento en Internet Control de congestión
Distance-Vector
Link-State
Path-Vector
Lecturas recomendadas
[Forouzan03] 8.2, 9
[Stevens] 8
Contenido
Fragmentación y reensamblado
Necesidad
Implementación
Problemas
ICMP
Características generales
Condiciones generales de envío
Mensajes
Traceroute
Fragmentación y Reensamblado
Necesidad
El nivel de enlace impone unos
límites al tamaño
Fragmentación:
MTU = Maximum Transfer Unit in: un datagrama grande
Un datagrama IP es dividido dentro out: n paquetes más pequeños
de la red (…)
Un datagrama se convierte en varios MTU=1500 R1
paquetes
R4 Red B
Hosts y routers fragmentan MTU=576
Tam 0
MF Offset
Ident =0 =0 Datos
Tam 1
MF Offset MF
Ident =1 =0 Datos 1 Ident =0
Offset Datos 2
Tam 2 Offset = Tam1/8
Offset
Ident
MF
=1 =0 Datos 3 Ident
MF
=1 Offset Datos 4
Offset = Tam2/8
Reensamblado
Implementación
Buffer
MF
Ident =0
Offset Datos 2
Offset = Tam1/8
Offset
Ident
MF
=1 =0 Datos 3
Ident
MF
=1
Offset Datos 4
Offset = Tam2/8
Situaciones de “error”
Bit DF:
En la cabecera IP
DF==1 ⇒ routers no pueden fragmentar el paquete
(Tam>MTU)&&(DF==1) ⇒ lo descarta y devuelve al host
origen un paquete indicando el error (ICMP)
Reensamblado:
Inicia un timer con el primer fragmento que recibe
Si caduca el timer sin tener todos los fragmentos descarta
todo lo recibido y devuelve al origen un paquete indicando el
error (ICMP)
Problemas de la fragmentación
Menor cociente Datos/Cabeceras
Añade más carga a los routers (IPv6 la elimina)
Si se pierde un fragmento:
El receptor no puede recomponer el datagrama
Tira todos los fragmentos recibidos
Hasta que no se reciba todo el datagrama no se pueden
pasar los datos al nivel de transporte (mayor retardo)
Características generales
Internet Control Message Mensajes transportados dentro
Protocol (RFC 792) de datagramas IP
Para comunicar mensajes de El destino es la dirección del
error y otra información del nivel paquete IP que generó el error
de red Parte del nivel IP
Estructura general del mensaje
(…):
Cabecera IP
Datos IP
Características generales
Internet Control Message Mensajes transportados dentro
Protocol (RFC 792) de datagramas IP
Para comunicar mensajes de El destino es la dirección del
error y otra información del nivel paquete IP que generó el error
de red Parte del nivel IP
Estructura general del mensaje
(…):
0 15 16 32
Cabecera IP
Aplicación
Enlace ARP
Físico
Clases de mensajes ICMP
Mensajes de Error:
Destino inalcanzable
Redirect
Tiempo excedido
Source Quench
Problema de parámetros
Mensajes de pregunta (query):
Echo
Router Advertisement
Timestamp
Información
Address Mask
Condiciones generales de envío
Para evitar tormentas de errores
Nunca se generan ICMPs de error en respuesta
a:
Un ICMP de error
Un datagrama destinado a una IP de broadcast o
multicast
Un broadcast (o multicast) a nivel de enlace
Un fragmento que no sea el primero
Un datagrama cuya IP origen no sea single-host:
loopback, broadcast, multicast
Mensajes ICMP
Echo request/reply (query) (PING)
tipo = 8 (request) o 0 (reply), código = 0
Servidor debe hacer echo del paquete (incluidos los datos)
Obligatorio de implementar (generalmente en el kernel)
0 15 16 32
type=8 code checksum
Identificador Número de secuencia
Datos (opcional)
Mensajes ICMP
Destino inalcanzable (error)
tipo = 3
Si según la tabla de rutas no se puede llegar al
destino, host/router debe enviarlo (…)
0 15 16 32
type=3 code checksum
0
0 15 16 32
type=3 code checksum
0
0 15 16 32
type=11 code checksum
0
if1 if1
if0 R1 R5
if0
if0
if1 if1
if0 R1 R5
if0
if0
if1 if1
if0 R1 R5
if0
if0
if1 if1
if0 R1 R5
if0
if0
Estructura de Internet
Funciones del nivel de red
Forwarding (data plane)
Routing (control plane)
Principio de optimalidad
Si router J está en el camino
óptimo desde I a K entonces
el camino óptimo de J a K
está en la misma ruta (…)
Si existiera una ruta mejor de
K J I
J a K se podría concatenar
con el de I a J
El conjunto de rutas óptimas a
un destino es un árbol = sink
tree (…)
Árbol ⇒ sin lazos (loops)
¿Camino óptimo?
1
1
Shortest path 1 1
1
¿Cómo medirlo? 1
1 1
Número de saltos 1 1 1
1 1
1
Distancia geográfica 1 1 1
1 3
Retardo 1 1 7
2 3
Peso de cada vértice: 2 4
2 2 3
BW 4
4 2 1
Tráfico medio 33 3 1 1
102
Coste (€€) 56 2 3 3
12 40
Longitud media de cola 56
5 10 20
Combinación 25
67 10
20
3 5 1
22 37 25
Construcción de las tablas de rutas
¿Estática o dinámica? ¿Información global o
descentralizada?
Estática: Global:
Configuración manual Todos los routers tienen
Cambios lentos información completa de la
topología y los costes de los
Dinámica: enlaces
Algoritmos “link state”
Mediante un protocolo
Descentralizada:
de enrutamiento
El router conoce solo a sus
Escalabilidad vecinos
Adaptabilidad Mediante un proceso iterativo
Complejidad intercambia esa información
con sus vecinos
Algoritmos “distance vector”
Enrutamiento jerárquico
Escala: con centenares de Autonomía administrativa
millones de destinos Cada administrador de
¡No se pueden tener red quiere controlar el
todos los destinos en las enrutamiento dentro de
tablas de rutas! su red
Memoria
CPU
BW para informar de rutas
Enrutamiento jerárquico
Agrupar routers en Comunicar información de
regiones: “Autonomous enrutamiento entre los AS
Systems” (AS) EGP = Exterior Gateway
Routers de un AS un solo Protocol
administrador
Entre los border routers o
Normalemente los routers
routers frontera de los AS
en el mismo AS emplean el
mismo protocolo de
enturamiento Border router
IGP = Interior Gateway AS 2
Protocol
AS 1
Routers en diferentes AS
pueden emplear diferente
IGP
Interior oculto
AS 3
Enrutamiento jerárquico
Border router IGP da las rutas internas
La tabla de rutas es ¿Si hay más de un enlace al
configurada por ambos exterior?
IGP: rutas a destinos EGP debe informar de a qué
internos destinos se puede llegar por
EGP: rutas a destinos cada uno
externos
Border router
AS 2
IGP EGP AS 1
Tabla de rutas
AS 3
Interior Gateway Protocols (IGP)
Características: Los más comunes:
Simples RIP: Routing Information Protocol
Calculan caminos eficientes OSPF: Open Shortest Path First
respecto a una métrica IGRP: Interior Gateway Routing
Recalculan rápidamente ante Protocol (propietario de Cisco)
cambios
No escalan bien para redes
grandes
AS 2
AS 1
AS 3
Exterior Gateway Protocols (EGP)
Características: BGP (Border Gateway
Mejor escalabilidad Protocol): estándar de facto
Algoritmo path-vector : anuncia el
Habilidad para agregar rutas camino completo al destino (como
Habilidad para expresar una secuencia de ASs)
políticas Los anuncios emplean conexiones
Mayor carga en el router TCP entre los routers
AS 2
AS 1
AS 3
Estructura de Internet
Tier-1 ISPs o Internet backbone networks
Grandes proveedores internacionales (AT&T, BBN, BT, Cable&Wireless,
Sprint, UUNET, etc.)
Conexión completamente mallada
No emplean “ruta por defecto”, tienen rutas a todas las redes (Junio04: 140.396
rutas)
Tier 3 ISP
Tier 3 ISP Tier 3 ISP Tier 3 ISP
Estructura de Internet
Points of Presence (POPs)
NAPs (Network Access Points) o IXP (Internet eXchange Point)
Son redes de alta velocidad en sí mismas
Pretenden ahorrar €€
Reducir retardo
Mantener local el tráfico local (ej: Espanix)
Tier 3 ISP
Tier 3 ISP Tier 3 ISP Tier 3 ISP
Contenido
Internet Protocol UDP
Características TCP
IP en LAN Ethernet (ARP) Características
Direccionamiento (subredes, Gestión de conexiones
Proxy-ARP, CIDR) Control de flujo
Fragmentación y reensamblado Retransmisiones
ICMP Control de congestión
Enrutamiento en Internet
Distance-Vector
Link-State
Path-Vector
Lecturas recomendadas
[Kurose05] 4.5
Contenido
Introducción
Algoritmos Link-State
Descripción
Dijkstra
Algoritmos Distance-Vector
Descripción
Bellman-Ford
Algoritmos Path-Vector
Tipos de
Protocolos de Enrutamiento
Enrutamiento jerárquico
Sistemas Autónomos (AS)
Dentro de un AS:
IGP = Interior Gateway Protocol
Entre ASs:
EGP = Exterior Gateway Protocol
AS 2
AS 1
AS 3
Tipos de
Algoritmos de Enrutamiento
Deben informar de la Distance Vector:
topología y los cambios en la Comunican estimación de
misma distancia a destinos
Según cómo diseminan la Informan a vecinos
información Path Vector:
Comunican estimación de
Link State: caminos preferidos a destinos
Comunican qué vecinos
tienen y el coste AS 2
Inundan la red AS 1
Cada nodo conoce la
topología entera
AS 3
Tipos de
Algoritmos de Enrutamiento
A: [B, 2], [C, 1]
Link State
2 B 1
B: [A, 2], [D, 1]
A D C: [A, 1], [D, 3]
1 C 3 D: [B, 1], [C, 3]
1
Distance Vector
2 B 1 0 2 B 1 2 B 1
A D A D A D
1 C 3 0 1 C 3 1 C 3
3
B,D
Path Vector
No me gusta “B”
2 B 1 0 2 B 1 2 B 1
A D A D A D
1 C 3 0 1 C 3 1 C 3
C,D
Link State
Tres pasos AS 2
1. Descubrir a los vecinos
2. Diseminar la información sobre
los enlaces
Flooding (… …)
Todos conocen la topología (…) C
(En profundidad más adelante)
3. Calcular las rutas A B D
Caminos de menor coste
Todos calculan los mismos E
Algoritmo de Dijkstra
Link State
Tres pasos AS 2
1. Descubrir a los vecinos
2. Diseminar la información sobre
los enlaces
1
Flooding (… …) 1 1 1
1 1 1 1
1
1
1 1 1
Algoritmo de Dijkstra 1 1
1
1
(etc…)
Algoritmo de Dijkstra
Calcula los caminos de menor coste Origen nodo C
desde un nodos a todos los demás Partiendo de P(k) pasar a P(k+1)
c(i,j) : coste de enlace (i,j) (ej. c(B,D)=3 ) Escoger nodo X:
D(i,j) : camino más corto de i a j No en P(k)
L(i,j) : coste del camino D(i,j) Conectado a uno de Y∈P(k)
P(k) : conjunto de nodos procesaos hasta El menor coste c(X,Y)+L(Y,C)
la k’esima iteración (…)
Está conectado a nodo Y∈P(k)
Actualizar (…):
P(1)={C} D(X,C)=D(X,Y) ∪ D(Y,C)
C
D(B,C)=B→C C
1
1 3
A B D 1
A B D
4 1
1
E E
Algoritmo de Dijkstra
Calcula los caminos de menor coste Origen nodo C
desde un nodos a todos los demás Partiendo de P(k) pasar a P(k+1)
c(i,j) : coste de enlace (i,j) (ej. c(B,D)=3 ) Escoger nodo X:
D(i,j) : camino más corto de i a j No en P(k)
L(i,j) : coste del camino D(i,j) Conectado a uno de Y∈P(k)
P(k) : conjunto de nodos procesaos hasta El menor coste c(X,Y)+L(Y,C)
la k’esima iteración (…)
Está conectado a nodo Y∈P(k)
Actualizar (…):
P(2)={C,B} D(X,C)=D(X,Y) ∪ D(Y,C)
C
D(B,C)=B→C C
1 D(A,C)=A→B→C
1 3
A B D 2 1
A B D
4 1
1
E E
Algoritmo de Dijkstra
Calcula los caminos de menor coste Origen nodo C
desde un nodos a todos los demás Partiendo de P(k) pasar a P(k+1)
c(i,j) : coste de enlace (i,j) (ej. c(B,D)=3 ) Escoger nodo X:
D(i,j) : camino más corto de i a j No en P(k)
L(i,j) : coste del camino D(i,j) Conectado a uno de Y∈P(k)
P(k) : conjunto de nodos procesaos hasta El menor coste c(X,Y)+L(Y,C)
la k’esima iteración (…)
Está conectado a nodo Y∈P(k)
Actualizar (…):
P(3)={C,B,A} D(X,C)=D(X,Y) ∪ D(Y,C)
C
D(B,C)=B→C C
1 D(A,C)=A→B→C
1 3
A B D D(E,C)=E→A→B→C 2 1
A B D
4 1
1
E 3 E
Algoritmo de Dijkstra
Calcula los caminos de menor coste Origen nodo C
desde un nodos a todos los demás Partiendo de P(k) pasar a P(k+1)
c(i,j) : coste de enlace (i,j) (ej. c(B,D)=3 ) Escoger nodo X:
D(i,j) : camino más corto de i a j No en P(k)
L(i,j) : coste del camino D(i,j) Conectado a uno de Y∈P(k)
P(k) : conjunto de nodos procesaos hasta El menor coste c(X,Y)+L(Y,C)
la k’esima iteración (…)
Está conectado a nodo Y∈P(k)
Actualizar (…):
P(4)={C,B,A,E} D(X,C)=D(X,Y) ∪ D(Y,C)
C
D(B,C)=B→C C
1 D(A,C)=A→B→C
1 3
A B D D(E,C)=E→A→B→C 2 1 4
A B D
D(D,C)=D→B→C
4 1
1
E 3 E
Algoritmo de Dijkstra
Calcula los caminos de menor coste Origen nodo C
desde un nodos a todos los demás Partiendo de P(k) pasar a P(k+1)
c(i,j) : coste de enlace (i,j) (ej. c(B,D)=3 ) Escoger nodo X:
D(i,j) : camino más corto de i a j No en P(k)
L(i,j) : coste del camino D(i,j) Conectado a uno de Y∈P(k)
P(k) : conjunto de nodos procesaos hasta El menor coste c(X,Y)+L(Y,C)
la k’esima iteración (…)
Está conectado a nodo Y∈P(k)
Actualizar (…):
P(5)={C,B,A,E,D} D(X,C)=D(X,Y) ∪ D(Y,C)
C
D(B,C)=B→C C
1 D(A,C)=A→B→C
1 3
A B D D(E,C)=E→A→B→C 2 1 4
A B D
D(D,C)=D→B→C
4 1
1
E 3 E
Link State
Algoritmo de Dijkstra
Repetir para cada destino
Da las tablas de rutas de todos los nodos
Complejidad:
O(nlogn+m) (n nodos, m enlaces)
Caso peor O(n2)
Base de datos distribuida replicada
Algoritmo de distribución crítico
Protocolos: OSPF, IS-IS, PNNI
Distance Vector
Cada nodo llega a conocer la distancia desde él a todos los
destinos
D(X,di)
Inicialmente cada nodo solo conoce la distancia a sus vecinos
D(X,d)=c(X,d)
Periódicamente comunica D(X,d) a todos sus vecinos
Informan con un vector con las distancias a los destinos
( D(X,d1), D(X,d2), D(X,d3), D(X,d4)…)
Asíncrono
Al recibir información actualiza:
D(X,d)←mínj/c(X,j)<∞{c(X,j)+D(j,d)}
Algoritmo de Bellman-Ford distribuido
Empleado desde los comienzos de la ARPANET
Algoritmo de Bellman-Ford
Comienzo
Dest Next Cost Dest Next Cost
B B 1 A A 1
C
D
A-
-
∞
∞
C
D
BC
D
1
3
E E 1 E E 4
A
1
1
B
3
D
B
D
CB
-
1
∞
B
C
DB
-
3
∞
B
C
EB
-
4
∞
4 1 E - ∞ E E 1 D D 1
1
E
Algoritmo de Bellman-Ford
A envía
Dest Next Cost Dest Next Cost
D(E,d)←mín{c(E,A)+D(A,d)}
D(B,d)←mín{c(B,A)+D(A,d)} B B 1 A A 1
(…) C
D
A-
-
∞
∞
C
D
BC
D
1
3
E E 1 E E 4
A
1
1
B
3
D
B
D
C B
-
1
∞
B
C
DB
-
3
∞
B
C
EB
-
4
∞
4 1 E - ∞ E E 1 D D 1
1
E
Algoritmo de Bellman-Ford
A envía
Dest Next Cost Dest Next Cost
D(E,d)←mín{c(E,A)+D(A,d)}
D(B,d)←mín{c(B,A)+D(A,d)} B B 1 A A 1
C
D
A-
-
∞
∞
C
D
BC
D
1
3
E E 1 E A (E) 2 (4)
A
1
1
B
3
D
B
D
C B
-
1
∞
B
C
DB
-
3
∞
B
C
E
A (B)
-
2 (4)
∞
4 1 E - ∞ E E 1 D D 1
1
E
Algoritmo de Bellman-Ford
D envía
Dest Next Cost Dest Next Cost
D(E,d)←mín{c(E,D)+D(D,d)}
D(B,d)←mín{c(B,D)+D(D,d)} B B 1 A A 1
No hay cambios C
D
A-
-
∞
∞
C
D
BC
D
1
3
E E 1 E A 2
A
1
1
B
3
D
B
D
CB
-
1
∞
B
C
DB
-
3
∞
B
C
EA
-
2
∞
4 1 E - ∞ E E 1 D D 1
1
E
Algoritmo de Bellman-Ford
B envía
Dest Next Cost Dest Next Cost
D(A,d)←mín{c(A,B)+D(B,d)}
D(C,d)←mín{c(C,B)+D(B,d)} B B 1 A A 1
D(D,d)←mín{c(D,B)+D(B,d)}
D(E,d)←mín{c(E,B)+D(B,d)}
C
D
A-
-
∞
∞
C
D
BC
D
1
3
(…)
E E 1 E A 2
A
1
1
B
3
D
B
D
CB
-
1
∞
B
C
DB
-
3
∞
B
C
EA
-
2
∞
4 1 E - ∞ E E 1 D D 1
1
E
Algoritmo de Bellman-Ford
B envía
Dest Next Cost Dest Next Cost
D(A,d)←mín{c(A,B)+D(B,d)}
D(C,d)←mín{c(C,B)+D(B,d)} B B 1 A A 1
D(D,d)←mín{c(D,B)+D(B,d)}
D(E,d)←mín{c(E,B)+D(B,d)}
C
D
A
B (-)
B (-)
2 (∞)
4 (∞)
C
D
BC
D
1
3
E E 1 E A 2
A
1
1
B
3
D
B
D
CB
B (-)
1
4 (∞)
B
C
DB
B (-)
3
4 (∞)
B
C
EA
B (-)
2
5 (∞)
4 1 E B (-) 3 (∞) E E 1 D D 1
1
E
Algoritmo de Bellman-Ford
C envía
Dest Next Cost Dest Next Cost
D(B,d)←mín{c(B,C)+D(C,d)}
B B 1 A A 1
No hay cambios
C
D
AB
B
2
4
C
D
BC
D
1
3
E E 1 E A 2
A
1
1
B
3
D
B
D
CB
B
1
4
B
C
DB
B
3
4
B
C
EA
B
2
5
4 1 E B 3 E E 1 D D 1
1
E
Algoritmo de Bellman-Ford
E envía
Dest Next Cost Dest Next Cost
D(A,d)←mín{c(A,E)+D(E,d)}
B B 1 A A 1
A B
D(B,d)←mín{c(B,E)+D(E,d)}
D(D,d)←mín{c(D,E)+D(E,d)} C B 2 C C 1
(…) D B 4 D D 3
E E 1 E A 2
A
1
1
B
3
D
B
D
CB
B
1
4
B
C
DB
B
3
4
B
C
EA
B
2
5
4 1 E B 3 E E 1 D D 1
1
E
Algoritmo de Bellman-Ford
E envía
Dest Next Cost Dest Next Cost
D(A,d)←mín{c(A,E)+D(E,d)}
B B 1 A A 1
A B
D(B,d)←mín{c(B,E)+D(E,d)}
D(D,d)←mín{c(D,E)+D(E,d)} C B 2 C C 1
D E (B) 2 (4) D D 3
E E 1 E A 2
A
1
1
B
3
D
B
D
CB
B
1
4
B
C
DB
B
3
4
B
C
EA
B
2
5
4 1 E B 3 E E 1 D D 1
1
E
Algoritmo de Bellman-Ford
A envía
Dest Next Cost Dest Next Cost
D(E,d)←mín{c(E,A)+D(A,d)}
D(B,d)←mín{c(B,A)+D(A,d)} B B 1 A A 1
(…) C
D
AB
E
2
2
C
D
BC
D
1
3
E E 1 E A 2
A
1
1
B
3
D
B
D
C B
B
1
4
B
C
DB
B
3
4
B
C
EA
B
2
5
4 1 E B 3 E E 1 D D 1
1
E
Algoritmo de Bellman-Ford
A envía
Dest Next Cost Dest Next Cost
D(E,d)←mín{c(E,A)+D(A,d)}
B B 1 A A 1
A B
D(B,d)←mín{c(B,A)+D(A,d)}
C B 2 C C 1
D E 2 D D 3
E E 1 E A 2
A
1
1
B
3
D
B
D
C B
B
1
4
B
C
DB
B
3
4
B
C
EA
A (B)
2
3 (5)
4 1 E B 3 E E 1 D D 1
1
E
Algoritmo de Bellman-Ford
D envía
No hay cambios Dest Next Cost Dest Next Cost
B envía B B 1 A A 1
No hay cambios
C envía
No hay cambios
E envía
C
D
AB
E
2
2
C
D
BC
D
1
3
No hay cambios E E 1 E A 2
A envía
No hay cambios
Dest Next Cost Dest Next Cost Dest Next Cost
C
A B 2 A E 2 A A 1
A
1
1
B
3
D
B
D
CB
B
1
4
B
C
DB
B
3
4
B
C
EA
A
2
3
4 1 E B 3 E E 1 D D 1
1
E
Distance Vector
Cálculo distribuido
Iterativo e incremental
Asíncrono
Converge a los caminos de menor coste
Protocolos: RIP, IPX-RIP, DECnet, IGRP,
EIGRP, DSDV
Path Vector
Similar a Distance Vector
Cálculo distribuido
Informan a sus vecinos de las rutas calculadas
Incluyen todo el camino hasta el destino para
cada ruta
Protocolos: BGP
B,D
No me gusta “B”
2 B 1 0 2 B 1 2 B 1
A D A D A D
1 C 3 0 1 C 3 1 C 3
C,D
Contenido
Internet Protocol UDP
– Características TCP
– IP en LAN Ethernet (ARP)
– Características
– Direccionamiento (subredes, Proxy-
ARP, CIDR) – Gestión de conexiones
– Fragmentación y reensamblado – Control de flujo
– ICMP – Retransmisiones
Enrutamiento en Internet – Control de congestión
– Distance-Vector
– Link-State
– Path-Vector
Lecturas recomendadas
– [Forouzan03] 11.1-11.4
Contenido
Introducción
Nivel de transporte
UDP
– Características
– Formato
– Demultiplexación
Errores ICMP asociados
Nivel de red
IP
Ofrece un servicio best-effort
Los paquetes se pueden retrasar,
perder, desordenar, duplicar, etc.
Van dirigidos a un host, pero ¿a qué
aplicación?
¿Cómo debería mandar el host?
– Demasiado rápido: congestión
– Demasiado lento: ineficiente
ICMP
Red IP
Enlace ARP
Físico
Nivel de transporte
Nivel de transporte (…) TCP/IP ofrece 2 protocolos (…)
Emplean los servicios del nivel de
Comunicación lógica extremo a red (…)
extremo entre procesos (…)
PDU del nivel de transporte:
Puede ofrecer fiabilidad, orden segmento
Mensajes de mayor tamaño: AS 2
– Emisor segmenta
– Receptor reensambla
Inteligencia en los extremos
AS 1 AS 3
Transporte UDP TCP
ICMP
Red IP PDU de Transporte
Protocolo
Enlace ARP
Paquete IP
Físico
Multiplexación/Demultiplexación
Multiplexación en emisor Demultiplexación en receptor
Recoger datos de varias Cada datagrama IP lleva un
aplicaciones segmento del nivel de transporte
Añadir cabecera de transporte Según el puerto destino y tal vez
Incluye un identificador de la mirando también el origen decide la
aplicación origen y la detino (puerto) aplicación destino
Enrutamiento
Hace llegar los paquetes al host
(dirección IP) correcto
App 5
App 1 App 2 App 3 App 4
SAP
AS 2
Transporte Transporte
Red Red
Enlace Enlace
Físico AS 1 AS 3 Físico
Formato de la PDU de transporte
TDP o UDP
Puerto origen 32 bits
– Identifica a la aplicación emisora
en el host puerto origen puerto dest.
Puerto destino otros campos
campos de
de
otros
– Identifica a la aplicación la cabecera
la cabecera
receptora en el host
En el sentido contrario irán al
revés datos
El emisor debe conocer el
datos de
de la
la
aplicación
aplicación
puerto del receptor (mensaje)
Puertos
(mensaje)
[0,1023] Well known
[1024,49151] Registered
[49152,65535] D inámicos,
privados o efímeros
UDP: User Datagram Protocol
RFC 768 Sin conexión:
Protocolo de transporte – No hay handshaking entre
simple, sin gran inteligencia emisor y receptor
Servicio “best effort” – Cada datagrama UDP es
Datagramas procesado de forma
Los datagramas UDP se independiente a los demás
pueden: Empleado frecuentemente
– Perder para aplicaciones de
– Llegar desordenados a la streaming multimedia
aplicación – Soportan pérdidas
¿Transferencia fiable sobre – Sensibles a la tasa de envío
UDP?
Otros usos de UDP:
– Añadir fiabilidad en el nivel de
aplicación – DNS
– ¡Recuperación ante errores – SNMP
específica de cada aplicación!
UDP: User Datagram Protocol
¿Por qué existe UDP? Cuando un host recibe un
– Es simple: no hay que datagrama UDP :
mantener estado – Comprueba el puerto destino
en el mismo
– Un establecimiento de
– Dirige el segmento a la
conexión añadiría retardo no
aplicación esperando datos a
deseado ese puerto
– Cabecera pequeña Diferentes IP origen o puertos
– No hay control de congestión: origen van al mismo punto de
puede enviar tan rápido como acceso al servicio (SAP)
desee
Encapsulado en paquetes IP,
protocolo 17 Datagrama UDP
Paquete IP
Protocolo=17
Cabecera UDP
Puerto origen
Normalmente lo escoge el sistema
32 bits
operativo
Suele ser un puerto efímero puerto origen puerto dest.
Puerto destino longitud checksum
otros campos de
Puerto del servidor
la cabecera
Well known o se debe conocer por algún
medio
Respuesta servidor→cliente datos de la
datos de la
aplicación
Sentido contrario aplicación
(mensaje)
Puerto origen es el del servidor (well (mensaje)
known)
Puerto destino el efímero del cliente
Longitud
Bytes del datagrama UDP
Checksum (…)
Checksum UDP
Objetivo: detectar “errores” (ej., bits cambiados) en un datagrama
Cubre a la cabecera y los datos (y parte de la cabecera IP)
Emisor:
Trata el datagrama como una Dirección IP origen
secuencia de enteros de 16 bits Dirección IP destino
Complemento a 1 de la suma (en 0 protocolo Lon. [Link]
complemento a 1) del datagrama y
pseudocabecera puerto origen puerto dest.
Coloca el checksum en el campo longitud checksum
otros campos de
Receptor: la cabecera
Hace la suma en complemento a 1 datos de
datos de la
la
de todo el datagrama aplicación
aplicación
¿Da 0? (mensaje)
(mensaje)
– NO - error detectado
– Sí - no hay errores detectados
¡Pero aún así puede haberlos! Opcional
Demultiplexación: Ejemplo
App 3
App 1 App 2
Transporte
Transporte Red Transporte
Red Enlace Red
SP: 53 SP: 53
Enlace Físico Enlace
DP: 9157 DP: 5775
Físico Físico
0 15 16 32
type=3 code=3 checksum
0
0 15 16 32
type=3 code=2 checksum
0
– [Stevens] 17-18
Contenido
Introducción
Demultiplexaciónen TCP
Gestión de conexiones
TCP
Transmission Control Protocol Control de flujo
Nivel de transporte – Evitar congestionar al receptor
RFCs 793, 1122, 1323, 2018, Control de congestión
2581 – Evitar congestionar la red
Orientado a conexión
Flujo de datos: AS 2
– Stream de bytes
– Fiable
– Ordenado
– Full duplex
AS 1 AS 3
datos de la
AS 2
aplicación
AS 1 (mensaje)
AS 3
Demultiplexación: Ejemplo
Transporte S-IP: B
Transporte Red D-IP: C Transporte
Red SP: 5775 Red
Enlace
DP: 80 Enlace
Enlace Físico
Físico Físico
S-IP: A S-IP: B
IP: A IP: C IP: B
D-IP: C D-IP: C
SP: 9157 SP: 9157
DP: 80 DP: 80
Demultiplexación: Ejemplo
App 4
App 1 App 2 App 3
Transporte S-IP: B
Transporte Red D-IP: C Transporte
Red SP: 5775 Red
Enlace
DP: 80 Enlace
Enlace Físico
Físico Físico
S-IP: A S-IP: B
IP: A IP: C IP: B
D-IP: C D-IP: C
SP: 9157 SP: 9157
DP: 80 DP: 80
Gestión de conexiones
Estableciendo una conexión:
Three way handshake cliente servidor
Paso 1:
SYN
El extremo cliente envía un
segmento solicitando una
conexión al servidor
El segmento no tiene datos,
solo cabecera
SYN
Gestión de conexiones
Paso 2:
El extremo servidor envía un cliente servidor
segmento al cliente confirmando
(acknowledgement) la recepción SYN
del SYN
En el mismo segmento el
servidor indica su deseo de K
, AC
SYN
establecer la conexión (SYN)
El segmento no tiene datos,
solo cabecera
Gestión de conexiones
Paso 3:
El extremo cliente envía una cliente servidor
confirmación al SYN del servidor
El segmento no tiene datos, SYN
solo cabecera
Conexión establecida
K
, AC
SYN
ACK
conectado
Transferencia de datos… conectado
Gestión de conexiones
Cerrando una conexión
Paso 1:
Un extremo envía un
segmento solicitando el cierre F IN
de la conexión
El segmento no tiene datos,
solo cabecera
FIN
Gestión de conexiones
Paso 2:
El otro extremo confirma (ACK)
la recepción del FIN
El extremo que ha enviado el F IN
FIN ya no puede enviar más
datos nuevos
Cierre solo de un sentido de la ACK
comunicación
Gestión de conexiones
Paso 3:
El otro extremo envía un
segmento solicitando el cierre de
la conexión F IN
El segmento no tiene datos, solo
cabecera
ACK
F IN
Gestión de conexiones
Paso 4:
Confirmación de ese segundo
FIN
Por si ese último ACK se pierde, F IN
el que lo envió espera un tiempo
(podría tener que volverlo a
enviar) ACK
Conexión cerrada
F IN
ACK
time wait
cerrada
cerrada
Diagrama de estados
Open activo, snd SYN
CLOSED CLOSED
LISTEN
SYN CLOSED
Close
SYN SENT Open pasivo Close
SYN, ACK
SYN RCVD LISTEN
rcv SYN /
snd SYN,ACK snd SYN
ACK
ESTABLISHED ESTABLISHED SYN rcv SYN / snd ACK SYN
RCVD SENT
Close, snd FIN rcv ACK rcv SYN, ACK / snd ACK
ESTABLISHED
Close, snd FIN rcv FIN / snd ACK
CLOSE
WAIT
rcv FIN /
FIN snd ACK Close, snd FIN
CLOSING
WAIT-1
rcv FIN, ACK /
snd ACK LASTACK
rcv ACK rcv ACK
rcv ACK
FIN
TIMEWAIT CLOSED
WAIT-2 Timeout
rcv FIN /snd ACK
2xMSL
Diagrama de estados
Open activo, snd SYN
CLOSED CLOSED
LISTEN
SYN CLOSED
Close
SYN SENT Open pasivo Close
SYN, ACK
SYN RCVD LISTEN
rcv SYN /
snd SYN,ACK snd SYN
ACK
ESTABLISHED ESTABLISHED SYN rcv SYN / snd ACK SYN
RCVD SENT
Datos
Close, snd FIN rcv ACK rcv SYN, ACK / snd ACK
ESTABLISHED
ACK rcv FIN / snd ACK
Close, snd FIN
.
CLOSE
. rcv FIN /
WAIT
FIN snd ACK Close, snd FIN
CLOSING
WAIT-1
rcv FIN, ACK /
snd ACK LASTACK
rcv ACK rcv ACK
rcv ACK
FIN
TIMEWAIT CLOSED
WAIT-2 Timeout
rcv FIN /snd ACK
2xMSL
Diagrama de estados
Open activo, snd SYN
CLOSED CLOSED
LISTEN
SYN CLOSED
Close
SYN SENT Open pasivo Close
SYN, ACK
SYN RCVD LISTEN
rcv SYN /
snd SYN,ACK snd SYN
ACK
ESTABLISHED ESTABLISHED SYN rcv SYN / snd ACK SYN
RCVD SENT
Datos
Close, snd FIN rcv ACK rcv SYN, ACK / snd ACK
ESTABLISHED
ACK rcv FIN / snd ACK
Close, snd FIN
.
CLOSE
. rcv FIN /
WAIT
FIN FIN WAIT-1 FIN snd ACK Close, snd FIN
CLOSING
WAIT-1
rcv FIN, ACK /
CLOSE WAIT ACK snd ACK LASTACK
rcv ACK
FIN WAIT-2 rcv ACK
rcv ACK
FIN FIN
LAST ACK TIMEWAIT CLOSED
TIMEWAIT WAIT-2 Timeout
ACK rcv FIN /snd ACK
CLOSED 2xMSL
CLOSED
Servidor Cliente
Open activo, snd SYN Open activo, snd SYN
CLOSED CLOSED
Close Close
Open pasivo Close Open pasivo Close
LISTEN LISTEN
rcv SYN / rcv SYN /
snd SYN,ACK snd SYN snd SYN,ACK snd SYN
SYN rcv SYN / snd ACK SYN SYN rcv SYN / snd ACK SYN
RCVD SENT RCVD SENT
Close, snd FIN rcv ACK Close, snd FIN rcv ACK
ESTABLISHED ESTABLISHED
Close, snd FIN rcv FIN / snd ACK Close, snd FIN rcv FIN / snd ACK
CLOSE CLOSE
WAIT WAIT
rcv FIN / rcv FIN /
FIN snd ACK Close, snd FIN FIN snd ACK Close, snd FIN
CLOSING CLOSING
WAIT-1 WAIT-1
rcv FIN, ACK / rcv FIN, ACK /
snd ACK LASTACK snd ACK LASTACK
rcv ACK rcv ACK
rcv ACK rcv ACK
rcv ACK rcv ACK
FIN FIN
TIMEWAIT CLOSED TIMEWAIT CLOSED
WAIT-2 Timeout WAIT-2 Timeout
rcv FIN /snd ACK rcv FIN /snd ACK
2xMSL 2xMSL
Ejemplo
$ tcpdump -ttnlS tcp and host [Link]
Kernel filter, protocol ALL, datagram packet socket
tcpdump: listening on all devices
54.171 [Link].1798 > [Link].telnet: S 3462181145:3462181145(0)
54.175 [Link].telnet > [Link].1798: S 1997882026:1997882026(0) ack 3462181146
54.175 [Link].1798 > [Link].telnet: . 3462181146:3462181146(0) ack 1997882027
Aplicación Aplicación
Transporte
Canal fiable
Transferencia fiable de datos
Importante en nivel de aplicación, transporte, enlace
Aplicación Aplicación
Transporte
Canal fiable
Red
Canal no fiable
2
ACK
3 Datos
Servicio de entrega por Stream
UDP TCP
Orientado a datagramas El proceso no ve un flujo de
Recibe un bloque de datos de la paquetes
aplicación Ve que escribe datos y se
Le añade su cabecera reciben en el mismo orden
Se lo entrega a IP Un flujo de datos
AS 2
AS 2
AS 1 AS 3
AS 1 AS 3
Servicio de entrega por Stream
TCP Emisor TCP Receptor
Emisor acumula datos para Hay que reordenar los
mandar paquetes grandes paquetes
Mantiene los datos hasta
Aplicación puede que lea
que son confirmados
más despacio
Aplicación Aplicación
Transporte
Buffer TX Buffer RX
Red
Aplicación Aplicación
II
I
Red
Aplicación Aplicación
Transporte
Buffer TX Buffer RX
Buffer RX Buffer TX
Red
Aplicación Aplicación
Transporte
Buffer TX Buffer RX
Red
Buffer de recepción
Receptor
Entregados a la App
Recibidos y confirmados Ventana que anuncia
Ventana deslizante en TCP
La aplicación receptor lee bytes del stream
– La ventana se abre en el emisor
– Se desliza en el receptor (…)
Buffer de recepción
Receptor
Entregados a la App
Recibidos y confirmados Ventana que anuncia
Ventana deslizante en TCP
La aplicación receptor lee bytes del stream
– La ventana se abre en el emisor
– Se desliza en el receptor
Buffer de recepción
Receptor
Entregados a la App
Recibidos y confirmados Ventana que anuncia
Ventana deslizante en TCP
Se reciben más confirmaciones
La ventana se desliza en el emisor (…)
Buffer de recepción
Receptor
Entregados a la App
Recibidos y confirmados Ventana que anuncia
Ventana deslizante en TCP
Se reciben más confirmaciones
La ventana se desliza en el emisor
Buffer de recepción
Receptor
Entregados a la App
Recibidos y confirmados Ventana que anuncia
Segmento TCP
32 bits
Paquete IP
Segmento TCP
de la conexión aplicación
(longitud variable)
Internet
checksum
(como en UDP)
Contenido
Internet Protocol UDP
– Características
– IP en LAN Ethernet (ARP)
TCP
– Direccionamiento (subredes, Proxy-ARP, – Características
CIDR)
– Gestión de conexiones
– Fragmentación y reensamblado
– ICMP
– Control de flujo
Enrutamiento en Internet – Retransmisiones
– Distance-Vector – Control de congestión
– Link-State
– Path-Vector
Lecturas recomendadas
segmento
Opciones (longitud variable)
– En el establecimiento
Datos de
– El menor de los dos aplicación
N , AC
Seq = IS BA
Número de secuencia
SYN
Número de confirmación
Long No ACK=
cab. usado U A P R S F Ventana IS N +
BA 1
Checksum Puntero a urgentes
conectado
Host A Host B
SYN S
e q = IS
NAB
N +1
Puerto origen Puerto destino K= I S AB
N , AC
Seq = IS BA
Número de secuencia
SYN
Número de confirmación
Long No ACK=
cab. usado U A P R S F Ventana IS N +
BA 1
Checksum Puntero a urgentes
conectado
Host A Host B
Datos
, da ta = … Manda
, AC K=73 12 bytes
27
host ACKs Seq= y el ACK
recepción
ACK=
de datos 139
tiempo
Tamaño de la ventana
Host A Host B
Ventana
RTT = Round
Trip Time
Ventana ≥ RTT x BW
Producto RTTxBW
Enlace E1 (2.048Kbps) a través de Europa (60ms)
– Ventana > 15KBytes
– Tamaño máximo de la ventana es 64KBytes
Problemas:
– Enlace de 10Mbps a través de Europa
• Ventana > 74KBytes
• Mayor que el máximo que permiten 16bits (!!)
– Enlace E1 transoceánico (300ms)
• Ventana > 76KBytes (!!)
– Enlace Gigabit dentro de España (20ms)
• Ventana > 2.5MBytes (!!!)
Soluciones:
– Aumentar el tamaño máximo de la ventana a 32bits (window scale)
– Realizar varias conexiones simultáneamente (P2P)
Retransmisiones
Al enviar un paquete con datos se
inicia un timer (…) Host A Host B
Si caduca sin que llegue la
confirmación es que se ha perdido (…)
Retransmission Timeout (RTO):
Debería tener el valor del RTT
– Menor ⇒ expira sin que llegue el ack
– Mayor ⇒ tarda en reconocer la pérdida
Cuando expira se reenvía y el timeout
se dobla (exponential backoff)
Hace falta conocer el RTT
– Teniendo en cuenta que las rutas o su
tiempo
estado pueden cambiar, y con ellos el
retardo
Estimación del RTT
Tiempo entre el envío de datos y la llegada
de su confirmación
Desviados por el Delayed-ack
Host A Host B
RTT = R
tdatos
tack - tdatos = M
R = α R + (1-α)M
RTO = β R
M
tack α = 0.8 ó 0.9 (smoothing factor)
β = 2 (delay variance factor)
tiempo R = “RTT suavizado”
Algoritmo de Jackobson
Must
Estima la desviación estándar aproximándola con la desviación
media
Especialmente importante en enlaces lentos donde el tamaño
del paquete afecta bastante al RTT
Err = M - R RTT = R
R = R + g Err tack - tdatos = M
D = D + h (|Err| - D) R = α R + (1-α)M
RTO = R + 4D RTO = β R
400Kbps
1Gbps
1Mbps
300Mbps
1Gbps
1Gbps
Control de Congestión en TCP
Procedimiento:
No hay congestión ⇒ Aumentar tasa
Congestión ⇒ Disminuir tasa
¿¡ Tan sencillo !?
ACK n+1
tiempo
¿Cómo controlar la velocidad?
Ventana de congestión
Se puede enviar = mín{ Disponibles, win, cwnd }
Tasa máxima = mín{ win, cwnd } / RTT
RTT
– En realidad (RFC 2581) debe ser:
cwndinicial< 2xMSS
cwnd=2
Por cada ACK (que confirme nuevos
datos) que se reciba se incrementa cwnd
en 1 segmento del MSS cwnd=3
cwnd=4
Número de
segmentos cwnd=8
que se envían
.
.
tiempo
Tiempo .
RTT
Ejemplo de slow start Enviados
Confirmados cwnd
ssthresh=n/2
1
tiempo
Ejemplo (I)
ssthresh
cwnd
753.246362 eth0 < [Link].1069 > [Link].3014: S 0:0(0) win 32120
753.246536 eth0 > [Link].3014 > [Link].1069: S 0:0(0) ack 1 2
753.468594 eth0 > [Link].3014 > [Link].1069: P 1:205(204) ack 1
753.468750 eth0 > [Link].3014 > [Link].1069: P 205:409(204) ack 1
ssthresh
cwnd
761.796932 eth0 > [Link].3014 > [Link].1069: P 1429:1633(204) ack 1 3
761.797054 eth0 > [Link].3014 > [Link].1069: P 1633:1837(204) ack 1
762.838579 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 1837 3
762.838691 eth0 > [Link].3014 > [Link].1069: P 1837:2041(204) ack 1
762.838807 eth0 > [Link].3014 > [Link].1069: P 2041:2245(204) ack 1
762.838923 eth0 > [Link].3014 > [Link].1069: P 2245:2449(204) ack 1
ssthresh
cwnd
767.859926 eth0 > [Link].3014 > [Link].1069: P 4081:4285(204) ack 1 3
767.860043 eth0 > [Link].3014 > [Link].1069: P 4285:4489(204) ack 1
768.359065 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 4081
5
768.359188 eth0 > [Link].3014 > [Link].1069: P 4489:4693(204) ack 1
768.359305 eth0 > [Link].3014 > [Link].1069: P 4693:4897(204) ack 1
768.359418 eth0 > [Link].3014 > [Link].1069: P 4897:5101(204) ack 1
768.899165 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 4489 5 (1)
768.899311 eth0 > [Link].3014 > [Link].1069: P 5101:5305(204) ack 1
768.899429 eth0 > [Link].3014 > [Link].1069: P 5305:5509(204) ack 1
770.122698 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 4897
5 (2)
770.122858 eth0 > [Link].3014 > [Link].1069: P 5509:5713(204) ack 1
770.122975 eth0 > [Link].3014 > [Link].1069: P 5713:5917(204) ack 1
770.614382 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 5305 5 (3)
770.614528 eth0 > [Link].3014 > [Link].1069: P 5917:6121(204) ack 1
770.614644 eth0 > [Link].3014 > [Link].1069: P 6121:6325(204) ack 1
771.347724 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 5509 5 (4)
771.347856 eth0 > [Link].3014 > [Link].1069: P 6325:6529(204) ack 1
771.659393 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 5917 5 (5)
Ejemplo (y IV)
ssthresh
cwnd
771.659497 eth0 > [Link].3014 > [Link].1069: P 6529:6733(204) ack 1
3
771.659613 eth0 > [Link].3014 > [Link].1069: P 6733:6937(204) ack 1
772.159445 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 6325 6
772.159599 eth0 > [Link].3014 > [Link].1069: P 6937:7141(204) ack 1
772.159715 eth0 > [Link].3014 > [Link].1069: P 7141:7345(204) ack 1
772.159829 eth0 > [Link].3014 > [Link].1069: P 7345:7549(204) ack 1
772.699491 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 6733 6 (1)
772.699660 eth0 > [Link].3014 > [Link].1069: P 7549:7753(204) ack 1
772.699781 eth0 > [Link].3014 > [Link].1069: P 7753:7957(204) ack 1
1773.397932 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 6937 6 (2)
773.398089 eth0 > [Link].3014 > [Link].1069: P 7957:8161(204) ack 1
773.919587 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 7345 6 (3)
773.919734 eth0 > [Link].3014 > [Link].1069: P 8161:8365(204) ack 1
773.919851 eth0 > [Link].3014 > [Link].1069: P 8365:8569(204) ack 1
774.409619 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 7753 6 (4)
774.409770 eth0 > [Link].3014 > [Link].1069: P 8569:8773(204) ack 1
774.409886 eth0 > [Link].3014 > [Link].1069: P 8773:8977(204) ack 1
774.909675 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 8161 6 (5)
Fast recovery, Fast retransmit
[RFC 2581] “Out-of-order data Host A Host B
segments should be acknowledged Seq n-1
inmediately in order to accelerate Seq n
loss recovery”
Los ACKs duplicados: Seq n+1 ACK n
ssthresh
cwnd
[Link].1069 > [Link].5000: S 0:0(0) win 32120
[Link].5000 > [Link].1069: S 0:0(0) ack 1 win 31680 (= 33MSS)
[Link].1069 > [Link].5000: . 1:1(0) ack 1 win 32120 2
…
Ejemplo (II)
ssthresh
cwnd
[Link].5000 > [Link].1069: P 75841:76789(948) ack 1 win 32232
[Link].5000 > [Link].1069: . 76789:77737(948) ack 1 win 32232
[Link].5000 > [Link].1069: . 77737:78685(948) ack 1 win 32232
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 31
[Link].5000 > [Link].1069: . 78685:79633(948) ack 1 win 32232
[Link].5000 > [Link].1069: . 79633:80581(948) ack 1 win 32232
[Link].5000 > [Link].1069: . 80581:81529(948) ack 1 win 32232DUP 1
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284
DUP 2
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284
ssthresh
cwnd
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 28 15
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 29
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 30
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 31
ssthresh
cwnd
[Link].5000 > [Link].1069: . 83425:84373(948) ack 1 win 32232 15 15
[Link].5000 > [Link].1069: . 84373:85321(948) ack 1 win 32232
[Link].5000 > [Link].1069: . 85321:86269(948) ack 1 win 32232
[Link].5000 > [Link].1069: . 86269:87217(948) ack 1 win 32232
[Link].5000 > [Link].1069: . 87217:88165(948) ack 1 win 32232
[Link].5000 > [Link].1069: . 88165:89113(948) ack 1 win 32232
[Link].5000 > [Link].1069: . 89113:90061(948) ack 1 win 32232
DUP 1, win=26
[Link].1069 > [Link].5000: . 1:1(0) ack 81529 win 24648