\magnification=\magstep1 \input epsf.tex \input mjmac.tex \language=\czech \chyph \hsize=160truemm % A4 with 25mm margins \vsize=247truemm \parindent=2em \nopagenumbers \def\hdr#1{\medskip\leftline{\bf #1}\smallskip} \def\\{\hfil\break} \def\BIRD{{\sc Bird}} \def\inititemize{\vskip 1pt\begingroup \parskip=1pt plus 0.3pt minus 0.1pt \advance\leftskip by 3em \advance\rightskip by 3em \parindent=0pt } %%% �vod a historie projektu \hdr{Na po��tku bylo vejce aneb �vodem} \noindent Internet i UNIX jsou na sv�t� ji� p�kn�ch p�r p�tk�. Po��ta�e pracuj�c� pod nep�ebern�m mno�stv�m unixovsk�ch syst�m� od nepam�ti funguj� jako internetov� po�tovn� servery, name-servery a men�� routery. Skoro by se zd�lo, �e si tyto dva sv�ty u� nemaj� co nov�ho ��ci. V~posledn�ch letech ov�em v�razn� vzrostl v�kon b�n�ch PC-�ek a objevily se pro n� karty podporuj�c� nejr�zn�j�� s��ov� technologie, a~tak se tyto po��ta�e staly vhodn�mi kandid�ty i~pro funkci router�. Na~mnoha m�stech tak star�� PC-�ko s~voln� �i�iteln�m softwarem p�edstihlo sv�ho star��ho a dra���ho komer�n�ho sourozence. A�koliv podpora routingu, firewallingu a inteligentn� queue management v~j�drech t�chto~OS (a~zejm�na Linuxu) je ji� velice vysp�l�, je�t� ned�vno byly notn� zanedb�v�ny protokoly pro dynamick� routing, tradi�n� unixovskou koncepc� um�st�n� do~u�ivatelsk�ho prostoru v~podob� routovac�ch daemon�. Tento nedostatek se pokou�ela mezi jin�mi napravit tak� skupina nad�enc� na~pra�sk� Matematicko-fyzik�ln� fakult� UK, kter� se rozhodla jako sv�j studijn� projekt vytvo�it nov�ho routovac�ho daemona, kter� by se stal n���m v�c ne� jen d�stojn�m konkurentem komer�n�ch router� -- nejen kop�roval u� zn�m� �e�en�, ale tak� p�isp�l n���m nov�m; na~jedn� stran� b�t stabiln�m a efektivn�m programem pro praxi, na~stran� druh� ov�em i~laborato�� pro snadn� experimentov�n� s~nov�mi my�lenkami. A~tak se narodil projekt {\it BIRD Internet Routing Daemon} (zkr�cen� \BIRD\footnote{$^0$}{Projekt si samoz�ejm� vyslou�il nejr�zn�j�� p�ezd�vky -- od Pt��ete a� po~Pt�kovinu.}). P�vodn� pl�ny byly sm�l� a rozhodn�: Vytvo�it nejlep��ho routovac�ho daemona na sv�t�, kter� by fungoval na~v�ech platform�ch, vy�adoval minimum strojov�ho �asu a pam�ti, podporoval v�echny routovac� protokoly atd., zkr�tka sen, jak� m� b�t. P�esko�me nyn� dva roky v�voje\footnote{$^1$}{b�hem nich� z~n�kter�ch po�adavk� samoz�ejm� se�lo -- nap��klad logem projektu se nakonec nestal pt��ek nesouc� v~zob��ku sn�tku byliny �e�en� routa \dots} a pod�vejme se, co z~toho vze�lo. %%% Sv�t routingu %% v~ti�t�n� verzi p�esko��me %%% Co BIRD dok�e \hdr{Kdy� pt��ka lapaj�, p�kn� mu zp�vaj� aneb Feature list} \noindent \BIRD\ dostal od sv�ch sudi�ek do~v�nku mnoh� dary: \def\icirc{\raise0.2ex\hbox{$\circ$}} % Signs frequently used for \itemize \itemize\ibull \:Schopnost komunikovat protokoly IPv4 i IPv6. \:Podporu v�ech z�kladn�ch routovac�ch protokol�: \itemize\icirc \:RIPv2 (Routing Information Protocol, viz RFC 1723 a 2080)\\ Ur�en pro intern� routing, dnes v�znamu sp��e historick�ho.\\ Algoritmus: distance vector (Bellman-Ford).\\ Velmi pomal� konvergence, pou�itel� pouze pro mali�k� s�t�. \:OSPFv2 (Open Shortest Path First, viz RFC 2328)\\ Ur�en pro intern� routing, v~sou�asn� dob� asi nejb�n�j��.\\ Algoritmus: link state (Dijkstra).\\ Rychl� konvergence, ale velice komplikovan�.\\ Zat�m podporujeme pouze pro IPv4. \:BGP4 (Border Gateway Protocol, viz RFC 1771 a 2283)\\ Standardn� protokol pro extern� routing mezi AS.\\ Rychl� konvergence, mo�nost administrativn� filtrace.\\ Algoritmus: path vector (upraven� Bellman-Ford). \endlist \:Propojov�n� protokol� a v�m�nu dat mezi nimi. \:Schopnost uplat�ovat routing policy -- ur�ovat, kter� routovac� informace budou od~kter�ch protokol� p�ij�m�ny a do~kter�ch protokol� vys�l�ny. \:Snadnou konfiguraci a �dr�bu, ale o~tom a� pozd�ji. \:Modul�rn� architekturu umo��uj�c� snadn� dopl�ov�n� nov�ch protokol�, filtr� i jednoduch� portov�n� na~dal�� syst�my. (Interface k~routovac�m slu�b�m j�dra je bohu�el i mezi jednotliv�mi unixovsk�mi syst�my natolik r�znorod�, �e dokonce i~Linux 2.0 a Linux 2.2 jsou naprogramov�ny jako dva odli�n� porty.) \:A v~neposledn� �ad� kvalitn� dokumentaci jak u�ivatelskou, tak program�torskou (to je v�tan� d�sledek byt� �koln�m projektem). \endlist %%% A jak to v�echno propojit \hdr{Sv�t z~pta�� perspektivy aneb Jak to v�echno d�t dohromady?} \noindent Hlavn�m probl�mem ov�em nen� ani tak v�echny tyto vymo�enosti naprogramovat a popropojovat, n�br� ud�lat to tak, aby z~toho nevznikl neudr�ovateln� a neefektivn� zmatek\footnote{$^2$}{N�dhern�m p��kladem je Mendel�v pes, jak ho kdysi nakreslil pan Kantorek.}. Z~toho se zrodil modul�rn� pohled na~sv�t routingu a n�sledn� i cel� modul�rn� architektura programu: \bigskip \centerline{\epsfxsize=0.9\hsize\epsfbox{../slides/obr5.eps}} \medskip Z�kladem pohledu na~Internet z~na�� \uv{pta�� perspektivy} je routovac� tabulka. Na~n� jsou p�ipojeny jednotliv� routovac� protokoly -- jak protokoly re�ln�, tak i n�kolik virtu�ln�ch, jako je nap��klad protokol Kernel zaji��uj�c� synchronizaci tabulky s~tabulkou j�dra nebo protokol Static generuj�c� podle sv� konfigurace statick� sm�rov�n�. Ka�d� z~protokol� pos�l� do~tabulky polo�ky pro v�echny routy, kter� se na~z�klad� sv�ch informac� o~topologii s�t� dozv�d�. Tabulka pro ka�dou s�� vyb�r� na z�klad� preferenc� jednotliv�ch protokol� a jejich metrik optim�ln� sm�r a ten oznamuje zp�t protokol�m. V~cest� ov�em v~obou sm�rech stoj� filtry, kter� mohou tok dat regulovat -- n�kter� polo�ky odm�tat, jin� upravovat (nap��klad jim p�enastavovat metriky �i tagy; to se dokonce vztahuje i~na atributy dopl�ovan� c�lov�m protokolem, proto�e nejprve c�lov� protokol nastav� implicitn� hodnoty sv�ch atribut�, pokud je ji� polo�ka neobsahovala, a teprve pak dojde k~filtrov�n�). Routovac�ch tabulek m��e dokonce existovat v�cero a pomoc� protokolu Pipe si mohou p�epos�lat vybran� polo�ky. T�m m��eme zajistit nap��klad routing z�visl� na~zdrojov� adrese �i vstupn�m interfacu: u~Linuxu 2.2 �i nov�j��ho nakonfigurujeme j�dru v�ce routovac�ch tabulek a ka�dou z~nich p�ipoj�me na~jednu tabulku na�i. \hdr{Pta�� zp�v aneb User interface} %%% User interface: konfigurace, logging a filtry. Remote control. \noindent S�� se m�n� a s~n� se mus� m�nit i konfigurace s��ov�ch komponent. Ta se pozvolna stala tradi�n�m kamenem �razu v�t�iny router�. U~tohoto kamene se toti� sch�zej� dva odv�c� nep��tel�: snaha o~snadnost a flexibilitu konfigurace a snaha o~nep�etr�it� provoz s�t�. A~jednou slev� ten, podruh� onen -- auto�i n�kter�ch router� vsadili na~s�lu textov�ch konfigura�n�ch soubor� za~cenu toho, �e se po~ka�d� zm�n� konfigurace mus� router restartovat a po~n�jakou dobu neroutuje, jin� zase pod��dili non-stop provozu v�e ostatn� a stvo�ili konfigurov�n� nep�ebern�m mno�stv�m online p��kaz�, pomoc� nich� se n�kter� v�ci prov�d�j� snadno, jin�, na~kter� auto�i speci�ln� p��kaz nevymysleli, u� obt��n�ji a je�t� jin� vy�aduj� do~v�sledn�ho stavu dosp�t postupn�m proveden�m mnoha zm�n, co� m� obvykle za~d�sledek daleko del�� v�padek ne� jak� by byl vznikl reloadem cel�ho routeru. \BIRD\ se sna�� dos�hnout oboj�ho: pou��v� textov� konfigura�n� soubory, u�ivateli tak d�v� mo�nost vytv��et konfiguraci v�cem�n� libovoln�m zp�sobem -- a� ji� ru�n�m editov�n�m, interaktivn�mi programy �i automatick�m generov�n�m pomoc� script�. Po~zm�n� konfigurace je ov�em schopen si novou verzi souboru p�e��st, porovnat s~pr�v� pou��vanou konfigurac� a zm�n�m se za b�hu p��zp�sobit (pokud jsou zm�ny p��li� velk�, m��e to zp�sobit restart n�kter�ho z~protokol�, ale provoz t�ch, kter�ch se zm�na net�kala, to nijak neohroz�). Konfigurace ka�d�ho protokolu (l�pe �e�eno ka�d� jeho instance -- protokoly mohou b�t spu�t�ny n�kolikr�t na~r�zn�ch rozhran�ch �i nad r�zn�mi tabulkami) vypad� p�ibli�n� takto: \verbatim{ protocol bgp TestBGP { # instanci si m��eme nazvat local as 65000; # n� AS neighbor 195.39.3.64 as 5588; # sousedn� AS export all; # pos�lat budeme v�echno import filter { # na vstupu n�kter� odm�tneme if !(bgp_path ~ / ? 5588 ? /) then reject; if net ~ [ 10.0.0.0/8+, 192.168.0.0/16+ ] then reject; preference = 101; # zbyl�m nastav�me preferenci accept; # a p�ijmeme je }; }} \noindent V�dy popisuje protokol, jeho parametry, p�ipojen� k~tabulk�m (v~na�em p��pad� pou��v�me tabulku implicitn�) a nastaven� vstupn�ch i~v�stupn�ch filtr�. Filtry jsou popisov�ny jednoduch�m procedur�ln�m programovac�m jazykem, kter� m� k~dispozici v�echny informace o~pr�v� zpracov�van� polo�ce, m��e se podle nich rozhodovat a libovoln� je m�nit. D�ky tomu je mo�n� jednodu�e zad�vat i velice slo�it� pravidla, definovat si podprogramy sd�len� filtry pat��c�mi k~v�ce protokol�m, i~po��tat metriky pro jeden protokol na z�klad� metrik protokol� ostatn�ch. V�tan�m pomocn�kem p�i odhalov�n� probl�m� v~s�t�ch je rovn� voliteln� logov�n� d�le�it�ch ud�lost� a trasov�n� �innosti protokol�: zde si je mo�no pro ka�d� protokol vy��dat prakticky cokoliv po��naje z�kladn�mi informacemi o~b�hu protokolu (p�ipojov�n� a odpojov�n� soused� apod.), p�es v�m�nu polo�ek mezi protokolem, filtry a jeho tabulkou, a kon�e detailn�m v�pisem v�ech p�ijat�ch i odeslan�ch paket�. Mimo to \BIRD\ disponuje \uv{d�lkov�m ovl�d�n�m} -- jednoduch�m p��kazov�m rozhran�m, p�es kter� se mohou p�ipojovat r�zn� klienti a vyd�vat jak n�kter� ��d�c� p��kazy (restarty protokol�, reload konfigurace, p�ep�n�n� trasov�n�, \dots), tak po�adavky na~vypisov�n� stavu routovac�ch tabulek a protokol�. U~t�chto p��kaz� je mo�no vyu��vat pln� s�ly filtrovac�ho jazyka, tak�e chceme-li nap��klad zn�t v�echny routy sm�rovan� pomoc� BGP na jednoho konkr�tn�ho souseda, sta�� polo�it dotaz typu \verbatim{ bird> show route where source=RTS_BGP && gw=62.168.0.1} \noindent a dozv�me se ihned v�e, co jsme pot�ebovali. Lad�n� filtr� nav�c usnadn� i~to, �e se m��eme zeptat na~obsah routovac� tabulky z~pohledu n�kter�ho z~b��c�ch protokol�. %%% BIRD uvnit� %\hdr{Pta�� anatomie} %% existuje progdoc %%% Netradicni pouziti \hdr{Cesty ta�n�ch pt�k� aneb Za hranicemi v�edn�ch dn�} \noindent Hotov� modul�rn� implementace routovac�ho daemona samoz�ejm� sv�d� i k~m�n� tradi�n�mu vyu�it�. Zde se fantazii meze nekladou, autory sam� b�hem v�voje napadly nap��klad tyto triky: \itemize\ibull \:{\I multirouter} -- \uv{schizofrenn�} za��zen� pracuj�c� na r�zn�ch skupin�ch interfac� jako r�zn� routery ��d�c� se r�zn�mi pravidly, le��c� t�eba i v~r�zn�ch autonomn�ch syst�mech. To je mo�no za��dit pat�i�n�m nastaven�m j�dra a bu�to v�ce b��c�mi \BIRD{}y nebo dokonce jedn�m pracuj�c�m s~n�kolika r�zn�mi routovac�mi tabulkami. Tak by mohl nap��klad cel� pra�sk� NIX b�et na jedin�m routeru (pravda, b�n� PC by na to nesta��lo), a p�esto by si ka�d� provider mohl s�m ur�ovat a konfigurovat svou vlastn� routovac� politiku. \:{\I �ed� eminence} -- \BIRD\ by ani nemusel b�et p��mo na~stroji, kter� pakety routuje, mohl by tak� hotov� routovac� tabulky diktovat n�jak�mu dedikovan�mu routeru disponuj�c�m v�konn�j��m hardwarem, a tak skloubit �pi�kovou propustnost \uv{velk�ho �eleza} s~flexibilitou routeru be��c�ho pod unixovsk�m syst�mem. \:{\I inteligentn� mirror} -- aplikace se nemus� zastavovat u~routingu jako takov�ho, mnohdy je mo�no informace z�skan� z~provozu routeru vyu��vat k~dal��m ��el�m, nap��klad k~inteligentn�mu p�esm�rov�v�n� klient� na~nejbli��� mirror va�eho archivu. \endlist %%% A co dal? \hdr{�as pt��at aneb Co d�l?} P�esto�e po~�sp�n�m obh�jen� projektu a prvn�ch n�kolika des�tk�ch spokojen�ch u�ivatel� (a samoz�ejm� i~p�r opraven�ch chyb�ch) nyn� v�voj sp��e stagnuje, auto�i ji� sp��daj� pl�ny do~budoucnosti, kter� by m�ly \BIRD{}ovi p�in�st mimo jin� tak� routov�n� multicast�, agregaci s��ov�ch prefix�, OSPFv3 pro IPv6, on-demand linky a porty na~dal�� syst�my. %%% Reference na n�s a ostatn� routery \hdr{Sn��ka odkaz� na z�v�r} \noindent {\sc Bird Team} pod veden�m RNDr. Libora Forsta ({\I forst@cuni.cz}) tvo�ili: $$\vbox{\halign{#\hfil & \quad \it # \hfil & \quad \it # \hfil\cr Ond�ej Filip&feela@ipex.cz&http:/$\!$/feela.ipex.cz/\cr Martin Mare�&mj@ucw.cz&http:/$\!$/atrey.karlin.mff.cuni.cz/\char126mj/\cr Pavel Machek&pavel@ucw.cz&http:/$\!$/atrey.karlin.mff.cuni.cz/\char126pavel/\cr}}$$ Dom�c� str�nku projektu najdete na {\it http:/$\!$/bird.network.cz/,} odtamtud ji� vedou odkazy na~aktu�ln� verzi, online dokumentaci i mailing list u�ivatel�. V�echna zmi�ovan� RFC i mnoho dal��ch naleznete na {\it http:/$\!$/www.rfc-editor.org/}, prvn� my�lenky o~vyu��v�n� ptactva v~Internetu sahaj� a� k~RFC~1149. \BIRD\ nen� na~sv�t� s�m, m� i~p��buzn�; mezi nimi za zm�nku stoj� daemoni {\sc GateD} ({\I http:/$\!$/www.gated.org/}), \hbox{\sc Zebra} ({\I http:/$\!$/www.zebra.org/}) a {\sc Mrtd} ({\I http:/$\!$/www.mrtd.net/}). O~IPv6 se bohu�el zat�m jen p��e, na~jeho celointernetov� nasazen� se st�le �ek� a mezit�m p�ib�v� address-translator� a dal��ch zv�rstev. Snad jedin� v�t�� s�� pou��vaj�c� tento protokol je experiment�ln� virtu�ln� s�� 6-bone (viz {\it http:/$\!$/www.6bone.net/} a odkazy odtamtud). Dotazy a p�ipom�nky pos�lejte bu�to autorovi nebo cel�mu {\sc Bird Team}u na~adresu {\I bird@bird.network.cz}. \bye