0% encontró este documento útil (0 votos)
98 vistas239 páginas

Protocolos de Red: IP, TCP y UDP

Este documento resume los principales conceptos relacionados con la capa de red en el modelo TCP/IP. Explica los protocolos IP, UDP y TCP, así como los diferentes métodos de enrutamiento como distance-vector, link-state y path-vector. También describe características clave de IP como el direccionamiento, la encapsulación, el encaminamiento y el reenvío de paquetes.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
98 vistas239 páginas

Protocolos de Red: IP, TCP y UDP

Este documento resume los principales conceptos relacionados con la capa de red en el modelo TCP/IP. Explica los protocolos IP, UDP y TCP, así como los diferentes métodos de enrutamiento como distance-vector, link-state y path-vector. También describe características clave de IP como el direccionamiento, la encapsulación, el encaminamiento y el reenvío de paquetes.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

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
Bibliografía
• [Kurose05] James K. Kurose, Keith W. Ross, “Computer Networking.
A top-Down Approach Featuring the Internet”, Ed. Addison-Wesley
• [Tanenbaum05] Andrew S. Tanenbaum, “Computer Networks”, Ed.
Prentice Hall
• [Forouzan03] Behrouz A. Forouzan, “TCP/IP Protocol Suite”, Ed. Mc
Graw Hill
• [Stevens] W. Richard Stevens, “TCP/IP Illustrated, Volume 1, The
Protocols”, Ed. Addison-Wesley
• [Perlman] Radia Perlman, Interconnections Second Edition, Bridges,
Routers, Switches and Internetworking Protocols”, Ed. Addison-
Wesley
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

[Tanenbaum05] 5.5-5.5.4, 5.6-5.6.1


Nivel de red
 Objetivo:
Llevar paquetes del origen al destino
Usar los enlaces de forma “eficiente”
 Direccionamiento:
Que permita identificar a los nodos
Tiene una estructura (no es plano)
Ésta reduce la información en los routers
 Enrutamiento
Elementos de encaminamiento deben “aprender” cómo
es la red
Deben cacular “buenos” caminos a los destinos
Esto se almacena en las “tablas de rutas”
Routing
 “Ruta” es un camino (path) ⇒ acíclico …
 “Routing” = proceso de calcular los
caminos que deben seguir los paquetes
 Se pueden calcular en función de:
 Flujo
 Tipo de tráfico
 (origen, destino)
 Destino
Red D
Red A
R1
R5

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

(cálculo distribuido) … Red A IP de if1 de R1


Red B IP de if0 de R3
 Resultado: una “tabla de rutas”
en cada router … Red C IP de if0 de R4
Red D IP de if0 de R4
… …

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]

 Números de 32 bits cómodos para


computadoras, no para humanos
 Representación “dotted-decimal”
Formato del datagrama IP
Palabras Type of Longitud
IPv4 vs IPv6 de 32bits Service en bytes
del paquete
0 4 8 16 31 “Don’t
Para el Header
reensamblado Versión
Length TOS Longitud Fragment”
D M 13-bit fragmentation
16-bit identifier F F offset
“Time To “More
Live” TTL Protocolo Header checksum Fragments”
Protocolo del Dirección IP origen
Offset del
siguiente Dirección IP destino fragmento
nivel
[opciones]

[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

 hardware = nivel de enlace, protocol = nivel de red


 hard type = tipo de dirección de enlace (1 = Ethernet)
 prot type = tipo de dirección de red (0x0800 = IP)
 hard size = tamaño en bytes de la dirección de enlace (Ethernet -> 6)
 prot size = tamaño en bytes de la dirección de red (IP -> 4)
 op = Tipo de operación:
 1 = ARP Request
 2 = ARP Reply
 3 = RARP Request, 4 = RARP Reply
Formato de la PDU de ARP
(Ejemplos)

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

 hardware = nivel de enlace, protocol = nivel de red


 hard type = tipo de dirección de enlace (1 = Ethernet)
 prot type = tipo de dirección de red (0x0800 = IP)
 hard size = tamaño en bytes de la dirección de enlace (Ethernet -> 6)
 prot size = tamaño en bytes de la dirección de red (IP -> 4)
 op = Tipo de operación:
 1 = ARP Request
 2 = ARP Reply
 3 = RARP Request, 4 = RARP Reply
ARP: Address Resolution Protocol
 El host apunta en una cache la relación entre IP y MAC
 Para el próximo paquete no necesita hacer ARP
 El receptor del ARP Request aprende con esa trama la
pareja (MAC, IP) del emisor
 Las entradas en la cache de ARP caducan
 Plug-and-play: no necesita intervención del
administrador
 Funciona directamente sobre el nivel de enlace
(Ethertype 0x0806)
Caché ARP del PC 1 ([Link])
Dirección IP Dirección MAC Time
[Link] [Link] 13:45
¿Dónde encaja ARP en la pila TCP/IP?

Aplicación

Transporte UDP TCP

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

 [Forouzan] 4.2, 5.1


 [Stevens] 1.4, 3.4-3.7
Contenido
 Direccionamiento Classful
¿Cómo es?
¿Por qué así?
¿Cómo funcionan los routers y los hosts?
Problemas
 Subredes
Proxy-ARP
Subnetting
¿Cómo es?
¿Cómo funcionan los routers y los hosts?
¿Problemas?
Direccionamiento Classful
 La “abuela” de Internet: ARPANET
 Cada red tiene un router de acceso que la conecta con
el backbone de la red y así con las otras redes
 A cada red se le asigna un rango de direcciones IP
 ¿Red? Si origen y destino están en la misma, la
tecnología se debe encargar de hacer llegar el paquete
LAN D
LAN A
R1
R5
Backbone
R2
R3
R4

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

 Deben averiguar rápidamente cuál es el Network ID de la red a la que


pertenece el destino (IPd)
 primer bit = 0:
 IPd ∈ red de clase A
 NetID = primeros 8 bits
 (primer bit = 1)&(segundo bit = 0):
 IPd ∈ red de clase B
 NetID = primeros 16 bits
 (primer bit = 1)&(segundo bit = 1)&(tercer bit=0):
 IPd ∈ red de clase C
 NetID = primeros 24 bits
 En la propia dirección IP está codificado el número de bits del NetID
 Son comprobaciones rápidas de realizar
 Cuanto menos tiempo emplee el router con cada paquete más paquetes
podrá procesar por segundo
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 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

IPH IPgw,if0 IPd


src_hwaddr=MAC H

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 D LAN D

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

 PC1 envía la trama al router pensando


que es PC2 …
 El router reenvía el paquete 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

 PC1 envía la trama al router pensando


que es PC2 …
 El router reenvía el paquete IP …
Subnetting
 También llamado FLSM (Fixed Length Subnet Masks)
 Parte del Host ID se emplea para diferenciar la subred…
 NetworkID+SubnetworkID = ExtendedNetworkID …
 Determinado por la máscara de subred …
 Se empleó en redes Clase B
 Muy pocas redes Clase A
 Clase C muy pequeñas

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

Destino Next-hop Interfaz


Subred B.2
Red A

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]

