Protokół BGP (Border Gateway Protocol) wykonuje routing międzydomenowy w sieciach pracujących z protokołem TCP/IP. Należy do klasy protokołów zewnętrznych. Wykonuje routing pomiędzy wieloma systemami autonomicznymi (domenami) i wymienia informacje o routingu i dostępności z innymi systemami posługującymi się protokołem BGP. Protokół BGP został tak zaprojektowany, aby zastąpić swego poprzednika, obecnie już zdezaktualizowany protokół EGP (Exterior Gateway Protocol). Protokół BGP efektywnie rozwiązuje problemy związane z routingiem międzydomenowym oraz skalowaniem sieci Internet.
Protokół BGP wykonuje we współczesnych sieciach zadania związane z wyborem ścieżek dla ruchu międzydomenowego, oraz rozwiązuje problemy skalowalności Internetu.
Przy wyborze optymalnej trasy protokół BGP posługuje się algorytmem distance-vector. W trakcie inicjacji połączenia równorzędne routery BGP wymieniają kompletne kopie swoich tablic routingu, które mogą być obszerne. Jednak wtedy wymieniane są tylko zmiany (delty), co sprawia, że długie sesje BGP są bardziej efektywne od krótkich.
| Dokumenty specyfikujące protokół BGP |
Jedną z najważniejszych funkcji protokołu BGP jest wykrywanie pętli na poziomie systemu autonomicznego.
Protokół BGP wykonuje trzy typy routingu:
Podobnie jak każdy protokół routingu, BGP utrzymuje tablice routingu, przesyła uaktualnienia routingu i podejmuje decyzje o trasie kierowania ruchu, opierając się na miarach routingu. Główną funkcją systemu BGP jest wymiana z innymi systemami BGP informacji o dostępności sieci, w tym informacji o ścieżkach systemów autonomicznych. Informacja ta jest niezbędna do konstrukcji grafu połączeń systemów autonomicznych, z którego można eliminować pętle i wprowadzać w życie strategiczne decyzje z poziomu systemów autonomicznych. Każdy router utrzymuje tablicę routingu, zawierającą wszystkie możliwe ścieżki do poszczególnych sieci. Jednak router nie odświeża tej tablicy. Zamiast tego informacja o routingu, otrzymana od równorzędnego routera, jest przechowywana do czasu, gdy zostanie odebrane przyrostowe uaktualnienie.
Urządzenia pracujące z protokołem BGP wymieniają informacje o routingu podczas inicjacji i uaktualniania. Gdy router jest włączany do sieci po raz pierwszy, routery BGP wymieniają swoje wewnętrzne tablice routingu. Podobnie, gdy zachodzą zmiany w tych tablicach, routery wysyłają te fragmenty tablicy, które zostały zmienione. Routing BGP uaktualnia tylko zgłoszenia ścieżek optymalnych do sieci, natomiast nie wysyła regularnie harmonogramowanych uaktualnień.
Protokół BGP używa tylko jednej miary routingu do wyznaczenia optymalnej ścieżki do danej sieci. Miara ta składa się z arbitralnie przyjętej liczby jednostkowej, która określa stopień preferencji konkretnego łącza. Zazwyczaj miarę tę przypisuje do każdego z łączy administrator sieci, kierując się różnorodnymi kryteriami. Może to być liczba systemów autonomicznych przez które przechodzą ścieżka, stabilność, szybkość, opóźnienie lub koszt.
Dokument RFC 1771 definiuje cztery typy komunikatów: otwierający, uaktualniający, zgłoszeniowy i podtrzymujący.
Komunikat otwierający (open message) otwiera sesję komunikacyjną protokołu BGP pomiędzy równorzędnymi routerami i jest pierwszym komunikatem, wysyłanym przez obie strony po ustaleniu połączenia na poziomie protokołu transportowego. Komunikat otwierający jest potwierdzany komunikatem podtrzymującym wysyłanym przez równorzędny router. Natychmiast po potwierdzeniu komunikatu otwierającego mogą być wymieniane komunikaty uaktualniające, zgłoszeniowe i podtrzymujące.
Komunikat uaktualniający (update message) zapewnia uaktualnianie routingu w innych systemach BGP, pozwala routerom odtworzyć u siebie obraz topologii sieci. W celu zapewnienia niezawodnego dostarczania uaktualnień do ich przesyłania używa się protokołu TCP (Transmission Control Protocol). Komunikaty otwierające mogą wycofywać z tablicy routingu jedną lub więcej niewykonalnych tras i podczas ich wycofywania zgłaszać nowe.
Komunikat zgłoszeniowy (notification message) jest wysyłany w przypadku wykrycia błędu. Zgłoszenia są używane do zamykania i otwierania sesji i informowania wszystkich przyłączonych routerów o przyczynie zamknięcia sesji.
Komunikat podtrzymujący (keep-alive message) powiadamia równorzędne routery BGP o tym, że router jest aktywny. Częstotliwość wysyłania komunikatu jest dobrana tak, aby zapobiec wygaszeniu sesji.