Open Shortest Path First
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.