Você está na página 1de 0

I Congresso Brasileiro de Computao CBComp 2001

372
CAMINHOS VIRTUAIS: APLICAES DEPENDENTES DA INTERNET
TOLERANTES A FALHAS NAS ROTAS DE REDE

Jaime Cohen
jaime@convoy.com.br

Departamento de Informtica - Universidade Estadual de Ponta Grossa
R. C. Cavalcanti, 4748, CEP 84031-900 Ponta Grossa, PR, Brasil
Fone: (0**42) 225-7544

RESUMO
Quando duas ou mais aplicaes esto se comunicando atravs da Internet, pode ocorrer uma falha na comunicao
entre elas mesmo que as aplicaes estejam operacionais. O problema pode se encontrar em alguma conexo que faz
parte da rota de rede que liga os dois nodos . Esta situao s ir alterar-se quando as tabelas de roteamento forem
modificadas aps um tempo considervel. O interessante disso que apesar de ocorrerem falhas na rota de rede,
podem existir ainda muitos caminhos fsicos entre os dois nodos, disponveis para transmitir a informao. Uma
soluo para minimizar o tempo de recuperao das conexes falhas foi proposta em DUARTE JR (1998),
consistindo em desviar a rota por nodos da rede. O presente trabalho apresenta um novo critrio para posicionar os
desvios nas rotas e um algoritmo original para implementar este mtodo. Alm disso, apresentamos resultados
experimentais mostrando fortes indcios de que o algoritmo pode reduzir os tempos de resposta das aplicaes
rodando em redes com presena de falhas.
Palavras-chave: Computao Tolerante a Falhas, Roteamento em Redes, Teoria dos Grafos, Conectividade.

ABSTRACT
Network applications communicating over the Internet may be temporary unable to exchange data due to a fault in a
link somewhere on the IP route connecting the pair of nodes. The lack of communication will last until the network
recovers from the failure, probably by changing the routing tables. An interesting fact related to this situation is that
the Internet have enough redundant paths available to transmit the information. Based on these ideas, a solution to
minimize the response time of the applications was proposed in DUARTE JR (1998) and it is based on relaying the
fail route through a chosen node in the network. In the present work we introduce new criteria for placing the
mencioned relaying nodes and an original algorithm to implement the method. Further, we present experimental
results showing strong evidence that the algorithm can improve the response time of network applications running in
the presence of network faults.

1 INTRODUO
As redes de computadores tm se tornado imprescindveis para organizaes e
indivduos. Falhas e problemas de desempenho causam prejuzos cada vez maiores. Assim
sendo, solues tolerantes a falhas para problemas em redes de computadores so de extrema
www .ProjetodeRedes .kit. net
I Congresso Brasileiro de Computao CBComp 2001

373
importncia. Quem nunca tentou acessar uma pgina WEB de um site operacional e s
conseguiu faz-lo minutos ou horas depois? O problema poderia estar na rota de comunicao.
Considere um par de entidades no nvel de aplicao, um cliente e um servidor,
comunicando-se atravs da Internet. Se houver uma falha em algum ponto das rotas de rede (ou
rotas IP Internet Protocol) sendo usadas pelas entidades, a comunicao entre elas vai falhar
mesmo que as entidades estejam sem falhas e mesmo que existam rotas fsicas alternativas. O
problema persistir at que o protocolo de roteamento da camada de redes resolva o problema,
determinando uma nova rota. Na situao atual, mesmo havendo caminhos fsicos alternativos,
estes no so usados, pois as aplicaes no tm controle sobre as rotas que so determinadas
pelo nvel de rede. Alm disso, o roteamento na Internet tem apresentado uma srie de problemas
e instabilidades (LABOVITZ,1998) (LABOVITZ, 1999) (PAXON, 1996).
LAJ98LMJ99

Pax96

Para tornar as aplicaes de redes tolerantes a falhas, necessrio que haja novas
formas para que clientes acessem os servidores e vice-versa. Assim, rotas alternativas para a
comunicao entre aplicaes devem usar entidades no nvel de aplicao para desviar as rotas
originais, permitindo que os PDU's (Protocol Data Units) cheguem aos seus destinos.
Usando o conceito das proxies de roteamento apresentado em DUARTE JR (1998), a
aplicao tem um mecanismo simples que permite a implementao de um sistema de
roteamento tolerante a falhas.

