Está en la página 1de 25

Resumen Redes de Ordenadores

Ingeniería Informática, UC3M

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

1. FDM (Frequency – Division Multiplexing): Divide el enlace según


su espectro de frecuencias y le asigna una banda de frecuencias a
cada conexión durante el tiempo que duren. Redes telefónicas
(~4KHz) , estaciones de radio FM, ...
2. TDM (Time – Division Multiplexing): El tiempo se divide en
marcos, que se dividen en particiones (de longitud y nº fijo). La red
dedica una partición de cada marco a cada conexión. (Cada
partición obtienen el máximo ancho de banda).

Internet protocol stack (/pila de protocolos de Internet)


1. Capa física
2. Capa de enlace
3. Capa de red
4. Capa de transporte
Socket
5. Capa de aplicación

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: Longitud del paquete d = longitud del enlace físico


L d (distancia router A–distancia router B)
d trans= R: ancho de banda del enlace d prop=
R s s = velocidad de propagación del enlace
bps (bits/seg) (~ 2*10⁸ m/s)

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

Identificamos Su nombre (es mnemónico, lo que usa la persona)


al host con:
DNS (Domain Name System) Dirección IP (32b, lo que lee el router)

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.

Jerarquía de servidores DNS: (están distribuidos por todo el mundo)


1. Servidores DNS raíz: proporcionan las direcciones IP de los servidores TLD. Hay unos 400
servidores raíz en todo el mundo gestionados por 13 organizaciones (2016).
2. Servidores de dominio de nivel superior (TLD) : proporcionan las direcciones IP de los servidores
DNS autoritativos. Dominios de nivel superior: com, org, es, gov ... La empresa que mantiene los
servidores TLD para los dominios .com, .net, .gov (...) es Verisign Global Registry Services (que en
2000 adquirió Network Solutions).
3. Servidores DNS autoritarios: Una organización (servidores web, de correo,...) puede elegir:

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.

Root DNS Servers Root

.com DNS servers .org DNS servers .edu DNS servers TLD

yahoo.com amazon.com pbs.org nyu.edu umass.edu Authoritative


DNS servers DNS servers DNS servers DNS servers DNS servers

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:

Id (16b) Indicadores (flags)


Cabecera
Nº cuestiones Nº respuesta (RR’s)
(12B)
Nº RR’s autoritativos Nº RR’s adicionales
- Se copia el id de la solicitud en la respuesta. Cuestiones (nombre; tipo de cuestión (solicitud))
- Indicadores/flags:
• Solicitud/respuesta Respuestas (RR’s)
• Recursividad necesaria Autoridad (registros para servidores autoritativos)
• Recursividad disponible
• Respuesta autoritativa Info. Adicional (de ayuda)

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

Estructura de un segmento UDP:

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() : la llama la aplicación para mandar


datos a la capa de transporte.
• udt_send() : La capa de transporte crea el segmento
añadiendo una cabecera a los datos recibidos y la
implementación de rdt llama a esta función para
enviarlo a la capa de red.
• rdt_rcv() : Se utiliza en la capa de transporte del
receptor para recibir el paquete. La implementación
rdt verificará y extraerá los datos.
• deliver_data() : Para pasar los datos extraídos al
proceso receptor.

Hipótesis simplificadas de rdt:

rdt1.0 : Canal fiable

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

rdt2.0 : Canal con errores de bit


¿Cómo nos recuperamos de los errores? => Cuando el receptor comprueba si ha recibido errores (checksum),
le manda al emisor una confirmación de que no ha habido errores (ACK; acknowledgements) o de que sí
(NAK; Negative ackn.), en cuyo caso se retransmite el paquete. -> "Stop and wait": el emisor manda un
paquete y espera a recibir un ACK o NAK.

rdt_send(data)

snkpkt = make_pkt(data, checksum) rdt_rcv(rcvpkt) && corrupt(rcvpkt)


udt_send(sndpkt) udt_send(NAK)

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.

