11.07.2015 Views

Tema 3 – Algoritmos de encaminamiento

Tema 3 – Algoritmos de encaminamiento

Tema 3 – Algoritmos de encaminamiento

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!