Destino Next-hop if Destino Next-hop if


[Link] (B) [Link] (R2) 1 [Link] (B.1) - 1
[Link]
[Link]
[Link]

R1 (otro)
(otro)
(otro)

0
0
2

[Link] (A)

R2
[Link] (B.2)
[Link] (B.3)
[Link] (R3)


-
-
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]

Destino Next-hop if Destino Next-hop if


[Link] (B) [Link] (R2) 1 [Link] (B.1) - 1
[Link]
[Link]
[Link]

R1 (otro)
(otro)
(otro)

0
0
2

[Link] (A)

R2
[Link] (B.2)
[Link] (B.3)
[Link] (R3)


-
-
1
2
3

Red B
R1

Destino Next-hop if Subred B.1


[Link] (B.1) - 0
Backbone

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

 B.2: Al menos 20 hosts R2


 B.3: Al menos 20 hosts
 Total: 90 hosts R3
 Clase C ⇒ 256 direcciones disponibles Subred B.2
 3 subredes ⇒ SubNetID > 2 bits (…)
 B.1 50 hosts ⇒ HostID > 5 bits (…)
Subred B.3
Subnetwork ID host ID
193.65.67.
Network ID Host ID
Problemas con Subnetting
 ¿Dónde se han perdido las
direcciones?
 Las 3 subredes dimensionadas
con el tamaño de la mayor
Red B
(máscara fija)
 No se usan dos subredes Backbone Subred B.1
 ¡Esas dos son del mismo tamaño R2
que la mayor!
R3

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

Backbone Subred B.1

R2

R3

Destino Máscara Next-hop Interfaz Subred B.2

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

Destino Next-hop if Red B


[Link]/20 - 0
R4 Backbone

