2.4. Encaminamiento IP

Ahora nos ocuparemos del problema de encontrar el puesto al que se envían los datagramas basándose en la dirección IP. La diferentes partes de las direcciones se manejan de forma distinta; es su trabajo configurar los ficheros que indican como se trata cada parte.

2.4.1. Redes IP

Cuando escribe una carta a alguien, normalmente pone una dirección completa en el sobre especificando el país, la provincia y el código postal. Después la echa al buzón, la oficina de correos la hará llegar a su destino: se enviará al país indicado, donde el servicio nacional la enviará a la provincia y la región adecuada. La ventaja de este esquema jerarquizado es obvia: mande donde mande la carta, la oficina de correos local apenas debe conocer a qué dirección remitir la carta, es más, a la oficina no le importa por dónde viajará esta siempre que llegue al país de destino.

Las redes IP están estructuradas de forma similar. Toda Internet consiste en varias redes, denominadas sistemas autónomos. Cada sistema realiza un encaminamiento interno entre los puestos que lo forman, por lo que la tarea de remitir un datagrama se reduce a encontrar un camino a la red del puesto de destino. Tan pronto como el datagrama se entrega a cualquier puesto en esa red particular, el resto del proceso se realiza exclusivamente en la misma red.

2.4.2. Subredes

Esta estructura se refleja dividiendo la dirección IP en la parte del puesto y la de red, como se explicó anteriormente. Por defecto, la red de destino se obtiene a partir de la parte de red de la dirección IP. De este modo, los puestos con números idénticos de red IP deben encontrarse en la misma red.[1]

También tiene sentido proporcionar un esquema similar dentro de la red, ya que ésta puede constar de un grupo de cientos de redes más reducidas, con las unidades más pequeñas haciendo de redes físicas como Ethernets. Por lo tanto, IP permite subdividir una red IP en varias subredes.

Una subred se responsabiliza de enviar datagramas a un cierto rango de direcciones IP. Esto es una extensión del concepto de dividir campos de bits, como en las clases A, B, y C. De cualquier forma, la parte de red se extiende ahora para incluir algunos bits de la parte del puesto. El número de bits que se interpreta como el número de subred viene dado por la llamada máscara de subred o máscara de red. Este es también un número de 32 bits, que especifica la máscara de bit para la parte de red de la dirección IP.

La red del campus de la Groucho Marx University es un ejemplo de este tipo de redes. Tiene un número de red de clase B 149.76.0.0, y su máscara de red es 255.255.0.0.

Internamente, la red del campus de la GMU consta de varias redes más pequeñas, como son las LANs de varios departamentos. De modo que el rango de direcciones IP se divide en 254 subredes: desde 149.76.1.0 hasta 149.76.254.0. Por ejemplo, al departamento de Física Teórica se le ha asignado 149.76.12.0. La dorsal del campus es una red por derecho propio, y se le ha asignado 149.76.1.0. Estas subredes comparten el mismo número de red, mientras que el tercer octeto se usa para distinguirlas entre sí. Utilizarán así una máscara de subred de 255.255.255.0.

Figura 2-1 muestra como 149.76.12.4, la dirección de quark, se interpreta de forma distinta cuando la dirección viene dada como una red de clase B ordinaria y cuando se usa como subred. >>>>>>> 1.7

Es dificil notar que la técnica de generar subredes es únicamente una división interna de la red. Las subredes se generan por el propietario de la red (o el administrador). Frecuentemente, las subredes se crean para reflejar límites determinados, ya sean físicos (entre dos Ethernets), administrativos (entre dos departamentos), o geográficos (entre dos ubicaciones distintas), y la autoridad de cada subred se delega a alguna persona de contacto. De todos modos, la estructura afecta solo al funcionamiento interno de la red y es completamente invisible para el mundo exterior.

2.4.3. Pasarelas

La división en subredes no solo es un beneficio para la administración; es frecuentemente una consecuencia natural de límites de hardware. El alcance de un puesto en una red física determinada, tal como una Ethernet, es muy limitado: solo se puede comunicar con puestos de la red donde él mismo se encuentra. Solo se puede acceder a los demás puestos a través de máquinas con una utilidad especial denominadas pasarelas. Una pasarela es un puesto que está conectado simultáneamente a dos o más redes físicas y está configurado para intercambiar paquetes entre ellas.

