mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
Documentation update.
This commit is contained in:
parent
cdc25e8db7
commit
d150c6379c
97
TODO
97
TODO
@ -56,3 +56,100 @@ OSPF
|
|||||||
- RFC1587 NSSA areas
|
- RFC1587 NSSA areas
|
||||||
- RFC2370 opaque LSA's
|
- RFC2370 opaque LSA's
|
||||||
- respect interface MTU and try not to create larger packets unless unavoidable
|
- respect interface MTU and try not to create larger packets unless unavoidable
|
||||||
|
|
||||||
|
Documentation (sorry, its in czech)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
K SGML:
|
||||||
|
|
||||||
|
o Mohl bys, prosim, nekam napsat, co je vsechno potreba udelat, aby bylo
|
||||||
|
dokumentaci mozno postavit? Skoncil jsem u toho, ze jsem do doc/sbase/
|
||||||
|
zkopiroval spoustu souboru z /usr/lib/sgml-tools a pridal nekolik symlinku
|
||||||
|
-- ted uz sice dokumentaci vygeneruji, ale asi to neni ta spravna cesta.
|
||||||
|
|
||||||
|
K HTML:
|
||||||
|
|
||||||
|
o "2000" zcela vypadava mimo hlavicku.
|
||||||
|
|
||||||
|
Uvod:
|
||||||
|
|
||||||
|
o "What is bird": tam by melo byt receno, _co_ je BIRD, nikoliv cemu se podoba.
|
||||||
|
To obnasi jednak par vet o tom, o co se vlastne snazi, potom nejaky feature
|
||||||
|
list (s odkazy do jednotlivych casti dokumentace?) a tez neco na tema "v cem
|
||||||
|
jsme lepsi nez konkurence" (a neargumentovat pouze licenci :) ).
|
||||||
|
Rovnez tak neni vubec urcen jen pro unixove systemy -- je velice portabilni
|
||||||
|
a shodou okolnosti Unix (presneji Linux) je jediny zatim napsany port.
|
||||||
|
o Chybi sekce popisujici instalaci, spousteni a command-line options.
|
||||||
|
o "About routing tables" by melo byt podstatne podrobnejsi (vysvetlit, co vlastne
|
||||||
|
routovaci tabulky jsou, co obsahuji, ze vubec existuji nejake atributy, k cemu
|
||||||
|
slouzi, ze nektere tabulky jsou synchronizovane s kernelem, zatimco jine nikoliv,
|
||||||
|
ze lze prenaset routy mezi tabulkami (odkaz na protokol pipe), ze k tabulkam
|
||||||
|
jsou pres filtry pripojeny protokoly atd.) Asi z toho udelat samostatnou kapitolu.
|
||||||
|
o Zminit logy a kategorie hlasek.
|
||||||
|
|
||||||
|
Filtry:
|
||||||
|
|
||||||
|
o Na zacatku zejmena vysvetlit, jak jsou filtry do systemu zapojeny, k cemu slouzi,
|
||||||
|
ze dostanou routu a ocekava se od nich verdikt. Teprve pak vysvetlovat, ze to
|
||||||
|
jsou programy, ze mohou volat funkce atd. Tez zminit, ze protokol ma pravo
|
||||||
|
nektere routy akceptovat/odmitnout bez toho, aniz by se zeptal filtru.
|
||||||
|
o Napsat neco o tom, jak filtry debugovat -- ze existuje trasovani filtru
|
||||||
|
a CLI command pro vypsani routovaci tabulky tak, jak projde filtrem ci tak,
|
||||||
|
jak ji vidi dany protokol.
|
||||||
|
o `filters internally work ...' patri do progdoc.
|
||||||
|
o Vysvetlit nesting a zastinovani.
|
||||||
|
o Nadefinovat, co se stane, kdyz funkce nevrati hodnotu, i kdyz ma.
|
||||||
|
o Popsat runtime errory a ze se chovaji jako rejecty.
|
||||||
|
o Typy: tez rici, ze integery se lisi nejen od booleanu, ale take od enumu.
|
||||||
|
o Boolean: TRUE nebo true? U kazdeho typu zminit, jak vypadaji literaly
|
||||||
|
tohoto typu a psat je vzdycky tt fontem.
|
||||||
|
o int: Nadefinovat rozsah a rici, ze preteceni se nekontroluje. Zminit
|
||||||
|
hexadecimalni konstanty.
|
||||||
|
o ip: IPv4/IPv6 nezavisi na verzi BIRDa, nybrz na compile-time konfiguraci.
|
||||||
|
o ip: .mask zminit zvlast mezi specialnimi operatory.
|
||||||
|
o set: lepe vysvetlit matchovani prefixu, ukazat na prikladu.
|
||||||
|
o bgppath: list of autonomous system _numbers_
|
||||||
|
o bgpmask: vysvetlit matchovani.
|
||||||
|
o operations: prejmenovat na `operators', mela by to asi byt tabulka
|
||||||
|
operatoru, u kazdeho receno, na jakych typech je definovan a jakeho
|
||||||
|
typu je vysledek.
|
||||||
|
o operations: ~ pracuje i na clistech, neni-liz pravda?
|
||||||
|
o Examply by mohly byt krapet smysluplnejsi.
|
||||||
|
o defined(): To, ze undefined attribute cannot be accessed, by melo byt
|
||||||
|
rozhodne receno nekde jinde (v uvodu sekce) -- vzdyt u defined samotneho
|
||||||
|
to mozne je.
|
||||||
|
o attributes: nemyslim, ze jsou vsechny -- co treba scope a preference?
|
||||||
|
o Chybi operace na clistech a cestach.
|
||||||
|
o print: a coz takhle printn apod.?
|
||||||
|
o Mezi prikazy nikde neni zminen napriklad accept a reject.
|
||||||
|
o Co se stane, kdyz filtr skonci, aniz by vydal verdikt?
|
||||||
|
|
||||||
|
Protocols:
|
||||||
|
|
||||||
|
o U kazdeho protokolu rici, jestli podporujeme pouze IPv4 nebo i IPv6 verzi.
|
||||||
|
o RIP: Vysvetlit, na ktere site se RIP hodi a na ktere ne, rici, ze je
|
||||||
|
hodnoty spise historicke, ale ze ve svete IPv6 se bezne pouziva, protoze
|
||||||
|
zatim neexistuji slusne implementace OSPFv3.
|
||||||
|
o RIP: Per-interface optiony uvadet tez jako definition list.
|
||||||
|
o RIP: U RIP-specific atributu zminit, jakeho jsou typu a jak vznikaji.
|
||||||
|
o Example u RIPu je out of date: `honour' -> `honor' apod. Tez ukazat
|
||||||
|
per-interface optiony.
|
||||||
|
o passwords: syntaxe data uz, tusim, davno vypada jinak.
|
||||||
|
|
||||||
|
Struktura dokumentace:
|
||||||
|
|
||||||
|
o Chybi kapitola o CLI a o clientovi.
|
||||||
|
o Na konci (nebo ve zvlast sekci pro kazdy protokol?) by mel byt seznam referenci
|
||||||
|
na vsechny mozne dokumenty, zejmena vsak vsechna RFC, kterymi se ridime nebo
|
||||||
|
ktera maji neco spolecneho s tim, co delame (napriklad RPSL).
|
||||||
|
|
||||||
|
K jazyku:
|
||||||
|
|
||||||
|
o K "BIRD Internet Routing Daemon" by mel patrit urcity clen.
|
||||||
|
o Nerika se `comparation', nybrz `comparison'.
|
||||||
|
o RFC (a ostatni zkratky) psat vzdy velkymi pismeny.
|
||||||
|
o Pokud je v zavorce cela veta, patri pred ')' tecka, pokud neni, tak
|
||||||
|
nepatri.
|
||||||
|
o Davej si pozor na rody -- router je vzdycky `it', nikdy `he'.
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<!doctype linuxdoc system>
|
<!doctype linuxdoc system>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
Bird documentation
|
BIRD documentation
|
||||||
|
|
||||||
Look for "about this documentation" section to learn more.
|
Look for "about this documentation" section to learn more.
|
||||||
|
|
||||||
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
<article>
|
<article>
|
||||||
|
|
||||||
<title>Bird
|
<title>BIRD
|
||||||
<author>
|
<author>
|
||||||
Pavel Machek <tt/pavel@ucw.cz/
|
Pavel Machek <tt/pavel@ucw.cz/
|
||||||
|
|
||||||
@ -29,15 +29,15 @@ This document contains documentation for BIRD Internet Routing Daemon
|
|||||||
|
|
||||||
<sect>Introduction
|
<sect>Introduction
|
||||||
|
|
||||||
<sect1>What is bird
|
<sect1>What is BIRD
|
||||||
|
|
||||||
<p><label id="intro"> You may wonder what 'bird' means. It is acronym of 'BIRD Internet Routing
|
<p><label id="intro"> You may wonder what 'BIRD' means. It is acronym of 'BIRD Internet Routing
|
||||||
Daemon', and we think that's cool name. Its task is similar to what firmware of Cisco routers does,
|
Daemon', and we think that's cool name. Its task is similar to what firmware of Cisco routers does,
|
||||||
or what gated <HTMLURL URL="http://www.gated.org/"> or GNU zebra <HTMLURL
|
or what gated <HTMLURL URL="http://www.gated.org/"> or GNU zebra <HTMLURL
|
||||||
URL="http://www.zebra.org/"> does. However, you can not run Cisco's firmware on "normal" computer
|
URL="http://www.zebra.org/"> does. However, you can not run Cisco's firmware on "normal" computer
|
||||||
and gated is really hard to configure and comes under wrong license. Bird is being developed on
|
and gated is really hard to configure and comes under wrong license. BIRD is being developed on
|
||||||
Charles University, Prague, and can be freely distributed under terms of GNU General Public
|
Charles University, Prague, and can be freely distributed under terms of GNU General Public
|
||||||
License. Bird is designed to run on Unix and unix-like systems, it is primarily developed on Linux.
|
License. BIRD is designed to run on Unix and unix-like systems, it is primarily developed on Linux.
|
||||||
|
|
||||||
<sect1>About this documentation
|
<sect1>About this documentation
|
||||||
|
|
||||||
@ -61,6 +61,12 @@ section in filters.
|
|||||||
|
|
||||||
<sect1>Introduction
|
<sect1>Introduction
|
||||||
|
|
||||||
|
<p>BIRD is configured using text configuration file. At startup, BIRD reads <file/bird.conf/ (unless
|
||||||
|
-c command line parameter is given). Configuration may be changed on user request: if you modify
|
||||||
|
config file and then signal BIRD with SIGHUP, it will adjust to new config. There's BIRD client,
|
||||||
|
which allows you to talk with BIRD in more extensive way than just telling it to reconfig. BIRD
|
||||||
|
writes messages about its work to log files or syslog (according to config).
|
||||||
|
|
||||||
<p>Bird is configured using text configuration file. At startup, bird
|
<p>Bird is configured using text configuration file. At startup, bird
|
||||||
reads <file/bird.conf/ (unless -c command line parameter is
|
reads <file/bird.conf/ (unless -c command line parameter is
|
||||||
given). Everything on a line after <cf/#/ is a comment, whitespace is
|
given). Everything on a line after <cf/#/ is a comment, whitespace is
|
||||||
@ -68,13 +74,11 @@ ignored, C-style comments <cf>/* comment */</cf> are also
|
|||||||
recognized. If there's variable number of options, it is grouped using
|
recognized. If there's variable number of options, it is grouped using
|
||||||
<cf/{ }/ brackets. Each option is terminated by <cf/;/.
|
<cf/{ }/ brackets. Each option is terminated by <cf/;/.
|
||||||
|
|
||||||
<p>Really simple configuration file might look like this, you can find
|
<p>Really simple configuration file might look like this:
|
||||||
example of more complicated configuration file in
|
|
||||||
<file>doc/bird.conf.example</file>.
|
|
||||||
|
|
||||||
<code>
|
<code>
|
||||||
protocol kernel {
|
protocol kernel {
|
||||||
persist; # Don't remove routes on bird shutdown
|
persist; # Don't remove routes on BIRD shutdown
|
||||||
scan time 20; # Scan kernel routing table every 20 seconds
|
scan time 20; # Scan kernel routing table every 20 seconds
|
||||||
export all; # Default is export none
|
export all; # Default is export none
|
||||||
}
|
}
|
||||||
@ -98,42 +102,44 @@ protocol rip {
|
|||||||
<cf/debug/ for debugging message, <cf/trace/, <cf/info/,
|
<cf/debug/ for debugging message, <cf/trace/, <cf/info/,
|
||||||
<cf/remote/ for messages about misbehavior of remote side, <cf/warning/,
|
<cf/remote/ for messages about misbehavior of remote side, <cf/warning/,
|
||||||
<cf/error/, <cf/auth/, <cf/fatal/, <cf/bug/ for internal bugs
|
<cf/error/, <cf/auth/, <cf/fatal/, <cf/bug/ for internal bugs
|
||||||
of bird. You may specify more than one <cf/log/ line to log to multiple
|
of BIRD. You may specify more than one <cf/log/ line to log to multiple
|
||||||
destinations.
|
destinations.
|
||||||
|
|
||||||
<tag>debug protocols all|off|{ states, routes, filters, interfaces, events, packets }</tag>
|
<tag>debug protocols all|off|{ states, routes, filters, interfaces, events, packets }</tag>
|
||||||
sets global default of debugging options.
|
sets global default of protocol debugging options.
|
||||||
|
|
||||||
<tag>filter <m/name/{ <m/commands/ }</tag> define filter. You can learn more about filters
|
<tag>filter <m/name/{ <m/commands/ }</tag> define filter. You can learn more about filters
|
||||||
in next chapter.
|
in next chapter.
|
||||||
|
|
||||||
<tag>protocol rip|ospf|bgp <m/[name]/ { <m>protocol options</m> }</tag> define protocol
|
<tag>protocol rip|ospf|bgp|... <m/[name]/ { <m>protocol options</m> }</tag> define protocol
|
||||||
instance, called name (or called something like rip5 if you omit name). You can learn more
|
instance, called name (or called something like rip5 if you omit name). You can learn more
|
||||||
about configuring protocols in their own chapters.
|
about configuring protocols in their own chapters. You can run more than one instance of
|
||||||
|
most protocols (like rip or bgp).
|
||||||
|
|
||||||
<tag>define constant = expression</tag> define constant. You can use it later in every place
|
<tag>define constant = expression</tag> define constant. You can use it later in every place
|
||||||
you could use simple integer.
|
you could use simple integer.
|
||||||
|
|
||||||
<tag>router id <m/num.num.num.num/</tag> set router id. Router
|
<tag>router id <m/IPv4 address/</tag> set router id. Router id needs to be world-wide
|
||||||
id needs to be world-wide unique 32bit number, identifying
|
unique. It is usually one of router's IPv4 addresses.
|
||||||
router. It is usually one of router's IP addresses.
|
|
||||||
|
|
||||||
<tag>table <m/name/</tag> create new routing table.
|
<tag>table <m/name/</tag> create new routing table.
|
||||||
|
|
||||||
<tag>eval <m/expr/</tag> evaluates given filter expression. It is used for testing.
|
<tag>eval <m/expr/</tag> evaluates given filter expression. It is used for testing.
|
||||||
</descrip>
|
</descrip>
|
||||||
|
|
||||||
<sect1>Per-protocol options
|
<sect1>Protocol options
|
||||||
|
|
||||||
<p>Several options are per-protocol, but all protocols support them. They are described here.
|
<p>Several options are per-protocol, but all protocols support them. They are described here.
|
||||||
|
|
||||||
<descrip>
|
<descrip>
|
||||||
<tag>preference <m/expr/</tag> sets preference of this protocol.
|
<tag>preference <m/expr/</tag> sets preference of routes generated by this protocol.
|
||||||
|
|
||||||
<tag>disabled</tag> disables given protocol.
|
<tag>disabled</tag> disables given protocol. You can disable/enable protcol from command
|
||||||
|
line interface without needing to touch config.
|
||||||
|
|
||||||
<tag>debug <m/setting/</tag> this is similar to global debug setting, except that it only
|
<tag>debug <m/setting/</tag> this is similar to global debug setting, except that it only
|
||||||
affects one protocol.
|
affects one protocol. Only messages in selected debugging categories will be written to
|
||||||
|
logs.
|
||||||
|
|
||||||
<tag>import <m/filter/</tag> filter can be either either <cf> { <m>filter commands</m>
|
<tag>import <m/filter/</tag> filter can be either either <cf> { <m>filter commands</m>
|
||||||
}</cf> or <cf>filter <m/name/</cf>. Import filter works in direction from protocol to main
|
}</cf> or <cf>filter <m/name/</cf>. Import filter works in direction from protocol to main
|
||||||
@ -153,18 +159,20 @@ protocol rip {
|
|||||||
time from which password is not announced but is allowed. id is password id, as needed by
|
time from which password is not announced but is allowed. id is password id, as needed by
|
||||||
certain protocols.
|
certain protocols.
|
||||||
|
|
||||||
<tag>interface "<m/mask/" [ { <m/option/ ; [ ... ] } ]</tag> specifies, which interfaces
|
<tag>interface "<m/mask/"|<m/prefix/ [ { <m/option/ ; [ ... ] } ]</tag> specifies, which
|
||||||
this protocol is active at, and allows you to set options on interface-by-interface
|
interfaces this protocol is active at, and allows you to set options on
|
||||||
basis. Mask is specified in shell-like patters, thus <cf>interface "*" { mode broadcast;
|
interface-by-interface basis. Mask is specified in shell-like patters, thus <cf>interface
|
||||||
};</cf> will start given protocol on all interfaces, with <cf>mode broadcast;</cf> option.
|
"*" { mode broadcast; };</cf> will start given protocol on all interfaces, with <cf>mode
|
||||||
|
broadcast;</cf> option.
|
||||||
|
|
||||||
</descrip>
|
</descrip>
|
||||||
|
|
||||||
<sect>Filters
|
<sect>Filters
|
||||||
|
|
||||||
<sect1>Introduction
|
<sect1>Introduction
|
||||||
|
|
||||||
<p>Bird contains rather simple programming language. (No, it can not yet read mail :-). There are
|
<p>BIRD contains rather simple programming language. (No, it can not yet read mail :-). There are
|
||||||
two objects in this language: filters and functions. Filters are called by bird core when route is
|
two objects in this language: filters and functions. Filters are called by BIRD core when route is
|
||||||
being passed between protocol and main routing table, and filters may call functions. Functions may
|
being passed between protocol and main routing table, and filters may call functions. Functions may
|
||||||
call other functions, but recursion is not allowed. Filter language contains control structures such
|
call other functions, but recursion is not allowed. Filter language contains control structures such
|
||||||
as if's and switches, but it allows no loops. Filters are
|
as if's and switches, but it allows no loops. Filters are
|
||||||
@ -205,6 +213,10 @@ pairs <cf><M>type name</M>;</cf>, where each pair defines one local variable. Bo
|
|||||||
several statements into one by <cf>{ <M>statements</M> }</cf> construction, that is useful if
|
several statements into one by <cf>{ <M>statements</M> }</cf> construction, that is useful if
|
||||||
you want to make bigger block of code conditional.
|
you want to make bigger block of code conditional.
|
||||||
|
|
||||||
|
<p>There are two special filters, <cf/all/ (which accepts all routes) and <cf/none/ (which rejects
|
||||||
|
all routes).
|
||||||
|
|
||||||
|
|
||||||
<p>Bird supports functions, so that you don't have to repeat same blocks of code over and
|
<p>Bird supports functions, so that you don't have to repeat same blocks of code over and
|
||||||
over. Functions can have zero or more parameters, and can have local variables. Function basically
|
over. Functions can have zero or more parameters, and can have local variables. Function basically
|
||||||
looks like this:
|
looks like this:
|
||||||
@ -252,7 +264,7 @@ booleans (that is to prevent you from shooting in the foot).
|
|||||||
such variables, but you can not concatenate two strings (for example). String constants
|
such variables, but you can not concatenate two strings (for example). String constants
|
||||||
are written as <cf/"This is a string constant"/.
|
are written as <cf/"This is a string constant"/.
|
||||||
|
|
||||||
<tag/ip/ this type can hold single ip address. Depending on version of bird you are using, it
|
<tag/ip/ this type can hold single ip address. Depending on version of BIRD you are using, it
|
||||||
can be IPv4 or IPv6 address. IPv4 addresses are written (as you would expect) as
|
can be IPv4 or IPv6 address. IPv4 addresses are written (as you would expect) as
|
||||||
<cf/1.2.3.4/. You can apply special operator <cf>.mask(<M>num</M>)</cf>
|
<cf/1.2.3.4/. You can apply special operator <cf>.mask(<M>num</M>)</cf>
|
||||||
on values of type ip. It masks out all but first <cf><M>num</M></cf> bits from ip
|
on values of type ip. It masks out all but first <cf><M>num</M></cf> bits from ip
|
||||||
@ -275,7 +287,7 @@ booleans (that is to prevent you from shooting in the foot).
|
|||||||
3.0.0.0/8- is shorthand for 3.0.0.0/{0,7}.
|
3.0.0.0/8- is shorthand for 3.0.0.0/{0,7}.
|
||||||
|
|
||||||
<tag/enum/
|
<tag/enum/
|
||||||
enumeration types are halfway-internal in the bird. You can not define your own
|
enumeration types are halfway-internal in the BIRD. You can not define your own
|
||||||
variable of enumeration type, but some predefined variables are of enumeration
|
variable of enumeration type, but some predefined variables are of enumeration
|
||||||
type. Enumeration types are incompatible with each other, again, for your
|
type. Enumeration types are incompatible with each other, again, for your
|
||||||
protection.
|
protection.
|
||||||
@ -406,12 +418,12 @@ periodic messages onto this interface and <cf>nolisten</cf> means that rip will
|
|||||||
interface but not listen on it.
|
interface but not listen on it.
|
||||||
|
|
||||||
<p>Following options generally override specified behavior from rfc. If you use any of these
|
<p>Following options generally override specified behavior from rfc. If you use any of these
|
||||||
options, bird will no longer be rfc-compatible, which means it will not be able to talk to anything
|
options, BIRD will no longer be rfc-compatible, which means it will not be able to talk to anything
|
||||||
other than equally misconfigured bird. I warned you.
|
other than equally misconfigured BIRD. I warned you.
|
||||||
|
|
||||||
<descrip>
|
<descrip>
|
||||||
<tag>port <M>number</M></tag>
|
<tag>port <M>number</M></tag>
|
||||||
selects IP port to operate on, default 520. (This is useful when testing bird, if you
|
selects IP port to operate on, default 520. (This is useful when testing BIRD, if you
|
||||||
set this to address >1024, you will not need to run bird with UID==0).
|
set this to address >1024, you will not need to run bird with UID==0).
|
||||||
|
|
||||||
<tag>infinity <M>number</M></tag>
|
<tag>infinity <M>number</M></tag>
|
||||||
@ -438,8 +450,8 @@ protocol rip MyRIP_test {
|
|||||||
port 1520;
|
port 1520;
|
||||||
period 7;
|
period 7;
|
||||||
garbagetime 60;
|
garbagetime 60;
|
||||||
interface "*";
|
interface "eth0" { metric 3; mode multicast; } "eth1" { metric 2; mode broadcast; };
|
||||||
honour neighbour;
|
honor neighbour;
|
||||||
passwords { password "ahoj" from 0 to 10;
|
passwords { password "ahoj" from 0 to 10;
|
||||||
password "nazdar" from 10;
|
password "nazdar" from 10;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user