[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

 Los routers NO reensamblan (…) R2


 Solo el host receptor final
reensambla (…) R3

Red (RFC 1191) MTU MTU=1500 Red C


Red A
16Mbps Token Ring 17914
IEEE 802.4 8166
FDDI 4352 Reensamblado
Ethernet 1500
Red D
IEEE 802.3 1492
X.25 576
Fragmentación y Reensamblado
Codificación de la información
0 4 8 16 31
Header
Versión
Length TOS Longitud
 Campos empleados: 16-bit identifier D M 13-bit fragmentation
F F offset

 Identificación TTL Protocolo Header checksum


Dirección IP origen
 Bit MF
Dirección IP destino
 Fragment offset [opciones]
 Fragmentos del datagrama: [Datos]
 Igual identificación, IP origen,
IP destino y protocolo
 “Longitud” es la del paquete, no del datagrama
 Ante un primer fragmento ⇒ reservar zona de memoria donde
reensamblar
 Debe reservar suficiente para reensamblar al menos datagramas de
576 Bytes
Fragmentación
Implementación

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

tipo código checksum

Dependiente del tipo y código


¿Dónde encaja ICMP en la pila TCP/IP?

Aplicación

Transporte UDP TCP


ICMP
Red IP

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

Cabecera IP + 8bytes datos del


paquete que dio error
Mensajes ICMP
(Destino inalcanzable)
 Código:  3 = Puerto destino
 0 = Red destino inalcanzable inalcanzable
 1 = Host destino  4 = Fragmentación
inalcanzable necesaria y DF activo
 2 = Protocolo destino  5 = Source route failed
inalcanzable

0 15 16 32
type=3 code checksum
0

Cabecera IP + 8bytes datos del


paquete que dio error
Mensajes ICMP
 Tiempo excedido (error)
tipo = 11
código = 0 (TTL=0 en tránsito), 1 (timeout durante
reensamblado, necesita primer paquete)

0 15 16 32
type=11 code checksum
0

Cabecera IP + 8bytes datos del


paquete que dio error
Traceroute
 Permite averiguar el camino entre dos hosts
 Suponiendo que el camino se mantiene entre diferentes paquetes
 Requiere que el destino final soporte UDP
 Requiere que se generen ciertos mensajes ICMP
 Implemented by Van Jacobson from a suggestion by Steve
Deering. Debugged by a cast of thousands with particularly cogent
suggestions or fixes from C. Philip Wood, Tim Seaver, and Ken
Adelman.

if1 if1
if0 R1 R5
if0
if0

if0 R2 if0 if1


if1 if2
R3
R4 if2
if1
Traceroute
 El host inicial envía un datagrama UDP (…)
 Dirigido al host final
 Con TTL = 1 TTL IP
1 IPR1if0
 El primer router decrementa el TTL a 0 (…)
 Tira el paquete
 Devuelve al origen un ICMP de Error Tiempo excedido en tránsito
 Este es un paquete IP con dirección origen la del interfaz de R1 en la red del host
(… …)

if1 if1
if0 R1 R5
if0
if0

if0 R2 if0 if1


if1 if2
R3
R4 if2
if1
Traceroute
 El host inicial envía un datagrama UDP (…)
 Dirigido al host final
 Con TTL = 2 TTL IP
1 IPR1if0
 El primer router decrementa el TTL a 1 y lo reenvía (…) 2 IPR2if0
 El segundo router decrementa el TTL a 0 (…)
 Tira el paquete
 Devuelve al origen un ICMP de Error Tiempo excedido en tránsito
 Este es un paquete IP con dirección origen la del interfaz de R2 en dirección
hacia el host origen (…)

if1 if1
if0 R1 R5
if0
if0

if0 R2 if0 if1


if1 if2
R3
R4 if2
if1
Traceroute
 Idem con TTL=3 y TTL=4 (…)
 Con TTL suficientemente grande el paquete llega
TTL IP
hasta el destino final (… …)
1 IPR1if0
 En el destino no hay aplicación esperando paquetes UDP 2 IPR2if0
en ese puerto: 3 IPR4if0
 Lo tira 4 IPR5if0
 Devuelve al origen un ICMP de Error Puerto destino 5 IPhost
inalcanzable (… …)

if1 if1
if0 R1 R5
if0
if0

if0 R2 if0 if1


if1 if2
R3
R4 if2
if1
Traceroute (Ejemplo)
daniel% traceroute [Link]
traceroute to [Link] ([Link]), 30 hops max, 40 byte packets
1 [Link] ([Link]) 1.691 ms 0.438 ms 0.417 ms
2 ss-in ([Link]) 1.015 ms 3.091 ms 0.658 ms
3 [Link] ([Link]) 1.587 ms 1.87 ms 1.506 ms
4 [Link] ([Link]) 1.49 ms 1.741 ms 1.25 ms
5 [Link] ([Link]) 5.279 ms 4.402 ms 4.398 ms
6 [Link] ([Link]) 50.039 ms 16.511 ms 16.35 ms
7 [Link] ([Link]) 16.341 ms 17.982 ms 16.405 ms
8 [Link] ([Link]) 118.998 ms 16.741 ms 16.755 ms
9 [Link] ([Link]) 96.679 ms 39.288 ms 39.513 ms
10 [Link] ([Link]) 91.118 ms 48.088 ms 49.83 ms
11 [Link] ([Link]) 141.935 ms 141.812 ms 141.716 ms
12 [Link] ([Link]) 157.505 ms 157.692 ms 164.648 ms
13 [Link] ([Link]) 177.182 ms 177.144 ms 177.201 ms
14 [Link] ([Link]) 199.049 ms 198.489 ms *
15 [Link] ([Link]) 199.004 ms 198.621 ms 284.873 ms
16 [Link] ([Link]) 215.55 ms 218.166 ms 206.364 ms
17 [Link] ([Link]) 210.841 ms 207.409 ms 207.479 ms
18 [Link] ([Link]) 283.445 ms 207.842 ms 207.318 ms
19 [Link] ([Link]) 211.052 ms 207.341 ms 207.408 ms
20 [Link] ([Link]) 207.431 ms 207.451 ms 207.4 ms

Probarlo y ver los paquetes con tcpdump


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] 1.5, 4.5.3


Contenido
 Introducción
 Enrutamiento jerárquico
 IGPs
 EGPs

 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 1 ISP Tier 1 ISP


Default-free zone

Tier 1 ISP Tier 1 ISP


Estructura de Internet
 Tier-2 ISPs
 Regionales o nacionales
 Se conectan (peering agreement) a unos pocos tier-1 ISPs (ellos son los
clientes y el tier-1 el proveedor de tránsito)
 Se pueden conectar a otros tier-2

Tier 1 ISP Tier 1 ISP


Default-free zone

Tier 1 ISP Tier 1 ISP

Tier 2 ISP Tier 2 ISP


Tier 2 ISP Tier 2 ISP
Estructura de Internet
 Tier-3 ISPs
 ISPs locales de acceso
 Se conectan a uno o más tier-2 y entre ellos

Tier 1 ISP Tier 1 ISP


Default-free zone

