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
R1
i R2
reklamuj miejsce docelowe anycast za pośrednictwem OSPF. Jeśli Rcore
ma identyczny koszt dla na jego N1
and N2
interfejsó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 Rcore
tablicy routingu. Nie, przynajmniej nie zawsze, a nawet nie do przewidzenia. Dlaczego nie?
Między innymi potencjalnie istotne szczegóły są następujące.
Rcore
jest łącznikiem ABRN1
iN2
, które znajdują się w oddzielnych obszarach NSSA, do kręgosłupa (nie pokazano).- Inspekcja
Rcore
LSDB potwierdza, że oczekiwane LSA odR1
iR2
są poprawnie zainstalowane oraz zawierają miejsce docelowe anycast z prawidłowymi danymi.
Rozważyłem trzy możliwe wyjaśnienia.
- 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.
- 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ć.
- 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
Odpowiedzi:
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.
źródło
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.
źródło
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:
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.
źródło
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ć.
źródło