Tema 3 – Algoritmos de encaminamiento
Tema 3 – Algoritmos de encaminamiento
Tema 3 – Algoritmos de encaminamiento
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Elementos y clasificación• Métricas <strong>de</strong> rendimiento# <strong>de</strong> saltosCosteRetardoRendimiento (throughput)• Fuentes <strong>de</strong> informaciónLocalNodo contiguo (vecino)Nodos <strong>de</strong> la rutaTodos los nodos• DinamismoEstáticosDinámicos o adaptativos• Momento <strong>de</strong> la <strong>de</strong>cisiónPaquete (modo datagrama)Establecimiento sesión (modocircuito virtual)• Lugar <strong>de</strong> la <strong>de</strong>cisiónCada nodoNodo centralNodo origen/fuente• Actualización <strong>de</strong> la informaciónContinuoPeriódicoCambio en la cargaCambio topológicoRamón Agüero Calvo5
ContenidosRe<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>• Introducción• Teoría <strong>de</strong> grafos• <strong>Algoritmos</strong> <strong>de</strong> búsqueda <strong>de</strong> camino más corto• Otros algoritmos en grafos• Del algoritmo al protocoloRamón Agüero Calvo9
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Representación <strong>de</strong> grafos• Lista adyacenciaConsta <strong>de</strong> un array <strong>de</strong> N listas (unapor nodo <strong>de</strong> la red) con punteros acada nodo con el que tenga unenlaceMemoria necesariaVentajasEn un grafo dirigido la suma <strong>de</strong>punteros coinci<strong>de</strong> con |E|En un grafo no dirigido será 2 |E|Se pue<strong>de</strong>n asignar costes a losenlaces <strong>de</strong> manera sencillaRequiere una cantidad menor <strong>de</strong>memoria, apropiada para grafossin muchos enlaces (sparse)DesventajasEl proceso <strong>de</strong> búsqueda pue<strong>de</strong>ser lento• Matriz <strong>de</strong> adyacenciaMatriz <strong>de</strong> dimensión N x N1 si (i, j) a ij 0 si (i, j) Con grafos no dirigidos, A essimétrica: A T = AEl tamaño <strong>de</strong> A es, para cualquierred, N 2VentajasLa búsqueda es muy rápidaSi no se necesitan costes, sepue<strong>de</strong> usar un sólo bit para cadaelemento <strong>de</strong> la matrizDesventajasSuele requerir mayor memoria, seusa en grafos más pequeñosSi se requieren costes, se necesitamayor capacidad por enlaceRamón Agüero Calvo13
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Representación <strong>de</strong> grafos• Lista <strong>de</strong> adyacencia1 → 2 → 3 → 42 → 1 → 3 → 43 → 1 → 2 → 4 → 54 → 1 → 2 → 3 → 5 → 65 → 3 → 4 → 66 → 4 → 5• Grafo no dirigidoEl número <strong>de</strong> enlaces en la lista <strong>de</strong>adyacencia es 2 |E|La matriz <strong>de</strong> adyacencia es simétrica• Matriz <strong>de</strong> adyacencia01 1 11 0 1 1 11 0 111 1 000 1 100 0 1001101000110Ramón Agüero Calvo14
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Representación <strong>de</strong> grafos• Lista <strong>de</strong> adyacencia1 → 2 → 3 → 42 → 3 → 43 → 2 → 4 → 54 → 5 → 65 → 66• Grafo dirigidoEl número <strong>de</strong> enlaces en la lista <strong>de</strong>adyacencia es |E|La matriz <strong>de</strong> adyacencia no es simétrica• Matriz <strong>de</strong> adyacencia000 000101000110000111000001100000110Ramón Agüero Calvo15
ContenidosRe<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>• Introducción• Teoría <strong>de</strong> grafos• <strong>Algoritmos</strong> <strong>de</strong> búsqueda <strong>de</strong> camino más corto• Otros algoritmos en grafos• Del algoritmo al protocoloRamón Agüero Calvo16
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Búsqueda <strong>de</strong>l camino más corto• La i<strong>de</strong>a principal es la <strong>de</strong> encontrar el camino con un coste mínimo entreuna fuente (S) y un <strong>de</strong>stino (D)• Si c(u,v) se mantiene constante para todos los enlaces, la solución es la ruta<strong>de</strong> menor número <strong>de</strong> saltos• <strong>Algoritmos</strong> con una única fuente: encuentran el camino más corto entre S yel resto <strong>de</strong> nodos Dijkstra Bellman-Ford• <strong>Algoritmos</strong> para toda la red: encuentran el camino más corto entre todas lasposibles parejas <strong>de</strong> nodos en la red Floyd-Warshall JohnsonRamón Agüero Calvo17
Coste <strong>de</strong> una ruta• Métricas aditivas: distancia, tiempo <strong>de</strong> transferencia, etc Coste camino = c(l 1 ) + c(l 2 ) + c(l 3 )Interesa minimizar el coste total• Métricas multiplicativas: probabilidad <strong>de</strong> no fallo, fiabilidad Coste camino = f(l 1 ) · f(l 2 ) · f(l 3 )Interesa maximizar el coste total• Métricas cuello <strong>de</strong> botella: capacidad Coste camino = min { C(l 1 ), C(l 2 ), C(l 3 ) }Interesa maximizar el coste totalRe<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Ramón Agüero Calvo18
Algoritmo <strong>de</strong> DijkstraRe<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>• Encuentra el camino <strong>de</strong> coste mínimo <strong>de</strong> una fuente S a todos los nodos enun grafo con costes NO NEGATIVOS• Definiciones previasCoste caminockpcu, u i1i1iCoste camino mínimoδ mincpu,v :pu vsi hay caminoentre u y ven caso contrarioRamón Agüero Calvo19
• VariablesAlgoritmo <strong>de</strong> DijkstraRe<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Conjunto <strong>de</strong> nodos Q para los que no se ha encontrado el camino más cortoSe mantiene una lista con las distancias a cada nodo d(u)• AlgoritmoSe busca en Q el nodo cuyo camino <strong>de</strong> coste mínimo sea el menormind u u se borra <strong>de</strong> QuN Q duδS,uSi Q es el conjunto vacío (Q=), se termina el algoritmo v QdvPara todos los nodos v <strong>de</strong> Q adyacentes a udv mindv,ducu,vRamón Agüero Calvo20
Algoritmo <strong>de</strong> DijkstraRe<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>INITIALIZATION1. d(S) = 02. for all v in N but S3. d(v) = ∞4. Q = NMAIN LOOP5. while Q ≠ {Ø}6. u vertex in Q with min{d(v)}7. <strong>de</strong>lete u from Q8. for all v in Q adjacent to u9. if d(v) > d(u) + c(u,v)10. d(v) = d(u) + c(u,v)11. prev(v) = uRamón Agüero Calvo21
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Ejemplo algoritmo <strong>de</strong> DijkstraInicializaciónQ = {S, 1, 2, 3, 4}d = [0, ∞, ∞, ∞, ∞]Primera iteraciónQ = {1, 2, 3, 4}d = [0, 10, 5, ∞, ∞]Ramón Agüero Calvo22
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Ejemplo algoritmo <strong>de</strong> DijkstraSegunda iteraciónQ = {1, 3, 4}d = [0, 8, 5, 14, 7]Tercera iteraciónQ = {1, 3}d = [0, 8, 5, 13, 7]Ramón Agüero Calvo23
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Ejemplo algoritmo <strong>de</strong> DijkstraCuarta iteraciónQ = {3}d = [0, 8, 5, 9, 7]Quinta iteraciónQ = {Ø}d = [0, 8, 5, 9, 7]Ramón Agüero Calvo24
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Algoritmo <strong>de</strong> Bellman-Ford• Al igual que Dijkstra, encuentra el camino más corto <strong>de</strong> un nodo al resto• Pue<strong>de</strong> emplearse con re<strong>de</strong>s que tengan enlaces con coste negativo• Si hay un ciclo negativo en la fuente, Bellman-Ford lo <strong>de</strong>tectaEn este caso el camino <strong>de</strong> coste mínimo NO pue<strong>de</strong> solucionarse• VariablesUna lista con los costes <strong>de</strong> las rutas <strong>de</strong> S a cualquier nodo d(u)• AlgoritmoSe recorre el grafo N -1 veces y se aplica la ecuación <strong>de</strong> Bellman para losenlaces <strong>de</strong>l grafodv mindv,ducu,vRamón Agüero Calvo25
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Algoritmo <strong>de</strong> Bellman-FordINITIALIZATION1. d(S) = 02. for all v in N but S3. d(v) = ∞MAIN LOOP4. for k = 1 to N-15. for each (u,v) in E6. if d(v) > d(u) + c(u,v)7. d(v) = d(u)+c(u,v)8. prev(v) = uRamón Agüero Calvo26
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Ejemplo algoritmo <strong>de</strong> Bellman-FordInicializaciónd = [0, ∞, ∞, ∞, ∞]Primera iteraciónd = [0, 10, 5, ∞, ∞]Ramón Agüero Calvo27
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Ejemplo algoritmo <strong>de</strong> Bellman-FordSegunda iteraciónd = [0, 8, 5, 11, 7]Tercera iteraciónd = [0, 8, 5, 9, 7]Ramón Agüero Calvo28
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Algoritmo <strong>de</strong> Floyd Warshall• Se <strong>de</strong>fine d k [i,j] como el coste <strong>de</strong>l camino más corto entre i y j con lacondición <strong>de</strong> que use únicamente los nodos 1, 2, … k‐1 como nodosintermedios• Así, d N+1 [i,j] representa la distancia <strong>de</strong>l camino más corto entre i y j• El algoritmo <strong>de</strong> Floyd Warshall establece iterativamente d k [i,j] para todaslas parejas <strong>de</strong> nodos (i,j) para k = 1, 2, … N+1• A partir <strong>de</strong> d k [i,j], el algoritmo calcula d k+1 [i,j] a partir <strong>de</strong> la siguientepropiedaddk1 ik kjk k ki, j min d i, j ,d , d ,Ramón Agüero Calvo29
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Algoritmo <strong>de</strong> Floyd WarshallINITIALIZATION1. for all (u,v) in NxN2. d(u,v) = ∞3. pred(u,v) = NIL4. for all no<strong>de</strong>s u in N5. d(u,u) = 06. for each (u,v) in E7. d(u,v) = c(u,v)8. pred(u,v) = uMAIN LOOP9. for k = 1 to N10. for u = 1 to N11. for v = 1 to N12. if d(u,v) > d(u,k) + d(k,v)13. d(u,v) = d(u,k) + d(k,v)14. pred(u,v) = pred(k,v)Ramón Agüero Calvo30
31Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Ramón Agüero CalvoEjemplo algoritmo <strong>de</strong> Floyd Warshall 09204101800D nilnilnilnilnilnilnilnilnilnil4432110 032501241019802D nilnilnilnilnilnilnil241132121209250124101801Dnilnilnilnilnilnilnilnil441132111
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Ejemplo algoritmo <strong>de</strong> Floyd Warshall3D05 4780122910316503nil 3 3 31nil1422nil21 1 1 nil 4D05 473072410316504nil 3 3 34nil4422nil21 1 1 nil Ramón Agüero Calvo32
ContenidosRe<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>• Introducción• Teoría <strong>de</strong> grafos• <strong>Algoritmos</strong> <strong>de</strong> búsqueda <strong>de</strong> camino más corto• Otros algoritmos en grafos• Del algoritmo al protocoloRamón Agüero Calvo33
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Minimum Spanning Tree• Tree (árbol): es un grafo G, no dirigido, conectado y sin ciclos El número <strong>de</strong> enlaces es igual al número <strong>de</strong> nodos menos 1: |E| = |N| -1Cualquier par <strong>de</strong> nodos están unidos por un único caminoG está conectado, pero al eliminar cualquier enlace <strong>de</strong>jaría <strong>de</strong> estarloG no tiene ciclos, pero al añadir un enlace cualquiera aparecería un cicloNo es un árbol Sí es un árbol Sí es un árbol• Un Spanning Tree cubre (se expan<strong>de</strong> por) todos los nodos <strong>de</strong> un grafo QEntre los diferentes Spanning Tree <strong>de</strong> un grafo Q el Minimum Spanning Tree(MST) es aquel que tiene un menor costeRamón Agüero Calvo34
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Minimum Spanning Tree• Aplicaciones: el MST cubre todos los nodos <strong>de</strong> una redProcesos <strong>de</strong> difusión (broadcast) <strong>de</strong> información Un mensaje para ser enviado a todos los nodos <strong>de</strong> la redGran uso en Re<strong>de</strong>s <strong>de</strong> Área Local: bridges (IEEE 802.1D)• <strong>Algoritmos</strong> Se emplea para eliminar enlaces no necesariosKruksalPrimRamón Agüero Calvo35
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>MST: Algoritmo <strong>de</strong> Kruksal• Construye el MST incorporando paulatinamente enlaces que unan doscomponentes diferentes (dos subgrafos no conectados entre sí) Se pue<strong>de</strong> ver como un proceso <strong>de</strong> búsqueda <strong>de</strong> componentes conectados en unared• Va recorriendo los enlaces (u,v) <strong>de</strong> E en or<strong>de</strong>n creciente (por su coste)Aña<strong>de</strong> el enlace actual (u,v) a un subgrafo A si u y v pertenecen a árbolesdistintos• VariablesSiempre se aña<strong>de</strong> aquel que tenga un menor costeA: Conjunto <strong>de</strong> enlaces que forman el MSTL: lista con los enlaces <strong>de</strong> G, or<strong>de</strong>nados según su coste, en or<strong>de</strong>n creciente• Al recorrer todos los enlaces A contendrá el MST <strong>de</strong> GRamón Agüero Calvo36
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>MST: Algoritmo <strong>de</strong> KruksalINITIALIZATION1. A = {Ø}2. L = E3. sort(L)MAIN LOOP4. for all (u,v) in L (in or<strong>de</strong>r)5. if u & v belong to same tree6. discard (u,v)7. else8. A = A U (u,v)Ramón Agüero Calvo37
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>MST: Ejemplo algoritmo <strong>de</strong> KruksalGrafo original Iteración 1Iteración 2 Iteración 3Ramón Agüero Calvo38
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>MST: Ejemplo algoritmo <strong>de</strong> KruksalIteración 4 Iteración 52 8 3744291115414987 61061 7 3 8Iteración 6 Iteración 7Ramón Agüero Calvo39
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>MST: Ejemplo algoritmo <strong>de</strong> KruksalIteración 8 Iteración 9Iteración 10 Iteración 11Ramón Agüero Calvo40
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>MST: Ejemplo algoritmo <strong>de</strong> KruksalIteración 12 Iteración 13Iteración 14Ramón Agüero Calvo41
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>MST: Algoritmo <strong>de</strong> Prim• Opera <strong>de</strong> manera similar al algoritmo <strong>de</strong> Dijkstra• Comienza con un nodo arbitrario (R), al que paulatinamente se aña<strong>de</strong>nenlaces, hasta que se cubren todos los nodos• VariablesConjunto <strong>de</strong> nodos Q que quedan por incorporar al MSTSe mantiene una lista con el ‘peso’ <strong>de</strong> cada nodoRamón Agüero Calvo42
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>MST: Algoritmo <strong>de</strong> PrimINITIALIZATION1. Q = N; Randomly select R2. k(R) = 03. for all v in N but R4. k(v) = ∞MAIN LOOP5. while Q ≠ {Ø}6. u vertex in Q with min{k(v)}7. <strong>de</strong>lete u from Q8. for all v adjacent to u AND v in Q9. if k(v) > c(u,v)10. k(v) = c(u,v)11. prev(v) = uRamón Agüero Calvo43
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>MST: Ejemplo algoritmo <strong>de</strong> PrimGrafo originalIteración 1Q = {2,3,4,5,6,7,8,9}k = {0,4,∞,∞,∞,8,∞,∞,∞}82 3744291115414987 61061 7 3 8Iteración 2Q = {3,4,5,6,7,8,9}k = {0, 4,8,∞,∞,8,∞,∞,∞}Iteración 3Q = {4,5,6,7,8,9}k = {0, 4,8,7,2,8,∞,4,∞}Ramón Agüero Calvo44
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>MST: Ejemplo algoritmo <strong>de</strong> Prim82 3744291115414987 61061 7 3 8Iteración 4Q = {4,6,7,8,9}k = {0,4,8,7,2,7,6,4,∞}Iteración 5Q = {4,6,7,9}k = {0,4,8,7,2,7,3,4,10}82 3744291115414987 61061 37 8Iteración 6Q = {4,6,9}k = {0,4,8,7,2,1,3,4,10}Iteración 7Q = {4,9}k = {0,4,8,7,2,1,3,4,10}Ramón Agüero Calvo45
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>MST: Ejemplo algoritmo <strong>de</strong> PrimIteración 8Q = {9}k = {0,4,8,7,2,1,3,4,9}Iteración 9Q = {Ø}k = {0,4,8,7,2,1,3,4,9}Ramón Agüero Calvo46
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Problema <strong>de</strong> máximo flujo• Se trata <strong>de</strong> maximizar el flujo que se pue<strong>de</strong> “enviar” entre S y D• Cada enlace tiene una capacidad p(u,v) NO NEGATIVA• Por un enlace (u,v) se tiene un flujo f(u,v) • Conservación <strong>de</strong> flujo• Simetría fu,v‐f v,ufu,v S,Du,v 0fu,v pu,vRamón Agüero Calvo47
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Problema <strong>de</strong> máximo flujo10,1010,1010,101101101Flujo = 10Flujo = 11 Flujo = 12(No es obvio)Ramón Agüero Calvo48
• Red residualRe<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Máximo flujo: conceptos previosEnlaces que pue<strong>de</strong>n admitir más flujo• Capacidad residualLa capacidad que queda disponible en un enlace• Augmenting Pathu,v pu,v‐f u,vEs un camino entre S y D en el grafo con capacida<strong>de</strong>s residualesLa red residual pue<strong>de</strong> tener enlaces nuevosSu capacidad residual es la menor <strong>de</strong> sus enlacesp fRamón Agüero Calvo49
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Máximo flujo: Algoritmo Ford-Fulkerson• El algoritmo Ford-Fulkerson resuelve el problema <strong>de</strong>l máximo flujo• En cada iteraciónEncuentra un augmenting path PIncrementa el flujo entre S y D con la capacidad residual <strong>de</strong> PRamón Agüero Calvo50
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Máximo flujo: Algoritmo Ford-FulkersonINITIALIZATION1. for all (u,v) in E2. f(u,v) = 03. f(v,u) = 0MAIN LOOP4. while there exists a path p from Sto D in the residual network Gf5. cf(p) = min{cf(u,v):(u,v) in p}6. for each (u,v) in p7. f(u,v) = f(u,v) + cf(p)8. f(v,u) = -f(u,v)Ramón Agüero Calvo51
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Ejemplo algoritmo Ford-FulkersonP = {(S,1) (1,2) (2,3) (3,4) (4,D)}cf(P) = 4Flujo = 4P = {(S,1) (1,3) (3,4) (4,2) (2,D)}cf(P) = 7Flujo = 11Ramón Agüero Calvo52
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Ejemplo algoritmo Ford-FulkersonP = {(S,3) (3,1) (1,2) (2,D)}cf(P) = 8121 25113S 541158331174 = {(S,3) (3,2) (2,D)}cf(P) = 45154DFlujo = 19Flujo = 23Ramón Agüero Calvo53
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Ejemplo algoritmo Ford-Fulkerson• Como ya no existe un “augmenting path” en la red residual el algoritmo seda por finalizado• La eficiencia <strong>de</strong>l algoritmo <strong>de</strong>pen<strong>de</strong> <strong>de</strong> la manera en la que se “busca” elaugmenting path en cada iteraciónPodría incluso no convergerFlujo = 23Ramón Agüero Calvo54
ContenidosRe<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>• Introducción• Teoría <strong>de</strong> grafos• <strong>Algoritmos</strong> <strong>de</strong> búsqueda <strong>de</strong> camino más corto• Otros algoritmos en grafos• Del algoritmo al protocoloRamón Agüero Calvo55
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Encaminamiento en re<strong>de</strong>s• Los nodos (routers) toman <strong>de</strong>cisiones en base a cierta información• Es necesario disponer <strong>de</strong> un protocolo <strong>de</strong> señalizaciónProporciona un método para transportar dicha información por la red• Protocolos <strong>de</strong> <strong>encaminamiento</strong>Vector distancia (Distance vector, DV) <strong>–</strong> usado en la 1ª generación ARPANETEstado <strong>de</strong>l enlace (Link state, LS) <strong>–</strong> usado en la 2ª generación ARPANET• Jerarquía en la redEscalabilidadAutonomía administración <strong>de</strong> la redSistemas Autónomos (Autonomous Systems, AS)Encaminamiento Intra-AS: <strong>de</strong>ntro <strong>de</strong> un AS Inter-AS: entre varios ASRamón Agüero Calvo56
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Encaminamiento vector distancia• Se basa en el algoritmo <strong>de</strong> Bellman-Ford• Cada nodo <strong>de</strong> la red mantiene una tabla: una entrada por cada uno <strong>de</strong>lresto <strong>de</strong> nodos Distancia: “métrica o coste” <strong>de</strong>l camino hacia dicho nodo Interfaz <strong>de</strong> salida necesaria para alcanzarle• Periódicamente cada nodo intercambia la información <strong>de</strong> la tabla con susvecinos• ProblemasConvergencia lentaPropagación rápida <strong>de</strong> “buenas noticias” y lenta <strong>de</strong> las “malas”Count-to-infinity• Protocolo RIP (Routing Information Protocol) Definido en los RFC 1058 y 2453 (RIP Version 2)Es un protocolo Intra-AS que, a pesar <strong>de</strong> que se sigue empleando, es obsoletoRamón Agüero Calvo57
DV: Count-to-infinityRe<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>• El enlace XY cambia a 1• El enlace XY cambia a 60[t0] Y <strong>de</strong>tecta el cambio[t1] Z modifica su tabla[t2] Y recibe la actualización <strong>de</strong> Z, perono necesita hacer ningún cambioD Y (X) D Z (X)t0 1 5t1 1 2t2 1 2[t0] Y <strong>de</strong>tecta el cambio, pero actualiza a6 (cree que pue<strong>de</strong> ir a través <strong>de</strong> Z) [t1] Z modifica su tabla a 7 (6+1)[t2] Y recibe la actualización <strong>de</strong> Z, ycambia su información a 8…Son necesarias 44 iteracionesD Y (X) D Z (X)t0 6 5t1 6 7t2 8 7t3 8 9Ramón Agüero Calvo58
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Encaminamiento estado <strong>de</strong> enlace• Sustituye paulatinamente a DV a partir <strong>de</strong> 1980• Se pue<strong>de</strong>n establecer cinco elementos diferenciadosDescubrimiento <strong>de</strong> vecinos: uso <strong>de</strong> paquetes HELLOEstimación <strong>de</strong>l coste con los vecinos Por ejemplo, en base al retardo con cada uno <strong>de</strong> ellos: paquetes ECHOConstrucción <strong>de</strong> un paquete con la información correspondiente ¿Cuándo se tiene que construir dicho paquete?Envío <strong>de</strong>l paquete al resto <strong>de</strong> nodos (routers) Difusión [broadcast] <strong>de</strong> información: inundaciónCálculo <strong>de</strong> la ruta Uso <strong>de</strong>l algoritmo <strong>de</strong> Dijkstra <strong>–</strong> necesidad <strong>de</strong> disponer <strong>de</strong> información globalRamón Agüero Calvo59
• DesventajasRe<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Encaminamiento estado <strong>de</strong> enlaceNecesidad <strong>de</strong> información globalEnvío <strong>de</strong> un número mayor <strong>de</strong> mensajes: SOBRECARGA Un evento <strong>de</strong> “cambio” en la topología <strong>de</strong> la red se tiene que notificar a todos los nodos• Protocolo OSPF (Open Shortest Path First) Está <strong>de</strong>finido (en su segunda versión) en el RFC 2328Es un protocolo Intra-ASRamón Agüero Calvo60
Re<strong>de</strong>s <strong>–</strong> <strong>Tema</strong> 3: <strong>Algoritmos</strong> <strong>de</strong> <strong>encaminamiento</strong>Encaminamiento jerárquico• Los sistemas autónomos se comunican entre ellos a través <strong>de</strong> nodos<strong>de</strong>nominados GatewayUn AS pue<strong>de</strong> tener más <strong>de</strong> un Gateway• Actualmente el <strong>encaminamiento</strong> entre AS es soportado por el protocoloBGP (Bor<strong>de</strong>r Gateway Protocol) Está <strong>de</strong>finido (en su versión 4) en el RFC 4271 Es el protocolo <strong>de</strong> <strong>encaminamiento</strong> en el core <strong>de</strong> Internet, y es utilizado por losproveedores <strong>de</strong> servicios (ISP)• Funcionamiento básico <strong>de</strong> BGPSe basa en un <strong>encaminamiento</strong> basado en el estado <strong>de</strong>l camino (path state)Cada Gateway obtiene la “alcanzabilidad” <strong>de</strong> los AS vecinosPropaga dicha información a los routers <strong>de</strong> su ASDetermina las rutas “óptimas” en función <strong>de</strong> la información adquirida y <strong>de</strong> laspolíticas y reglas establecidasRamón Agüero Calvo61