1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275
|
\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 potku bylo vejce aneb vodem}
\noindent Internet i UNIX jsou na svt ji pknch pr ptk. Potae pracujc
pod nepebernm mnostvm unixovskch systm od nepamti funguj jako
internetov potovn servery, name-servery a men routery. Skoro by se zdlo, e
si tyto dva svty u nemaj co novho ci. V~poslednch letech ovem
vrazn vzrostl vkon bnch PC-ek a objevily se pro n karty podporujc
nejrznj sov technologie, a~tak se tyto potae staly vhodnmi
kandidty i~pro funkci router. Na~mnoha mstech tak star PC-ko
s~voln iitelnm softwarem pedstihlo svho starho a draho
komernho sourozence. Akoliv podpora routingu, firewallingu a inteligentn
queue management v~jdrech tchto~OS (a~zejmna Linuxu) je ji velice
vyspl, jet nedvno byly notn zanedbvny protokoly pro dynamick
routing, tradin unixovskou koncepc umstn do~uivatelskho prostoru
v~podob routovacch daemon.
Tento nedostatek se pokouela mezi jinmi napravit tak skupina nadenc
na~prask Matematicko-fyzikln fakult UK, kter se rozhodla jako svj
studijn projekt vytvoit novho routovacho daemona, kter by se stal
nm vc ne jen dstojnm konkurentem komernch router -- nejen
koproval u znm een, ale tak pispl nm novm; na~jedn stran
bt stabilnm a efektivnm programem pro praxi, na~stran druh ovem
i~laborato pro snadn experimentovn s~novmi mylenkami. A~tak se
narodil projekt {\it BIRD Internet Routing Daemon} (zkrcen \BIRD\footnote{$^0$}{Projekt
si samozejm vyslouil nejrznj pezdvky -- od Ptete a po~Ptkovinu.}).
Pvodn plny byly sml a rozhodn: Vytvoit nejlepho routovacho
daemona na svt, kter by fungoval na~vech platformch, vyadoval
minimum strojovho asu a pamti, podporoval vechny routovac protokoly
atd., zkrtka sen, jak m bt. Peskome nyn dva roky vvoje\footnote{$^1$}{bhem nich
z~nkterch poadavk samozejm selo -- napklad logem projektu
se nakonec nestal ptek nesouc v~zobku sntku byliny een routa \dots}
a podvejme se, co z~toho vzelo.
%%% Svt routingu
%% v~titn verzi peskome
%%% Co BIRD doke
\hdr{Kdy ptka lapaj, pkn mu zpvaj aneb Feature list}
\noindent \BIRD\ dostal od svch sudiek do~vnku mnoh dary:
\def\icirc{\raise0.2ex\hbox{$\circ$}} % Signs frequently used for \itemize
\itemize\ibull
\:Schopnost komunikovat protokoly IPv4 i IPv6.
\:Podporu vech zkladnch routovacch protokol:
\itemize\icirc
\:RIPv2 (Routing Information Protocol, viz RFC 1723 a 2080)\\
Uren pro intern routing, dnes vznamu spe historickho.\\
Algoritmus: distance vector (Bellman-Ford).\\
Velmi pomal konvergence, pouitel pouze pro malik st.
\:OSPFv2 (Open Shortest Path First, viz RFC 2328)\\
Uren pro intern routing, v~souasn dob asi nejbnj.\\
Algoritmus: link state (Dijkstra).\\
Rychl konvergence, ale velice komplikovan.\\
Zatm podporujeme pouze pro IPv4.
\:BGP4 (Border Gateway Protocol, viz RFC 1771 a 2283)\\
Standardn protokol pro extern routing mezi AS.\\
Rychl konvergence, monost administrativn filtrace.\\
Algoritmus: path vector (upraven Bellman-Ford).
\endlist
\:Propojovn protokol a vmnu dat mezi nimi.
\:Schopnost uplatovat routing policy -- urovat, kter routovac informace
budou od~kterch protokol pijmny a do~kterch protokol vyslny.
\:Snadnou konfiguraci a drbu, ale o~tom a pozdji.
\:Modulrn architekturu umoujc snadn doplovn novch protokol,
filtr i jednoduch portovn na~dal systmy. (Interface k~routovacm
slubm jdra je bohuel i mezi jednotlivmi unixovskmi systmy natolik
rznorod, e dokonce i~Linux 2.0 a Linux 2.2 jsou naprogramovny jako dva
odlin porty.)
\:A v~neposledn ad kvalitn dokumentaci jak uivatelskou, tak
programtorskou (to je vtan dsledek byt kolnm projektem).
\endlist
%%% A jak to vechno propojit
\hdr{Svt z~pta perspektivy aneb Jak to vechno dt dohromady?}
\noindent Hlavnm problmem ovem nen ani tak vechny tyto vymoenosti naprogramovat
a popropojovat, nbr udlat to tak, aby z~toho nevznikl neudrovateln
a neefektivn zmatek\footnote{$^2$}{Ndhernm pkladem je Mendelv pes,
jak ho kdysi nakreslil pan Kantorek.}. Z~toho se zrodil modulrn pohled
na~svt routingu a nsledn i cel modulrn architektura programu:
\bigskip
\centerline{\epsfxsize=0.9\hsize\epsfbox{../slides/obr5.eps}}
\medskip
Zkladem pohledu na~Internet z~na \uv{pta perspektivy} je routovac
tabulka. Na~n jsou pipojeny jednotliv routovac protokoly -- jak
protokoly reln, tak i nkolik virtulnch, jako je napklad protokol
Kernel zajiujc synchronizaci tabulky s~tabulkou jdra nebo protokol
Static generujc podle sv konfigurace statick smrovn. Kad z~protokol
posl do~tabulky poloky pro vechny routy, kter se na~zklad svch informac
o~topologii st dozvd. Tabulka pro kadou s vybr na zklad preferenc
jednotlivch protokol a jejich metrik optimln smr a ten oznamuje
zpt protokolm. V~cest ovem v~obou smrech stoj filtry, kter mohou
tok dat regulovat -- nkter poloky odmtat, jin upravovat (napklad
jim penastavovat metriky i tagy; to se dokonce vztahuje i~na
atributy doplovan clovm protokolem, protoe nejprve clov protokol
nastav implicitn hodnoty svch atribut, pokud je ji poloka neobsahovala,
a teprve pak dojde k~filtrovn).
Routovacch tabulek me dokonce existovat vcero a pomoc protokolu Pipe
si mohou peposlat vybran poloky. Tm meme zajistit napklad
routing zvisl na~zdrojov adrese i vstupnm interfacu: u~Linuxu 2.2
i novjho nakonfigurujeme jdru vce routovacch tabulek a kadou
z~nich pipojme na~jednu tabulku nai.
\hdr{Pta zpv aneb User interface}
%%% User interface: konfigurace, logging a filtry. Remote control.
\noindent S se mn a s~n se mus mnit i konfigurace sovch
komponent. Ta se pozvolna stala tradinm kamenem razu vtiny router.
U~tohoto kamene se toti schzej dva odvc neptel:
snaha o~snadnost a flexibilitu konfigurace a snaha o~nepetrit
provoz st. A~jednou slev ten, podruh onen -- autoi nkterch
router vsadili na~slu textovch konfiguranch soubor za~cenu
toho, e se po~kad zmn konfigurace mus router restartovat
a po~njakou dobu neroutuje, jin zase poddili non-stop provozu
ve ostatn a stvoili konfigurovn nepebernm mnostvm online
pkaz, pomoc nich se nkter vci provdj snadno, jin,
na~kter autoi speciln pkaz nevymysleli, u obtnji a jet jin
vyaduj do~vslednho stavu dospt postupnm provedenm mnoha zmn,
co m obvykle za~dsledek daleko del vpadek ne jak by byl vznikl
reloadem celho routeru.
\BIRD\ se sna doshnout obojho: pouv textov konfiguran soubory,
uivateli tak dv monost vytvet konfiguraci vcemn libovolnm
zpsobem -- a ji runm editovnm, interaktivnmi programy i
automatickm generovnm pomoc script. Po~zmn konfigurace je
ovem schopen si novou verzi souboru pest, porovnat s~prv
pouvanou konfigurac a zmnm se za bhu pzpsobit (pokud
jsou zmny pli velk, me to zpsobit restart
nkterho z~protokol, ale provoz tch, kterch se zmna
netkala, to nijak neohroz).
Konfigurace kadho protokolu (lpe eeno kad jeho instance --
protokoly mohou bt sputny nkolikrt na~rznch rozhranch
i nad rznmi tabulkami) vypad piblin takto:
\verbatim{ protocol bgp TestBGP { # instanci si meme nazvat
local as 65000; # n AS
neighbor 195.39.3.64 as 5588; # sousedn AS
export all; # poslat budeme vechno
import filter { # na vstupu nkter odmtneme
if !(bgp_path ~ / ? 5588 ? /) then reject;
if net ~ [ 10.0.0.0/8+, 192.168.0.0/16+ ] then reject;
preference = 101; # zbylm nastavme preferenci
accept; # a pijmeme je
};
}}
\noindent Vdy popisuje protokol, jeho parametry, pipojen k~tabulkm
(v~naem ppad pouvme tabulku implicitn) a nastaven vstupnch
i~vstupnch filtr.
Filtry jsou popisovny jednoduchm procedurlnm programovacm jazykem,
kter m k~dispozici vechny informace o~prv zpracovvan poloce, me
se podle nich rozhodovat a libovoln je mnit. Dky tomu je mon jednodue
zadvat i velice sloit pravidla, definovat si podprogramy sdlen
filtry patcmi k~vce protokolm, i~potat metriky pro jeden protokol
na zklad metrik protokol ostatnch.
Vtanm pomocnkem pi odhalovn problm v~stch je rovn voliteln
logovn dleitch udlost a trasovn innosti protokol: zde si je
mono pro kad protokol vydat prakticky cokoliv ponaje zkladnmi informacemi o~bhu
protokolu (pipojovn a odpojovn soused apod.), pes vmnu poloek
mezi protokolem, filtry a jeho tabulkou, a kone detailnm vpisem vech
pijatch i odeslanch paket.
Mimo to \BIRD\ disponuje \uv{dlkovm ovldnm} -- jednoduchm pkazovm
rozhranm, pes kter se mohou pipojovat rzn klienti a vydvat jak
nkter dc pkazy (restarty protokol, reload konfigurace, pepnn
trasovn, \dots), tak poadavky na~vypisovn stavu routovacch tabulek
a protokol. U~tchto pkaz je mono vyuvat pln sly filtrovacho
jazyka, take chceme-li napklad znt vechny routy smrovan pomoc
BGP na jednoho konkrtnho souseda, sta poloit dotaz typu
\verbatim{ bird> show route where source=RTS_BGP && gw=62.168.0.1}
\noindent a dozvme se ihned ve, co jsme potebovali. Ladn filtr
navc usnadn i~to, e se meme zeptat na~obsah routovac tabulky
z~pohledu nkterho z~bcch protokol.
%%% BIRD uvnit
%\hdr{Pta anatomie}
%% existuje progdoc
%%% Netradicni pouziti
\hdr{Cesty tanch ptk aneb Za hranicemi vednch dn}
\noindent Hotov modulrn implementace routovacho daemona samozejm
svd i k~mn tradinmu vyuit. Zde se fantazii meze nekladou, autory
sam bhem vvoje napadly napklad tyto triky:
\itemize\ibull
\:{\I multirouter} -- \uv{schizofrenn} zazen pracujc na rznch
skupinch interfac jako rzn routery dc se rznmi pravidly,
lec teba i v~rznch autonomnch systmech. To je mono zadit
patinm nastavenm jdra a buto vce bcmi \BIRD{}y nebo dokonce
jednm pracujcm s~nkolika rznmi routovacmi tabulkami. Tak by
mohl napklad cel prask NIX bet na jedinm routeru (pravda,
bn PC by na to nestalo), a pesto by si kad provider mohl sm
urovat a konfigurovat svou vlastn routovac politiku.
\:{\I ed eminence} -- \BIRD\ by ani nemusel bet pmo na~stroji, kter
pakety routuje, mohl by tak hotov routovac tabulky diktovat
njakmu dedikovanmu routeru disponujcm vkonnjm hardwarem,
a tak skloubit pikovou propustnost \uv{velkho eleza}
s~flexibilitou routeru becho pod unixovskm systmem.
\:{\I inteligentn mirror} -- aplikace se nemus zastavovat u~routingu
jako takovho, mnohdy je mono informace zskan z~provozu routeru
vyuvat k~dalm elm, napklad k~inteligentnmu pesmrovvn
klient na~nejbli mirror vaeho archivu.
\endlist
%%% A co dal?
\hdr{as ptat aneb Co dl?}
Pestoe po~spnm obhjen projektu a prvnch nkolika destkch
spokojench uivatel (a samozejm i~pr opravench chybch) nyn vvoj
spe stagnuje, autoi ji spdaj plny do~budoucnosti, kter
by mly \BIRD{}ovi pinst mimo jin tak routovn multicast, agregaci
sovch prefix, OSPFv3 pro IPv6, on-demand linky a porty na~dal systmy.
%%% Reference na ns a ostatn routery
\hdr{Snka odkaz na zvr}
\noindent {\sc Bird Team} pod vedenm RNDr. Libora Forsta ({\I forst@cuni.cz}) tvoili:
$$\vbox{\halign{#\hfil & \quad \it # \hfil & \quad \it # \hfil\cr
Ondej 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}}$$
Domc strnku projektu najdete na {\it http:/$\!$/bird.network.cz/,} odtamtud ji
vedou odkazy na~aktuln verzi, online dokumentaci i mailing list
uivatel.
Vechna zmiovan RFC i mnoho dalch naleznete na {\it http:/$\!$/www.rfc-editor.org/},
prvn mylenky o~vyuvn ptactva v~Internetu sahaj a k~RFC~1149.
\BIRD\ nen na~svt sm, m i~pbuzn; mezi nimi za zmnku 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 bohuel zatm jen pe, na~jeho celointernetov nasazen se stle
ek a mezitm pibv address-translator a dalch zvrstev. Snad jedin
vt s pouvajc tento protokol je experimentln virtuln s 6-bone
(viz {\it http:/$\!$/www.6bone.net/} a odkazy odtamtud).
Dotazy a pipomnky poslejte buto autorovi nebo celmu {\sc Bird Team}u na~adresu
{\I bird@bird.network.cz}.
\bye
|