summaryrefslogtreecommitdiff
path: root/doc/slt2001/slt.tex
blob: fb9485868cdeb29673dec72014c196b2d8d86d44 (plain)
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 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