2 PROXIES DE ROTEAMENTO E ROTAS DE APLICAO
Uma soluo para as aplicaes serem tolerantes a falhas nas rotas de rede permitir
que a prpria aplicao tente uma nova rota quando aquela no estiver funcionando. Uma rota de
aplicao definida como uma rota determinada por um protocolo de aplicao, sendo
constituda por uma concatenao de rotas de rede (DUARTE JR., 1994). Uma proxy de
roteamento uma entidade que funciona como uma ponte entre duas entidades de aplicao. A
rota a partir do cliente at a proxy e ento ao servidor uma rota de aplicao. Como as rotas de
rede no so transitivas, a rota de rede entre A e B pode ser muito diferente da rota de aplicao
entre A e B tendo um nodo C como proxy de roteamento. Este fato crucial para o
funcionamento do mtodo. Veja a figura 1.
Um algoritmo para selecionar proxies num backbone foi apresentado em cite DUARTE
JR (1998). No restante do trabalho, descreveremos um algoritmo original para este problema e
mostramos experimentalmente a sua eficcia.


PAXON, V. End-to-End Routing Behavior in theInternet, Proc. of the ACM SIGCOMM, 1996.
www .ProjetodeRedes .kit. net
I Congresso Brasileiro de Computao CBComp 2001

374






Figura 1. Rotas de Aplicao.

3 CRITRIOS PARA O POSICIONAMENTO DE PROXIES DE ROTEAMENTO
Para que um algoritmo de posicionamento de proxies de roteamento possa ser
desenvolvido e justificado, critrios devem ser estabelecidos para determinar onde as proxies
devero ser posicionadas. A nossa proposta foi a de elaborar um conjunto de critrios simples,
cada um deles com claras explicaes da sua relao com o problema e tambm razes do
porqu uma implementao destes critrios deve levar a solues eficientes.
Estes critrios consideram apenas a topologia fsica da rede, sem precisar avaliar as
rotas de rede que so mais complexas e que mudam com maior freqncia. O algoritmo se baseia
em parmetros de conectividade da rede e tambm nos comprimentos das rotas de aplicao. As
redes podem ser modeladas com custos nas arestas com o objetivo de representar a
confiabilidade ou a banda das conexes.

3.1 Critrios de Conectividade e Distncia
O principal critrio para a ordenao das proxies de roteamento baseado em conceitos
de conectividade da Teoria dos Grafos. Os nodos da rede que pertencem a subgrafos com alta
aresta-conectividade tero precedncia para se tornarem proxies. Desta forma, aumentamos a
chance de que o novo caminho de aplicao seja disjunto do caminho IP que se encontra falho.
Outro aspecto para a escolha deste critrio que a proxy escolhida ter uma maior chance de ser
reutilizada por outros pares de nodos que necessitem de uma rota alternativa.
Para evitar o quanto possvel o uso de proxies muito distantes dos nodos que esto se
comunicando, limites nos comprimentos dos caminhos de aplicao so impostos.
Um resumo dos critrios para escolha das proxies de roteamento segue abaixo:
A proxy de roteamento deve pertencer a um componente com grande aresta-
conectividade.
O comprimento do caminho de aplicao no deve exceder um certo limite, que
ser especificado pelo algoritmo descrito adiante.
Alm das idias acima, duas regras so utilizadas para a resoluo de empates:
Host 1
G1
G2
G2
Host 1 Host 2 Host 2
A) Operao Normal B) Recuperao de Falha
proxy
www .ProjetodeRedes .kit. net
I Congresso Brasileiro de Computao CBComp 2001

375
O tamanho do componente com alta conectividade contendo a proxy candidata
deve ser maximizado. Desta forma, a proxy ter maiores chances de ser reutilizada
no futuro.
O comprimento do caminho de aplicao deve ser minimizado.
Para um exemplo simplificado de uma boa proxy de roteamento que segue os critrios
descritos acima, veja a figura 2 a seguir.

