OSPF Open Shortest Path First Daniel Gurgel CCNP CCDP CCIP RHCE gurgel@secrel.net.br
OSPF Visão Geral Cria uma relação com vizinhos através da troca (envia e recebe) de pacotes hello (224.0.0.5) Os roteadores devem concordar com os mesmos parâmetros de Hello: Máscara de subrede Subnet Hellor timer (10seg) e Dead timer (40seg) Área e autenticação (se utilizado) Anexa todos as LSAs gerados pelos roteadores OSPF para criar um banco de dados Link-State (LSDB) Usa o algoritmo SPF para calcular o caminho mais curto para cada destino e colocá-lo na tabela de roteamento. Possui 3 tabelas: Neighbor, Database e Roteamento
Estado entre Vizinhos O estado OSPF entre vizinhos é a percepção que o roteador tem para o estabelecimento de vizinhança: DOWN: Quando o roteador já conhece o vizinho e o mesmo apresenta alguma falha (uma interface falha). INIT: A relação (troca de hellos) está sendo inicializada. TWO-WAY: Após a troca de hellos contento o Router ID do vizinho e após a confirmação que todos os parâmetros estão corretos. EXCHANGE STATE: Os roteadores estão aptos a receber e trocar informações. FULL: Ambos os roteadores conhecem exatamente os mesmos detalhes do LSDB e são completamente adjacentes, a troca de banco de dados foi concluída. Após o estabelecimento do estado 2WAY, os roteadores devem decidir como trocar informações (Topologia ou LSAs).
Tabelas do OSPF OSPF Neighbor Table: Tabela de vizinhos. OSPF Topology Table: Banco de dados de LSAs, contento todas as informações de vizinhos, custos e rotas. Routing Table: Tabela de encaminhamentos, contém a melhor rota para um determinado destino.
Terminologia OSPF Os roteadores também possuem funções específicas dentro da rede: DR (Designated Router): Ponto central para troca de informações de roteamento (LSDB) BDR (Backup Designated Router): Backup para o DR. DROther: Todos os outros roteadores, exceto DR e o BDR.
Eleição do DR e BDR Quando há a necessidade de um DR, os roteadores vizinhos realizam uma eleição, os roteadores olham dois campos dentro dos pacotes Hello recebidos e escolhem o DR com base nos seguintes critérios: 1. O roteador que enviar o Hello com a definição de prioridade do OSPF mais alta se torna o DR. (config-if)# ip ospf priority [value] Uma prioridade 0 significa que a interface em questão não será considerada no processo de eleição do DR / BDR
Eleição do DR e BDR 2. Existindo empate entre as prioridades, o router-id mais alto ganha. O router id é um numero de 32 bits, a escolha ocorre no endereço mais alto de uma loopback (Up/Up), ou seguindo o endereço mais alto em uma interface física ativa. O router-id pode ser configurado manualmente através do comando: (config-router)# router-id [A.B.C.D] Se um novo e melhor candidato surgir depois que o DR ou BDR tiverem sido eleitos, o novo candidato não substitui o DR ou BDR existentes. Para reiniciar o processo OSPF, use o comando: RouterX# clear ip ospf process
Terminologia para o projeto do OSPF ABR (Area Border Router): Roteador com interfaces conectadas à área backbone e pelo menos outra área. ASBR (Autonomous System Border Router): Conecta com roteadores que não utilizam OSPF para troca de rotas externas para dentro e para fora do domínio OSPF. Área: Conjunto de roteadores e links que compartilham as mesmas informações de LSDB, mas não com outras áreas. Área 0 ou Backbone: Área de transito onde todas as outras áreas devem se conectar Inter-Área: Rota de uma subnet de uma área ao qual o roteador não faz parte. Intra-Área: Rota de uma subnet dentro da mesma área no qual o roteador faz parte.
Terminologia para o projeto do OSPF Minimiza a entradas de tabela de roteamento Identifica um alteração de topologia dentro de uma área
O Algoritmo SPF (Shortest Path First) 10 1 10 1 1 Coloca cada roteador na raiz de uma árvore e calcula o caminho mais curto para cada destino baseado na soma dos custos
Métricas do OSPF O Cisco IOS utiliza as larguras de banda cumulativas nas interfaces de saída do roteador para a rede de destino como o valor de custo. 10^8 é o custo padrão utilizado como referência para cálculo do OSPF
Métricas do OSPF O OSPF então utiliza o Bandwith para a métrica de roteamento, seguindo a fórmula abaixo: Custo = 10 8 / bw em bps ou 100.000.000 / bandwidth em bps Por exemplo, podemos calcular assim o custo de uma interface 100 Mbps (802.3u) que deverá ser: Custo = 100.000.000 / 100.000.000 = 1 O que acontece com o custo de uma interface com 1Gbps ou maior? Observe que em relação ao custo precisamos fazer alguns ajustes nos links de 1Gbps. Se você usar a fórmula padrão do OSPF, você terá : Custo = 10 8 / 10 9 = 0,1 ~ 1
Métricas do OSPF Existem duas soluções para este problema. Podemos informar o custo manualmente em cada interface participante do OSPF ou forçar o cálculo automático das métricas do OSPF. Para o cálculo manual, usamos o seguinte subcomando de interface: (config-if)# ip ospf cost [value] O custo pode ser explicitamente definido em um valor entre 1 e 65535
Métricas do OSPF Para o cálculo automático, o subcomando OSPF: (config-router)# auto-cost reference-bandwidth [bw-ref] Quando este comando for necessário, recomenda-se que ele seja utilizado em todos os roteadores de modo que a métrica de roteamento OSPF permaneça consistente (em megabits por segundo). O valor padrão é equivalente a 100. Para aumentá-lo a velocidades de 10GigE, você precisa alterar a largura de banda de referência para 10000. Para alterar o valor de definição de uma interface, utilizar o subcomando de interface: (config-if)# bandwidth [value]
Métricas do OSPF Router# sh ip ospf interface fa0/0 FastEthernet0/0 is up, line protocol is up Internet address is 10.1.1.1/24, Area 0 Process ID 10, Router ID 10.1.1.1, Network Type BROADCAST, Cost: 1... Router(config)# int fa0/0 Router(config-if)# bandwidth 64... Router# sh ip ospf interface fa0/0 FastEthernet0/0 is up, line protocol is up Internet address is 10.1.1.1/24, Area 0 Process ID 10, Router ID 10.1.1.1, Network Type BROADCAST, Cost: 1562 Conforme a fórmula, temos: Custo = BW-REF / BW-DEF Custo = 10^8 / 64 Custo = 1562
Configurando uma única área no OSPF Router(config)# router ospf process-id Define o OSPF como o protocolo de roteamento IP Router(config-router)# network [address] [wildcard-mask] area [area-id] Atribui redes para uma área específica do OSPF
Verificando a Configuração RouterX# show ip protocols Verifica se o OSPF está configurado RouterX# show ip route Exibe todas as rotas aprendidas pelo roteador RouterX# show ip route Codes: I - IGRP derived, R - RIP derived, O - OSPF derived, C - connected, S - static, E - EGP derived, B - BGP derived, E2 - OSPF external type 2 route, N1 - OSPF NSSA external type 1 route, N2 - OSPF NSSA external type 2 route Gateway of last resort is 10.119.254.240 to network 10.140.0.0 O 10.110.0.0 [110/5] via 10.119.254.6, 0:01:00, Ethernet2 O IA 10.67.10.0 [110/10] via 10.119.254.244, 0:02:22, Ethernet2 O 10.68.132.0 [110/5] via 10.119.254.6, 0:00:59, Ethernet2 O 10.130.0.0 [110/5] via 10.119.254.6, 0:00:59, Ethernet2 O E2 10.128.0.0 [170/10] via 10.119.254.244, 0:02:22, Ethernet2...
Verificando a Configuração RouterX# show ip ospf Exibe o ID do roteador OSPF, temporizadores e estatísticas RouterX# show ip ospf Routing Process "ospf 50" with ID 10.64.0.2 <output omitted> Number of areas in this router is 1. 1 normal 0 stub 0 nssa Number of areas transit capable is 0 External flood list length 0 Area BACKBONE(0) Area BACKBONE(0) Area has no authentication SPF algorithm last executed 00:01:25.028 ago SPF algorithm executed 7 times <output omitted>
Verificando a Configuração RouterX# show ip ospf interface Exibe as informações da área e adjacências RouterX# show ip ospf interface Ethernet 0 is up, line protocol is up Internet Address 192.168.254.202, Mask 255.255.255.0, Area 0.0.0.0 AS 201, Router ID 192.168.99.1, Network Type BROADCAST, Cost: 10 Transmit Delay is 1 sec, State OTHER, Priority 1 Designated Router id 192.168.254.10, Interface address 192.168.254.10 Backup Designated router id 192.168.254.28, Interface addr 192.168.254.28 Timer intervals configured, Hello 10, Dead 60, Wait 40, Retransmit 5 Hello due in 0:00:05 Neighbor Count is 8, Adjacent neighbor count is 2 Adjacent with neighbor 192.168.254.28 (Backup Designated Router) Adjacent with neighbor 192.168.254.10 (Designated Router)
Verificando a Configuração RouterX# show ip ospf neighbor Exibe as informações dos vizinhos OSPF RouterX# show ip ospf neighbor ID Pri State Dead Time Address Interface 10.199.199.137 1 FULL/BDR 0:00:31 192.168.80.37 FastEthernet0/0 172.16.48.1 1 FULL/DROTHER 0:00:33 172.16.48.1 FastEthernet0/1 172.16.48.200 1 FULL/DROTHER 0:00:33 172.16.48.200 FastEthernet0/1 10.199.199.137 5 FULL/DR 0:00:33 172.16.48.189 FastEthernet0/1
Verificando a Configuração RouterX# show ip ospf neighbor 10.199.199.137 Neighbor 10.199.199.137, interface address 192.168.80.37 In the area 0.0.0.0 via interface Ethernet0 Neighbor priority is 1, State is FULL Options 2 Dead timer due in 0:00:32 Link State retransmission due in 0:00:04 Neighbor 10.199.199.137, interface address 172.16.48.189 In the area 0.0.0.0 via interface Fddi0 Neighbor priority is 5, State is FULL Options 2 Dead timer due in 0:00:32 Link State retransmission due in 0:00:03
Load Balance com OSPF Caminhos com o custo igual Por padrão, até quatro caminhos de custo igual podem ser colocados na tabela de roteamento Até 16 caminhos podem ser configurados: (config-router)# maximum-paths [value] Para garantir caminhos com custo igual, você pode alterar o custo de um link em particular: (config-if)# ip ospf cost [value]
Load Balance com OSPF (config)# router ospf 100 (config-router)# maximum-paths 6 (config)# interface range fa0/1-6 (config-router)# ip ospf cost 5