• Nenhum resultado encontrado

ROTEAMENTO EM REDES DE COMPUTADORES

N/A
N/A
Protected

Academic year: 2021

Share "ROTEAMENTO EM REDES DE COMPUTADORES"

Copied!
27
0
0

Texto

(1)

ROTEAMENTO EM REDES DE COMPUTADORES

1. Introdução

Um dos principais problemas a ser resolvido no nível de rede é a escolha do caminho que os pacotes devem seguir para interconexão das estações de origem e de destino. Se a rede é do tipo datagrama a decisão de roteamento é tomada para cada pacote. Se a rede é do tipo circuito virtual, o caminho a ser seguido é definido no estabelecimento do circuito virtual, e todos os pacotes da mensagem devem seguir este caminho.

Uma forma comum de implementação da decisão de roteamento em cada nó é através de uma tabela de roteamento. O nó recebe o pacote e se baseia em uma identificação específica (que pode ser os endereços de origem e destino, o número do circuito virtual, ou apenas o endereço de destino, dependendo do sistema) para obter da tabela de roteamento qual o enlace de saída para onde a mensagem deve ser encaminhada.

A figura a seguir ilustra uma rede composta de 7 nós. Perceba a existência de diversos caminhos possíveis para interconexão, por exemplo, dos nós a e g.

A questão é: Qual o melhor caminho a ser seguido?

a b c d e f g

Para se exemplificar o conceito de decisão de roteamento baseado em tabelas, ilustramos a seguir uma possível tabela de roteamento para o nó (a).

Nó de Destino Próximo Nó b b c c d d e b f c g d

(2)

Se lembarmos que a rede é do tipo Store-And-Forward e que cada pacote pode enfrentar uma fila em cada um dos nós pelos quais ele passar, fica evidente que a técnica de roteamento implementada pela rede tem uma influência direta na performance da mesma.

2. Classificação das Técnicas de Roteamento

2.1. Roteamento Estático x Adaptativo:

No Roteamento Estático os diversos caminhos interligando os nós da rede são definidos e não mais alterados, a menos que ocorra uma mudança na topologia da rede (surgimento ou desaparecimento de nós e/ou enlaces). Já nas técnicas adaptativas as tabelas de roteamento estão sendo periodicamente alteradas, de modo a tentar acompanhar as alterações de tráfego (ou outro parâmetro) da rede. Normalmente as técnicas adaptativas resultam em um melhor desempenho ao custo de uma maior complexidade de implementação.

2.2. Roteamento Centralizado x Isolado x Distribuído 2.2.1. Roteamento Centralizado

Nesta técnica temos um único nó responsável pela tomada das decisões de roteamento na rede e pelo encaminhamento dessas decisões para os demais nós da rede.

Se a topologia é estática e o tráfego sofre poucas alterações, a execução do algoritmo de forma OFF-LINE e o posterior carregamento das tabelas nos diversos nós da rede pode ser um opção. Contudo, se a rede está sujeita a variações topológicas (pela entrada e saída de operação de estações) e/ou a carga sofre variações significativas ao longo do dia, passa a ser necessário criar um mecanismo que nos permita adaptar as tabelas de roteamento às circunstâncias correntes.

Quando usamos roteamento centralizado é comum termos na rede um Centro de Controle de Roteamento (RCC). Periodicamente cada nó envia informações de status para a RCC (por exemplo, uma lista de seus vizinhos que estão em atividade, o tamanho atual das filas, a quantidade de tráfego processado por linha de saída desde o último report, etc). A RCC coleta todas estas informações e, conhecendo agora o comportamento global da rede, determina o melhor caminho a ser seguido para todas as comunicações possíveis (por exemplo, utilizando um algoritmo de caminho mais curto). Deste processamento resultam novas tabelas de roteamento

(3)

que serão distribuídas para todos os nós.

O roteamento centralizado apresenta duas vantagens: a primeira consiste no fato de que a RCC possui todas as informações concernentes a rede e pode, com isso, tomar as melhores decisões; a segunda vantagem é que o nós não necessitam efetuar processamento de roteamento, o que acarreta em simplificação.

Infelizmente, este tipo de roteamento também apresenta desvantagens, algumas delas sérias. A primeira desvantagem está relacionada ao tempo de adaptação às mudanças na rede; em uma rede extensa a RCC pode levar vários segundos para executar os algoritmos e gerar as novas tabelas de roteamento. Se a rede apresenta uma característica de grande variabilidade no tráfego, este tempo pode acarretar em problemas, pois a tabela gerada já não representará as melhores rotas a serem seguidas.

Outro sério problema associado ao roteamento centralizado é a vulnerabilidade do RCC no que diz respeito a falhas. Uma solução para este problema é termos uma máquina de back-up, obviamente tendo que pagar pela facilidade.

Outro problema associado ao roteamento centralizado diz respeito às tabelas de roteamento. Os nós mais próximos da RCC receberão as novas tabelas antes dos nós mais distantes, podendo levar a inconsistências no encaminhamento de mensagens durante este intervalo.

Finalmente, o roteamento centralizado causa uma pesada concentração de mensagens de roteamento nas linhas que chegam à RCC.

(4)
(5)

2.2.2. Roteamento Isolado

Nesta técnica o nó toma a decisão de roteamento baseado apenas em uma informação local, sem trocar informações com os demais nós da rede. Perceba, pois, que se trata de uma técnica descentralizada.

Um algoritmo simples do tipo isolado adaptativo é o algoritmo conhecido como HOT POTATO (batata quente). Neste algoritmo quando um pacote de mensagem chega a um nó, ele procura se livrar do pacote o mais rápido possível, colocando-o na fila de saída que apresentar menor tamanho naquele momento. Em outras palavras, quando um pacote chega, o nó verifica o número de pacotes na fila para cada uma das linhas de saída possíveis, e coloca o pacote a ser despachado naquela fila que tiver o menor número de pacotes, sem se importar que linha é esta.

