BIRD - routovani na IP-aliased interface (trosku delsi)

David Rohleder davro na ics.muni.cz
Pondělí Duben 16 23:59:31 CEST 2001


edlman na fortech.cz (Martin Edlman) writes:

> Zdravim,
> 
> 	potreboval bych zvedet, zda se nesnazim marne, kdyz se snazim o
> nasledujici:
> 
> 	Mam hlavni router (0), ktery je gatewayi pro nekolik siti, ktery jsou k
> tomuto routeru pripojeny jedinou sitovkou (eth1) a dal jsou vetveny
> bezdratove WaveLANem.
> 
> Schema site:
> 
>                                       10.0.1.252/30
>                    +---+   10.0.1.1 +---+       +---+
>                    |   |------------| 3 |-------| 4 |
>     +---------+    | W |            +---+       +---+   sit B
>     |         |    | V |- - - - - - - - - - - - - - - - - - - 
>     | gateway |eth1| L |   10.0.11.2+---+               sit A
>     |    0    |----| A |  +---------| 2 |
>     |         |    | N |  |         +---+
>     +---------+    |   |--|
>      eth0|         +---+  |10.0.11.1+---+
>          |                +---------| 1 |
>       Internet                      +---+
> 
> Sit A je pro jednu lokalitu a sklada se ze dvou siti, private a public:
> 10.0.0.0/23 (dve cecka) a 194.213.253.0/30 (malinka testovaci sit)
> 
> Sit B je na to obdobne, pro druhou lokalitu:
> 10.0.10.0/23 a 194.213.253.4/30
> 
> Takze na gatewayi mam na eth1 nasl. ip:
> 10.0.0.1, 194.213.253.1, 10.0.10.1 a 194.213.253.5
> 
> Routery 1,2,3,4 jsou linux routery (LRP), takze na nich setrim mistem,
> proto jsem zvolil BIRD, ktery ma binar ze vsech nejmensi.
> Routery jsou bud pripojeny ke gatewayi primo (1,2,3) nebo v kaskade (4).
> Za kazdym routerem jsou verejne site.
> Na routerech plati: eth0 jde do Internetu, ostatni od nej.
> 
> No a mym cilem je dostat vsechny site z routeru (1,2,3,4), pripojeny na
> eth{1,n}, na gateway, abych na ni nemusel udrzovat spousty statickych
> routu.
> 
> Pouzivam OSPF.
> Pokud mam na gatewayi na eth1 vsechny aliasy, tak mi BIRD neprijima
> routy a od routeru.
> Pokud necham jen jednu IP adresu (10.0.10.1), tak dostava routy jen z
> 10.0.10.0/23 site.
> Stejne se to chova i pokud necham alias na druhou desitkovou sit, ale z
> ni nic neprijima.
> 
> Zkousel jsem na gatewayi konfigurovat BIRDa vselijak, ale bez uspechu,
> zkousel jsem nasl:
> 
> protocol ospf ospfIN {
>         export none;
                 ^^^^^^^
u tohoto parametru jsem si myslel, ze znamena "nerikej sousedovi zadne
cesty". V dokumentaci je to trochu zmatene.



>         import all;
>         area 0.0.0.0 { 
>                 tick 8;
>                 interface "eth1*" 10.0.0.0/23;
>         };
> } 
> 
> Misto interface, jsem zkousel i nasl. varianty:
>                 interface "eth1" 10.0.10.0/23;
>                 interface "eth1:1" 10.0.0.0/23;



> Zkousel jsem udelat dve area v jednom ospf protokolu, zkousel jsem
> udelat dva ospf protokoly, kazdej s jinou area, ... nic.
> Kdyz uz jsem u tech area - muze mi nekdo rict, jak presne fungujou?
> (Nahlizel jsem do RFC, ale chtel bych nejaky strucny a prehledny
> vysvetleni). Mam mit vsechny routery v jedny area? V jaky? Nula?

Na kazdou otazku existuje kratka, srozumitelna a spatna odpoved :-)

Jinak v pripade BIRDa je odpoved prekvapive jednoducha: podporuje
pouze jednu area a to backbone :-) 


> Kdyz jsem zkousel menit area tak mi BIRD v logu misto zadanych vypisoval
> uplne jiny cisla.

Chyba v jedne radce ve zpracovani OSPF paketu. V budouci verzi ma byt
opraveno (chybejici ntohl()). Je to jenom "hotfix", u ktereho se
predpoklada, ze router je pouze v jedne OSPF area.


Reseni bych videl nasledovne. Pustit OSPF pouze na primarnim
interface. Ostatni cesty by se patrne mely dat do BIRDa vlozit z
kernel table. (cela konfigurace by byla vhodnejsi).

Dalsi moznost je RIP2. Tam by snad zadny problem byt nemel.

> 
> kdyz se do BIRDa napichnu pres birdc, tak mi "show ospf" vypise:
> bird> show ospf 
> ospfIN:
> Number of areas: 1
>         Area: 0.0.0.0 (0) [BACKBONE]
>                 Stub:   No
>                 RT scheduler tick:      8
>                 Number of interfaces:   1
>                 Number of LSAs in DB:   1
>                 Number of neighbors:    0
>                 Number of adjacent neighbors:   0
> >>> device1: Scanning interfaces
> >>> ospfIN: Received hello from 10.0.11.1 via eth1
> >>> ospfIN: New neighbor found: 10.0.11.1 on eth1.
> >>> ospfIN: Neighbor 10.0.11.1 changes state from "    down" to "    init".
> >>> ospfIN: Neighbor 10.0.11.1 changes state from "    init" to "    2way".
> >>> ospfIN: SM on iface eth1. Event is "neighbor change".
> >>> ospfIN: Neighbor 10.0.11.1 changes state from "    2way" to " exstart".
> >>> ospfIN: Scheduling RT lsa origination for area 0.0.0.0.
> >>> ospfIN: DB_DES (I) sent to 10.0.11.1 via eth1.
> >>> ospfIN: Hello sent via eth1
> >>> ospfIN: DB_DES (I) sent to 10.0.11.1 via eth1.
> 


zajimavejsi by bylo hlavne

show ospf nei
show ospf int

> Takze muze mi nekdo rici, zda lze muj problem resit pomoci BIRDu (i
> treba s RIPem) a jak? Popr. nejaky jiny routovaci daemon, ktery to umi.
> Doufam, ze to pujde z BIRDem, libi se mi jeho velikost a moznosti
> konfigurace a taky ze je to matfyzackej projekt.
> 

Az na to, ze to delaji dost zamestnani kernel hackeri, kteri maji asi
jine priority nez rychle vydavani novych verzi BIRDa to neni spatne.

Jinak sazkou na jistotu je GATED (pokud se trefite do vhodne verze,
ktera zrovna funguje :-) nebo Zebra (nezkousel jsem).
-- 
-------------------------------------------------------------------------
David Rohleder						davro na ics.muni.cz
Institute of Computer Science, Masaryk University
Brno, Czech Republic
-------------------------------------------------------------------------


Další informace o konferenci Linux