===== [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 ospf '' 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 area '' \\ 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'' \\
Dodatkowe komendy:
* ''auto-cost reference-bandwidth '' ustawia referencyjną prędkość używaną do automatycznego obliczania kosztów połączenia, np:\\ ''auto-cost reference-bandwidth 10000'' * ''default-information originate'' włącza redystrybucję trasy domyślnej * ''redistribute '' 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 * ''passive-interface |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 'GigabitEthernet 5': \\ ''passive-interface GigabitEthernet 5'' \\ Przykład 2 - pozwala na połączenia OSPF tylko na 'GigabitEthernet 4' i 'GigabitEthernet 5' \\ ''passive-interface default'' \\ ''no passive-interface GigabitEthernet 4'' \\ ''no passive-interface GigabitEthernet 5'' * ''intreface …'' / ''interface range …'' wchodzi do konfiguracji interfejsu * ''bandwidth '' zmiana postrzeganej przez protokoły routingu prędkości * ''ip ospf cost '' sztuczna zmiana kosztu danego łącza dla OSPF === Diagnostyka === W trybie uprzywilejowanym: * ''show ip protocols'' pokazuje działające protokoły, w tym 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 database'' podsumowane 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 * ''show ip ospf rib'' trasy wyliczone przez OSPF i ich koszty (w tym trasy które nie były najkrótsze) Każdemu protokołowi routingu Cisco przypisuje wartość AD ([[http://en.wikipedia.org/wiki/Administrative_distance|administrative distance]]). Cisco wybiera trasy biorąc pod uwagę wpierw trasy z najmniejszą AD, potem porównuje dopiero koszt. Zapis w tablicy routingu: [AD/koszt], np: |''O 10.1.3.0/24 [110/65] via 10.3.4.3, 00:49:11, FastEthernet0/0'' |AD:110, koszt:65 | |''D 10.0.2.0/24 [90/2297856] via 10.2.4.2, 00:09:38, Serial0/0'' |AD:90, koszt:2297856| |''C 10.4.5.0/24 is directly connected, FastEthernet0/1'' |AD:1 | ++++ Przykładowe wyniki poleceń diagnostycznych | ++ schemat sieci: | {{ :sk1:ospf-example-net.png?700 |}}++
R2#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