Este tipo de algoritmo pode ser usado em conjunto com outros, como veremos mais tarde, para se obter uma melhor performance.

2.2.3. Roteamento Distribuído

Nesta classe de algoritmos de roteamento cada nó troca, periodicamente, informações de roteamento com outros nós da rede (por exemplo, com os nós vizinhos).

Baseado então em informações locais e informações provenientes de outros nós da rede, cada nó toma suas decisões de roteamento.

3. Algumas Questões de Desempenho Associadas ao Roteamento

Existem duas medidas de performance que são substancialmente afetadas pelos algoritmos de roteamento - o Throughput (quantidade de serviço), e o atraso médio sofrido pelo pacote (qualidade de serviço). O roteamento interage com o controle de fluxo na determinação dessas medidas de performance por meio de um mecanismo de realimentação como o mostrado na figura a seguir. Quando o tráfego chegando à subrede (tráfego oferecido) é relativamente baixo, ele é completamente aceito pela rede, isto é,

(6)

Delay Controle de Fluxo Roteamento Throughput Delay Tráfego Oferecido Tráfego Rejeitado

Quando o tráfego oferecido é excessivo, uma parte dele será rejeitado pelo controle de fluxo, e,

Throughput = Tráfego Oferecido - Tráfego Rejeitado

O tráfego aceito na rede sofrerá um atraso médio por pacote que dependerá da rota escolhida pelo algoritmo de roteamento. Contudo, o Throughput também será grandemente afetado (mesmo que apenas indiretamente) pelo algoritmo de roteamento, porque os esquemas de controle de fluxo típicos operam na base de um balanceamento entre Throughput e Delay, isto é, eles iniciam a rejeição do tráfego oferecido quando o Delay torna-se excessivo.

Portanto, quanto mais sucesso o algoritmo de roteamento tiver em manter o atraso baixo, mais tráfego entrante o algoritmo de controle de fluxo permitirá. Embora o balanceamento preciso entre Delay e Throughput seja determinado pelo controle de fluxo, o efeito de um bom roteamento sob condições de tráfego oferecido alto é realizar uma curva Throughput x Delay mais favorável, sob a qual o controle de fluxo opera. A figura a seguir ilustra a idéia.

(7)

Os exemplos seguintes ilustram a discussão anterior: Exemplo 1 :

Na rede da figura abaixo todos os enlaces tem uma capacidade de 10 unidades.

Temos dois nós, (1) e (2), originando mensagens para o mesmo destino, nó (6). O tráfego oferecido em cada nó origem é 05 unidades. Neste caso, o tráfego oferecido é relativamente leve e pode ser facilmente encaminhado, com baixo Delay, por exemplo pelas rotas 1 → 3 → 6 e 2 → 5 → 6 . Se, contudo, as rotas 1 → 4 → 6 e 2 → 4 → 6 são usadas, o fluxo no enlace (4,6) será igual à sua capacidade, resultando em um atraso significativamente grande.

Exemplo 2 :

Para a mesma rede, assuma agora que o tráfego oferecido pelos nós (1) e (2) seja de 5 e 15 unidades, respectivamente. Se o roteamento do nó (2) para o destino é feito por um caminho único, então ao menos 5 unidades de tráfego oferecido devem ser rejeitadas, uma vez que a capacidade total do caminho é igual a 10. Assim, o Throughput total não pode ser maior do que 15 unidades. Por outro lado, suponha que o tráfego originado no nó (2) seja igualmente dividido entre os caminhos

2 → 4 → 6 e 2 → 5 → 6 , enquanto o tráfego originado no nó (1) é encaminhado por 1 → 3 → 6 . Então, o tráfego chegando em cada enlace não ultrapassará 75% da sua capacidade, resultando em um atraso com valor razoável, e (dado um bom esquema de controle de fluxo) nenhuma parcela do tráfego oferecido será rejeitado. Analisando similarmente, vemos que quando o tráfego oferecido pelos nós (1) e (2) é elevado (em ambos os nós), o Throughput máximo que a rede pode acomodar está entre 10 e 30 unidades, dependendo do esquema de roteamento. Este exemplo também ilustra que,

(8)

para conseguirmos um Throughput elevado, o tráfego de um par origem-destino pode ter de ser encaminhado por mais de uma rota.

Em conclusão, o efeito de um bom roteamento é incrementar o Throughput para o mesmo valor de atraso médio por pacote sob condições de alto tráfego oferecido e decrementar o atraso médio por pacote sob condições de baixo tráfego oferecido. Além disso, é evidente que o algoritmo de roteamento deva operar de modo a manter o atraso médio por pacote tão baixo quanto possível, para qualquer nível de Throughput dado.

4. Algoritmos de Caminho Mais Curto

Como vimos, o Throughput e o Delay são dois parâmetros de performance intimamente ligados com o algoritmo de roteamento. Alguns dos algoritmos que trataremos em itens posteriores associam uma medida de “custo” a cada enlace (ou nó) da rede, e tentam encontrar um caminho que minimize o “custo” total. O custo pode ser uma quantidade fixa relacionada a alguns parâmetros, tais como: comprimento do enlace, velocidade, largura de faixa do enlace (capacidade de transmissão), se o enlace é seguro ou não, atraso estimado, ou alguma combinação deles. Ainda, o custo pode incluir o tráfego médio esperado para uma dada hora em um dado dia, ele pode incluir estimativas de tráfego no enlace, ocupação de Buffer, condições de erro no enlace, e assim por diante.

