===== [ekstra] Sposoby i protokoły tworzenia tablicy tras ===== Sposoby uzyskiwania informacji o trasach:
* ręczna konfiguracja * użycie protokołów routingu Protokoły trasowania można podzielić ze względu na obszar działania, w odniesieniu do [[https://en.wikipedia.org/wiki/Autonomous_system_(Internet)|obszarów autonomicznych (AS)]]: * [[https://en.wikipedia.org/wiki/Interior_gateway_protocol|wewnętrzne]], IGP - Interior Gateway Protocol, (mniej więcej: wyznaczające trasy wewnątrz jednej firmy / organizacji) – np. RIP, EIGRP, OSPF, IS-IS * [[https://en.wikipedia.org/wiki/Exterior_gateway_protocol|zewnętrzne]], EGP - Exterior Gateway Protocol, (mniej więcej: wyznaczające trasy w "całym internecie") – obecnie (jedynym) używanym jest BGP albo ze względu na sposób działania: * [[https://en.wikipedia.org/wiki/Distance-vector_routing_protocol|wektora odległości]] (distance vector), np. RIP, IGRP; urządzenia wymieniają się z sąsiadami tylko informacjami do jakich sieci i z jakim kosztem same potrafią się dostać; liczą tylko koszty dotarcia do sieci * [[https://en.wikipedia.org/wiki/Link-state_routing_protocol|stanu łącza]] (link state), np. OSPF, IS-IS; urządzenia wymieniają się z sąsiadami informacjami o całej topologii sieci; budują pełną mapę sieci i używając [[https://en.wikipedia.org/wiki/Shortest_path_problem#Algorithms|algorytmu znajdowania najkrótszej ścieżki w grafie]] wyznaczają trasy * [[https://en.wikipedia.org/wiki/Path-vector_routing_protocol|wektora ścieżki]] (path-vector), np. BGP; urządzenia wymieniają się z sąsiadami informacjami do jakich sieci i jaką trasą potrafią się dostać; z tego wybierają najkorzystniejszą trasę; to podejście eliminuje część wad protokołów wektora odległości i lepiej radzi sobie z dużymi sieciami niż protokoły stanu łącza https://en.wikipedia.org/wiki/Routing#Topology_distribution ===== OSPF (Open Shortest Path First) ===== ==== Wstęp ==== OSPF to protokół trasowania (czyli tworzenia tablicy tras), do użycia wewnątrz obszaru autonomicznego (IGP), używający podejścia stanu łącza. Każdy router konstruuje mapę sieci i używa algorytmu Dijkstry dla znajdowania najkrótszych ścieżek. OSPFv2 działa tylko dla IPv4, OSPFv3 działa też dla IPv6. ==== [extra] Działanie OSPF ==== === LSA === Pojedyncza jednostka informacji o sieci używana przez OSPF nazywa się //[[http://en.wikipedia.org/wiki/Link-state_advertisement|Link-State Advertisement]]// (LSA). 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 * trasach spoza OSPF * o trasach z innego obszaru Protokół OSPF będzie dążył do przesłania do każdego urządzenia (w obszarze) wszystkich LSA, tak by każde urządzenie miało ten sam zbiór (bazę) informacji o sieci. === Kolejne kroki protokołu === 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, routery etc.. Komunikaty DD zawierają tylko identyfikatory wszystkich znanych LSA. 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 (LSA). Komunikat LSU jest rozgłaszana epidemicznie do wszystkich sąsiadów. Ż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 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. === Adresy IP używane przez OSPF === OSPF w miarę możliwości (technicznych sieci) używa //IP-multicast//, wykorzystując dwa adresy: * 224.0.0.5 - wszystkie routery - All OSPF Routers * 224.0.0.6 - desygnowane routery - All DRouters === Obszary === Przy konfiguracji OSPF pozwala podzielić sieć na obszary (areas). Routing w każdym obszarze jest wykonywany osobno, wykorzystując algorytm Dijkstry, między obszarami wymieniane są gotowe trasy. \\ Obszar 0 (//area 0//) stanowi szkielet (backbone), wszystkie inne obszary muszą mieć z nim łączność. Router łączący dwa obszary nazywa się //area border router// (ABR). === Więcej … === {{:sk1:ospf.pcap.gz|Przykładowa wymiana pakietów protokołu OSPF}} Więcej o OSPF doczytasz tutaj: [[http://en.wikipedia.org/wiki/Open_Shortest_Path_First|[wikipedia]]], [[http://technet.microsoft.com/en-us/library/cc940481.aspx|microsoft]] (nawiguj się w menu z lewej strony między podstronami), [[http://www.cs.put.poznan.pl/mlibuda/OSPF_Linux.pdf|stare materiały z PP]], [[https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_ospf/configuration/15-mt/iro-15-mt-book/iro-cfg.html|Cisco]]. ===== OSPF na routerach Cisco ===== === Konfiguracja === Z trybu konfiguracji (znak zachęty: ''(config)#''): * ''router ospfR2#show ip route 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 192.168.4.0/24 [110/4] via 192.168.5.1, 00:03:34, GigabitEthernet0/0 C 192.168.5.0/24 is directly connected, GigabitEthernet0/0 C 192.168.6.0/24 is directly connected, GigabitEthernet1/0 O 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 [110/2] 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 R2#show ip protocols Routing Protocol is "ospf 1" Outgoing update filter list for all interfaces is not set Incoming update filter list for all interfaces is not set Router ID 192.168.6.2 Number of areas in this router is 1. 1 normal 0 stub 0 nssa Maximum path: 4 Routing for Networks: 192.168.5.0 255.255.255.0 area 0 192.168.6.0 255.255.255.0 area 0 Reference bandwidth unit is 1000 mbps Routing Information Sources: Gateway Distance Last Update 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 Distance: (default is 110) R2#show ip ospf interface GigabitEthernet0/0 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: 1 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 192.168.5.1 (Designated Router) Suppress hello for 0 neighbor(s) R2#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 192.168.5.1 1 FULL/DR 00:00:37 192.168.5.1 GigabitEthernet0/0 R2#show ip ospf database router 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: 192.168.1.3 LS Seq Number: 80000009 Checksum: 0x1AE5 Length: 60 Number of Links: 3 Link connected to: another Router (point-to-point) (Link ID) Neighboring Router ID: 192.168.5.1 (Link Data) Router Interface address: 192.168.1.3 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 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: 1 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 Transit Network (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++++ [[bio-sk:ospf-przykladowa-konfiguracja|(Długa) przykładowa konfiguracja i pełne wyniki poleceń diagnostycznych.]] ===== [Ekstra] OSPF na Linuksie ===== Implementacje wielu protokołów routingu dla systemu Linux (w tym OSPFv2), oferują: * 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/ Przykładowa konfiguracja FRRouting jest zawarta w powyższej przykładowej konfiguracji