Tier 1 ISP Tier 1 ISP

Tier 2 ISP Tier 2 ISP


Tier 2 ISP Tier 2 ISP Tier 3 ISP
Tier 3 ISP

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 1 ISP Tier 1 ISP


Default-free zone

Tier 1 ISP Tier 1 ISP

Tier 2 ISP Tier 2 ISP


Tier 2 ISP Tier 2 ISP Tier 3 ISP
Tier 3 ISP
NAP

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

 Todos conocen la topología (…) 1


C 1

1 1 1 1

 (En profundidad más adelante) 1 1 1

1
1

3. Calcular las rutas A B D


 Caminos de menor coste 1

1 1 1

 Todos calculan los mismos 1 E 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

Dest Next Cost Dest Next Cost Dest Next Cost


C
A - ∞ A - ∞ A A 1

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

Dest Next Cost Dest Next Cost Dest Next Cost


C
A - ∞ A - ∞ A A 1

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)

Dest Next Cost Dest Next Cost Dest Next Cost


C
A - ∞ A - ∞ A A 1

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

Dest Next Cost Dest Next Cost Dest Next Cost


C
A - ∞ A - ∞ A A 1

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

Dest Next Cost Dest Next Cost Dest Next Cost


C
A - ∞ A - ∞ A A 1

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

Dest Next Cost Dest Next Cost Dest Next Cost


C
A B (-) 2 (∞) A B (-) 4 (∞) A A 1

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

Dest Next Cost Dest Next Cost Dest Next Cost


C
A B 2 A B 4 A A 1

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

Dest Next Cost Dest Next Cost Dest Next Cost


C
A B 2 A B 4 A A 1

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

Dest Next Cost Dest Next Cost Dest Next Cost


C
A B 2 A E (B) 2 (4) A A 1

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

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
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

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
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

SP: 9157 SP: 5775


IP: A DP: 53 DP: 53 IP: B
IP: C
Mensajes ICMP
 Puerto destino inalcanzable (destination port
unreachable)
– Generado por un host que recibe un datagrama UDP para
cuyo puerto destino no espera mensajes ninguna aplicación
– tipo=3 (destino inalcanzable), código=3

0 15 16 32
type=3 code=3 checksum
0

Cabecera IP del paquete que produjo el error


+ los primeros 8 bytes siguientes
Mensajes ICMP
 Protocolo inalcanzable
– Generado cuando el host receptor del paquete IP no conoce
el protocolo que viene indicado en la cabecera del mismo
– tipo=3 (destino inalcanzable), código=2

0 15 16 32
type=3 code=2 checksum
0

Cabecera IP del paquete que produjo el error


+ los primeros 8 bytes siguientes
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

