Pourquoi ce routeur ne parvient-il pas à utiliser plusieurs routes à coût égal à partir d'OSPF?

16

Un routeur Brocade exécutant NetIron 5.2 et une émulation Dynamips exécutant IOS 12.4 ne parviennent pas à utiliser de manière fiable des chemins de coût égal dans ce qui semble être une configuration très simple. Je dis "de manière fiable" parce que j'ai observé très brièvement le comportement attendu du Brocade, mais c'était après une longue période d'inactivité et a disparu dès que j'ai perturbé le système.

Dans le cas où cela est pertinent, je mets en place une destination anycast pour un service réseau sans état. Ce sera une configuration spécifique au site, avec peu ou pas de diversité de longueur de chemin de réseau, donc le but de la capacité anycast est principalement pour la redondance de basculement et en partie pour le partage de charge. Ma question concerne la fonction de partage de charge.

Mon réseau prototype ressemble à ceci.

R1 <--N1--> Rcore <--N2--> R2

R1et R2annoncer la destination anycast via OSPF. Si Rcorea un coût identique sur ses interfaces N1et N2, et que la destination anycast a un coût identique pour chacun des autres routeurs, je m'attendrais à trouver deux chemins de coût égal dans la Rcoretable de routage. Je ne le fais pas, du moins pas toujours, et même pas de manière prévisible. Pourquoi pas?

Entre autres, les détails potentiellement pertinents sont les suivants.

  • Rcoreest une connexion ABR N1et N2, qui se trouvent dans des zones NSSA distinctes, à la dorsale (non illustrée).
  • L'inspection du RcoreLSDB confirme que les LSA attendus de R1et R2sont correctement installés, et contiennent la destination anycast avec la métrique correcte.

J'ai considéré trois explications possibles.

  1. Je ne comprends pas comment configurer et utiliser ECMP sur ces plateformes. C'est probable, et j'espère trouver ici des éclaircissements que je n'ai pas pu trouver dans les documents du vendeur.
  2. Je ne comprends pas l'interaction entre les zones OSPF, ECMP, anycast, etc. Je ne pense pas que ce soit très probable, mais je suis prêt à apprendre quelque chose de toute façon.
  3. Ces deux implémentations de fournisseurs souffrent du même bogue, d'une mauvaise fonctionnalité ou de quelque chose. Je suppose que cela pourrait arriver.

Édition Exemple de configuration et sortie ajoutées pour l'implémentation de Dynamips / Dynagen.

Configurations

Routeur 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

Routeur 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

Routeur 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

Production

Routeur Rcore

Routeur LSA à partir de 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

Routeur LSA à partir de 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

Extrait de table de routage

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
neirbowj
la source
Quel type d'itinéraire est l'anycast?
nicotine
@nicotine: l'adresse anycast est une adresse secondaire sur l'interface de bouclage. Dans la dernière permutation de cette configuration, il finit comme un réseau de stub dans un routeur LSA. Des extraits de configuration et des prises de terminal à suivre.
neirbowj
J'ai essayé de dépouiller la config et la sortie autant que possible mais pas trop. Les suggestions pour améliorer la densité de l'information sont les bienvenues.
neirbowj
Cela devrait fonctionner. Pouvez-vous publier la sortie à partir des commandes suivantes: afficher les protocoles IP afficher ip ospf rib debug routage ip Essayez ces commandes sur Rcore. Cela devrait nous donner quelques indices sur la raison pour laquelle les routes doubles ne sont pas installées. Votre sortie DB OSPF me convient parfaitement.
Daniel Dib
Si vous renvoyez le lien de l'itinéraire actif, préfère-t-il toujours l'itinéraire d'origine? Par exemple: dans votre sortie CLI, il montre la route active pointant vers 10.1.0.2. Si vous fermez l'interface à 10.1.0.2 assez longtemps pour que le voisinage OSPF se brise, puis la remettez en ligne, l'itinéraire d'origine vers 10.1.0.2 est-il réinstallé?
bigmstone

Réponses:

7

Ma première pensée serait que l'OSPF pense que c'est le même LSA au lieu de simplement le même préfixe. Je ne sais pas grand-chose sur le brocart, mais avec les sorties LSA de la box Cisco, je pourrais probablement vous en dire plus.

En général, pour Cisco, si les routes sont égales dans le protocole, elles seront toutes les deux présentées à la table de routage. La table de routage, par défaut, installera les deux chemins et effectuera l'ECMP. Si les métriques ou les protocoles diffèrent, ils ne seront pas ECMP. Cela s'appliquerait également à différents LSA pour le même préfixe.

Pete Lumbis
la source
Oui - les entrées de la base de données devraient nous dire - ont-ils la même adresse de transfert et le même routeur publicitaire?
nicotine
Je vais travailler sur la sortie de l'échantillon cet après-midi.
neirbowj
6