Figura 2. O link entre o servidor e o cliente est falho. O nodo A o primeiro candidato
para proxy de roteamento. Ele est no subgrafo mais conexo da rede e forma a rota de
aplicao mais curta.

4 DEFININDO OS CONCEITOS DE CONECTIVIDADE E DISTNCIA
Nesta seo sero definidos os conceitos sobre conectividade e distncia em grafos que
sero utilizados nas descries dos algoritmos.
Comprimento da Rota de Aplicao. O comprimento de uma rota de aplicao
formada por uma proxy de roteamento definido abaixo:
Definio: Sejam cliente, servidor e proxy nodos da rede. Definimos
dist(proxy,cliente,servidor) como sendo o comprimento da concatenao das rotas de rede entre
o cliente e a proxy e entre a proxy e o servidor.
Vizinhana. O conceito de vizinhana definir aqueles nodos que quando usados como
proxies de roteamento iro formar caminhos de aplicao que no sejam longos. A definio
segue:
Definio: Para um inteiro d e nodos cliente e servidor da rede, definimos
d-vizinhana(cliente, servidor) como sendo o conjunto de nodos p cujas rotas de aplicao entre
cliente e servidor usando p como proxy possuem comprimento menor do que ou igual d.
Nmero de Conectividade de um Vrtice e Componentes com Mxima
Conectividade. Os parmetros de conectividade usados pelo algoritmo so definidos abaixo:
Definio: Seja #C(v) (com respeito a um grafo G) a aresta-conectividadede de um
subgrafo no trivial de G contendo v e tal que a cardinalidade de qualquer corte separando nodos
deste subgrafo seja maximizada. Tambm definimos MCC(v) como sendo o maior subgrafo
www .ProjetodeRedes .kit. net
I Congresso Brasileiro de Computao CBComp 2001

376
contendo v e tal que qualquer par de nodos deste subgrafo no pode ser separado por um corte de
tamanho menor do que #C(v). A figura 3 ilustra ambos os conceitos.

Fig. 3. Esta figura mostra o nmero de conectividade dos vrtices, isto , #C(v), e os
componentes MCC(v).

Nas definies de #C() e MCC(), note que por subgrafo no trivial queremos dizer um
subgrafo contendo dois ou mais vrtices. Caso subgrafos triviais fossem permitidos na definio,
o grau do vrtice seria trivialmente o seu nmero de conectividade. Porm, o grau de um nodo
no um bom parmetro para o problema abordado neste artigo. A razo que podem haver
muitos caminhos passando por um mesmo nodo e isso pode acontecer quando um vrtice
pertence a um subgrafo de baixa conectividade. Considere por exemplo um subgrafo induzido
possuindo uma topologia de estrela. Neste caso, muitas rotas IP passaro pelo centro desta
estrela e uma rota de aplicao poder necessitar evitar passar por ele. Note tambm que o grau
de um vrtice v uma cota superior para #C(v).

5 ALGORITMOS PARA LOCALIZAO DE PROXIES DE ROTEAMENTO
O algoritmo principal que descreveremos encontra uma boa proxy de roteamento
dentro de alguma vizinhana envolvendo o par de nodos tentando se comunicar. O critrio de
conectividade usado e desempates so tratados pelo tamanho do subgrafo contendo o nodo e
tambm pelo comprimento do caminho de aplicao.
A parte mais difcil do algoritmo o calculo dos nmeros de conectividade, #C(v), e os
respectivos MCC(v). Ns propomos dois algoritmos com esta finalidade, que sero descritos em
uma seo separada. O pseudocdigo do algoritmo principal apresentado na figura 4 adiante.
Complexidade de Tempo. O tempo de execuo do algoritmo da figura 4 dado pelo
tempo para o clculo das funes #C() e MCC() e as distncias entre os nodos. As distncias
podem ser calculadas atravs de duas execues de um algoritmo para determinao de
caminhos mnimos a partir de um vrtice. A primeira execuo feita a partir do cliente e a outra
www .ProjetodeRedes .kit. net
I Congresso Brasileiro de Computao CBComp 2001

377
a partir do servidor. Utilizando-se o algoritmo de Dijkstra, o tempo ser de (n.log (n)),
assumindo que a rede esparsa.

