Routing & Switching

EIGRP - Routing Distance Vector od Cisco

Enhanced Interior Gateway Routing Protocol
W: Routing & Switching

Pierwsze protokoły routingu dynamicznego korzystały z logiki przekazywania pakietów charakteryzującej obecne protokoły wektorów odległości. W tamtych czasach powszechnie stosowanymi protokołami były RIP w wersji pierwszej, oraz niedługo później wydany IGRP.

Jednak we wczesnych latach 90., kiedy "zakończyła się" wojna o standaryzację sieciową i zaczęto odchodzić od własnościowych rozwiązań na rzecz sieci opartych o routery, LAN i TCP/IP, pojawiła się potrzeba lepszych protokołów routingu. Tak powstały jako ulepszone wersje swoich protoplastów RIPv2, EIGRP, OSPFv2. RIP zachował swoją logikę wektorów odległości, OSPF zaprezentował coś zupełnie nowego, czyli routing stanu łącza, a Cisco wraz ze swoim EIGRP zaproponowało coś pomiędzy.

RIPv2 EIGRP OSPF
Metryka ustalana na podstawie Ilość skoków Przepustowość oraz opóźnienie Koszt
Okresowo wysyła całą tablicę routingu Tak Nie Nie
Okresowo wysyła pakiety Hello Nie Tak Tak
Stosuje route poisoning Tak Tak Tak
Budowa hierarchiczna Nie Nie Tak
Stosuje split horizon Tak Tak Nie
Stosowany adres multicast 224.0.0.9 224.0.0.10 224.0.0.5, 224.0.0.6
Metryka „nieskończości” 16 232 – 1 224 – 1

Powyższa tabelka dokładnie opisuje różnice między poszczególnymi protokołami routingu, jednak potrzebuje kilku słów wyjaśnienia.

Czym jest "route poisoning"? Ponieważ nie istnieje mechanizm odwołujący się do sieci w aktualizacjach, routery wysyłają aktualizację sieci, podając metrykę nieskończoności. W takim przypadku router odbierający informację o zmianie uzna daną trasę za nieosiągalną.

EIGRP - protokół wektorów odległości czy stanu łącza?

Odpowiedź na to pytanie nie jest tak oczywista, jak się mogłoby wydawać. EIGRP, podobnie jak protokoły wektorów odległości, posiada metrykę dla każdej trasy i zdolność do komunikacji tylko z bezpośrednimi sąsiadami. Jednakże, w przeciwieństwie do protokołów stanu łącza, EIGRP nie rozsyła regularnie tabel routingu, lecz przesyła jedynie częściowe informacje o zmianach w sieci.

EIGRP, podobnie jak OSPF, używa trójstopniowego modelu dołączania nowego routera do sieci. W każdym etapie tworzona jest tabela topologii, sąsiadów oraz routingu.

  • Odkrywanie sąsiadów: Router wysyła pakiety Hello na adres multicastowy 224.0.0.10 w celu odnalezienia potencjalnych routerów pracujących w EIGRP. Następuje podstawowa weryfikacja, czy dany router może zostać sąsiadem. Jeśli wynik jest pozytywny, sąsiad zostaje dodany do tablicy.
  • Wymiana informacji o topologii: Sąsiedzi wymieniają pełne informacje o topologii tylko podczas nawiązywania sąsiedztwa. Następnie przekazywane są jedynie aktualizacje dotyczące zmian w sieci. Te informacje są dodawane do tablicy topologii.
  • Wypełnianie tablicy routingu: Każdy router analizuje własną tablicę topologii i wybiera trasy do konkretnej podsieci o najniższej metryce. Wybrana trasa jest następnie dodawana do tablicy routingu.

Nawiązywanie relacji sąsiedztwa

Z perspektywy pojedynczego routera sąsiadem nazwiemy każdego routera EIGRP, z którym mamy bezpośrednie połączenie, adresy w tej samej podsieci oraz jesteśmy w tym samym systemie autonomicznym. Do nawiązywania sąsiedztwa EIGRP wykorzystuje okresowo wysyłane pakiety HELLO.

