Różnice między wybraną wersją a wersją aktualną.
Nowa wersja | Poprzednia wersja | ||
sk1:cisco_ospf [2016/04/25 15:34] jkonczak utworzono |
sk1:cisco_ospf [2020/05/12 12:50] (aktualna) jkonczak [[Ekstra] Inne] |
||
---|---|---|---|
Linia 3: | Linia 3: | ||
=== Wstęp === | === Wstęp === | ||
- | Protokół stanu łącza <html><small></html>(wewnątrz obszaru. Między obszarami - wektora odległości.)<html></small></html> | + | Protokół stanu łącza <html><small></html>(wewnątrz obszaru)<html></small></html> |
OSPF w wersji 2 działa tylko na IPv4, w wersji wersja 3 też na IPv6. | OSPF w wersji 2 działa tylko na IPv4, w wersji wersja 3 też na IPv6. | ||
Każdy router konstruuje mapę sieci. Używa algorytmu dijkstry dla znajdowania najkrótszych ścieżek. | Każdy router konstruuje mapę sieci. Używa algorytmu dijkstry dla znajdowania najkrótszych ścieżek. | ||
+ | |||
+ | === LSA === | ||
+ | |||
+ | //Link-State Advertisement// (LSA) to pojedyncza jednostka informacji o sieci używana przez OSPF http://en.wikipedia.org/wiki/Link-state_advertisement \\ | ||
+ | Przykładowo LSA może nieść informację o: | ||
+ | * połączeniach wybranego routera OSPF z innymi routerami OSPF | ||
+ | * sieciach IP do których należy router | ||
+ | * <html><small>o trasach z innego obszaru</small></html> | ||
+ | * <html><small>trasach spoza OSPF</small></html> | ||
+ | |||
=== Działanie === | === Działanie === | ||
Linia 13: | Linia 23: | ||
Routery, wymieniając wiadomości //Hello//, nawiązują relację z sąsiadami. | Routery, wymieniając wiadomości //Hello//, nawiązują relację z sąsiadami. | ||
- | Następnie przesyłają wzajemnie w wiadomościach //database descriptions// (//DD//) informacje jakie znają połączenia (tylko ID). | + | Następnie przesyłają wzajemnie w wiadomościach //database descriptions// (//DD//) informacje jakie znają połączenia, routery etc. (tylko ID wszystkich znanych LSA). |
- | Po transferze żądają wiadomością //Link-State Request// nieznanych sobie wiadomości LSA i otrzymują je w wiadomościach //Link-State Update//. | + | Po transferze żądają nieznanych sobie wiadomości (LSA) wysyłając komunikat //Link-State Request// i otrzymują odpowiedź we wiadomościach //Link-State Update//. |
- | Po każdej wykrytej zmianie router wysyła komunikat LSU z opisem zmian. Komunikat LSU jest rozgłaszana epidemicznie do wszystkich sąsiadów. | + | Po każdej wykrytej zmianie router wysyła komunikat LSU z opisem zmian (LSA). Komunikat LSU jest rozgłaszana epidemicznie do wszystkich sąsiadów. |
- | + | ||
- | Wszystkie komunikaty poza Hello nazywa się zbiorczo nazwą //Link-State Advertisement// (LSA; http://en.wikipedia.org/wiki/Link-state_advertisement). | + | |
<html><small></html> | <html><small></html> | ||
- | Żeby zapobiec zalewaniu sieci pakietami LSA, w jednej domenie rozgłoszeniowej wybiera się //router desygnowany// i zapasowy router desygnowany (DR i DRother w CISCO) i dopuszcza się tylko komunikację do / z routera desygnowanego. | + | Żeby zapobiec zalewaniu sieci pakietami protokołu OSPF, w jednej domenie rozgłoszeniowej wybiera się //router desygnowany// i zapasowy router desygnowany (DR i DRother w CISCO) i dopuszcza się tylko komunikację do / z routera desygnowanego. |
- | OSPF do odróżniania routerów wykorzystuje //identyfikator routera// - w CISCO to najniższy przypisany do urządzenia adres IP. Na router desygnowany wybierany jest router z najniższym priorytetem, jeśli priorytety są równe (a domyślnie są) - z najmniejszym identyfikatorem. | + | |
+ | OSPF do odróżniania routerów wykorzystuje //identyfikator routera// - w CISCO to domyślnie najwyższy przypisany do urządzenia adres IP. Na router desygnowany wybierany jest router z najniższym priorytetem, jeśli priorytety są równe (a domyślnie są) - z najmniejszym identyfikatorem. | ||
<html></small></html> | <html></small></html> | ||
Linia 47: | Linia 56: | ||
Najpierw należy wejść do trybu konfiguracji (znak zachęty: ''(config)#''). | Najpierw należy wejść do trybu konfiguracji (znak zachęty: ''(config)#''). | ||
- | * ''router ospf <processId>'' - wejście do konfiguracji procesu OSPF o podanym numerze. Numer procesu jest lokalny - stąd można wybrać dowolny, np: ''router ospf 1''. Prompt zmieni się na ''(config-router)#'' | + | * ''router ospf <processId>'' - wejście do konfiguracji procesu OSPF o podanym numerze. \\ Numer procesu jest lokalny - stąd można wybrać dowolny, np: ''router ospf 1''. Prompt zmieni się na ''(config-router)#'' |
- | * ''network <adres_ip> <odwrócona_maska> area <obszar>'' - dodaje sieci pasujące do wzorca do rozgłaszanych sieci. Dodanie pierwszej sieci włącza proces. \\ Przykład: do dodania sieci 192.168.0.0/24 do obszaru 0 należy wpisać: ''network 192.168.0.0 0.0.0.255 area 0'' \\ Można też podać "cały świat", który dopasuje się do każdej bezpośrednio podłączonej sieci: ''network 0.0.0.0 255.255.255.255 area 0'' | + | * ''network <adres_ip> <odwrócona_maska> area <obszar>'' - dodaje sieci pasujące do wzorca do rozgłaszanych sieci oraz aktywuje na nich wymianę komunikatów OSPF. Dodanie pierwszej sieci włącza proces OSPF. \\ Przykład: do dodania sieci 192.168.0.0/24 do obszaru 0 należy wpisać: \\ ''network 192.168.0.0 0.0.0.255 area 0'' \\ Można też podać "cały świat", który dopasuje się do każdej bezpośrednio podłączonej sieci: \\ ''network 0.0.0.0 255.255.255.255 area 0'' |
- | * ''default-information originate'' - włącza redystrybucję trasy domyślnej | + | * <html><small></html>''auto-cost reference-bandwidth <prędkość_w_Mbps>'' – ustawia referencyjną prędkość używaną do automatycznego obliczania kosztów połączenia, np:\\ ''auto-cost reference-bandwidth 1000''<html></small></html> |
- | * ''redistribute <co rozgłaszać>'' - domyślne rozgłaszanie tras podanego typu - połączonych, statycznych lub z innego procesu/protokołu routingu. Np: \\ ''redistribute connected subnets'' - wszystkie bezpośrednio podłączone sieci \\ ''redistribute static subnets'' - wszystkie trasy statyczne \\ ''redistribute eigrp subnets'' - wszystkie trasy dostarczone przez protokół eigrp | + | * <html><small></html>''default-information originate'' - włącza redystrybucję trasy domyślnej <html></small></html> |
- | W trybie konfiguracji interface'u można ręcznie ustalić koszt łącza: | + | * <html><small></html>''redistribute <co rozgłaszać>'' - włącza rozgłaszanie tras podanego typu - połączonych, statycznych lub z innego procesu/protokołu routingu. Uwaga: nie włącza OSPF na pasujących sieciach – tylko dodaje je do rozgłaszanych. Np: \\ ''redistribute connected subnets'' - wszystkie bezpośrednio podłączone sieci \\ ''redistribute static subnets'' - wszystkie trasy statyczne \\ ''redistribute eigrp subnets'' - wszystkie trasy dostarczone przez protokół eigrp<html></small></html> |
+ | * <html><small></html>''passive-interface <interfejs>|default'' – wyłącza nawiązywanie połączeń OSPF na wybranym interfejsie, lub domyślnie na wszystkich interfejsach. \\ Przykład 1 – wyłącza wysyłanie i odbiór OSPF Hello na interfejsie FastEthernet 0/0: \\ ''passive-interface FastEthernet 0/0'' \\ Przykład 2 - pozwala na połączenia OSPF tylko na Serial 0/2/0-1 \\ ''passive-interface default'' \\ ''no passive-interface Serial/0/2/0'' \\ ''no passive-interface Serial/0/2/1''<html></small></html> | ||
+ | |||
+ | <html><small></html> | ||
+ | W trybie **konfiguracji interface'u** można ręcznie ustalić koszt łącza: | ||
* ''bandwidth <prędkość>'' - zmiana postrzeganej przez protokoły routingu prędkości | * ''bandwidth <prędkość>'' - zmiana postrzeganej przez protokoły routingu prędkości | ||
* ''ip ospf cost <koszt>'' - sztuczna zmiana kosztu danego łącza dla OSPF | * ''ip ospf cost <koszt>'' - sztuczna zmiana kosztu danego łącza dla OSPF | ||
+ | <html></small></html> | ||
Linia 61: | Linia 75: | ||
* ''show ip protocols'' | * ''show ip protocols'' | ||
* ''show ip ospf'' - informacje o działających procesach ospf | * ''show ip ospf'' - informacje o działających procesach ospf | ||
+ | * ''show ip ospf interface'' - informacje o stanie OSPF na interfejsach - koszt, sąsiedzi, lokalny identyfikator etc. | ||
* ''show ip ospf neighbor'' - informacje o sąsiadach | * ''show ip ospf neighbor'' - informacje o sąsiadach | ||
* ''show ip ospf database'' - podsumowane dane o połączeniach | * ''show ip ospf database'' - podsumowane dane o połączeniach | ||
- | * ''show ip ospf database router'' - pełne dane o połączeniach | + | * ''show ip ospf database network'' - podsumowane dane o sieciach łączących routery OSPF |
+ | * ''show ip ospf database router'' - pełne dane o routerach i ich połączeniach | ||
<html><small></html> | <html><small></html> | ||
Linia 74: | Linia 90: | ||
<html></small></html> | <html></small></html> | ||
- | http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_ospf/configuration/12-4t/iro-12-4t-book/iro-cfg.html | + | ++++ Przykładowe wyniki poleceń diagnostycznych | |
- | ===== Inne ===== | + | ++ schemat sieci: | {{ :sk1:ospf-example-net.png?700 |}}++ |
- | Quaqqa (http://www.nongnu.org/quagga/) - implementacja wielu protokołów routingu, w tym OSPFv2, dla systemu Linux | + | <html><pre> |
+ | <b>R2#show ip route</b> | ||
+ | Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP | ||
+ | D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area | ||
+ | N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 | ||
+ | E1 - OSPF external type 1, E2 - OSPF external type 2 | ||
+ | i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 | ||
+ | ia - IS-IS inter area, * - candidate default, U - per-user static route | ||
+ | o - ODR, P - periodic downloaded static route | ||
+ | |||
+ | Gateway of last resort is not set | ||
+ | |||
+ | O <span title="Cel" style="background-color:rgba(255,255,0,0.4)">192.168.4.0/24</span> [110/4] via <span title="Następny skok" style="background-color:rgba(255,255,0,0.4)">192.168.5.1</span>, 00:03:34, GigabitEthernet0/0 | ||
+ | C 192.168.5.0/24 is directly connected, GigabitEthernet0/0 | ||
+ | <span title="Trasa do sieci do której router jest bezpośrednio połączony" style="background-color:rgba(255,0,0,0.4)">C</span> 192.168.6.0/24 is directly connected, GigabitEthernet1/0 | ||
+ | <span title="Trasa do sieci poznanej za pośrednictwem OSPF" style="background-color:rgba(0,255,0,0.4)">O</span> 192.168.0.0/24 [110/66] via 192.168.5.1, 02:40:04, GigabitEthernet0/0 | ||
+ | O 192.168.1.0/24 [110/65] via 192.168.5.1, 02:45:19, GigabitEthernet0/0 | ||
+ | O 192.168.2.0/24 [<span title="AD" style="background-color:rgba(0,0,0,0.4)">110</span>/<span title="Metryka" style="background-color:rgba(0,255,255,0.4)">2</span>] via 192.168.5.1, 02:45:19, GigabitEthernet0/0 | ||
+ | O 192.168.3.0/24 [110/3] via 192.168.5.1, 02:45:19, GigabitEthernet0/0 | ||
+ | |||
+ | <b>R2#show ip protocols</b> | ||
+ | Routing Protocol is "<span title="Użyty numer procesu"><b>ospf 1</b></span>" | ||
+ | Outgoing update filter list for all interfaces is not set | ||
+ | Incoming update filter list for all interfaces is not set | ||
+ | Router ID <span title="Identyfikator tego routera"><b>192.168.6.2</b></span> | ||
+ | Number of areas in this router is 1. 1 normal 0 stub 0 nssa | ||
+ | Maximum path: 4 | ||
+ | Routing for Networks: | ||
+ | <span title="Skonfigurowane zakresy adresów IP mające brać udział w OSPF">192.168.5.0 255.255.255.0 area 0</b></span> | ||
+ | <span title="Skonfigurowane zakresy adresów IP mające brać udział w OSPF">192.168.6.0 255.255.255.0 area 0</b></span> | ||
+ | Reference bandwidth unit is <span title="Referencyjna prędkość na podstawie której liczone są koszty łącz (=referencyjna prędkość / prędkość łącza)"><b>1000 mbps</b></span> | ||
+ | Routing Information Sources: | ||
+ | Gateway Distance Last Update | ||
+ | <span title="Inne poznane routery wymieniające się wiadomościami OSPF"> 192.168.1.3 110 02:37:21 | ||
+ | 192.168.5.1 110 02:42:36 | ||
+ | 192.168.4.1 110 00:00:51 | ||
+ | 192.168.3.4 110 02:42:36</span> | ||
+ | Distance: (default is 110) | ||
+ | |||
+ | R2#show ip ospf interface GigabitEthernet0/0</b> | ||
+ | GigabitEthernet0/0 is up, line protocol is up | ||
+ | Internet Address 192.168.5.2/24, Area 0 | ||
+ | Process ID 1, Router ID 192.168.6.2, Network Type BROADCAST, Cost: <span title="Rozgłaszany koszt tego łącza" style="background-color:rgba(255,0,0,0.2)">1</span> | ||
+ | Transmit Delay is 1 sec, State BDR, Priority 1 | ||
+ | Designated Router (ID) 192.168.5.1, Interface address 192.168.5.1 | ||
+ | Backup Designated router (ID) 192.168.6.2, Interface address 192.168.5.2 | ||
+ | Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 | ||
+ | oob-resync timeout 40 | ||
+ | Hello due in 00:00:01 | ||
+ | Supports Link-local Signaling (LLS) | ||
+ | Cisco NSF helper support enabled | ||
+ | IETF NSF helper support enabled | ||
+ | Index 1/1, flood queue length 0 | ||
+ | Next 0x0(0)/0x0(0) | ||
+ | Last flood scan length is 1, maximum is 1 | ||
+ | Last flood scan time is 0 msec, maximum is 4 msec | ||
+ | Neighbor Count is 1, Adjacent neighbor count is 1 | ||
+ | Adjacent with neighbor <span title="Sąsiad znaleziony na tym łączu" style="background-color:rgba(255,0,0,0.2)">192.168.5.1</span> (Designated Router) | ||
+ | Suppress hello for 0 neighbor(s) | ||
+ | |||
+ | <b>R2#show ip ospf neighbor</b> | ||
+ | |||
+ | Neighbor ID Pri State Dead Time Address Interface | ||
+ | <span title="Identyfikator sąsiada" style="background-color:rgba(0,255,0,0.2)">192.168.5.1</span> 1 FULL/DR 00:00:37 <span title="Adres IP po którym ten router komunikuje się z sąsiadem" style="background-color:rgba(0,0,255,0.15)">192.168.5.1</span> GigabitEthernet0/0 | ||
+ | |||
+ | <b>R2#show ip ospf database router</b> | ||
+ | |||
+ | OSPF Router with ID (192.168.6.2) (Process ID 1) | ||
+ | |||
+ | Router Link States (Area 0) | ||
+ | |||
+ | LS age: 1473 | ||
+ | Options: (No TOS-capability, DC) | ||
+ | LS Type: Router Links | ||
+ | Link State ID: 192.168.1.3 | ||
+ | Advertising Router: <b>192.168.1.3</b> | ||
+ | LS Seq Number: 80000009 | ||
+ | Checksum: 0x1AE5 | ||
+ | Length: 60 | ||
+ | Number of Links: 3 | ||
+ | |||
+ | Link connected to: <b>another Router</b> (point-to-point) | ||
+ | (Link ID) Neighboring Router ID: <b>192.168.5.1</b> | ||
+ | (Link Data) Router Interface address: 192.168.1.3 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: <b>64</b> | ||
+ | |||
+ | Link connected to: a <b>Stub Network</b> | ||
+ | (Link ID) Network/subnet number: <b>192.168.1.0</b> | ||
+ | (Link Data) Network Mask: <b>255.255.255.0</b> | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: 64 | ||
+ | |||
+ | Link connected to: a Stub Network | ||
+ | (Link ID) Network/subnet number: 192.168.0.0 | ||
+ | (Link Data) Network Mask: 255.255.255.0 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: <b>1</b> | ||
+ | |||
+ | |||
+ | LS age: 39 | ||
+ | Options: (No TOS-capability, DC) | ||
+ | LS Type: Router Links | ||
+ | Link State ID: 192.168.3.4 | ||
+ | Advertising Router: 192.168.3.4 | ||
+ | LS Seq Number: 80000008 | ||
+ | Checksum: 0x3348 | ||
+ | Length: 48 | ||
+ | Number of Links: 2 | ||
+ | |||
+ | Link connected to: a <b>Transit Network</b> | ||
+ | (Link ID) Designated Router address: 192.168.3.4 | ||
+ | (Link Data) Router Interface address: 192.168.3.4 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: 1 | ||
+ | |||
+ | Link connected to: a Transit Network | ||
+ | (Link ID) Designated Router address: 192.168.2.4 | ||
+ | (Link Data) Router Interface address: 192.168.2.4 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: 1 | ||
+ | |||
+ | |||
+ | LS age: 114 | ||
+ | Options: (No TOS-capability, No DC) | ||
+ | LS Type: Router Links | ||
+ | Link State ID: 192.168.4.1 | ||
+ | Advertising Router: 192.168.4.1 | ||
+ | LS Seq Number: 80000011 | ||
+ | Checksum: 0x78FF | ||
+ | Length: 60 | ||
+ | Number of Links: 3 | ||
+ | |||
+ | Link connected to: a Transit Network | ||
+ | (Link ID) Designated Router address: 192.168.3.4 | ||
+ | (Link Data) Router Interface address: 192.168.3.1 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: 1 | ||
+ | |||
+ | Link connected to: a Stub Network | ||
+ | (Link ID) Network/subnet number: 192.168.4.0 | ||
+ | (Link Data) Network Mask: 255.255.255.0 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: 1 | ||
+ | |||
+ | Link connected to: a Stub Network | ||
+ | (Link ID) Network/subnet number: 127.0.0.1 | ||
+ | (Link Data) Network Mask: 255.255.255.255 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: 1 | ||
+ | |||
+ | |||
+ | LS age: 1856 | ||
+ | Options: (No TOS-capability, DC) | ||
+ | LS Type: Router Links | ||
+ | Link State ID: 192.168.5.1 | ||
+ | Advertising Router: 192.168.5.1 | ||
+ | LS Seq Number: 80000007 | ||
+ | Checksum: 0x435E | ||
+ | Length: 72 | ||
+ | Number of Links: 4 | ||
+ | |||
+ | Link connected to: another Router (point-to-point) | ||
+ | (Link ID) Neighboring Router ID: 192.168.1.3 | ||
+ | (Link Data) Router Interface address: 192.168.1.1 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: 64 | ||
+ | |||
+ | Link connected to: a Stub Network | ||
+ | (Link ID) Network/subnet number: 192.168.1.0 | ||
+ | (Link Data) Network Mask: 255.255.255.0 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: 64 | ||
+ | |||
+ | Link connected to: a Transit Network | ||
+ | (Link ID) Designated Router address: 192.168.2.4 | ||
+ | (Link Data) Router Interface address: 192.168.2.1 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: 1 | ||
+ | |||
+ | Link connected to: a Transit Network | ||
+ | (Link ID) Designated Router address: 192.168.5.1 | ||
+ | (Link Data) Router Interface address: 192.168.5.1 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: 1 | ||
+ | |||
+ | |||
+ | LS age: 1749 | ||
+ | Options: (No TOS-capability, DC) | ||
+ | LS Type: Router Links | ||
+ | Link State ID: 192.168.6.2 | ||
+ | Advertising Router: 192.168.6.2 | ||
+ | LS Seq Number: 80000007 | ||
+ | Checksum: 0xA544 | ||
+ | Length: 48 | ||
+ | Number of Links: 2 | ||
+ | |||
+ | Link connected to: a Stub Network | ||
+ | (Link ID) Network/subnet number: 192.168.6.0 | ||
+ | (Link Data) Network Mask: 255.255.255.0 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: 1 | ||
+ | |||
+ | Link connected to: a Transit Network | ||
+ | (Link ID) Designated Router address: 192.168.5.1 | ||
+ | (Link Data) Router Interface address: 192.168.5.2 | ||
+ | Number of TOS metrics: 0 | ||
+ | TOS 0 Metrics: 1 | ||
+ | </pre></html> | ||
+ | ++++ | ||
+ | |||
+ | {{:sk1:ospf.pcap.gz|Przykładowa wymiana pakietów protokołu OSPF}} | ||
+ | |||
+ | https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_ospf/configuration/15-mt/iro-15-mt-book/iro-cfg.html | ||
+ | ===== [Ekstra] Inne ===== | ||
+ | Implementacje wielu protokołów routingu, w tym OSPFv2, dla systemu Linux: | ||
+ | * FRRouting https://frrouting.org/ (kiedyś [[http://www.nongnu.org/quagga/|Quaqqa]], jeszcze wcześniej [[https://www.gnu.org/software/zebra/|Zebra]]) - składnia (prawie) identyczna z CISCO | ||
+ | * Bird http://bird.network.cz/ |