Algoritmo: Seleciona_Proxies (Grafo G = (V, E) , Nodos cliente, servidor)
Sada: lista ordenada de nodos candidatos a proxies de roteamento.
incio
Seja L uma lista vazia;
Calcule os valores #C(v), MCC(v) e dist(v, cliente, servidor) para cada nodo v;
Seja P o comprimento do caminho de rede usado entre o cliente e o servidor;
Seja d = 2;
enquanto |L| <= |V| - 2 faa
Ordene os nodos em V-L da vizinhana d*|P|-vizinhana(cliente, servidor)
... em ordem no crescente e usando como chave
... < #C(v), | MCC(v) |, dist (v, cliente, servidor) >;
Concatene os nodos no final da lista L;
d := d + 1; // a vizinhana aumentada para alcanar novos nodos
fim_enquanto;
retorne L;
fim.
Figura 4. Algoritmo principal para seleo de proxies de roteamento.

O tempo de execuo do algoritmo como um todo depender do algoritmo usado para o
clculo das funes #C() e MCC(). Descreveremos a seguir duas possibilidades: a primeira
calcula as duas funes de forma exata e tem um tempo de execuo equivalente ao tempo da
construo de uma rvore de Cortes, tambm conhecida como rvore de Gomory-Hu. A
construo da rvore de Cortes requer a execuo de n-1 algoritmos de fluxo mximo em redes
entre dois vrtices. O tempo total de execuo do algoritmo acima ser ento limitado por O(n
4
),
considerando os algoritmos prticos para o problema de fluxos em redes. (COOK,1998 ),
(LEEUWEN, 1990).
Com o intuito de evitar o tempo necessrio para a construo da rvore de Cortes, uma
heurstica proposta para computar a funo #C(v) de forma aproximada. Esta heurstica no
capaz de computar a funo MCC(), porm isto no um problema, j que o algoritmo principal
utiliza dois critrios de desempate na escolha das proxies. A grande vantagem desta heurstica
que o seu tempo de execuo linear, considerando redes esparsas. A complexidade total do
algoritmo diminui assim para (n.log(n)+m).

www .ProjetodeRedes .kit. net
I Congresso Brasileiro de Computao CBComp 2001

378
5.1 O Algoritmo Exato para Computar #C() e MCC()
O seguinte lema a chave para o clculo de #C():
Lema 1. Dado um grafo G = (V,E) e um vrtice v V, o valor de #C(v) igual
mxima cardinalidade (ou capacidade) dentre todos os cortes mnimos separando v de cada
outro vrtice do grafo.
Prova. Considere um subgrafo H de G com a maior conectividade que define o valor
de #C(v). Como H no trivial, ento necessariamente existe um vrtice u de H, u v. O corte
mnimo separando v de u deve ser o de maior valor dentre os cortes mnimos separando v de
outros vrtices. Portanto, para computar #C(v) basta calcularmos os valores de todos os cortes
mnimos entre v e os demais vrtices.
O lema 1 nos diz que o problema de calcular os valores de #C(v), para todo v em V,
pode ser reduzido ao problema de encontrar o corte mnimo entre todos os pares de vrtices do
grafo. Este problema j foi largamente estudado, mas pouco progresso foi feito desde o trabalho
de R.E. Gomory e T.C. Hu em 1961. Veja GOMORY (1961), HU (1982) e COOK (1998) para
uma descrio deste mtodo e tambm GUSFIELD (1990) para novas idias sobre o problema.
Uma rvore de Cortes T de um grafo G definida como uma rvore ponderada tal que:
(1) Os nodos de G correspondem aos nodos da rvore T. (2) O tamanho de um corte mnimo
entre dois vrtices quaisquer de G igual ao peso da aresta de peso mnimo pertencente ao nico
caminho entre os vrtices em T. (3) Um corte mnimo entre dois vrtices de G dado
removendo-se a aresta de T citada no item acima e considerando os dois conjuntos de vrtices
induzidos pelas duas rvores formadas pela remoo da aresta.
A rvore de Cortes permite uma rpida resposta pergunta sobre qual o custo de um
corte mnimo entre qualquer par de vrtices de G. Alm disso, ela permite que se determine um
corte mnimo de forma bastante simples. Para maiores detalhes veja HU (1982) e COOK (1998).
Lema 2. O valor #C(v) igual ao maior valor de uma aresta adjacente v em uma
rvore de cortes T
c
do grafo G.
Prova. Por definio, o valor de um corte mnimo do vrtice v at um outro vrtice u
corresponde ao menor valor de uma aresta no caminho em T
c
de u at v. Ainda, este valor deve
ser menor do que ou igual ao valor da aresta adjacente v do caminho. Portanto, a mxima
capacidade de um corte mnimo separando v de qualquer outro vrtice de G, deve ser igual ao
valor de uma aresta adjacente a v em T
c
com o maior valor.
Desta forma, podemos computar o valor de #C(v). O valor de MCC(v) pode ser
computado analisando sub-rvores da rvore de cortes, podendo ser feito em tempo linear.
Detalhes podem ser encontrados em COHEN (2001).
www .ProjetodeRedes .kit. net
I Congresso Brasileiro de Computao CBComp 2001

