Perché questo router non riesce a utilizzare più percorsi di uguale costo da OSPF?


16

Un router Brocade che esegue NetIron 5.2 e un'emulazione Dynamips che esegue IOS 12.4 non riescono entrambi a utilizzare in modo affidabile percorsi di uguale costo in quella che sembra essere una configurazione molto semplice. Dico "in modo affidabile" perché ho osservato molto brevemente il comportamento atteso dal Broccato, ma è stato dopo un lungo periodo di inattività ed è svanito non appena ho turbato il sistema.

Nel caso sia rilevante, sto configurando una destinazione anycast per un servizio di rete senza stato. Si tratterà di una configurazione specifica del sito, con differenze di lunghezza del percorso di rete scarse o assenti, quindi lo scopo della funzionalità anycast è principalmente per la ridondanza di failover e in parte per la condivisione del carico. La mia domanda riguarda la funzione di condivisione del carico.

La mia rete di prototipi si presenta così.

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

R1e R2pubblicizzare la destinazione anycast tramite OSPF. Se Rcoreha un costo identico su N1e sulle sue N2interfacce e la destinazione anycast ha un costo identico su ciascuno degli altri router, mi aspetterei di trovare due percorsi di uguale costo nella Rcoretabella di routing. Non lo faccio, almeno non sempre, e nemmeno prevedibilmente. Perchè no?

Tra l'altro, i dettagli potenzialmente rilevanti sono i seguenti.

  • Rcoreè un ABR che si collega N1e N2, che si trovano in aree NSSA separate, alla spina dorsale (non mostrata).
  • L'ispezione Rcoredell'LSDB conferma che gli LSA previsti da R1e R2sono installati correttamente e contengono la destinazione anycast con la metrica corretta.

Ho considerato tre possibili spiegazioni.

  1. Non capisco come configurare e utilizzare ECMP su queste piattaforme. Questo è probabilmente, e spero di trovare l'illuminazione qui che non sono riuscito a trovare nei documenti del fornitore.
  2. Non capisco l'interazione tra Aree OSPF, ECMP, anycast, ecc. Non penso che questo sia molto probabile, ma sono pronto a imparare qualcosa comunque.
  3. Le implementazioni di questi due fornitori soffrono dello stesso bug, o di una funzione errata, o qualcosa del genere. Suppongo che potrebbe succedere.

Modifica Aggiunti esempi di configurazione e output per l'implementazione di Dynamips / Dynagen.

configs

Router 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

Router 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

Router 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

Produzione

Router Rcore

Router LSA di 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

Router LSA di 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

Estratto della tabella di routing

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

Che tipo di percorso è anycast?
nicotina

@nicotine: l'indirizzo anycast è un indirizzo secondario sull'interfaccia di loopback. Nell'ultima permutazione di questa configurazione, finisce come una rete stub in un router LSA. Seguiranno frammenti di configurazione e sequenze di terminali.
Neirbowj,

Ho cercato di ridurre la configurazione e di produrre il più possibile, ma non troppo. Suggerimenti per migliorare la densità delle informazioni sono ben accetti.
Neirbowj,

Questo dovrebbe funzionare. Puoi pubblicare output dai seguenti comandi: mostra i protocolli ip mostra ip ospf rib debug ip routing Prova questi comandi su Rcore. Questo dovrebbe darci alcuni indizi sul perché i doppi percorsi non sono installati. L'output del tuo DB OSPF mi sembra perfetto.
Daniel Dib,

Se rimbalzi il link del percorso attivo, preferisce comunque il percorso originale? Ad esempio: nell'output della CLI mostra il percorso attivo che punta verso 10.1.0.2. Se si chiude l'interfaccia su 10.1.0.2 abbastanza a lungo per interrompere il vicinato OSPF, riportarla in linea viene reinstallato il percorso originale verso 10.1.0.2?
bigmstone

Risposte:


7

Il mio primo pensiero sarebbe che OSPF stia pensando che sia lo stesso LSA anziché semplicemente lo stesso prefisso. Non so molto del broccato, ma con le uscite LSA della scatola Cisco potrei probabilmente dirti di più.

In generale, per Cisco, se le route sono uguali nel protocollo, verranno entrambe presentate nella tabella di routing. La tabella di routing, per impostazione predefinita, installerà entrambi i percorsi ed eseguirà ECMP. Se le metriche o i protocolli differiscono, non saranno ECMP. Ciò si applicherebbe anche a LSA diversi per lo stesso prefisso.


Sì - le voci del database dovrebbero dirci - hanno lo stesso indirizzo di inoltro e router pubblicitario?
nicotina,

Lavorerò per ottenere un output campione questo pomeriggio.
Neirbowj,