rdt_send(data) rdt_rcv(rcvpkt) && corrupt(rcvpkt)


send_packet = mk_pkt(NAK, checksum)
snkpkt = make_pkt(i, data, checksum) udt_send(send_packet)
udt_send(sndpkt)
i = nº de serie rdt_rcv(rcvpkt) &&
isNAK(rcvpkt) //
corrupt(rcvpkt) Esperar
Esperar llamada de la rdt_rcv(rcvpkt) &&
Esperar
ACK / NAK udt_send(sndpkt) capa inferior notcorrupt(rcvpkt) &&
llamada de la
notDuplicated(rcvpkt)
capa superior
extract(rcvpkt,data)
rdt_rcv(rcvpkt) && deliver_data(data)
notcorrupt(rcvpkt) && send_packet = mk_pkt(ACK, checksum)
rdt_rcv(rcvpkt) && No aumento i hasta udt_send(send_packet)
Duplicated(rcvpkt)
isACK(rcvpkt) && que se ha mandado
notCorrupt(rcvpkt) send_packet = mk_pkt(ACK, checksum)
correctamente el
udt_send(send_packet)
Emisor i++ paquete Receptor

Rdt2.2 : Protocolo sin NAK


El receptor únicamente contesta con un ACK cuando el último paquete recibido es correcto. Un ACK
duplicado en el emisor equivale a un NAK (se retransmite el paquete). TCP sólo usa ACK's.

Rdt3 : Canal con errores y pérdidas


Si se pierde un paquete (o un ACK), el emisor se quedaría bloqueado esperando a recibir una confirmación
del estado del paquete transmitido. Solución: pasado un tiempom si no he recibido un ACK reenvío el
paquete. T = roundtrip time (espero lo que tardaría un paquete en ir al destino y volver su respuesta (ACK).
rdt_send(data)

snkpkt = make_pkt(0, data, checksum)


udt_send(sndpkt)
Start_timer
rdt_rcv(rcvpkt) &&
corrupt(rcvpkt) || duplicated_ACK(rcvpkt)
Esperar Esperar L
llamada de la ACK / NAK
capa superior

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

TCP: Transmission Control Protocol → Proceso de negociación : handshaking


→ Fiable
Multiplexación y demultiplexación con TCP:
Los sockets TCP se identifican con tuplas de 4 elementos:
1. Dirección IP origen
2. Nº puerto origen
3. Dirección IP destino
4. Nº puerto destino
Un mismo socket representa la conexión con un sólo socket de origen/destino. Cada socket está asociado
con un cliente de conexión distinto (es como un canal de conexión cerrado).
Un proceso (con un socket "abierto") se mantiene "escuchando" posibles conexiones con otros hosts. En
cuanto establece conexión con otro proceso/host, crea un hilo con un socket TCP específico para esa
conexión. A medida que se van estableciendo distintas conexiones, se van creando más hilos y abriendo
más sockets. Cuando termina la conexión se matan los hilos.

Ventajas de TCP / características:


1. Conexión punto a punto (1 emisor 1 receptor) Campos del segmento TCP (leyenda):
2. Transmisión fiable, ordenada A: indica que el segmento es un ACK.

3. Full duplex (transmisión en ambos sentidos simultáneamente) C, E: notificación de congestión.


RST, SYN, FIN: Establecimiento y cierre de
4. ACK's acumulativos la conexión.
5. Pipelining URG: Hay datos urgentes

6. Control de flujo PSH: El receptor tiene que pasar los datos


a la capa de aplicación de forma inmediata.

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

Estimación RTT (roundtrip time) y fin de temporización (timeout)


1) RTTestimado = (1 – α )* RTTestimado + α * RTTmuestra
• RTTestimado = media ponderada de las muestras de RTT (EWMA: media móvil exponencialmente
ponderada; el valor de la RTTmuestra disminuye exponencialmente tan rápido como tienen lugar las
actualizaciones -> se suavizan los picos)
• RTTmuestra = se mide el RTT de un sólo segmento cada vez (no de todos; ~cada t = RTT)
• Se recomienda α = 0,125 (se da mayor peso a las muestras recientes/anteriores, que reflejan mejor la
congestión actual. La muestra nueva que introducimos es un pico.
◦ RTTestimado = (0,875 )* RTTestimado + 0,125 * RTTmuestra
2) RTTdesv = (1 – β )* RTTdesv + β * | RTTmuestra – RTTestimado|
• Media EWMA de la diferencia entre RTTmuestra y RTTestimado. Si la diferencia es pequeña
(RTTmuestra presenta una pequeña fluctuación) la desviación será pequeña (y viceversa).
• Se recomienda β = 0,25
◦ RTTdesv = (0,75 )* RTTdesv + 0,25 * | RTTmuestra – RTTestimado|
3) IntervaloFinTemporización = RTTestimado - 4* RTTdesv
• Tiene que ser >= RTT o se producirán retransmisiones innecesarias. Pero si es demasiado grande se
provocarán retardos muy largos en la retransmisión si se pierde un paquete. Por ello se utiliza un
margen que tiene en cuenta RTTdesv.
• Margen según la desviación típica del muestreo: si la desviación es muy grande, dejaremos un mayor
margen en el intervalo del temporizador (y viceversa). El valor inicial de RTTdesv = 1s.

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)