379
5.2 Uma Heurstica de Tempo Linear para Calcular #C(v)
A heurstica que propomos se baseia em uma idia sugerida em um algoritmo descrito
em KHULLER (1996) para um outro problema de conectividade. A heurstica descrita aqui
procura retirar, a cada passo, um pequeno nmero de aresta que formam um conjunto de
subgrafos dois aresta-conexos. Cada componente conexo encontrado ser formado por
componentes 2-aresta-conexos ligados por caminhos simples. Os vrtices dos componentes 2-
aresta-conexos tm seus valores #C(v) acrescidos de 2 e os vrtices de caminhos tm um
acrscimo de 1 em seus #C(v). Para fazer isso, a heurstica remove, de cada componente conexo
restante uma rvore de busca em profundidade e mais um conjunto de arestas para tentar formar
subgrafos dois conexos. As arestas acrescentadas rvore so chamadas de arestas de cobertura.
As arestas de cobertura so encontradas usando uma idia heurstica que consiste em escolher a
aresta que possui umas das pontas o mais alto possvel na rvore de busca, tentando cobrir o
mximo possvel das arestas. O pseudocdigo segue abaixo:
Algoritmo: Heurstica para o Clculo de #C(v) de um Grafo G = (V, E)
incio
para cada v em G faa
#C(v) = 0;
se grau(v) = 0 ento remova v de G;
fim_para;
enquanto |E| faa
para cada componente conexo c de G faa
T = uma rvore de busca em profundidade de c;
para cada aresta e de T em ps-ordem faa
se e no est coberta ento encontre uma aresta de cobertura para e;
para cada nodo v de c faa
se v pertence a um ciclo de T + arestas de cobertura
ento #C(v) = #C(v) + 2
seno #C(v) = #C(v) + 1;
fim_para;
remova de G as arestas de T e as arestas de cobertura;
remova de G os vrtices isolados;
fim_para;
fim_enquanto;
fim.
www .ProjetodeRedes .kit. net
I Congresso Brasileiro de Computao CBComp 2001

380
Esta heurstica roda em tempo de pior caso O(m/n(m+n)) ou O(n) em grafos esparsos.
Detalhes podem ser encontrados em COHEN (2001).

5.3 Alguns Resultados Experimentais
Dois mtodos foram apresentados para o cmputo da funo #C() para os nodos de uma
rede: um deles calcula a funo de forma exata porm a heurstica muita mais rpida. bvio
perguntarmos quo prximo dos valores timos a heurstica calcula #C(). Abaixo apresentamos
resultados mostrando que o erro cometido pela heurstica no clculo de #C() menor do que 1
em mdia para cada nodo.
Para rodarmos os experimentos, quatro classes de grafos foram geradas, com 50, 100,
200 e 500 nodos, respectivamente. Cada classe contm 50 grafos e todos os resultados so
mdias sobre estes 50 grafos. O mtodo utilizado para a gerao dos grafos foi o Mtodo de
Waxman, descrito em ZEGURA (1997), um artigo dedicado ao estudo de modelos para a
Internet.
A tabela 1 mostra os resultados comparativos entre os dois mtodos. Uma coluna
mostra a soma das diferenas sobre todos os nodos e a outra mostra a diferena mdia.
N soma das diferenas erro mdio por
50 39,2 0,78
100 64,2 0,64
200 155,0 0,77
500 428,0 0,86
Tabela 1. Diferena emprica entre a heurstica e o algoritmo exato.

