Algoritmos de encadenamiento Podemos definir encaminamiento como un proceso mediante el cual tratamos de encontrar un camino entre dos puntos de la red: el nodo origen y el nodo destino. El objetivo que se persigue es encontrar las mejores rutas entre pares de nodos Los algoritmos de encaminamiento pueden agruparse en: Determinísticos o estáticos No tienen en cuenta el estado de la subred al tomar las decisiones de encaminamiento. Las tablas de encaminamiento de los nodos se configuran de forma manual y permanecen inalterables hasta que no se vuelve a actuar sobre ellas. Por tanto, la adaptación en tiempo real a los cambios de las condiciones de la red es nula. ALGORITMOS DE ENCAMINAMIENTO. Los algoritmos de encaminamiento se agrupan en dos tipos principales: no adaptativos y adaptativos. Los algoritmos no adaptativos no basan sus decisiones de encaminamiento en mediciones o estimaciones de trafico o topología Actuales. Los algoritmos adaptativos intentan cambiar sus decisiones de encaminamiento para reflejar los cambios de topología y de trafico actual. Existen tres familias distintas de algoritmos adaptativas, que se diferencian dé acuerdo con la información que utilizan. Los algoritmos globales utilizan información recogida en toda la subred, para intentar tomar decisiones óptimas. ENCAMINAMIENTO POR EL CAMINO MÁS CORTO. El camino mas corto es una forma de medir la longitud del camino. En el caso mas general, las etiquetas de los arcos se podrían calcular como una función distinta, ancho de Banda, promedio de trafico, costo de comunicación, longitud promedio de la cola de espera, retardo medido, y algunos otros factores. ENCAMINAMIENTO DE CAMINO MÚLTIPLE. Existe un solo “mejor” camino entre cualquier par de nodos y que todo él trafico entre ellos deberá utilizar. Con frecuencia, se puede obtener un mejor rendimiento al dividir él trafico entre varios caminos, para reducir la carga en cada una de las líneas de comunicación. La técnica se conoce como Encaminamiento de camino múltiple, o algunas veces encaminamiento bifurcado. Se aplica tanto en subredes con data gramas, como en subredes con circuitos virtuales . El encaminamiento de camino múltiple se realiza de la siguiente manera. Cada IMP mantiene una tabla con una ristra reservada para cada uno de los posibles IMP destinatarios; cada ristra ofrece la mejor, la segunda mejor, la tercera mejor, etc. Línea de salida para este destino en particular. Una de las ventajas del encaminamiento del camino múltiple es la posibilidad de poder transmitir diferentes clases de trafico sobre diferentes caminos. ENCAMINAMIENTO CENTRALIZADO. Si la topología es de característica estática y él trafico cambia muy rara vez. Sin embargo, si los IMP y las líneas se desactivan y después se restablecen, o bien, si el tráfico varia violentamente durante todo el día, se necesitará algún mecanismo para adaptar las tablas a las circunstancias que imperan en este momento. Se estudiaran las técnicas para la construcción de las tablas de encaminamiento en un lugar central. Cuando se utiliza un encaminamiento centralizado, en alguna parte de la red hay un RCC (Centro de control del encaminamiento). Periódicamente, cada IMP transmite la información de su estado al RCC. El RCC recoge toda esta información, y después, con base en el conocimiento total de la red completa, calcula las rutas optimas de todo los IMP a cada uno de los IMP restantes, el encaminamiento centralizado también tiene algunos serios, si no es que fatales, inconvenientes. La vulnerabilidad del RCC Es un problema muy serio y para eso una solución es, tener una segunda maquina disponible como respaldo. También se necesitará establecer un método de arbitraje para tener la seguridad de que el RCC primario y el de respaldo no lleguen a entrar en conflicto para saber quien es el jefe. Si el RCC calcula la ruta óptima para cada IMP, sin rutas alternas, la pérdida de tan solo una línea o IMP, llegará a desconectar algunos IMP, sin rutas Alternas, la perdida de tan sólo una línea o IMP, llegara a desconectar algunos IMP del RCC, creando así terribles consecuencias para el sistema. ENCAMINAMIENTO AISLADO En los algoritmos de encaminamiento, únicamente basados en la información que los mismos hayan reunido. No intercambia información de rutas con otros IMP. Sin embargo tratan de adaptarse a los cambios de topología y trafico que se llegan a presentar. Baran (1964), conocido como el algoritmo de la patata caliente. En el momento en que llega un paquete, el IMP trata de deshacerse de él tan rápido como le sea posible, al ponerlo en la cola de espera de salida más corta ósea llega un paquete, el IMP cuenta él numero de paquetes que se encuentran en la cola de espera de cada una de las líneas de salida. Entonces instala el nuevo paquete al final de la cola de salida más corta, sin tomar en cuenta el lugar al que se dirige esta línea. Una posibilidad consisten utilizar la mejor opción estática, a menos que la cola excediera un cierto valor de umbral. Otra posibilidad consiste en utilizar la cola de espera más corta, a menos que, su peso estático seademasiado pequeño. Una alternativa adicional consistiría en ordenarlas líneas en términos de sus pesos estáticos, y nuevamente, en términos de las longitudes de las colas de espera, tomando en consideración la línea para la cual resulte menor la suma de los dos ordenamientos. También desarrollado por Baran, es el conocido como el de aprendizaje hacia atrás. Una manera de realizar el aprendizaje hacia atrás consiste en incluir las identidades del IMP origen en cada paquete, junto con un contador que se incrementa después de cada salto. Desgraciadamente solo se registran los cambios hacia lo que sea mejor, no hay mecanismo alguno que permita registrar este hecho. En consecuencia deberán olvidar en forma periódica cualquier cosa que hayan aprendido y comenzar todo de nuevo. Rudin (1976) ha descrito un encaminamiento híbrido interesante, el cual se encuentra entre un encadenamiento centralizado y uno aislado, el cual denomino encadenamiento Delta. En este algoritmo, cada uno de los IMP mide el “costo” de cada línea y periódicamente transmite un paquete al RCC entregándole estos valores. Utilizando la información enviada calcula las mejores trayectorias. Cuando él calculo del encaminamiento termina, el RCC envía a cada IMP una lista de todos los caminos equivalentes, para cada uno de tus posibles destinos; Se les permite seleccionar cualquiera de las trayectorias equivalentes. Puede decidir entre todas ellas la forma aleatoria, o bien, utilizar el valor actualmente medido del costo de la línea. Las simulaciones Que realizó Rudin, han demostrado que el valor de Ç puede escogerse para dar un mejor rendimiento que el obtenido con un encaminamiento puramente centralizado o aislado. -Inundación. La inundación es un caso extremo del encaminamiento aislado, en el cual cada paquete que llega se transmite en todas las líneas de salida, exceptuando aquélla por la que llega. Con la inundación se genera un número infinito, a menos que se tomen algunas medidas para amortiguar el proceso. Una de tales medidas consiste en tener un contador de saltos contenido en la cabecera de cada uno de los paquetes, el cual sé decremento con cada salto que se lleva a cabo, y el paquete se desecha en el momento en que el contador alcance el valor de cero. En varias aplicaciones, la inundación no resulta ser muy practica, pero si tiene algunos usos importantes. En aplicaciones de bases de datos distribuidas, algunas veces se necesita actualizar todas las bases de datos en forma concurrente, en cuyo caso la inundación puede ser de gran utilidad. La inundación selectiva. En general, es ilógico enviar un paquete hacia el oeste, a través de líneas que van al este, a menos que la topología sea muy extraña. El algoritmo de Camino Aleatorio; aquí el IMP se encarga simplemente de seleccionar una línea aleatoriamente y reexpedir el paquete a través de ella. Si la subred tiene una cantidad considerable de interconexiones, este algoritmo tiene una cantidad considerable de interconexiones, este algoritmo tiene la propiedad de hacer un uso excelente de los encaminamientos alternativos. También es muy robusto. Encaminamiento distribuido. Intercambia periódicamente información de encaminamiento explicito con cada uno de sus vecinos. Esta entrada consta de dos partes: la línea preferida de salida que se utilice para dicho destino, y alguna estimación del tiempo o distancia hacia él. Encaminamiento Optimo. Como una consecuencia directa del principio de optimización, se puede observa que, el conjunto de rutas optimas, procedentes de todos los orígenes a un destino dato, forman un árbol cuya raíz sale del destino. A este árbol se le llama árbol sumidero, este no contiene ningún lazo, de tal forma que cada paquete será entregado a través de un número limitado finito de saltos. Encaminamiento basado en el flujo. Para utilizar en forma adecuada, es necesario conocer anticipadamente cierto tipo de información. Primero, se deberá conocer la topología de la red. Segundo la matriz de trafico deberá darse a conocer. Tercero, también deberán conocerse la matriz de capacidades en las líneas en Bits por segundo. Por ultimo se deberá seleccionar un algoritmo de encaminamiento. El retardo incluye tanto tiempo de espera como el tiempo de servicio. Para calcular el tiempo de retardo medio de la red completa, se toma la suma ponderada de cada uno de los ocho enlaces, en donde la ponderación es la fracción del trafico total. Encaminamiento jerárquico. A medida que crece el tamaño de la red, tablas de encadenamiento de los IMP crecen también en forma proporcional. No solamente se produce un aumento de memoria consumida en el IMP al tener tablas más grandes, sino también es necesario tener un mayor tiempo de CPU para explorarlas y más ancho de banda para transmitir los informes del estado que guardan. Cuando se utiliza el encaminamiento jerárquico, los IMP se dividen en regiones, en las cuales cada uno de los IMP conoce todos los detalles sobre la manera de encaminar los paquetes para alcanzar sus respectivos destinos dentro de su propia región, pero desconocen la estructura interna de otras regiones. Para redes enormes, la jerarquía de dos niveles puede resultar insuficiente. Puede ser necesario agrupar las regiones en conglomerados, estos a su vez en zonas, las zonas en grupos, y así sucesivamente, hasta que se nos acaben los nombres de las agrupaciones. En la medida en que crece la relación del numero de regiones al numero de IMP dentro de una región. El ahorro de espacio en la tabla crece proporcionalmente. Desafortunadamente, la ganancia en espacio no es gratuita; Hay que pagar un precio, y este se presenta bajo la forma de un incremento en la longitud del camino. También descubrieron que el aumento de la longitud promedio efectiva de la trayectoria, provocando por el encaminamiento jerarquizado, es lo suficiente pequeño como para resultar no objetable. Encaminamiento por difusión. Para algunas aplicaciones, los hostales necesitan transmitir mensajes a todos los demás hostales. En algunas redes los IMP pueden llegar a necesitar este tipo de servicio, por ejemplo, distribuir la actualización de las tablas de encaminamiento. A la transmisión de un paquete, en forma simultanea a todos los destinos, se les conoce como difusión, habiéndose ya propuesto varios métodos para desarrollarla. En un método de difusión en el que no es necesario que la subred tenga características especiales, el extremo fuente solamente tiene que enviar un paquete distinto de información a cada destino. Esto no solo trae como resultado un desperdicio considerable del ancho de banda, sino también requiere que la fuente tenga una lista completa de todos los destinos. Un algoritmo es el encaminamiento multidestino. Si este método se utiliza, cada paquete contiene una lista de destinos o un mapa de bits, mediante el cual se indican los destinos deseados. Cuando un paquete llega a un IMP, este comprueba todos los destinos para determinar el conjunto de líneas de salida que se necesitaran. (Una línea de salida será necesaria, si esta es la mejor ruta, por lo menos, para uno de los destinos). El IMP genera una nueva copia del paquete para cada una de las líneas de salida que se utilizaran, e incluye en cada paquete sólo aquellos destinados que van a utilizar la línea. El conjunto de destinos, se subdivide entre las líneas de salida. Después de un número suficiente de saltos, cada paquete conducirá sólo un destino y podrá tratarse como un paquete normal. El encaminamiento multidestino es parecido a tener paquetes direccionados en forma independiente, excepto que, si varios paquetes deben seguir la misma ruta, uno de ellos pagará la cuota completa y el resto viajara gratuitamente. El tipo de Algoritmo de difusión hace uso explicito del árbol sumidero para el IMP que lleva a cabo el inicio de la difusión, o bien, de otro árbol de expansión que sea conveniente para tal efecto. Este método hace un excelente uso del ancho de banda, generando él numero mínimo absoluto de paquetes necesarios para realizar el trabajo. El único problema es que cada IMP deberá tener conocimiento de algún árbol de expansión al que se puede referir, y la mayoría de los algoritmos que se han estudiado no tiene ese tipo de conocimiento. Él ultimo algoritmo de difusión intenta igualar el comportamiento del algoritmo que se vio anteriormente, aun cuando los IMP no supieran nada acerca de los árboles de expansión. Cuando un IMP llega un paquete de difusión, este comprueba si el paquete llegó por la línea que normalmente se utiliza para transmitir paquetes hacia la fuente de difusión. Sin embargo, si el paquete de difusión llegara por una línea diferente a la preferida para alcanzar el origen, el paquete se desechará, como un probable duplicado. ALGORITMOS DE CONTROL DE LA GESTION. En esta sección se estudiaran cinco estrategias para el control de la congestión. Estas estrategias toman en consideración la asignación de recursos en forma anticipada, que se desechen los paquetes cuando no se puedan procesar, que se restrinja él numero de paquetes en la subred, utilizar el control de flujo para evitar la congestión y obstruir la entrada de datos cuando la subred esté sobrecargada. Preasignación de tampones. Si se utilizan circuitos virtuales dentro de la subred, es posible resolver por completo el problema de la congestión de la manera siguiente. Cuando se establece un circuito virtual, el paquete de solicitud de llamada sigue su camino a través de la subred, produciendo entradas en las tablas según avanza. En el momento en que llega a su destino, la ruta que deberá seguir todo él trafico subsiguiente ya se ha determinado, así como se han hecho entradas en las tablas de encaminamiento de todos los IMP intermedios. Normalmente, el paquete de solicitud de llamada no reserva ningún espacio de memoria en los IMP intermedios, sino solo ranuras en las tablas. Sin embargo una sencilla modificación del algoritmo de establecimiento podría hacer que cada uno de los paquetes de solicitud de llamada reserve, también, uno o más tampones para datos. Si llega un paquete de solicitud de llamada a un IMP y todos los tampones fueron reservados con anticipación, se deberá proceder a buscar otra ruta alternativa para el proceso, o bien, devolver una “señal de ocupado” al extremo que llama. Aun cuando los tampones se reserven algunos de los circuitos que aspiran a ser circuitos virtuales pueden ser reencaminados o rechazados por falta de espacio en la tabla, de tal forma que, reservar memorias no agrega ningún problema adicional a los ya existentes. Al asignar permanentemente tampones a cada uno de los circuitos virtuales en cada IMP, siempre habrá un lugar para almacenar cualquier paquete que llegue hasta que pueda ser reexpedido. Es imposible que se llegue a presentar congestión, por que todos los recursos necesarios para procesar él trafico ya se han reservado. Algunas subredes lo utilizan sólo en aquellos casos en donde es primordial tener un retardo muy pequeño y un gran ancho de banda. Descarte de paquetes. En lugar de reservar todos los tampones anticipadamente, no se reserva absolutamente nada por adelantado. Si llega un paquete y no existe un lugar disponible para colocarlo, el IMP sencillamente lo descarta. Descartar paquetes ha voluntad puede llegar demasiado lejos; Resultaría bastante tonto. Este asentimiento le permitiría al IMP abandonar un paquete ya recibido y liberar así un tampón. Si el IMP no cuenta con tampones disponibles, no podría recibir ningún paquete para ver si contiene asentamientos, si la congestión tiene que ser evitada mediante el descarte del paquete será necesario tener una regla para indicar cuando se deberá conservar o descartar un paquete. Irland (1978.) La idea de Irland consiste en eliminar él numero de tampones que pueden vincularse a cualquier cola de salida estrategia permitirá que él trafico hacia otras líneas se reexpida inmediatamente con la posibilidad de duplicar o triplicar la tasa de salida del IMP de cualquier modo el paquete desechado se retransmitirá pronto si el sistema se encuentra bien sintonizado, este incluso se retransmitirá antes de que la cola de espera se vacié, así que su rechazo inicial ni siquiera se notara. Una idea relacionada con esto producida por Kamoun (1976), evita directamente que cualquier línea o líneas queden privadas de información: en el metodo de Irland se puedan combinar con el Kamoun distribuyendo un numero minimo y máximo detampones para cada linea. Una forma de minimizar el ancho de banda que se desperdicia durante la retransmisión de paquetes descardas, consiste en descartar sistemáticamente aquellos paquetes que no hayan viajado lejos y que, por consiguiente no representen una fuerte inversión de recursos. Control Isarritmico con la congestión. La congestión tiene lugar cuando haya varios paquetes en la subred. Limitar él numero de paquetes Davis (1972) propuso el método que utiliza precisamente, dicho limite el isarritmico debido a que mantiene constante él numero de paquetes existe premios que circulan dentro de la subred, siempre que un IMP desee transmitir un paquete recién entregado apenas por su Hostal, deberá de capturar un permiso, que circula dentro de la subred. Siempre que un IMP desee transmitir un paquete recién entregado apenas por su Hostal, primero deberá capturar un premio, y después destruirlo, cuando finalmente el IMP designa torio saca el paquete a las subred, regenera el permiso. Estas reglas sencillas aseguran él numero de paquetes de la subred nunca exceda él numero de permisos que inicialmente estén presentes. IMP determinado queda súbitamente abrumado por paquetes los permisos deberán estar uniformemente definidos no es recomendable que el transmisor tenga que andar buscando por todas partes suficientes permisos seria conveniente que estuvieran centralizados de tal forma que la petición de una cantidad considerable se pudiera cumplir con mayor rapidez. Si por alguna razón los permisos llegan a ser distribuidos, la capacidad de transporte de la red se reduce para siempre. Control de flujo. Algunas redes han intentado utilizar mecanismos de control de flujo para eliminar la congestión. En la realidad, el control de flujo no puede llegar ha resolver fácilmente los problemas de congestión, por él trafico de unas ráfagas. Cuando varios usuarios soliciten el pico máximo al mismo tiempo cuando el control de flujo se utiliza como un intento para acabar con la congestión se puede aplicar al trafico entre paredes: 1.-Procesos de Usuarios. 2.-Hostales. 3.- IMP de origen y destino. Además se puede restringir él numero de circuitos virtuales abiertos. Paquetes reguladores. Lo que en la realidad se necesita por consiguiente es : un mecanismo que se active cuando el sistema sé llege a congestionar. Hay una variable U, asociada a cada una de las líneas, cuyo valor entre cero y uno, refleja la utilización de esa línea. Si es el caso, el IMP transmite un paquete regulador, de vuelta al Hostal de origen, tomando el destino del paquete mismo. El paquete se etiqueta dé tal forma que no pueda generar mas paquetes reguladores después, y se reexpida de manera normal cuando el hostal de origen recibe al paquete regulador se le solicita que reduzca él trafico, enviado al destino especificado de acuerdo a un porcentaje X. Dado que otros paquetes dirigidos al mismo destino, quizás se encuentren ya en camino, y podrían generar todavía más paquetes reguladores, el hostal deberá ignorar los paquetes reguladores que se refieren a este destino, durante un intervalo de tiempo fijo. Después de que haya experimentado ese intervalo de tiempo el Hostal estará a tiempo para escuchar la llegada de mas paquetes reguladores durante otro intervalo. Se han propuesto algunas variantes de este algoritmo de control de la congestión, en una de ellas, el IMP podría mantener dos niveles elípticos. Otra variante consiste en utilizar las longitudes de las colas de espera, en lugar de la utilización de las líneas; Como medio de disparar la señal. Bloqueos. La congestión máxima es un bloqueo al que también se le conoce como estacionamiento. El primer IMP no puede proseguir hasta que el segundo IMP lleve a cabo una acción, y el segundo IMP tampoco puede continuar por que esta esperando que el primero haga algo. Los dos IMP se han bloqueados por completo y permanecerán así en ese estado. Los dos se encuentran bloqueados y ha esta función se le conoce como bloqueo de almacenamiento y reenvió directo. Schweitzer(1980) en este esquema se construye un grafo dirigido, en el cual los tampones son los nodos del grafico, los arcos conectan a pares de tampones localizados en el mismo IMP o en IMP adyacentes el grafo se construye dé tal manera que si todos los paquetes se mueven de un tampón a otro, alo largo de los arcos de grafo, entonces no podrían presentarse bloqueos. Un paquete procede de un Hostal solo podrá ser admitido por la subred, si el tampón cero corresponde al IMP de origen, esta desocupado. Solo se podrá mover a un tampón etiquetado con él numero uno, en una IMP adyacente, así sucesivamente, hasta que alcance su destino y quede eliminado de la subred. Por alcance un tampón queda etiquetado con la letra M, en cuyo caso se desechara uno de los tampones se encuentra en uno de los estados posibles; Vació reteniendo un paquete. Merlín y Schweitzer también han presentado una cantidad considerable demejoras ha estas sencillas estrategias con el objeto de reproducir él numero de tampones necesarios para bajar el rendimiento aunque este algoritmo evite los bloqueos por completo tiene la desventaja, que bajo circunstancias normales, muchas memorias se desperdician gracias a la falta de paquetes apropiados. Además, las líneas estarán con frecuencia inactivas. Blazewicz y sus colaboradores (1987) a , han publicado un algoritmo completamente diferente, con el cual se evita el bloqueo y no tiene las propiedades mencionadas. En su algoritmo cada paquete lleva consigo un sello de tiempo globalmente único. Este sello contiene la fecha en la cual se creo el paquete, localizada en los Bits de mayor orden y en él numero de maquina que se localiza en los Bits de menor orden. Aunque la sincronización de todos los relojes no es esencial, el algoritmo tiende ha dar un mejor servicio sin embargo, cuando los relojes no están demasiados de sincronizados. El algoritmo necesita que cada IMP un tampón por línea de entrada como una memoria de enreda especial todos los demás tampones se pueden utilizar para enviar los paquetes en trafico, los cuales se encolan, según el sello de tiempo en una cola separada para cada línea de salida. Siempre que una línea pase al estado inactivo, los dos IMP de sus dos extremos intercambian paquetes de control, entregado el sello de tiempo correspondiente al paquete más antiguo, que desee utilizar la línea. Aquel que tenga el paquete más antiguo es el que gana y será el paquete que se transmita. A medida que avanza el tiempo, cada paquete llegara ha ser eventualmente, el de mayor antigüedad. Y será entregado. Sin embargo, aun persiste el escabroso problema de cómo evitar que un IMP en mal 4estado provoque la caída de roda la red. Lai(1982) presenta un catalogo exhaustivo de otros bloqueos de redes así como sus posibles soluciones de Blazewich y sus colaboradores (1987), Go Pal?(1985), discuten otros métodos de discusión de bloqueo. 5.1 Introducción Podemos definir encaminamiento como un proceso mediante el cual tratamos de encontrar un camino entre dos puntos de la red: el nodo origen y el nodo destino. El objetivo que se persigue es encontrar las mejores rutas entre pares de nodos j-k. a) Mejor Ruta. Por mejor ruta se entiende aquella que cumple alguna de estas condiciones: * presenta el menor retardo medio de transito, * consigue mantener acotado el retardo entre pares de nodos de la red (Tjk<To), * consigue ofrecer altas cadencias efectivas independientemente del retardo medio de transito * ofrezca el menor coste. b) Métrica de la Red. Citaremos dos de ellas: * Numero de saltos (canales) necesarios para ir de un nodo a otro. No se comporta de forma óptima, pero si ofrece buenos resultados, y es empleada con bastante frecuencia.. La distancia (valor que se asocia a cada canal) es igual a 1 para todos los canales. * Retardo de Transito entre nodos vecinos. En este caso la distancia se expresa en unidades de tiempo (p.e ms), y no es constante a lo largo del tiempo sino que depende del trafico que soporta el canal. Algunos de los problemas con los que nos encontramos a la hora de encaminar son: * La carga de los enlaces no va a ser constante (es decir, el mejor camino no siempre será el mismo), al igual que la tasa de generación de mensajes. El encaminamiento busca el camino óptimo, pero como el tráfico varía con el tiempo, el camino óptimo también dependerá del instante en que se observa la red. * Hay que tener en cuenta los cambios en la topología de la red (hay nodos que se caen, o se añaden, o se quitan, etc). * Existen recursos limitados, no pudiendose cursar todos los paquetes a infinita velocidad. * Asincronía, en el sentido de que no hay un momento determinado para que ocurran las cosas (un nodo transmite cuando le llega información, y esto sucede a su vez cuando el usuario decide mandarla). Por tanto, el encaminamiento debe proveer a la red de mecanismos para que ésta sepa reaccionar ante situaciones como: * Variabilidad del tráfico: se han de evitar las congestiones de la red. * Variaciones topológicas, como las mencionadas arriba: caídas de enlaces, caídas de nodos, altas y bajas … * Cambios en la QoS (Quality of Service): a veces se pide un servicio donde no importa el retardo y sí un alto throughput, y viceversa. La nomeclatura que utilizaremos es la siguiente: * Algoritmo de encaminamiento: método para calcular la mejor ruta para llegar de un sitio a otro. La mejor ruta podrá calcularse en función de los ‘costes’, retardos, distancia… * Protocolo de encaminamiento: es la manera que tienen los nodos de intercambiar la información de encaminamiento (probablemente generada por el algoritmo). Los protocolos serán los encargados de ocultar la red y comprobar que las condiciones de encaminamiento impuestas se verifican siempre. * Decisión de encaminamiento: Nos centraremos en redes de conmutación de paquetes, tanto en modo datagrama como en modo circuito virtual: * Red en modo circuito virtual: Si la red funciona en modo circuito virtual generalmente se establece una ruta que no cambia durante el tiempo de vida de ese circuito virtual, ya que esto es lo más sencillo para preservar el orden de los paquetes. El encaminamiento se decide por sesión y no se cambia a menos que sea imprescindible, es decir existen restricciones de cara a no cambiar el encaminamiento en la sesión (ej. caída de un enlace). Cuando eso ocurre se busca inmediatamente otra ruta, pero este cambio al tardar en propagarse por la red, al tardar los nodos en enterarse, se puede manifestar en los sistemas finales de tres formas: o no se manifiesta o se pierde información o se pierde la sesión. * Red en modo datagrama: Como en este caso no debe garantizarse el ordenamiento final de los paquetes, en una red funcionando en modo datagrama se puede cambiar el criterio de encaminamiento por cada paquete que se ha de cursar (Esto da origen a menor numero de problemas). Los requisitos del algoritmo de encaminamiento son: * Corrección: Se ha de entregar la información correctamente. Es algo obvio: queremos que el paquete llegue precisamente al nodo al que lo mandamos. * Simplicidad: debe aportar soluciones sencillas. Esto es útil para redes reales (grandes) y los protocolos mas simples son los que en la actualidad tienden a imponerse (p.e. RIP: Routing Interconexion Protocol). * Robustez: El algoritmo ha de ser insensible a inestabilidades del sistema. Estas inestabilidades son, por ejemplo, caidas de nodos, etc, que han de ser previstas de antemano. * Estabilidad (convergencia): Es muy importante que se cumpla. El procedimiento debe converger antes de que la red cambie de estado (caída de nodo, alta de usuario, etc.). Cuando esto ocurre, se recalculan de nuevo las rutas, debiendo los nodos llevar a cabo acciones coherentes que conduzcan a situaciones estables. * Equidad (justicia): Debe tratar a todos los usuarios de la misma manera. * Trazabilidad (gestionabilidad): Supone tener información (trazas) de lo que ha hecho la red para que en el caso de que ocurran “cosas raras” sea posible corregirlas. * Escalabilidad: Tengo que tener un comportamiento optimo sea cual sea el numero de nodos ( incluso si este aumenta mucho). 5.2 Métodos de Encaminamiento 5.2.1 Conceptos Básicos Veamos la estructura general de un nodo de conmutación de paquetes, lo cual nos valdrá para hacer una posterior claseficación de los métodos de encaminamiento atendiendo a la forma en la que los nodos recogen y distribuyen la información que les llega de la red y a otros factores: * FIB (Forward Information Base): Es la tabla de encaminamiento que se consulta para hacer el reenvío de los paquetes generados por los usuarios (los PDU representan estos paquetes). * RIB (Routing Information Base): Tabla que almacena las distancias a los nodos. Es la base de información de encaminamiento que se consulta para decidir y formar la FIB. La información de la RIB se consigue mediante interacción con el entorno local de cada nodo (cada nodo observa sus enlaces) y mediante la recepción de R-PDUs d e información de control procedentes de otros nodos vecinos que informan del conocimiento que estos nodos tienen sobre el estado de la red. A su vez, con la información obtenida por la RIB, ésta manda PDUs de control para informar del conocimiento del estado de la red que el nodo tiene a los demás nodos. * LOCAL: Información del entorno local del nodo. Contiene la información de lo que el nodo ve (memoria disponible, enlaces locales, etc.), más la que hay que proporcionarle. * R-PDU (Routing-PDU): Información de control entre nodos. Son paquete de control, los cuales mandan otros nodos con información sobre la red (no son datos). Por ejemplo, se manda información de que el nodo sigue activo, y también las distancias a otros nodos (vector de distancias). * PDU (Protocol Data Unit): Unidad fundamental de intercambio de información para un nivel determinado (a veces se indica explícitamente el nivel poniendo N-PDU, o PDU de nivel N), como nivel de enlace, red, etc. Son llamados también tramas. Básicamente, es funcionamiento es el siguiente: A partir de la RIB, se utiliza el algoritmo de encaminamiento para calcular la FIB, y cuando una PDU llega al nodo, se consulta esta FIB. Ejemplo: Tabla de Encaminamiento del NODO D: Destino Next Coste A E 9 B C 7 C C 2 D D 0 E E 5 F E 6 El numero que aparece junto a los enlaces representa el ‘coste’ o ‘distancia’ de los mismos, que puede ser constante o variable. Llamarémos METRICA a la magnitud o medida a optimizar (retardo, ancho de banda, coste económico, etc). 5.2.2 Clasificación de los Métodos de Encaminamiento 1.- En función de donde se decide encaminar: * Fijado en el origen (Source Routing): son los sistemas finales los que fijan la ruta que ha de seguir cada paquete. Para ello, cada paquete lleva un campo que especifica su ruta(campo RI: Routing Information), y los nodos sólo se dedican a reenviar los paquetes por esas rutas ya especificadas. Así pues, son los sistemas finales los que tienen las tablas de encaminamiento y no se hace necesaria la consulta o existencia de tablas de encaminamiento en los nodos intermedios. Este tipo de encaminamiento suele ser típico de las redes de IBM. * Salto a salto (Hop by Hop): los nodos, sabiendo donde está el destino, conocen sólo el siguiente salto a realizar. 2.- En función de la adaptabilidad: * No adaptables (estáticos): o Estáticos: Las tablas de encaminamiento de los nodos se configuran de forma manual y permanecen inalterables hasta que no se vuelve a actuar sobre ellas. La adaptación a cambios es nula. Tanto la recogida como la distribución de información se realiza por gestión (se realiza de manera externa a la red), sin ocupar capacidad de red. El calculo de ruta se realiza off-line (en una maquina especifica),y las rutas pueden ser las optimas al no estar sometido al requisito de tiempo real. Este tipo de encaminamiento es el optimo para topologias en los que solo hay una posibilidad de encaminamiento (topologia en estrella). o Q-Estáticos: Este encaminamiento, es igual que el estático pero en vez de dar una sola ruta fija, se dan además varias alternativas en caso de que la principal no funcione, de ahí que tenga una adaptabilidad reducida. Comparación entre ambos: Fijado en Origen Conocimiento completo de la red Salto a Salto Los sistemas finales han de tener un conocimiento SIMPLICIDAD: Los nodos han de tener un conocimiento parcial de la red (saber qué rutas son las mejores) Complejidad Recae toda en los sistemas finales En los sistemas intermedios ya que son los que tienen que encaminar Problemas de Bucles No (ROBUSTEZ). hay bucles: el sistema final fija la ruta Sí pueden ocurrir: no se tiene una visión completa de la red (INCONSISTENCIA) * Adaptables (dinámicos): o Centralizados: En este tipo de encaminamiento, todos los nodos son iguales salvo el nodo central. Los nodos envían al central información de control a cerca de sus vecinos (R-PDUs). El nodo central será el que se encargue de recoger esta información para hacer la FIB de cada nodo, es decir, el nodo central decide la tabla de encaminamiento de cada nodo en función de la información de control que éstos le mandan. El inconveniente de este metodo es que consumimos recursos de la red, y además, se harian necesaria rutas alternativas para comunicarse con el nodo central, ya que estos métodos es que dejarían de funcionar con la caída de éste. o Aislados: No se tiene en cuenta la información de los otros nodos a la hora de encaminar. Se basa en que cada vez que un nodo recibe un paquete que tiene que reenviar (porque no es para él) lo reenvía por todos los enlaces salvo por el que le llegó. Son muy útiles para enviar información de emergencia. Destacan dos métodos de encaminamiento aislados: + Algoritmo de inundación: Ver anexo 1. + Algoritmo de aprendizaje hacia atrás(Backward Learning): Ver anexo 2. + Algoritmo de la patata caliente (“Hot Potatoe”). o Distribuídos: Son los más utilizados. En este tipo de encaminamiento todos los nodos son iguales, todos envían y reciben información de control y todos calculan, a partir de su RIB (base de información de encaminamiento) sus tablas de encaminamiento. La adaptación a cambios es optima siempre y cuando estos sean notificados. Hay dos familias de procedimientos distribuídos: + Vector de distancias. + Estado de enlaces. 5.2.2.1 Vector de Distancias Cada nodo informa a sus nodos vecinos de todas las distancias conocidas por él, mediante vectores de distancias (de longitud variable según los nodos conocidos). El vector de distancias es un vector de longitud variable que contiene un par (nodo:distancia al nodo) por cada nodo conocido por el nodo que lo envia, por ejemplo (A:0;B:1;D:1) que dice que el nodo que lo manda dista “0″ de A,”1″ de B y “1″ de D, y de los demás no sabe nada (ésta es la forma en la que un nodo dice lo que sabe en cada momento). El nodo solo conoce la distancia a los distintos nodos de la red pero no conoce la topologia. Estos vectores de distancia se envían periódicamente y cada vez que varíe su vector de distancias. Veamos el siguiente ejemplo: El vector de distancias de A sería: Este vector de distancias de A llega al nodo B, el cual lo utiliza para actualizar el suyo: Este VDB pasa al nodo A, el cual actualiza el suyo, etc. Al cabo de un tiempo, se estabiliza la información de cada nodo, es decir, sus vectores de distancia quedan constantes aún sin dejar de enviarse información periódicamente. Con todos los vectores recibidos, cada nodo monta su tabla de encaminamiento ya que al final conoce qué nodo vecino tiene la menor distancia al destino del paquete, pues se lo han dicho con el vector de distancias. El envío de vectores de distancia entre nodos tiene lugar en el plano de control. Si no se sabe a donde enviar un paquete, se descarta. Ventajas del método: * Muy sencillo. * Muy robusto (gracias al envío periódico de información) * Consumo de memoria bajo: cada nodo sólo ha de almacenar distancias con el resto de los nodos.