– [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

Transporte UDP TCP


ICMP Segmento TCP
Red IP Protocolo= 6
Enlace ARP
Paquete IP
Físico
Demultiplexación con conexión
 Conexión identificada por 2  Cada host soporta múltiples
sockets conexiones TCP simultáneas
 Cada socket identificado por:  Con que uno de los 4 valores
Dirección IP y Puerto TCP sea diferente la conexión ya es
 Es decir, la conexión viene diferente
identificada por:
 Well-known ports, registrados,
– Dirección IP (1), Puerto TCP (1)
efímeros, igual que para UDP
– Dirección IP (2), Puerto TCP (2)
 El receptor emplea la cuaterna 32 bits
para demultiplexar
puerto origen puerto dest.
otros campos
otros campos de
de
la cabecera
la cabecera

datos de la
AS 2
aplicación
AS 1 (mensaje)
AS 3
Demultiplexación: Ejemplo

App 4 App 5 App 6


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
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

54.177 [Link].1798 > [Link].telnet: P 3462181146:3462181173(27) ack 1997882027


54.178 [Link].telnet > [Link].1798: . 1997882027:1997882027(0) ack 3462181173
...

66.816 [Link].telnet > [Link].1798: FP 1997882551:1997882559(8) ack 3462181333


66.816 [Link].1798 > [Link].telnet: . 3462181333:3462181333(0) ack 1997882560
66.817 [Link].1798 > [Link].telnet: F 3462181333:3462181333(0) ack 1997882560
66.818 [Link].telnet > [Link].1798: . 1997882560:1997882560(0) ack 3462181334
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

– [Forouzan] 12.1-12.3, 12.9


Contenido
 Introducción
 Controlde flujo
 Formato del segmento TCP
Transferencia fiable de datos
 Importante en nivel de aplicación, transporte, enlace

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

 Basado en nivel no fiable


Transferencia fiable de datos
¿Cómo lograrla?
 Mecanismo de confirmaciones
1 Datos
 Se numeran los bytes para
confirmarlos 1
ACK
– Los SYNs establecen los
números de secuencia iniciales 2 Datos

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

Segmentos TCP en paquetes IP


Control de flujo
 Receptor lee más despacio  Receptor informa a emisor
que lo que recibe (. . .) del espacio libre
 Buffer se desbordaría

Aplicación Aplicación
II
I

¡No mandes más! Se pierde


Transporte
Buffer TX VIII
Buffer
VII
VI VI
V IV
III
V IVIIRX
III III
II
I

Red

Segmentos TCP en paquetes IP


Un recordatorio (…)
 Comunicación full-duplex
 Por simplicidad hablaremos solo de un
sentido

Aplicación Aplicación

Transporte
Buffer TX Buffer RX
Buffer RX Buffer TX

Red

Segmentos TCP en paquetes IP


Buffers de emisión y recepción
 Buffer circular (…)
 Protocolo de Ventana Deslizante
 Se confirma el último dato consecutivo recibido

Aplicación Aplicación

Transporte
Buffer TX Buffer RX

Red

Segmentos TCP en paquetes IP


Ventana deslizante en TCP
 Por simplicidad analicemos solo un sentido
Ventana deslizante en TCP
 Por simplicidad analicemos solo un sentido

Ventana anunciada por el receptor


Emisor
Datos de la aplicación a enviar

Enviados y confirmados No se pueden enviar hasta que se desplace


Enviados la ventana
Se pueden enviar

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 (…)

Ventana anunciada por el receptor


Emisor
Datos de la aplicación a enviar

Enviados y confirmados No se pueden enviar hasta que se desplace


Enviados la ventana
Se pueden enviar

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

Ventana anunciada por el receptor


Emisor
Datos de la aplicación a enviar

Enviados y confirmados No se pueden enviar hasta que se


Enviados desplace la ventana
Se pueden enviar

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 (…)

Ventana anunciada por el receptor


Emisor
Datos de la aplicación a enviar

Enviados y confirmados No se pueden enviar hasta que se


Enviados desplace la ventana
Se pueden enviar

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

Ventana anunciada por el receptor


Emisor
Datos de la aplicación a enviar

Enviados y confirmados No se pueden enviar hasta que se


Enviados desplace la ventana
Se pueden enviar

Buffer de recepción
Receptor

Entregados a la App
Recibidos y confirmados Ventana que anuncia
Segmento TCP
32 bits

Tamaño cabecera Cuenta en bytes


(palabras de 32bits) Puerto origen Puerto destino de datos
Número de secuencia (no en segmentos)
URG: datos urgentes
(casi no se usa) Número de confirmación
Long No Tamaño de la
ACK: El nº ACK cab. usado U A P R S F Ventana ventana que
es válido
se anuncia al
Checksum Puntero a urgentes
PSH: Push emisor
Entregar datos a App
Opciones (longitud variable)

RST, SYN, FIN:


establecimiento y fin Datos de

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

– [Stevens] 18.10, 19, 20.7, 21.2-21.4


Contenido
 Opciones
 Número de secuencia y confirmación
 Delayed ACK
 Tamaño de la ventana
 Retransmisiones
– Algoritmo de Jackobson
– Algoritmo de Karn
 Algoritmo de Nagle
Opciones
De 1 byte
 End-of-option
 No-operation (para alinear) Puerto origen Puerto destino

Múltiples bytes Número de secuencia


Número de confirmación
 Maximum Segment Size (MSS) Long No
Ventana
cab. usado U A P R S F

– Máximo bloque de datos en un Checksum Puntero a urgentes

segmento
Opciones (longitud variable)
– En el establecimiento
Datos de
– El menor de los dos aplicación

– Por defecto 536


[Link].1798 > [Link].23: S 0:0(0) <mss 1460>
[Link].23 > [Link].1798: S 0:0(0) ack 1 <mss 960>
[Link].1798 > [Link].23: . 1:1(0) ack 1
Números de Secuencia y ACK
Nº de secuencia: Nº de ACK:
 Siguiente byte que se espera
 Primer byte de datos en
recibir
el segmento
 ACK acumulado
 SYN y FIN gastan 1 nº Host A Host B
de secuencia
SYN S
e q = IS
 Para poder ser NAB
confirmados
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

Opciones (longitud variable) conectado


Datos de tiempo
aplicación
Números de Secuencia y ACK
[Link].1798 > [Link].23: S 3462181145:3462181145(0)
[Link].23 > [Link].1798: S 1997882026:1997882026(0) ack 3462181146
[Link].1798 > [Link].23: . 3462181146:3462181146(0) ack 1997882027

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

Opciones (longitud variable) conectado


Datos de tiempo
aplicación
Números de Secuencia y ACK
[Link].1798 > [Link].23: P 3462181146:3462181173(27) ack 1997882027
[Link].23 > [Link].1798: . 1997882027:1997882027(0) ack 3462181173
[Link].23 > [Link].1798: P 1997882027:1997882039(12) ack 3462181173
[Link].1798 > [Link].23: . 3462181173:3462181173(0) ack 1997882039

Host A Host B

TCP tiene Seq=4


6 , AC
27 bytes K=79,
d a ta =
a mandar …
Puerto origen Puerto destino
Número de secuencia host ACK
ACK
=73 recepción
Número de confirmación
ta = … Manda
, da
K=73
Long No
cab. usado U A P R S F Ventana
27 , AC 12 bytes
Checksum Puntero a urgentes host ACKs Seq=
recepción
Opciones (longitud variable) ACK=
de datos 139
Datos de tiempo
aplicación
Delayed ACK
 Esperar un tiempo a  Debe mandar ACK (Host Req.) si:
mandar ACK (…) – Pasan 500ms
 Intenta conseguir datos – 1 ACK al menos por cada 2
que enviar (…) segmentos “llenos” (del MSS)
Host A Host B
 Incluirá el ACK con ellos
(…)
 Piggybacking TCP tiene Seq=4
6 , AC
27 bytes K=79,
d a ta =
a mandar …

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

Primer bit del


paquete, t = 0

Último bit del Primer bit del


paquete, t = L / BW paquete llega

RTT = Round Ultimo bit llega,


enviar ACK
Trip Time

Llega ACK, enviar


siguiente paquete,
t = RTT + L / R

Ejemplo: 1 Gbps, RTT = 30 ms, L = 1KByte


– ¡ L / RTT = 270 Kbps !
– ¡ Se emplea el enlace el 0.027% del tiempo !
Tamaño de la ventana
Host A Host B

Primer bit del Ventana


paquete, t = 0

Último bit del Primer bit del


paquete, t = L / BW paquete llega

RTT = Round Ultimo bit llega,


enviar ACK
Trip Time
Envía ACK del 2º
Llega ACK, enviar
Envía ACK del 3º
siguiente paquete,
t = RTT + L / R

 ¿Cuánto puede aumentar la utilización?


 ¿Qué tamaño de ventana poner?
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

g = 1/8 α = 0.8 ó 0.9 (smoothing factor)


h = 1/4 β = 2 (delay variance factor)
D = “Desviación media suavizada” R = “RTT suavizado”
Algoritmo de Karn
Si hay retransmisiones Host A Host B
tdatos1
 No se sabe a quién
corresponde el ACK
 No se toma muestra en caso
de caducar el timer
tdatos2
 Se hace el backoff normal
 No se emplea el valor
modificado por backoff para
actualizar R tack
 Cuando haya una estimación
tiempo
sin pérdidas se continúa
 Must ¿ tack - tdatos1 = M ?
¿ tack - tdatos2 = M ?
Algoritmo de Nagle
Objetivo: Host A Host B

 Que no haya tantos paquetes


pequeños de 40+1 bytes
Algoritmo:
– Si hay datos enviados sin
confirmar, acumular
– Enviar cuando llegue ACK
– O cuando se tenga un segmento
del MSS
Self-clocked (autoregulado)
– Cuanto más rápido llegan los
ACKs más rápido se envían los
datos
tiempo
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] 3.6, 3.7.1