O tipo de parâmetro escolhido depende da classe do usuário (tipo de aplicação). Por exemplo, tráfego entre um terminal e um computador (interativo, em Bursts) requer um caminho que ofereça baixo tempo de resposta. Tal tráfego deve evitar enlaces com elevado tempo de propagação (enlace satélite, por exemplo). Assim, devemos aumentar o custo deste tipo de enlace para esta classe de aplicação. Por outro lado, a transferência

(9)

de grandes arquivos pode requerer um enlace com grande largura de faixa, se disponível. Assim devemos associar um baixo custo para esses enlaces (para

a aplicação de transferência de arquivos). Completando o exemplo, mensagens que exijam segurança devem ser roteadas por caminhos que envolvam apenas enlaces seguros. Isto pode ser conseguido, associando os custos adequadamente.

Finalmente, vale salientar que para o caso de enlaces bidirecionais, podemos ter custos diferentes associados a cada direção.

Passaremos agora a descrever dois algoritmos de roteamento que são utilizados (diretamente, ou através de alguma variação) em diversos tipos de rede. Chamaremos os algoritmos de A e B . O primeiro (A) é devido A E. W. Diskstra, e o segundo a L. R. Ford Jr. e D. R. Fulkerson.

4.1. Algoritmo A – Algoritmo de Dijkstra

Considere a rede da figura abaixo, onde os números associados com cada link representam o seu custo (por simplicidade estamos admitindo que o custo para uma direção e outra é o mesmo). O algoritmo que aqui tratamos visa buscar o caminho mais curto de um nó para todos os outros nós da rede. Logo, necessitamos conhecer os aspectos topológicos da rede, isto é, devemos conhecer todos os nós e suas interconexões, assim como o custo de cada interconexão.

1 6 3 2 4 5 2 1 2 3 3 1 1 2 5 5