Proceso de negociación TCP


Establecimiento de la conexión TCP (Acuerdo en 3 fases): TCP lleva a cabo un proceso de negociación
(handshake) en el que ambos procesos acuerdan la conexión y los parámetros de conexión.
1. Segmento SYN: el cliente (emisor) envía un segmento SYN = 1
TCP sin datos de aplicación con los parámetros: nº secuencia = cliente_nsi (nº aleatorio)
2. Segmento SYNACK: el servidor (receptor) extrae el
segmento SYN y asigna los búfers y variables TCP a la SYN = 1
conexión. Manda un segmento con los parámetros: ACK = cliente_nsi + 1
nº secuencia = servidor_nsi
◦ Conexión concedida
3. Confirmación del SYNACK: el cliente también asigna
sus búfers y variables a la conexión y manda una SYN = 0 (conexión establecida)
confirmación con los parámetros: ACK = servidor_nsi + 1
nº secuencia = cliente_nsi + 1
(Además, ya podría transportar datos en la carga útil)

Cierre de la conexión TCP: cuando la conexión


termina se liberan los recursos de ambos lados.
Cualquiera de los dos puede solicitar el cierre.
1. El cliente envía un segmento con el
parámetro FIN=1
2. El servidor devuelve un ACK con FIN=1
3. El cliente reconoce el cierre del servidor
(ACK) y, tras un tiempo de espera, cierra su
lado de la conexión. El servidor cerrará el
suyo en cuanto reciba el ACK de su fin de
conexión.

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

• Métodos para controlar la congestión:


1. End-end (TCP): La capa de red no da soporte explícito sobre la congestión, sino que esta es
inferida por el host basándose en el comportamiento observado de la red (pérdidas/retardos).
2. Asistido por la red (TCP ECN, ATM, DECbit): los routers proporcionan información sobre la
congestión de la red (2 bits en la cabecera de IP).

Control de congestión TCP: AIMD (Additive Increase/Multiplicative Decrease)

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

memory bus interconnection (malla)


network
Puerto de salida: si los datagramas llegan más rápido al puerto de salida de lo que este es capaz de
introducirlos en el enlace (velocidad forwarding > velocidad de transmisión del enlace), se encolan en un
búfer → políticas de eliminación (qué datagramas se pierden si se llena el búfer: tail drop / priority). Un
planificador de paquetes elige el paquete de la cola que se va a transmitir.

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

Opciones* Fragment Offset: B de comienzo del fragmento en el


