Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Índice
1.1. Introducción...............................................................................................................................................1
1.2. Retardos.....................................................................................................................................................3
2. Capa de aplicación........................................................................................................................................4
DNS (Domain Name System)...........................................................................................................................4
3. Capa de transporte........................................................................................................................................6
UDP: User Datagram Protocol..........................................................................................................................6
RDT: Reliable Data Transfer............................................................................................................................7
TCP: Transmission Control Protocol................................................................................................................9
4. Capa de red.................................................................................................................................................13
Routers............................................................................................................................................................13
Protocolo IP (IPv4).........................................................................................................................................14
Direccionamiento IP.......................................................................................................................................14
Protocolos de encaminamiento.......................................................................................................................16
Broadcast........................................................................................................................................................19
5. Capa de enlace............................................................................................................................................19
Protocolos de múltiples accesos......................................................................................................................19
1.1. Introducción
Definiciones/conceptos básicos:
• Internet: Conjunto de dispositivos/ordenadores interconectados de forma que puedan intercambiar
información.
• Host (/sistema terminal): Dispositivo conectado a la red que provee y utiliza servicios de ella. Posee
una dirección IP única. → Punto de inicio/fin de transferencia de datos.
• Aplicaciones distribuidas (/running network apps): no funcionan sin internet. Cliente-servidor (2
niveles), cliente-middleware-servidor (3 niveles), multinivel.
• Enlaces de comunicación: de cable coaxial, hilo de cobre, fibra óptica, espectro de radio…
• Conmutadores de paquetes (/packet switches): Routers y switches de la capa de enlace. Toma un
paquete que recibe por uno de sus enlaces de comunicación de entrada y lo reenvía por uno de salida.
• Paquetes: Segmentación de los datos que quiere enviar un host emisor al que se añade una cabecera
de bytes.
• ISP (Internet Service Provider): Empresa que conecta a sus clientes a Internet (a través de ADSL,
Cablemódem, dial-up, …). Internet es una red de redes = ISP’s interconectadas. Una ISP’s puede ser
nacional/global o local/regional.
• Protocolo de comunicación: Controla el envío y la recepción de información dentro de Internet.
TCP, IP, Wifi, HTTP (web), 4G, Skype…
• Estándares de Internet: desarrollados por el IETF (Internet Engineering TaskForce).
• RFC (Request for comments): documentos asociados a los estándares de Internet que describen los
distintos aspectos del funcionamiento de Interntet.
• Núcleo de Internet: formado por los conmutadores de paquetes. Las aplicaciones de
internet/distribuidas se ejecutan en los sistemas terminales (hosts) y no en el núcleo de red
(routers…). El núcleo sólo se encarga de facilitar el intercambio de datos entre los hosts (no de la
app que esté actuando como origen/destino).
• Interfaz de sockets: especifica cómo un programa que se ejecuta en un host pide a la infraestructura
de Internet que suministre datos a un programa específico que se esté ejecutando en otro host. →
Conjunto de reglas que debe cumplir el programa emisor para poder transmitir datos a través de
internet.
• Almacenar – reenviar: El router tiene que haber recibido todo el paquete antes de reenviarlo.Cada
paquete se transmite con la capacida máxima del enlace (full link capacity).
1
Conmutación de paquetes (/Packet switching)
Los hosts segmentan los mensajes de la capa de aplicación en paquetes, que se envían de un router al
siguiente a través de los enlaces de comunicación hasta llegar al host de destino.
Reenviar: Acción local. Trasladar los paquetes entrantes del enlace de entrada del
router al enlace apropiado de salida.
Funciones del
núcleo Dirigir: Acción global. Algoritmos de encaminamiento. Determinar el camino desde el
origen al destino de los paquetes.
Si un paquete tarda más en enviarse que su tasa de transmisión, los que vengan detrás se encolarán en la
memoria/búfer del router. Si no caben se pierden.
Conmutación de circuitros
Alternativa para transportar datos por la red. Los recursos necesarios a lo largo de la ruta (buffers, ancho de
banda) de comunicación son reservados durante el tiempo que esta dura. Ruta reservada = circuito
(/conexión).
• No se utilizan colas para acceder a los enlaces de comunicación, pero es posible que, si los recursos
están ocupados, tengamos que esperar hasta que los liberen. Cuando esto pase la ruta entera será
nuestra.
• Garantiza una velocidad de transmisión constante.
• Mejor que la conmutación de paquetes para transmitir audio/video → Redes telefónicas.
Multiplexación en redes de conmutación de circuitos: cómo combinamos señales distintas en un mismo
circuito.
2
1.2. Retardos
1. Retardo de procesamiento (dproc): Procesamiento nodal. Tiempo para examinar la cabecera del
paquete y determinar por dónde hay que enviarlo + comprobar errores a nivel de bit. Suele ser < µs.
2. Retardo de cola (dqueue): depende del nº de paquetes en la cola (/nivel de congestión). Es el tiempo de
espera en cola al ser transmitido por el enlace de salida. Del orden de (µs, ms).
3. Retardo de transmisión (dtrans): tiempo que tarda el router en introducir todos los bits del paquete en
el enlace / lo que tarda el paquete en atravesar el router.
4. Retardo de propagación (dprop): tiempo que tarda 1 bit del paquete en propagarse desde el principio
del enlace hasta el equipo de destino.
L∗a
~ 0 : Retardo de cola pequeño
R
R = link bandwidth
L∗a
L = packet length ~ 1 : Retardo de cola grande
R
a = average packet arrival rate
L∗a
> 1 : Retardo ∞ (llega más trabajo del que se puede servir)
R
Traceroute: Programa simple que se puede ejecutar en cualquier host. Sirve para ver el orden de la
magnitrud del retardo extremo a extremo de una red. Manda un paquete especial a cada router de la ruta
calculada hasta el destino. Estos cuando lo reciben, devuelven al host un mensaje. El host mide y calcula el
tiempo transcurrido entre cada transmisión y respuesta.
Retardo extremo a extremo: dext-ext = N*( dproc + dqueue+ dtrans + dprop) . Si no hay congestión, dqueue = 0.
Throughput (tasa de transferencia / rendimiento): Velocidad (bits/s) en que se envían los bits desde el
emisor al receptor => cuántos bits he enviado en un segundo. Puede ser instantánea (en un determinado
momento) o media. Es la velocidad de enlace mínima de entre todos los enlaces de la red.
Rs < Rc : el enlace al cliente (Rc) recibirá los bits a velocidad
Rs y los transmitirá tal cual llegan.
Rs > Rc : Rs no podrá transmitir los bits que le llegan a una
velocidad mayor a la suya por lo que podrían acumularse en
el router (y perderse). Cuello de botella: el enlace de Rc
limita la tasa de transferencia.
3
La conforman las aplicaciones de red y sus
2. Capa de aplicación protocolos de nivel de aplicación
Arquitectura cliente-servidor: Suele contar con un centro de datos cuando hay muchos servidores.
1. Servidor: host siempre activo. Da servicio a las solicitudes de los hosts clientes. Dirección IP
permanente.
2. Cliente: no se comunican directamente entre sí, si no que contactan primero con el servidor.
Arquitectura P2P (peer to peer): Comunicación directa entre parejas de hosts (pares). No pasan por un
servidor dedicado. Comunicación entre procesos (programas que se ejecutan en un host):
1. Sistema de comunicación inter-procesos: (procesos de un mismo host) aplican reglas del SO.
2. Mensajes: que intercambian los procesos de distintos hosts. El proceso cliente inicia la comunicación
y el proceso servidor espera a ser contactado.
Socket: interfaz SW con la que un proceso envía/recibe mensajes a/de la red. Hay uno a cada lado de la
comunicación. (~ Puerta entre la capa de aplicación y la de transporte).
Direccionamiento de procesos: Se utiliza la dirección IP (32 bits) para identificar al host y el nº de puerto
para identificar el proceso receptor (socket receptor).
Protocolos de la capa de aplicación: pueden ser abiertos (todos tienen acceso; RFC, HTTP, SMTP...) o
cerrados (Skype). Establecen el tipo, la sintaxis y la semántica de los mensajes y otras reglas (cuándo y cómo
enviar/recibir).
Servicios de la capa de transporte para las aplicaciones: transferencia de datos fiable (transferencia del
100% vs tolerancia de pérdidas), tasa de transferencia (apps sensibles al ancho de banda vs apps elásticas),
temporización, seguridad (cifrado, fiabilidad...).
DNS: proporciona un servicio de directorio a Internet. Sus servicios incluyen traducir/mapear el nombre del
host con su dirección IP, almacenar el alias del host (es una alternativa al nombre original/nombre canónico)
y el alias del servidor de correo, y ejerce una distribución de carga (evitamos tener servidores web
replicados, asociamos al mismo nombre un conjunto de direcciones IP). DNS es, por tanto:
1. Base de datos distribuida. Implementada en una jerarquía de servidores DNS ("name servers"), los
cuales suelen ser máquinas UNIX que ejecutan SW BIND (Berkeley Internet Name Domain).
2. Protocolo de la capa de aplicación. Permite a los hosts consultar la base de datos para traducir otros
nombresde hosts en sus direcicones IP.
No podemos centralizar DNS porque no podría escalarse: Si fallara, fallaría TODA la red; un único servidor
no puede gestionar los >100M de hosts; no puede estar "cerca" de todos; mantenimiento frecuente y caro.
4
1. Implementar su propio servidor DNS autoritativo: para almacenar los registros DNS de sus
propios hosts de acceso público.
2. Pagar por tener dichos registros almacenados en el servidor DNS autoritativo de otro proveedor
de servicios.
.com DNS servers .org DNS servers .edu DNS servers TLD
Servidores DNS local (/serv. de nombres predeterminados): Lo tiene cada ISP (tanto residencial como
institucional). Cuando un host se conecta a un ISP, este le proporciona la dirección IP de uno o más de sus
servidores DNS locales. Generalmente este servidor se encuentra "cerca" (misma LAN en ISP institucionales
o a un par de routers en ISP residenciales). El DNS local actúa como un proxy, reenviando la consulta DNS
del host a la jerarquía de servicios DNS.
Consultas DNS: iterativas (el servidor contactado contesta con el servidor (/lista de servidores) al que
recurrir), o recursivas (el servidor contactado contacta él mismo con el (/los) servidor al que recurrir (y este
igual, de forma recursiva).
Almacenamiento caché DNS: Un servidor DNS puede almacenar la información de una petición/consulta
en su memoria local de forma que si recibe otra solicitud igual puede responder de forma inmediata sin tener
que volver a recurrir a los servidores DNS de niveles superiores. Gracias a esto, la mayor parte de las
consultas se saltan los servidores raíz. Estas entradas caché se descartan pasados un par de días.
Registros DNS: Son los registros de recursos (RR) que se transportan en los mensajes de respuesta a las
solicitudes. Contienen los campos: nombre, valor, tipo, TTL. El tipo puede ser uno de los siguientes (según
el cual los demás campos adotarán el valor indicado):
• A: nombre: nombre canónico del host; valor: dirección IP.
• NS: nombre: dominio; valor: nombre del host de un serv. autoritativo de ese dominio.
• CNAME: nombre: alias; valor: nombre canónico.
• MX: nombre: alias (correo); valor: nombre canónico.
Mensajes DNS: Encapsulan los datos de solicitud/respuestas de DNS. Tienen el siguiente formato:
Inserción de registros en la base DNS: hay un registrador, que es una entidad comercial que verifica la
unicidad del nombre de dominio, lo añade a la base de datos DNS y cobra por sus servicios.
5
Proporciona una comunicación lógica entre procesos de
3. Capa de transporte aplicación que se ejecutan en hosts distintos.
1. Lado emisor (proceso de multiplexación): reune los fragmentos de datos desde los diferentes
sockets (mensajes del proceso de aplicación) y los encapsula en paquetes de la capa de transporte
(segmentos: división del mensaje de aplicación + cabecera de la capa de transporte).
2. La capa de transporte pasa cada segmento a la capa de red del lado emisor, donde se encapsulan
dentro de un paquete de la capa de red (datagrama) y se envía al destino.
3. Lado receptor (proceso de demultiplexación): la capa de red extrae del datagrama el segmento y se
lo pasa a la capa de transporte, que lo procesa y pone a disposición de la capa de aplicación. Se
utiliza las direcciones IP del origen y destino (contenidas en el datagrama) y los números de puerto
para dirigir el segmento a su socket*.
* Cada proceso en ejecución tiene su propio socket (y puede tener varios) para la entrada y salida de
mensajes. Cada socket se identifica por su nº de puerto, de forma que cuando un host recibe un segmento,
sabe a qué proceso pertenece y hay que dirigirlo. En sí un socket es un decriptor (como los descriptores de
ficheros), un nº que apunta a un apartado donde se especifica el tipo de conexión (UDP/TCP), el
origen/destino, ...).
→ NO es un proceso de negociación
UDP: User Datagram Protocol → NO es fiable
→ NO controla la congestión
Multiplexación y demultiplexación con UDP:
Los sockets UDP se identifican únicamente por la dirección IP y el nº de puerto.
Un mismo socket de un proceso puede recibir mensajes de distintos hosts (o
procesos) por lo que, al recibirlos, el host de destino debe comprobar de
dónde viene (dir. IP y nº puerto origen) para saber de qué conexión viene y a
quién contestar. → Los distintos orígenes comparten un mismo canal/puerta
de conexión hasta el socket destino por lo que vienen mezcladitos.
Ventajas de UDP:
1. NO hay control de la congestión = UDP se ocupa únicamente de empaquetar un segmento y enviarlo,
no controla la congestión ni el estado de los paquetes anteriores, por lo que se puede enviar a la
velocidad que sea. -> Más clientes activos (aunque menos fiable).
2. NO hay proceso de negociación = me ahorro retrasos de RTT añadidos.
3. NO hay información del estado de la conexión = más simple.
4. Cabecera pequeña (8B vs los 20B de TCP).
Aplicaciones:
1. DNS Protocolos de la capa de → Si necesitamos una transferencia fiable (aún
2. SNMP aplicación
utilizando UDP (p.e: HTTP/3), añadimos fiabilidad
3. HTTP/3 y control de congestión en la capa de aplicación.
4. Apps multimedia de streaming
nº puerto origen n.º puerto destino El checksum sirve para detectar errores en el segmento
transmitido. Se trata el contenido del segmento como
Tamaño del segmento* Checksum
secuencias de enteros de 16b y los sumamos. NO fiable
Payload / datos de/para la capa de aplicación (bits desordenados pueden crear el mismo checksum).
* Incluye la cabecera
6
Principios de la transferencia de datos fiable
RDT: Reliable Data Transfer
La capa de transporte utiliza la capa de red para tranferir datos, la cual es no confiable. →Utilizamos rdt
(reliable data transfer protocol) en los extremos de la comunicación.
rdt_send(data) rdt_rcv(packet)
Esperar Esperar
llamada de la packet = make_pkt(data) llamada de la extract (packet,data)
capa superior udt_send(packet) capa inferior deliver_data(data)
Emisor Receptor
rdt_send(data)
Esperar
Esperar Esperar rdt_rcv(rcvpkt) && llamada de la
llamada de la ACK / NAK isNAK(rcvpkt) capa inferior rdt_rcv(rcvpkt) &&
capa superior udt_send(sndpkt) notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
Receptor udt_send(ACK)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
Emisor L
7
Rdt2.1 : Canal con ACK/NAK corruptos
Si un ACK/NAK llega corrupto, el emisor no puede saber si el mensaje ha llegado bien. En estos casos se
asume que el paquete NO ha llegado (NAK) y se retransmite. Esto puede generar paquetes duplicados,
solución: el emisor añade un nº de serie a cada paquete, y el receptor descarta los duplicados.
timeout
udt_send(send_packet)
rdt_rcv(rcvpkt) &&
Start_timer
isACK(rcvpkt, i) && notCorrupt(rcvpkt)
Stop_timer
i++
Pipelined protocols
Con este último mecanismo el emisor se pasa mucho tiempo esperando (RTT + L/R) mientras el canal está
libre. Solución: enviamos varios paquetes de forma simultánea sin la necesidad de esperar al ACK del 1º para
enviar el 2º. = Aumentamos el número de serie (hasta ahora era 0 o 1) = varios paquetes "en vuelo". El
número máximo de paquetes en vuelo se denomina la ventana.
En cuanto recibo un ACK, "deslizo" la ventana y dejo pasar otro paquete a enviar. Es secuencial, no puedo
deslizar la ventana hasta recibir el ACK del paquete más antiguo.
8
Mecanismos para gestionar pérdidas (implementar la fiabilidad)
1) Go-Back-N
• Emisor: tiene un sólo temporizador, asociado al paquete más antiguo de la ventana. Un búfer guarda
todos los paquetes enviados que aún no han sido confirmados por si hay que reenviarlos.
• Receptor: únicamente sabe qué paquete espera. Si recibe el paquete esperado, lo manda a la capa de
aplicación, y si recibe otro cualquiera lo descarta o lo guarda en un búfer (si tiene). Le manda al
emisor un ACK que indica cuál es el siguiente paquete que espera (no manda un ACK por paquete,
sino que puede recibir varios paquetes consecutivos y luego indicar por cuál se ha quedado).
◦ Si pierde o recibe un paquete corrupto, descarta tanto este como los que han llegado detrás de él
y manda un ACK indicando cuál espera. El emisor no sabe que el paquete se ha
perdido/corrompido pero por este ACK el paquete perdido pasará a ser el más antiguo en el búfer
y se retransmitirá cuando el temporizador expire.
2) Selective repeat
• Emisor: cada paquete de la ventana tiene su propio temporizador. Por cada paquete recibido en el
destino recibiré un ACK. A medida que los recibo los voy eliminando del búfer y voy deslizando la
ventana. Si expira algún temporizador retransmito únicamente el paquete en cuestión.
• Receptor: tiene un búfer de recepción. Si recibe los paquetes en orden los va mandando a la capa de
aplicaciónk si llegan desordenados los deja en el búfer. 1 ACK por cada paquete que llega.
◦ Difícil implementación (demasiados temporizadores).
9
Estructura de un segmento TCP:
nº puerto origen n.º puerto destino n.º secuencia: hace referencia al flujo de B transmitido
n.º serie (/secuencia) (NO a la serie de segmentos). P.e: si tengo 20 paquetes
de 500B cada uno y el primer segmento tiene asignado
ACK (n.º serie del sig. paquete esperado)
el n.ºsecuencia 0, el segundo segmento tendrá el nºsec
* ** C E U A P R S F rwnd/Ventana recepción 500, el tercero el 1000,…)
Checksum Urg. Data pointer
ACK (n.º reconocimiento): hace referencia al flujo de B
Opciones (variable) que espera recibir (n.º secuencia del siguiente B que
espera recibir del otro. (B del flujo que espera recibir).
Datos de aplicación
(longitud variable) Ventana de recepción: n.º de B que el receptor está
dispuesto a aceptar.
* tamaño de la cabecera
** Not used
Control de flujo TCP : El receptor avisa al emisor del espacio que tiene libre en su bufer de recepción (lo
indica en el campo "rwnd") en los ACK's. De esta forma el receptor controla la cantidad de B transmitidos
(nº paquetes en vuelo) por el emisor. Así no envía demasiados paquetes que puedan sobrecargar el buffer del
receptor (que se pierden).
• El tamaño del búfer del receptor se establece al crear el socket, suele ser 4096B
10
Emisor (gestión del temporizador) : al enviar un segmento, si no está ya corriendo, pone un temporizador
(~segmento más antiguo SIN reconocer / sin ACK).
• Si expira (timeout) : retransmito el segmento que lo ha producido (el más antiguo) y reinicio el
temporizador.
• Si recibo un ACK (que reconoce anteriores segmentos sin ACK): actualizo los segmentos que acabo
de reconocer (los elimino del búfer) y reinicio el temporizador (si aún me quedan paquetes sin ACK)
Receptor (gestión de ACK's) :
1er ACK: Recibido segmentos 1 y 2 (“espero el que
comienza en el B nº 1000”)
2º ACK: He recibido el 4 pero me falta el 3
Si el ACK se pierde: timeout en el emisor
• ACK's duplicados! (Los dos esperan el paquete
(retransmite el paquete correspondiente a ese
con nº secuencia 1000) = Indican al emisor que el
ACK. El receptor descarta dicho paquete
paquete 3 no ha llegado, por lo que este
porque ya lo había recibido y envía un ACK
retransmite tanto este paquete como los que
con el nº de secuencia esperado.
vienen después (el 4)
11
Control de congestión: Cuando hay demasiados emisores transmitiendo demasiado rápido: retardos
(aumenta dqueue) y pérdida de paquetes (buffer overflow).
• Principios del 1. La tasa de transferencia no puede exceder la capacidad del enlace.
control de 2. El retardo aumenta a medida que alcanzamos la capacidad máxima
congestión: 3. Las pérdidas/retransmisiones disminuyen la tasa de transferencia efectiva
Idea: Los emisores pueden ir aumentando su velocidad de transmisión linealmente hasta que experimenten
pérdidas (congestión), en cuyo caso la disminuyen exponencialmente (ajustamos dinámicamente cwnd).
• Additive Increase: aumento la vel. de envío en 1 tamaño máximo de segmento (1MSS) cada RTT.
• Multiplicative Decrease: disminuyo a la mitad la velocidad en cada evento de pérdida.
cwnd
TCP rate≈ Último B enviado – último B confirmado (ACKed) <= cwnd
RTT
FASE 1: Arranque lento: en el inicio o justo tras un timeout (siempre por debajo del umbral). cwnd =1MSS
• crecimiento inicial exponencial: duplico cwnd cada RTT (por cada ACK recibido). Pasamos a un
incremento lineal en cuanto cwnd vale la mitad de su valor al alcanzar el primer timeout por pérdida.
En cuanto se provoca la primera pérdida establecemos un umbral = cwnd/2. Se reinicia el proceso
(cwnd=1MSS) solo que esta vez en cuanto cwnd llega al umbral pasa a crecer.
FASE 2: Evitación de la congestión: cuando estamos por encima del umbral cwnd~cwnd/2. Incremento
lineal (1MSS/RTT) hasta que se produce uno de los siguientes eventos:
1. Fin de temporización/ pérdida de paquete→ FASE 1/ arranque lento
cwnd
▪ cwnd = 1MSS ; umbral= (de la última pérdida)
2
2. 3 ACK's duplicados → FASE 3/ recuperación rápida
cwnd cwnd
▪ cwnd= + 3 MSS ; umbral=
2 2
FASE 3: Recuperación rápida: tras 3 ACK's duplicados.
• Cwnd aumenta en 1MSS por cada ACK duplicado del segmento que falta. Si llega un ACK para este
segmento: disminuimos de nuevo cwnd (FASE 2). Si timeout: FASE 1.
TCP Tahoe: no tiene la fase 3, si no que en cuanto hay pérdidas por timeout o por 3 ACK's vuelve a fase 1.
TCP Reno: Incorpora la fase 3
TCP Cubic: Suaviza el incremento de cwnd para aprovechar los puntos en los que esté cerca de su máximo.
(Default en Linux).
12
Comunicación extremo a extremo entre dos hosts
4. Capa de red
Hay muchos protocolos en todas las demás capas, sin embargo sólo uno en la
capa de red y que debe ser implementado por todos los dispositivos de Internet
(hosts, routers).
El router se encarga de encontrar una ruta desde el host de origen al destino
(examina los campos del datagrama IP para averiguar por qué puerto de salida
enviarlo).
Routing (/enrutamiento): calcular la ruta extremo a extremo. Proceso de toda la red (se crean algoritmos de
encaminamiento) → Plano de control.
Forwarding (/reenvío): mover el paquete a la interfaz de salida del router. Acción local → Plano de datos.
Plano de datos: función local, de cada ruter. El HD del router se encarga de hacer el reenvío (material de
conmutación rápido, ns). Determina cómo un datagrama que llega desde un puerto de entrada es reenviado
hacia el puerto de salida.
Plano de control: encaminamiento a nivel global (network-wide). Hay dos enfoques:
• Algoritmos de encaminamiento tradicionales: implementados en los routers.
• SDN (software-defined networking): implementado en servidores remotos, los cuales calculan y
descargan en cada router las correspondientes tablas de reenvío.
Routers
El modelo de servicio de red define los servicios que ofrece/garantiza la red. Se ha observado que el modelo
básico de servicio de mejor esfuerzo de Internet ("best effort" service: no garantiza la entrega, ni un plazo u
orden de entrega, ni ancho de banda disponible en toda la conexión), combinado con una provisión adecuada
de ancho de banda, ha resultado ser suficientemente bueno. Hay otras arquitecturas de red (ATM) que
ofrecen entrega garantizada, con retardo limitado, paquetes en orden, ancho de banda mínimo, seguridad....
Puerto de entrada: el objetivo es completar el procesamiento a velocidad de línea (line speed). Si los
datagramas llegan más rápido que la tasa de reenvío se encolan en su puerto de entrada (HOL blocking:
head-of-the-Line).
• Reenvío basado en el destino (destination-based forwarding): basado en la dirección IP de destino.
◦ Regla de la coincidencia con el prefijo más largo (longest prefix match): se envía el paquete por
la interfaz de enlace asociada al prefijo más largo coincidente con la dirección de destino.
• Reenvío generalizado (generalized forwarding): basado en un conjunto de valores de cabeceras.
Conmutación (/switching): se envía el paquete desde el enlace de entrada al de salida. Tres formas:
memory
13
Planificación de paquetes:
1. FCFS (First-Come-First-Served) / FIFO
2. Priority (se clasifica el tráfico entrante, se encola según su prioridad y luego FCFS)
3. Round robin (se clasifica en varias colas, que se sirven cíclicamente (1,2,3,1,2,3,1,2,3...))
4. Weighted fair queueing (WFQ/ colas equitativas ponderadas. Round Robin pero cada clase tiene un
peso que determina la cantidad de servicio que recibe).
Protocolo IP (IPv4)
Estructura de un datagrama IPv4:
Tam. Tipo de Tipo de servicio: diffserv (0:5) ; ECN (6:7)
Versión Tamaño total
Cabec. servicio
TTL (Time To Live): máximo nº de saltos restantes (se
Fragment offset decrementa en cada router por el que pasa).
Identificador 16b Flags
(13b)
Protocolo Identificador (16b) es el mismo para todos los fragmentos
TTL Checksum de un mismo datagrama.
capa sup.
Dir. IP origen (32b) Flags: DNF (Do Not Fragment), MF (More Fragments;
Dir. IP destino MF=0 indica el último fragmento del datagrama).
MTU (Max. Transmission Unit): Los enlaces de red tienen un tamaño máximo de trama que pueden
transferir. Los datagramas que no caben se fragmentan: sólo se reconstruye en el destino, la cabecera
identifica y ordena los fragmentos de un mismo datagrama.
• Los fragmentos deben tener longitud múltiplo de 8.
• Offset del último fragmento (MF=0) + su length = tamaño total del datagrama fragmentado.
• Offset = 0 y MF = 0 : datagrama no fragmentado.
Overhead (/sobrecarga): 20B de TCP + 20B de IP + sobrecarga de la capa de aplicación por TCP+IP.
Subred: conjunto de equipos (/interfaces) que se pueden comunicar físicamente sin necesidad de pasar por
un router. Un simple enlace entre dos routers es una subred (los routers mismos están conectados entre sí sin
pasar por otro router).
Direccionamiento IP
CIDR (Classless InterDomain Routing): Jerarquía. Una dirección IP tiene una parte que identifica la subred
(bits de mayor orden) y otra que identifica al equipo (bits menos significativos). Tiene 32 bits y se representa
por 4B separados por un punto: a.b.c.d/x , donde “x” es una máscara que indica cuántos bits de los 32
definen la subred (los x primeros bits). X = 0 es todo Internet.
• 221.1.3.77/24 : Llos primeros 24 bits pertenecen a la identificación de la subred (221.1.3). Esto nos
deja los 8 últimos bits para la identificación del host (77).
14
¿Cómo funciona? - Se ha dividido el planeta para asignar direcciones IP: los 3 primeros bits indican el
continente, los siguientes el país, los siguientes al operador (Telefónica, Movistar…), etc.
• Hay dos direcciones reservadas: broadcast (última dirección del rango asignado a la subred) y el
identificador de la subred (la primera dirección del rango asignado).
IPv6
Versión prioridad Etiqueta de flujo ICANN asignó el último rango de direcciones IPv4 en
Límite de 2011. Como alternativa sale IPv6, que abarca direcciones
Payload len Next hdr de 128 bits.
saltos
Dir. IP origen (128b) No hay checksum, fragmentación, ni opciones (lo
Dir. IP destino (128b) proporcionaría la capa superior).
Transición de IPv4 a IPv6: tunneling and encapsulation. Se
Payload (datos) conectan dos routers IPv6 mediante una subred IPv4.
ICMP (Internet Control Message Protocol): Comunicación a nivel de red entre hosts y routers. Mensaje
ICMP: tipo, código (+ 8 primeros B del datagrama que causan error), descripción. Se utiliza con traceroute.
15
Protocolos de encaminamiento
Se trata de encontrar rutas eficientes entre el origen y el destino. Eficiente puede ser: menor coste, más
rápido, menos congestionado… Se utiliza una abstracción en forma de grafo (aristas =enlaces; vértices =
routers), y se define el coste de cada enlace. Clasificación de los algoritmos de encaminamiento:
• Estático (las rutas cambian muy lentamente).
• Dinámico (actualizaciones periódicas o en respuesta a un cambio en los costes).
• Global (todos los routers tienen una topología completa : “link state” algorithms).
• Descentralizado (proceso iterativo de computación / intercambio de información entre vecinos).
Complejidad algorítmica (para n nodos): O(n²). Se hacen n(n+1)/2 comparaciones porque en cada iteración
(de las n) hay que comprobar todos los nodos que no estén en N’. Hay implementaciones más eficientes
(O(nlogn)).
Complejidad de los mensajes: Dijkstra responde instantáneamente: cuando hay un cambio, actualiza todos
los nodos de una (cada router hace un broadcast del estado de sus enlaces a todos los demás). Nos ahorramos
iteraciones con respecto al vector de distancias, pero es más complejo. O(n²).
Problema: posibles oscilaciones cuando los costes del enlace dependen del volumen de tráfico (es variable).
➢ Solución: garantizar que no todos los routers ejecuten el algoritmo LS al mismo tiempo. Para evitar
que se auto-sincronicen, cada router elige aleatoriamente el instante en el que enviar un anuncio al
instante.
16
Distance vector algorithms (vector de distancias)
Iterativo, asíncrono, distribuido/descentralizado: cada nodo recibe información de uno o más de sus vecinos
directamente conectados, realiza un cálculo y luego distribuye los resultados de su cálculo de vuelta a sus
vecinos. Es iterativo porque este proceso continúa hasta que ya no se intercambia más información entre los
vecinos. Es asíncrono porque no requiere que todos los nodos operen sincronizados entre sí. Las malas
noticias viajan despacio y las buenas, rápido: si hay un ciclo los routers se van a ir engañando entre sí hasta
que su valor supere el coste preestablecido (inversa envenenadda).
Inversa envenenada. Ej: A---B---C : A anunciará a B que el coste para llegar a C pasando por A es infinito,
de tal forma que B no considere nunca el camino a C a través de A (porque igualmente tendría que volver a
pasar por sí mismo. Para A el coste de ir a C será el correspondiente a pasar por B y luego llegar a C).
Algoritmo de Bellman-Ford.
Complejidad de los mensajes: menor que la del estado de enlaces, porque sólo se mandan mensajes entre
los vecinos directos y cuando hay un cambio (no se actualiza periódicamente). El tiempo de convergencia
puede variar. → Puede haber ciclos/bucles. Problema general de la cuenta hasta infinito.
1. T = 0: x detecta un cambio en el coste, actualiza su vector de distancias e informa a sus vecinos del
cambio.
2. T = 1: v recibe la actualizacióin de x y actualiza su tabla. Calcula el nuevo coste mínimo y envía su
nuevo vector de distancias a sus vecinos.
3. T = 2: x recibe la actualización de v y actualiza su tabla. El coste mínimo de x no cambia por lo que
no se mandan mensajes.
¿Qué puede ocurrir si un router falla, funciona mal o es saboteado? Con el algoritmo de estado de enlaces,
un router podría difundir un coste incorrecto para uno de sus enlaces conectados (pero no para los otros). Un
nodo también podría corromper o eliminar cualquier paquete recibido como parte de un mensaje de difusión
LS. Pero, con el algoritmo LS, un nodo solo calcula su propia tabla de reenvío, mientras que otros nodos
realizan cálculos similares por sí mismos. Esto significa que los cálculos de rutas son hasta cierto punto
independientes en LS, proporcionando un mayor grado de robustez. Con el algoritmo de vector de distancias,
un nodo puede anunciar rutas de coste mínimo incorrectas a uno o a todos los destinos. En un sentido más
general, observamos que, en cada iteración, los cálculos de un nodo con el algoritmo de vector de distancias
se pasan a sus vecinos y luego, indirectamente, al vecino del vecino en la siguiente iteración. En este sentido,
con el algoritmo de vector de distancias, un cálculo de nodo incorrecto puede difundirse a través de toda la
red.
Intra-ISP routing
Realmente no todos los routers ejecutan el mismo algoritmo de encaminamiento y no son todos idénticos:
hay una gran escala de ellos y una atonomía administrativa (cada organización opera/administra su red de
su forma) que hace necesaria una organización de todos los routers en los denominados Sistemas
Autónomos (AS). Cada AS se forma por un grupo de routers que se encuentra bajo el mismo control
administrativo y ejecuta el mismo algoritmo de encaminamiento, denominado el protocolo de enrutamiento
interno del sistema autónomo.
• Intra-AS (/intra-domain): Protocolos de encaminamiento interno de cada AS: OSPF, RIP, EIGRP
• Inter-AS (/inter-domain): encaminamiento entre AS’s.
17
> Enrutamiento OSPF (Open Shortest Path First)
Especificaciones disponibles públicamente. Utiliza el algoritmo de estado de enlaces de Dijkstra y la técnica
de inundación de información para que cada router informe con un broadcast del estado de enlaces a toda la
red de AS, con mensajes OSPF que son transportados directamente por IP en vez de utilizar TCP/UDP. Todos
los mensajes se autentican para evitar intrusiones. Es jerárquico:
• Áreas locales: cada una ejecuta su propio OSPF de enrutamiento por estado de enlaces,
encargándose cada router de un área de difundir su información de estado de enlaces a todos los
restantes routers del área. Dentro de un área, uno o más routers de frontera de área son responsables
de enrutar los paquetes hacia fuera del área.
• Área troncal (backbone): sólo hay una en el AS. Se encarga de enrutar el tráfico entre las restantes
áreas del AS. Contiene todos los routers de frontera y puede contener también routers que no sean de
frontera. El enrutamiento entre áreas dentro del AS requiere que el paquete se enrute primero hacia el
router de frontera de área (enrutamiento interno), que luego se enrute a través del área troncal hasta
el router de frontera perteneciente al área de destino y que después se enrute hasta su destino final.
Inter-ISP routing
> BGP (Border Gateway Protocol)
Es un protocolo de enrutamiento entre sistemas autónomos, une los miles de ISP existentes en Internet. Es
descentralizado y asíncrono, y proporciona a cada router mecanismos para:
• Obtener información de los AS vecinos acerca de la alcanzabilidad de los prefijos. En particular,
BGP permite a cada subred anunciar su existencia al resto de Internet. Una subred vocifera “Existo y
estoy aquí”, y BGP garantiza que todos los routers de Internet sepan sobre ella.
• Determinar las “mejores” rutas hacia los distintos prefijos. Para determinar la mejor ruta, el router
ejecutará localmente un procedimiento de selección de rutas de BGP (utilizando la información de
alcanzabilidad de prefijos que ha obtenido de los routers vecinos). La mejor ruta se determinará
basándose tanto en las políticas existentes, como en la sinformación de alcanzabilidad.
◦ eBGP: conexión BGP externa, abarca dos AS. Obtener info de alcance de los AS vecinos.
◦ iBGP: conexión BGP interna, entre routers de un mismo AS. Propagar la información de alcance
a todos los ruters internos del AS.
Sesión BGP: dos routers BGP intercambian mensajes BGP a través de una conexión TCP semi-permanente.
Los routers de la frontera de los AS son routers de pasarela (gateway), y están conectados directamente a uno
o más routers de otros sistemas autónomos.
Hot potato running: si un router interno tiene varias vías para enviar un paquete, lo enviará por la que a
priori tenga el menor coste dentro de su AS (intra-domain), no se preocupa por los saltos o el coste que pueda
haber entre los routers de pasarela y demás AS’s.
18
Broadcast
Se utiliza para enviar un mensaje desde el origen a todos los demás nodos de la red (una copia por
destinatario). El origen necesita saber todas las direcciones:
• Inundación (flooding) descontrolada: broadcast a mis vecinos (el mensaje viene etiquetado para
saber que es un broadcast), y mis vecinos lo reenvían haciendo un broadcast a sus vecinos (menos
por donde lo ha recibido, a mí). Se producen paquetes duplicados.
• Inundación controlada: cada router con una tabla que indica qué ha enviado, por lo que únicamente
envía una copia del broadcast y si no lo había enviado antes. RPF (reverse path forwarding):
sólamente reenvío el paquete broadcast cuando llegue por la ruta más corta.
19
(2) Acceso aleatorio
1. Slotted ALOHA
Se asume: todas las tramas son del mismo tamaño, el tiempo en transmitir una trama siempre es el mismo
(tiempo dividido en slots del mismo tamaño), los nodos comienzan a transmitir en el inicio de un slot, están
sincronizados, todos los nodos detectan la colisión si 2 o más nodos transmiten en el mismo slot.
Operación: cuando un nodo obtiene una trama, la transmite en el siguiente slot: si no hay colisión, puede
enviar la siguiente trama en el siguiente slot, si hay colisión, se retransmite la trama fallida en cada slot
posterior con probabilidad p hasta que se haya mandado correctamente.
Es simple, descentralizado (únicamente los slots de cada nodo tienen que estar sincronizados), y permite que
un único nodo activo transmita a velocidad máxima. Pero cuando hay colisiones se desperdician slots
(además es posible que un nodo detecte la colisión más rápido de lo que es capaz de retransmitir el paquete).
Sincronización del reloj. Eficiencia máxima = 1/e = 0.37
2. Pure ALOHA: Es más simple que el slotted ALOHA, no necesita sincronización. Nada más tengo
una trama la transmito. La probabilidad de colisión aumenta al no haber sincronización. Eficiencia =
18%. (Peor que el slotted).
3. CSMA (carrier sense multiple access) Simple: escucho antes de retransmitir. Si el canal está inactio
transmito toda a trama. Si está ocupado: diferir/atrasar la transmisión. Pueden ocurrir colisiones si
dos nodos comienzan a transmitir antes de haber podido detectar la transmisión que el otro acaba de
comenzar (causado por el retardo de propagación y la distancia entre los nodos). Se desperdicia el
tiempo de toda la transmisión del paquete.
4. CSMA/CD (collision detection): Se usa en Ethernet. CSMA con detección de colisiones. Se aborta
la transmisión en cuanto se detecta una colisión (por lo que no se desperdicia todo el tiempo de una
transmisión completa). Más eficiente, simple y barato que ALOHA, además es descentralizado.
➢ Algoritmo Ethernet CSMA/CD: si NIC detecta una colisión mientras está transmitiendo, aborta
y envía una señal de JAM. Tras abortar, entra en una retirada binaria exponencial: tras la m-
ésima colisión, NIC escoge un número K aleatorio entre un rango del 0 a 2 m-1 (0,2,4,8…, 2m-1) y
realiza una espera de K*512 tiempos de bit antes de volver a comprobar si el canal está ocupado.
→ Si no se recibe una trama de reconocimiento, la estación transmisora vuelva a entrar en la fase de backoff,
seleccionando el valor aleatorio de un intervalo más largo.
Receptor: Si ha recibido la trama correctamente envía un ACK tras SIFS (Short Inter-frame Spacing)
20
(3) Por turnos
1. Polling: El nodo master “invita” a los demás nodos a transmitir de vuelta. Se usa con dispositivos
“tontos” (?). Problemas: sobrecarga de peticiones, latencia, no puede fallas el nodo master.
2. Token passing: Una token de control se pasa desde un nodo al siguiente secuencialmente.
Problemas: sobrecarga de tokens, latencia, no puede fallar el token (punto único de fallo).
3. Bluetooth, FDDI, token ring.
Ethernet
Tecnología LAN cableada más dominante. Simple y barato. Asume que todos los equipos están en el mismo
bus. Coaxial: cuando uno envía, todos reciben. Switches: evitan colisiones.
• No es orientado a conexión (no hay handshake): cuando quieras transmitir algo, lo haces.
• No es fiable: no hay ACK’s, sólo puedo detectar si hay colisiones (en cuyo caso retransmito) pero
nadie me garantiza que el paquete llegue a su destino.
• Utiliza el protocolo MAC: unslotted CSMA/CD con retroceso (/backoff) binario.
21
Modo de infraestructura Modo ad hoc
Un sólo salto: el host se conecta a la estación base (WiFi, Al no haber estación base, no hay
teléfono) y esta a Internet. conexión a todo Internet.
Varios saltos: El host tendrá que conectarse a otros nodos Un salto: Bluetooth, redes ad hoc.
inalámbricos para conectarse a Internet (mesh net). Varios: MANET, VANET
Frame control:
22
Switches
Son dispositivos de la capa de enlace, toman un papel activo. Almacenan y reenvían tramas Ethernet, y se
encargan de examinar la dirección MAC de la trama y seleccionar a través de cuál/cuáles de los enlaces de
salida reenviarlo. Utiliza CSMA/CD para acceder al segmento. Es transparente para los hosts y no necesitan
ser configurados (aprenden sólos, plug-and-play).
• Los hosts tienen una conexión dedicada y directa con el switch,
el cual tiene un buffer para almacenar los paquetes que le llegan.
• Se utiliza el protocolo Ethernet en cada enlace de entrada (evita
colisiones / full duplex; cada enlace tiene su propio dominio de
colisión).
• A→A’ Y B→B’ pueden transmitir simultáneamente sin
colisiones, pero A→A’ Y C→A’ no.
• Tabla de reenvío del switch: dir. MAC host, interfaz conectada
al host, tiempo/time stamp. → Tiene que aprenderse las entradas.
Inicialmente la tabla de reenvío está vacía. Cuando llega una trama nueva, el switch “aprende” la ubicación
del host de origen (llegada de un segmento LAN): almacena el par emisor (dir. MAC) / ubicación (interfaz)
en su tabla de reenvío. Se utiliza la dirección MAC como índice de cada entrada en la tabla.
➢ Al recibir una trama, si encuentra una entrada en la tabla con la dirección MAC de destino: si el
destino se encuentra en el mismo segmento/interfaz de donde vino la trama, esta se descarta, y si no
es así se reenvía por la interfaz indicada en la tabla.
➢ Si el destino no se encuentra en la tabla: inundación (se reenvía la trama por todas las interfaces
salvo la de origen).
Interconexión de switches (multi-switch): switches interconectados entre sí (y a su vez cada uno con
ninguno o algun/os hosts. Funciona exactamente igual (rellenan sus tablas conforme reciben tramas).
Red LAN institucional pequeña: suelen estar configuradas de forma jerárquica. Cada grupo de trabajo
(departamento) tiene su propia red LAN conmutada con su switch y conectada a través de un switch central a
todas las demás subredes. Este a su vez se conecta a un router conectado con la red externa.
ROUTERS SWITCHES
• Dispositivos de la capa de red (examinan las • Dispositivos de la capa de enlace (examinan
cabeceras de los datagramas). las cabeceras de las tramas).
• Rellenan su tabla de reenvío con algoritmos • Rellenan su tabla de reenvío con utilizando
de enrutamiento, utilizando las direcciones inundaciones, aprendizaje y las direcciones
IP. MAC.
23
Puerto troncal: se utiliza un puerto de cada switch físico para enviar tramas desde una VLAN de un switch a
otra de un switch físico distinto. Las tramas de VLAN reenviadas entre distintos switches no pueden ser
tramas vanilla 802.1 porque deben almacenar la información del ID de la VLAN. El protocolo 802.1q añade/
elimina información de los campos de cabecera para las tramas transmitidas entre puertos troncales.
Formato de las tramas VLAN 802.1q : (se recalcula el CRC)
*
MPLS (Multiprotocol label switching)
Conmutación de etiquetas multiprotocolo. Objetivo: mejorar la velocidad de reenvío de los routers IP,
adoptando el concepto de la etiqueta de longitud fija. Se expande la infraestructura existente etiquetando
selectivamente los datagramas y permitiendo a los routers reenviar esos datagramas basándose en etiquetas
de longitud fija (en lugar de en direcciones IP de destino/ shortest prefix matching), siempre que fuera
posible (el datagrama IP igualmente almacena la dirección IP).
Routers de conmutación de etiquetas: routers compatibles con MPLS. Reenvían las tramas MPLS
buscando la etiqueta MPLS en su tabla de reenvío y luego pasando inmediatamente el datagrama a la interfaz
de salida apropiada. Por tanto, no necesita extraer la dirección IP de destino y realizar una búsqueda del
prefijo con la coincidencia más larga dentro de la tabla de reenvío.
➢ Flexible: las decisiones de reenvío de MPLS pueden ser distintas de las de IP (utiliza la dirección de
origen además de la de destino (traffic engineering) para enviar tramas al mismo destino por
distintos caminos; además, si el enlace falla el redireccionamiento es más rápido porque se
precalculan rutas de backup).
Señalización (¿cómo se distribuyen las etiquetas entre los routers compatibles con MPLS?): el router de
entrada utiliza el protocolo RSVP-TE (extensión de RSVP) para configurar el reenvío MPLS en los routers
descendentes. Los algoritmos de enrutamiento existentes basados en el estado de los enlaces (OSPF) han
sido ampliados para inundar los routers compatibles con MPLS con información sobre el estado de los
enlaces (como la cantidad de ancho de banda no reservada por MPLS).
24