Po odkryciu nowego routera następuje sprawdzenie, czy podstawowe wymogi do nawiązania relacji są spełnione:

  • Czy router przechodzi poprawnie autentykację?
  • Czy routery są w tym samym systemie autonomicznym AS?
  • Czy routery są w tej samej podsieci?
  • Czy wartości K dla metryk EIGRP są takie same? (więcej informacji przy obliczaniu metryki)

W odróżnieniu od OSPF, routery EIGRP przechodzą do stanu przekazywania informacji natychmiast po nawiązaniu relacji sąsiedztwa.

Rodzaje pakietów EIGRP

W EIGRP wyróżniamy 5 rodzajów pakietów, które w zależności od swojego przeznaczenia mogą być wysyłane na adres multicastowy lub adres unicastowy.

Hello

  • Wykorzystywane do odkrywania sąsiadów
  • Wysyłane bez potwierdzenia
  • Wysyłane na adres multicast

Update

  • Wykorzystywane do propagowania informacji
  • Wysyłane za potwierdzeniem
  • Wysyłane na adres unicast lub multicast

Query

  • Wysyłane w odpytaniu o konkretną trasę
  • Wysyłane na adres unicast lub multicast

Reply

  • Odbiorca oczekuje potwierdzenia otrzymania
  • Wysyłane w odpowiedzi na pakiety Query
  • Wysyłane na adres unicast

Acknowledgement

  • Wysyłane w celu potwierdzenia otrzymania danych
  • Wysyłane na adres unicast

Pakiety Update

EIGRP wykorzystuje pakiety aktualizacji do rozsyłania informacji o topologii do sąsiadów. Pakiety aktualizacji są wysyłane na adres multicastowy 224.0.0.10 (ten sam, na który wysyłane są pakiety HELLO), gdy zachodzi potrzeba poinformowania więcej niż jednego routera w danej podsieci. W przeciwnym wypadku pakiety kierowane są na adres unicastowy sąsiada.

EIGRP wysyła pakiety HELLO bez użycia UDP lub TCP, zamiast tego wykorzystuje protokół Reliable Transport Protocol (RTP).

RTP dostarcza mechanizmów pozwalających na przesyłanie danych jednakowo za potwierdzeniem lub bez potwierdzenia otrzymania danych. Dzięki temu router wysyłający pakiet aktualizacji wie, czy został on poprawnie dostarczony czy powinien zostać przesłany ponownie.

Kolejnym powodem zastosowania RTP była chęć stworzenia protokołu niezależnego od warstwy sieciowej. Dzięki temu EIGRP może być również wykorzystany w sieciach AppleTalk czy IPX.

Algorytm DUAL

EIGRP wykorzystuje algorytm Diffusing Update Algorithm (DUAL) w celu zapewnienia ścieżek (podstawowej oraz zapasowej) do danej podsieci z uwzględnieniem braku pętli routingu. Proces decyzyjny obliczania każdej ścieżki jest wykonywany przez DUAL Finite State Machine (FSM). Śledzi on wszystkie trasy i na podstawie metryki EIGRP wybiera najefektywniejsze (o najniższej metryce) ścieżki do umieszczenia w tablicy routingu.

Przeliczanie metryk jest operacją mocno obciążającą procesor, dlatego EIGRP stara się dokonywać takich przeliczeń jak najrzadziej. Jest to możliwe poprzez przechowywanie zapasowych tras w tablicy topologii. W przypadku awarii podstawowej trasy, kolejna może zostać natychmiast przeniesiona z tablicy topologii do tablicy routingu.

Algorytm DUAL zapewnia:

  • Szybką zbieżność
  • Minimalne użycie łącza poprzez aktualizacje protokołu
  • Ścieżki wolne od pętli routingu
  • Zapasowe ścieżki, które mogą być natychmiastowo użyte

Feasible i Reported Distance

Zanim rozpoczniemy rozmowę o konwergencji i sposobie wyboru najlepszej trasy przez router, musisz zapoznać się z kilkoma terminami specyficznymi dla EIGRP.

Feasible Distance (FD): Lokalna metryka do osiągnięcia konkretnej podsieci obliczona na routerze.

Zgłoszona Odległość (RD) lub Odległość Reklamowana (AD): Metryka do osiągnięcia podsieci otrzymana od sąsiada (routera next-hop).

Successor: To najlepsza droga do konkretnej podsieci, która zostanie umieszczona w tablicy routingu.