Ele pode ser implementado de uma forma centralizada, em que um único nó detém toda a informação da rede, processa o algoritmo e posteriormente distribui as tabelas de roteamento; ou servir de base para a implementação de um algoritmo distribuído (como na Arpanet, onde cada nó possui sua própria base de dados com todas as informações para o processamento do algoritmo.

Vamos fazer um exemplo considerando o nó 1 (veja figura anterior) como fonte. Antes de apresentarmos o algoritmo vamos fazer as seguintes definições:

(10)

- D(v) ⇒ distância (soma dos pesos de todos os links ao longo do caminho) do nó fonte 1 para o nó v.

- l(i,j) ⇒ custo entre o nó i e o nó j. Vamos ao algoritmo:

1. INICIALIZAÇÃO: Faça N = {1}. Para cada nó v fora de N, faça D(v) = l(1,v) (para os nós não conectados a 1 podemos fazer D(v) = infinito, por exemplo).

2. PASSOS SUBSEQUENTES: Encontre um nó w fora de N tal que D(w) seja mínimo, adicione este nó (w) a N. Atualize D(v) para todos nós restantes que ainda não estão em N, fazendo

D(v) ← Min [ D(v), D(w) + l(w,v)] Repita este passo até que todos nós estejam em N.

A tabela a seguir ilustra a aplicação deste algoritmo para o exemplo mostrado na figura anterior.

Step inicial {1} 2 5 1 infinito infinito

1 {1,4} 2 4 (1) 2 ∞

2 {1,4,5} 2 3 1 (2) 4

3 {1,4,5,2} (2) 3 1 2 4

4 {1,4,5,2,3} 2 (3) 1 2 4

5 {1,4,5,2,3,6} 2 3 1 2 (4)

A árvore de caminho mais curto vai aparecendo com o próprio desenrolar do algoritmo, como mostra a figura abaixo, onde o número entre parênteses próximo de cada nó representa o passo em que o nó foi incluído no algoritmo.

(11)

(5) (a) Step number 1 6 3 2 4 5 2 1 1 1 2 (3) (4) (1) (2) (0)

Da árvore de caminho mais curto obtemos a tabela de roteamento para o nó (1), indicando, por destino, o enlace de saída para o qual o pacote deve ser encaminhado. Assim, para o nó (1) temos:

Destino Próximo Nó 2 2 3 4 4 4 5 4 6 4

O algoritmo deve ser rodado para cada um dos nós da rede como fonte, dando origem à tabela de roteamento. No caso de computação centralizada um único nó tem as informações da rede, executa o algoritmo para todos os nós e transmite a tabela de roteamento para o nó correspondente. No caso de roteamento descentralizado ou distribuído, cada nó executa o algoritmo tomando-se como fonte e gera sua própria tabela de roteamento. Neste caso todos os nós devem possuir as informações da rede. Esta última técnica é utilizada na rede ARPANET.

4.2. Algoritmo B – Algoritmo de Bellman - Ford

Neste algoritmo cada nó v tem um label [n,D(v)], onde D(v) representa o valor corrente da distância mais curta do nó para o destino e n é o número do próximo nó ao longo do caminho mais curto corrente. A execução do algoritmo engloba dois procedimentos básicos:

(12)

1. INICIALIZAÇÃO: Com o nó 1 como destino, faça D(1) = 0 e associe o label (.,infinito) para os demais nós.

2. DISTÂNCIA MAIS CURTA: Para cada nó v diferente de 1, faça o seguinte: atualize D(v) usando o valor corrente D(w) para cada nó vizinho w, fazendo

D(v) ← min [D(w) + l(w,v)]. Atualize o label v fazendo n igual ao nó adjacente que minimizou a expressão acima e fazendo D(v) igual ao valor encontrado.

Repita este passo para cada nó até que nenhuma mudança ocorra. A tabela a seguir ilustra a aplicação deste algoritmo para a figura do exemplo anterior.

CICLO LABELS → Nó 2 3 4 5 6 INICIAL (.,INFIN) (.,INFIN) (.,INFIN) (.,INFIN) (.,INFIN)

1 (1,2) (1,5) (1,1) (4a) .Tj 35.25 0 TD (5,4.,INFIN 1 (1,2)1,5) (1,1)

(13)

D(1) + l(1,3) = 0 + 5 = 5 D(4) + l(4,3) = 1 + 3 = 4 D(5) + l(5,3) = 2 + 1 = 3 D(6) + l(6,3) = 4 + 5 = 9 - D(4) ← D(1) + l(1,4) = 0 + 1 = 1 D(2) + l(2,4) = 2 + 2 = 4 D(3) + l(3,4) = 3 + 3 = 6 D(5) + l(5,4) = 2 + 1 = 3 - D(5) ← D(4) + l(4,5) = 1 + 1 = 2 D(3) + l(3,5) = 3 + 1 = 4 D(6) + l(6,5) = 4 + 2 = 6 - D(6) ← D(3) + l(3,6) = 3 + 5 = 8 D(5) + l(5,6) = 2 + 2 = 4

Como não ocorreu mais nenhuma mudança, o algoritmo termina. Olhando para os labels resultantes (vide tabela anterior) vemos que o nó 2 deve se conectar ao nó 1, o nó 3 deve se conectar ao nó 5, o nó 4 ao nó 1 e ao nó 5, e o nó 6 ao nó 5, resultando na figura mostrada abaixo. (5) (a) Step number 1 6 3 2 4 5 2 1 1 1 2 (3) (4) (1) (2) (0)

Para obter a tabela de roteamento para cada nó, o algoritmo B deve ser repetido tomando-se cada um dos nós como destino. Um algoritmo similar a este é usado para roteamento com computação centralizada na rede TYMNET.

5. Roteamento Por Caminhos Múltiplos

Em muitas redes, existe mais de um caminho "ótimo" entre pares de nós. Nestes casos, uma boa performance pode ser obtida dividindo-se o tráfego por esses diversos

(14)

caminhos, de forma a reduzir a carga em cada link. A técnica de utilizar múltiplas rotas entre um par de nós específico é chamada de MULTIPATH ROUTING ou roteamento bifurcado.

Este tipo de roteamento se aplica tanto para redes do tipo DATAGRAMA quanto para redes do tipo CIRCUITO VIRTUAL. Nas redes do tipo Datagrama, quando um pacote chega a um nó este escolhe uma das rotas possíveis de saída, independente da rota que o pacote anterior seguiu; já nas redes com implementação por Circuito Virtual, os pacotes de uma mensagem seguem sempre uma das rotas ótimas, mas diferentes circuitos virtuais podem ser escolhidos para diferentes mensagens, mesmo que os dois nós sejam os mesmos.

Roteamento Multi-rotas pode ser implementado, por exemplo, da seguinte maneira: cada nó mantém uma tabela com uma linha para cada nó destino. Nesta linha estão listadas a melhor rota, a segunda melhor rota, a terceira melhor rota e assim por diante; para cada uma dessas rotas temos um peso associado. Quando o nó recebe

um pacote para ser retransmitido ele examina a linha correspondente ao destino da mensagem, gera um número randomico e, em função deste número e do peso associado a cada uma das possíveis rotas escolhe o caminho a ser seguido. Esta tabela pode ser carregada nos nós durante o processo de inicialização da rede, não sendo alterada após isto.

Como um exemplo considere a rede da figura abaixo, a tabela mostrada é a tabela de roteamento do nó j. Se J recebe um pacote cujo destino é o nó A ele usa a linha referente a este nó. Como temos 3 alternativas de link de saída, o nó J irá gerar um número randomico entre 0 e 0.99 e escolhe a rota em função deste número. Se o número gerado estiver entre 0 e 0.63 a linha A é utilizada, se o número estiver entre 0.63 e 0.83, I será utilizada, e se for maior que 0.83 a rota H será utilizada.

(15)

A A 0.63 I 0.21 H 0.16 B A 0.46 H 0.31 I 0.23 C A 0.34 I 0.33 H 0.33 D H 0.50 A 0.25 I 0.25 E A 0.40 I 0.40 H 0.20 F A 0.34 H 0.33 I 0.33 G H 0.46 A 0.31 K 0.23 H H 0.63 K 0.21 A 0.16 I I 0.65 A 0.22 H 0.13 -K K 0.67 H 0.22 A 0.11 L K 0.42 H 0.42 A 0.16 6 744 44 6 78 44 44 6 78 44 448 Destination First Choice Second Choice Third Choice A B C D E F G H I J K L

Uma vantagem deste tipo de roteamento sobre o de Caminho mais Curto é a possibilidade de enviar tráfegos de classes diferentes através de rotas diferentes. Este tipo de roteamento pode também ser utilizado para incrementar a confiabilidade da rede. Em particular, se a tabela de roteamento possui n rotas disjuntas entre cada par de nós da rede, então a subrede suporta a perda de n-1 linhas sem haver a divisão da rede em duas partes.

Uma simples forma de implementar este tipo de algoritmo (garantindo que todas as rotas alternativas são disjuntas) é primeiro determinar o caminho mais curto entre a fonte e o destino. A seguir, vamos remover do grafo todos os nós e arcos usados no caminho mais curto e calcular um novo caminho mais curto. Este algoritmo garante que falhas que ocorrerem no primeiro caminho mais curto não irão afetar as demais rotas alternativas. Excluindo-se agora o segundo caminho mais curto podemos determinar a terceira opção, e assim sucessivamente. (Garantindo que todas as rotas alternativas são disjuntas).

6. Roteamento Isolado - Evoluído a Idéia do Hot Potato

Já descrevemos o algoritmo Hot Potato em itens anteriores. Uma variação desta idéia é combinar roteamento estático com o algoritmo Hot Potato. Aqui, quando um pacote chega, o algoritmo de roteamento levará em conta tanto os pesos estáticos das linhas de saída quanto o tamanho da fila nestas linhas. Uma possibilidade é escolher a melhor rota de saída, desde que a fila para esta rota não tenha ultrapassado um dado valor. Outra

(16)

possibilidade é escolher a rota com menor fila, desde que seu peso estático não seja inferior a um dado valor. Ainda, uma outra forma é escolher a rota de saída considerando-se um ranking das melhores rotas e das menores filas, e escolhendo a rota que tiver a melhor composição dos dois fatores. De qualquer forma, uma característica desejável é que o algoritmo escolha a melhor rota possível em situações de baixo tráfego e com o incremento do tráfego naquela rota, desvie parte deste tráfego para outras rotas.

7. Algoritmo Delta

Rudin, em 1976, descreveu um tipo de algoritmo híbrido, entre o roteamento centralizado e isolado, bastante interessante. Este algoritmo é denominado de algoritmo DELTA. A idéia é a seguinte: cada nó mede o "custo" (alguma função de atraso, tamanho de fila, utilização, etc.) dos links e, periodicamente, envia um pacote para um nó central com essas informações. Usando as informações enviadas pelos nós, o nó central calcula os K melhores caminhos para interligar o nó i ao nó j, para todo i e j. Seja então Cij1 o custo total do melhor caminho entre i e j; Cij2 o custo total do próximo melhor caminho, e assim sucessivamente. Se Cijn - Cij1 < Delta, o caminho n é dito equivalente ao caminho 1, uma vez que seus custos diferem de um valor pequeno. Quando os cálculos de roteamento terminam, o nó central envia para cada nó uma lista dos caminhos equivalentes para cada um dos seus possíveis destinos.

Nas implementações atuais, o nó pode escolher qual a rota a seguir dentro das rotas equivalentes enviadas pelo nó central. Esta decisão pode ser feita de forma aleatória ou baseada no "custo" corrente de cada link. Note que, ajustando os valores de k e Delta, podemos transferir autoridade dos nós para o nó central ou vice-versa. Se fizermos Delta tender a zero, todos os caminhos tornam-se inferiores ao melhor caminho, e o nó central toma a decisão; se por outro lado fazemos Delta tender a

infinito, todos os caminhos tornam-se equivalentes, e cada nó passa a tomar a decisão de roteamento. Simulações tem mostrado que o valor de Delta pode ser ajustado de tal forma a obtermos um desempenho superior àquele que obteríamos trabalhando com algoritmos puramente centralizados ou puramente isolados.

8. Roteamento Por Inundação

Uma forma extrema de roteamento isolado é o roteamento por INUNDAÇÃO. Nesta técnica o nó recebe um dado pacote e o retransmite para todas linhas de saída, com exceção daquela pela qual ele recebeu o pacote. Obviamente, o processo de inundação gera uma enorme quantidade de duplicatas dos pacotes, tendendo a infinitas duplicatas se

(17)

Uma das formas de restringirmos o número de duplicatas na rede é utilizarmos um contador no cabeçalho do pacote. Este contador é inicializado com o tamanho do caminho entre a fonte e o destino ( caso este valor não seja conhecido podemos inicializá-lo com o tamanho máximo da rede) em termos de número de "escalas". Cada nó que recebe o pacote decrementa este contador de 1. Quando o contador chegar a zero o pacote não mais será retransmitido, sendo eliminado da rede. Assim, conseguimos eliminar as duplicatas que não tenham chegado ao destino.

A técnica de inundação não tem aplicação prática na maioria dos casos. No entanto, existem algumas situações onde ela torna-se atrativa. Em aplicações militares, por exemplo, a robustez da técnica pode ser um fator interessante. Em aplicações com bases de dados distribuídas, algumas vezes é necessário atualizar essas bases concorrentemente, neste caso a técnica de inundação pode ser útil. Outra possível utilização esta relacionada a um processo de medição de características da rede, que podem ser utilizadas por outros algoritmos. A vantagem da técnica de inundação neste caso é a garantia de que a mensagem chegará ao destino através do caminho mais curto possível. De fato, nenhum outro algoritmo pode produzir um atraso menor para uma dada mensagem. (Se ignorarmos o Overhead gerado pelo próprio processo de inundação).

Uma variação deste algoritmo é a inundação seletiva. Aqui, os nós não enviam cada pacote que chega para todas as linhas de saída, mas somente para aquelas que vão aproximadamente para a direção correta.

9. Versão Descentralizada do Algoritmo B – Roteamento com Vetor de Distância

Uma versão descentralizada do algoritmo B, denominado Algoritmo Distribuído de Bellman- Ford foi usado originalmente na Arpanet (posteriormente abandonado) e na Internet (com o nome e RIP), e é muito proximamente relacionado com o algoritmo usado na arquitetura DNA (Digital Network Architecture). Um aspecto interessante deste algoritmo é que ele requer que uma quantidade muito pequena de informações seja armazenada nos nós da rede. De fato, um nó não precisa conhecer os detalhes da topologia da rede. É suficiente para um nó conhecer o “comprimento” de seus enlaces de saída e a identidade de cada nó na rede.

Faremos aqui uma descrição simplificada do algoritmo (seguindo Tanenbaum). Uma abordagem um pouco mais formal pode ser obtida em [Schuwartz] e [Bertsekas, 87]. Nesta classe de algoritmo de roteamento, originalmente usada na rede ARPANET, cada nó troca, periodicamente, informações de roteamento com cada um dos seus vizinhos. Tipicamente, cada nó mantém uma tabela que diz a linha de saída a ser usada para cada

(18)

destino e uma estimativa do custo para aquele destino. O parâmetro usado para estabelecer o custo pode ser o número de "escalas", o atraso estimado, o número de pacotes na fila, etc.

Como um exemplo, assuma que o atraso é usado como parâmetro(caso da Arpanet) e que cada nó conhece o atraso relacionado a cada um dos seus vizinhos. Uma vez a cada T milisegundos(2/3 segundo na Arpanet cada nó envia para cada um dos seus vizinhos uma lista de sua estimativa de atraso para cada destino. Imagine que um determinado nó recebeu uma tabela do seu vizinho X, com Xi representando a estimativa de X para uma

conexão com o nó i. Se o nó que recebeu a mensagem conhece o atraso para X, ele também conhece o atraso para cada um dos nós (i) através de X, que seria Xi + m

(mseg), onde m representa a estimativa de atraso do nó em questão para o nó X. Executando este cálculo para cada vizinho, o nó tem condição de encontrar qual a melhor forma de se conectar aos demais nós da rede.

Este processo de atualização é ilustrado na figura a seguir. A parte (a) da figura mostra a subrede. As primeiras 4 colunas mostram os vetores de atraso recebidos pelo nó J, oriundo de seus vizinhos. Por exemplo, o nó A diz ter um atraso de 12 ms para B, 25 ms para C, 40 ms para D, etc. Suponha que o nó J tenha medido ou estimado o atraso para cada um dos seus vizinhos como 8, 10, 12 e 6 ms para os nós A, I, H e K respectivamente.

Considere que o nó J está calculando uma nova rota para se interligar ao nó G. Ele sabe que o nó A estima um atraso de 18 ms para se conectar a G, como o atraso na conexão J->A é de 8 ms, o atraso total para conexão ao nó G através do nó A é de 26 ms. Da mesma forma, para a conexão através de I obtemos um atraso de 31 + 10 =41 ms, através de H temos 6 + 12 = 18 ms , e através de K obtemos 31 + 8 = 37 ms. Logo, a melhor forma de enviarmos uma mensagem de J para G é faze-lo através de H. Este procedimento é repetido pelo nó J para todos os possíveis destinos na rede, gerando uma nova tabela de roteamento para este nó.

(19)

A 0 B 12 C 25 D 40 E 14 F 23 G 18 H 17 I 21 K 24 L A B C D E F G H I J K L J 9 29 24 36 18 27 7 20 31 20 0 22 11 33 20 31 19 8 30 19 6 0 14 22 7 9 21 28 36 24 22 40 31 19 22 0 10 9 8 20 28 20 17 30 18 12 10 6 0 15 A B C E F I K L J D G H A I H K New estimated Delay from J line

JA Delay = 8 JI Delay = 10 JH Delay = 12 JK Delay = 6 (b) (a)

Note que, por causa da natureza deste algoritmo, em que o nós passam mensagens de controle para os outros nós até que o algoritmo esteja completo em cada nó, convergindo para o caminho mais curto, ele só pode ser usado em redes tipo datagrama. De fato, uma característica geral de algoritmos deste tipo é a seguinte:

Não existe nenhuma garantia que durante a transmissão dos pacotes o algoritmo não possa ser invocado em algum ponto da rede, mudando o caminho após a convergência. Isto significa que pacotes diferentes da mesma mensagem podem trilhar caminhos diferentes, podendo inclusive chegar fora da ordem em que foram transmitidos. Esta

(20)

característica não é um problema para redes datagrama, mas o é para redes do tipo Circuito Virtual.

Ainda, durante a fase de convergência este algoritmo é propenso a formação de Loops: Pacotes saindo de um nó podem voltar ao mesmo algum tempo depois. Isto pode não ser um grande problema para redes datagrama, mas é intolerável para redes com circuito virtual. Em função dos parâmetros de adaptatividade usados na Arpanet, o problema do loop tornou-se bastante sério (nós diferentes tinham visões diferentes das condições da rede). Por esta razão o algoritmo foi abandonado e outro foi desenvolvido, em 1979.

10. Exemplos de Roteamento em Redes e Arquiteturas de Rede

10.1. Roteamento na TYM NET

O algoritmo de roteamento da Tymnet, implementado em 1971, é baseado no método do caminho mais curto. O algoritmo é o de Floyd, que é uma variação do algoritmo B apresentado no item 4. A Tymnet usa o conceito de roteamento centralizado, operado por um programa supervisor rodando em um dos quatro possíveis computadores supervisores na rede. A rede trabalha com circuito virtual, o que significa que a decisão de roteamento é tomada no instante do estabelecimento do circuito. A construção do caminho de roteamento incorpora o conceito de classe de serviço, similar ao usado no SNA. O “Peso” dos enlaces varia, dependendo do tipo de tráfego transmitido. Por exemplo, usuários iterativos de baixa velocidade são “guiados” para longe de enlaces via satélite através do incremento do peso desses enlaces para este caso. Computadores que estão transferindo arquivos entre si podem requerer enlaces via-satélite, com maior largura de faixa que os enlaces terrestres. Os pesos dos enlaces também dependem da utilização e das condições de erro detectadas no mesmo. Especificamente, o número 16 é associado a enlaces de 2.400 BPS, 12 aos enlaces de 4.800 BPS e 10 aos enlaces de 9.600 BPS. Uma penalidade de 16 é adicionada ao enlace satélite para usuários iterativos de baixa velocidade. Isto desloca tais usuários para enlaces terrestres.

Uma penalidade de 16 é adicionada a um enlace se o nó de uma das extremidades acusa sobrecarga. Se ambos os nós que compõem o enlace acusam sobrecarga a penalidade é 32. A sobrecarga é experimentada se o pacote para um circuito virtual específico espera mais que 0,5 [s] para ser servido. Esta condição é reportada pelo nó para o supervisor. Uma condição de sobrecarga pode ocorrer por um excesso de circuitos requerendo serviço sobre o mesmo Link, ou ela pode ser devida a uma situação de canal ruidoso, provocando um aumento na taxa de erro de Bit e, consequentemente, um número maior de retransmissões. A penalidade usada neste caso serve para afastar os circuitos

(21)

Na ausência de sobrecarga, o algoritmo tende a selecionar o caminho mais curto (menor número de enlaces) com a maior taxa de transmissão. À medida que mais usuários vão entrando na rede, os enlaces de mais baixa velocidade passam também a ser utilizados. Em situações de carga leve, os usuários tendem a ter um atraso relativamente curto na rede. O caminho mais curto (com número menor de saltos), favorecido pelo caso de tráfego leve, também tende a ser mais confiável do que caminhos com mais enlaces. Usuários que cheguem ao sistema em um período de maior ocupação podem experimentar um atraso maior, devido a congestionamentos e uso de enlaces de mais baixa velocidade. O uso de penalidades para sobrecarga tende a espalhar o tráfego pela rede desviando-o do caminho mais curto mas reduzindo o atraso.

No caso de falha de um enlace ou nó a longo de um circuito virtual, o nó supervisor é notificado, determina automaticamente uma nova rota e notifica todos os nós envolvidos. A notificação consiste no envio para o nó de origem de um pacote controle que contém uma lista de todos o nós ao longo da rota. O nó de origem por sua vez envia este pacote de controle para o próximo nó na lista, que o envia para o próximo nó na lista e assim sucessivamente, até que o nó de destino seja alcançado.

O procedimento descrito no parágrafo anterior também ocorre quando do estabelecimento de um novo circuito virtual. Ou seja, o nó supervisor recebe uma solicitação de estabelecimento de circuito virtual entre dois pontos, decide qual o caminho será usado pelo circuito virtual e informa os nós associados ao caminho. O supervisor estabelece o novo circuito virtual, como antes, enviando um pacote “Bússola” para o nó de origem.

A tabela de roteamento mantida em cada nó basicamente associa ao circuito virtual um número de canal (ou porta) em cada enlace do mesmo. Por exemplo na figura abaixo, a tabela do nó A mapeia a porta de entrada 5 no canal 4 do enlace 1. No nó B, o canal de entrada 4 é mantido no canal de saída 10. Para o nó C, o canal de entrada 10 é mapeado para a porta 7.

(22)

10.2. Roteamento na Internet – Roteamento por Estado de Enlace

O algoritmo que aqui descrevemos é a versão introduzida em 1979, em substituição à versão original, que apresentava alguns problemas de loop. Esta algoritmo usa uma versão modificada do algoritmo de caminho mais curto de Dijkstra (algoritmo A) rodando independentemente em todos os nós. Em essência, cada nó mantém uma base de dados topológica completa (global), que é atualizada regularmente quando uma mudança topológica ocorre. A filosofia de Roteamento da Arpanet tem consistentemente sido a de rotear os pacotes (datagramas) por caminhos que possuam a menor estimativa (corrente) de atraso, de modo que as estimativas de atraso também devem ser disseminadas quando mudanças significativas ocorrem.

Neste algoritmo cada nó executa os seus próprios cálculos. O problema básico é manter (confiávelmente) a mesma base de dados para cada nó e disseminar as mudanças rapidamente e de forma confiável para as bases de dados dos nós.

Podemos dividir o algoritmo em três partes:

1) Estimativa do Atraso: As estimativas são feitas sobre um intervalo de 10 segundos. No algoritmo anterior eram feitas cerca de duas vezes por segundo, levando a estimativas que algumas vezes eram estatisticamente insignificantes e que geravam instabilidades no roteamento. O nó estima o retardo para cada uma de suas linhas.

2) Protocolo de Atualização: Para a disseminação das informações de atraso medidas, o algoritmo utilizado é o da inundação, de modo a alcançar todos os nós da rede tão rápido quanto possível.