Figura 2-2 muestra parte de la topología de red en la Groucho Marx University (GMU). Los puestos que están en dos subredes al mismo tiempo se muestran con ambas direcciones.

Redes físicas diferentes deben pertenecer a redes IP distintas para que IP sea capaz de reconocer si un puesto está en una red local o no. Por ejemplo, el número de red 149.76.4.0 se reserva para los puestos en la LAN de matemáticas. Cuando se manda un datagrama a quark, el software de red en erdos entiende inmediatamente por la dirección IP 149.76.12.4 que el puesto de destino está en una red física diferente, y por lo tanto sólo puede ser alcanzado a través de una pasarela (sophus por defecto).

sophus está conectada a dos subredes distintas: el departamento de Matemáticas y la dorsal del campus. Accede a cada una a través de una interfaz diferente, eth0 y fddi0, respectivamente. Ahora bien, ¿que dirección IP se le debe asignar?. ¿Debemos darle una en la subred 149.76.1.0, o en la 149.76.4.0?

La respuesta es: “ambas.” sophus tiene asignadas la dirección 149.76.1.1 para su uso en la red 149.76.1.0 y la dirección 149.76.4.1 para la red 149.76.4.0. Una pasarela debe tener asignada una dirección IP para cada red a la que pertenezca. Estas direcciones—junto con la correspondiente máscara de red—están vinculadas a la interfaz por la que se accede a la subred. De modo que el esquema de interfaces y direcciones de sophus sería este:

La última entrada define la interfaz loopback lo, de la que hablamos anteriormente.

Generalmente, se puede ignorar la sutil diferencia entre destinar una dirección a un puesto o a su interfaz. En el caso de puestos que están solos en una red, como erdos, normalmente nos referiremos al puesto con "esta o aquella" dirección IP, aunque estrictamente hablando, sea la interfaz Ethernet la que tenga esa dirección IP. La distinción sólo es realmente importante en el caso de referirse a una pasarela.

2.4.4. Tabla de encaminamiento

Ahora nos centraremos en como IP elige qué pasarela usar para enviar un datagrama a una red remota.

Hemos visto que erdos, cuando envía un datagrama a quark, comprueba la dirección de destino y encuentra que ésta no está en la red local. erdos por lo tanto envía el datagrama a la pasarela por defecto sophus, que se enfrenta ahora al mismo problema. sophus reconoce que quark no está en ninguna de las redes a las que está conectada directamente, de modo que todavía tiene que encontrar otra pasarela a través de la cual remitirlo. La elección correcta debería ser niels, la pasarela del departamento de Físicas. Por lo tanto sophus necesita información para asociar una red de destino con una pasarela adecuada.

Para esta tarea, IP usa una tabla que asocia redes con las pasarelas por las que estas pueden ser alcanzadas. Generalmente, debe incluirse también una entrada que abarque todo (el encaminamiento por defecto); esta es la pasarela asociada a la red 0.0.0.0. Todas las direcciones de destino se corresponden con este encaminamiento, ya que no se requiere ninguno de los 32 bits para ajustarse a él, y por tanto los paquetes dirigidos a una red desconocida se envíarán al encaminamiento por defecto. En sophus, la tabla podría ser algo como esto:

Si es necesario usar un encaminamiento a una red a la que sophus está conectada directamente, no se necesita una pasarela; en ese caso la columna de la pasarela contiene un guión.

El proceso que se sigue para identificar si una dirección de destino determinada corresponde con un encaminamiento es una operación matemática. Es bastante simple, pero requiere conocimientos de aritmética binaria y lógica: Un encaminamiento corresponde a un destino si la dirección de red operada lógicamente por medio de AND con la máscara de red es precisamente la dirección de destino operada lógicamente por medio de AND con la máscara de red.

Traducción: un encaminamiento corresponde si el número de bits de la dirección de red especificada por la máscara de red (empezando por el bit más a la izquierda, el orden más alto del byte uno de la dirección) corresponde al mismo número de bits en la dirección de destino.

