You are on page 1of 4
Capitlo 4 Acomade de rode 2) congestionado, um algoritmo de roteamento tender a escolher rotas que evitem esse enlace congestionado. Embora antigos algoritmos da ARPAnet fossem sensiveis d carga (McQuillan, 1980], foram encontradas varias Aificuldades [Huitema, 1998}. Os algoritmas de roteamento utilizados na Internet hoje (como RIP, OSPF BGP) sao insensiveis a carga, pois o custo de um enlace nao reflete expl nivel de congestionamento corrente (nem o de congestionamento mais recente). 4.5.1 0 algoritmo de roleamento de estado de enlace (LS) Lembre-se de que em um algoritmo de estado de enlace a topologia da rede ¢ todos os custos de enlace sto conhecidos, isto €, estao disponiveis como dados para o algoritmo de estado de enlace. Na pritica, isso se con- segue fazendlo com que cada né transmita pacotes de estado de enlace a todos os outros nés da rede, sendio que cada um desses pacotes contém as identidades e os eustos dos enlaces ligados a ele. Na pritica (por exemplo, com 0 protocolo de roteamento OSPF da Internet, discutido na Secio 4.6.1) isso frequentemente € conseguido com um algoritmo de transmissao broadcast de estado de enlace [Perlman, 1999], Algoritmos de transmissa0 broadcast serao estudados na Secio 4.7. © resultado da transmissio broadcast dos nés é que todos os nés tem uma visto idéntica e completa da rede. Cada né pode, entio, rodar o algoritmo de estado de enlace e calcular 0 mesmo conjunto de caminhos de menor custo come todos 5 outros nds, © algoritmo de roteamento de estado de enlace que apresentamos adiante € conhecido como algoritmo de Dijkstra, o nome de seu inventor. Um algoritmo que guarda relagdes muito proximas com ele ¢ o algoritmo de Prim, Consulte [Cormen, 2001] para uma discussio geral sobre algoritmos de grafo. © algoritmo de Dijkstra calcula 6 caminho de menor custo entre um n6 (a fonte, que chanaremos de «) ¢ todos os outros nds da rede. E um algoritmo iterative ¢ tem a propriedade de, apos a k-ésima iteracio, conhecer os caminhos de menor custo para k nés de destino e, dentre os eaminhos de menor custo até todos os nés de destino, esses k caminhos terio ‘65 k menores custos. Vamos definir a seguinie notagao: WH DG): custo do caminho de menor custo entre 0 né da fonte ¢ o destino v até essa iteracto do algo- ritmo TP): n6 anterior (vizinho de v) a0 longo do caminho de menor eusto corrente desde a fonte até v. GEN‘: subconjunto de nés; v pertence a N' se o caminho de menor custo entre a fonte e v for inequivoca- ‘mente conhecido. CO algoritmo de roteamento global consiste em uma etapa de inicializagao seguica de um loop. © mimero de vyezes que 0 loop € rodado ¢ igual ao numero de nés na rede. Ao terminar, 0 algoritmo tera calculado os caminhos mais curtos desce 0 né da fonte u até todos os outros nés da rede, Algoritmo de estado de enlace para o né da fonte uv 1 Inictalizagao: 2 N= 3 para todos os nds ¥ 4 se v for um vizinho de u 5 entao Div)= clu,v) 6 seno Diy) = © 7 8 Loop 9 encontre w nao em N", tal que D(w) é um minimo 10 adictone w aN" uu atualize D(v) para cada vizinho v de we nao em N° 12 Diy) = mim DEV, Dlw) * ctW.¥) D 13 /*0 novo custo para y 6 0 velho custo para v 14 ou © custo do menor caminho conhecide para w mais o custo de w para v */ 15 até N= N (PZB) tudes de computadores oo Interset Como exemplo, vamos considerar a rede da Figura 4.27 ¢ calcular os caminhos de menor custo de u até todos 0s destinos possiveis. Os eileulos do algoritme estao ilustrados na Tabela 4.3, na qual cada linha fornece os valores as variéyeis do algoritmo ao final da iteragao. Yamos considerar detalhadamente alguns dos primeitos estigios: GI No estgio de inicializagio, os caminhos de menor custo correntemente conhecidos de w até os vizinhos diretamente ligados a ele (», w ex) sao inicializados para 2, 1 e 5, respectivamente, Note, em particular, que 0 custo até w ¢ estabelecido em 5 (embora logo veremos que, na realidade, existe um trajeto cujo custo ¢ ainda menor), ja que este é 0 custo do enlace (um salto) direto w a w. Os custos até y € sto estabelecides como infinito, porque eles nio estio diretamente conectados a u WH Na primeira iteracdo, examinamos os nds que ainda nao foram adicionades ao conjunto N’ ¢ desco- brimos 0 no de menor custo ao final da iteracio anterior. Este € 6 nd x, com um custo de 1, e, assim, x € adicionado ao conjanto N’, A linha 12 do algoritmo de vetor de distancias (LS) ¢ entio redada para atualizar DC.) para todos os nds ¥, produzindo os resultados mnostrados na segunda linha (Etapa 1) da Tabela 4.3. O custo do caminho até y nto muda. Descobritemas que o custo do camino até w através do 6.x (que era 5 ao final da inicializacto), € 4, Por conseguince, esse caminho de custo mais baixo & selecionado e 0 predecessor de w a0 longo do caminho mais curto a partir de u é definido como x. De maneira semelhante, o custo até y (através de») € computado como 2 € a tabela € atualizada de acordo com isso. GE] Ns segunda iteracio, verificamos que os n6s v € y so os que tém os caminhos de menor custo (2); decidimos o empate arbitrariamente ¢ adicionamos y ao conjunto N’ de modo que N’ agora contém u, xe y. O custo dos nés remanescentes que ainda nao esto em N’ (isto 6, nés v, w € 2) sto atualizados pela linha 12 do algoritmo LS, produzindo os resultados mostracos na terceira linha da Tabela 4.3. ME assim por diante... Quando o algoritmo 15 termina, temos, para cada n6, seu predecessor ao longo do caminho de menor custo a partir do né da fonte. Temos também o predecessor para cada um desses predecessores; desse modo, podemos construir 0 caminho inteiro desde a fonte até todos os destinos, Entao, a tabela de repasse em um no, por exem- plo, u, pode ser construtda a partir dessas informacoes, armazenando, para cada destino, o nd do salto seguinte no camiinho de menor custo de w até 0 destino. A Figura 4.28 mostra os caminhos de menor custo resultantes ¢ a tabela de repasse em u para a rede na Figura 4.27 Qual é@ complexidade do caileulo desse algoritmo? Isto é, dados n nos (sem contar a fonte), quanto calculo € preciso efetuar no pior caso para descobrir os caminhos de menor custo entre a fonte ¢ todos os destinos? Na primeira iteracao, precisamos pesquisar todos os n nos para determinar 0 né w, que no esta em N’, € que tem o ‘custo minimo. Na segunda iteragao, precisamos veriffcar n ~ 1 nés para determinar 0 eusto minimo. Na terceira iteracio, n ~ 2 nds, E assim por diante, Em termos gerais, 0 mimero total de nés que precisamos pesquisar em todas as iteragdes € n(n + 1)/2, e, assim, dizemos que complexidade da implementacio dese algoritmo de estado de enlace para o pior eas0 & de ordem n ao quadrado: O(n"). (Lima implementagio mais sofisticada desse Etopa N Divd pte) tw), pw) fxd ple) Ly) aly) Dea), pled 0 u tu Su Ww ° © 1 w dy an ax ss 2 wy w ay ay 3 ony ay Ay 4 wen ay 5 one Tabela 4.3. Execugdo do algoritma de estado de enlace no rede do Figura 4,25 Coote Acamede de defi Destination Link v we 0 wo x wo y wo 2 wo Figura 4.28 —Carinhos de menor custo resultonts @o bela de posse poo 0 né u algoritmo, que utiliza uma estrutura de dados conhecida como uma pilha, pode descobrir 9 minimo na linha 9 ‘em tempo logaritmico nio-linear, reduzindo assim a complexidade.) Antes de conicluirmos nossa discussio sobre o algoritmo LS, vamos considerar uma patologia que pode sur gir. A Figura 4,29 mostra uma topologia de rede simples em que os custos dos enlaces sto fguais carga transpor- tada pelo enlace, refletindo, por exemplo, o atraso que seria experimentado, Nesse exemplo, os custos dos enlaces nao sio simétricos, isto &, c(u,y) & igual a e(y,u) somente se a carga transportada em ambas as diregoes do enlace (uy) for a mesma, Nesse exemplo, o né z origina uma unidade de trafego destinada a w, 0 n6 x também origina uma unidade de trafego destinada a w e o n6 y injeta uma quantidade de trafego igual a ¢ também destinada a ws. © roteamento inicial € mostrado na Figura 4.29(a) com os custos dos enlaces correspondentes a quantidade de trafego carregada. 'b. x,y detectam melhor caminho até Wem sentido horario Lee 2 VA”. © x y.z detectam melhor caminho x,y. 2, detectam melhor caminho até até w em sentido antichorario, wrem sentido horario ra 4.29 Oscars com roteomento de congesfonamenta (725) edes de computedares oo Internet ‘Quando o algoritmo LS ¢ rodado novamente, 0 n6 y determina — baseado nos custos dos enlaces mostrados na Figura 4.29(a) — que o caminho em semtido horirio até w tem um custo de 1, a0 passo que o caminho em semtido anti-horiria até w (que estava sendo usado) tem um custo de 1 +e. Por conseguinte, o eaminho de menor ceusto de y até w ¢ agora em sentido horirio. De maneira semelhante, x determina que sew novo eaminho de menor custo até w € também em sentido horario, resultando nos custos mostrados na Figura 4.29(b). Na préxima vez em que © algoritmo 1S é rodado, os nos x, y, € z detectam um caminho de custo zero até w na direcao anti-horiia, e todos dirigem seu trafego para as rotas ant-horarias, Na proxima yez em que o algoritmo LS € rodado, os 6s x, 9, € £ centio dirigem seu trélego para as rotas em sentido horévio. © que pode ser feito para evitar essas oscilacoes (que podem ocorrer com qualquer algoritmo, € nao apenas com um algoritmo LS, que use uma métrica de enlace baseada em congestionamento ou em atraso)? Uma solucio setla tornar obrigatério que 08 custos dos enlaces nao dependessem da quantidade de trafego carregecla — uma solugto inaceitavel, jf que um dos objetivos do roteamento € evitar enlaces muito congestionados (por exemplo, enlaces com grande atraso). Outra solugio seria assegurar que nem todos os roteadores rodassem o algoritmo LS 40 mesmo tempo. Esta parece ser uma solucao mais razoavel, ja que € de esperar que, mesmo que os roteadores rodem o algoritmo LS com idéntica periodicidade, o instante de execucto do algoritmo nao seja 0 mesmo em cada nd. O interessante € que recentemente os pesquisadores descobriram que os roteadores da Internet podem s¢ auto-sincronizar [Floyd Synchronization, 1994], isto é, mesmo que inicialmente rodem o algoritmo com o ‘mesmo periedo, mas em diferentes momentos, o instante de execugio do algoritmo pode finalmente se tornar, € permanecer, sincronizado nos roteadores. Um modo de evitar essa autossincronizacao € cada roteador variar aleatoriamente o instante em que envia um anuinefo de enlace Agora que examinamos o algoritmo de estado de enlace, vamos analisar outro importante algoritmo usado hoje na pratica — 0 algoritmo de roteamento de vetor de distincias. 4.5.2 0 algoritmo de roleamento de vetor de distancias (DV) Enquanto 0 algoritmo LS usa informacio global, 0 algoritmo de vetor de distancias (distance-vector — DY) iterativo, assincrono e distribuido, E distribuido porque cada né recebe alguma informagao de um ou mais vizi- nhos diretamente ligados a ele, realiza calculos e, em seguida, distribui os resultados de seus calculos para seus vizinhos. F iterativo porque esse processo continua até que mais nenhuma informacao seja trocada entre vizinhos. (O interessante € que este é um algoritmo finito — nao ha nenhum sinal de que o edleulo deve parar; ele apenas para.) O algoritmo ¢ assincrono porque nao requer que todos os nds rodem simultaneamente. Veremos que wn algoritmo assincrono, iterativo, finito ¢ distribuido € muito mais interessante e divertido do que um algoritmo centralizado! Antes de apresentar o algoritmo DV, é bom discutir uma relagao importante que existe entre os custos dos caminhos de menor custo, Seja d\(y) 0 custo do caminho de menor custo do n6 x a0 né y. Entio, os menores ‘custos esto relacionados segundo a famosa equacio de Bellman-Ford, a saber 4G) = miley) +4091, an) onde o min, da equagio é caleulado para todos os vizinhos de x. A equagho de Bellman-Ford é bastante intuitiva Realmente, se apos transitarmos de x para v tomarmos 6 caminho de menor custo de v a y, 0 custo do camino seri c(x,») + d (9). Como devemas comecar viajando até algum vizinko v, © camino de menor custo de xa y é ‘6 minimo do conjunto dos e(s;v) + d(y) caleulados para todos os vizinhos ¥ Mas, para aqueles que ainda se mostrem céticos quanto a validade da equacao, vamos verificd-la para o né de fonte we 0 n6 de destino z na Figura 4.27. O né da fonte w tem ts vizinhos: nds v, xe w, Percorrendo varios caminhos no grafo, € facil ver que d.(z) = 5, d(z) = 3 e d,(z) = 3. Passando esses valores para a Equacio 4.1, juntamente com os eustos c(u,v) = 2, c(u,x) = Le elitw) = 5, temos d,(z) = min{2 + 5, 5 +3,1 +3} = 4, queé, obviamente, verdade e que ¢, exatamente, o resultado conseguido com o algoritmo de Dijkstra para a mesma rede. Essa verilicacao ripida deve ajudé-lo a vencer qualquer ceticismo que ainda possa ter

You might also like