datagrama. Múltiplo de 8.
Checksum: sólo se aplica a la cabecera. Se recalcula en
Payload
cada router (al cambiar TTL).
(tamaño variable, ~ segmento TCP o UDP)
Tamaño máximo: 64KB. Normalmente <1500B..

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

DHCP (Dynamic Host Configuration Protocol)


Permite que el servidor de la subred (típicamente en el router) asigne dinámicamente una dirección IP a un
host que se conecte a la red, al desconectarse se recicla dicha dirección. También se le proporciona la
dirección IP del router más cercano y el nombre y dirección IP del servidor DNS, la máscara de la subred...
1. El host emite un mensaje de DHCP discover
2. El servidor DHCP responde con un mensaje de oferta DHCP con una dirección IP disponible.
3. DHCP request msg (el host confirma que quiere usar esa dirección IP).
4. DHCP ACK msg (el servidor DHCP se la asigna).

NAT (Network Address Translation)


Es un mecanismo de ahorro de direcciones. Se hace una distinción entre tu dirección pública (la que
compartes con la red externa/pública) y tu dirección privada (la utilizas para comunicarte entre los demás
equipos de tu subred, por lo que es única dentro de esta (otras subredes externas puedan usarla)).
El router que comunica tu subred con el exterior (Internet) se encarga de hacer la traducción de direcciones:
reemplaza la dirección IP y n.º puerto de origen de cada datagrama que sale por la dirección IP NAT pública
y el n.º puerto de salida del router. Almacena estas traducciones en una tabla de traducciones NAT.

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

Link state algorithms (estado de enlaces)


Centralizado: cada router habla con todos los demás, les envía la información (local) de los costes de sus
vecinos. Todos los nodos tienen la misma información. En cuanto hay un cambio, actualizo todos los nodos
de una (es más complejo que el vector de distancias pero me ahorro muchas iteraciones).
Algoritmo de Dikjstra.
Es iterativo: tras k iteraciones averigua el camino de menor coste desde el nodo de origen y k nodos de
destino, a través de la tabla de reenvío (forwarding table) de cada uno.
• N’ = Subconjunto de nodos. v
pertenece a N’ si la ruta de
coste mínimo desde el origen
hasta v se conoce de forma
definitiva.
• D(v) = coste de la ruta de
coste mínimo desde el origen
a v (para la actual iteración).
• p(v) = nodo anterior (vecino)
de v en la ruta actual de coste
mínimo hasta v.

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.

> RIP (Routing Information Protocol)


Algoritmo de vector de distancias, cada enlace con coste 1 y máximo 15 saltos. Se comparte la información
cada 30s en mensajes de respuesta (/advertisements), cada uno con hasta 25 subredes de direccionamiento IP.
Fallo de enlace: si tras 180s no se ha recibido ningún mensaje de un vecino, este (o su enlace) se declaran
como muertos (se invalidan las rutas a través de ese router, se mandan nuevos mensajes a los demás
vecinos… la información del fallo se propaga rápidamente). Inversa envenenada se usa para evitar “ping-
pong loops”.
Las tablas de encaminamiento RIP son controladas por un proceso de la capa de aplicación llamado route-d
(daemon). Los mensajes se mandan en paquetes UDP, repetidos periódicamente.

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.

5. Capa de enlace Responsable de transferir el datagrama de un nodo a otro


físicamente adyacente a través de un enlace.

• Nodos: hosts y routers.


• Enlaces: canales de comunicación que conectan nodos adyacentes. Pueden ser: cableados (wired), no
cableados (wireless), LANs.
• Trama: encapsulan los datagramas. En la cabecera guardan la dirección IP de destino y las
direcciones MAC de origen y destino.
Cada interfaz LAN tiene una dirección MAC única, 48b (2¹⁶ direcciones más que Ipv4), administrada por
IEEE (el fabricante compra una porción de espacio de direccionamiento MAC para garantizar que es única).
Mientras que la dirección IP únicamente es única de forma local (según la subred a la que estés conectado),
la dirección MAC siempre lo es (puedes desplazar la interfaz desde una LAN a otra sin que cambie).
La capa de enlace se implementa en cada uno de los hosts: en la tarjeta de interfaz de red ( NIC: network
interface card) o en un chip, con una combinación de SW, HD, y firmware.

