Rafał Rudewicz

2 października 2017

Inna Sieć Newsletter


EIGRP – Routing Distance Vector od Cisco

Routing & Switching | 0 komentarzy

Głównymi założeniami które przyjęli sobie inżynierowie Cisco tworząc EIGPR było stworzenie rozwiązania wyjątkowo prostego w konfiguracji oraz zarządzaniu jednocześnie wspierającego CIDR, VLSM  oraz oferującego szybki czas konwergencji. Czym im się udało? Sprawdźmy to!
Enhanced Interior Gateway Routing Protocol

i 3 Spis treści

EIGRP – Enhanced IGRP

Pierwsze protokoły routingu dynamicznego korzystały z logiki przekazywania pakietów charakteryzującej obecne protokoły Distance (odległość) Vector (kierunek). W tamtych czasach powszechnie stosowanymi protokołami był 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ę Distance Vector, OSPF zaprezentował coś zupełnie nowego, czyli routing Link state, a cisco wraz ze swoim EIGRP zaproponowało coś pomiędzy.

Głównymi założeniami, które przyjęli sobie inżynierowie Cisco, tworząc EIGPR, było stworzenie rozwiązania wyjątkowo prostego w konfiguracji oraz zarządzaniu jednocześnie wspierającego CIDR, VLSM  oraz oferującego szybki czas konwergencji.

  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 opisuje w dosyć dokładny sposób, różnice pomiędzy poszczególnymi protokołami routingu jednakże wymaga kilku słów wyjaśnienia. Czym jest route poisoning? Ponieważ nie wymyślono mechanizmy update odwołującego sieć, routery wysyłają update, z siecią podając metrykę nieskończości. W takim wypadku router odbierający informację o zmianie uzna daną trasę za nieosiągalną.

EIGRP Distance vector czy link state?

Odpowiedź na to pytanie wbrew pozorom nie jest taka oczywista. EIGRP tak jak protokoły DV posiada metrykę dla każdej trasy oraz posiada wiedzę jedynie o swoich sąsiadach. Jednakże tak jak protokoły stanu łącza nie rozsyła okresowo tablic routingu, wysyła jedynie częściowe informacje o zmianach w sieci.

EIGRP wykorzystuje podobnie jak OSPF trójstopniowy model dołączania nowego routera do sieci. W każdym kroku tworzymy tabelę: topologii, sąsiadów oraz routingu.

  1. Odkrywanie sąsiadów: Router wysyła na adres multicastowy 224.0.0.10 pakiety Hello w celu odkrycia innych potencjalnych routerów pracujących na EIGRP. Dokonuje podstawowego sprawdzenia, czy taki router może zostać sąsiadem. Jeśli wynik jest pozytywy, to sąsiad jest dopisywany do tablicy.
  2. Wymiana topologii: Sąsiedzi wymieniają się pełnymi informacjami o topologii jedynie podczas nawiązywania sąsiedztwa. Następnie wysyłane są wyłącznie aktualizacje odnośnie zmian w sieci. Tak pozyskane informacje są dodawane do tablicy topologii.
  3. Zapełnianie tablicy routingu: Każdy router analizuje własną tablicę topologii i wybiera trasy do danej podsieci o najniższej metryce. Tak wybrana trasa zostanie następnie dodana do tablicy routingu,

Relacja sąsiedztwa

Z perspektywy pojedynczego routera sąsiadem nazwiemy każdy EIGRP router, z którym mamy bezpośrednie połączenie, adresy w tej samej podsieci oraz jesteśmy w tym samym autonomicznym systemie. 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 przylegania są osiągnięte:

  • 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 info przy obliczaniu metryki)

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

Typy 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 lu adres unicastowy.

  • Hello
    • Wykorzystywane odkrywania sąsiadów
    • Wysyłane bezpotwierdzenia
    • Wysyłane na adres multicast
  • Update
    • Wysyłane za potwierdzeniem
    • Wysyłane na adres unicast lub multicast
    • Wykorzystywane do propagowania informacji
  • Query
    • Wysyłane w odpytania o konkretną trasę
    • Wysyłane na adres unicast lub multicast
  • Reply
    • Odbiorca oczekuje na potwierdzenie otrzymania
    • Wysyła 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 update do rozsyłania informacji o topologii do sąsiadów. Pakiety update 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 czemu router wysyłający pakiet update wie, czy został on poprawnie dostarczony czy powinien zostać przesłany ponownie. Kolejnym powodem zastosowanie RTP była chęć stworzenie prokołu niezależnego od warstwy sieciowej. Dzięki czemu EIGRP może być również wykorzystany w sieciach Appletalk czy IPX.

