Mais conhecido como RIP, o Routing Information Protocol é um dos protocolos que permanece o maior tempo sendo utilizado. Também é o mais facilmente confundido, devido ao grande número de protocolos parecidos encontrados, alguns inclusive utilizando o mesmo nome. RIP e os protocolos parecidos encontrados são baseados no mesmo conjunto de algoritmos, que utilizam distância vetorial para compara matematicamente rotas, indicando o melhor caminho para um endereço de destino qualquer.
O RIP também é conhecido pelo nome de seu daemon (programa que espera instruções externas para disparar ações específicas) para Unix, o routed, que foi originalmente projetado na U. C. Berkeley para fornecer informações de roteamento e alcance entre máquinas em uma rede local. Sua popularidade não é necessariamente baseada em seus méritos técnicos, mas provavelmente porque Berkeley o distribuiu junto ao seu popular sistema 4.x BSD UNIX. Assim, este daemon foi instalado em diversos locais, mesmo que seus usuários sequer conhecessem suas vantagens e limitações. Uma vez instalado e rodando, o routed tornou-se a base para o roteamento local.
O padrão atual para o RIP, também chamado de IP RIP, é definido formalmente em dois documentos: a RFC (Request for Comments) 1058 e o STD (Internet Stantard) 58. Ao mesmo tempo em que as redes baseadas em IP tornaram-se maiores e mais populares, ficou claro para a IETF (Internet Engineering Task Force) de que o RIP deveria ser atualizado. Em conseqüência, a IETF lançou em janeiro de 1993 o RFC 1388, que foi atualizada em novembro de 1999 pelo RFC 1723, e descreve o RIP-2 (a segunda versão do RIP). Estas RFCs descrevem uma extensão às capacidades do RIP, mas não são voltadas para tornar obsoleto a versão anterior do RIP. O RIP-2 permite às mensagem do RIP carregar mais informação, o que permitiu o uso de um mecanismo de autenticação simples para proteger as atualizações das tabelas. Ainda mais importante, o RIP-2 suporta máscaras de sub-rede, uma característica essencial que não estava presente no RIP.
O RIP envia mensagens de atualização de roteamento em intervalos regulares de tempo, ou quando a topologia da rede é alterada. Quando um roteador recebe uma atualização que inclui alterações em alguma das entradas, ele atualiza sua tabela de roteamento para refletir a nova rota. O valor métrico para a rota é acrescentado de 1, e o transmissor é indicado como o próximo hop. Os roteadores que utilizam RIP mantêm apenas as melhores rotas (com o menor valor métrico) até um destino. Após atualizar sua tabela de roteamento, o roteador começa imediatamente a transmitir atualizações para informar ao outros roteadores da rede sobre a mudança. Estas atualizações são enviadas independentemente das atualizações enviadas regularmente pelos roteadores.
O RIP utiliza uma única métrica para roteamento (a contagem de saltos, ou hops) para medir a distância entre a rede de origem e a de destino. A cada hop no caminho entre a origem e o destino é atribuído um valor, tipicamente 1. Quando um roteador recebe uma atualização que contém entradas com novas redes de destino, ou modificações nas redes existentes, o roteador adiciona 1 ao valor métrico presente na atualização, e adiciona a rede na tabela de roteamento. O endereço IP do remetente é utilizado como o hop seguinte.
O protocolo RIP evita que loops façam contagens indefinidas aplicando um limite ao número de hops permitidos no caminho entre a origem e o destino; o número máximo de hops permitidos em um caminho é 15. Se um roteador recebe uma atualização uma entrada nova ou alterada, e aumentando o valor da métrica em 1 faz com que a métrica seja maior que a permitida (isto é, maior que 16), a rede de destino é considerada inalcançável. O lado negativo desta estabilidade é que ela limita o diâmetro máximo de uma rede RIP a ser menor do que 16 hops.
O RIP incluí uma série de outras características de estabilidade que são encontradas em outros protocolos. Estas características são projetadas para fornecer estabilidade a despeito de possíveis mudanças rápidas na topologia de uma rede. Por exemplo, o RIP implementa mecanismos para evitar que informações incorretas de roteamento sejam propagadas (como split horizon e o holddown).
O RIP utiliza diversos temporizadores para avaliar seu desempenho. Entre eles, temos um temporizador para as atualizações de roteamento, um para o timeout (estouro do tempo permitido para uma operação), e outro para o esvaziamento da memória. O temporizador de atualização marca o intervalo entre as atualizações periódicas. Geralmente, é fixado em 30 segundos, com uma quantidade pequena e aleatória adicionada sempre que o temporizador é zerado; isto é feito para evitar o possível congestionamento causado por todos os roteadores tentando atualizar seus vizinhos simultaneamente. Cada entrada da tabela de roteamento tem um temporizador de timeout associada a ela. Quando este expira, a rota é marcada como inválida, mas é mantida na tabela até que o temporizador de esvaziamento da memória expire.
Nos itens seguintes, analisaremos o formato dos pacotes utilizados em RIP e RIP-2.
1. Formato do pacote RIP
A tabela 1 demonstra o formato do pacote RIP.
Número de octetos |
1 |
1 |
2 |
2 |
2 |
4 |
4 |
4 |
4 |
Nome do campo |
controle |
versão |
zero |
AFI |
zero |
endereço IP |
zero |
zero |
métrica |
Os campos do pacote RIP mostrado na Tabela 1 significam:
Controle: indica se o pacote é de requisição ou resposta. A requisição pede a um roteador que envie toda ou parte de sua tabela de roteamento. A resposta pode ser uma atualização regular de roteamento não solicitada ou uma resposta a uma requisição. Respostas contêm entradas para a tabela de roteamento. Pacotes múltiplos são utilizados para transportar informações de tabelas de roteamento grandes.
Versão: especifica a versão de RIP utilizada. Este campo pode sinalizar versões potencialmente incompatíveis.
Zero: Este campo, na prática, não é utilizado, de acordo com o RFC 1058; foi adicionado somente para fornecer compatibilidade com versões de RIP utilizadas antes da padronização. O nome vem do seu valor padrão, zero.
Address-Family Identifier (AFI): especifica a família de endereços utilizada. O protocolo RIP é projetado para carregar informações de roteamento para diferentes tipos de protocolo. Cada entrada tem um identificador da família de endereços sendo especificada. Por exemplo, o AFI para a família IP é 2.
Endereço IP: especifica o endereço IP da entrada.
Métrica: indica quantos saltos (roteadores) entre redes foram atravessados no caminho ao destinatário. O valor é de 1 até 15 para rotas válidas, e 16 para uma rota inalcançável.
OBS: Até 25 ocorrências dos campos AFI, endereço e métrico são permitidos em um único pacote RIP (até 25 destinatários podem ser listados em um pacote RIP).
2. Formato do pacote RIP-2
A especificação RIP-2 (descrita na RFC 1723) permite que mais informação seja incluída em pacotes RIP e fornece um mecanismo de autenticação simples, o que não é suportado no RIP. A Tabela 2 mostra o formato do pacote RIP-2.
Número de octetos |
1 |
1 |
2 |
2 |
2 |
4 |
4 |
4 |
4 |
Nome do campo |
controle |
versão |
não utilizado |
AFI |
tag de roteamento |
endereço de rede |
máscara de sub-rede |
próximo hop |
métrica |
Temos as seguintes descrições para os campos da Tabela 2:
controle, endereço IP, métrico: igual ao RIP
versão: especifica a versão do protocolo RIP utilizada. Em um pacote RIP implementando algum dos campos do RIP-2 ou usando autenticação, o valor é colocado em 2.
não utilizado: recebe o valor zero.
Address Family Identifier (AFI): especifica a família de endereços utilizada. Este campo funciona de forma similar ao RIP, com apenas uma exceção: se o valor para a primeira entrada na mensagem é 0xFFFF, a continuação da entrada contém informações de autenticação. Atualmente, o único tipo de autenticação é por senha.
tag de roteamento: fornece um meio de diferenciar rotas internas (utilizando RIP), e rotas externas (com outros protocolos).
máscara de sub-rede: contém a máscara de sub-rede para a entrada. Se for zero, nenhuma máscara de sub-rede foi especificada para a entrada.
próximo hop: indica o endereço IP do próximo salto para o qual os pacotes da entrada devem ser encaminhados.
OBS: Até 25 ocorrências dos campos AFI, endereço e métrico são permitidos em um único pacote RIP (até 25 destinatários podem ser listados em um pacote RIP). Se o campo API indicar uma mensagem de autenticação, somente 24 entradas para a tabela de roteamento podem ser especificadas. Supondo que entradas individuais na tabela não estão fragmentadas em múltiplos pacotes, o RIP não precisa de um mecanismo para re-seqüenciar datagramas contendo atualizações da tabela de roteamento de roteadores vizinhos.
Apesar de sua idade e do surgimento de protocolos de roteamento mais sofisticados, como será explicado a seguir, o RIP está longe de tornar-se obsoleto. O RIP é um protocolo maduro, estável, plenamente utilizado e fácil de configurar. Sua simplicidade é adequada para o uso em redes pequenas e em pequenos sistemas autônomos, que não têm tantos caminhos redundantes que justifiquem o uso de protocolos mais sofisticados.
Próxima seção: Open Shortest Path First (OSPF)
Seção anterior: Introdução