Feasible Successor: To zapasowa trasa do konkretnej podsieci, nieumieszczona w tablicy routingu, lecz w tablicy topologii. Aby trasa została uznana za Feasible Successor, jej RD musi być mniejsza niż FD. Innymi słowy, aby trasa mogła być uznana za Feasible Successor, metryka do osiągnięcia podsieci od sąsiada musi być mniejsza niż metryka do osiągnięcia przez Sukcesora.

💡
Trasa może być uznana za Feasible Successor, gdy metryka do osiągnięcia podsieci od sąsiada jest mniejsza niż metryka do osiągnięcia podsieci przez Successor.
Przykład kalkulacji metryk dla EIGRP

W powyższym przypadku wyraźnie widać, że:

  • Trasa przez R2 będzie Successorem, ponieważ ma najniższą metrykę.
  • Metryka RD routera R3 jest niższa niż metryka Successora, więc ta trasa może być traktowana jako feasible successor. 10 < 150

Logika algorytmu DUAL

FSM dla algorytmu DUAL

Metryka EIGRP

Do obliczenia metryki EIGRP można wykorzystać kilka parametrów:

  1. Przepustowość (Bandwidth) (K1)
  2. Obciążenie (Loading) (K2)
  3. Opóźnienie (Delay) (K3)
  4. Wiarygodność (Reliability) (K4 i K5)

Pełny wzór na metrykę wygląda następująco:

Metryka = (K1 * BW + ((K2 * BW) / (256 - obciążenie)) + K3 * opóźnienie) * (K5 / wiarygodność + K4)

GDZIE: BW = 10^7 / Przepustowość w Kbps

Jednak najczęściej stosowaną wersją algorytmu jest:

Metryka = (10^7 / najniższa wartość przepustowości) + całkowite opóźnienie (delay / 10) * 256

Oznacza to, że przepustowość najwolniejszego łącza plus suma opóźnień wszystkich łączy na trasie (podzielona przez 10), pomnożona przez 256. To standardowa wersja algorytmu, którą urządzenia Cisco stosują od razu po podłączeniu.

Kalkulacja metryki EIGRP

Na powyższym obrazku widzimy router R2 podłączony za pomocą portu gigabitowego do podsieci 172.16.0.0. Domyślnie ten port ma przepustowość 1000000kbps oraz opóźnienie 100. Podstawiając te dane do wzoru, otrzymujemy FD dla R2. EIGRP zaokrągla wynik dzielenia 10^7/przepustowość w dół!

FD dla R2 = (10^7/1000000 +100/10)*256 = 5120

FD uzyskany w ten sposób jest przesyłany jako RD do sąsiadów, w tym przypadku do R1. Oprócz RD przekazywana jest informacja o najwolniejszym łączu (wszystkie łącza mają jednogigabitową przepustowość) oraz łączne opóźnienie już podzielone przez 10.

FD dla R1 = (10^7/1000000 + (100+10) / 10)*256 = 5376

Podstawowa konfiguracja

Konfiguracja EIGRP jest bardzo podobna do konfiguracji OSPF. Polecenie router eigrp ASN (numer systemu autonomicznego) uruchamia protokół EIGRP na routerze i przenosi do trybu konfiguracji. Podobnie jak w OSPF, polecenie network aktywuje wszystkie interfejsy w danej podsieci. Następnie EIGRP próbuje znaleźć sąsiadów oraz rozgłosić podsieci podłączone do swoich interfejsów.

  • Użyj polecenia router eigrp ASN.
  • Skonfiguruj poleceniem network adres-ip jeden lub więcej interfejsów.
  • Opcjonalnie skonfiguruj ręcznie identyfikator routera eigrp router-id adres-ip.
  • Opcjonalnie zmień wartość timera Hello na interfejsie ip hello-interval eigrp ASN nowy-czas lub timer Hold (czas oczekiwania) na interfejsie ip hold-time eigrp ASN nowy-czas.
  • Opcjonalnie zmień wartości Bandwidth oraz Delay na konkretnych interfejsach. Opcjonalnie zmień wartości maximum-path liczba oraz variance multiplier.
  • Opcjonalnie wyłącz auto-sumaryzację no auto-summary.
