Dlaczego ten router nie korzysta z wielu, jednakowych kosztów tras z OSPF?

16

Zarówno router Brocade z systemem NetIron 5.2, jak i emulacja Dynamips z systemem IOS 12.4 nie wykorzystują w sposób niezawodny ścieżek o jednakowych kosztach, co wydaje się bardzo prostą konfiguracją. Mówię „niezawodnie”, ponieważ bardzo krótko obserwowałem oczekiwane zachowanie od Brocade, ale było to po długim okresie bezczynności i zniknęło, gdy tylko zakłóciłem system.

W razie potrzeby konfiguruję miejsce docelowe anycast dla usługi sieci bezstanowej. Będzie to konfiguracja specyficzna dla lokalizacji, z niewielką lub żadną różnorodnością długości ścieżki sieci, więc celem funkcji anycast jest głównie redundancja przełączania awaryjnego i częściowo podział obciążenia. Moje pytanie dotyczy funkcji podziału obciążenia.

Moja prototypowa sieć wygląda tak.

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

R1i R2reklamuj miejsce docelowe anycast za pośrednictwem OSPF. Jeśli Rcorema identyczny koszt dla na jego N1and N2interfejsów, a cel anycast ma identyczną koszty w każdym z pozostałych routerów, spodziewam się znaleźć dwie równe ścieżki kosztów w Rcoretablicy routingu. Nie, przynajmniej nie zawsze, a nawet nie do przewidzenia. Dlaczego nie?

Między innymi potencjalnie istotne szczegóły są następujące.

  • Rcorejest łącznikiem ABR N1i N2, które znajdują się w oddzielnych obszarach NSSA, do kręgosłupa (nie pokazano).
  • Inspekcja RcoreLSDB potwierdza, że ​​oczekiwane LSA od R1i R2są poprawnie zainstalowane oraz zawierają miejsce docelowe anycast z prawidłowymi danymi.

Rozważyłem trzy możliwe wyjaśnienia.

  1. Nie rozumiem, jak skonfigurować i obsługiwać ECMP na tych platformach. Jest to prawdopodobne i mam nadzieję znaleźć tutaj oświecenie, którego nie mogłem znaleźć w dokumentacji dostawcy.
  2. Nie rozumiem interakcji między obszarami OSPF, ECMP, anycast itp. Nie sądzę, że jest to bardzo prawdopodobne, ale i tak jestem gotów się czegoś nauczyć.
  3. Te implementacje dwóch dostawców cierpią z powodu tego samego błędu, błędnej funkcji lub czegoś podobnego. Przypuszczam, że to może się zdarzyć.

Edytuj Dodano przykładową konfigurację i dane wyjściowe dla implementacji 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

Wynik

Router Rcore

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

Fragment tabeli routingu

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
źródło
Jakim typem trasy jest anycast?
nikotyna
@nicotine: Adres anycast jest adresem wtórnym w interfejsie sprzężenia zwrotnego. W najnowszej permutacji tej konfiguracji kończy się ona jako sieć pośrednicząca w routerze LSA. Skonfiguruj fragmenty i uchwyty terminala, aby śledzić.
neirbowj
Próbowałem rozebrać konfigurację i wydrukować jak najwięcej, ale nie za dużo. Sugestie dotyczące poprawy gęstości informacji są mile widziane.
neirbowj
To powinno działać. Czy możesz opublikować dane wyjściowe z następujących poleceń: pokaż protokoły ip pokaż ip ospf że debugowanie żeber debugowanie ip Wypróbuj te polecenia na Rcore. To powinno dać nam wskazówki, dlaczego podwójne trasy nie są zainstalowane. Twoje wyjście DB OSPF wygląda mi dobrze.
Daniel Dib
Jeśli odrzucisz link aktywnej trasy, czy nadal preferuje oryginalną trasę? Na przykład: W danych wyjściowych CLI pokazuje aktywną trasę wskazującą na 10.1.0.2. Jeśli zamkniesz interfejs na 10.1.0.2 na tyle długo, aby sąsiad OSPF mógł się zepsuć, a następnie przywrócisz go do trybu online, czy oryginalna trasa w kierunku 10.1.0.2 zostanie ponownie zainstalowana?
bigmstone

Odpowiedzi:

7

Moją pierwszą myślą byłoby, że OSPF myśli, że to ten sam LSA zamiast po prostu tego samego prefiksu. Nie wiem wiele o brokacie, ale dzięki wyjściom LSA z pudełka Cisco mógłbym prawdopodobnie powiedzieć więcej.

Ogólnie rzecz biorąc, w przypadku Cisco, jeśli trasy są równe w protokole, oba zostaną przedstawione w tabeli routingu. Tabela routingu domyślnie zainstaluje obie ścieżki i wykona ECMP. Jeśli metryki lub protokoły różnią się, nie będą ECMP. Dotyczyłoby to również różnych LSA dla tego samego prefiksu.

Pete Lumbis
źródło
Tak - wpisy bazy danych powinny nam powiedzieć - czy mają ten sam adres przekierowania i router reklamowy?
nikotyna
Popołudniu będę pracował nad pobraniem próbek.
neirbowj
6

