How do I configure BIRD to support multiple Linux kernel routing tables?

Grant Taylor gtaylor at tnetconsulting.net
Sun Feb 25 19:51:26 CET 2018


On 02/25/2018 06:01 AM, Ondrej Zajicek wrote:
> Hello

Hi,

> protocol kernel {
> 	learn;
> 	export all;
> 	import all;
> 	# these are default values
> 	# table master;
> 	# kernel table 254;
> }
> 
> table deftab;
> 
> protocol kernel {
> 	learn;
> 	export all;
> 	import all;
> 	table deftab;
> 	kernel table 253;
> }

I think the key that I was missing was the "table deftab;" outside of 
"protocol kernel".

I also needed to remove the "main" and "default" from the "protocol 
kernel" lines.

And the apparent table name limitation got me.  "Default" is one letter 
too long."  :-/  (Table name length is probably documented somewhere 
I've not read yet.)

> This will sync kernel table 254 ('main') with default BIRD table 'master' 
> and kernel table 253 ('default') with additional BIRD table 'deftab'.

Understood.

> Optionally, you can use pipe protocol to distribute routes between 
> these tables.

Do I need to use pipes to distribute routes between tables?

I ask this because I've updated the config (below) and now BIRD seems 
happier.  However I'm seeing evidence that the single / default route 
from the dfault table is being filtered (?).

bird: kernel2 > added [best] 0.0.0.0/0 via 8.44.144.1 on eth0
bird: kernel2 < rejected by protocol 0.0.0.0/0 via 8.44.144.1 on eth0

I think BIRD is seeing the single / default route and starts to use it, 
but then filters it, or at least that's what I think is happening.

> There are two unexpected issues that may cause problems:
> 
> 1) BIRD does not allow two Kernel protocol instances to be connected to 
> the same BIRD table, you have to use two BIRD tables, like above.

Understood and duly noted.  -  I don't foresee this to be a problem for me.

> 2) Trying to use BIRD keywords as protocol/table names would lead to 
> hard to understand 'syntax error' errors during configuration processing.

That makes sense.  I just need to be smart enough to recognize when that 
happens.

# cat /etc/bird.conf
protocol kernel {
         learn;
         export all;
         import all;
         persist no;
         kernel table 254;
}

table dfault;

protocol kernel {
         debug all;
         learn;
         export all;
         import all;
         persist no;
         table dfault;
         kernel table 253;
}

protocol device {
}

protocol direct {
         interface "*";
}

protocol rip {
         export all;
         import all;
         interface "wgc", "test1", "test2", "test3" {
                 version 2;
         };
}



-- 
Grant. . . .
unix || die

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 3982 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://trubka.network.cz/pipermail/bird-users/attachments/20180225/004b3437/attachment.p7s>


More information about the Bird-users mailing list