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.
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
Metryka EIGRP
Do obliczenia metryki EIGRP można wykorzystać kilka parametrów:
- Przepustowość (Bandwidth) (K1)
- Obciążenie (Loading) (K2)
- Opóźnienie (Delay) (K3)
- 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.
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 interfejsieip hold-time eigrp ASN nowy-czas
. - Opcjonalnie zmień wartości Bandwidth oraz Delay na konkretnych interfejsach. Opcjonalnie zmień wartości
maximum-path
liczba orazvariance
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