You are on page 1of 27

Roteamento em Redes de Computadores

INATEL

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?

b e

a d g

c f

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

1
Roteamento em Redes de Computadores
INATEL

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

2
Roteamento em Redes de Computadores
INATEL

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.
Esta idéia esta ilustrada na figura a seguir.

3
Roteamento em Redes de Computadores
INATEL

4
Roteamento em Redes de Computadores
INATEL

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 é,

Throughput = Tráfego Oferecido

5
Roteamento em Redes de Computadores
INATEL

Delay

Tráfego Controle
de Roteamento
Oferecido Throughput Delay
Fluxo

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.

6
Roteamento em Redes de Computadores
INATEL

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,

7
Roteamento em Redes de Computadores
INATEL

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

8
Roteamento em Redes de Computadores
INATEL

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.

3
2 3
2
5
3
2 1
1 6
1 2
1
4 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:

9
Roteamento em Redes de Computadores
INATEL

- 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.

10
Roteamento em Redes de Computadores
INATEL

(3) (4)

2 3
2

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

(a)

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:

11
Roteamento em Redes de Computadores
INATEL

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)

12
Roteamento em Redes de Computadores
INATEL

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.
(3) (4)

2 3
2

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

(a)

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

13
Roteamento em Redes de Computadores
INATEL

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.

14
Roteamento em Redes de Computadores
INATEL

Destination
First Second Third
Choice Choice Choice
64
4744 8 644744 8 64
4744 8
A A 0.63 I 0.21 H 0.16
A B C D 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 G F A 0.34 H 0.33 I 0.33
E H 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
I J K L
L K 0.42 H 0.42 A 0.16

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

15
Roteamento em Redes de Computadores
INATEL

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
não criarmos uma forma de restringir este número.

16
Roteamento em Redes de Computadores
INATEL

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

17
Roteamento em Redes de Computadores
INATEL

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ó.

18
Roteamento em Redes de Computadores
INATEL

A B C D

F G
E H

I J K L
(a)

New estimated
A I H K Delay from J line

A 0 24 20 21 8 A
B 12 36 31 28 20 B
C 25 18 19 36 28 C
D 40 27 8 24 20 D
E 14 7 30 22 17 E
F 23 20 19 40 30 F
G 18 31 6 31 18 G
H 17 20 0 19 12 H
I 21 0 14 22 10 I
J 9 11 7 10 0 J
K 24 22 22 0 6 K
L 29 33 9 9 15 L
JA Delay JI Delay JH Delay JK Delay
=8 = 10 = 12 =6
(b)

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

19
Roteamento em Redes de Computadores
INATEL

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
adicionais do enlace até que as condições do mesmo melhorem.

20
Roteamento em Redes de Computadores
INATEL

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.

21
Roteamento em Redes de Computadores
INATEL

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 é
retirada ou inicializada), uma informação de atualização é transmitida imediatamente.

22
Roteamento em Redes de Computadores
INATEL

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.

23
Roteamento em Redes de Computadores
INATEL

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.

24
Roteamento em Redes de Computadores
INATEL

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.

25
Roteamento em Redes de Computadores
INATEL

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?

26
Roteamento em Redes de Computadores
INATEL

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.

27

You might also like