Směrování ve velkém

Výměna informací v BGP Samotný protokol není, třeba ve srovnání s OSPF, příliš složitý. Výměna informací se v...


Výměna informací v BGP
Samotný protokol není, třeba ve srovnání s OSPF, příliš složitý. Výměna
informací se v rámci BGP nejčastěji odehrává mezi dvojicemi hraničních
směrovačů v různých AS, jež jsou spolu přímo propojeny. Relace BGP, nazývané
BGP peering, jsou dlouhotrvající a k přenosu dat využívají spolehlivý
transportní protokol TCP. Po navázání spojení si směrovače nejprve vymění celou
směrovací tabulku, ale potom už si posílají jen informace o změnách.
Sousední BGP směrovače si, podobně jako v případě RIPu, navzájem sdělují
informace o dostupnosti síťových prefixů spolu s údajem, jak je každý prefix
vzdálen od původce této informace, která se odborně nazývá Network Layer
Reachability Information (NLRI). Zatímco v RIPu se však jako metrika předává
pouze jedno číslo, v BGP je s každým prefixem spojena celá posloupnost
autonomních systémů (atribut AS_PATH), která kompletně popisuje nejkratší
cestu, jíž se lze dostat od daného směrovače k tomuto prefixu. Slovo
"kompletně" je ale třeba chápat v kontextu vyšší úrovně směrovací hierarchie
BGP se vůbec nezabývá tím, jak budou datagramy putovat uvnitř každého z
autonomních systémů, které se na nejkratší cestě nacházejí. Podívejme se na
příklad v obrázku, kde autonomní systém AS1 obsahuje síť s prefixem
175.111.0.0/16. Oba jeho hraniční směrovače o tom informují všechny své BGP
sousedy. Uvedený prefix je přitom spojen s atributem AS_PATH, v němž je uveden
jediný autonomní systém AS1. Každý ze sousedů se tím dozví, že datagram s
cílovou adresou patřící do tohoto prefixu je třeba dopravit do AS1. Tato
informace se ale zároveň předává dále. Například hraniční směrovač v AS3 oznámí
stejný prefix svému sousedovi v AS5, na začátek AS_PATH ale přiřadí svůj
vlastní autonomní systém, takže nový AS_PATH bude v tomto případě obsahovat dva
autonomní systémy AS3 a AS1. Podobný postup pokračuje dále, takže nakonec se o
dostupnosti prefixu dozvědí všechny autonomní systémy v síti.
Atribut AS_PATH zastává několik funkcí. První z nich je funkce metriky, jíž je
v případě BGP vždy počet "hopů", tedy počet autonomních systémů v AS_PATH. V
našem příkladu se tedy AS5 dozví od svých sousedů o třech možných cestách k
prefixu 175.111.0.0/16: první z nich odpovídá tříprvková AS_PATH (AS4, AS2,
AS1), druhé (AS3, AS1) a třetí pak jednoprvková posloupnost (AS1). Směrovače v
AS5 by za normálních okolností měly zvolit cestu s nejkratší AS_PATH, tedy
přímým spojem.
Druhou funkcí AS_PATH je ochrana proti smyčkám, které lze okamžitě rozpoznat
podle toho, že se stejný autonomní systém v posloupnosti opakuje. Protokol BGP
proto vyžaduje, aby směrovače ignorovaly všechny NLRI, které již v atributu
AS_PATH obsahují lokální AS daného směrovače. Znovu k našemu příkladu: AS5
oznamuje po přímé lince svému sousedovi AS1 dostupnost prefixu 175.111.0.0/16 s
AS_PATH = (AS5, AS3, AS1). Na oznámení však v AS1 nebude brán zřetel, protože
AS1 se už v posloupnosti vyskytuje. Interní BGP
Pozorný čtenář si na obrázku jistě všiml toho, že některé autonomní systémy
mají více hraničních směrovačů. Vzniká proto otázka, jak si tyto směrovače
předávají informace získané z BGP, aby je mohly šířit dalším sousedům. Jednou z
možností by byla jejich redistribuce do vnitřního směrovacího protokolu,
například OSPF. Z několika důvodů to ale není nejlepší nápad. Předně, databáze
BGP je (jak vzápětí uvidíme) obludně veliká a vnitřní směrovače by se tím
zbytečně zatěžovaly. Kromě toho by se redistribucí ztratily některé atributy
(především AS_PATH!) předávané jako součást NLRI, protože vnitřní směrovací
protokoly je neznají. Hraniční směrovače patřící do stejného autonomního
systému proto spolu komunikují také prostřednictvím BGP, přesněji jeho
varianty, která se nazývá interní BGP (iBGP). Výše popsaná varianta, která
slouží k výměně NLRI mezi autonomními systémy, se pak logicky nazývá externí
BGP (eBGP). Interní BGP se řídí některými dodatečnými pravidly, která nejsou
pro eBGP relevantní. Například kvůli ochraně proti směrovacím smyčkám uvnitř AS
nesmí směrovač předávat v iBGP informace, které se dozvěděl od jiného iBGP
souseda.
Směrovací politika
Principy fungování BGP tedy není příliš těžké pochopit. Velmi obtížné ale také
zajímavé však je, jak tyto principy využít k realizaci určité směrovací
politiky vlastního autonomního systému. Toto know-how nelze jen tak někde
nastudovat, správce AS se k němu musí propracovat vlastními zkušenostmi a
omyly. Musíme si totiž uvědomit, že v systému BGP vystupuje velké množství
relativně nezávislých účastníků, kteří si mezi sebou posílají ohromný objem
informací. Podle aktuálních statistik, dostupných na serveru www.potaroo.net,
pojímá globální internet v současnosti více než 21 tisíc aktivních autonomních
systémů a počet prefixů vyměňovaných pomocí BGP již překročil 250 tisíc. Je
jasné, že v takto složitém systému se čas od času dějí prapodivné věci, zvláště
když problémy jednoho AS (ať už způsobené výpadky nebo chybnou konfigurací)
mohou negativně ovlivnit celý internet.
Implicitním kritériem výběru směrovací cesty k danému síťovému prefixu, jež
určuje základní způsob chování protokolu BGP, je délka cesty, tedy počet
autonomních systémů v atributu AS_PATH. Občas je ale potřeba aplikovat i jiná
kritéria a směrování poupravit. Pro tento účel je k dispozici několik nástrojů,
které lze v různých situacích použít. Základní jsou tyto dva:
n Filtrace některých NLRI v hraničním směrovači.
n Umělé prodloužení atributu AS_PATH.
První metoda upravuje směrování datagramů ven z vlastního AS: vnitřním
směrovačům se některé NLRI "zatají", čímž se pro ně dotyčná cesta stane
nedostupnou a použijí jinou. Druhá metoda pak ovlivňuje opačný směr toku dat,
tedy směrování z cizích AS do vlastního. AS_PATH se uměle prodlouží tím, že se
na jeho začátek uvede vlastní autonomní systém ne jednou, ale hned několikrát.
Pokud bychom v našem příkladu jako správci AS1 nechtěli, aby k nám AS5 směroval
datagramy po přímém spoji, ale raději přes AS3, změníme AS_PATH u prefixů
předávaných autonomnímu systému AS5 tak, že místo standardního jednoprvkového
(AS1) pošleme (AS1, AS1, AS1), čímž se pro AS5 stane posloupnost (AS3, AS1)
nejkratší. Všimněme si ale, že toto naše opatření může zhatit správce AS3,
pokud by autonomnímu systému AS5 předával naše prefixy také s uměle
prodlouženou AS_PATH. Proto je důležité, aby správci AS mezi sebou komunikovali
a své směrovací politiky koordinovali.
Autor je výzkumným pracovníkem sdružení Cesnet.
(pat) 6 1497









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.