3) Definição do Caminho Mais Curto: Uma versão modificada do algoritmo de Dijsktra é utilizada em cada nó para gerar as tabelas de roteamento.

A medida de retardo é feita para cada pacote, em todos os nós da rede, da seguinte maneira: O intervalo de tempo entre a chegada do pacote e o seu envio com sucesso (levando em conta as retransmissões necessárias) constitui o atraso sofrido pelo pacote. A este tempo é somado o tempo de transmissão do pacote (que dependerá da taxa de transmissão do enlace de saída) e o tempo de propagação (uma constante para cada enlace de saída). A média deste tempo em um período de 10 segundos constitui a estimativa estatística de atraso para aquele enlace. Se a nova estimativa difere da anterior por mais que 64 [ms], ela é transmitida para os demais nós da rede por inundação. Se este limiar não é excedido, o processo é repetido a intervalos de 10 [s] com o limiar sendo reduzido de 12.8 [ms] a cada vez. Isto garante ao menos uma atualização a cada 60 [s]. Contudo, quando uma mudança topológica ocorre (por exemplo, uma linha é

(23)

No processo de inundação as mensagens são retransmitidas, em cada nó, para todas as linhas, incluindo àquela por onde o pacote chegou. O “eco” aqui serve como um reconhecimento. Mecanismos de controle são utilizados para evitar a inundação contínua descontrolada da rede; Ou seja, existem mecanismos para a retirada desses pacotes da rede.

11. Performance de Algoritmos de Roteamento

Uma comparação quantitativa de algoritmos de roteamento é bastante complexa por uma série de razões. Uma delas está associada aos diversos critérios possíveis de análise da performance existentes. Muitas vezes um algoritmo tem um melhor desempenho para determinados objetivos; Enquanto outros podem ser melhores se trocarmos os objetivos. Outra razão se deve ao fato de que a performance do algoritmo depende da configuração específica da rede. Nós só podemos obter resultados analíticos para certos grafos regulares. Para configurações de rede reais devemos lançar mão de análises computacionais e/ou simulações.

Quando estamos comparando o desempenho de algoritmos de mesmo tipo (por exemplo, algoritmo de caminho mais curto), o que mais nos interessa são as características do mesmo associadas à sua capacidade de se adaptar a mudanças na rede.

Alguns critérios que podem ser utilizados são:

1) Velocidade de Resposta: O tempo requerido para que uma mudança na topologia se propague através da rede e para que as novas tabelas de roteamento estabeleçam um novo caminho mais curto (quiescente). Uma possível medida de velocidade é o número de iterações requeridas para que o algoritmo convirja para um novo estado. Esta medida de performance é, obviamente, extremamente importante em um ambiente dinâmico. A velocidade de resposta deve ser mais rápida que a taxa de mudança na rede, caso contrário a convergência não ocorrerá e o algoritmo de roteamento será inútil.