Cuando la implementación de IP busca el mejor encaminamiento hasta un destino, puede que encuentre varias entradas que correspondan a la dirección del objetivo. Por ejemplo, sabemos que el encaminamiento por defecto corresponde a todos los destinos, pero los datagramas destinados a redes unidas localmente también corresponderán a su encaminamiento local. ¿Cómo IP decide que encaminamiento usar? Es aquí donde la máscara de red representa un papel importante. Mientras que los dos enrutamientos corresponden al destino, uno de ellos tiene una máscara de red mayor que la del otro. Se dijo anteriormente que la máscara de red se usa para dividir los espacios de las direcciones en redes más pequeñas. Cuanto mayor es una máscara de red, mejor especifica la correspondencia a la dirección de un objetivo; cuando se envían datagramas, siempre se debería elegir el enrutamiento que tenga la mayor máscara de red. El encaminamiento por defecto tiene una máscara de red de cero bits, y en la configuración mostrada anteriormente, las redes enlazadas localmente tienen una máscara de red de 24 bits. Si un datagrama corresponde a una de estas redes, será enrutado al dispositivo apropiado en vez de seguir el encaminamiento por defecto porque el enrutamiento de la red local corresponde a un mayor número de bits. Los únicos datagramas que se encaminan a través del encaminamiento por defecto son aquellos que no corresponden a ningún otro enrutamiento.

Se puede construir tablas de encaminamiento siguiendo distintos métodos. En el caso de LANs pequeñas, normalmente lo más eficiente es construirlas a mano y nutrirlas de IP usando el comando route en el momento del arranque (vease Capítulo 5). Para redes mayores, se construyen y ajustan en tiempo de ejecución por los demonios de encaminamiento; estos demonios corren en puestos centrales de la red e intercambian información de enrutamiento para calcular caminos “óptimos” entre los miembros de la red.

Dependiendo del tamaño de la red, se necesitará usar diferentes protocolos de encaminamiento. Para enrutar dentro de sistemas autónomos (tales como el campus de Groucho Marx) se usan los protocolos de encaminamiento interno. El más importante de éstos es el Routing Information Protocol (RIP), que es implementado por el demonio BSD routed. Para enrutar entre sistemas autónomos se tienen que usar protocolos de encaminamiento externo como External Gateway Protocol (EGP) o Border Gateway Protocol (BGP); estos protocolos, incluido RIP, han sido implementados en el demonio gated de la Universidad de Cornell.

2.4.5. Métrica de encaminamiento

Hay que contar con los encaminamientos dinámicos para elegir la mejor ruta hasta nuestro puesto o red de destino basándonos en el número de saltos. Los saltos son las pasarelas que un datagrama debe atravesar antes de llegar al puesto o la red. Cuanto más corta sea una ruta en mejor consideración la tendrá RIP. Las rutas muy largas con 16 saltos o más son consideradas como inusable y son descartadas.

RIP controla la información interna de encaminamiento de su red local, pero tiene que ejecutar gated en todos los puestos. En el momento del arranque, gated comprueba todas las interfaces de red activas. Si hay más de una interfaz activa (sin contar la interfaz loopback), asume que el puesto está intercambiando paquetes entre varias redes e intercambia y emite activamente información de encaminamiento. De cualquier forma, las actualizaciones de RIP solo se recibirán pasivamente y se pondrá al día la tabla de encaminamiento local.

Cuando se transmite información según la tabla de encaminamiento local, gated calcula la longitud de la ruta atendiendo al llamado valor métrico asociado a la entrada de la tabla de encaminamiento. Este valor métrico lo decide el administrador del sistema cuando configura el encaminamiento, y debe reflejar el valor actual de la ruta.[2] Por tanto, la métrica de la ruta a una subred a la que el puesto está directamente conectada debe ser siempre cero, mientras que una ruta que vaya a través de dos pasarelas debe tener una métrica de dos. De todos modos, no deberá preocuparse por las métricas si no usa RIP o gated.

Notas

[1]

Los sistemas autónomos son ligeramente más generales. En ellos se puede comprender más de una red IP.

[2]

El valor de una ruta puede imaginarse, en casos simples, como el número de saltos requeridos para alcanzar el destino. Aunque calcular apropiadamente los valores de las rutas en diseños de redes complejas puede ser una gran dificultad.