A tabela 2 mostra que as proxies de roteamento tm grande probabilidade de recuperar
a comunicao no caso de erros aleatrios nas redes. Para este experimento novamente os grafos
foram gerados pelo modelo de Waxman para terem topologias relacionadas com backbones da
Internet. Se pensarmos na diferena de tempo que existiria com a utilizao de uma proxy de
roteamento com o de vrios time-outs que ocorrem quando a aplicao tenta fazer repetidas
conexes com um nodo no alcanvel, podemos notar que os resultados mostrados abaixo so
bastante promissores.
A tabela mostra a porcentagem de pares de nodos que recuperam a comunicao aps a
falha de um link na rota IP entre eles. As mdias foram tiradas considerando todos os pares de
nodos e a falha de todos os possveis links, um por vez. A segunda coluna se refere ao
experimento em que uma segunda proxy foi escolhida quando a primeira tentativa falhou.
www .ProjetodeRedes .kit. net
I Congresso Brasileiro de Computao CBComp 2001

381
n uma proxy duas proxies
10 73 % 93 %
20 75 % 93%
30 62 % 87 %
50 59 % 81 %
Tabela 2. Porcentagem de pares de nodos que recuperam a comunicao utilizando o mtodo
proposto.

6 REFERNCIAS BIBLIOGRFICAS

COOK, W.J.; CUNNINGHAMA, W.H.; PULLEYBLANK, W.R. e SCHRIJVER, A.
Combinatorial Optimization. John Wiley & Sons, Inc., 1998.

COHEN, J. Relatrio de Projeto: Algoritmos para o problema da conectividade em grafos
com aplicaes ao gerenciamento integrado de redes de computadores. Relatrio da
Universidade Estadual de Ponta Grossa, disponvel em www.deinfo.uepg.br/jaime, 2001.

DUARTE JR, E.P.; MANSFIELD, G.; NANYA, T. e NOGUCHI, S. Improving the
Dependability of Network Management Systems. International Journal of Network
Management, vol. 8, nm. 4, 1998.

DUARTE JR, E.P.; MANSFIELD, G.; NOGUCHI, S. e MIYAZAKI, M. Fault-Tolerant
Network Management. Proc. of ISACC94, Mexico, 1994.

GOMORY, R.E. e HU, T. C. Multi-terminal network flows. SIAM Journal on Applied
Mathematics, vol. 9, 1961.

GUSFIELD, D. Very simple methods for all pairs network flow analysis. SIAM Journal of
Computing, vol. 19, nm. 1, 1990.

HU, T.C. Combinatorial Algorithms, Addison-Wesley, 1982.

KHULLER, S. e RAGHAVACHARI, B. Improved approximation algorithms for uniform
connectivity problems. Journal of Algorithms, 21, 1996.
www .ProjetodeRedes .kit. net
I Congresso Brasileiro de Computao CBComp 2001

382

LABOVITZ, C.; AHUJA, A. e JAHANIAN, F. Experimental Study of Internet Stability and
Backbone Failures. Proceedings of the FTCS-29, Madison, Wiscosin, 1998.

LABOVITZ, C.; MALAN, G. R. e JAHANIAN, F. Internet Routing Instability. IEEE
Transactions on Networking, vol. 7, nm. 3, 1999.

PAXON, V. End-to-End Routing Behavior in theInternet, Proc. of the ACM SIGCOMM,
1996.

LEEUWEN, Editor J. van. Handbook of Theoretical Computer Science: Algorithms and
Complexity Volume A. Elsevier e the MIT Press, 1990.

ZEGURA, E. W.; CALVERT, K.L. e DONAHOO, M. J. A quantitative comparison of graph-
based models for Internet topology, IEEE/ACM Transactions on Networking, 1997.
















www .ProjetodeRedes .kit. net