Algorytm DUAL

EIGRP wykorzystuje algorytm Diffusing Update Algorith (DUAL) w celu zapewnienia ścieżek (podstawowej oraz zapasowej) do danej podsieci z uwzględnieniem braku pętli routingu. Proces decyzyjny dla 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 i z tego powodu 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 routngu.

DUAL zapewnia:

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

Feasible i Reported Distance

Zanim zaczniemy rozmawiać o konwergencji oraz o tym jak router wybiera najlepszą trasę, musisz poznać kilka terminów specyficznych dla EIGRP:

Feasible Distance (FD): Lokalna metryka dotarcia do danej podsieci obliczona na routerze
Reported Distance (RD) albo Advertised Distance (AD): Metryka dotarcia do podsieci otrzymana od sąsiada (next-hop router).

Successor: To najlepsza droga do danej podsieci, która zostanie umieszczona w tablicy routingu.
Feasible Successor: To zapasowa trasa do danej podsieci, nieumieszczona w tablicy routingu, tylko w tablicy topologii. Aby trasa była uznana za FS, jej RD musi być mniejsze niż FD. Innymi słowy, aby trasa mogła być uważana za FS, metryka dotarcia do podsieci od sąsiada musi być mniejszy niż metryka dotarcia przez Successora.

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

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

Logika algorytmu DUAL

Metryka EIGRP

Do obliczenia metryki EIGRP możemy 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 tak:

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

BW = 107/Przepustowość w Kbps

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

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

Czyli przepustowość najwolniejszego linku plus łączne opóźnienie wszystkich łączy na trasie (podzielona przez 10) pomnożone przez 256. Jest to standardowa wersja algorytmu, z której korzystają urządzenia Cisco zaraz po podłączeniu.

EIGRP

Na powyższym obrazku mamy router R2 podpięty gigabitowym portem do podsieci 172.16.0.0. Standardowo ten port ma 1000000kbps oraz delay 100. Podstawiając te dane do wzoru, otrzymujemy FD dla R2. EIGPR dokonuje zaokrąglenia w dół wyniku dzielenia 10^7/Bandwidth)!

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

Otrzymane w ten sposób FD jest rozsyłane jako RD do sąsiadów, w tym wypadku do R1. Oprócz RD przesyłana jest informacja o najwolniejszym łączu (w naszym przypadku wszystkie łącza są jednogigabitowe) oraz łączny delay już podzielony przez 10.

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

Podstawowa konfiguracja

Konfiguracja EIGRP jest bardzo podobna do tej z OSPF. Polecenie router eigrp ASN (autonomous system number)  wymusza uruchomienie protokołu EIGRP na routerze i przejście do trybu konfiguracji. Podobnie jak w OSPF polecenie network  aktywuje wszystkie interfejsy w danej podsieci. Następnie EIGRP spróbuje znaleźć sąsiadów oraz rozgłosi podsieci podłączone do swoich interfejsów.

  1. Użyj polecenia router eigrp ASN
  2. Skonfigruj poleceniem network adres-ip jeden lub więcej interfejsów
  3. Opcjonalnie Skonfiguruj ręcznie eigrp router-id adres-ip
  4. Opcjonalnie Zmień wartość timera Hello ip hello-interval eigrp ASN nowy-czas  lub timer Hold’a (czas oczekiwania) ip hold-time eigrp ASN nowy-czas
  5. Opcjonalnie Zmień wartości Bandwidth oraz Delay na konkretnych interfejsach
  6. Opcjonalnie Zmień wartości maximum-path liczba oraz variance multiplier
  7. Opcjonalnie Wyłącz auto-sumaryzację no auto-summary
eigrp-topologia

Konfiguracja bez sumaryzacji

Za pomocą trzech tych samych poleceń wydanych na wszystkich routerach otrzymamy w pełni funkcjonalną sieć na podstawie EIGRP.

R3(config)#router eigrp 1
R3(config-router)#network 10.0.0.0
R3(config-router)#no auto-summary
%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 10.4.1.1 (GigabitEthernet0/0) is up: new adjacency

%DUAL-5-NBRCHANGE: IP-EIGRP 1: Neighbor 10.6.1.1 (GigabitEthernet0/1) is up: new adjacency

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

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
Rafał Rudewicz

Rafał Rudewicz

Specjalizuję się w rozwiązaniach Enterprise oraz Service Provider. Projektuję, wdrażam oraz naprawiam sieci dla największych firm na świecie.

0 komentarzy

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *