Como se describió previamente, la principal responsabilidad del protocolo IP es determinar qué camino deben tomar los paquetes para llegar al punto de destino. La tarea de determinar ese camino es lo que se conoce como ruteo (o encaminamiento).
IP asume que la computadora está directamente conectada a una red local (por ejemplo, una LAN Ethernet) y que puede enviar paquetes directamente a cualquier otra computadora sobre esa misma red; si la dirección de destino es en la red local, IP simplemente accede al medio físico de transmisión y envía el paquete. En la figura siguiente, Antares y Rigel están sobre la misma red, por lo que pueden comunicarse directamente:
Para determinar a qué gateway deberán enviarse los paquetes, IP extrae la dirección de red del nodo de destino y consulta una tabla, denominada tabla de ruteo, en la cual se listan las redes conocidas y los gateways que pueden utilizarse para alcanzarlas. Por ejemplo, la tabla de ruteo de Aldebarán contiene la siguiente información:
Supongamos, por ejemplo, que Altair requiere enviar datos a Canopus. El módulo IP de Altair determina que la computadora de destino no pertenece a su misma red; consultando su tabla de ruteo, determina que puede llegarse a la red de Canopus a través de Orión, por lo que le envía los paquetes a dicha computadora. El módulo IP residente en Orión, por su parte, sabe que para llegar a Canopus hay dos vías posibles: pasando por Andrómeda o por Cygni. Aplicando algún criterio para evaluar ambas rutas y seleccionar la mejor de ellas, Orión envía cada paquete a, por ejemplo, Andrómeda. Esta última determina que la dirección de destino está en una de las redes a las que se encuentra directamente conectada, por lo que los envía diretamente a Canopus.
Es importante observar que la ruta que seguirán los paquetes desde el origen hasta su destino se va decidiendo a medida que los mismos viajan por la red. Cada nodo es responsable de determinar cual es el proximo "salto" en dirección al nodo final, en función del contenido de su tabla de ruteo. Este modelo de ruteo asume que si el nodo de destino no pertenece a la red local, deberá haber una entrada en la tabla de ruteo que especifique el gateway a utilizar. En otras palabras, asume que todos los nodos están al tanto de la estructura de la red.
En consecuencia, cada vez que la estructura de la red cambia (por ejemplo, cuando se agrega o elimina una subred), el administrador debería actualizar las tablas de ruteo en todos los nodos. Igualmente, si la red se interconectara a otra red, una nueva entrada debería agregarse en las tablas de ruteo de cada máquina.
Siguiendo con este razonamiento, a medida que la red crece y se interconecta a otras redes las tablas de ruteo se hacen mas largas y complejas; inclusive sería posible que fueran virtualmente imposibles de construir o mantener, en especial si la red se conecta a Internet (formada por miles de redes independientes).
Por supuesto, existen previsiones para enfrentar estos problemas: el ruteo dinámico o adaptativo y las rutas por defecto.
Ruteo estático vs. ruteo dinámico
La tabla de ruteo de un host puede construirse de dos maneras. Una posibilidad consiste en que el administrador (por medio de scripts que se ejecutan al inicializar el sistema, o por medio de comandos ejecutados interactivamente) introduzca manualmente las entradas de la tabla. Esta técnica se denomina ruteo estático, debido a que la tabla de ruteo se construye cuando la computadora se prende y no varia con el tiempo.
La otra posibilidad es ejecutar en cada host un programa que actualice automática y periódicamente la tabla de ruteo. Dichos programas se basan en el hecho de que una computadora siempre tiene acceso a otras computadoras conectadas a la red local; esto se traduce en que las tablas de ruteo contienen inicialmente al menos las direcciones de las redes locales. Si tomamos por caso a Orión, su tabla de ruteo inicialmente contendría la siguiente información:
Esta estrategia se denomina ruteo dinámico o adaptativo y tiene la ventaja de que, al ser automático, permite eliminar las tareas administrativas relacionadas con el mantenimiento de las tablas de ruteo.
En ambientes Unix se dispone de dos programas que implementan este tipo de protocolos de ruteo: routed y gated.
Rutas por defecto
El uso de ruteo dinámico elimina la necesidad de modificar las tablas de ruteo cuando la red cambia. Sin embargo, no resuelve el problema de las abultadas tablas de ruteo resultantes de conectar una red a muchas otras.
Consideremos la tabla de ruteo que construiría una máquina como Altair:
Para eliminar este problema, es que puede instalarse en la tabla de ruteo una ruta por defecto (conocida también como default gateway). IP utiliza la ruta por defecto (que se indica con el número 0.0.0.0) cada vez que no se encuentra en la tabla de ruteo una ruta hacia una red específica. Aplicando éste criterio, la tabla de Altair se reduciría a lo siguiente:
Configurando los nodos
Caso 1: Redes sin segmentación interna
En este caso, se tiene una red pequeña, en la que todas las computadoras están ubicadas sobre el mismo segmento físico y no hay ninguna conexión a otras redes TCP/IP:
Puede utilizarse el comando route -n para examinar el contenido de la tabla de ruteo (-n indica a route que utilice formato numérico):
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.0 0.0.0.0 255.0.0.0 U 0 1 298 lo
205.12.9.0 0.0.0.0 255.255.255.0 U 0 40 1252 eth0
En el listado anterior, la primera columna indica dirección de red (que debe interpretarse de acuerdo a la mascara de la tercera columna) y la segunda columna indica el gateway a utilizar (0.0.0.0 se utiliza para indicar que hay conexión directa a la red en cuestión. Route también muestra información adicional sobre cada ruta:
Metric: Valor utilizado para cuantificar la ruta. IP utiliza este valor para seleccionar la mejor de dos o más rutas alternativas a la misma red.
Ref: Cantidad de veces que ésta ruta fue utilizada para establecer una conexión.
Use: Cantidad de paquetes trasmitidos a través de esa ruta.
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.0 0.0.0.0 255.0.0.0 U 0 1 298 lo
205.12.9.0 0.0.0.0 255.255.255.0 U 0 40 1252 eth0
0.0.0.0 205.12.9.254 0.0.0.0 UG 0 0 0 eth0
Obsérvese que Orión interconecta nuestra red con el exterior, por lo que tiene una dirección en la red local (170.25.9.254) y otra en la red del proveedor de acceso a la otra red (en este caso, la Internet). A fin de lograr la conectividad, deberá instalarse en Orión una ruta por defecto hacia el exterior, utilizando como gateway una dirección que el proveedor especifique, por ejemplo:
Caso 2: Redes segmentadas
En este caso, la red está compuesta por varios segmentos unidos entre sí por gateways. Una primera opción sería ejecutar un demonio de ruteo dinámico en todas las computadoras, y dejar que las tablas se actualicen automáticamente. Sin embargo si tal programa no estuviera disponible (o por alguna razón se decide no emplearlo) bastaría con instalar en las computadoras de cada segmento una ruta estática por defecto hacia el gateway Orión, tal como se muestra en la siguiente figura:
Sería diferente si la red tuviera más subredes:
En éste caso, sería necesario informar a Orión acerca de la existencia de la red 170.25.4.0, y a Andrómeda acerca de las redes 170.25.1.0 y 170.25.2.0. Una vez mas, puede utilizarse el comando route para instalar las rutas, utilizando la siguiente sintaxis:
# route add -net 170.25.2.0 netmask 255.255.255.0 gw 170.25.3.254
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
127.0.0.0 0.0.0.0 255.0.0.0 U 0 1 298 lo
170.25.3.0 0.0.0.0 255.255.255.0 U 0 105 11252 eth0
170.25.4.0 0.0.0.0 255.255.255.0 U 0 55 1976 eth1
170.25.1.0 170.25.3.254 255.255.255.0 UG 0 20 841 eth0
170.25.2.0 170.25.3.254 255.255.255.0 UG 0 33 976 eth0
Finalmente, si la red tuviera conexión a redes externas, sería necesario instalar en los gateways una ruta por defecto que conduzca hacia el gateway al exterior:
En Orión:
En todos los ejemplos anteriores se utilizó el comando route para instalar rutas manualmente en la tabla de ruteo. Sin embargo, al igual que ocurre con ifconfig, usualmente el administrador no instala las rutas introduciendo comandos manualmente (o modificando scripts de inicialización del sistema), sino que se limita a modificar archivos de configuración o utilizar alguna herramienta gráfica.
En el caso de Red Hat Linux, la utilidad netcfg que se mencionó con anterioridad puede utilizarse para configurar la ruta por defecto e instalar rutas estáticas. También pueden realizarse estas tareas modificando manualmente archivos de configuración network y static-routes respectivamente, ubicados ambos bajo /etc/sysconfig.
No hay comentarios:
Publicar un comentario