File: slt.tex

package info (click to toggle)
bird2 2.17.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky
  • size: 5,584 kB
  • sloc: ansic: 74,910; sh: 3,712; perl: 3,444; lex: 883; python: 495; makefile: 464; xml: 260; sed: 13
file content (275 lines) | stat: -rw-r--r-- 13,468 bytes parent folder | download | duplicates (14)
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