Capa 3 del modelo OSI, direccionamiento IP y routing (CCNAv7 ITN mod 8)

Spread the love

El módulo 8 de CCNA ITN, el primer curso de la versión actual (2020) de CCNA es la introducción a la capa de red y a IP en particular. A continuación resumiré un poco éste contenido concentrándome en los aspectos clave para comprender el tema y aprobar el examen. Disfrútenlo.

Introducción: la capa de red (3a del modelo OSI)

Yo ya he escrito mucho sobre el tema y sus derivados: ¿En qué consiste la capa 3 del modelo OSI? Red, Lección básica de enrutamiento (4 entradas), Tutorial básico de Subnetting (5 entradas) y mi publicación anterior que también está relacionada un poco con el tema (Sistemas numéricos y por qué son importantes en redes). Evidentemente es uno de los temas que más me gusta y también uno de los que más atención requiere cuando se prepara el examen de certificación 200-301 CCNA. Entonces voy a explicar brevemente en qué consiste la capa 3, sus características y cómo se sitúa IP en ella.

La capa de red del modelo OSI define las funciones de la comunicación digital que se requieren para llevar información de un nodo a otro de la red independientemente del medio. En otras palabras, hay que definir una forma de identificar los nodos de la red y las redes mismas. No sólo eso, es necesario propagar esa información para que los dispositivos intermediarios conozcan de esas redes y en últimas puedan determinar caminos hacia ellas, de tal manera que cuando reciben un flujo de paquetes puedan tomar la mejor decisión de cómo hacerlo avanzar en el camino hacia su destino.

De la definición anterior se desprenden tres conceptos clave: identificación de nodos, identificación de redes y propagación de información. Cualquier protocolo que tenga las primeras dos características se consideraría un protocolo de la capa de red. Es Ethernet un protocolo de capa de red? Veamos: 1) Identifica nodos: sí, cada nodo tiene una MAC y por ende está identificado de manera única, 2) identifica redes: No, las tramas de Ethernet no tienen ningún campo que identifique las redes, las direcciones son números con una estructura que no permite clasificación jerárquica de las mismas, es decir, es una dirección plana, un número. Por qué IP sí es un protocolo de la capa de red? 1) identifica nodos: la dirección IP y la porción en ceros de la máscara identifica un nodo dentro de una red específica, 2) Identifica redes: la porción de la dirección IP de un Nodo en la cual la máscara es sólo unos identifica la dirección de red. Cómo se explican las anteriores afirmaciones lo pueden leer en mi entrada anterior sobre sistemas numéricos en redes.

La propagación de información se desprende de la posibilidad de identificar las redes, es decir, del hecho de que el direccionamiento permite agrupar y jerarquizar los nodos y redes, similar a lo que se hace en los envíos de paquetes por correo certificado: una dirección de envío, por ejemplo tu casa, está compuesta por el país, un Estado, un municipio, una calle, un nro y finalmente el nombre de un destinatario (probablemente tu nombre). Ésta es una dirección jerárquica: lo más general es el país, que se usa para enviar paquetes fuera de nuestro propio país y agrupa de alguna manera todos los destinatarios del país sin necesidad de conocerlos, una vez que el paquete llega, se usa el estado o municipio para enviarlo que también representa a todos los destinatarios de ese estado o municipio y así sucesivamente hasta llegar al destinatario deseado. Todo éste tema de propagación de la información se conoce como enrutamiento, encaminamiento o routing en inglés.

Antes de entrar en el tema de IP, existen otros protocolos de capa de red: AppleTalk, Novell, etc. todos muy antiguos y fuera de uso, pero quiero mencionar un ejemplo de otro protocolo antiguo todavía en uso llamado CLNP que usa direcciones de capa 3, se llaman direcciones NSAP. Una dirección de éstas tiene la estructura (simplificando) de AA.BBBB.CCCC.CCCC.CCCC, en la que A determina cómo se interpreta el resto de la dirección, B es el área de la red y C es el identificador del nodo. Es la parte B la que permite indicar que ésta dirección es una dirección de capa de red. Las direcciones NSAP se usan para enrutar con el protocolo ISIS, un importante protocolo de enrutamiento para quienes deseen continuar la carrera de transporte de datos (CCNP y más).

Finalizando con la capa de red, fíjense que las funciones son muy simples: identificar la red y el nodo. Eso significa que los protocolos de ésta capa no requieren mucho más que eso y su encabezado es relativamente simple. En ésta versión de CCNA mencionan que la capa de red es responsable de encapsular y desencapsular datos (en realidad todas las capas lo hacen), pero eso será importante en el examen.

