Protocolos de Ruteo

Anuncio
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
Descargar