Tema 4 - Capa de Red
Introducción
Introducción a la capa de red
Cuando los paquetes pasan de la capa de transporte a la capa de red, estos segmentos son encapsulados con las cabeceras de la capa de red, y pasan a ser llamados datagramas
Los protocolos de capa de red están presentes en los hosts y routers
Los datos de la cabecera del datagrama será usados por cada nodo de la red para decidir que hacer con dicho paquete
Funciones básicas de la capa de red
🔀
Forwarding (reenvío)Consiste en mover los paquetes entre los puertos de entrada y salida del router
🗺️
Routing (enrutamiento)Consiste en determinar la ruta que seguirán los paquetes desde el origen hasta el destino. Se usarán algoritmos de enrutamiento
Algoritmos de enrutamiento
Los algoritmos de enrutamiento determinarán los valores que se almacenarán en las tablas de reenvío.
Los algoritmos de enrutamiento pueden gestionarse de forma…
- Centralizada → Un servidor se encarga de gestionar al resto de routers de la red
- Descentralizada → Los routes de la red se gestionan de manera autónoma
Configuración de la conexión
En algunas arquitecturas de red, esta capa es muy importante dado que lleva a cabo la función de configuración de la red
En las redes de internet (IP), la capa de red no tienen esta función, pero en otras redes sí, como en las : ATM, Frame Relay, X.25, etc.
La configuración de la conexión consite en:
- Establecer una conexión virtual antes del comienzo de la transferencia de datos
- Involucrar a los routers que formarán parte de la ruta
Servicios de conexión en cada red
No confundir con el servicio orientado a conexión de la capa de transporte
Diferencias entre el servicio de conexión de la capa de red y la capa de transporte
Diferencias
- En la capa de transporte, TCP usa un handshake para iniciar la conexión. En la capa de red no hay un servicio de configuración de la conexión
- En la capa de transporte, la conexión se realiza entre dos procesos, en la capa de red la conexión es entre dos hosts
💡
Una empresa que quisiera ganar dinero con un servicio de capa de red, debería ofrecer los siguientes serviciosPara cada datagrama
- Entrega garantizada sin retardo ó entrega garantizada con retardo limitado
Para flujos de datagramas
- Entrega de datagramas en orden
- Ancho de banda mínimo garantizado
- Fluctuación máxima garantizada
La capa de red, a traves de el protocolo IP (internet) proporciona un único servicio denominado best effort que quiere decir que intentará proporcinar el mejor servicio, pero no promete nada
Modelos de servicios de la capa de red
Arquitectura (de red) | Modelo de servicio | Ancho de banda | Sin perdidas | Orden garantizado | Temporizador | Indicación de congestión |
Internet (IP) | Best effort | Sin garantías | No | No | No | No (se asume observando los paquetes que se pierden) |
ATM | CBR | Velocidad constante | Sí | Sí | Sí | No produce congestión |
ATM | VBR | Velocidad garantizada | Sí | Sí | Sí | No produce congestión |
ATM | ABR | Velocidad mínima garantizada | No | Sí | No | Sí |
ATM | UBR | Ninguna | No | Sí | No | No |
Redes ATM
- CBR → Constant Bit Rate
- VBR → Variable Bit Rate
- ABR → Available Bit Rate
- UBR → Unspecified Bit Rate
Redes de circuitos virtuales y de datagramas
Servicios de red con y sin conexión
En la capa de red tenemos dos arquitecturas que proporcionan servicio sin conexión en la capa de red y otras que sí
- No proporcionan servicio de conexión → Internet, IPX/ISX, CLNP, etc.
- Proporcionan servicio de conexión → ATM, Frame Relay, etc.
En la capa de transporte podíamos elegir el protocolo que usar. En la capa de red no, solo podemos usar el protocolo establecido por la red
Circuitos Virtuales (VC)
Se suele implementar usando los siguientes mecanismos
- Establecimiento de conexión antes de empezar el flujo de datos
- Cada paquete tiene un identificador de VC
- Se mantienen informados del estado de la conexión a cada router de VC
- Se pueden asignar los recursos de un router a cada VC específicamente
La ruta origen-destino se comporta de forma similar a un circuito telefónico
- El rendimiento es similar al de un circuito físico donde se garantiza la temporización
- La red participa en la configuración de la ruta
Estructura de los circuitos virtuales
Un circuito virtual está formado por:
- Una ruta (origen-destino)
- Los números de VC (será diferente en cada router)
- Una tabla de reenvío en cada router
Los números de VC y el número de interfaz
Los números del circuito virtual a la entrada del router identifica los paquete que vienen desde el mismo origen (host inicial), aunque estos entará por una de las interfaces del router, las cuales también están numeradas.
El paquete entrará al router con un número de VC, y por una interfaz específica, y saldrá por otra interfaz, con otro número de VC (el número de VC de salida depende de los números que tenga disponibles el router)
Tabla de reenvío de los VCs
Los routers mantienen la información de todos los cirucitos virtuales a le atraviesan, y registra en una tabla las correspondencias de los CVs de entrada y los CVs de salida
Tabla de ejemplo
Tabla de reenvío de router A
Interfaz entrada | N. VC Entrada | Interfaz salida | N. VC salida |
1 | 12 | 3 | 22 |
2 | 56 | 3 | 21 |
3 | 2 | 1 | 40 |
1 | 20 | 2 | 50 |
… | … | … | … |
La primera fila se muestra en la imágen, el resto de filas so datos inventados
Redes de datagramas
Las redes de datagramas, a diferencia de las redes de CV, se caracterizan por:
- No hay establecimiento de conexión, no hay handshaking
- Los routers no mantienen estado, para los routers hay paquetes entrando, pero no hay una conexión establecidad como tal
- Los datagramas pueden tomar diferentes rutas, cada vez
Tablas de reenvío en una red de datagramas
Como las redes de datagramas manejan millones de conexiones, seguir el mismo enfoque que las tablas de las redes de CV nos daría una tabla gigantesca. Para atajar este problema, las tablas de enrutamiento no almacenan las direcciónes sino unos rangos. Estos rangos no son más que los bits más significativos de las direcciones (prefijos)
Ejemplo
Hallar el prefijo de los siguientes rangos
💡
Observar los bits comunes al inicio y al final del rangoRango 1Desde11001000 00010111 00010000 00000000
Hasta11001000 00010111 00010111 11111111
Prefijo →11001000 00010111 00010
Rango 2Desde11001000 00010111 00011000 00000000
Hasta11001000 00010111 00011000 11111111
Prefijo →11001000 00010111 00011000
Rango 3Desde11001000 00010111 00011001 00000000
Hasta11001000 00010111 00011111 11111111
Prefijo →11001000 00010111 00011
Rango 4Desde11100000 01000001 00000000 00000000
Hasta11100001 01111111 11111111 11111111
En este caso no es tan sencillo hallar el prefijo ya que:Si usamos1110000
como prefijo estamos cogiendo direcciones de más por el límite inferior y superior.Para evitar coger direcciones del límite inferior, deberemos hacer un prefijo hasta el último bit que difiere y que esté dirigido a otra interfaz. Este, al ser un prefijo más largo se evaluará por encima del actual.
11100000 01000000
(al prefijo le añadiremos un0
en el bit meno significativo)Para dejar fuera las direcciones que quedan por encima deberemos usar dos prefijos para la interfaz actual
11100000
→ Hasta la primera diferencia
11100001 01
→ Hasta la penultima diferencia (no tenemos en cuenta la última)Prefijo
11100000
(suponemos que ya hay un prefijo anterior que cubre el caso mencionado anteriormente)
11100001 01
La tabla tiene varios prefijos emparejados con la interfaz por la que debe salir dicho paquete. La tabla de prefijos tiene las siguientes reglas:
- Si no se cumple ningún prefijo, hay una interfaz de salida por defecto
- Si una dirección cumple varios prefijos, sale por la interfaz del prefijo más largo
Dentro de un router
Arquitectura de un router
Un router de Internet tiene dos funciones clave:
- Ejecutar algoritmos/protocolos de enrutamiento (RIP, OSPF, BGP)
- Reenviar datagramas desde los enlaces de entrada a los enlaces de salida
Componentes pricipales de los routers
- Puertos de entrada → Recibe los paquete de los enlaces
- Puertos de salida → Transmite los paquetes al enlace
- Entramado de comunicación → Conecta los puertos de entrada con los de salida
- Procesador de enrutamiento → Ejecuta el protocolo de enrutamiento
El puerto de entrada
Funciones del puerto de entrada
- Terminación de línea → Actúa en la capa física y se encarga de la recepción de los bits.
- Procesamiento del enlace de datos → En la capa de enlace, que tiene un protocolo de desencapsulación (por ejemplo Ethernet).
- Conmutación → En la capa de red, que a su vez puede realizar dos tareas:
- Puesta en cola: si los datagramas llegan más rápido que la tasa de reenvío al entramado de conmutación.
- Búsqueda/Reenvío descentralizado: dado el destino del datagrama, buscar el puerto de salida. Esta operación se desea que se realice a “velocidad de línea”, por ello es ideal que la realice un procesador del puerto, distinto al procesador de enrutamiento, usando una tabla de reenvío en memoria propia
Encolado en los puertos de entradaSi el entramado de conmutación no es suficientemente rápido distribuyendo los paquetes a los respectivos puertos de salida, pueden producirse retardos de colaEn concreto el retardo HOL (Head-Of-Line) se produce cuando un paquete está bloqueado por el primero de la cola, el cual estará esperando a que se haga espacio en el buffer del puerto de salida
El puerto de salida
Funciones del puerto de salidaEn el puerto de salida se realizan procesos en las 3 capas,
- En la capa de red realizan 2 procesos:
- Buffering (puesta en cola) requerido cuando los datagramas llegan desde el entramado más rápido que la tasa de trasmisión de salida
- Planificación de paquetes: elegir entre los datagramas almacenados aquellos que serán transmitidos: enfoque FIFO u otro.
- Procesamiento del enlace de datos: en la capa de enlace, la encapsulación en tramas.
- Terminación de línea, en la capa física, poniendo los datos en el enlace.
Encolado en los puertos de salidaHace falta buffer en el puerto de salida debido a que la velocidad del entramado de conexión puede exceder la velocidad de línea de salida.Se pueden llegar a producir retardos y pérdida de paquetes si el buffer de salida se llena
El entramado de conexión
El entramado de conexión se puede construir de diferentes formas
Computación en memoria compartida
Los paquetes se copian en memoria al llegar al bus de entrada, y se leen de memoria al situarlos en el bus de salida
🏎️
La velocidad está limitada por la velocidad de la memoria (dos lecturas)
Comutación de bus
El puerto de entrada transfiere directamente al puerto de salida a través de un bus.
🏎️
La velocidad está limitada por el ancho de banda del bus
Ejemmplo: Cisco 5600 → 32Gbps
Conmutación de malla
Diseño avanzado basado en la fragmentación de los datagramas en celdas de tamaño fijo que se conmutan en el entramado
Las redes de bayarn (entre otras) inicialmente fueron desarrolladas para interconectar sistemas con multiprocesadores
🏎️
Supera las limitaciones del ancho de banda del bus
Ejemplo: Cisco 12000 → 60Gbps
Tamaño del buffer
La regla de oro (RFC 3439). Consitía en usar un tamaño igual al valor medio de RTT multiplicado por la capacidad del enlace
Internet Protocol (IP) y Formato de un datagrama
Funciones de la capa de red
La capa de red en Internet incluye las siguientes funciones
Protocolos de enrutamiento
Se encargan de decidir el camino que deberá seguir un paquete para llegar a su destinoEjemplo: RIP, OSPF, BGP
Gestión de la Tabla de Reenvío
Relacionado con el protocolo de enrutamiento, la capa de red también definirá como debe ser la gestión de la tabla de reenvío
Formato de un datagrama IPv4
Descripcción de los campos
Versión de IP (4-bits)
Si usa IPv4 contendrá un4
, si usa IPv6 contendrá un6
. El formato del resto del datagrama cambiará según la versión que aparezca aquí
Logitud de la cabecera (4-bits)
Longitud de la cabecera en words (el valor que aparezca aqui se multiplica por 4 para obtener el valor en bytes) este campo es necesario dado que al haber un campo de opciones, la longitud de la cabecera puede variar
Tipo de servicio (Type Of Service: TOS) (8-bits)
El campo está diseñado para proporcionar información acerca del servicio proporcionado como: la prioridad del paquete, el retardo, etc. Sin embargo actualmente se le da un uso algo diferente.Actualmente se usa para
- 6-bits → Diferenciación de Servicios (DS) (best effort, priority, immediate, etc.)
- 2-bits → Notificar la congestión
Longitud del datagrama (16-bits)
Longitu máxima del datagrama: 65535
Identificador (16-bits)
Identificador del fragmento. Este campo de identificación es útil principalmente para la reensamblaje de fragmentos de datagramas IP en el host destino, en caso de que el datagrama original se haya dividido en fragmentos debido a restricciones de tamaño en la red
No confundir con el número de secuencia de un paquete, ese campo es del protocolo TCP en la capa de transporte
Flags (3-bits)
Modificadores o atributos del paquete: Reserved, Don’t fragment, More fragments, etc.
Desplazamiento del fragmento (13-bits)
Desplazamiento de 8-bits
Time-To-Live (TTL) (8-bits)
Número máximo de routers que deberá atravesar un paquete antes que el paquete muera. Cuando este valor llega a0
, el siguiente router al que llegue el paquete no lo propagará más
Protocolo de capa superior (8-bits)
Este campo se usa para que al llegar al host de destino, se pueda saber que protocolo usar para desempaquetar el mensajeEjemplos: TCP, UDP, ICMP, IPinIP, ESP, AH, etc.
Checksum de la cabecera (16-bits)
Solo se calcula sobre la cabecera
- Dirección IP origen (32-bits)
- Dirección IP destino (32-bits)
Opciones (longitud variable, el valor de segundo campo)
Ejemplo: Fecha y hora, Registro de la ruta, lista de routers visitados, etc.
Como la longitud de cabecera del paquete es un número multiplicado por 4, si el tamaño del paquete no llega a dicho valor, se añaden bytes extra en este espacio
Datos (longitud variable)
Casi siempre contendrá un segmento TCP o UDP
Fragmentación y Reensamblado
Las tramas de la capa de enlace tienen un tamaño máximo (MTU, Maximum Transmission Unit), sin embargo, puede darse el caso que en el camino del paquete hacia su destino, este se encuentre con un enlace con un ancho de banda limitado, por lo que en este caso el paquete se dividirá en paquetes más pequeños para poder atravesar el enlace (fragmentación), una vez los fragmentos atraviesan el enlace y llegan al router, estos se reensamblan. Para identificar y ordenar los paquete se utilizan los bits de cabecera
Ejemplo
Pongamos que queremos enviar un datagrama de 4000 bytes de longitud, pero en uno de los routers el MTU es de 1500 bytesAspecto del paquete original
Long ID Indicador de más fragmentos Desplazamiento 4000 72 0 0Recordemos que el ID viene dado, así como los valores del indicador el cual está a 0 ya que ese paquete no ha sido fragmentado todavía, y el desplazamiento por la misma razón que el indicadorFragmentarNos debemos dar cuenta que como el MTU del enlace es de 1500, y siempre tiene que haber 20 bytes de cabecera, los paquetes de datos contendrán como máximo 1480 bytes. Nuestro paquete original cuenta con 4000 bytes, pero solo 3980 son datos. Por lo que si calculamos nos daremos cuenta que necesitaremos como mínimo fragmentar el paquete entre tres
Long ID Indicador de más fragmentos Desplazamiento 1500 72 1 0 1500 72 1 185 1040 72 0 370
- Nos fijaremos que la suma de las longitudes de los paquete (si le restamos a cada uno su cabecera de 20 bytes) nos debería dar la longitud de 3980 del paquete original
- El ID de todos los paquetes será el mismo ya que todos vienen del mismo paquete
- El indicador de más fragmentos estará activado en todos menos en el último
- El desplazamiento se calcula dividiendo entre 8 la cantidad de datos (sin contar las cabeceras) enviada por los paquetes anteriores. Esto se debe a que este valor está representado en un campo que debe poder representar valores pero solo tiene 13-bits por lo que el valor de este campo está desplazado 3-bits
IP - Internet Protocol - Direccionamiento IPv4
Una dirección IPv4 es un número de 32-bits usado para identificar una interfaz de un host o router
Una interfaz es una conexión entre un host o router a través de un enlace.
Podríamos decir que una IP es asignada a un host, pero esto no sería totalmente cierto ya que un host podría estar conectado a diferentes redes a través de diferentes adaptadores (ethernet, wifi) a cada uno de estos adaptadores se le conoce como interfaz por lo que un mismo host se identificará con una IP diferente en cada una de estas redes
Las direcciones IPv4 son de 32-bits, pero estas se suelen expresar en grupos de 8-bit llamados octetos (octeto = byte)
Ejemplo
IPv4 →223.129.9.65
=11011111.10000001.00001001.01000001
Arquitectura de clases
Los posibles rangos de direcciones IP se dividen en clases
Tabla de direcciones para redes públicas
Clase | Bits iniciales | Rango (desde - hasta) | Máscara de red | N.º de redes | N.º de Hosts | Broadcast ID |
A | 0 | 0.0.0.0 - 127.255.255.255 | 255.0.0.0 | 128 | 16,777,214 | X.255.255.255 |
B | 10 | 128.0.0.0 - 191.255.255.255 | 255.255.0.0 | 16,384 | 65,534 | X.X.255.255 |
C | 110 | 192.0.0.0 - 223.255.255.255 | 255.255.255.0 | 2,097,152 | 254 | X.X.X.255 |
D | 1110 | 224.0.0.0 - 239.255.255.255 | No definido | No definido | No definido | No definido |
E | 1111 | 240.0.0.0 - 255.255.255.255 | No definido | No definido | No definido | No definido |
Tabla de direcciones para redes privadas
Clase | Rango (desde - hasta) | Máscara de red | N.º de Hosts |
A | 10.0.0.0 - 10.255.255.255 | 255.0.0.0 | 16,777,214 |
B | 172.16.0.0 - 172.31.255.255 | 255.240.0.0 | 1,048,574 |
C | 192.168.0.0 - 192.168.255.255 | 255.255.255.0 | 65,534 |
CIDR (Classless InterDomain Routing)
Actualmente ya no se utiliza el sistema de clases debido a que no permitía una asignación más flexible de las direcciones de red. En su lugar se utiliza el CIDR el cual permite asignar libremente que parte de la dirección forma parte de la dirección de red, y que parte forma parte de la dirección de host
El CIDR consiste en especificar la dirección de red junto con un valor que corresponde con la subred (cuántos bits de la direccion corresponden a la dirección de red)
Ejemplo
En la dirección de red200.23.16.0/23
nos están diciendo que los 23 bits más significativos de la dirección identifican la red a la que pertenece la dirección, y el resto identifican un host de esa red11001000 00010111 00010000 00000011 |-----------------------||--------| Red -> 200.23.16.0/23 Host -> 200.23.16.3
Direcciones especialesDirección
Direccion de red: Todos los bits de host a
Dirección de broadcast: Todos los bits de host a
Direcciones de loopback:
Dirección 0.0.0.0
Desde el punto de vista de un hostEsta dirección es usada por un host cuando quiere hacer referencia a todas las IPs del host. Es decir, si el host esta alojando un servidor, si este en lugar de alojar el servidor asignadole una dirección de alguna de sus interfaces, le asigna la dirección0.0.0.0
entonces el servidor será acesible a través de cualquier interfaz
Desde el punto de vista del proceso de enrutadoSignifica que debe enviar el paquete por el router por defecto
Desde el punto de vista de una dirección IPv4Representa un destino inalcanzable
Direccion de red: Todos los bits de host a 0
Se utiliza para designar la red a la que pertenece dicho host
Dirección de broadcast: Todos los bits de host a 1
Los paquetes enviado con esta dirección serán enviados para que los reciba todos los host de la red
Direcciones de loopback: 127.X.X.X
Son utilizadas por la propia máquina para identificarse a sí misma en una red imaginaria donde solo está la propia máquina
Router
Normalmente el router tomará la dirección más baja disponible en una red. Por ello, estos suelen tener una dirección acabada enX.X.X.1
(el valor cero es para identificar la red)
Subredes
Una subred no es más que una red que ha sido dividida en redes más pequeñas. En una subred, todos los hosts comparten una parte de la dirección IP. Las redes se dividen en subredes y se separan a través de routers.
Para identificar las subredes de una red, eliminaremos los routers y observaremos la cantidad de componetes conexas que nos quedan. ⚠️ Si una componente conexa no tiene hosts, solo queda un enlace, esta sigue contando como una subred
Ejemplo
Determinar las subredes en la siguiente imagenSoluciónHay 6 subredes, las tres que conectan los hosts entre sí, y las 3 que conectar los routers entre sí
Obtención de bloques de direcciones por los ISP
ICANN (Internet Corporation for Assigned Names and Numbers)
Las responsabilidades de la ICANN son:
- Asignar bloques de direcciones IP
- Gestionar DNS
- Asignar nombres de dominios y resolver disputas
Obtención de direcciones de un ISP
Una vez el ICANN asigna a un ISP un bloque de direcciones IP, este querrá dividirlas en paquetes más pequeños para venderselos a sus clientes. Normalmente, la gente en casa tiene un router con una dirección IP, y no necesita más. Pero en el caso de empresas grandes, estas pueden tener varias oficinas y ofrecer varios servicios por lo que pueden querer tener diferentes direcciones IP
Direccionamiento jerárquico
El direccionamiento jerárquico consiste en la utilización de aquella parte común a todas las direcciones de un bloque para aunciar un ISP a otros ISPs, que el tráfico con destino a cualquiera de las direcciones que coincidan los bits más significativos con dicho prefijo deberán ser mandados a este para luego ser reenviados
Ejemplo
Un ISP anuncia la dirección de red200.23.16.0/20
, por lo que el resto de ISPs que tengan un paquete cuyo destino coincida con los primeros 20 bits de la dirección anunciada, serán redirigidos a dicho ISP
Asignación de direcciones IP a un Host dentro de una red
Protocolo DHCP
Podemos asignar la dirección IP de un host manualmente, pero lo normal es que el sistema operativo envíe un paquete a través del protocolo DHCP a la dirección de broadcast de la red para que el servidor DHCP (suele estar alojado en el router) responda con una dirección libre que el host podría usar.
🎯
El objetivo del protocolo DHCP es asignar direcciones dinámicamente a los clientes que se conectan a una red. Dicho protocolo tiene las siguientes características:
- Préstamo de direcciones → El servidor puede adjudicar direcciones por un tiempo limitado. Esta característica permite asignar la misma dirección a otro host diferente cuando se le acaba el tiempo al primero.
- Gestión dinámica → El protocolo es sencillo y permite a todo tipo de dispositivos conectarse a una red y empezar a navegar directamente, sin configuraciones manuales.
📔
El protocolo proporciona en su respuesta la siguiente información al cliente
- Dirección IP adjudicada
- Dirección IP del router (gateway)
- Dirección IP del servidor DNS
- Máscara de subred
⏱️
Fases del protocolo DHCP1️⃣ Descubrimiento (opcional)
Se hace la petición de dirección al servidor DHCP (puerto 67), utilizando la dirección de broadcast. Se genera una ID de trasacción aleatoriamenteSrc: 0.0.0.0:68 // Dirección de origen (nula ya que de momento no tenemos ninguna IP, es lo que estamos solicitando) Dst: 255.255.255.255:67 // Al Broadcast ya que no sabemos cual es la dirección de red ni la IP del servidore DHCP SubDirL: 0.0.0.0 // Dirección solicitada (nula, no proponemos ninguna en especial) ID: 101 // ID generado aleatoriamente
2️⃣ Oferta (opcional)
El servidor propone al cliente una direcciónSrc: 223.1.2.5:67 // Dirección del servidor DHCP Dst: 223.1.2.4:68 // Dirección del cliente (sería nula, así que coloca la que le propone) SubDirL: 223.1.2.4 // Dirección propuesta al cliente ID: 101 // Mismo ID que la solicitud TTL: 3600 // Tiempo de prestamo (segundos)
3️⃣ Solicitud
El cliente solicita una dirección (como el una conexión diferente, el ID será diferente). El cliente podrá proponer una dirección (propuesta por el servidor en la fase de oferta), o pondrá una dirección nula0.0.0.0
para solicitar una nueva propuestaSrc: 0.0.0.0:68 // Dirección de origen (nula ya que de momento no tenemos ninguna IP, es lo que estamos solicitando) Dst: 255.255.255.255:67 // Al Broadcast ya que no sabemos cual es la dirección de red ni la IP del servidore DHCP (si hemos realizado la fase de descubrimiento si podremos saberlo) SubDirL: 223.1.2.4 // Dirección solicitada (solicitamos la que nos ha propuesto el servidor DHCP en la fase de oferta) ID: 999 // Generamos otro ID aleatorio para esta solicitud TTL: 3600 // Proponemos un TTL
4️⃣ Descubrimiento
El servidor DHCP acepta la petición del cliente// El servidor responde con los mismos valores para aceptar la propuesta Src: 223.1.2.5:67 Dst: 223.1.2.4:68 SubDirL: 223.1.2.4 ID: 999 TTL: 3600
🏎️
El protocolo DHCP funciona sobre el protocolo UDP
Protocolo NAT
Existe una problemática actual debido a la limitada cantidad de direcciónes IP para la gran cantidad de nuevos dispositivos.
Para tratar de frenar esto se propuso que en lugar de que cada dispositivo tuviese una dirección IP asignada para solo para el, se asignará una IP únicamente al router de cada red, y todos los dispositivos de dicha red se comunicarían a través de una única dirección. (como si fuera el portavoz)
De esta forma, se aisla a los dispositivos en una red privada separandolos de la red de internet
El protocolo NAT (Network Address Translation) consite en hacer una modificación de los paquetes que recibe un router de un host de la red privada que tiene como destino un host en internet. Esta transformación consiste en coger la dirección de origen del paquete, cambiarla por la dirección del router y por un puerto abierto temporalmente para esa conexión.
🕵🏻
Esta característica de MiTM (Man In The Middle) de los routers NAT proporciona un extra de privacidad (los hosts de destino no conocen que host hizo la petición) y seguridad (el router puede actuar como firewall para filtrar el contenido no deseado)
Ejemplo de comunicación por NAT
⚔️
Problemas/contraargumentos de los routers NAT
- El hecho de que un router modifique el puerto, el cual está en la capa de transporte, viola el concepto terminal a terminal, el cual dice que los routers son dispositivos de capa de red, por lo que no deben tocar la capa de transporte
- Los puertos direccionan procesos, pero en los routers NAT, los puertos direccionan hosts
NAT Transversal
El problema con los routers NAT es que no permiten que los hosts dentro de la red privada actúen como servidores ya que el router evita que haya direcciones entrantes, las conexiones se establecen siempre desde dentro hacia afuera
Esto se soluciona utilizando un host auxiliar fuera de la NAT, cuando el servidor dentro de la NAT se arranca, este se conecta al servidor auxiliar permanentemente. Aquellas conexiones que reciba el servidor auxiliar, avisarán al servidor dentro de la NAT para que establezca la conexión con el cliente
Ejemplo: Skype
Universal Plug and Play (UPnP)
Esta caracterísitca de los routers soluciona el problema anteriormente mencionado con los servidores tras un router NAT
Este mecanismo permite establecer una regla en un router para que redireccione todas las conexiones a un puerto concreto hacia un host previamente establecido
Esto se conoce también como un túnel
Internet Communication Message Protocol (ICMP)
El protocolo ICMP lo utilizan los hosts y los routers para comunicar información a nivel de red como:
- Informe de errores → Se utiliza para comunicar que un puerto es inalcanzable, o que un paquete ha alcanzada su TTL, protocolo incorrecto, etc.
- ECO → Se utiliza para detectar si un host está activo o no
Un mensaje ICMP consta de tres campos
- Tipo → Tipo de mensaje (error alcanzando el destino, eco, anuncio, TTL, error de cabecera)
- Código → Tipo de mensaje respecto del campo tipo (error de cabecera, puerto, etc.)
- Los primeros 8 bits del datagrama que causó el error (si procede)
Tabla de tipos y códigos de mensaje ICMP
Tipo | Código | Descripción |
0 | 0 | Respuesta de eco (para ping) |
3 | 0 | Red de destino inalcanzable |
3 | 1 | Host de destino inalcanzable |
3 | 2 | Protocolo de destino inalcanzable |
3 | 3 | Puerto de destino inalcanzable |
3 | 6 | Red de destino desconocida |
3 | 7 | Host de destino desconocido |
4 | 0 | Regulación del origen (control de congestión) |
8 | 0 | Solicitud de eco (ping) |
9 | 0 | Anuncio de router |
10 | 0 | Descubrimiento de router |
11 | 0 | TTL caducado |
12 | 0 | Cabecera IP errónea |
La aplicación
traceroute
utiliza este protocolo para detectar el camino de los paquetes. Esto lo hace mandando paquetes con un TTL empezando desde TTL=1
para que cuando el router lo reciba. este le responda que su paquete ha muertoIP - Internet Protocol - IPv6
Las direcciones IPv6 usan 128-bits (cuatro veces más que IPv4). En este nuevo formato, la cabecera se simplifica para ayudar a acelerar el procesamiento/reenvío en los routers
Campos de una IPv6
- Versión IP (4-bits) → IPv4/v6
Clase de tráfico (8-bits)
Este campo contiene el tipo de información que transporta el mensaje. esto permitirá dar prioridad a los paquete críticos (video/audio/ICMP) frente a los datos de texto
Etiqueta de flujo (20-bits)
Identifica datagramas en el mismo flujo para facilitar transmisiones como las de audio o vídeo
Logitud de los datos (16-bits)
Número de bytes sin contar la cabecera
Cabecera siguiente (8-bits)
Este campo indica al receptor lo que contienen los datos del paquete
- Pueden contener opciones de la cabecera
Tras la cabecera, puede haber más cabeceras extendidasEn la última cabecera extendida, este campo contendrá el protocolo de capa superior
TTL (8-bits)
Número de saltos restantes del paquete
- IP Origen (128-bits)
- IP Destino (128-bits)
IPv6 frente a IPv4
- Se utilizan direcciones de 128-bits
- 64-bits para la subred
- 64-bits para la interfaz
- La cabecera tiene una logitud fija de 40 Bytes
- No se permite fragmentación
- Se elimina el campo checksum dado que las capas anteriores ya lo incluyen
- Se elimina el campo opciones de cabecera
- Nuevos mensajes de error en ICMPv6
- Funciones de multidifusión
Transformación de IPv4 a IPv6
2️⃣
Pila dualActualmente hay routers IPv4 e IPv6. Los routers IPv6 tienen retransmiten también los paquetes IPv4 dado que tienen un segundo stack (pila) para estos paquetes (simulan ser un router IPv4)
🚂
TunelizaciónCuando hay un router IPv4, los paquetes IPv6 se mandan en los datos de los paquetes IPv4 hasta lleguar al router y reensamblarse
Algoritmos de enrutamiento
Modelo de Grafo de una red
Es habitual representar una red como un grafo, donde los nodos son los routers y las aristas los enlaces. También podemos asignar los pesos de las aristas para representar la capacidad del enlace, ancho de banda, etc.
En este contexto, un algoritmo de enrutamiento, es un algoritmo que encuentra la ruta de menor coste
Clasificación de algoritmos de enrutamiento
- ℹ️ Según la información que conoce cada nodo sobre grafo
- Ejemplo: Algoritmo de Vector de Distancias (DV)
Algoritmos globales / Algoritmos de Estado de Enlaces / Linked-State (LS)En estos, todos los nodos conocen la topología de la red, osea, todos los nodos conocen a todos los nodos y los costes de las aristas
Algortimos descentralizadosEn estos, cada nodo solo conoce a sus vecinos. Hay un proceso iterativo de intercambio de información con sus vecinos
- 🏗️ Según la posibilidad de cambio en la estructura del grafo
EstáticosLas rutas no cambian, o cambian muy lentamente
DinámicosLas rutas cambian rápidamente. Esto supone que las tablas de enrutamiento deben ser actualizadas periodicamente
Algoritmo de Estado de Enlace
Algoritmo de Estado de enlace / Linked-State (LS)
Este algoritmo usa básicamente el Algoritmo de Dijsktra. Este algorimo empieza desde un nodo cualquiera y va añadiendo nodos a la componente conexa según sean estos los más cercanos (el términos del peso de la arista) al nodo inicial de algoritmo. Tras cada iteración, el algoritmo conoce la ruta mínima a cada nodo en saltos. Tras la ejecución del algoritmo, se conoce la distancia más corta hasta cada nodo (sin importar el número de saltos)
Problema de las oscilaciones
Si todos los nodos ejecutan el algoritmo de manera sincronizada, puede darse la situación en que todo elijan redirigir los paquetes por una misma ruta, la menos congestionada en ese momento, pero en el siguiente instante se va a convertir en la más congestionada, y las rutas anteriores pasan a estar menos cogestionadas, por lo que se repetirá este escenario cíclicamente
La solución es evitar que los nodos ejecuten el algoritmo sincronizadamente, por ello se debe hacer que cada nodo ejecute el algoritmo en un momento a azar
Algoritmo de Vector de Distancias
Algoritmos de Vector de Distancias (DV)
Este algoritmo está basado en la ecuación de Bellman-Ford, este se basa en que si nuestro vecino conoce la distancia a un nodo, y nosotros conocemos nuestra distancia al vecino, entonces conocemos la distancia al nodo
Ejemplo
Si soy el nodo y quiero llegar a , y mis vecinos son , y entonces la distancia mínima será la suma de la arista hacia el vecino, más la distancia desde el vecino. La función devuelve en peso de la arista que va de a
Construcción de los DVs de cada nodo (ejemplo)
Cuando un nodo actualiza su vector de distancias, este lo notifica a todos sus vecinos para que estos actualicen también el suyo
Cada DV almacena:
- El nodo de destino
- La distancia al nodo
- La interfaz por la que debe salir para llegar al dicho nodo
💡 La distancia a sí mismo es 0
Ejemplo
Dado el siguiente grafo
Se construye la tabla DV inicial en cada nodo. Aquellos nodos desconocidos se dejan con las distancias en blanco/infinito
Cada nodo enviará su tabla al resto de nodos
En cada nodo se llevará a cabo una operación similar a esta:El nodo recibe las tablas de , y . Para cada nodo en la tabla de , este comprobará si aplicando la ecuanción de bellman-ford, puede mejorar alguna entrada de su tabla con la información recibida del resto de tablas de los nodosEn la imágen el nodo comprobará si puede mejorar la entrada con la información de los nodos , y . En este caso no se mejora.En la siguiente imágen, el nodo comprobará si puede mejorar la entrada con la información de los nodos , y . En este caso si se mejora.Tras recalcular todas las entradas, la tabla de DV del nodo queda tal que asíA continuación, deberemos realizar el mismo procedimiento con , y tras recalcular su DV, si ha habido cambios, entonces se notificarán estos a y este recalculará otra vez su DVRealizaremos este procedimiento con todos los nodos del grafo
El problema de los cambios de peso en una arista
Cuando el peso de una arista se incrementa, el resto de aristas no notarán el cambio por que hay otras nodos que les notifican que la arista tiene otro valor mejor (el valor obsoleto) por lo que el nuevo valor de la arista no tendrá efecto inmediato, sino que cada nodo recalculará numerosas veces las distancias afectadas por el cambio de peso de la arista en incrementos según el peso de las aristas de los vecino (con información obsoleta)
El problema mayor viene cuando un enlace deja de estar disponible, dicho enlace pasa a tener una distancia de infinito, lo que produce un intercambio de paquetes infinito hasta alcanzar un valor inalcanzable
Tecnica de la inversa envenenada
Esta técnica consiste en que cuando una distancia a un router depende del router al que estamos notificando nuestra tabla de distancias, la notificación de esta distancia mencionada pasará a ser infinito, para evitar posibles iteraciones infinitas en el cálculo de esa distancia. Esto provocará que el router notificado entienda que es imposible mejorar una distancia a ese nodo a través del router notificador.
Algoritmos de enrutamiento - Jerárquico
En la práctica no se suelen utilizar los algoritmos anteriores ya que para redes muy grandes, suponen problemas para gestionarlos, y los intercambios de mensajes saturarían los enlaces. Por ello en la práctica se implementa un enrutamiento jerárquico
Este algorimo consiste en agrupar los nodos/routers en redes aisladas llamadas Autonomous Systems (AS), y en cada red hay uno o varios routers que encargados de comunicarse con el exterior llamados gateways
Imagen
La interconexión de los ASs se realiza teniendo en cuenta si el destino del paquete está en el interior del AS, o en el exterior
- Para destinos internos se utiliza el protocolo intra-AS
- Para destinos externos se utiliza el protocolo inter-AS
Enrutamiento de internet
Interior Gateway Protocols (IGP)
Este es el protocolo que ejecutan los ASs para configurar las tablas de reenvío para enrutar las direcciones que se encuentran dentro del propio AS
Históricamente se han utilizado 2 protocolos de enrutamiento interno:
- Routing Information Protocol (RIP)
- Open Source Path First (OSPF)
🔒
Aunque también hay otros protocolos como los de Cisco cuyas especificaciones no son públicas
Protocolo RIP
Este es un protocolo de vector de distancias (DV) donde todos los enlaces pesan 1, a cada una de las aristas se las llama saltos (hops) de tal manera que cada vez que se atraviesa un router, se considera como un salto. Las tablas de cada router almacenan la cantidad de saltos necesarios hasta cada router
En RIP, los mensajes de respuesta se intercambian entre vecinos aproximadamente cada 30s. Cada mensaje contiene una lista de hasta 25 subredes internas del AS
💡
Cada router tiene una tabla RIP
Los mensajes RIP se propagan por la red en paquetes llamados daemon routed, estos anuncios se envían en paquetes UDP
Fallo de enlace
Si un vecino no responde en 180s, se declara muerto y las rutas que pasaban por este se invalidan a través de la técnica de la inversa envenenada.
💡
Se suele utilizar para representar el infinito, el valor máximo de saltos que pueda representarse en un paquete que RIP, este valor es
Protocolo OSPF
Utiliza un algoritmo de estado de enlace (LS) donde cada arista se representa como un peso de
1
, o como la inversa de su capacidad. Cada nodo almacena un mapa topológico de la subred a la que pertenece. Los routers envían periodicamente un paquete HELLO para comprobar si sus vecinos están operativos, normalmente al menos cada 30minsLos paquetes OSPF se transportan directamente sobre IP (en lugar de TCP/UDP) lo que implica que el protocolo debe encargarse de la transferencia fiable
Características avanzadas de OSPF
- Permite autenticar mensajes (mediante un hash)
- Permite usar varias rutas entre dos routers cuando tienen el mismo coste
- Permite definir diferentes métricas de coste para cada función
- Permite enrutamiento por multidifusión MOSPF
- Permite estructurar de manera jerárquica
Por estas razones se suele usar OSPF en los ISPs de nivel superior y RIP en los ISPs de nivel inferior
OSPF Jerárquico
- Los routers del backbone son los que están en contacto con el exterior.
- Los anuncios AS se realizan solo dentro del mismo area
Enrutamiento de internet - BGP
El protocolo BGP (Border Gateway Protocol) es un protocolo de enrutamiento entre sistemas autónomos (inter-AS). Actualmente en la versión 4 (BGP4)
Actualmente proporciona mecanismos para
- Obtener información de alcanzabilidad
- Propagar la información de alcanzabilidad
- Solo propagará cierta información dependiendo de la política del AS (no dar información a la competencia)
- Anunciar las subredes al resto de AS
¿Cómo funciona BGP? (a grandes rasgos)
En BGP, a las parejas de routers se les llama pares BGP intercambian información de enrutamiento a través de conexiones TCP semipermanentes a través del puerto 179. A estas conexiones se las llama TCP-BGP
- Si la sesión es entre routers de diferentes AS se le llama eBGP
- Si la sesión es entre routers de dentro del mismo AS se llama iBGP
💡
También puede haber una sesión entre dos routers que no tengan una conexión directa a través de un enlace
En BGP, los destinos no son hosts sino prefijos CIDR. Estos prefijos son la manera que tiene los routers de anunciarse, y de anunciar otros destinos conocidos
Si un router gateway del AS quiere anunciar una subred a otro router de otro AS, este enviará un prefijo de alcanzabilidad a través de una sesión eBGP que tiene con el router del otro AS.
Cuando el router del otro AS ha recibido el prefijo de alcanzabilidad, este lo manda a la subred correspondiente a través de una sesión iBGP
En BGP, un AS se identifica mediante un número de sistema autónomo (ASN) los cuales son asignados por la ICANN
A la combinación del prefijo y los atributos BGP se le denomina ruta
Los atributos más importantes son:
- AS-PATH → Contiene la lista de los AS por los que ha ido pasando el prefijo
- NEXT-HOP → Contiene la dirección IP de la interfaz del router a la que debe ser enviado un paquete para que este alcance la subred anunciada
Selección de ruta BGP
Cuando un router conoce varias rutas hacia un prefijo, este usa un criterio de decisión. Dicho criterio se basa en las siguientes reglas (son tenidas en cuenta como si se tratasen de filtros por capas, las que empatan en el criterio 1 se desempatan con el criterio 2, …):
- Valor de preferencia local: Routers favoritos del AS, esto es un criterio fijado por el administrador del AS por los motivos que considere
- Camino AS-PATH más corto: Se usa un algoritmo de DV
- NEXT-HOP más próximo: Este paso hace uso del protocolo intra-AS
- ASN: Se usa un criterio basado en este identificador
Mensajes BGP
OPEN
→ Abre una nueva conexión TCP con el par BGP
UPDATE
→ Anuncia una nueva ruta, o elimina una antigua
KEEPALIVE
→ Se manda periodicamente para asegurar que la sesión se mantiene viva. Envía ACKs de una solicitudOPEN
NOTIFICATION
→ Informa de errores en mensajes anteriores o cierra la conexión
Motivos detrás del protocolo intra-AS
- Motivos políticos → El administrador quiere controlar cómo y quién enruta tráfico a través de su AS
- Motivos de escala → Ayuda a los AS a dividirse para no tener tablas tan grandes
- Motivos de rendimiento → Puede ayudar a mejorar la el rendimiento de la red
Enrutamiento por difusión y multidifusión
El enrutamiento por difusión proporciona un servicio de capa de red para entregar un paquete a todos los nodos de una red
El enrutamiento por multidifusión proporciona un servicio de capa de red para entregar un paquete a un subconjunto de nodos de una red
Protocolos de difusión
Difusión por duplicación en la fuente
Esta opción consiste en enviar una copia del paquete a cada destino.
Esta opción plantea un problema si la el host de origen no conoce todos los nodos de la red
Difusión por duplicación en la red (I)
Esta técnica se conoce como inundación no controlada, y consiste en enviar una copia a cada vecino, y esta enviará a su vez una copia a sus vecinos.
Esta opción plantea un problema de ciclos conocido como tormenta de difusión
Difusión por duplicación en la red (II)
El enfoque de inundación controlada es como el de inundación no controlada, pero tiene dos opciones para evitar la tormenta:
- Inundación por número de secuencia: Cada nodo solo enviará un paquete si no lo ha enviado antes
- Reenvío por el camino inverso (RPF): Cada router solo continuará con la inundación, si el paquete que le ha llegado, ha llegado por camino más corto hacia el origen
⚠️
Esta técnicas evitan la tormenta de difusión, pero no garantizan que no haya paquetes redundantes
Difusión por árbol de recubrimiento
Como cada grafo se puede expresar como un arbol de recubrimiento mínimo, cada nodo solo propagará un paquete hacia abajo del arbol
Algoritmos usado en la práctica
- OSPF → Utiliza inundación controlada por número de secuencia
- Gnutella → Utiliza inundación controlada por número de secuencia
- Ethernet → Utiliza la difusión por árbol de recubrimiento mínimo (STP, Spanning Tree Protocol)
Protocolos de multidifusión / multicast
En la multidifusión, como no tiene sentido que cada datagrama contenga la dirección de todos los destinatarios, se suele utilizar un identificador único para el grupo (indirección de direcciones)
- En internet se suelen utilizar direcciones de Clase D
- El grupo de receptores se denomina grupo de multidifusión
La multidifusión en internet se consigue gracias a dos protocolos:
- IGMP → Opera entre un host y un router
- Un protocolo de multidifusión → Realiza la coordinación de los routers que participan en la multidifusión
IGMP (Internet Group Management Protocol)
- Opera entre un host y su router
- Estos mensajes se transmiter por IP
Dispone de 3 tipos de mensajes
membership_query
→ Es enviado por un router para conocer el estado de los hosts que participan en una multidifusión
membership_report
→ Es enviado por el host para unirse a un grupo de multidifusión, o para responder a unmembership_query
leave_group
→ Es usado opcionalmente por los hosts cuando abandonan un grupo
Algoritmos enrutamiento por difusión
- Árbol compartido → Todos los nodos usan el mismo arbol, calculado a partir de un nodo central
- Árbol basado en origen → Se calcula un arbol por cada posible origen
- Reenvío por el camino inverso y poda → Mecanismo de poda (prunning)
Algoritmos de multidifusión en la práctica
DVMRP → El primero que se inventó
Distance-Vector Multicast Routing Protocol
- Utiliza un arbol basado en RPF y Poda
- Periodicamente olvida rama podadas
- Los routers puede reconectarse a través de mensajes IGMP
- Usado en routers comerciales
PIM → El más frecuente
Protocol Independent Multicast
- No depende de ningún algoritmo de enrutamiento de unidifusión específico
- Utiliza RPF y poda como DVMRP pero con algunas mejoras
Tiene dos modos:
- Modo denso → Cuando la mayoría de los routers estan involucrados
- Modo disperso → Cuando pocos routers están involucrados. Utiliza puntos de cita para configurar el arbol. Permite SSM (Source Specific Multicast)
- MOSPF