NOTA: El término segmento es muy ambiguo y se verá que se usa en otros contextos, de ahora en adelante, cuando hablamos de nodos de red o routers, un segmento de red entre routers e incluso el segmento final se pueden llamar enlaces (link) y es el término preferido cuando hablamos de enrutamiento.

Proceso de enrutamiento

Ya hemos mencionado un primer paso del enrutamiento que consiste en lo que hace el host: definir si el destino está en el mismo segmento o no. Éste proceso lo llamamos elección del primer salto: si el destino no está en el mismo segmento, el host pone en el encabezado de capa 2 la dirección de su default gateway (DGW) o puerta de enlace, éste es el primer enrutador en el camino. Cuando el router recibe la trama e identifica su dirección de capa 2 lo debe procesar, pero cuando observa el encabezado de capa 3, observará que el destino no es una dirección que pertenezca a alguna de sus interfaces, entonces debe buscar una salida para reenviar éste paquete. En éste proceso el router hace enrutamiento (decidir por dónde reenviar según la dirección de capa 3) y switching (construir una trama nueva de capa 2 para el siguiente salto que corresponda a la tecnología del enlace de salida).

Una red de datos no es simple, pueden haber muchos caminos o muchas formas de hacer llegar un paquete de un extremo a otro de la red. Así como la decisión de switching (o conmutación) en un switch se toma con base en la tabla de MACs, los routers toman su decisión con base en la tabla de enrutamiento. Una tabla de enrutamiento lista las direcciones de red y las asocia con una interfaz de salida, por ende, cuando el router mira la dirección destino y detecta que no pertenece a ninguna de sus interfaces, busca en la tabla de enrutamiento una interfaz de salida, ésta a su vez, determinará qué tipo de trama debe construír para reenviar el paquete.

Analicemos el siguiente escenario:

Aunque a simple vista parecen sólo tres redes, en realidad los enlaces entre routers se deben considerar como subredes adicionales, es decir, hay 6 redes. No vamos a analizar el detalle del enrutamiento, sólo a ilustrar el uso de las tablas de enrutamiento, como ya he mencionado, he escrito mucho sobre ese tema y pueden ir a las lecturas propuestas. Tengan en cuenta que lo que está conectado al switch es una sola red, PC0, Laptop0 y la interfaz del router hacia el switch hacen parte de la red 172.16.0.0/16.

La siguiente es la tabla de enrutamiento del LanRouter (izq-abajo) simulada en Packet Tracer 7.2.2:

Si PC0 desea enviar un paquete destinado a PC1, lo primero que hace es detectar que la red destino no es la misma suya (aplicando máscara a IP destino, ver entrada sobre elección del primer salto), eso significa que la IP destino (en el encabezado IP) es la de PC1 pero la MAC destino (en el encabezado Ethernet) es la de la interfaz de LanRouter. Cuando LanRouter recibe la trama, la abre (procesa capa 2), encuentra la IP destino, no pertenece a ninguna de sus interfaces (el destino no es el router mismo) por lo tanto la debe reenviar y mira su tabla de enrutamiento. En ésta, la IP destino corresponde hasta el bit 24 con la red: 192.168.1.0/24 (última ruta en la tabla de ejemplo) y allí mismo dice que el paquete debe salir por la interfaz GigabitEthernet 0/1/0 (es de fibra, se nota por el color del enlace en la topología), encapsula el paquete original en una trama adecuada para ese nuevo medio, no cambia la IP destino pero la dirección de capa 2 es la del LanRouter(1) (en ese enlace) y la libera. LanRouter(1) ve que la dirección de capa 2 es de él, lo procesa, ve que la IP no es de ninguna de sus interfaces y mira su tabla de enrutamiento, no tenemos imagen de ella, pero sí podemos deducir que tendrá una entrada que dice que la red destino de ese paquete está conectada a una de sus interfaces por lo que liberará una trama correspondiente a esa tecnología y llegará al destino final. Cualquier comunicación estará compuesta por muchos paquetes con éstas condiciones, a ésto le llamamos flujo, por ende, el proceso anterior se repite para cada paquete de un flujo particular de datos.

Un flujo son todos los paquetes que tienen las mismas IPs origen y destino, el mismo protocolo de capa 4 y el mismo puerto destino (si es tráfico de capa 4 o superior). Por ejemplo, supongamos que el servidor de la imagen es un servidor Web, si desde PC0 se abre un navegador y se pone como dirección la IP del servidor, se inicia un flujo de paquetes cuya IP origen es la de PC0, IP destino el Servidor, protocolo TCP y puerto destino 80, que es el puerto típico de las páginas web. El flujo no tiene una definición estándar, algunos dispositivos lo consideran sólo IPs (origen/destino) y protocolo L4, otros lo consideran IPs (o/d), puertos (o/d) y protocolo. Esto lo veremos en más detalle en las siguientes publicaciones.