2) Número de Pacotes de Controle Transmitidos: Qual a informação que deve ser transmitida ao longo da rede para propagar as modificações ocorridas (topológicas, nos custos associados) e as atualizações das tabelas de roteamento. Quanto maior o número de pacotes de controle, maior o Overhead introduzido e maior a possibilidade de congestionamento introduzida pelos pacotes de controle.

(24)

3) Complexidade Computacional: Os algoritmos requerem um esforço computacional variável para processar os pacotes de controle, executar o algoritmo propriamente dito e atualizar as tabelas de roteamento. Isto pode refletir no tempo de processamento para cada nó e portanto na velocidade de processamento.

4) Tamanho dos Pacotes de Controle: Os algoritmos diferem na quantidade de informação transmitida por pacote de controle.

5) Espaço de Buffer Requerido: Os algoritmos diferem no espaço de memória requerido para atualizar e manter as tabelas de roteamento.

6) Loop: No estado transitório ou de convergência de um algoritmo podemos ter a ocorrência de loop. Um algoritmo “Loop-Free” garante que os pacotes de dados não retornarão aos nós pelos quais ele já passou, mesmo quando as tabelas de roteamento estão em processo de mudança.

(25)

12. Bibliografia

12.1. SCHWARTZ, Mischa - Telecommunication Networks; Protocols, Modeling And Analysis Addison - Wesley Publishing Company - 1987.