J'examine si ECMP a du sens pour anycast. Le routage doit diriger anycast vers la destination logiquement la plus proche dans laquelle un hôte serait favorisé par rapport à l'autre. Même dans le cas où les hôtes anycast sont équidistants, je m'attendrais toujours à ce que cela reste vrai. En ce qui concerne le partage de charge ECMP, je pense que la destination est impossible avec un / 32. Il existe peut-être des algorithmes de partage de charge qui tiennent compte de la source. Par paquet semble risqué, même pour DNS. Je crois que la plupart des solutions anycast prêtes à l'emploi exécutent ospf sur l'hôte.

A pris un peu de recherche, mais l'extrait suivant de rfc2178 confirme la cause.

16.8. Multipath à coût égal

Le protocole OSPF gère plusieurs routes à coût égal vers toutes les destinations. Cela peut être vu dans les étapes utilisées ci-dessus pour calculer la table de routage et dans la définition de la structure de la table de routage.

Chacune des routes multiples sera du même type (intra-zone, inter-zone, type 1 externe ou type 2 externe), de coût, et aura la même zone associée . Cependant, chaque route spécifie un prochain saut et un routeur publicitaire distincts.

Dennis Olvany
la source
1
Hmm, j'ai testé une seule zone et ECMP est présent sur le noyau. Cependant, je dirais quand même qu'il est inutile avec un / 32. Peut-être que ce qui suit est pertinent: morse.colorado.edu/~tlen5710/12s/OSPF.pdf
Dennis Olvany
Cela signifie que cette zone est l'un des critères pour l'ECMP. On dirait que différents domaines peuvent être le dealbreaker.
Dennis Olvany
OSPF sur l'hôte - oui, c'est le but. / 32 attribué comme adresse secondaire sur le bouclage. J'examine également la configuration de partage de charge, mais cela dépend en premier lieu d'ECMP.
neirbowj
5

Je ne peux pas reproduire cela dans mon laboratoire, en utilisant 12.4 (24). Même topologie, boucle RCore zone 0, R1 avec lo0 et interface dans la zone 1, R2 avec lo0 et interface dans la zone 2 (les deux NSSA), la route redistribuée est récupérée pour ECMP sur Rcore:

Routing entry for 10.20.0.0/16
  Known via "ospf 1", distance 110, metric 20, type NSSA extern 2, forward metric 6477
  Last update from 2.2.2.6 on Serial1/1, 00:02:23 ago
  Routing Descriptor Blocks:
    2.2.2.6, from 2.2.2.21, 00:02:23 ago, via Serial1/1
      Route metric is 20, traffic share count is 1
  * 1.1.2.1, from 1.1.1.1, 00:06:31 ago, via Serial1/0
      Route metric is 20, traffic share count is 1

Possibilités auxquelles je peux penser: en fonction de la façon dont l'itinéraire se rend dans OSPF et du type de route OSPF utilisé, le coût du routeur ASBR peut / peut ne pas être pris en compte dans le processus de sélection de l'itinéraire (pour que ECMP fonctionne, les deux coûts de l'itinéraire et le coût pour ASBR doivent correspondre). Voir la métrique sur le LSA réel pour les deux peut aider.

J'ai pu reproduire cela sur IOS en imitant votre configuration - en plaçant l'anycast sur une interface et en plaçant l'interface dans une zone. Si vous avez besoin d'ECMP, envisagez de redistribuer la route dans OSPF, car cela semble fonctionner.

nicotine
la source
FWIW, l'image dans mon instance Dynamips est 12.4 (25d) sur un 7200. Vos résultats montrent "Connu via ... NSSA extern 2" mais le mien montre "intra zone". Voilà un bon indice.
neirbowj
La redistribution connectée produirait cela au lieu d'utiliser la commande réseau ou ip ospf sous l'interface.
Daniel Dib
@DanielDib Je suis en train d'épuiser les permutations de normal / stub / nssa, intra-zone / externe, et au moins Cisco + Dynamips / Brocade. J'essaierai aussi Juniper, si j'ai le temps.
neirbowj
3

Selon le matériel Brocade que vous utilisez (MLX? CER? XMR?), Vous souhaiterez peut-être mettre à jour le logiciel. Plusieurs bogues ont été corrigés dans les arborescences logicielles 5.3 (et 5.4 selon votre matériel) dont les symptômes étaient liés au fait que les coûts de routage OSPF n'étaient pas mis à jour correctement. Je ne connais pas tous les critères pour voir les bogues, mais certains d'entre eux étaient: Si le coût a été modifié sur un port 1gig ou une interface de bouclage sur un routeur exécutant OSPF, le changement n'a pas été traité et le coût n'a pas été mis à jour .

Je sais que vous voyez cela sur les plates-formes de deux fabricants, il est donc plus probable que ce soit un problème de configuration. Je me rends également compte que le vieux support technique «mettre à jour votre logiciel» ne vaut souvent rien de plus qu'un roulement des yeux. Cela dit, c'est peut-être quelque chose à garder à l'esprit.

GoatAtWork
la source
Je garderai cela à l'esprit. Cependant, R1 / R2 a fixé le coût, Rcore voit le coût et Rcore présente les symptômes ECMP.
neirbowj