La tabla de enrutamiento requiere conocerla, especialmente para el examen. Las letras en cada fila indican de qué manera se conocen éstas rutas, en nuestro caso tenemos L, C, S y R, indicando Link (IP de una interfaz conectada y encendida), Connected (Dirección de red de una interfaz directamente conectada y encendida), Static (una red que un administrador del router escribió manualmente) y Rip que es un antiguo protocolo que publica redes de manera automática.

Los demás detalles de la tabla de enrutamiento los veremos más adelante, por ahora me parece que en ésta entrada no es razonable hablar más de enrutamiento y de protocolos, por eso dejaremos ésta introducción hasta este estado. Si se quieren adelantar un poco, una de las tantas entradas que he hecho (un poco vieja pero vigente) es este resumen sobre el enrutamiento y su configuración o si se sienten más confiados con el tema (sin salirse de nivel CCNA) revisen el tutorial de enrutamiento 🙂

Protocolo de Internet (IP por sus siglas en inglés)

IP es un protocolo muy simple, se considera no orientado a la conexión dado que no reserva rutas o caminos antes de transmitir la información, si lo anterior fuera necesario se usaría TCP que es de la capa superior (transporte o capa 4), es decir, no es responsabilidad de la capa 3 sino de la 4. IP tampoco verifica o garantiza el arribo de la información, a eso se le conoce como transporte de mejor esfuerzo, uno de esos términos engañosos porque en realidad significa que no hay ninguna garantía. Otra vez, si se necesitara confiabilidad (verificar el arribo de la información) se usarían campos en los encabezados TCP de la siguiente capa. Y finalmente, IP es independiente del medio de transporte, recuerden que el medio de transporte es lo que define la capa 2 o capa de enlace de datos, que se ocupa de la comunicación dentro de un mismo segmento de red. En otras palabras, el encabezado de capa 2 va a estar cambiando de segmento a segmento porque cada uno de ellos puede ser una tecnología y medio diferente, mientras el encabezado de capa 3 no cambia en el sentido de que siempre es IP y la mayoría de sus campos se mantienen iguales. IP define un valor llamado MTU o Maximum Transfer Unit que indica cuál es el tamaño máximo que permite el medio y si llega un paquete de un tamaño mayor al que usa el siguiente segmento de red, el paquete se fragmenta, es decir, se divide en paquetes más pequeños (con su respectiva numeración para ser reconstruido).

En resumen, IP es un protocolo no orientado a la conexión, no confiable (no verifica la entrega ni retransmite por errores o pérdidas) e independiente del medio.

IPv4 e IPv6

El protocolo que hemos usado ampliamente desde el nacimiento de internet es IP versión 4 (no pregunten por las otras versiones XD ), como ya lo he mencionado, las direcciones consisten en 32 bits escritos en 4 números decimales (notación decimal punteada), si no comprende por favor lea mi publicación anterior sobre el tema. El encabezado de IPv4 tiene los siguientes campos:

Version (4) -- Header Length (4) -- DCSP (8) -- Total Length (16)               = 32 bits (4 bytes)
Identification (16)                          -- Flag (4) -- Fragment offset (12)= 32 bits (4 bytes)
TTL (8) -- Protocol (8)                      -- Header Checksum (16)            = 32 bits (4 bytes)
Source IP address (32)                                                          = 32 bits (4 bytes)
Destination IP Address (32)                                                     = 32 bits (4 bytes)