12.2. BERTSEKAS, Dimitri And Gallager, Robert - Data Networks - Prentice-Hall, Inc-1987.

12.3. TANENBAUM, Andrew S. - Redes de Computadores - Editora Campus - 1994 (1989).

12.4. BRITO, José Marcos C. - Projeto de Redes de Teleprocessamento - Apostila de Curso CEDETEC/INATEL - 1994.

12.5. AHUJA, Visay - Design And Analysis of Computer Communication Networks - McGraw-Hill Book Company - 1982.

(26)

13. Exercícios

1) Considere a rede mostrada na figura abaixo. Utilize os algoritmos A e B para encontrar o caminho mais curto entre o Rio de Janeiro e cada uma das outras cidades.

2) O número mostrado próximo a cada enlace da rede da figura abaixo é a probabilidade do enlace falhar durante a duração de um circuito virtual entre o nó A e o nó B. Vamos assumir que os enlaces falham independentemente um dos outros. Encontre o caminho mais confiável de A para B, esto é, o caminho para o qual a probabilidade que todos os enlaces permaneçam intactos durante a duração do circuito virtual é máximo. Qual é esta probabilidade?

(27)

3) Considere a rede de dados da figura abaixo. Encontre o caminho mais curto entre Seattle e todas as outras cidades na rede para tráfego interativo e usuários Batch, considerando as seguintes condições:

