mirror of
				https://gitlab.labs.nic.cz/labs/bird.git
				synced 2024-05-11 16:54:54 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			156 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
		
			6.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Core
 | 
						|
~~~~
 | 
						|
- client: Ctrl-R eats one more enter
 | 
						|
- client: paging?
 | 
						|
- client: data losses on large dumps?
 | 
						|
 | 
						|
Documentation
 | 
						|
~~~~~~~~~~~~~
 | 
						|
- write doctool
 | 
						|
- write documentation :|
 | 
						|
 | 
						|
Globals
 | 
						|
~~~~~~~
 | 
						|
- right usage of DBG vs. debug
 | 
						|
- logging and tracing; use appropriate log levels
 | 
						|
- check incoming packets and log errors!!
 | 
						|
- check log calls for trailing newlines and log levels followed by comma
 | 
						|
- check if all protocols set proper packet priorities and TTL's.
 | 
						|
- try compiling with -Wunused
 | 
						|
- does everybody test return value of sk_open?
 | 
						|
- doc: references to RFC's we did follow
 | 
						|
- protocols: implement CLI hooks and per-procotol CLI commands
 | 
						|
- protocols: implement reconfigure hook
 | 
						|
- protocols: use locking
 | 
						|
- check use of system includes and sprintf()
 | 
						|
 | 
						|
Various ideas
 | 
						|
~~~~~~~~~~~~~
 | 
						|
- static: allow specifying a per-route filter program for setting route attributes?
 | 
						|
- bgp: timing of updates?
 | 
						|
- netlink: realms
 | 
						|
- netlink: import Linux route attributes to our rta's, so that they can be filtered?
 | 
						|
- config: executable config files
 | 
						|
- filters: user defined attributes?
 | 
						|
- client: access control
 | 
						|
- io: use poll if available
 | 
						|
- IPv6 router advertisements
 | 
						|
- real multipath (doesn't seem to be simple at all :()
 | 
						|
- fake multipath (even less simple)
 | 
						|
- route recalculation timing and flap dampening [see RFC2439 for algorithms]
 | 
						|
- aggregate engine: standard route aggregation and summarization [RFC2519]
 | 
						|
- aggregate engine: injection of manually configured pseudo-static routes
 | 
						|
- generate default route if any working BGP connection exists (aggregate engine again?)
 | 
						|
- generate default route to IGP's (aggregate engine yet another time?)
 | 
						|
- look at RFC 2386 (QoS-based routing)
 | 
						|
- cli: show tables?
 | 
						|
 | 
						|
 | 
						|
OSPF
 | 
						|
~~~~
 | 
						|
	- refuse running on non-multicast devices
 | 
						|
	- importing of device routes for networks where we don't run OSPF
 | 
						|
	- check incoming packets using neighbor cache
 | 
						|
	- RFC2328 appendix E: Use a better algorithm
 | 
						|
	- automatic generation of external route tags (RFC1403)
 | 
						|
	- RFC1587 NSSA areas
 | 
						|
	- RFC2370 opaque LSA's
 | 
						|
	- 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'.
 | 
						|
 |