6

Sto valutando se ECMP ha senso per qualsiasi trasmissione. Il routing dovrebbe indirizzare qualsiasi trasmissione verso la destinazione logicamente più vicina in cui un host sarebbe preferito rispetto all'altro. Anche nel caso in cui gli host anycast siano equidistanti, mi aspetterei comunque che ciò rimanga vero. Per quanto riguarda la condivisione del carico ECMP, penso che per destinazione sia impossibile con un / 32. Forse ci sono algoritmi di condivisione del carico che considerano la fonte. Il pacchetto sembra rischioso, anche per il DNS. Credo che la maggior parte delle soluzioni anycast predefinite eseguano ospf sull'host.

Ha richiesto un po 'di ricerca, ma il seguente estratto da rfc2178 conferma la causa.

16.8. Multipath a parità di costo

Il protocollo OSPF mantiene più rotte di uguale costo per tutte le destinazioni. Questo può essere visto nei passaggi sopra utilizzati per calcolare la tabella di routing e nella definizione della struttura della tabella di routing.

Ognuno dei percorsi multipli sarà dello stesso tipo (intra-area, inter-area, tipo 1 esterno o tipo 2 esterno), costo e avrà la stessa area associata . Tuttavia, ogni route specifica un router hop e pubblicità successivo separato.


1
Hmm, ho creato una sola area ed ECMP è presente sul core. Anche se, direi ancora che è inutile con un / 32. Forse è rilevante quanto segue: morse.colorado.edu/~tlen5710/12s/OSPF.pdf
Dennis Olvany

Ciò afferma che l'area è uno dei criteri per ECMP. Sembra che diverse aree possano essere il dealbreaker.
Dennis Olvany,

OSPF sull'host - sì, questo è l'obiettivo. / 32 assegnato come indirizzo secondario sul loopback. Sto anche esaminando la configurazione della condivisione del carico, ma ciò dipende innanzitutto dall'ECMP.
Neirbowj,

5

Non riesco a riprodurlo nel mio laboratorio, usando 12.4 (24). Stessa topologia, loopback area 0 RCore, R1 con lo0 e interfaccia nell'area 1, R2 con lo0 e interfaccia nell'area 2 (entrambi NSSA), il percorso ridistribuito viene raccolto per ECMP su 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à a cui posso pensare: a seconda di come il percorso lo sta trasformando in OSPF e di quale tipo di percorso OSPF viene utilizzato, il costo per il router ASBR può / potrebbe non essere preso in considerazione nel processo di selezione del percorso (affinché ECMP funzioni, entrambi i costi del percorso e i costi per ASBR devono corrispondere). Vedere la metrica sull'attuale LSA per entrambi può aiutare.

Sono stato in grado di riprodurre questo su IOS imitando la tua configurazione - posizionando anycast su un'interfaccia e posizionando l'interfaccia in un'area. Se hai bisogno dell'ECMP, considera la ridistribuzione del percorso in OSPF, poiché sembra funzionare.


FWIW, l'immagine nella mia istanza di Dynamips è 12.4 (25d) su un 7200. I tuoi risultati mostrano "Noto tramite ... NSSA extern 2" ma il mio mostra "intra area". Questo è un buon indizio.
Neirbowj,

La ridistribuzione connessa produrrebbe questo invece di usare il comando di rete o ip ospf sotto l'interfaccia.
Daniel Dib,

@DanielDib Sono in procinto di esaurire le permutazioni di normale / stub / nssa, intra-area / esterna e almeno Cisco + Dynamips / Brocade. Proverò anche Juniper, se avrò tempo.
Neirbowj,

3

A seconda dell'hardware Brocade in uso (MLX? CER? XMR?), Potresti voler aggiornare il software. Sono stati corretti diversi bug attraverso gli alberi software 5.3 (e 5.4 a seconda dell'hardware) i cui sintomi erano correlati ai costi del percorso OSPF che non venivano aggiornati correttamente. Non conosco tutti i criteri per vedere i bug, ma un paio erano: Se il costo è stato modificato su una porta da 1 GB o un'interfaccia di loopback su un router che esegue OSPF, la modifica non è stata elaborata e il costo non è stato aggiornato .

Mi rendo conto che lo stai vedendo su piattaforme di due produttori, quindi è più probabile che si tratti di un problema di configurazione. Mi rendo anche conto che il vecchio supporto tecnico punt "aggiorna il tuo software" spesso non può valere altro che un colpo d'occhio. Detto questo, potrebbe essere qualcosa da tenere a mente.


Lo terrò a mente. Tuttavia, R1 / R2 imposta il costo, Rcore vede il costo e Rcore mostra i sintomi ECMP.
Neirbowj,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.