Routing Information Protocol (RIP)

Funcionamento do Algorítmo Vetor-Distância

Não somente o RIP, mas todos os protocolos baseados no algoritmo vetor-distância prevêem que cada nó que participa do roteamento deve conter uma tabela informando a melhor distância conhecida e que linha utilizar para chegar até lá. Esta tabela possui uma entrada para cada roteador da subrede. Cada entrada deve conter as seguintes informações:

O RIP não faz diferença entre um roteador e um host individual, para ele são todos destinos, além disto, utiliza a tecnologia Broadcast, isto é, um roteador envia sua tabela para todos os seus roteadores vizinhos em intervalos predefinidos de tempo (em geral, 30 segundos). Estas mensagens fazem com que os roteadores vizinhos atualizem suas tabelas que por sua vez serão enviadas aos seus respectivos vizinhos no tempo de envio destinado a cada um deles.

Vamos considerar o caso de uma subrede com 5 nós, conforme diagrama a seguir:

As letras correspondem aos roteadores e os números aos links. Ao iniciar o sistema a tabela de cada roteador só contem uma entrada, que é a sua própria, do tipo:

De A para

Link

Custo

A

local

0

Supondo que A envie primeiro sua tabela de atualização, B e D atualizarão suas para:

De B para

Link

Custo

B

local

0

A

1

1

obs. O custo mínimo foi estipulado em 1 para todos os nós.

De D para

Link

Custo

D

local

0

A

3

1

Agora que B e D atualizaram suas tabelas, B transmite sua tabela para seus vizinhos A, C e E. D faz o mesmo para seus vizinhos A e E. A, ao receber a mensagem de B e D, atualiza sua tabela para:

De A para

Link

Custo

A

local

0

B

1

1

D

3

1

O nó C, receberá a mensagem de B no link 2, e atualizará sua tabela para:

De C para

Link

Custo

C

local

0

B

2

1

A

2

2

Quando um nó recebe uma tabela de atualização de outro, cada entrada é verificada de forma a privilegiar o menor custo. Assim, as mensagens vão atualizando as tabelas até elas convergirem.

Até agora não levamos em consideração a viabilidade do tempo de convergência. Para isso, pensou-se na determinação de um tempo grande o suficiente de forma que nenhuma rota real seja tão grande, mas ao mesmo tempo que não demore muito para que seja identificado que algo errado aconteceu. Para evitar delimitações no tamanho da rede, algumas mudanças no algoritmo foram feitas para solucionar problemas como esse. A primeira partiu-se de um princípio simples: se A acha que pode chegar a C via B, sua mensagem para B deve indicar que C não é alcançável. Se a rota através de B é real, então a rota de B não pode voltar para A, uma vez que isto forma um loop. Logo, se A diz a B que C não é alcançável, é resguardada a possibilidade de B se confundir e achar que há uma rota para C por A. A implementação disto, exige que as mensagens enviadas por um roteador sejam diferenciadas para cada um de seus vizinhos. Este método é chamado "Split horizon with poisonous reverse". Um outro desdobramento deste método é, ao invés do envio de um custo infinito (16, na prática), a omissão das entradas cuja rota passam pelo nó que receberá a mensagem (este método é conhecido como "Split horizon").

Outra modificação chamada "Triggered Updates" está relacionada ao tempo de envio da tabela de atualização e sua influência na geração de erros. Por este método, o roteador envia sua mensagem de atualização sempre que notar alteração na sua tabela, ao invés de ter que esperar pelo seu tempo de envio. Esta agilidade, diminui a propagação de mensagens erradas (=desatualizadas), diminuindo a quantidade de loops existentes. Por outro lado, carrega muito a rede. Para evitar isto, um contador é inicializado para contar até um número aleatório entre 1 e 5. Se alguma mudança ocorrer dentro deste intervalo, ela deve esperar o fim do tempo para ser enviada.