– [Stevens] 20.6, 21.6-21.8
Contenido
 Introducción
 Cómo detectar la congestión
 Cómo controlarla
 Slow Start
 Congestion avoidance
 Fast recovery, fast retransmit
Congestión
 “Demasiado” tráfico en un
enlace hace que la “calidad” se
“degrade”: Congestión
 Cuando el tráfico se acerca al
límite de la capacidad los
routers comienzan a perder
paquetes
A B
 Un servidor con cola
 Tembién limitado por la C
capacidad de reenvío de la
CPU
D F
 No hay suficiente memoria en E
los buffers
 Aunque la hubiera no sería la
solución (excesivo retardo y G
retransmisiones)
Control de Congestión y de Flujo
Control de congestión Control de flujo
 La red no es capaz de cursar  Diferente
todo el tráfico  Entre un transmisor y un
 Es un problema global receptor
 Depende del comportamiento  Evitar que el transmisor
de hosts y routers sature al receptor

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 !?

¿Cómo detectar la congestión?


¿Cómo reducir la tasa?
¿Cómo aumentar la tasa?
¿Cómo detectar la congestión?
Pérdidas
Host A Host B
 Por errores en el canal: Poco
probable
 Descarte por desbordamiento
de buffer ⇒ Congestión
 Detección de pérdidas
– Timeout Seq n
– ACKs duplicados Seq n+1

Seq n+2 ACK n+1

Seq n+3 ACK n+1

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

Ventana anunciada por el receptor (win)


Ventana de congestión (cwnd)
Emisor
Datos de la aplicación a enviar

Enviados y confirmados No se pueden enviar hasta que se


Enviados desplace la ventana
Se pueden enviar
Slow Start
 Al comienzo de la conexión Slow start
no se conoce el estado de  En realidad la tasa aumenta
congestión de la red exponencialmente (no es tan
 El protocolo de ventana “slow”)
deslizante permite enviar  Es control de flujo impuesto
hasta el tamaño de la por el emisor a través de la
ventana anunciada (win) ventana de congestión
 Win depende solo de los  4.3BSD Tahoe (1988)
buffers del receptor
 Es una ráfaga que puede
crear congestión y pérdidas
 Mejor “probar” poco a poco
el estado de la red
aumentando “lentamente” la
tasa de transmisión
Slow Start Emisor Receptor

 Al comenzar cwnd = 1 segmento del MSS


– La ventana es mín{win, cwnd}
– Al principio solo se puede enviar un cwnd=1
segmento

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

[Link].2823 > [Link].1509: S 0:0(0) win 32120 <mss 1460>


[Link].1509 > [Link].2823: S 0:0(0) ack 1 win 32120 <mss 1460>
[Link].2823 > [Link].1509: . 1:1(0) ack 1 win 32120 2

[Link].1509 > [Link].2823: P 1:1449(1448) ack 1 win 32120


[Link].1509 > [Link].2823: P 1449:2897(1448) ack 1 win 32120

[Link].2823 > [Link].1509: . 1:1(0) ack 1449 win 31856 3


