SIECI
KOMPUTEROWE I
BORDER
GATEWAY PROTOCOL - BGD
Border
Gateway Protocol wersja
4 (BGP-4) - RFC 4271 - jest protokołem routingu między systemami
autonomicznymi AS (Autonomous System). Główną funkcją routera BGP (Border
Gateway Protocol) jest wymiana informacji o osiągalności sieci w Internecie z
sąsiednimi routerami BGP w innym AS. BGP-4 wspiera CIDR, inkrementacyjne
aktualizacje, lepsze filtrowanie i elastyczniejsze polityki routingu niż
poprzednie wersje BGP.
Informacja o
dostępności sieci w BGP (Border Gateway Protocol) zawiera listę systemów
autonomicznych AS, przez które przechodzi ta informacja. Jest ona wystarczająca
by utworzyć graf połączeń AS w BGP, w którym wyeliminowane są pętle routingu i
gdzie można uruchomić pewne reguły decyzyjne na poziomie AS.
BGP-4 wprowadza nowy zbiór mechanizmów do obsługi międzydomenowego
routingu bezklasowego CIDR (Classless Interdomain Routing).
Zawierają one obsługę rozgłaszania prefiksów IP i eliminują koncepcję klas sieci
w BGP. Protokół BGP-4 wprowadza również mechanizmy umożliwiające agregację
tras, włączając w to agregację ścieżek AS.
BGP (Border Gateway Protocol) działa na niezawodnym protokole transportowym
jakim jest TCP, zestawiając połączenia na porcie 179 ze swoimi sąsiednimi
routerami BGP. Dwa routery z BGP zestawiają między sobą połączenie TCP.
Wymieniają między soba wiadomości dla otwarcia i potwierdzenia parametrów
połączenia. Na początku wymieniają między sobą całą tabelę routingu, a
aktualizacje incrementacyjne wysyłane są tylko wtedy, gdy zmieni się tabela
routingu BGP. BGP nie wymaga okresowych odświeżeń całej tabeli routingu BGP, w
związku z tym routery BGP przetrzymuja całą aktualną tabelę routingu wszystkich
swoich sąsiadów BGP, z którymi mają zestawione połączenie, na czas trwania tego
połączenia. Routery BGP okresowo wysyłają między sobą wiadomości KeepAlive,
by upewnić się o żywotności połączenia. Wysyłane są też wiadomości Notification
(zawiadomienia) w odpowiedzi na wszelkie błędy i wyjątkowe sytuacje w routerach
BGP. Jeśli połączenie napotka jakieś błędy, wysyłana jest wiadomość Notification
i połączenie między dwoma peerami BGP jest zamykane.
Jeśli system autonomiczny AS ma wiele routerów BGP i udostępnia usługi
tranzytowe dla innych AS, należy wziąć pod uwagę spójny pogląd routingu
wewnątrz tego AS i go zapewnić. Spójny wygląd wewnętrznych tras zapewniają
protokoły routingu IGP (Interior Gateway Protocol), takie jak RIP, OSPF czy
IS-IS. Spójny wygląd tras zewnętrznych do AS może być zapewniony przez
utrzymanie bezpośrednich połączeń z wszystkimi routerami BGP wewnątrz AS.
Stosując wspólny zbiór reguł, routery BGP dochodzą do porozumienia, które
routery brzegowe będą działać jako punkty wyjścia/wejścia dla poszczególnych
przeznaczeń na zewnątrz danego systemu AS. Informacje te są przekazywane do
wewnętrznych routerów AS, przez protokoły routingu wewnątrzdomenowego IGP.
Należy uważać, by wszystkie routery zostały zaktualizowane informacją o
tranzycie, zanim routery BGP zaanonsują do innych AS, że umożliwiają tą usługę
tranzytową (czyli, że mogą przenieść ruch tranzytowy do jakiegoś
przeznaczenia).
Połączenia między routerami BGP z różnych AS są traktowane jako łącza
zewnętrzne (E-BGP, External BGP), natomiast połączenia między routerami BGP w
tym samym AS są traktowane jako łącza wewnętrzne (I-BGP, Internal BGP). Tak
samo traktuje się peerów (sąsiadujące routery równorzędne) jako zewnętrznych
peer i wewnętrznych peer.
BGP (Border Gateway Protocol) tworzy graf systemów autonomicznych AS w
oparciu o informacje wymieniane między routerami BGP (można nazwać to drzewem
AS systemów autonomicznych). BGP traktuje całą sieć Internet jako drzewo ASów,
gdzie każdy AS ma swój unikalny numer. Połączenia między AS nazywamy w BGP
ścieżkami (AS_path), natomiast trasą nazywamy zbiór informacji o tej ścieżce.
Po zestawieniu sesji i sąsiedztwa między routerami BGP, wymieniane są wszystkie
trasy między nimi (tylko te, które administrator chce wymienić). Kolejne
zmiany w tabelach routingu routerów BGP są aktualizacjami inkrementacyjnymi.
Tego typu aktualizacje powodują zmniejszenie potrzebnej mocy procesorów i
ilości pasma potrzebnego na obsługę okresowych uaktualnień.
Typy wiadomości BGP
W BGP (Border
Gateway Protocol) wyróżnia się 5 typów wiadomości:
1 - OPEN - wiadomość rozpoczynająca zestawienie
sesji BGP. Zawiera wersję protokołu BGP, nr systemu autonomicznego AS, HOLD
TIME (jak długo ma być podtrzymana sesja BGP, jeśli nie nadejdzie wiadomość
KEEPALIVE lub UPDATE), identyfikator routera BGP (RouterID) oraz opcjonalne
parametry wykorzystywane przy zestawieniu sesji BGP.
2 - UPDATE - wiadomość przenosząca informacje o
routingu. Składa się z trzech części: informacji o nieaktualnych trasach,
atrybutów ścieżki i NLRI (Network Layer Reachability Information), czyli informacje
o dostępnych sieciach.
3 -
NOTIFICATION - wiadomość
wysyłana za każdym razem, gdy wystąpi jakikolwiek błąd w nagłówku wiadomości,
wiadomości OPEN, UPDATE, błąd FSM (Finite State Machine), upłynięciu HOLD TIME,
innych nie wymienionych błędów.
4 - KEEPALIVE
- wiadomość
podtrzymująca połączenie(sesję) BGP, wykorzystuje się ją do zerowania licznika
HOLD TIME w przypadku braku wiadomości UPDATE.
5 -
ROUTE-REFRESH -
wiadomość obsługująca dynamiczne żądania odświeżenia tras.
Zestawienie sesji BGP
Maszyna stanów
FSM (Finite State Machine) w BGP zawiera 6 stanów: IDLE, CONNECT, ACTIVE,
OPENSENT, OPENCONFIRM, ESTABLISHED.
IDLE - pierwszy stopień połączenia, w którym
oczekuje się na tzw. zdarzenie Start (inicjalizacja połączenia przez zdalny
router BGP lub administartora routera BGP, przez np. reset lub stworzenie nowej
sesji BGP). Po tym stanie router BGP przechodzi do stanu CONNECT, a jeśli
wystąpi błąd to wraca do stanu IDLE.
CONNECT - oczekiwanie na poprawne zestawienie
sesji TCP z sąsiadującym routerem i przejście do stanu OPENSENT po wysłaniu
wiadomości OPEN. Jeśli nie powiedzie się zestawienie sesji TCP, router
przechodzi do stanu ACTIVE, gdzie próbuje zestawić sesję TCP.
ACTIVE - w rym stanie router BGP próbuje
zestawić sesję TCP z drugim routerem BGP, jeśli nie zestawi sesji w czasie
ConnecRetry przechodzi w stan IDLE. Jeśli zestawi ta sesję to przechodzi do
stanu OPENSENT po wysłaniu wiadomości OPEN. W tym stanie również oczekuje się
na zainicjowanie ewentualnego połączenia TCP od sąsiadującego routera BGP.
OPENSENT - w tym stanie router BGP oczekuje na
wiadomość OPEN od sąsiadującego routera BGP. Po odebraniu wiadomości OPEN
analizuje ją i sprawdza jej poprawność. Porównuje otrzymany w wiadomości OPEN
nr systemu autonomicznego AS ze swoim, po to by stwierdzić czy sesja jest typu
I-BGP czy E-BGP. Router BGP zaczyna wysyłać wiadomości KEEPALIVE do sąsiada.
Jeśli wystąpi rozłaczenie sesji TCP, wraca do stanu ACTIVE, natomiast jeśli
wystąpią inne błędy lub minie HOLD TIME, wysyłana jest wiadomość NOTIFICATION
(informacja o błędzie) i przejście do stany IDLE.
OPENCONFIRM - router BGP czeka na wiadomość
KEEPALIVE. Po jej odebraniu przechodzi do stanu ESTABLISHED i zeruje HOLD TIME.
Zakończona jest negocjacja sesji BGP między dwoma routerami. Jeśli router BGP
odbierze wiadomość NOTIFICATION to przechodzi do stanu IDLE.
ESTABLISHED - w tym stanie router zaczyna wymieniać
wiadomości UPDATE z sąsiednim routerem BGP oraz zeruje HOLD TIME po odebraniu
KEEPALIVE bądź UPDATE. Jeśli wystąpią jakiekolwiek błedy w wiadomościach UPDATE
wysyłana jest wiadomość NOTOFICATION i sesja BGP zostaje rozłączona (otrzymanie
zdarzenia Stop) i przejście do stanu IDLE.
Atrybuty ścieżki BGP
Ścieżka BGP
może mieć przypisane różne atrybuty:
Wartość |
Oznaczenie |
1 |
ORIGIN |
2 |
AS_PATH |
3 |
NEXT_HOP |
4 |
MULTI_EXIT_DISC |
5 |
LOCAL_PREF |
6 |
ATOMIC_AGGREGATE |
7 |
AGGREGATOR |
8 |
COMMUNITY |
9 |
ORIGINATOR_ID |
10 |
CLUSTER_LIST |
11 |
DPA |
12 |
ADVERTISER |
13 |
RCID_PATH / CLUSTER_ID |
14 |
MP_REACH_NLRI |
15 |
MP_UNREACH_NLRI |
16 |
EXTENDED COMMUNITIES |
17 |
NEW_AS_PATH |
18 |
NEW_AGGREGATOR |
19 |
SAFI Specific Attribute (SSA) |
20 |
Connector Attribute |
21-254 |
Nieprzydzielone |
255 |
Zarezerwowany |
OSPF określa
najkrótszą ścieżkę do przeznaczenia przez system AS, wykorzystując algorytm,
który umiejscawia router w tzw. „korzeniu drzewa”, kalkulując najniższy koszt
do pożądanej lokalizacji (przeznaczenia). W związku z tym, każdy router ma inny
wygląd topologii sieci, nawet jeśli otrzymują te same informacje link-state
database.
OSPF jest protokołem typu link-state, w związku z tym wykorzystuje link state advertisements (LSAs) by poinformować inne routery o zmianach w topologii, które wykrył. Inaczej niż RIP, który wysyła co 30 sekund całą tablicę routingu , OSPF natychmiast wysyła multicastem LSA, gdy wykryje zmiany w sieci. Jednak wysyła on tylko ta część tabeli routingu, która została zmieniona. By ograniczyć broadcast LSA, system autonomiczny AS jest dzielony na kilka oddzielnych stref (area). Kiedy skonfigurowana jest dana strefa to LSA i konfiguracje SPF (Shortest Path First) na routerze są ograniczone tylko do zmian wewnątrz tej strefy. Podstawową strefą jest Backbone 0.0.0.0, do którego przylegają poszczególne strefy Area X.X.X.X. Routery w Backbone znają całą topologię sieci nazywamy je BR (Border Router), routery w Area znają tylko wewnętrzną topologię tej strefy.
Istnieją różne typy routerów w sieci OSPF. Routery, których wszystkie interfejsy należą do tej samej strefy, nazywane są routerami wewnętrznymi IR (internal routers). Skoro IR należą do tej samej strefy, to mają one dokładnie taką samą bazę danych (link-state database) jak inne routery w tej strefie. Jeśli router należy do więcej niż jednej strefy, jest on nazywany ABR (Area Border Router). ABR odpowiedzialny jest za dystrybucję rozgłoszeń tras przez jego interfejsy do odpowiednich stref. Router, który ma uruchomionych kilka protokołów lub działa jako gateway (brama) do innych zewnętrznych routerów nazywany jest ASBR (Autonomous System Border Router). Implementacja OSPF obsługuje wykorzystanie wielu ścieżek ECMP (Equal Cost Multi Path) – load balancing.
Protokół OSPF (Open Shortest Path First)
wykorzystuje protokół IP do przenoszenia swoich pakietów. Numer protokołu w
nagłówku IP dla OSPF wynosi 89. Wszystkie pakiety protokołu OSPF mają ten sam
format nagłówka, który jest przedstawiony poniżej.
Wersja: Numer wersji OSPF.
Typ: Typ pakietu OSPF. W OSPF wyróżnia się 5 typów pakietów, takich jak poniżej:
§
Typ
1 Hello - Odkrywanie/zarządzanie sąsiadami
§
Typ
2 Database Description - Sumaryzacja zawartości
bazy danych
§
Typ
3 Link State Request - Download bazy danych
§
Typ
4 Link State Update - Aktualizacja bazy danych
§
Typ
5 Link State Ack - Potwierdzenie rozpływowe
Długość pakietu:
Długość pakietu OSPF w bajtach, łącznie z długością nagłówka OSPF.
Router ID: Identyfikator routera OSPF, który wysłał ten pakiet.
Area ID: 32 bitowy numer identyfikacyjny obszaru OSPF (AREA), do której należy ten pakiet. Wszystkie pakiety OSPF są skojarzone z jedną areą.
Suma kontrolna: standardowa suma kontrolna taka jak w IP, liczona z całego pakietu OSPF łącznie z agłówkiem, ale bez 64-bitów pola Autoryzacji.
AuType: Identyfikuje procedurę autoryzacji pakietu OSPF.
§
0 - brak autoryzacji
§
1 - proste hasło
§
2 - autoryzacja kryptograficzna (algorytm MD5)
Autoryzacja:
64-bitowe pole schematu autoryzacji.
Gdy OSPF wykorzystuje sieć broadcastową do
wymiany swoich pakietów to stosuje multicast. Dla celów OSPF zarezerwowano dwa
adresy multicastowe:
224.0.0.5 - AllSPFRouters, pakiet do wszystich routerów OSPF.
224.0.0.6 - AllDRouters, pakiet do wszystkich routerów DR (DR + BDR).
Dodatkowo pakiet OSPF ma ustawione pole TOS na wartość bitową 0000 i IP
precedens na Internetwork Control.
Pakiety Hello są typem 1 pakietu OSPF. Są one
wysyłane okresowo na wszystkie interfejsy w celu ustanowienia i zarządzania
relacjami z sąsiadami (dynamiczne odkrywanie sąsiadów, sprawdzanie ich
obecności, potwierdzanie obecności). Wszystkie routery przyłączone do wspólnej
sieci muszą zgodzić się na wspólne parametry jakimi są Maska sieci,
HelloInterval i RouterDeadInterval. Jeśli te parametry się różnią, to możliwy
jest brak ustanowienia sąsiedztwa.
Maska sieci: maska sieci przypisana do interfejsu, z którego wysłano pakiet Hello.
Opcje: dodatkowe funkcjonalności obsługiwane przez router.
§
E-bit
- rozgłaszanie (floodowanie) AS-external-LSA
§
MC-bit
- opisuje czy datagram multicastowy IP jest przekazywany zgodnie z RFC1584
"Multicast Extensions to OSPF".
§
N/P-bit
- opisuje obsługę Type-7 LSA wg. RFC3101 "The OSPF NSSA
Option".
§
EA-bit
- wyraża chęć do otzrymywania i przekazywania External-Attributes-LSA.
§
DC-bit
- obsługa żądania łączy wg. RFC1793 "Extending OSPF to Support
Demand Circuits".
HelloInterval: ilość sekund między pakietami
Hello.
Rtr Pri: Router Priority - priorytet routera, wykorzystywaniu przy wyborze routera DR i BDR [(Backup) Designated Router]. Wartość 0 oznacza wyłaczenie z elekcji do DR i BDR.
RouterDeadInterval: ilość sekund przed deklaracją, że router jest nieosiągalny.
Designated Router: router desygnowany dla tej sieci. DR jest identyfikowany przez swój adres IP interfejsu w tej sieci. 0.0.0.0 oznacza, że brak jest DR.
Backup Designated Router: zapasowy router desygnowany dla tej sieci. BDR jest identyfikowany przez swój adres IP interfejsu w tej sieci. 0.0.0.0 oznacza, że brak jest BDR.
Neighbor: kolejne pola z RouterID sąsiadów, od których ten router ostatnio usłyszał poprawne pakiety Hello. Ostatnio oznacza, że w ciągu sekund jakie wyznacza RouterDeadInterval.
Pakiet Database Description (opis bazy danych)
jest pakietem OSPF typu 2. Pakiety DD (Database Description) są wymieniane po
zainicjalizowaniu sąsiedztwa między routerami OSPF i oposują zawartość bazy
danych link-state. W celu wymiany informacji wykorzystuje się mechanizm
odpytanie - odpowiedź między routerami. Jeden z routerów OSPF jest wyznaczany
jako główny (master - patrz bit MS w pakiecie DD ustawiony na 1), a drugi jako
podrzędny (slave - bit MS=0). Master wysyła pakiety DD (odpytując swoją bazę),
które są potwierdzane przez router slave (odpowiedź). Routery stosują numer
sekwencyjny, aby odpowiedzi powiązać z odpytaniami.
MTU interfejsu: wielkość w bajtach największego datagramu IP, jaki może zostać wysłany na ten interfejs bez fragmentacji.
Opcje: dodatkowe funkcjonalności obsługiwane przez router.
bit I: bit Inicjalizacji (Init), jeśli ustawiony na 1, to pakiet jest pierwszym w sekwencji pakietów DD.
bit M: bit More (więcej), jeśli ustawiony na 1, wskazuje, że nadejdzie więcej pakietów DD.
bit MS: bit Master/Slave (główny/podrzędny), jeśli ustawiony na 1, wskazuje, że router OSPF jest głównym routerem w procesie wymiany bazy danych. 0 oznacza, że podrzędnym (slave).
Numer sekwencyjny DD: stosowany do numerowania sekwencji pakietów DD. Wartość początkowa jest tą wartością, która przyjdzie wraz z bitem Init. Następnie jest inkrementowana, aż do całkowitego przesłania bazy danych.
Pola Nagłówek LSA i ... : pozostała część pakietu DD zawiera części bazy danych link-state. Każdy LSA (Link State Advertisement) w bazie danych jest opisany przez nagłówek LSA.
Pakiet Link State Request (pakiet OSPF LSR)jest
pakietem OSPF typu 3. Jest on wykorzystywany przez sąsiedni router po procesie
wymiany bazy danych link-state między routerami OSPF i stwierdzeniu, że część
informacji w bazie jest przeterminowana. Pakiet LSR jest zapytaniem do
sąsiedniego routera OSPF o konkretną aktualną część informacji. Może być ich
kilka. Router wysyłający pakiet LSR oczekuje odpowiedzi dla konkretnej
instancji. Każda instancja w bazie danych ma swój numer sekwencyjny, sumę
kontrolną LS i wiek LS, jednak te wartości nie są zawarte w pakiecie LSR, w
związku z tym router OSPF może otrzymać wiele instancji w odpowiedzi.
Każdy żądany LSA (Link State Advertisement) w pakiecie OSPF Link State Request
jest określony przez swój typ LS, Link State ID i Advertising Router (router
rozgłaszający), co unikalnie identyfikuje LSA, ale nie jego instancję, dlatego
też należy rozumieć żądanie przez pakiet LSR najświeższej (najbardziej
aktualnej) instancji.
Pakiet Link State Update (LSU) jest pakietem
OSPF typu 4. Te pakiety rozgłaszają LSA (mechanizm floodingu - rozpływu
informacji). Każdy pakiet LSU przenosi zbiór kilku LSA na odległość jednego
skoku routera od źródła wysłania. Pakiety LSU są multicastami w sieciach
obsługujących multicast/broadcast, W celu zapewnienia większej niezawodności
pakiety LSU są potwierdzane przez pakiety Link State Acknowledgment. Jeśli jest
potrzebna retransmisja konkretnej LSA, to retransmitowane LSA są zawsze
wysyłane bezpośrednio do sąsiada.
# LSA: liczba LSA zawartych w aktualizacji
Zawartosć pakietu OSPF LSU składa się z listy LSA, gdzie każdy LSA zaczyna się 20 bajtowym nagłówkiem.
Pakiet Link State Acknowledgment jest pakietem
OSPF typu 5. Pakiety te są wykorzystywane do niezawodnego przekazywania LSA
(Link State Advertisement) poprzez ich potwierdzenie. Kilka LSA może zostać
potwierdzonych przez jeden pakiet Link State Acknowledgment. Pakiet Link State
Acknowledgment może być wysłany multicastem pod adres AllSPFRouters (224.0.0.5)
lub unicastem do konkretnego routera, który wysłał pakiet Link State
Update. Format tego pakietu jest zbliżony do pakietu DD.
Każdy potwierdzony LSA jest opisany przez swój nagłówek LSA. Zawiera informacje
potrzebne do unikalnej identyfikacji zarówno LSA jak i jego aktualnej
instancji.
W OSPF wyróżniamy pięć różnych typów LSA (Link State Advertisement). KAżdy
LSA rozpoczyna się standardowym 20 bajtowym nagłókiem LSA.
Każdy LSA opisuje fragment domeny routingu OSPF. Każdy router wysyła
router-LSA, w dodatku jeśli router został wybrany na Designated Router to
również wysyła network-LSA.
Wszystkie LSA są floodowane przez domenę routingu OSPF, w celu zapewnienia, że
wszystkie routery maja te same informację. Zbiór LSA w routerze nazywamy bazą
danych link-state (link-state database). Z bazy tej router tworzy drzewo
najkrótszej ścieżki z sobą jako rootem (SPF - Shortest Path First), co w
konsekwencji pozwala na stworzenie tabeli routingu.
Wyróżniamy następujące typy LSA (identyfikowane przez pole Typ LSA w nagłóku
LSA):
Typ LS |
Znaczenie |
1 |
Router-LSA |
2 |
Network-LSA |
3 |
Summary-LSA (sieć IP) |
4 |
Summary-LSA (ASBR) |
5 |
AS-external-LSA |
Wszystkie LSA mają taki sam nagłówek 20
bajtowy, który zawiera wystarczającą ilość informacji do unikalnej
identyfikacji LSA czyli typ LSA, Link State ID i Advertising Router. W tym
samym czasie w domenie OSPF może istnieć wiele instancji LSA w związku z tym
ważne jest określenie, która instancja jest najnowsza. Do tego celu stosuje się
wiek LSA (LSA age), numer sekwencyjny LS i sumę kontrolną LS, pola, które sa
również zawarte w nagłóku LSA.
Wiek LS: czas w sekundach odkąd od momentu wysłania LSA
Opcje: dodatkowe funkcjonalności obsługiwane przez opisywaną część domeny routingu. Patrz opcje w pakiecie OSPF Hello.
Typ LS: typ LSA, każdy LSA ma odrębny format.
Link State ID: pole identyfikuje część środowiska sieciowego opisywanego przez LSA. Zawartość tego pola zależy od wartości pola Typ LS.
Advertising Router: RouterID routera, który wysłał LSA.
Numer Sekwencyjny LS: wykrywa stare lub powielone LSA. Kolejne instancje LSA mają kolejne numery sekwencyjne LS.
Suma kontrolna LS: Suma kontrolna liczona wg. algorytmu Fletchera całej zawartości LSA łącznie z nagłówkiem LSA, ale bez pola Wiek LS.
Długość: liczona w bajtach długość LSA łącznie z 20 bajtowym nagłówkiem LSA.
STANDARDY
|
KONFIGURACJA PROTOKOŁU STP NA PRZEŁĄCZNIKU AT
Routing
IP to decyzja wykonana na podstawie adresu docelowego pakietu IP
• Kernel podejmuje tą decyzję na podstawie tablicy FIB – Forwarding
Information Base
• Aplikacje zapewniające routing dynamiczny utrzymują zwykle swoją tablicę
– RIB – Routing
Information
Base – z której najlepsze wpisy eksportowane są do FIB
• Narzędzia systemowe wpływają na FIB
• Narzędzia aplikacji wpływają na RIB właściwy dla pakietu
Router otrzymuje datagramy IP w
postaci:
1) Konfigracja podstawowa:
2) Wymiana informacji rutera A
(NET1)
PAKIETY PROTOKOŁU RIP