Open Shortest Path First (OSPF)

Vantagens

Vejamos agora, porque a maioria dos especialistas em rede preferem os protocolos por estado de conecção.

Enquanto os protocolos vetor-distância convergem proporcionalmente ao número de nós na rede, necessitando, para isso, de 0(N.M) interações (Mà nº links, Nà nº nós), os protocolos de estado de conecção convergem em 0(M.log M) interações. Além disso, nos protocolos vetor-distância, a mensagem é proporcional ao número de destinos, se a rede é muito grande, cada mensagem vai ter que ser subdividida em vários pacotes, diminuindo mais ainda a velocidade de convergência.

Ainda, nos protocolos de estado do link imediatamente após a transmissão e cálculo, todas as rotas da rede estão sanadas, isto é, não há loops nem contagem ao infinito.

O OSPF V.2 suporta vários tipos de métrica, de forma que a decisão sobre o menor caminho pode ser tomada em relação ao tempo, ao custo por bit ou confiabilidade. Tornando, portanto, a escolha do melhor caminho mais flexível, uma vez que cada meio tem características diferentes.

Foi então criada uma extensão indicando o tipo de métrica usada num determinado pacote, para que o nó que o recebeu não use uma outra métrica no seu envio e prejudique o roteamento provocando loops ou atrasos. Esta extensão só é suportada na versão 2 do OSPF.

Nem sempre a melhor rota entre X e Y deve ser a única a ser utilizada, pois isto pode implicar em sua sobrecarga. Análises matemáticas provaram que a divisão do tráfico em duas rotas é muito mais eficiente. Isto, apesar de fazer com que as filas em nós intermediários fiquem desiguais, elas são reduzidas no nós. Além disto, se todos escolhessem uma única rota e ela ficasse indisponível, haveria um grande reroteamento para outro caminho, possivelmente o congestionando. Mas se o tráfico fosse separado em vários caminhos, não haveria muito transtorno caso uma determinada rota ficasse inacessível.

O algoritmo que realiza este tipo de análise é bastante complexo, pois, como dificilmente uma fonte e um destino tem duas rotas possíveis exatamente iguais, é feita uma análise se as rotas são suficientemente iguais. Além disto, deve-se decidir a fração do tráfico que deve ser enviado em cada uma delas.

Pensando simplificadamente, se tenho uma rota do tipo:

Se tratando do tráfico entre X e Z, seria razoável se mandássemos 2/3 do pacote pelo caminho mais curto e 1/3 por Y. Mas isto gera um conflito se levarmos em consideração o tráfico entre Y e Z, que ao enviar por X , seria formado um loop. Para evitar isto, foi aplicada a seguinte regra: um pacote que passaria por Z, só poderá passar por Y se a distância de Y ao destino for menor que a distância de Z. Com isto, determinamos todas as rotas secundárias que alcançarão um determinado nó. A descoberta de todas as rotas possíveis para alcançá-lo exigiria uma análise de cada link intermediário. O que daria um "pouco" mais de trabalho.