[Link].1509 > [Link].2823: P 2897:4345(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 4345:5793(1448) ack 1 win 32120

[Link].2823 > [Link].1509: . 1:1(0) ack 2897 win 31856 4


[Link].1509 > [Link].2823: P 5793:7241(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 7241:8689(1448) ack 1 win 32120

[Link].2823 > [Link].1509: . 1:1(0) ack 5793 win 31856 5


[Link].1509 > [Link].2823: P 8689:10137(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 10137:11585(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 11585:13033(1448) ack 1 win 32120

[Link].2823 > [Link].1509: . 1:1(0) ack 8689 win 31856 6


[Link].1509 > [Link].2823: P 13033:14481(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 14481:15929(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 15929:17377(1448) ack 1 win 32120

[Link].2823 > [Link].1509: . 1:1(0) ack 10137 win 31856 7


Ejemplo de slow start Enviados
Confirmados cwnd

[Link].1509 > [Link].2823: P 17377:18825(1448) ack 1 win 32120


[Link].1509 > [Link].2823: P 18825:20001(1176) ack 1 win 32120
[Link].2823 > [Link].1509: . 1:1(0) ack 13033 win 31856 8
[Link].2823 > [Link].1509: . 1:1(0) ack 15929 win 31856 9
[Link].2823 > [Link].1509: . 1:1(0) ack 18825 win 31856 10
[Link].2823 > [Link].1509: . 1:1(0) ack 20001 win 31856
11
[Link].1509 > [Link].2823: P 20001:21449(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 21449:22897(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 22897:24345(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 24345:25793(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 25793:27241(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 27241:28689(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 28689:30137(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 30137:31585(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 31585:33033(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 33033:34481(1448) ack 1 win 32120
[Link].1509 > [Link].2823: P 34481:35929(1448) ack 1 win 32120

[Link].2823 > [Link].1509: . 1:1(0) ack 22897 win 31856 12


[Link].1509 > [Link].2823: . 35929:37377(1448) ack 1 win 32120
[Link].1509 > [Link].2823: . 37377:38825(1448) ack 1 win 32120
[Link].1509 > [Link].2823: . 38825:40273(1448) ack 1 win 32120
Control de Congestión
“Demasiado” tráfico en un enlace hace ¿Cómo aumentar la tasa?
que la “calidad” se “degrade”:  Slow Start
Congestión
 Al comenzar cwnd = 1 segmento del
MSS
Procedimiento: – La ventana es mín{win, cwnd}
 No hay congestión ⇒ Aumentar – Al principio solo se puede
tasa enviar un segmento
 Congestión ⇒ Disminuir tasa – En realidad (RFC 2581) debe
ser: cwndinicial< 2xMSS
¿Cómo detectar la congestión?  Por cada ACK (que confirme
nuevos datos) que se reciba se
 Descarte por desbordamiento de
incrementa cwnd en 1 segmento del
buffer ⇒ Congestión
MSS
 Detección de pérdidas
– Timeout
¿Cómo reducir la tasa?
– ACKs duplicados
Congestion avoidance
 La conexión comienza con cwnd=1
 Slow Start incrementa exponencialmente el tamaño
de cwnd
 Ante detección de congestión mediante pérdidas:
– Reducir la tasa de envío reduciendo la ventana de
congestión
– Diferente reducción ante detección por timeout o por ACKs
duplicados
 Algoritmo...
Congestion avoidance
 Inicialización: cwnd=1, ssthresh=65535 TCP Tahoe
 Slow Start (…)
 Si se detecta una pérdida (…):
– ssthresh = mín{ cwnd, win }/2
[RFC2581] ssthresh = máx {FlightSize/2, 2} (…)
Por Timeout:
– cwnd=1, comienza Slow-start de nuevo (…)
Nuevos datos son confirmados:
– Si cwnd<=ssthresh : Slow-start, cwnd+=1 (crecimiento exp.) (…)
– Si cwnd>ssthresh : Congest. avoidance, cwnd+=1/cwnd (crecimiento lineal)
(…)
cwnd Detección
de pérdida
n

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

754.291021 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 205 3


754.291137 eth0 > [Link].3014 > [Link].1069: P 409:613(204) ack 1
754.291257 eth0 > [Link].3014 > [Link].1069: P 613:817(204) ack 1
754.746127 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 409 4
754.746234 eth0 > [Link].3014 > [Link].1069: P 817:1021(204) ack 1
754.746353 eth0 > [Link].3014 > [Link].1069: P 1021:1225(204) ack 1
755.832827 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 817 5
755.832948 eth0 > [Link].3014 > [Link].1069: P 1225:1429(204) ack 1
755.833066 eth0 > [Link].3014 > [Link].1069: P 1429:1633(204) ack 1
755.833182 eth0 > [Link].3014 > [Link].1069: P 1633:1837(204) ack 1
756.327987 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 1225 6
756.328105 eth0 > [Link].3014 > [Link].1069: P 1837:2041(204) ack 1
756.328220 eth0 > [Link].3014 > [Link].1069: P 2041:2245(204) ack 1
756.328333 eth0 > [Link].3014 > [Link].1069: P 2245:2449(204) ack 1

760.697798 eth0 > [Link].3014 > [Link].1069: P 1225:1429(204) ack 1 1 3


761.796804 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 1429 2
Ejemplo (II)

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

764.101234 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 2245 4


764.827096 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 2449 4 (1)
764.827200 eth0 > [Link].3014 > [Link].1069: P 2449:2653(204) ack 1
764.827315 eth0 > [Link].3014 > [Link].1069: P 2653:2857(204) ack 1
764.827428 eth0 > [Link].3014 > [Link].1069: P 2857:3061(204) ack 1
764.827541 eth0 > [Link].3014 > [Link].1069: P 3061:3265(204) ack 1
766.320277 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 2857 4 (2)
766.320406 eth0 > [Link].3014 > [Link].1069: P 3265:3469(204) ack 1
766.320523 eth0 > [Link].3014 > [Link].1069: P 3469:3673(204) ack 1
766.758919 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 3265 4 (3)
766.759024 eth0 > [Link].3014 > [Link].1069: P 3673:3877(204) ack 1
766.759141 eth0 > [Link].3014 > [Link].1069: P 3877:4081(204) ack 1
767.859805 eth0 < [Link].1069 > [Link].3014: . 1:1(0) ack 3673 4 (4)
Ejemplo (III)

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

– Por desordenamiento o pérdidas


Seq n+2 ACK n
– Desordenamiento breve, no más de 2
ACKs duplicados ACK n
– Si recibimos 3 o más supondremos
⇒ pérdida tiempo
– Cada uno indica que un segmento ha
llegado
 [RFC 2581] “...The receiver should
send an inmediate ACK when it ACK (ACKn)
ACKn (dup1)
receives a data segment that fills in
ACKn (dup2)
all or part od a gap in the sequence
ACKn (dup3)
space”
Fast recovery, Fast retransmit
 TCP Reno TCP Reno
 Inicialización: cwnd=1, ssthresh=65535
 Slow Start
 Si se detecta una pérdida:
– ssthresh = mín{ cwnd, win }/2
[RFC2581] ssthresh = máx {FlightSize/2, 2}
Por Timeout:
– cwnd=1, comienza Slow-start de nuevo
Si se detecta mediante un 3º ACK duplicado
– Retransmitir el segmento que parece faltar (Fast Retransmit)
– A continuación Fast Recovery en vez de Slow-start
– Porque siguen llegando segmentos al otro extremo
– cwnd = ssthresh + 3 (los 3 duplicados indican que 3 han llegado)
– Por cada ACK duplicado adicional cnwd+=1 y transmitir si lo permite cwnd
– ACK que confirme nuevos datos (se ha completado el hueco):
cwnd=ssthresh y pasa a hacer Congestion avoidance
Ejemplo (I)

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

[Link].5000 > [Link].1069: P 1:949(948) ack 1 win 32232


[Link].5000 > [Link].1069: P 949:1897(948) ack 1 win 32232
[Link].1069 > [Link].5000: . 1:1(0) ack 949 win 31284 3

[Link].5000 > [Link].1069: P 1897:2845(948) ack 1 win 32232


[Link].5000 > [Link].1069: P 2845:3793(948) ack 1 win 32232
[Link].1069 > [Link].5000: . 1:1(0) ack 1897 win 32232 4
[Link].5000 > [Link].1069: P 3793:4741(948) ack 1 win 32232
[Link].5000 > [Link].1069: P 4741:5689(948) ack 1 win 32232
[Link].1069 > [Link].5000: . 1:1(0) ack 3793 win 31284 5
[Link].5000 > [Link].1069: P 5689:6637(948) ack 1 win 32232
[Link].5000 > [Link].1069: P 6637:7585(948) ack 1 win 32232
[Link].5000 > [Link].1069: P 7585:8533(948) ack 1 win 32232
[Link].1069 > [Link].5000: . 1:1(0) ack 5689 win 31284 6


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

[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 DUP 3 15


[Link].5000 > [Link].1069: P 52141:53089(948) ack 1 win 32232

[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 18


[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 19
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 20
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 21
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 22
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 23
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 24
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 25
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 26
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 27
Ejemplo (III)

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

[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 32


[Link].5000 > [Link].1069: . 81529:82477(948) ack 1 win 32232

[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284


win = 33 33
[Link].5000 > [Link].1069: . 82477:83425(948) ack 1 win 32232

[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 34


[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 35
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 36
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 37
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 38
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 39
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 40
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 41
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 42
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284
win = 9 43
[Link].1069 > [Link].5000: . 1:1(0) ack 52141 win 31284 44
[Link].1069 > [Link].5000: . 1:1(0) ack 81529 win 8532 15
Ejemplo (y IV)

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

[Link].5000 > [Link].1069: . 90061:91009(948) ack 1 win 32232


[Link].5000 > [Link].1069: . 91009:91957(948) ack 1 win 32232
[Link].5000 > [Link].1069: . 91957:92905(948) ack 1 win 32232
[Link].5000 > [Link].1069: . 92905:93853(948) ack 1win=33
win 32232
[Link].5000 > [Link].1069: . 93853:94801(948) ack 1 win 32232 cwnd ≤ ssthresh
[Link].5000 > [Link].1069: . 94801:95749(948) ack 1 win 32232
[Link].1069 > [Link].5000: . 1:1(0) ack 83425 win 31284 16

[Link].5000 > [Link].1069: . 95749:96697(948) ack 1 win 32232


[Link].5000 > [Link].1069: . 96697:97645(948) ack 1 win 32232
[Link].5000 > [Link].1069: . 97645:98593(948) ack 1 win 32232
[Link].1069 > [Link].5000: . 1:1(0) ack 85321 win 31284 16 (1)

También podría gustarte