R3(config)#router eigrp 1
R3(config-router)#network 10.0.0.0

Konfiguracja bez sumaryzacji

Wydanie tych samych trzech poleceń na wszystkich routerach pozwoli nam stworzyć w pełni funkcjonalną sieć opartą na protokole EIGRP.

R3(config)#router eigrp 1
R3(config-router)#network 10.0.0.0
R3(config-router)#no auto-summary

Nasza prosta konfiguracja uruchomiła EIGRP w AS 1 (wszystkie routery muszą być w tym samym AS, aby nawiązać sąsiedztwo). Zakres dostępnych numerów jest identyczny jak dla procesów w OSPF i wynosi 1-65535.

Weryfikacja konfiguracji

Zweryfikujmy, czy wszystko działa, jak należy.

R3#show ip eigrp neighbors 
IP-EIGRP neighbors for process 1
H   Address         Interface      Hold Uptime    SRTT   RTO   Q   Seq
                                   (sec)          (ms)        Cnt  Num
0   10.4.1.1        Gig0/0         11   00:02:37  40     1000  0   78
1   10.6.1.1        Gig0/1         13   00:02:37  40     1000  0   276
R3#show ip eigrp topology 
IP-EIGRP Topology Table for AS 1/ID(10.6.1.2)

Codes: P - Passive, A - Active, U - Update, Q - Query, R - Reply,
       r - Reply status

P 10.1.0.0/16, 1 successors, FD is 5376
         via 10.4.1.1 (5376/5120), GigabitEthernet0/0
P 10.2.0.0/16, 1 successors, FD is 5376
         via 10.6.1.1 (5376/5120), GigabitEthernet0/1
P 10.3.0.0/16, 1 successors, FD is 5120
         via Connected, GigabitEthernet0/2
P 10.4.0.0/16, 1 successors, FD is 2816
         via Connected, GigabitEthernet0/0
P 10.5.0.0/16, 2 successors, FD is 3072
         via 10.4.1.1 (3072/2816), GigabitEthernet0/0
         via 10.6.1.1 (3072/2816), GigabitEthernet0/1
P 10.6.0.0/16, 1 successors, FD is 3328
         via 10.4.1.1 (3328/3072), GigabitEthernet0/0
P 10.6.1.0/24, 1 successors, FD is 2816
         via Connected, GigabitEthernet0/1
R3#show ip route 

Gateway of last resort is not set

     10.0.0.0/8 is variably subnetted, 10 subnets, 3 masks
D       10.1.0.0/16 [90/5376] via 10.4.1.1, 00:02:45, GigabitEthernet0/0
D       10.2.0.0/16 [90/5376] via 10.6.1.1, 00:02:45, GigabitEthernet0/1
C       10.3.0.0/16 is directly connected, GigabitEthernet0/2
L       10.3.1.1/32 is directly connected, GigabitEthernet0/2
C       10.4.0.0/16 is directly connected, GigabitEthernet0/0
L       10.4.1.2/32 is directly connected, GigabitEthernet0/0
D       10.5.0.0/16 [90/3072] via 10.4.1.1, 00:02:45, GigabitEthernet0/0
                    [90/3072] via 10.6.1.1, 00:02:45, GigabitEthernet0/1
D       10.6.0.0/16 [90/3328] via 10.4.1.1, 00:02:45, GigabitEthernet0/0
C       10.6.1.0/24 is directly connected, GigabitEthernet0/1
L       10.6.1.2/32 is directly connected, GigabitEthernet0/1
Napisane przez
Rafał Rudewicz
Pasjonat sieci komputerowych i automatyzacji. CCNP Enterprise & DevNet Specialist. IP/MPLS SME. Dołącz do mnie, aby razem odkrywać fascynujący świat technologii!
Komentarze
Spis treści
Świetnie! Udało ci się pomyślnie zarejestrować.
Witaj z powrotem! Zalogowałeś się pomyślnie.
Pomyślnie subskrybowałeś Inna Sieć.
Twój link wygasł.
Sukces! Sprawdź swoją skrzynkę e-mailową, aby uzyskać magiczny link do logowania.
Sukces! Twoje informacje rozliczeniowe zostały zaktualizowane.
Twoje informacje rozliczeniowe nie zostały zaktualizowane.