a) Linhas terrestres de 2.400 BPS tem peso 1 para todos os usuários; Linhas de 4.800 BPS tem peso 1 para usuários Batch e peso 3 para usuários interativos.

b) Enlaces de satélites tem peso 1 para usuários Batch e 6 para usuários interativos. Repita os cálculos se a estação terrena de Nova York sair de operação temporariamente para manutenção. Repita se o enlace Houston-Atlanta ficar fora de operação.

Referências

Documentos relacionados

In this work, improved curves are the head versus flow curves predicted based on the correlations presented in Table 2 and improved by a shut-off head prediction

Segundo o mesmo autor, a animação sociocultural, na faixa etária dos adultos, apresenta linhas de intervenção que não se esgotam no tempo livre, devendo-se estender,

Mettez les écouteurs sans fil hors tension, puis appuyez longuement sur et sur les deux touches de volume simultanément, jusqu'à ce que le voyant d'état clignote en rouge

O pastor Felipe Silva de Oliveira da Terceira Igreja Batista em Jardim Bom Retiro (São Gonçalo/RJ), é convidado para apresentar uma reflexão bíblica baseada na

os c´ alculos te´ oricos, utilize os valores dos resistores comerciais apresentados no apˆ endice B como referˆ encia para obter as resistˆ encias projetadas associe resistores em

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no