Protocolos MAC de múltiples accesos


Se utilizan cuando el enlace es compartido (canal único de broadcast), dado que pueden haber transmisiones
simultáneas de varios nodos (= interferencias). Se produce una colisión cuando un nodo recibe dos o más
señales en el mismo momento. El algoritmo del protocolo de múltiple acceso es distribuido y determina
cómo/cuándo puede transmitir cada nodo. Hay distintos tipos de protocolos MAC clasificados según:
1. Particionamiento del canal: se divide el canal (en slots de tiempo, frecuencia, código…) y se
asignan las particiones a cada nodo para tener acceso exclusivo a ellas.
2. Acceso aleatorio: no se divide el canal, sino que se permiten colisiones (de las que habrá que
recuperarse). Cuando un nodo tiene un paquete que enviar, lo transmite a la velocidad máxima del
enlace hasta detectar una colisión. A priori no hay coordinación entre los nodos.
3. Por turnos: cada nodo accede por turnos, pero los que tengan más paquetes que enviar pueden tener
turnos más largos.

(1) Particionamiento del canal


1. TDMA (time division multiple access): El enlace se divide en “rondas” de tiempo, en cada una de
las cuales se asigna a los nodos x slots de tiempo (de la duración del tiempo de transmisión por
paquete). Los slots que no se utilicen se quedan incactivos.
2. FDMA (frequency division multiple access): El espectro del canal se divide en bandas de frecuencia.
Se asigna una banda de frecuencia fija a cada nodo, y las que no se utilicen (porque el nodo no esté
transmitiendo por ej) se quedan inactivas.

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.

➢ tprop = retardo máximo de propagación entre 2 nodos en LAN.


ttrans = tiempo en retransmitir una trama de tamaño máximo.

5. CSMA/CA (collision avoidance): Se usa en IEEE 802.11.


Emisor:
1. Si inicialmente el canal está inactivo, transmite la trama después
de un corto periodo de tiempo: DIFS (Distributed Inter-frame
Space).
2. Si está ocupado, selecciona un valor de espera (backoff) aleatorio
y efectúa una cuenta atrás con este valor desde DIFS mientras
detecta que el canal está inactivo. Cuando detecta que el canal
está ocupado, el valor del contador permanece congelado.
Cuando el contador alcanza el valor cero (observe que esto solo
puede suceder mientras se detecta que el canal está inactivo), la
estación transmite la trama completa y luego espera a recibir un
reconocimiento.

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

ARP (address resolution protocol)


Obtiene la dirección MAC del equipo conectado a tu mismo enlace. Se realiza una consulta ARP: un
broadcast en el nivel de enlace, sólo quien tenga la dirección por la que se consulta responde con su paquete
de respuesta (únicamente a quien ha preguntado). Cada equipo va rellenando una tabla (caché) de traducción
(IP address; MAC; TTL) que se libera cuando en x tiempo no ha habido comunicación.
Encaminar hacia otra subred: se manda la trama al router que conecte mi subred con la de destino: MAC
destino = la del router (si no la tengo, consulta ARP), dir. IP destino = host de destino. El router mirará la
dirección IP de destino y lo enviará por la interfaz que corresponda.

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.

Estructura de una trama Ethernet:


