Um roteador Brocade executando o NetIron 5.2 e uma emulação Dynamips executando o IOS 12.4 falham ao usar de maneira confiável caminhos de custo iguais no que parece ser uma configuração muito simples. Digo "de forma confiável" porque observei muito brevemente o comportamento esperado do Brocade, mas foi após um longo período de inatividade e desapareceu assim que perturbei o sistema.
Caso seja relevante, estou configurando um destino anycast para um serviço de rede sem estado. Essa será uma configuração específica do site, com pouca ou nenhuma diversidade de tamanho de caminho de rede; portanto, o objetivo do recurso anycast é principalmente para redundância de failover e parcialmente para compartilhamento de carga. Minha pergunta diz respeito à função de compartilhamento de carga.
Minha rede de protótipos se parece com isso.
R1 <--N1--> Rcore <--N2--> R2
R1
e R2
anuncie o destino anycast via OSPF. Se Rcore
tiver um custo idêntico nas interfaces N1
e N2
, e o destino anycast tiver um custo idêntico em cada um dos outros roteadores, eu esperaria encontrar dois caminhos de custo iguais na Rcore
tabela de roteamento. Eu não, pelo menos nem sempre, e nem mesmo previsivelmente. Por que não?
Entre outros, detalhes potencialmente relevantes são os seguintes.
Rcore
é um ABR conectandoN1
eN2
, que estão em áreas NSSA separadas, ao backbone (não mostrado).- A inspeção do
Rcore
LSDB confirma que os LSAs esperadosR1
eR2
estão corretamente instalados e contêm o destino anycast com a métrica correta.
Eu considerei três explicações possíveis.
- Não entendo como configurar e operar o ECMP nessas plataformas. Provavelmente, e espero encontrar aqui uma iluminação que não consegui encontrar nos documentos do fornecedor.
- Não entendo a interação entre as áreas OSPF, ECMP, anycast etc. Não acho muito provável, mas estou preparado para aprender alguma coisa.
- Essas implementações de dois fornecedores sofrem do mesmo bug, recurso incorreto ou algo assim. Suponho que isso poderia acontecer.
Editar Exemplo de configuração e saída adicionados para implementação do Dynamips / Dynagen.
Configs
Roteador R1
!
version 12.4
!
hostname R1
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
ip ospf cost 1
!
interface FastEthernet0/0
ip address 10.1.0.2 255.255.255.252
ip ospf cost 2
!
router ospf 1
router-id 10.1.0.2
log-adjacency-changes
area 0.0.0.1 nssa no-summary
passive-interface Loopback0
network 1.1.1.1 0.0.0.0 area 0.0.0.1
network 10.1.0.0 0.0.0.3 area 0.0.0.1
!
line console 0
exec-timeout 0 0
!
end
Roteador R2
!
version 12.4
!
hostname R2
!
interface Loopback0
ip address 1.1.1.1 255.255.255.255
ip ospf cost 1
!
interface FastEthernet0/0
ip address 10.2.0.2 255.255.255.252
ip ospf cost 2
!
router ospf 1
router-id 10.2.0.2
log-adjacency-changes
area 0.0.0.2 nssa no-summary
passive-interface Loopback0
network 1.1.1.1 0.0.0.0 area 0.0.0.2
network 10.2.0.0 0.0.0.3 area 0.0.0.2
!
line console 0
exec-timeout 0 0
!
end
Roteador Rcore
!
version 12.4
!
hostname Rcore
!
interface Loopback0
ip address 10.0.0.1 255.255.255.255
ip ospf cost 4
!
interface FastEthernet0/0
ip address 10.1.0.1 255.255.255.252
ip ospf cost 2
!
interface FastEthernet0/1
ip address 10.2.0.1 255.255.255.252
ip ospf cost 2
!
router ospf 1
log-adjacency-changes
area 0.0.0.1 nssa no-summary
area 0.0.0.2 nssa no-summary
passive-interface Loopback0
network 10.0.0.1 0.0.0.0 area 0.0.0.0
network 10.1.0.0 0.0.0.3 area 0.0.0.1
network 10.2.0.0 0.0.0.3 area 0.0.0.2
!
line console 0
exec-timeout 0 0
!
end
Resultado
Roteador Rcore
Roteador LSA da R1
Rcore#sh ip ospf database router 10.1.0.2
OSPF Router with ID (10.0.0.1) (Process ID 1)
Router Link States (Area 0.0.0.1)
LS age: 1618
Options: (No TOS-capability, DC)
LS Type: Router Links
Link State ID: 10.1.0.2
Advertising Router: 10.1.0.2
LS Seq Number: 80000002
Checksum: 0x726F
Length: 48
Number of Links: 2
Link connected to: a Stub Network
(Link ID) Network/subnet number: 1.1.1.1
(Link Data) Network Mask: 255.255.255.255
Number of TOS metrics: 0
TOS 0 Metrics: 1
Link connected to: a Transit Network
(Link ID) Designated Router address: 10.1.0.2
(Link Data) Router Interface address: 10.1.0.2
Number of TOS metrics: 0
TOS 0 Metrics: 2
Roteador LSA da R2
Rcore#sh ip ospf database router 10.2.0.2
OSPF Router with ID (10.0.0.1) (Process ID 1)
Router Link States (Area 0.0.0.2)
LS age: 1766
Options: (No TOS-capability, DC)
LS Type: Router Links
Link State ID: 10.2.0.2
Advertising Router: 10.2.0.2
LS Seq Number: 80000002
Checksum: 0x8A53
Length: 48
Number of Links: 2
Link connected to: a Stub Network
(Link ID) Network/subnet number: 1.1.1.1
(Link Data) Network Mask: 255.255.255.255
Number of TOS metrics: 0
TOS 0 Metrics: 1
Link connected to: a Transit Network
(Link ID) Designated Router address: 10.2.0.2
(Link Data) Router Interface address: 10.2.0.2
Number of TOS metrics: 0
TOS 0 Metrics: 2
Trecho da tabela de roteamento
Rcore#sh ip route 1.1.1.1
Routing entry for 1.1.1.1/32
Known via "ospf 1", distance 110, metric 3, type intra area
Last update from 10.1.0.2 on FastEthernet0/0, 00:30:54 ago
Routing Descriptor Blocks:
* 10.1.0.2, from 10.1.0.2, 00:30:54 ago, via FastEthernet0/0
Route metric is 3, traffic share count is 1
Respostas:
Meu primeiro pensamento seria que o OSPF está pensando que é o mesmo LSA em vez de simplesmente o mesmo prefixo. Eu não sei muito sobre brocado, mas com as saídas LSA da caixa da Cisco eu provavelmente poderia lhe contar mais.
Em geral, para a Cisco, se as rotas forem iguais no protocolo, ambas serão apresentadas na tabela de roteamento. A tabela de roteamento, por padrão, instalará os dois caminhos e executará o ECMP. Se as métricas ou protocolos diferirem, eles não serão ECMP. Isso também se aplicaria a diferentes LSAs para o mesmo prefixo.
fonte
Estou pensando se o ECMP faz sentido para anycast. O roteamento deve direcionar anycast para o destino logicamente mais próximo no qual um host seja favorecido em relação ao outro. Mesmo no caso em que os hosts anycast são equidistantes, eu ainda esperaria que isso permanecesse verdadeiro. Quanto ao compartilhamento de carga do ECMP, acho que o destino é impossível com um / 32. Talvez haja algoritmos de compartilhamento de carga que considerem a fonte. Por pacote parece arriscado, mesmo para DNS. Acredito que a maioria das soluções anycast prontas para uso executa o ospf no host.
Foi preciso pesquisar um pouco, mas o trecho a seguir de rfc2178 confirma a causa.
16,8. Caminho múltiplo de custo igual
O protocolo OSPF mantém várias rotas de custo igual para todos os destinos. Isso pode ser visto nas etapas usadas acima para calcular a tabela de roteamento e na definição da estrutura da tabela de roteamento.
Cada uma das várias rotas será do mesmo tipo (intra-área, inter-área, tipo 1 externo ou tipo 2 externo), custo e terá a mesma área associada . No entanto, cada rota especifica um próximo salto e roteador de publicidade separados.
fonte
Não consigo reproduzir isso em meu laboratório usando 12.4 (24). Mesma topologia, RCore área 0 loopback, R1 com lo0 e interface na área 1, R2 com lo0 e interface na área 2 (ambos NSSA), a rota redistribuída é selecionada para o ECMP no Rcore:
Possibilidades em que posso pensar: Dependendo de como a rota está entrando no OSPF e que tipo de rota OSPF é usado, o custo para o roteador ASBR pode / não ser levado em consideração no processo de seleção de rota (para que o ECMP funcione, ambos os custos de rota , e o custo para o ASBR deve corresponder). Ver a métrica no LSA real para ambos pode ajudar.
Consegui reproduzir isso no IOS imitando sua configuração - colocando o anycast em uma interface e colocando a interface em uma área. Se você precisar de ECMP, considere redistribuir a rota no OSPF, pois isso parece funcionar.
fonte
Dependendo do hardware do Brocade que você estiver usando (MLX? CER? XMR?), Convém atualizar o software. Foram corrigidos vários bugs nas árvores de software 5.3 (e 5.4, dependendo do seu hardware), cujos sintomas estavam relacionados aos custos de rota do OSPF que não estavam sendo atualizados corretamente. Não conheço todos os critérios para ver os bugs, mas alguns deles foram: Se o custo foi alterado em uma porta 1gig ou em uma interface de loopback em um roteador executando o OSPF, a alteração não foi processada e o custo não foi atualizado .
Sei que você está vendo isso nas plataformas de dois fabricantes, por isso é mais provável que seja um problema de configuração. Percebo também que o velho "suporte técnico" atualiza seu software muitas vezes pode valer nada além de um rolo de olho. Dito isto, pode ser algo para se ter em mente.
fonte