Zastanawiam się, czy ECMP ma sens dla anycast. Routing powinien kierować anycast do logicznie najbliższego miejsca docelowego, w którym jeden host byłby preferowany nad drugim. Nawet w przypadku, gdy hosty anycast są w równej odległości, nadal oczekiwałbym, że tak będzie. Jeśli chodzi o podział obciążenia ECMP, sądzę, że dla / miejsca docelowego jest niemożliwe z / 32. Być może istnieją algorytmy podziału obciążenia, które uwzględniają źródło. Pakiet wydaje się ryzykowny, nawet w przypadku DNS. Wierzę, że większość gotowych rozwiązań anycast uruchamia ospf na hoście.

Trochę szukałem, ale następujący fragment z rfc2178 potwierdza przyczynę.

16,8 Taki sam koszt

Protokół OSPF utrzymuje wiele tras o jednakowych kosztach do wszystkich miejsc docelowych. Można to zobaczyć w krokach użytych powyżej do obliczenia tabeli routingu oraz w definicji struktury tablicy routingu.

Każda z wielu tras będzie tego samego typu (między obszarami, między obszarami, typem zewnętrznym typu 1 lub typem zewnętrznym typu 2), kosztem i będzie miała ten sam powiązany obszar . Jednak każda trasa określa osobny router następnego przeskoku i reklamy.

Dennis Olvany
źródło
1
Hmm, opracowałem jeden obszar i ECMP jest obecny na rdzeniu. Mimo to nadal twierdziłbym, że jest to bezużyteczne z / 32. Być może istotne są następujące elementy: morse.colorado.edu/~tlen5710/12s/OSPF.pdf
Dennis Olvany
Oznacza to , że obszar jest jednym z kryteriów ECMP. Wygląda na to, że różne obszary mogą być przełomem.
Dennis Olvany
OSPF na hoście - tak, to jest cel. / 32 przypisany jako dodatkowy adres w pętli zwrotnej. Zajmuję się również konfiguracją podziału obciążenia, ale to zależy przede wszystkim od ECMP.
neirbowj
5

Nie mogę tego odtworzyć w moim laboratorium, używając 12.4 (24). Ta sama topologia, pętla zwrotna obszaru 0, R1 z lo0 i interfejs w obszarze 1, R2 z lo0 i interfejs w obszarze 2 (oba NSSA), trasa redystrybuowana jest wybierana dla ECMP na 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

Możliwości, o których mogę pomyśleć: W zależności od tego, jak trasa przekształca się w OSPF i jaki typ trasy OSPF jest używany, koszt routera ASBR może / nie zostać uwzględniony w procesie wyboru trasy (dla ECMP, oba koszty trasy i koszty do ASBR muszą się zgadzać). Pomocne może okazać się wyświetlenie metryki na rzeczywistym LSA dla obu.

Udało mi się to odtworzyć na iOS, naśladując twoją konfigurację - umieszczając anycast na interfejsie i umieszczając interfejs w określonym obszarze. Jeśli potrzebujesz ECMP, rozważ redystrybucję trasy do OSPF, ponieważ wydaje się, że to działa.

nikotyna
źródło
FWIW, obraz w mojej instancji Dynamips to 12.4 (25d) na 7200. Twoje wyniki pokazują „Znany przez ... NSSA extern 2”, ale mój pokazuje „intra area”. To dobra wskazówka.
neirbowj
Podłączona redystrybucja spowodowałaby to zamiast używania polecenia sieciowego lub ip ospf w interfejsie.
Daniel Dib,
@DanielDib Jestem w trakcie wyczerpywania permutacji normalnych / stub / nssa, intra-area / external, a przynajmniej Cisco + Dynamips / Brocade. Spróbuję też Juniper, jeśli będę miał czas.
neirbowj
3

W zależności od używanego sprzętu Brocade (MLX? CER? XMR?), Możesz chcieć zaktualizować oprogramowanie. W drzewach oprogramowania 5.3 (i 5.4 w zależności od sprzętu) naprawiono kilka błędów, których objawy były związane z nieprawidłową aktualizacją kosztów trasy OSPF. Nie znam wszystkich kryteriów wyświetlania błędów, ale kilka z nich to: Jeśli koszt został zmieniony na porcie 1gig lub interfejsie sprzężenia zwrotnego na routerze z systemem OSPF, zmiana nie została przetworzona, a koszt nie został zaktualizowany .

Zdaję sobie sprawę, że widzisz to na platformach dwóch producentów, więc jest to bardziej prawdopodobne, że jest to problem z konfiguracją. Zdaję sobie również sprawę z tego, że stare narzędzie wsparcia technicznego „aktualizacja oprogramowania” często może być warte więcej niż rzut oka. To powiedziawszy, może warto o tym pamiętać.

GoatAtWork
źródło
Będę o tym pamiętać. Jednak R1 / R2 ustalają koszt, Rcore widzi koszt, a Rcore wykazuje objawy ECMP.
neirbowj