Roteamento


A implementação IP é responsável por levar datagramas aos seus endereços de destino. Mas como será que isso é realizado?

A tarefa de descobrir como entregar um datagrama ao seu destino é referenciado como "roteamento". De fato, muitos detalhes dependem de cada implementação. No entanto algumas coisas gerais podem ser ditas.

Primeiro, é necessário entender o modelo no qual o IP é baseado. O IP assume que um sistema é ligado a alguma rede local. Nós assumimos que o sistema pode enviar datagramas para qualquer outro sistema dentro de sua própria rede. (No caso da Ethernet, ele simplesmente encontra o endereço Ethernet do sistema destinatário, e coloca o datagrama na rede Ethernet).

O problema aparece quando o sistema tem que enviar um datagrama para um sistema em uma rede diferente.

Este problema é manipulado por gateways.

Um gateway é um sistema que conecta uma rede com uma ou mais redes. Gateways geralmente são computadores normais que tem mais do que uma interface de rede.

Por exemplo, nós temos uma máquina Unix que tem duas interfaces Ethernet diferentes. Assim ela é conectada às redes 128.6.4 e 128.6.3. Esta máquina pode atuar como um gateway entre estas duas redes. O software nesta máquina deve ser setado de forma que ela irá passar datagramas de uma rede para a outra. Isto é, se uma máquina da rede 128.6.4 envia um datagrama para o gateway, e o datagrama é endereçado para uma máquina da rede 128.6.3, o gateway irá enviar o datagrama para o seu destino. Centros de comunicação maiores geralmente têm gateways que conectam um número de diferentes redes. (Em muitos casos, sistemas de gateways de propósito especial provêm performance ou segurança melhor do que os sistemas de propósito geral atuando como gateways. Um número de vendedores vendem tais sistemas.)

O roteamento no IP é baseado inteiramente em cima do número da rede do endereço do destinatário.

Cada computador tem uma tabela de números de redes. Para cada número de rede, um gateway é listado, correspondendo ao gateway usado para acessar esta rede. Note que o gateway não tem que estar conectado diretamente com a rede. Ele simplesmente tem que ser o melhor lugar a ir para chegar nela.

Por exemplo em Rutgers, nossa interface com a NSFnet é no John von Neuman Supercomputer Center (JvNC). Nossa conexão com o JvNC é via uma linha serial de alta velocidade conectada a um gateway cujo endereço é 128.6.3.12. Sistemas na rede 128.6.3 listarão 128.6.3.12 como o gateway para muitas redes fora do campus. No entanto sistemas na rede 128.6.4 listarão 128.6.4.1 como o gateway para estas mesmas redes fora do campus. 128.6.4.1 é o gateway entre redes 128.6.4 e 128.6.3, portanto ele é o primeiro passo para alcançarmos o JvNC.

Quando um computador quer enviar um datagrama, ele primeiro checa para ver se o endereço de destino está no sistema da própria rede local. Se for o caso, o datagrama pode ser enviado diretamente. De outra forma, o sistema espera encontrar uma entrada na tabela para a rede do endereço de destino. O datagrama é enviado para o gateway listado naquela entrada.

Esta tabela pode tornar-se muito grande. Por exemplo, a Internet inclui agora diversas centenas de redes individuais. Assim várias estratégias têm sido desenvolvidas para reduzir o tamanho da tabela de roteamento.

Uma estratégia é depender de "roteadores default". Frequentemente, há somente um gateway para fora da rede. Este gateway deve conectar uma Ethernet local com o backbone . Neste caso, nós não precisamos ter uma entrada separada para todas as redes do mundo. Nós simplesmente definimos aquele gateway como "default". Quando nenhum roteador específico é encontrado para um datagrama , o datagrama é enviado ao gateway default. Um gateway default pode ser usado quando há diversos gateways em uma rede.

Há como o gateway enviar uma mensagem dizendo " Eu não sou o melhor gateway -- use este outro. " (A mensagem é enviada via ICMP. Veja o RFC 792).

A maioria dos softwares de rede são projetados para usar estas mensagens para adicionar entradas à sua tabela de roteamento.

Suponha que a rede 128.6.4 tenha dois gateways, 128.6.4.59 e 128.6.4.1. O 128.6.4.59 leva a diversas outras redes internas de Rutgers. O 128.6.4.1 leva indiretamente a NSFnet. Suponha que nós setamos 128.6.4.59 como gateway default, e não temos nenhuma outra entrada na tabela de rotemento. Agora o que acontece quando nós precisamos enviar um datagrama para MIT? MIT é a rede 18. Já que nós não temos nenhuma entrada para a rede 18, os datagramas irão ser enviados para o default, 128.6.4.59. Como já se esperava, este não é o gateway correto. Então ele irá enviar o datagrama para 128.6.4.1. Além disso ele retornará um erro dizendo "para alcançar a rede 18, use 128.6.4.1". Nosso software então irá adicionar uma entrada para a tabela de roteamento. Qualquer datagrama futuro para MIT irá diretamente para para 128.6.4.1 . (A mensagem de erro é enviada usando o protocolo ICMP. O tipo de mensagem é chamada "ICM redirect").

A maioria dos experts em IP recomendam que computadores individuais não tentem ficar informados sobre a rede inteira. Ao invés disso, eles deveriam começar com gateways default, e deixar os gateways dizer-lhes a rota, como já foi descrito. No entanto isto não diz como o gateway poderia encontrar estas rotas. Os gateways não podem depender desta estratégia. Eles têm que ter tabela de rotas completadas lealmente. Para isto, é necessário algum tipo de protocolo de roteamento. Um protocolo de roteamento é simplesmente uma técnica para os gateways encontrarem uns aos outros, e manterem-se atualizados sobre o melhor caminho para chegar a outras redes. O RFC 1009 contém uma revisão do projeto do gateway e roteamento. No entanto rip.doc é provavelmente uma introdução melhor para este assunto. Ele contém alguns materiais tutoriais, e uma detalhada descrição dos protocolos de roteamento mais usados.


texto original