Open Shortest Path First – Wikipédia, a enciclopédia livre
Este artigo ou secção contém uma lista de referências no fim do texto, mas as suas fontes não são claras porque não são citadas no corpo do artigo, o que compromete a confiabilidade das informações. (Dezembro de 2009) |
Pilha de protocolos TCP/IP |
---|
Camada de aplicação |
Camada de transporte |
Camada de rede |
Camada de enlace de dados |
O OSPF - Open Shortest Path First - é um protocolo de roteamento para redes que operam com protocolo IP; desenvolvido pelo grupo de trabalho da IGPs (Interior Gateway Protocol) da IETF (Internet Engineering Task Force), foi descrito inicialmente em 1989 pela RFC 1131. Baseado no algoritmo SPF - Shortest Path First (menor rota primeiro), o OSPF foi criado para substituir o protocolo RIP empregado no final da década de 1980 na então Arpanet (atual Internet) e que apresentava diversos problemas e limitações para operar satisfatoriamente em uma rede de porte.
Atualmente o OSPF é um dos protocolos de roteamento mais empregados, sendo suportado pela maioria dos roteadores, assim como por servidores que implementem os sistemas operacionais Linux e Unix. Versátil, o OSPF pode ser empregado tanto a redes de pequeno quanto grande porte.
Princípio de funcionamento
[editar | editar código-fonte]Embora possua inúmeros detalhes de implementação e configuração, o princípio de roteamento do OSPF é relativamente simples. Ao invés de manter uma tabela com todas as rotas possíveis (como faz o protocolo RIP), cada nó (roteador) OSPF contêm dados sobre todos os links da rede. Cada entrada da tabela de roteamento OSPF contém um identificador de interface, um número do link e uma distância ou custo (esse último pode ser atribuído pelo administrador da rede). Com todas essas informações, cada nó possui uma visão da topologia da rede e pode, dessa forma, descobrir sozinho qual é a melhor rota para um dado destino.
Caso ocorra uma alteração num dos links de rede, os nós adjacentes avisam seus vizinhos. Esses por sua vez, verificam o número da mensagem ou a hora no cabeçalho do pacote OSPF para saberem se este aviso é novo ou velho. Se o aviso for novo, é feita a verificação da existência da entrada. Caso ela não exista, é adicionada à tabela de roteamento. Se a entrada já existir, são comparados os números da mensagem recebida com a entrada existente na tabela de roteamento. Se o número da mensagem recebida for maior que a entrada existente, a entrada é substituída, caso contrário, a entrada da tabela é transmitida como uma nova mensagem. Se os números forem iguais, o nó não executa nenhuma ação.
Principais características
[editar | editar código-fonte]Há duas características principais no OSPF. A primeira, é que se trata de um protocolo aberto, o que significa que suas especificações são de domínio público; suas especificações podem ser encontradas na RFC (Request For Comments) número 1247 e também na RFC 2328 . A segunda, é que ele se baseia no algoritmo SPF, também chamado de algoritmo de Dijkstra, nome de seu criador.
OSPF é um protocolo de roteamento do tipo link-state, que envia avisos sobre o estado da conexão (link-state advertisements, LSA) a todos os outros roteadores em uma mesma área hierárquica. Informações sobre interfaces ligadas, métrica usada e outras variáveis são incluídas nas LSAs. Ao mesmo tempo em que o roteador OSPF acumula informações sobre o estado do link, ele usa o algoritmo SPF para calcular a melhor rota para cada nó.
Por ser um protocolo do tipo link-state, o OSPF difere-se do RIP e do IGRP, que são protocolos de roteamento baseados em vetores de distância. Os roteadores que trabalham com algoritmos de vetor de distância, a cada atualização, enviam toda ou parte de suas tabelas de roteamento para seus vizinhos.
Pacote OSPF
[editar | editar código-fonte]Ao contrário de outros protocolos de roteamento, o OSPF não carrega dados por meio de um protocolo de transporte, como o UDP (User Datagram Protocol) ou o TCP (Transmission Control Protocol). Em vez disso, o OSPF forma datagramas IP diretamente, empacotando-os usando o número de protocolo 89 para o campo "Protocolo IP" ¹. Há cinco tipos distintos de pacotes OSPF e cada um dos cinco tipos iniciam com um cabeçalho padrão de 24 bytes, são eles:
- Pacote de aviso. (Hello packet)
- Pacote de informações do Banco de Dados (Database Description packet)
- Requisição de estado de link (Link State Request packet)
- Atualização de estado de link (Link State Update packet)
- Recebimento de informações de link (Link State Acknowledgment packet)
Cabeçalho do pacote OSPF
[editar | editar código-fonte]Todo pacote OSPF inicia com um cabeçalho de 24 bytes. Esse cabeçalho contem todas as informações necessárias para determinar se o pacote deve ser aceito para futuras operações. O pacote tem a seguinte estrutura:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Version # | Type | Packet length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Router ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Area ID | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | AuType | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
- Version - O número da versão do protocolo OSPF.
- Type - O tipo do pacote OSPF.
Tipo Descrição ________________________________ 1 Hello 2 Database Description 3 Link State Request 4 Link State Update 5 Link State Acknowledgment
- Packet length - O tamanho do pacote em bytes. O tamanho inclui também o cabeçalho.
- Router ID - O identificador do roteador que enviou o pacote.
- Area ID - Um número de 32 bits que indica a área a qual o pacote pertence. Todo pacote é associado a uma única área.
- Checksum - O checksum do pacote completo, incluindo o cabeçalho, mas excluindo os 64 bits de autenticação.
- AuType - Indica o esquema de autenticação a ser usado no pacote.
- Authentication - Um campo de 64 bits usado para informar o esquema de autenticação a ser utilizado.