Sumario ¿Dónde estamos? ¿Qué es routing? Algoritmos de ruteo Flooding Distance Vector Routing Link State Routing Bibliografía: Principal: Computer Networks. Peterson & Davie. 5º edición Complementaria: Computer Networks. Tanenbaum. 4º edición RFC 2453: RIP Version 2 (hasta sección 3.10.2) 1 ¿Dónde estamos? 2 ¿Qué es routing? Una famosa cita del RFC 791: “A name indicates what we seek. An address indicates where it is. A route indicates how we get there.” -- Jon Postel 3 Algoritmos de ruteo Es la parte del software del nivel de red responsable de decidir por cuál línea de salida debe transmitirse un paquete Si la subred usa internamente datagramas, esta decisión debe tomarse para cada paquete que llega, ya que la mejor ruta puede haber cambiado desde la última vez Si usa internamente circuitos virtuales, las decisiones de ruteo son realizadas sólo cuando se crea un nuevo circuito virtual. Luego, todos los paquetes de datos siguen la ruta previamente establecida 4 Routing Forwarding versus Routing – Forwarding: – Consiste en seleccionar un puerto de salida basándose en la dirección destino y en la tabla de ruteo – Routing: – Proceso por el cual se construye la tabla de ruteo 5 Routing • Tabla de forwarding vs tabla de ruteo • Tabla de forwarding • Usada cuando un paquete está siendo forwardeado y debe contener suficiente información para realizar la función de forwarding • Una fila en la tabla de forwarding contiene el mapeo de un número de red a una interface de salida y alguna información de MAC, tal como la dirección Ethernet del next hop • Tabla de ruteo • Construida por el algoritmo de ruteo como paso previo a construir la tabla de forwarding • Generalmente contiene un mapeo de números de red a next hops 6 Routing Ejemplo de tablas de (a) ruteo y (b) forwarding 7 Notación para los ejercicios de forwarding (o ruteo) Next hop es el nombre de la interface del router por la cual puede entregar paquetes a una red destino directamente conectada Next hop es la dirección IP del router al cual reenviar los paquetes a una red destino remota (esto es, no se encuentra directamente conectada al router) 8 Mostrando la tabla de ruteo IP 9 Mostrando la tabla de ruteo IP 10 Mostrando la tabla de ruteo IP 11 El comando show ip route 12 Routing Cuestión clave cada vez que tratamos de construir un mecanismo para Internet: “¿Esta solución es escalable?” La respuesta para los algoritmos y protocolos que estudiaremos es “no mucho”. Fueron diseñados para redes de tamaño modesto -unos pocos cientos de nodosSin embargo, las soluciones que veremos sirven como bloques de construcción para una infraestructura de ruteo jerárquico que es la usada en Internet hoy en día 13 Routing Los protocolos que estudiaremos son conocidos colectivamente como intradomain routing protocols, or interior gateway protocols (IGPs) Dominio de ruteo: es una red en la cual todos los routers se encuentran bajo un mismo control administrativo (ej., una universidad, o la red de un ISP) Para el ruteo entre dominios se utilizan los protocolos conocidos como interdomain routing protocols 14 Routing • La red vista como un grafo • El problema básico del ruteo es encontrar el camino de menor costo entre dos nodos • Donde el costo de un camino es igual a la suma de los costos de todos los arcos que forman el camino 15 Flooding (inundación) Flooding Un nodo envía un paquete por todos sus enlaces Luego el próximo nodo lo envía por todos sus enlaces … excepto por aquél por dónde el paquete ha llegado X A C B D X A C B (a) X A C B (c) D (b) D X A C B D (d) 16 Flooding Genera un gran número de paquetes duplicados, de hecho, un número infinito Solución: Usar un contador de saltos contenido en el header de cada paquete, el cual es decrementado en cada salto. El paquete se descarta cuando el contador llega a cero Idealmente el contador de saltos debería ser inicializado a la longitud de la ruta desde el origen al destino. Si no se conoce esa longitud, se puede inicializar el contador usando el peor caso, o sea el diámetro de la subred 17 Flooding Flooding no es práctico en la mayoría de las aplicaciones, pero tiene algunos usos. Por ejemplo: Aplicaciones militares. La robustez enorme de flooding es altamente deseable Bases de datos distribuidas. A veces es necesario actualizar todas las bases de datos en forma concurrente, en ese caso usar flooding puede ser útil Cómo métrica contra la cual otros algoritmos de ruteo pueden ser comparados. Flooding siempre elige el camino más corto porque elige todos los caminos posibles en paralelo 18 Routing • Para una red simple, podríamos calcular todos los caminos más cortos y cargar la información en algún almacenamiento no vólatil en cada nodo • Tal aproximación estática tiene varios inconvenientes: • No trata con fallas de nodo o de enlaces • No considera el agregado de nodos nuevos • Implica que los costos de los arcos no pueden cambiar • ¿Cuál es la solución? • Necesitamos un protocolo dinámico y distribuido • Dos clases principales de protocolos: • Distance Vector • Link State 19 Distance Vector También es conocido como el algoritmo Bellman-Ford Cada nodo construye un arreglo unidimensional (un vector) que contiene las “distancias” (costos) a todos los otros nodos y distribuye ese vector a sus vecinos inmediatos Supone que cada nodo conoce el costo del enlace a cada uno de sus vecinos directamente conectados 20 Distance Vector Distancias iniciales almacenadas en cada nodo (vista global) 21 Distance Vector Tabla de ruteo inicial del nodo A 22 Distance Vector Cada T segundos cada router envía su tabla a sus vecinos. Cada router entonces actualiza su tabla basándose en la nueva información Problemas: Respuesta rápida a buenas noticias y lenta a malas noticias Utiliza demasiados mensajes de actualización 23 Distance Vector Tabla de ruteo final del nodo A 24 Distance Vector Distancias finales almacenadas en cada nodo (vista global) 25 Distance Vector (a) Una subred (b) Entradas de A, I, H, K, y la nueva tabla de ruteo para J 26 Distance Vector Actualizaciones periódicas: Cada nodo automáticamente envía un mensaje de actualización en forma periódica, aunque nada haya cambiado Permite que el resto de los nodos sepan que está todavía corriendo La frecuencia varía de protocolo a protocolo, típicamente es del orden de varios segundos a varios minutos Triggered updates: Un nodo envía un mensaje de actualización cuando detecta una falla de enlace o recibe una actualización de uno de sus vecinos que causa que cambie una de las rutas de su tabla de ruteo 27 Distance Vector • Cuando un nodo detecta una falla de enlace… F detecta que el enlace a G ha fallado F fija la distancia a G a infinito y envía la actualización a A A fija la distancia a G a infinito puesto que usa F para alcanzar a G A recibe la actualización periódica desde C con un camino de 2 saltos a G A fija la distancia a G a 3 y envía la actualización a F F decide que puede alcanzar a G en 4 saltos via A Convergencia X 28 Distance Vector Algunas circunstancias pueden evitar que la red se estabilice: Supongamos que el enlace de A a E se cae En la próxima ronda de actualizaciones, A anuncia una distancia de infinito a E, pero B y C anuncian una distancia de 2 a E X 29 Distance Vector Dependiendo del timing exacto de los eventos, lo siguiente puede ocurrir: El nodo B, después de escuchar que E puede ser alcanzado en 2 saltos desde C, concluye que puede alcanzar a E en 3 saltos y anuncia esto a A El nodo A concluye que puede alcanzar a E en 4 saltos y anuncia esto a C El nodo C concluye que puede alcanzar a E en 5 saltos; y así sucesivamente Este ciclo se detiene sólo cuando las distancias alcanzan algún número que es lo suficientemente largo para ser considerado infinito Count-to-infinity problem (problema del conteo a infinito) X 30 Problema count-to-infinity Podemos usar algún número relativamente pequeño como una aproximación de infinito. Por ejemplo, el número máximo de saltos para atravesar una cierta red nunca será mayor a 16 Una técnica para mejorar el tiempo para estabilizar el ruteo se llama split horizon Cuando un nodo envía una actualización de enrutamiento a sus vecinos, no envía aquellas rutas que aprendió de cada vecino de nuevo a ese vecino Por ejemplo, si B tiene la ruta (E, 2, A) en su tabla, entonces sabe que ha aprendido esa ruta de A, y así cada vez que B envia una actualización de ruteo a A, no incluye la ruta (E, 2) en dicha actualización X 31 Problema count-to-infinity Una versión más estricta de split horizon, llamada split horizon with poison reverse: B envía la ruta de regreso a A, pero pone información negativa en la ruta para asegurar que A no usará B para llegar a E Por ejemplo, B envía la ruta (E, ∞) to A X 32 Problema count-to-infinity a) A está inicialmente apagado y el resto de los routers lo saben (distancia ∞). Luego, se enciende el nodo A; convergencia b) Todas los enlaces y routers están inicialmente activos. Luego A se apaga, o bien se corta el enlace entre A y B; conteo-a-infinito 33 Routing Information Protocol (RIP) `Ejemplo de una red corriendo RIP Formato de paquete RIPv2 34 RIP Protocolo distance vector Los nodos envían los vectores de distancia cada 30 segundos … o, cuando una actualización de otro router causa que cambie su tabla de ruteo (triggered update) Costo de los enlaces en RIP Todos los enlaces tienen costo 1 Distancias válidas del 1 a 15 … con 16 representando infinito “infinito” pequeño pequeño “counting-to-infinity problem” RIP está limitado a redes bastante pequeñas 35 RIP Soporta múltiples familias de direcciones, no solamente IP (campo Family) RIP versión 2 (RIPv2) introduce las máscaras de subred; RIP versión 1 trabajaba con las viejas direcciones classful de IP RFC 2453 36 Link-State Routing Cada router mantiene un registro de las incidencias de sus enlaces Si el enlace está activo o inactivo El costo del enlace Cada router difunde el estado del enlace Para dar a cada router un visión completa del grafo Cada router corre el algoritmo de Dijkstra Para calcular los caminos más cortos … y construir la tabla de forwarding Ejemplos Open Shortest Path First (OSPF) Intermediate System – Intermediate System (IS-IS) 37 Detectando cambios topológicos Beaconing Periódicos mensajes “hello” en ambas direcciones Se detecta una falla después de algunos “hellos” perdidos “hello” Compromisos de performance Velocidad de detección Overhead del bandwidth del enlace y CPU 38 Link State Routing Estrategia: Enviar a todos los nodos (no solamente a sus vecinos) infomación acerca de sus enlaces directamente conectados Link State Packet (LSP) id del nodo que crea el LSP costo del enlace de cada vecino directamente conectado número de secuencia (SEQNO) time-to-live (TTL) para el paquete Reliable Flooding almacenar LSP más reciente de cada nodo forwardear LSP a todos los nodos excepto al que lo envió generar nuevo LSP periódicamente; incrementar SEQNO comenzar con SEQNO en 0 cuando reboot decrementar TTL de cada LSP almacenado; descartar cuando TTL=0 39 Link State Reliable Flooding Flooding de paquetes link-state (a) LSP llega al nodo X; (b) X floods LSP a A y C; (c) A y C flood LSP a B (pero no a X); (d) flooding completo 40 Link State Reliable flooding Asegurar que todos los nodos reciben la información del estado de los enlaces … y que usen la última versión Desafíos Pérdida de paquetes Llegadas fuera de orden Soluciones Acknowledgments y retransmisiones Números de secuencia Time-to-live para cada paquete 41 Cuándo iniciar el flooding Cambios topológicos Falla de enlace o nodo Recuperación de enlace o nodo Cambio de configuración Cambio del costo del enlace Periódicamente Refrescar la información del estado del enlace Típicamente 30 minutos Corrige posible corrupción de los datos 42 Shortest Path Routing • Cada router corre el algoritmo de Dijkstra Para calcular los caminos más cortos … y construir la tabla de forwarding • En la práctica, cada router computa su tabla de ruteo usando los LSPs que ha recolectado usando una implementación del algoritmo de Dijkstra llamada “forward search algorithm” 43 Escalando Link-State Routing Overhead del ruteo link-state Flooding de paquetes de estado del enlaces por la red Ejecución del algoritmo de Dijkstra Se introduce jerarquía a través de “areas” Area 2 Area 1 Area 0 area border router Area 3 Area 4 44 Resumiendo… La diferencia entre los algoritmos distancevector y link-state puede ser resumida como sigue: En distance-vector, cada nodo habla sólo con sus vecinos directamente conectados, pero les dice todo lo que ha aprendido (i.e., la distancia a todos los nodos) En link-state, cada nodo habla con todos los otros nodos, pero les dice sólo lo que sabe a ciencia cierta (i.e., solamente el estado de sus enlaces directamente conectados) 45 Open Shortest Path First (OSPF) “Open”, se refiere al hecho de que es un estándar abierto, no propietario, creado bajo los auspicios de la Internet Engineering Task Force (IETF) Adiciona un número de características al algoritmo básico de link-state: Autenticación de los mensajes de ruteo Jeraquía adicional (creando áreas) Balance de carga 46 Routing Areas Backbone area (Area 0) Area Border Router (ABR – R1, R2 y R3) Un dominio dividido en áreas 47 OSPF Areas Usando flooding, cada router informa a todos los otros routers en su área acerca de sus vecinos y costos. Esta información permite a cada router construir el grafo para su áreas(s) y computar el camino más corto El área backbone hace esto también. Además, los routers de backbone aceptan información de los routers de borde de área para computar la mejor ruta desde cada router de backbone a cada otro router Esta información se propaga de regreso a los routers de borde, los que la anuncian al interior de sus áreas Usando esta información, un router que quiere enviar un paquete interarea puede seleccionar el mejor router de salida hacia el backbone 48 Routing Areas Por ejemplo, R1 recibe LSAs de los routers del área 1 y puede determinar el costo de alcanzar todas las redes en el area 1 Cuando R1 envía LSAs al área 0, anuncia los costos de alcanzar las redes como si todas esas redes estuvieran directamente conectadas a R1 Esto habilita a los routers del área 0 a aprender el costo de alcanzar las redes en el área 1 El ABR entonces sumariza esta información y la anuncia dentro de las áreas no backbone. Así todos los routers aprenden como alcanzar todas las redes en el dominio 49 La relación entre ASes, backbones y áreas en OSPF 50 Open Shortest Path First (OSPF) Formato cabecera OSPF OSPF Link State Advertisement (LSA) 51 OSPF Todos los mensajes OSPF comienzan con la misma cabecera: Version: actualmente seteado a 2 Type: puede tomar los valores de 1 hasta 5 SourceAddr: identifica el emisor del mensaje AreaId: identificador del área donde está localizado el nodo Checksum: mismo algoritmo que usa la cabecera IP Authentication type: 0, si no se usa autenticación 1, implica que se usa un password simple 2, indica que se usa una autenticación criptográfica 52 OSPF Tipos de mensajes: Tipo 1 es el mensaje “hello”, el cual envía un router a sus peers para notificarles que el está vivo (alive) y conectado Los tipos restantes son usados para requerir, enviar y reconocer la recepción de los mensajes de estado del enlace Link-State Advertisement (LSA). Un mensaje puede contener varios LSAs 53 OSPF LSA Tipo 1 LSAs anuncian el costo de los enlaces entre routers. Tipo 2 LSAs son usados para anunciar las redes a las cuales el router está conectado. Los otros tipos son usados para soportar jerarquía adicional. LS Age: equivalente al time to live (TTL). Type: LSA tipo 1 en este caso. Link state ID: identificador del router que creó este LSA. En general se utiliza alguna dirección IP del router (recordar que un router puede tener diferentes direcciones IP en cada una de sus interfaces). Advertising router: en tipo 1 es idéntico al anterior. LS sequence number: para detectar LSAs viejos o duplicados. LS checksum: para verificar que los datos no se han corrompido. Length: longitud en bytes del LSA. Link ID, Link Data: identifican el enlace. Metric: el costo del enlace. Type: tipo del enlace, por ej. enlace punto-a-punto. TOS: permite a OSPF elegir diferentes rutas para los paquetes IP basado en el valor de su campo TOS. 54 Comparación de LS y DV Routing Complejidad de los mensajes LS: Con n nodos, E enlaces, O(nE) mesajes enviados DV: Intercambio entre vecinos solamente Velocidad de convergencia LS: Relativamente rápida DV: Los tiempos de convergencia varian Puede haber ciclos de ruteo Problema del conteo-ainfinito Robustez: ¿Qué sucede si un router funciona mal? LS: Un nodo puede anunciar un costo de enlace incorrecto Cada nodo calcula solamente su propia tabla DV: Un nodo DV puede anunciar un costo de camino incorrecto La tabla de cada nodo es usada por otros (se propaga el error) 55 Métricas Hemos asumido que los costos de los enlaces, o métricas, son conocidos cuando se ejecuta el algoritmo de ruteo ¿Cómo podemos calcular los costos de los enlaces de manera efectiva? Una manera simple y razonable es asignar costo 1 a todos los enlaces (ej. RIP) Desventajas: no considera… Latencia del enlace Ancho de banda del enlace Carga actual del enlace 56 Métricas La métrica de ruteo original de ARPANET usaba el número de paquetes que estaban esperando en la cola de cada enlace para ser transmitidos Por ejemplo, a un enlace con 10 paquetes encolados esperando para ser transmitidos se le asigna un costo más alto que a un enlace con 5 paquetes encolados Desventajas: no considera… Ancho de banda del enlace Latencia del enlace 57 Métricas Una segunda versión del algoritmo de ruteo de ARPANET,tomó en consideración tanto el ancho de banda como la latencia del enlace y usó el delay, en lugar de la longitud de la cola, como medida de la carga Algunos problemas: Con alta carga, los enlaces congestionados comienzan a anunciar un costo muy alto. Todo el tráfico se mueve a otro enlace dejándolo idle de manera que empieza a anunciar un costo bajo y atrae nuevamente el tráfico, etc. El rango de valores posibles de los enlaces era demasiado grande y disperso 58 Métricas Generalmente se sostiene que el cambio dinámico de métricas es demasiado inestable y las redes de hoy en día carecen de la gran disparidad de velocidades de enlace y latencias que prevalecieron en ARPANET En la mayoría de las implementaciones de red del mundo real las métricas cambian muy raramente y, en general, bajo control del administrador de red Las métricas estáticas son la norma Una aproximación bastante común es usar una constante multiplicada por (1/ancho_de_banda_del_enlace) 59 Conclusiones Routing es un algoritmo distribuido Reacciona ante cambios en la topología Computa los caminos en una red Distance-vector routing Calcula los costos de los caminos basándose en los costos de los caminos de los vecinos Algoritmo Bellman-Ford & Routing Information Protocol Link state routing Inunda los costos de los enlaces en la red Calcula los caminos más cortos como la suma del costo de los enlaces Proceso de convergencia Ante cambios de una topología a otra Períodos transitorios de inconsistencia entre los routers 60 LS y DV Routing LS y DV routing Basados en métricas, usando los costos de los enlaces Los routers comparten una visión común de cuán buena es una ruta Son comúnmente usados dentro de una organización RIP y OSPF son generalmente usados como protocolos intradominios Pero Internet es una “red de redes” ¿Cómo “pegar” todas esas redes juntas? Cuando las redes pueden no tener objetivos comunes … y pueden no querer compartir información 61 BGP: Global Internet Un service provider de Internet 62 Interdomain Routing (BGP) Internet está organizada como un conjunto de sistemas autónomos (AS) cada uno de los cuales se encuentra bajo control de una única entidad administrativa Autonomous System (AS) Corresponde a un dominio administrativo Ejemplos: universidad, compañia, backbone network La red interna de una corporación puede ser un único AS, como lo puede ser la red de un único proveedor de servicios de Internet (ISP) 63 Interdomain Routing (BGP) Una red con dos sistemas autónomos 64 Propagación de rutas Idea: Mejorar la escalabilidad Divide el problema de ruteo en dos partes: Rutear dentro de un único sistema autónomo Rutear entre sistemas autónomos Otro nombre para los sistemas autónomos en Internet es dominios de ruteo Dos niveles para la jerarquía de propagación de rutas Protocolo de ruteo inter-dominio (estándar de Internet) Protocolo de ruteo intra-dominio (cada AS selecciona el propio) 65 Conceptos básicos de BGP Los pares de routers BGP se comunican entre sí estableciendo conexiones TCP BGP es fundamentalmente un protocolo distance vector, pero algo diferente de otros tales como RIP En lugar de manterner sólo el costo a cada destino, cada router BGP guarda información del camino utilizado Del mismo modo, en lugar de informar periódicamente a cada vecino su costo estimado para cada destino posible, cada router BGP anuncia a sus vecinos la ruta exacta que está utilizando. 66 Conceptos básicos de BGP Ruta: F D (a) Un conjunto de routers BGP (b) Información enviada a F 67 Conceptos básicos de BGP BGP resuelve fácilmente el problema de conteo-a-infinito que ocurre en otros algoritmos de ruteo distance vector. Por ejemplo, supongamos que la línea FG se cae. F recibe entonces rutas de sus tres vecinos restantes (B, E, I) Esas rutas son BCD, IFGCD y EFGCD F puede ver inmediatamente que las dos últimas rutas son inútiles, ya que pasan a través de sí mismo. F elige entoces FBCD como su nueva ruta a D X 68 Algunas herramientas Public Route Servers and Looking Glass sites: http://www.netdigix.com/servers.html Videotron route server (AS5769) ARIN https://www.arin.net http://whois.arin.net/ui/advanced.jsp LACNIC http://www.lacnic.net http://lacnic.net/cgi-bin/lacnic/whois?lg=SP 69