por elpamplinadecai@gmail.com
La tarea de encontrar el camino para llevar un datagrama a su destino se llama rutado (routing).
IP supone que cada sistema está unido a una determinada red local. Se da por sentado que puede enviar datagramas a máquinas de su misma red de forma natural. A esto le podemos llamar rutado interno o entrega directa, porque está completamente contenido en los mecanismos de la red física. Sin embargo, cuando es necesario enviar un datagrama a una máquina de otra red diferente, entran en acción las pasarelas (gateways), en lo que podemos llamar rutado IP o entrega indirecta. El rutado en la red de redes (o rutado IP) es análogo al rutado en la red local, porque busca un camino por el que enviar los datos; sin embargo se diferencia en que debe atravesar varias redes físicas heterogéneas.
Para saber cuándo debe usar la entrega directa y cuándo hacer uso de una pasarela, el nodo emisor debe comparar su dirección con la del destinatario, si la parte denominada netid (identificador de red) coincide, es que están en la misma red y, por lo tanto, se debe usar la entrega directa. Esta operación es muy eficiente, porque requiere muy pocas instrucciones de máquina.
Una pasarela es un sistema que conecta una red con una o más redes diferentes. Pueden ser ordenadores que se ocupen de otras cosas, aparte de este trabajo. Básicamente puede serlo cualquier máquina que esté conectada a dos o más interfaces de red. Esto es posible porque IP está pensado para que cada interfaz tenga su propia dirección. P.e., tenemos una máquina que está conectada a las redes 128.6.4 y 128.6.3; esto significa que puede ser capaz de recibir un datagrama de una de ellas y reenviarlo a la otra. Esto es posible porque posee dos direcciones; una para cada red. P.e., en el caso anterior, el gateway tiene la dirección 128.6.4.1 para una red, y la 128.6.3.21 para la otra. En cada caso, la máquina que le envía el datagrama lo hará con la dirección que le corresponda en su red.
Si bien cualquier sistema de uso general puede hacer de pasarela, los grandes centros de comunicaciones, con mucho flujo de información, logran mayor eficiencia con sistemas dedicados. Así pues, podemos diferenciar entre pasarelas dedicadas y de uso general.
Las dos preguntas fundamentales en el rutado IP son: ¿Cómo sabe un nodo qué pasarela usar para llegar a un destino determinado? y ¿cómo sabe una pasarela a dónde enviar un datagrama?
En una red de redes TCP/IP, los nodos finales también intervienen en el rutado. Concretamente, cuando un nodo genera un datagrama, decide en primera instancia a qué pasarela va a dirigirlo. Cada pasarela puede proporcionarle un mejor camino hacia determinados destinos.
Cada sistema tiene una tabla de direcciones de redes, cada una asociada al gateway mejor situado para enviar algo a dicha dirección. La tabla contiene básicamente pares de direcciones (R, G), donde G es la dirección del siguiente gateway en el camino hacia la red R. El sistema usará dicho gateway en cada envío que tenga que hacer a esa red.
En el ejemplo de la figura, una máquina de la red 128.6.3 tendrá como mejor pasarela al 128.6.3.12, para cualquier comunicación fuera de la red local. Por otra parte, cualquier sistema de la red 128.6.4, usará el 128.6.4.1 como primer paso. Luego, el datagrama será reenviado a través del mencionado 128.6.3.12.
Este mecanismo de rutado se llama rutado con salto al siguiente porque cada pasarela sólo especifica un paso en el camino hacia el nodo destino; no tiene que saber el camino completo. Es necesario, además, que el gateway al que apunta cada paso siguiente pueda ser alcanzado a través de una sola red física.
La tabla de acceso suele también contener información que servirá a los algoritmos de rutado para medir lo "lejana" que está la red de destino; esto se llama métrica (metric). En muchas ocasiones, la métrica corresponde simplemente en contar el número de pasarelas que habrá de atravesar el mensaje.
La tabla (o tablas) de rutas es el corazón del sistema de rutado; de hecho, los diferentes algoritmos no son más que formas más o menos sofisticadas de configurar y mantener dichas tablas.
Las entradas de la tabla de rutas pueden tener diferentes características. Se pueden diferenciar:
Si un sistema tuviese una tabla de accesos con entradas para los cientos de redes que hay en Internet, ésta se haría demasiado grande. Además, es inútil tener una tabla así cuando muchas redes sólo acceden al "mundo exterior" por una o dos pasarelas.
La solución es tener rutas por defecto de las que hacer uso cuando no se posea ninguna referencia en la tabla para una dirección dada.
Cuando hay varias pasarelas en una red, éstas deben de tener alguna manera de avisar a un nodo de que, para una determinada dirección, no es la mejor opción. Esto se hace mediante el protocolo ICMP.
El procedimiento es el siguiente:
Así pues, la mayoría de los sistemas empiezan a trabajar con pasarelas por defecto, para luego ir dejando que sean las propias pasarelas los que les vayan diciendo las mejores rutas.
Los comandos para mantener la tabla de rutas se desarrollaron inicialmente en Unix. En otros sistemas, los comandos son similares. Entre ellos podemos destacar los siguientes:
route add 128.6.2.0 128.6.4.1 1
Este comando añade una entrada en la tabla para que las comunicaciones con la red 128.6.2 se dirijan a la pasarela 128.6.4.1, con métrica 1. La primera dirección del par se puede cambiar por la palabra default, para crear una entrada por defecto.
ifconfig ie0 128.6.4.4 netmask 255.255.255.0
Esto añade una entrada que especifica que la dirección propia 128.6.4.4 corresponde a la interfaz de red ie0, con la máscara 255.255.255.0. Este comando se incluye en el fichero de arranque del nodo; si la máquina tiene varias interfaces se añade una orden por cada uno.
netstat -n -r
Esto presenta por pantalla el estado actual de la tabla de rutas, con diferentes estadísticas, etc.Básicamente, netstat indica para cada nodo o red de destino, el gateway a usar, la interfaz de red (si hay varios) y una serie de banderas (flags) que indican diferentes aspectos de rutado. Los más importantes son:
El mecanismo que utiliza IP para direccionar un datagrama se puede resumir en el siguiente diagrama:
Diagrama de flujo básico para IP
Durante su viaje desde el nodo origen al destino final, los datagramas no se ven alterados, a excepción del tiempo de vida y el checksum, que se recalculan. Esto implica que, aunque un datagrama atraviese muchas pasarelas, las direcciones de origen y destino en la cabecera del mismo siempre reflejan las del origen y destino finales.
Cuando una pasarela se dispone a reenviar un datagrama al salto siguiente, la dirección IP de dicho salto no es guardada en ningún lugar del datagrama, sino que simplemente es puesta en manos de la interfaz de red, el cual se encargará de resolver la dirección MAC correspondiente, empaquetar el datagrama en una trama física y transmitirlo. Luego, tanto la dirección IP como la física son desechadas.
Este comportamiento resulta paradójico; se puede pensar que si el rutado manejase directamente la dirección física, resultaría mucho más eficiente. Si en vez de un sólo datagrama, el nodo origen ha emitido una secuencia larga de ellos hacia el mismo destino, como suele ocurrir, resulta especialmente costoso resolver una y otra vez la misma dirección MAC. Las razones para que IP trabaje así son varias:
Cuando un nodo que no sea una pasarela, por error en el rutado, recibe un datagrama no destinado a él, no debe intentar reenviarlo a su correcto destinatario. En vez de ello, el datagrama debe ser descartado. Las razones para establecer esta norma son varias:
En general, los datos de rutado necesarios para configurar un nodo son:
Hay máquinas que no tienen la capacidad para guardar sus propios datos de configuración. P.e., este es el caso de máquinas sin dispositivos de almacenamiento permanente (sin discos fijos). En estos casos, se necesitará recabar esa información de la red, en el momento de arrancar el nodo. Este enviará un mensaje de difusión parecido a "Tengo la dirección Ethernet 12:123:11:30:23:255, ¿quién soy?". Los sistemas que están preparados para responder a estas preguntas poseerán una tabla con la dirección IP que corresponde a cada dirección Ethernet. Igualmente son posibles las preguntas del tipo "¿Cuál es mi máscara de subred?", u otras parecidas.
Los ficheros de arranque realizarán generalmente los siguientes trabajos:
Hay cuatro características a tener en cuenta para la elección de los equipos de rutado: capacidad de aislamiento, rendimiento, eficiencia en el rutado y capacidad de monitorización.
Sólo los bridges y los gateways tienen esta característica. Los repeaters no son capaces de identificar qué paquetes deben pasar y cuáles no. Los gateways realizan un aislamiento completo, mientras que los bridges dejan pasar los broadcasts.
Así pues, cuando la cantidad de nodos en una red sobrepase la capacidad de tráfico de ésta, se puede solucionar simplemente segmentándola por medio de bridges y/o gateways. Esta segmentación debe hacerse de manera que los nodos que mantengan un tráfico alto entre ellos estén recluidos en el mismo segmento. El ejemplo clásico es un servidor con sus clientes.
Existen otros problemas que también pueden evitarse con técnicas de aislamiento. Son aquellos que se deriven de un mal funcionamiento del hardware o el software de la red. Fallos eléctricos, distorsiones de señal, fallos en los equipos físicos (colisiones, pédidas de portadora, señales eléctricas incorrectas...), software obsoleto o erróneo (broadcasts indiscriminados,...). Dependiendo del problema, podrá ser resuelto por determinados tipos de switches.
- Ancho de banda: Normalmente, un repeater abarca el mismo ancho de banda de la red, mientras que bridges y gateways, por las características de su trabajo, no suelen necesitar todo el ancho de banda para realizar su misión.
- Velocidad de rastreo (scanning rate): Es el número de paquetes por segundo que un switch es capaz de procesar. Como los bridges necesitan leer todos los paquetes para decidir cuáles pasar, es ésta una medida fundamental para ellos.
- Velocidad de transferencia (throughput): La velocidad a la que retransmite los paquetes que pasan a través del switch. Este factor afecta tanto a bridges como a gateways.Debido al aumento contínuo en las prestaciones de los switches, por la mejora en la tecnología, estos equipos son ya capaces de retransmitir todo el ancho de banda de la red, lo que hace que los factores de velocidad de rastreo y transferencia sean cada vez menos relevantes.
En el caso de los bridges, la eficiencia se basa en dos decisiones:
Para los gateways, la eficiencia en el rutado depende de la capacidad que tengan para mantener un modelo lo más completo posible de la topología de la red. Para ello, usan unos protocolos especiales, mediante los cuales se mantienen informados del estado de la red en cada momento. Existen básicamente dos:
RIP (Routing Information Protocol): Es un protocolo diseñado para redes de pequeño y mediano tamaño, donde las velocidades de las diferentes líneas no difieren demasiado. Tiene una serie de limitaciones:
No se puede usar en redes donde los paquetes puedan atravesar más de 15 pasarelas.
No puede repartir el tráfico en conexiones en paralelo (dos o mas líneas con el mismo inicio y fin).
No se adapta a los cambios en la carga de la red.
No maneja bien las rutas alternativas cuando hay demasiada diferencia de velocidades entre ellas.
No es estable en las redes dónde hay contínuos cambios de líneas o de pasarelas.
La principal ventaja que tiene este protocolo es ser el único que es totalmente estándar. Así pues, es fundamental cuando se usan pasarelas de diferentes fabricantes.
EGP (External Gateway Protocol): Es un protocolo especialmente diseñado para redes dispersas unidas por medio una línea central. Permite intercambiar información sobre accesibilidad con la línea central.
Se han desarrollado también protocolos específicos para monitorización:
SGMP: Permite recoger información y hacer ajustes en los parámetros de los pasarelas y otros elementos de la red. El correspondiente conjunto de programas interfaz pueden ejecutarse desde cualquier nodo de la red. Está aceptado como un estándar por la mayoría de los fabricantes; existe un limitado conjunto de datos que se espera que proporcione, así como unos mecanismos comunes para la información añadida propia.
SNMP: Es la generación siguiente al SGMP. Prácticamente efectúa la misma misión, pudiendo monitorizar un conjunto de parámetros más completo, llamado MIB (Management Information Base). Esta base estándar de parámetros es el resultado de las aportaciones más o menos desorganizadas de los diferentes fabricantes a su antecesor, una vez pasadas por los comités de estandarización.
CMIP: Es el protocolo oficialmente propuesto por el ISO dentro de su especificación CMIS de monitorización.
El protocolo de rutado (routing protocol) es la técnica que las pasarelas siguen para acceder a otras, y mantenerse al día sobre cuáles son los mejores caminos para acceder a cada red. Esto es especialmente importante porque, como hemos visto en el apartado anterior, los nodos se despreocupan, y dejan a las pasarelas todo el trabajo de encontrar caminos.
También existe la posibilidad de montar en un nodo un software especial que "espíe" los mensajes que las pasarelas se envían unos a otros, optimizando así al máximo la tabla de rutas. Es una manera de tener la "fotografía" perfecta de la red. Sin embargo, este software es difícil de configurar y de mantener compatible con las complejas configuraciones de las pasarelas.
En general, existen tres estrategias a seguir a la hora de optimizar el rutado:
Ya sabemos que un nodo en la red de redes puede enviar datagramas con éxito aún contando sólo con información de rutado parcial, pues puede basarse en una pasarela por defecto.
Una pasarela, a su vez, también puede basarse en información parcial para encaminar los datagramas que le van llegando, pues se ve completada con la información que tengan otras pasarelas en la ruta hacia el destino.
¿Hasta qué punto puede una pasarela confiar en los otros, usando las rutas por defecto? ¿Cómo puede asegurarse de que el datagrama llegará a su destino, y que lo hará por la ruta más corta?La respuesta a estas preguntas dependerá de la topología de la red y del contenido de las tablas de rutas. La información en estas tablas puede llegar a ser consistente y completa, sin necesidad de eliminar las rutas por defecto; no es necesario ni óptimo que haya una ruta en la tabla para cada destino.
Una consideración importante es que ha de minimizarse el intercambio de información entre las pasarelas. Ha de buscarse, por tanto, una solución que permita tener pasarelas locales autónomas que añadan interconexiones de redes y rutas nuevas sin cambiar las pasarelas distantes.
Todo esto nos lleva a una arquitectura en la que haya pequeños conjuntos centrales de pasarelas con la información completa, llamadas pasarelas núcleo, junto con muchas pasarelas no-núcleo que cuenten con información parcial para conectar redes locales con la red de redes.
Así es como se organizaba Internet en sus comienzos, con un conjunto reducido de pasarelas núcleo de la red ARPANET controlados por el INOC (Internet Network Operations Center). Dado que una autoridad central controlaba estas pasarelas, resultaban altamente confiables.
Estas pasarelas, al intercambiar información de rutado, no necesitaban rutas por omisión, eliminando la ineficiencia de éstas. Si la dirección de destino de un datagrama no aparecía en la tabla de rutas, éste era descartado y retornado un mensaje ICMP de destino inalcanzable.
Esta arquitectura de la Internet original se muestra esquemáticamente en la siguiente figura:
Aún cuando en los inicios de Internet esta estructura era la más consistente, es fácil adivinar su debilidad a medida que la red se fuese haciendo cada vez más y más grande, pues las pasarelas núcleo se verían desbordados para administrar tal cantidad de información de rutado para mantener consistente el sistema central. Además, la topología de la red se volvería extraordinariamente compleja.
Ha sido necesario, por lo tanto, buscar un concepto diferente de estructura para la gran red de redes. El punto de partida para su desarrollo fue la puesta en marcha de la red NSFNET, externa a a ARPANET, con lo que ésta dejaba de ser el centro de Internet.
En un principio, se mantuvo la misma arquitectura de núcleo separada en cada una de las dos redes, estableciendo un sólo gateway de interconexión entre ellas, localizado en Pittsburg.
El cambio conceptual más importante se produjo al ponerse en marcha varias conexiones, convirtiéndose en lo que se ha dado en llamar columnas vertebrales pares o iguales, como se muestra en la figura:
En este tipo de estructura, las dificultades para el correcto rutado son muchas, derivadas fundamentalmente de dos factores:
A continuación se estudian con detalle los algoritmos y protocolos que se han ido desarrollando para evitar los problemas planteados por el crecimiento de Internet. Además, se introduce el concepto de interconexión de sistemas autónomos.
El algoritmo de vector-distancia, también conocido como Ford Fulkerson o Bellman-Ford, define una forma sencilla de mantener las pasarelas actualizadas.
Cuando una pasarela arranca, inicia su tabla de rutas para que contenga una entrada por cada red conectada directamente, indicando para cada una de ellas la distancia hacia ella, por lo general medida en saltos (que será cero pues están conectadas directamente).
Periodicamente, la pasarela J envía una copia de su tabla a cualquier otro que pueda alcanzar de manera directa (por ejemplo, K). Éste utilizará esta información para actualizar su propia tabla, en tres casos:
En este tipo de diseño, todos las pasarelas han de participar en el intercambio de información para que las rutas sean consistentes.
El nombre vector-distancia proviene de que la información intercambiada es una lista de pares de destinos (o vectores) y distancias hacia ellos.
El protocolo GGP (Gateway-to-Gateway Protocol) se utilizó originalmente para el intercambio de rutas en el sistema central de pasarelas núcleo del INOC, y hace uso del algoritmo de vector-distancia.
Se transporta en datagramas IP igual que los protocolos UDP o TCP, con un encabezado de formato fijo que indica el formato del resto del mensaje.
El contenido consiste en un conjunto de pares de direcciones de red IP (netid) y distancias medidas en saltos (hops). Cero saltos indica que la red en cuestión está accesible directamente; es decir, el número representa la cantidad de pasarelas que un datagrama se encontrará en su camino hacia dicha red.
El punto débil de este planteamiento es que no siempre un número de saltos menor ha de producir menor retardo, pues las redes son heterogéneas, y tienen diferentes velocidades. Muchas pasarelas suman artificialmente varios saltos para trayectorias que cruzan redes lentas.
Para mantener los mensajes lo más cortos posible, se agrupan las entradas por distancias, enviandose para cada grupo un valor de distancia (8 bits), el número de redes que están a esa distancia (8 bits), seguidos por la lista de los netid de todas ellas.
En el mensaje puede también el emisor indicarle al receptor, mediante un campo de la cabecera, que necesita a su vez una actualización de él.
Este tipo de mensaje GGP se llama UPDATE (actualización). Otros tipos son los acuses de recibo positivos y negativos, las solicitudes de eco y sus respuestas. Un campo de 8 bits al principio de la cabecera identifica el tipo de mensaje.
La principal desventaja de los algoritmos de vector-distancia es que no se extienden con la suficiente rapidez ante los cambios en la red. Además, requiere del intercambio de mensajes largos, cuyo tamaño es proporcional al número de redes. Esto, unido a la necesaria participación de todas las pasarelas, hace que la cantidad de información a intercambiar sea enorme.
La alternativa más aceptada es el algoritmo de enlace-estado, también conocido como SPF (Shortest Path First, primero el camino más corto), el cual hace que cada pasarela tenga una idea de la topología completa en forma de un grafo de nodos y arcos.
Cada pasarela prueba periódicamente el estado de sus vecinos en el grafo, o sea, aquellos a los que está conectado directamente, difundiendo esta información hacia otras pasarelas.
Para localizar los vecinos activos (up) o inactivos (down), se usa la regla k-out-of-n (k-de-n), que significa que el enlace se considera activo si un procentaje significativo de solicitudes de eco tiene réplica.
Periódicamente, cada pasarela difunde el estado en que está cada uno de sus enlaces. El software del protocolo se encarga de hacer llegar a cada pasarela participante una copia sin modificación alguna de dicho mensaje. No hay en él información de rutado, sólo indica la disponibilidad de líneas y, en todo caso, la métrica hacia las pasarelas directamente conectadas a ella.
Cuando un mensaje de este tipo llega a una pasarela, éste actualiza su grafo y recomputa las rutas usando en conocido algoritmo del camino más corto de Dijkstra.
Como todos los participantes usan idéntica información de base para recomputar las rutas de manera local, la convergencia entre ellas está asegurada y los problemas de depuración son fáciles de resolver. Cada pasarela mantiene una base de datos completa, la misma para todas.
La aplicación del algoritmo en cada pasarela lleva a la computación de un árbol de caminos óptimos distinto en cada una, tomándose a sí misma como raíz del árbol.
Entre los años 1989 y 1994 el IETF ha desarrollado un protocolo basado en este algoritmo, denominado OSPF, que se verá más adelante junto otros protocolos de pasarelas interiores.
El tratamiento de un sistema núcleo como enrutador central, al que se accede a través de pasarelas exteriores introduce un salto extra en la mayor parte del tráfico, pues el gateway externo no tiene conocimiento de la estructura interna del núcleo, lo que hace que cada datagrama deba ser re-encaminado una vez ha entrado en él.
Se necesita un mecanismo que permita a las pasarelas que no pertenecen al núcleo aprender rutas internas a él, de manera que puedan seleccionar la óptima en cada caso.
Mirando desde el punto de vista inverso, también es necesario que el núcleo conozca la estructura de las redes exteriores a él, que pueden tener una complejidad arbitraria. Por ejemplo, si la red local B accede al núcleo a través de la red A, se dice que B está oculta detrás de A. Se necesita que la pasarela de la red A informe al núcleo de la existencia de la red B. Si no es así, el núcleo no podrá encaminar datagramas dirigidos a B.
Idealmente, un sólo mecanismo debería ser suficiente para satisfacer ambas necesidades: la del núcleo de conocer información sobre redes ocultas a él y la de las pasarelas no-núcleo para encaminar los datagramas correctamente hacia su interior.
Si vemos la estructura de redes que son propiedad de una organización simplemente desde el punto de vista de la mecánica de rutado, nos encontramos con el problema de decicir cuál de las pasarelas será responsable de informar al núcleo sobre ésta.
En principio puede parecer que la pasarela directamente conectado al núcleo debería informar a éste sobre la existencia de redes ocultas en la estructura, pero esto le daría una responsabilidad administrativa sobre otras redes a las que no pertenece. Lo mismo ocurriría si fuese la pasarela de la red oculta el que tuviese que informar, pues éste depende del anterior para encaminar datagramas hasta el núcleo y, por lo tanto, no puede garantizar la accesibilidad por sí mismo.
Esto nos lleva a que la estructura local de redes de una organización debe entenderse como una organización única bajo una única autoridad administrativa. Esta autoridad es la responsable de garantizar que las rutas dentro de su organización se mantienen consistentes. Además, designará a una pasarela para que la represente ante el mundo exterior, e informe de la accesibilidad de las otras redes de la organización.
Se conoce como sistema autónomo a un grupo de redes y pasarelas controlados por una sola autoridad administrativa, a efectos de rutado. Las pasarelas dentro del sistema son libres de seleccionar sus propios mecanismos de exploración, propagación y validación de rutas.
En la arquitectura de núcleo usada en Internet, una pasarela en cada sistema autónomo tendrá la responsabilidad de anunciar rutas interactuando con una de las pasarelas del núcleo. También es posible, aunque no habitual, que haya varias pasarelas representativas, donde cada una informa sobre un subconjunto de redes.
Las fronteras entre sistemas autónomos no pueden ser vagas. Para hacer posible que los algortimos de rutado automatizados distingan entre sistemas diferentes, a cada uno se la asigna un número de sistema autónomo, otorgado por la misma autoridad que asigna las direcciones IP. Este número es usado como identificación cuando las pasarelas intercambian información.
A dos pasarelas pertenecientes a sistemas diferentes, que intercambian información de rutado, se les llama vecinos o pasarelas exteriores. Si pertenecen al mismo sistema, se denominan vecinos interiores.
El protocolo EGP (Exterior Gateway Protocol, protocolo de pasarela exterior) es el que usan las pasarelas exteriores para difundir información de accesibilidad hacia otros sistemas autónomos.
Este protocolo es el que ha de usarse para informar al núcleo de Internet de la accesibilidad de las redes de cada sistema.
EGP tiene tres características principales:
Otros campos fijos de la cabecera son la suma de verificación, computada igual que en protocolo IP, el status de la operación, que reporta errores y otros eventos, el número del sistema autónomo de la pasarela originaria del mensaje, y un número de secuencia para identificar las réplicas.
Las adquisiciones de vecino (neighbor adquisitions) contienen campos con mediciones de tiempo para probar si el vecino está activo y para indicar la frecuencia a la que se van a pedir actualizaciones.
Los mensajes (hello) y sondeos de accesibilidad (polling) son las dos formas que proporciona EGP para mantenerse informado de la actividad del vecino. Los primeros ocupan muy pocos cálculos y, por tanto, se pueden hace más a menudo, pues no son más que solicitudes de eco para determinar si el vecino sigue accesible y si está activo o no.
Los sondeos (poll) son la forma en que un vecino le pide al otro que le informe qué redes se pueden alcanzar a partir de la denominada red fuente, que es la red que ambos comparten (por la que se comunican). Se incluye en la petición de sondeo la identificación IP de dicha red, pues el vecino podría no saber desde qué interfaz de red llega la solicitud.
El hecho de que las distancias reportadas se midan desde la perspectiva de una red común, no desde la visión del informador, hace que todas ellas sean correctas para ambos miembros del par.
La actualización de rutado incluye una lista de pasarelas de la red fuente. Asociada a cada una de ellas hay una lista de las redes accesibles a través de esa pasarela, con las correspondientes mediciones de saltos.
El contenido del mensaje de actualización está estructurado de forma anidada:
- Cabecera EGP
- Identificación de la red fuente a la que se refiere el mensaje
- Número de pasarelas reportadas
- Un bloque de datos para cada pasarela, consistente en:
- Dirección hostid de la pasarela
- Número de distancias en el bloque
- Un bloque de datos para cada distancia, consistente en:
- Distancia
- Número de redes a esa distancia
- Identificación IP de cada red
El EGP restringe a las pasarelas (que no sean de núcleo) para que anuncien sólo a aquellas redes completamente accesibles desde dentro de su sistema autónomo. A esto se le llama restricción de terceros, y sirve para que cada sistema pueda seleccionar exactamente cómo anunciar su accesibilidad. Esta restricción está relacionada también con la que se explica a continuación.
EGP es que no interpreta ninguna de las métricas que aparecen en los mensajes de actualización de rutado. Los valores de distancias sólo son comparables entre los que sean del mismo sistema autónomo, es decir, sólo pueden usarse para calcular la proximidad de dos rutas si éstas se encuentran en el mismo sistema.
Los valores que se refieran a pasarelas de diferentes sistemas sólo pueden usarse, por tanto, para saber si las redes en cuestión están accesibles o no. El protocolo especifica que un valor de 255 en el campo de distancia hacia una red significa que ésta es inaccesible.
La consecuencia directa de esta restricción es que EGP no puede usarse como algoritmo de selección de rutas y, por tanto, cada sistema autónomo debe ser cuidadoso en anunciar sólo una ruta para cada destino; concretamente, aquella hacia la que le interese dirigir el tráfico que va hacia dicho destino. La responsabilidad de seleccionar rutas de costo mínimo para anunciarlas recae sobre las pasarelas exteriores que corren EGP.
Esto nos lleva a ver la topología de la red de redes como un árbol donde el sistema núcleo es la raíz y no hay ciclos cerrados en sus ramas. EGP no es óptimo en arquitecturas con columnas vertebrales pares.
En arquitecturas de redes no triviales, donde hay varias rutas físicas para cada destino, es necesario que haya un sistema automatizado confiable que pueda responder rápidamente a los cambios en el estado de las líneas, adaptando las rutas.
Las pasarelas interiores en un sistema autónomo, normalmente intercambian información de accesibilidad o de rutado. Una vez está ensamblada esa información, entonces el gateway exterior podrá anunciarla al exterior por medio del EGP.
Las pasarelas interiores manejan información parcial para rutar los datagramas, es decir, tienen conocimiento sólo de los destinos dentro de su sistema autónomo, enviando todo el tráfico restante hacia una pasarela exterior que hace de puente con una columna vertebral nacional y, por último, con el núcleo de Internet.
El uso de rutas por defecto puede hace que los errores de rutado no sean fáciles de detectar, pero tiene la gran ventaja de minimizar el tamaño de los mensajes de rutado que las pasarelas han de intercambiar.
Las pasarelas de núcleo, sin embargo, no trabajan con rutas por defecto, manteniendo tablas con todos los destinos posibles.
Actualmente, el modelo de rutado dentro de la mayoría de sistemas autónomos se está moviendo hacia la aplicación del algoritmo SPF como mejor solución.Aquí se explica un modelo muy difundido.
Los elementos de este modelo son redes y pasarelas, que son los nodos del grafo, y enlaces entre ellas, indicando cada uno su coste.
Un área es un conjunto de redes del sistema autónomo, agrupadas con la intención de ocultar sus detalles al resto de él, consiguiendose independencia y una importante reducción del tamaño de los mensajes de rutado.
El rutado dentro de un área se determina únicamente con su propia información, tratándose de una generalización del concepto de subred.
Para permitir una configuración flexible de las subredes en cada área y en el sistema en general, cada ruta distribuida dentro de él ha de tener asociada su correspondiente máscara, la cual identifica los bits de la dirección que han de usarse para el rutado. Aunque en el modelo se usan direcciones de red, también se pueden difundir rutas a nodos concretos, usando una máscara 255.255.255.255.
En cuanto a la información aprendida externamente mediante EGP, se establece que ha de pasar transparentemente a todas las pasarelas de todas las áreas, aunque ha de tenerse aparte, para no confundirla con la información interna. Cada destino difundido de esta manera estará etiquetado identificando la pasarela del borde del sistema que lo ha anunciado.
Cada anuncio de estado de enlaces (link state advertisement) que las pasarelas difunden describe el estado local de la pasarela o red en cuestión. Incluye el estado de cada uno de los enlaces adyacentes a ella. El conjunto de todos estos anuncios constituye la base de datos topológica completa.
Cuando una red de acceso múltiple tiene varias pasarelas, una de ellas ha de ser la encargada de difundir la información de estado de la red, convirtiéndose en la pasarela designada (designated gateway). Esto se hace así para reducir el número de adyacencias que producen este tipo de redes, tomando a la red completa como un nodo individual del grafo.
La base de datos topológica del sistema es un grafo dirigido. Los nodos de ese grafo son pasarelas y redes. Un arco conecta dos pasarelas (cuando están unidas por una línea punto a punto) o una pasarela con una red (indicando que la pasarela tiene un interfaz en esa red).
La base de datos se suele computar como una tabla donde cada fila y columna representa un nodo del grafo (red, pasarela, nodo individual o interfaz punto a punto con dirección).
Un arco desde el nodo A al B se computa indicando su métrica en la intersección de la columna A y la fila B.
El mensaje de estado individual difundido por una pasarela o red será el subconjunto de la tabla referida a ella (en su columna, aquellas celdas que estén rellenas).
La base de datos de un área del sistema incluirá:
Según sus características físicas, se pueden distinguir tres tipos de redes:
a) Redes punto a punto: Cada red de este tipo une un simple par de pasarelas (p.e. una línea serie). Las interfaces a estas redes pueden o no tener asignadas direcciones IP. Cuando las tienen (numbered networks), cada interfaz ha de ser tratado como un destino individual en las tablas de todas las pasarelas.
b) Redes de difusión: Redes con capacidad de dirigir un mensaje a más de dos de sus pasarelas al mismo tiempo. En estas redes, la vecindad entre pasarelas puede ser descubierta automáticamente por un protocolo de saludo (hello protocol). Un ejemplo de este tipo de red es Ethernet.
c) Redes sin difusión: Aquellas redes sin capacidad de broadcasting que tengan más de dos pasarelas necesitarán alguna configuración adicional en éstas para poder descubrir su vecindad. P.e. las redes públicas X.25.
La forma en que se representan en el grafo las redes depende del número de pasarelas que tengan. Una red de acceso múltiple con varias pasarelas se representa como un nodo al que están unidas bidireccionalmente cada una de ellas. Una red con una sola pasarela se representa como una conexión final o stub.
El árbol de caminos óptimos calculado por una pasarela tendrá como raíz a ella misma. Aunque en el árbol se computan los caminos completos hacia todos los destinos posibles, sólo los saltos inmediatos se usan en el proceso de rutado de datagramas y , por tanto, en la tabla de rutas resultante.
Las rutas hacia destinos externos se enlazarán en el árbol a aquellas pasarelas del borde del sistema que las anunciaron. La métrica externa utilizada puede ser de dos tipos:
1) Métrica equivalente a la interna: Se usará de la misma manera que la interna al calcular las rutas.
Este tipo de rutas se computan sumando la distancia desde la raíz del árbol hasta la pasarela que la ha anunciado más el coste externo a partir de ella. En la tabla de rutas se establecerá como salto siguiente el mismo que conduce a dicha pasarela.
2) Métrica no equivalente a la interna: Se asumirá que una ruta externa siempre tiene un coste mayor que cualquier ruta interna.
Para seleccionar estas rutas se usa sólo el coste externo, sin sumar el coste hasta la pasarela que lo ha anunciado, pues se asume que no es sumable. Sólo si dos rutas externas equivalen en coste, se usará el coste interno para romper el empate.
Esto elimina la necesidad de conversiones entre métricas, aunque se pierde algo de información.
Cuando el sistema autónomo se organiza en áreas, aparece el concepto de columna vertebral del sistema, formada por aquellas redes que no pertenecen a ninguna área, sus pasarelas con las áreas y, además, aquellas pasarelas que estén unidas a varias áreas.
La columna vertebral ha de ser contigua. Cuando no haya conexión directa entre sus elementos, se deberán establecer enlaces virtuales entre ellos. El protocolo tratará dos pasarelas unidas por uno de estos enlaces como si lo estuviesen por una red punto a punto sin direcciones (unnumbered).
La misión de la columna vertebral es distribuir la información de rutado y rutar el tráfico entre las áreas, y su funcionamiento es exactamente igual que si se tratase de un área más.
El camino de un datagrama entre dos áreas queda dividido en tres partes: el camino dentro del área de origen hasta la columna vertebral, el camino por la columna hasta el área de destino y, por último, el camino dentro de ésta.
Las pasarelas en los bordes de las áreas tendrán la misión de informar a la columna vertebral de la topología de éstas.
En la comunicación entre pasarelas interiores no hay un estándar ámpliamente aceptado, como es EGP entre las exteriores. En su lugar, cada sistema autónomo utiliza un determinado protocolo que le ofrezca la funcionalidad que busca. En general, a estos protocolos se les llama IGP (Interior Gateway Protocols).
A continuación se estudian tres de estos protocolos de pasarela interior: RIP, HELLO y OSPF.
El protocolo RIP fue originalmente diseñado para su uso en la red local de la Universidad de Berkeley, habiéndose luego popularizado y usado en redes de área ámplia.
La popularidad de RIP no se ha basado en méritos técnicos, sino en su distribución a gran escala con el sistema Unix 4BSD de dicha universidad. Esto hace que también se le conozca por el nombre del daemon que lo implementaba en dicho sistema: routed.
RIP implementa el algoritmo de rutado de vector-distancia, donde unas máquinas corren en modo activo, difundiendo rutas cada 30 segundos, y otras están en modo pasivo, actualizando sus tablas según la información difundida. Se usa el soporte de difusión (broadcasting) de la red física subyacente.
Cada mensaje consiste en pares de direcciones netid de red con sus correspondientes distancias, medidas en saltos (hop count). La conexión directa se identifica con la cuenta de un sólo salto, quedando por tanto la cuenta del número de pasarelas que un datagrama se encontrará en su camino hacia la red indicada.
Para evitar la limitación de la métrica de saltos, muchas implementaciones de RIP permiten a los administradores configurar artificialmente cuentas altas para las rutas por redes lentas.
La actualización de las tablas de las máquinas que escuchan dicha información se realiza mediante el algoritmo de vector-distancia.
Las reglas que se siguen para mejorar el rendimiento y la confiabilidad son:
Sin embargo, cuando una conexión cae, la pasarela afectada marca en su tabla una distancia de 16 (infinito) y cualquiera otra rebotada será adoptada por tener distancia menor, cayendo en un bucle donde cada pasarela reporta un salto más de distancia cada vez. Esta situación sólo se resuelve al converger ambas mediciones al infinito. Es por esto que es conveniente que el valor de infinito no sea muy alto.
Para solucionar el problema de la convergencia al infinito RIP introduce cuatro mecanismos combinados:
Otro inconveniente es que la métrica de saltos tiende a hacer las rutas insensibles a los cambios en la densidad de tráfico.
El formato de los mensajes está pensado para su uso no sólo con protocolos TCP/IP, reservando 14 octetos para cada dirección de red. En el caso de usarse direcciones IP, se usan los octetos 3 al 6, dejándose el resto a cero.
El tipo de direccionamiento a usar se especifica en un campo de familia de red, según los códigos de protocolos del Unix 4BSD (2 es IP). Dentro del mensaje, aparecen pares de direcciones y distancias, por grupos de familias.
Se establece que la dirección 0.0.0.0 es la ruta por defecto usada por la pasarela originaria del mensaje, pudiendo haber varias para la misma pasarela.
Existen diferentes tipos de mensajes, que corresponden fundamentalmente a peticiones de actualización y a las actualizaciones mismas.
El transporte de los mensajes en redes TCP/IP se realiza en datagramas UDP, dependiendo de éste para computar la longitud del mensaje, que no se calcula en la cabecera RIP.
El puerto UDP establecido para peticiones es el 520.
HELLO proporciona un ejemplo de protocolo de pasarela interior que usa una métrica de vector-distancia basada en retardos en lugar de saltos. Originalmente se usó en las pasarelas de la columna vertebral NSFNET, y actualmente está en desuso, aunque por su importancia histórica es interesante conocerlo.
Los mensajes HELLO transportan sellos de hora (timestamp) para computar retardos, incluyendo entre sus funciones una de sincronización de relojes.
En el momento de enviar un mensaje de rutado con estimaciones de retardos, el emisor pone su sello de hora en un campo de la cabecera, que los receptores usarán para hacer sus propias estimaciones.
La información de los mensajes y el algoritmo de actualización es el de vector-distancia, pero empleando retardos en lugar de saltos.
El protocolo OSPF es un intento del IETF de establecer un protocolo de rutado estándar y de dominio público, que sustituya progresivamente a los protocolos propios de cada fabricante.
Se basa en el algoritmo SPF (Shortest Path First), que obtiene un mejor rendimiento y una mejor difusión de las rutas. Tiene además, varias ventajas:
Los mensajes hello se envían periódicamente para probar la accesibilidad de cada vecino. Incluye la dirección de una pasarela designada (con su prioridad) y otra de respaldo (backup designated router). Contiene además la dirección de cada uno de los vecinos de los que se ha recibido recientemente mensajes hello.
Los mensajes de descripción de base de datos sirven para que una pasarela inicie su base de datos donde guardar la topología de red. En este intercambio, una pasarela hace de maestro y la otra de esclavo. El contenido es una secuencia de enlaces, identificando en cada uno su tipo, edad, pasarela que ha informado de él, etc. Según el tipo, la pasarela sabe qué destinos se ubican dentro de la localidad y cuáles son externos.
Debido a que la base de datos puede ser extensa, se puede dividir el mensaje en varios, controlados por números de secuencia.
Para mantener la base de datos al día, una pasarela puede enviar a sus vecinos una solicitud de actualización de enlaces, sobre un conjunto específico de ellos.
Los mensajes de actualización de enlaces son como las descripciones de base de datos, pero reducidos a aquellos enlaces solicitados.
Teniendo en cuenta que en Internet coexisten unas pocas redes "gigantescas" con una mayor cantidad de redes "medianas" y multitud de "mini-redes" (una gran variedad de tamaños), no puede existir una forma general de asignar las direcciones a redes tan dispares. Se diferencia dentro de la dirección IP dos partes llamadas netid (identificador de red) y hostid (identificador de nodo). Según la parte que se asigne a estos campos, se han establecido tres clases de redes:
Clase A: Son las que tienen gran cantidad de nodos (a partir de 216). Se les asigna siete bits (entre el 1 y el 126) para el netid, y 24 para direccionar cada uno de sus nodos. El primer bit queda fuera, y siempre se deja a cero. Existe la posibilidad, por tanto, de que existan 126 redes de este tipo con 16,4 millones de nodos cada una.
Clase B: Son las de tamaño mediano. Tienen el netid de 14 bits y el hostid de 16 bits. Los dos primeros bits no se usan, y son siempre 10. Por tanto, serán direcciones entre 128.1.x.x al 191.254.x.x Esto da un margen de 16.002 redes, con hasta 64.516 nodos cada una.
Clase C: Los tres primeros bits son 110, y luego van el netid de 21 bits y el hostid de 8 bits. Esto forma direcciones en el rango de 192.1.1.x a 223.254.254.x; es decir, pueden existir unos dos millones de redes con 254 nodos cada una. Estas son las redes de tamaño pequeño, que más abundan.
Existe una clase especial (D) para multidifusión, cuyas direcciones empiezan por 1110; y también la clase E (con los bits 11110) se reservó inicialmente para futuros usos.
Así pues, como se puede observar, el formato de las direcciones IP se ha definido de manera que es posible detectar rápidamente el tipo de red a la que pertenece, y se facilita la extracción de los campos netid y hostid. Esta característica es fundamental para lograr un funcionamiento lo más rápido posible de las pasarelas que tienen que encaminar los paquetes.
Este sistema de clases es evidentemente no escalable, y pronto fue patente que no se iba a poder mantener. Por ello en 1993 se desarrolló el Classless Inter-Domain Routing (CIDR), donde las máscaras de subred permiten una mayor granularidad.
Aunque siempre se piense en una red (network) como un conjunto de ordenadores alrededor de un área de no más de varios kilómetros, IP considera una red a cualquier medio de conexión entre ordenadores. Así pues, p.e., una línea punto a punto de larga distancia (de satétite, línea serie, etc.) es considerada como si fuese una red con sólo dos ordenadores (las dos pasarelas de los extremos). Esta red tendrá su propia dirección de dominio (por supuesto de clase C).
Las redes muy grandes suelen subdividirse en subredes (subnets). Usan los octetos que tienen asignados para uso interno para ello, siendo esto irrelevante fuera de la propia red.
Por ejemplo, una red de clase B, que usa los dos primeros octetos para identificarse, puede organizarse de manera que use el tercero para localizar en qué Ethernet está cada nodo, constituyendo hasta 254 subredes de 254 nodos cada una. Sin embargo, para los sistemas fuera de la red, esta subdivisión interna no tiene importancia, no tienen necesidad de estar al tanto de ella.
Dentro de una red, las pasarelas tienen entradas para cada una de sus subredes, mientras que las pasarelas fuera de ella sólo tienen una entrada para la red completa. Se puede decir que una red de clase B puede tratar a sus subredes como si fueran de clase C. Igualmente, una red de clase A puede subdividirse internamente en varias de clase B, que a su vez se organizan en otras de clase C. Cada una de estas capas no se ocupa de las inferiores, repartiendo así el trabajo.
Una vez se ha decidido la subdivisión de la red, se debe establecer la subdivisión de las direcciones, es decir, qué parte de la dirección IP se usará para la red y las subredes, y qué otra parte se reservará para identificar los nodos individuales.
La máscara de subred es un número que se especifica en cada ordenador como parte de la configuración de su software de red, consistiendo en una máscara binaria de 32 bits, donde se rellena con unos la parte usada por los números de red y subred, y con ceros la parte establecida para las direcciones individuales.
Lo usual es usar los tres primeros octetos para los números de red, como se explicó; por tanto, la máscara más común es 255.255.255.0. No siempre se tendrá que hacer así, dependiendo de las características de la red. En una red donde existan multitud de pequeñas ethernets, puede necesitarse usar más direcciones de subredes. P.e., podemos usar el primer bit del último octeto para completar las direcciones de red; en ese caso la máscara pasaría a ser 255.255.255.128.
Como ya se ha dicho, los números 0 y 255 no se usan de manera normal en las direcciones IP.
El 0 se usa para los nodos que no conocen su propia dirección. Sustituyen por ceros las partes de la dirección IP que no conocen. Por ejemplo, el 0.0.0.23 es una máquina que sabe es el nodo 23, pero no sabe de qué red. También se usa el 0 para direccionar de forma generalizada a toda una red, dejando a cero todos los bits del campo hostid. Es decir, se puede decir que los ceros significan esto, en el sentido de "esta red o este nodo".
El 255 es el caso contrario: el nodo no sabe a quién mandar un determinado mensaje. Son mensajes "generales", para todo el que quiera leerlos. Esta técnica se llama difusión (broadcast). Consiste en sustituir uno o varios octetos de la dirección IP por un 255. Por ejemplo, un mensaje con dirección 128.6.4.255 podrá ser leido por cualquier nodo de la subred 128.6.4.x. Un caso típico es cuando una máquina no sabe cuál es su servidor de nombres más cercano. Cuando quiera solicitar una dirección, enviará un mensaje de difusión, para que le conteste el servidor más conveniente.
Por regla general, como lógico mecanismo de seguridad, se limita la difusión al menor número posible de nodos. El mensaje 255.255.255.255 potencialmente podría ser leído por cualquier máquina conectada a Internet; sin embargo, esto no es así. Un mensaje de difusión con semejante dirección sólo tiene valor dentro de su propia red o subred. Esto se llama difusión limitada o de red local. Sin embargo, sí es posible desde una red enviar un paquete de difusión dirigido a todos los nodos de otra red, en lo que se da en llamar difusión dirigida.
Aunque el sistema de direccionamiento a nivel IP prevé el uso de la difusión, no todas las tecnologías de red lo permiten. Así pues, no está garantizada, y siempre depende de la red física subyacente. Además, por los problemas de seguridad que conlleva, la difusión dirigida raramente se permite.
El 127 es otro número reservado que no debe aparecer en el primer octeto de las direcciones IP normales. Se utiliza cuando una máquina se direcciona a sí misma, lo que se llama loopback . Concretamente, la dirección 127.0.0.1 u otra parecida es usada para probar el software de red sobre la misma máquina, sin que los paquetes realmente salgan de ella. Tradicionalmente suele asociarse al nombre "localhost".
Resumen de las reglas especiales de direccionamiento:
Tanto la asignación de direcciones y nombres, como el mantenimiento de las tablas que los relacionen, son tareas que deben llevarse centralizadamente en cada organización.
Cuando una red está organizada correctamente en subredes, suele ser tarea de la propia organización la asignación de direcciones y nombres, e incluso la elección de la máscara de subred. Sin embargo, es conveniente que registre dichas decisiones en el Internet Network Information Center (INTERNIC), que se encarga, como ya se explicó, no solo de asignar direcciones de redes, sino de verificar que no hay duplicados en los nombres y direcciones que se están usando.
INTERNIC sólo se preocupa de asignar las direcciones de red (tipo A, B o C según la cantidad de nodos); es responsabilidad interna de cada red asignar los números de nodo.
Aunque no existe unas reglas fijas, es recomendable seguir las siguientes pautas:
a) Asignar direcciones de subredes a partir del 1 (p.e., 128.6.1, 128.6.2, etc.)
b) Reservar la dirección 1 de cada subred para la pasarela correspondiente (128.6.1.1, 128.6.2.1, etc.)
c) Asignar direcciones de nodos a partir del 2 (128.6.1.2, 128.6.1.3, etc.)
En cuando a la elección de nombres, estos no tienen que seguir una pauta determinada. Pueden contener tanto letras como números u otros signos, siendo conveniente que comiencen con una letra. También es conveniente, para facilitar que el usuario se familiarice con ellos, que no sean muy largos, y que sigan un tema común para cada dependencia o departamento (nombres de artistas, animales, etc.)
Si una red no tiene conexión al exterior, los nombres de nodos pueden ser de una sola palabra. Sin embargo, para conectarse a Internet hace falta añadir el nombre de dominio al de cada nodo (p.e. athos.rutgers.edu). También se pueden habilitar subdominios (p.e. athos.cs.rutgers.edu). La norma es usar el nombre del nodo (una palabra) seguido de un punto y el nombre de dominio (que contendrá varias partes separadas por puntos). La última parte (normalmente de no más de tres letras) identifica la naturaleza de la organización (en EE.UU. y Canadá), o bien el país al que pertenece.
Si bien la elección de direcciones IP resulta crítica y muy difícil de modificar a posteriori, los cambios en los nombres no significan ningún problema; no es necesario tener especial cuidado con ellos.
Es conveniente que el software de aplicación sea capaz de usar nombres abreviados (nicknames), para evitar a los usuarios teclear continuamente los largos nombres de dominio.
A pesar de lo flexible y adaptable que se ha mostrado la especificación IP a lo largo de los años, existe un aspecto que los diseñadores originales no fueron capaces de prever: el extraordinario crecimiento que ha sufrido Internet en el número de nodos conectados.
Cuando se diseñó el estándar TCP/IP, la informática estaba dominada por mainframes y casi no existían los ordenadores personales. El espacio de direcciones se diseñó para números del orden de cientos de redes con miles de nodos. Con la invasión posterior de los ordenadores personales, de manera repentina se ha creado una demanda de direcciones del orden de miles de redes pequeñas con millones de nodos.
Aparte del problema que acarrea el crecimiento de las tablas de rutado de las pasarelas, provocando un esfuerzo de procesamiento adicional, el principal escollo es el agotamiento del espacio de direcciones. El esquema original de direcciones no puede incorporar el número de redes que actualmente hay en funcionamiento.
Por tanto, dentro del ámbito del protocolo IPv4 (el más usado) ha sido necesario crear nuevos mecanismos de rutado que permitan compartir direcciones de red entre varias redes físicas. Concretamente, la mayor escasez de direcciones está en las redes medianas de tipo B, las cuales han ido adoptando direcciones tipo C o A a base de compartir el espacio de tipo B con otras redes parecidas. Por otra parte, existe una nueva forma de direccionamiento propio de IPv6 que termina con esas limitaciones. Sin embargo, la compatibilidad con este protocolo se ha retrasado mucho. Incluso bastante entrado el siglo XXI todavía (en el momento de escribir este tutorial) el uso de direcciones IPv6 es mínimo.
El fundamento de la reorganización de direcciones IPv4 es el principio que establece que cada red tiene libertad de modificar las direcciones y rutas, siempre que dichas modificaciones permanezcan ocultas para las demás localidades. Esto ha dado lugar a una serie de técnicas de rutado independientes entre sí, que dan solución a la compartición de direcciones de red. Las tres más importantes son:
Esta solución se basa en ahorrar direcciones tipo B a base de integrar redes medianas en el espacio de direcciones de otras redes tipo A.
Se trata de una multiplexación de direcciones a través de nodos dedicados que despachan a toda una red local a partir de una red ámplia tipo A. La pasarela transparente se encarga de que los nodos de la red local puedan comunicarse con la WAN como si realmente estuvieran conectados a ella. De esta manera, la LAN funciona integrada en la red ámplia sin ocupar una dirección de red propia.
La pasarela se llama transparente porque ni los nodos de la LAN ni de la WAN se dan cuenta de su existencia. Estas pasarelas no ofrecen todos los servicios convencionales y, por ejemplo, no responden a las peticiones de eco ping.
El proxy ARP (también llamado ARP sustituto, ARP promiscuo y ARP hack) es una forma de que varias redes físicas medianas compartan la misma dirección de red. Además de ésta, tiene utilidad en otras situaciones:
Se dan casos en que un determinado entorno físico se subdivide en subredes sólo por conveniencia administrativa, sin que existan verdaderas separaciones físicas (p.e. cuando se usan bridges en vez de gateways) quedando la red en una estructura transparente.También puede pasar que los nodos no tengan capacidad para mantener sus tablas de rutas, o para responder adecuadamente a las redirecciones, o no soporten un sistema de subredes. En todos estos casos, se deben enviar los datagramas como si todo fuese una misma red.La forma de gestionar estas subredes "virtuales" es precisamente desmontando el sistema de rueo de la red de redes. Los nodos no harán distinción alguna en las direcciones; todas serán consideradas como accesibles directamente.
Esto supone un problema: si se está considerando que cualquier dirección es accesible directamente en la red, ¿cómo comunicarse con las redes que están fuera de ésta? ¿Cómo diferenciar unas direcciones de otras? Para solucionar éste problema, las pasarelas deben soportar una versión del protocolo ARP llamada proxy ARP.
El proxy ARP se basa en un "truco" consistente en engañar a los nodos, haciéndoles creer que se trata de una sóla red , mientras que las pasarelas sí conocen que la red está estructurada en redes físicas. Esto se consigue proporcionando una máscara ficticia a los nodos, y otra real a las pasarelas. Así, los datagramas dirigidos al exterior serán manejados correctamente por las pasarelas, mientras que los internos serán enviados directamente.
Para usar el proxy ARP debe tenerse en cuenta dos precauciones:
Un ejemplo del uso del Proxy ARP. Véase la red de la figura:
El ordenador A quiere comunicarse con el B, pero no sabe que éste se encuentra en otra red, pues le engaña la máscara ficticia. Por tanto, en vez de buscar en la tabla de rutas la pasarela adecuado, envía un mensaje ARP: "¿podría el nodo 128.6.3.12 enviarme su dirección Ethernet?". Por supuesto, ese nodo nunca lo oirá, pues está en otra red. El único que lo sabe es la pasarela, que, al oir la pregunta, contesta haciéndose pasar por el destinatario: "Soy yo; mi dirección es 2:E0:0:CD:1". Esa dirección es en realidad la del propio gateway, que se encargará luego de reenviar el datagrama a su verdadero destino. Mientras tanto, el "engañado" nodo A dejará registrada en su tabla ARP la dirección del gateway como si fuese la del nodo B. A partir de ahora todo lo que mande allí pasará por el gateway.
El efecto es el mismo que si el nodo tuviese al gateway en su tabla de rutas. El control de rutado ha pasado a nivel de la tabla ARP. Los nodos que funcionan así se ven descargados del trabajo de mantener una tabla de rutas.
Los inconvenientes del Proxy ARP son principalmente dos:
Direccionamiento de subred (subnetting)
Esta técnica es la que más se ha extendido de las tres, y se ha incluido como parte de los estándares TCP/IP.
Consiste en compartir una dirección de red tipo B entre varias redes, subdividiendo internamente el espacio como si fueran de tipo C. Esto se consigue subdividiendo la parte hostid de las direcciones tipo B de tal manera que parte de él identifique a las subredes.
Este cambio sólo afecta ligeramente a la interpretación de las direcciones IP; es por ello que se ha extendido como un estándar.
Este tipo de direccionamiento jerárquico lleva también a un rutado jerárquico. El resto de Internet ve todo el conjunto como una sola red tipo B, sin fijarse en la subdivisión del campo hostid. De esta manera se cumple la norma de que el rutado desde el exterior no se debe ver afectado. Todo el tráfico externo se concentra en uno varios puntos desde donde se despacha según el campo de subred (segundo nivel de jerarquía).
Una gran ventaja de este tipo de direccionamiento es que la ruta no necesita saber muchos detalles sobre los destinos distantes. Un inconveniente es lo difícil que resulta cambiar a posteriori una jerarquía de este tipo ya establecida.
Es estándar especifica que cada máquina debe tener una máscara de subred de 32 bits para cada red a la que pertenezca. Ésta sirve para identificar qué parte de la dirección IP corresponde al netid o identificador de red y cuál al hostid o identificador de nodo.
La norma es poner a 1 los bits que corresponden a la dirección de red y a 0 los de la dirección de nodo. No es necesario que los bits seleccionados sean contiguos, aunque se recomienda que sea así para una más fácil comprensión de las tablas de rutado.
La máscara de subred suele representarse siguiendo la notación decimal con puntos habitual (p.e. 255.255.255.0).
También existe una notación en tres partes, sin identificar campos de bits, que se suele usar para representar grupos de direcciones y direcciones abstractas:
{<número de red>,<número de subred>,<número de nodo>}
En esta notación, el valor -1 representa todos los bits a 1. Cada una de las partes puede ponerse en notación decimal con puntos. P.e., la notación {128.10,-1,0} indica una dirección de red 128.10, seguida de todo unos en el campo de subred y todo ceros en el de nodo.
La forma de difundir las mascaras de subred es mediante la solicitud de mascara de subred ICMP.
El algoritmo de rutado se ve modificado por el uso de direcciones de subred. El uso del rutado de subred ha de cumplir dos reglas:
1) Se debe usar el rutado de subred entre M y N, a no ser que exista un solo camino más corto entre M y cualquier red física que sea subred de N.
2) Todas las subredes bajo una misma dirección de red deben ser contiguas (estar conectadas físicamente entre ellas), las máscaras deben ser uniformes en todas ellas y todas las máquinas deben usar el rutado de subred.
En el algortimo estándar de rutado, se conoce siempre el formato de las direcciones, pues los primeros tres bits de cada dirección codifican el tipo de red (A, B, C o D). En el rutado de subred esto no es posible, por lo que es necesaria la presencia de un campo en las tablas de rutado con la máscara de subred, quedando en:
(máscara, dirección de red, dirección de salto siguiente)
El algoritmo modificado usa la máscara de subred para extraer los bits de la dirección de destino y compararlos con la dirección en la tabla, repitiendo la misma operación con cada entrada de la tabla hasta que encuentra una coincidencia.
Diagrama de flujo con subredes
Esta figura representa el algoritmo de rutado modificado de subred. Cada entrada de la tabla de rutado incluye una máscara de subred, la cual indica a qué parte de la dirección IP se refiere la dirección de red de esa entrada.
Para comprobar la correspondencia de la dirección de destino de un datagrama, se efectúa una operación de bits AND con la máscara para extraer la parte de dicha dirección de destino que identifica la red, la cual se compara con la red de destino a la que corresponde la entrada. Este proceso se repite con cada una de las entradas de la tabla.
Una técnica totalmente diferente para evitar el agotamiento del espacio de direcciones es asignar a una organización un conjunto de direcciones de tipo C (que son más abundantes) en lugar de una de tipo B.
El problema de esta estrategia es que puede hacer que la información que las pasarelas almacenan e intercambian aumente considerablemente, al tener varios registros para cada organización.
Para evitar esto, se usa una técnica llamada CIDR (Classless Inter-Domain Routing, rutado sin tipo entre dominios), donde se agrupan un conjunto de direcciones de tipo C contiguas en un registro de dos campos compuesto por la dirección más pequeña del grupo y un conteo del número de direcciones que lo componen.
P.e. el registro {192.5.48.0, 3} identifica el grupo de direcciones 192.5.48.0, 192.5.49.0 y 192.5.50.0.
En la práctica, este sistema se modifica un poco, requiriendo que cada grupo de direcciones sea potencia de dos y usando una máscara de bits para identificar el tamaño del grupo, en lugar del conteo.
P.e. el rango de direcciones entre 234.170.168.0 y 234.170.175.255 genera la máscara de bits 255.255.248.0, poniendo a 1 los bits que coinciden en todas las direcciones del grupo. Las pasarelas en las redes que usen este sistema han de tener un software de rutado especial para CIDR.
@ElPamplina@masto.es
elpamplinadecai@gmail.com