Dir. Dir.
Preámbulo T Datos (payload) CRC
Destino origen
Preámbulo: 7B de 10101010 seguidos de 1B de 10101011 para la sincronización entre equipos (mismo
patrón de 0’s y 1’s para indicar al receptor la frecuencia de transmisión (anchura de la señal equivalente a un
1 y a un 0)).
Direcciones destino y origen: 6B de direcciones MAC para cada una. Si el receptor recibe una trama con su
misma dirección MAC como destino, o con la dirección de broadcast (ej. ARP), lo extrae y se lo pasa al
protocolo de la capa de red. Si la dirección de destino no es la suya, lo descarta.
Tipo: indica el protocolo de la capa superior (suele ser IP).
CRC: cyclic reduncancy check. Se utiliza para detectar si la trama recibida ha sido colisionada (en cuyo caso
el CRC no tendrá ningún sentido). La trama no necesita un campo de tamaño porque sabes que has llegado al
final de la trama en cuanto dejas de recibir (y sabes si tiene errores por el CRC).

Elementos de la red inalámbrica:


1. Equipos/hosts inalámbricos (smartphones, portátiles,… ejecutan aplicaciones).
2. Estaciones base (torres telefónicas… típicamente conectados a la red cableada, responsables de
enviar paquetes entre la red cableada y los equipos inalámbricos de su “área”).
3. Enlace inalámbrico (antenas?. Para conectar a los equipos con las estaciones base).

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

Arquitectura LAN 802.11


Utiliza el protocolo CSMA/CA.
Un host inalámbrico se comunica con la estación base (AP: punto de
acceso). Un conjunto de servicio básico o cell (BSS: Basic Service Set)
de la infraestructura contiene los equipos inalámbricos, el AP y modo
ad hoc (sólo hosts). El espectro se divide en canales de distintas
frecuencias (posibles interferencias con los AP vecinos). El host que
llega tiene que asociarse con un AP (escanea los canales, selecciona la
AP a la que quiera conectarse, se autentica, y luego ejecuta DHCP para
obtener la dirección IP de la subred del AP).
• Escaneo pasivo: los AP’s envían tramas beacon (contiene el nombre del AP (SSID) y la dirección
MAC). El host que quiera conectarse se queda escuchando hasta que detecta una trama del AP que
quiera. Le manda al AP seleccionado una trama de petición, y esta le manda una de respuesta.
• Escaneo activo: el host hace broadcast con un probe request. Los AP’s responden. El host manda un
association request al AP seleccionado, y este le responde (association response).

Estructura de una trama 802.11:


Control Seq
duración Dir1 Dir2 Dir3 Dir4 payload CRC
de trama control
2 2 6 6 6 2 6 0-2312 4
Duración: del tiempo de transmisión reservado (RTS/CTS)
Seq control: número de secuencia de la trama (para una transmisión fiable).
• Dirección 1: MAC del host inalámbrico o AP de destino.
• Dirección 2: MAC del host inalámbrico o AP de origen.
• Dirección 3: MAC de la interfaz del router conectado al AP.
• Dirección 4: sólo se usa en modo ad hoc.

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.

VLANs (Virtual LANs)


La configuración de las redes LAN institucionales pequeñas es idílica (falta de aislamiento de tráfico, uso
ineficiente de switches, gestión de los usuarios), lo que se puede solucionar con un switch compatible con
redes de área local virtuales (VLAN). Este permite definir múltiples redes de área local virtuales sobre una
única infraestructura de red de área local física. Los hosts de una VLAN se comunican entre sí como si solo
ellos (y ningún otro host) estuvieran conectados al switch.
VLAN basada en puertos: el administrador de la red divide los puertos (interfaces) del switch en grupos.
Cada grupo constituye una VLAN, con los puertos de cada VLAN formando un dominio de difusión (es
decir, el tráfico de difusión de un puerto solo puede llegar a los demás puertos del grupo). De esta forma un
único switch físico actúa como múltiples switches virtuales.

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)

- Id protocolo (2B) valor: (81-00)


- Información de control:
- Id VLAN (12 bits)
- Prioridad (3 bits); como IP TOS

*
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).

Cabecera MPLS (se localiza


entre las cabeceras de la capa de
enlace y de la capa de red).

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

Tablas de reenvío MPLS

24

También podría gustarte