Justo después de éste encabezado viene la carga o payload que son los datos objeto de la transmisión. Los números en paréntesis son los bits que ocupa cada campo y como pueden ver cada sección tiene 32 bits, con el fin de que estuviera alineado con la palabra de datos más poderosa de su momento. El campo Ver es para indicar la versión, cualquier paquete IPv4 tiene el valor 4 en esos bits (0100); header length tiene el tamaño en bytes del encabezado porque al final de la dirección destino se pueden agregar opciones que hacen que el encabezado sea de tamaño variable; DSCP significa Differentiated Services Code Point y es un campo que permite marcar un flujo de paquetes con el fin de administrar la prioridad sobre otros flujos, es una de las historias catastróficas de IP ya que ha tenido diversos nombres y usos durante la historia, otro nombre muy común que tiene es TOS o type of service; Total Length da cuenta de la cantidad de bytes totales del paquete incluyendo la carga (los datos del usuario y protocolos de capa superior); Identification, Flag y Fragment Offset se usan para fragmentar paquetes en un enlace como describí en la sección anterior. TTL significa Time to live y es un contador que limita la cantidad de routers por los cuales puede pasar un paquete: un nodo establece éste número y cada vez que un router pasa un paquete de una interfaz a otra lo decrementa, es decir, si una impresora decide que un paquete no debe pasar por más de 64 routers o saltos, envía su información con ése valor en el campo TTL de todos sus paquetes, cada router lo decrementa y si algún router, al decrementarlo lo pone en cero, el paquete se descarta. Éste también es un mecanismo básico para evitar que un bucle de enrutamiento sea catastrófico, lo entenderán más adelante 😉 Protocol es un nro que identifica el contenido, por ejemplo, si la carga de éste paquete contiene información encapsulada en el protocolo TCP, el campo protocol del paquete contendrá el valor 6 (0000 0110), si el contenido fuera UDP el valor sería 17 y así (ver tabla de IP protocol numbers). Finalmente, Header checksum es una suma que garantiza que el encabezado no cambió por accidente durante la transmisión.

IPv4 ha tenido muchas debilidades y se ha desactualizado respecto a los dispositivos y usos actuales de la red. Las principales razones de su obsolesencia son:

  1. Agotamiento de direcciones
  2. El uso de direccionamiento privado dificulta conectividad de extremo a extremo (las IPs se pueden repetir)
  3. El uso de NAT crea problemas de diagnóstico de fallos y conflicto con algunas aplicaciones (Cambiar IPs en ciertos puntos de la red)

Para superar éstas limitantes de IPv4 se diseñó IPv6 y aparte de superarlas, se mejoró el encabezado para ser más eficiente. IPv6 usa 128 bits en vez de 32, pero las direcciones se escriben en hexadecimal en vez de en decimal. El encabezado tiene el doble del tamaño, pero a diferencia del encabezado de la versión 4, ésta tiene un encabezado de longitud fija, es decir, IPv4 generalmente tiene 20 bytes e IPv6 tiene siempre tiene 40 bytes. En ambos casos hay que hacer una aclaración: las opciones de IPv4 que son las que hacen su encabezado variable rara vez se usan, sin embargo la variación del tamaño siempre se debe consultar (recuerdan header length?), de otro lado, ésta estructura de opciones en IPv6 se maneja como si fueran protocolos adicionales de capa superior, pero las llamamos encabezados de extensión, en otras palabras, el encabezado básico de IPv6 siempre tendrá 40 Bytes, pero si se necesitan opciones, éstas estarán enseguida del encabezado básico y antes del encabezado de la siguiente capa. Otra mejora que implementa IPv6 es la supresión de la fragmentación, es decir, en vez de fragmentar, se usa un mecanismo de host a host previo a una transmisión que establece la MTU desde un principio en el valor mínimo para evitar la fragmentación. Finalmente nos deshacemos del header checksum dado que los protocolos de capa 2 hacen ésta validación y descartan tramas con defectos automáticamente, adicionalmente, los medios actuales son más eficientes que aquellos para los cuales se diseñó IPv4. Los campos restantes cambian su nombre y algunos cambian un poco su forma de uso. Todo se resume en la siguiente imagen tomada de Research Gate:

Como ven en la imagen, los campos rojos se eliminan, los campos amarillos no cambian de nombre y los campos azules cambian de nombre y Flow label es nuevo. La imagen ilustra que el encabezado es justo el doble (pero recuerden que las direcciones son 4 veces más grandes!). Traffic class es igual que ToS/DSCP, Next header es igual que Protocol y Hop limit es igual que TTL. El campo Payload length es equivalente a Total length pero en IPv4 indica la longitud total del paquete incluyendo el encabezado, en IPv6 es sólo la longitud de la carga, es decir el contenido. Finalmente, flow label es un campo nuevo que extiende las posibilidades de calidad de servicio diferenciando flujos.

Conclusiones y siguientes publicaciones





En ésta entrada vimos brevemente el concepto de enrutamiento y nos concentramos en conocer un poco el protocolo IP y un poco sobre su funcionamiento o cómo se usan los campos en su encabezado. IP en realidad es un protocolo simple dado que sus responsabilidades dentro de la comunicación de extremo a extremo son muy limitadas.

Las próximas publicaciones van a tratar el tema de ARP y observación de tráfico antes de comenzar la configuración de los routers. Si les ha gustado el contenido o les ha parecido útil, por favor comenten y compartan.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.