Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RFC: Replace babel with bird2 #995

Open
spolack opened this issue Oct 3, 2024 · 2 comments
Open

RFC: Replace babel with bird2 #995

spolack opened this issue Oct 3, 2024 · 2 comments

Comments

@spolack
Copy link
Member

spolack commented Oct 3, 2024

In order to shrink our zoo of routing daemons i'd propose to replace babeld with bird2. I'm currently running a PoC configuration at wilgu10-core. This also allows us to get rid of the "hack" trying to let bird workaround missing features (kernel export filter) in babeld. Other communities like freifunk franken also switched to bird because it's performing better. Even Jech thinks that birds implemenation is superior.

PoC Config running at wilgu10-core. From what i can tell it seems to work and is interoperable with babeld.

root@wilgu10-core:~# cat /etc/bird.conf 
log syslog all;
debug protocols all;

ipv6 sadr table v6_main;

ipv4 table v4_babel_src;
ipv4 table v4_babel_ff;
ipv4 table v4_babel_default;

protocol device {
};

protocol direct {
	interface "lo";
	ipv6 sadr {
		table v6_main;
	};
}



protocol babel {
	randomize router id yes;
        ipv6 sadr {
                table v6_main;
                import where (net.len = 56) || (net = ::/0 from 2001:bf7::/32 );
                export filter {
			if net = 2001:bf7:860:900::/56 from ::/0 then accept;
			if source = RTS_BABEL then accept;
			reject;
		};
        };
        ipv4 {                                          
                table v4_babel_src;                                   
                import all;      
                export where source = RTS_BABEL;
        };
	
	interface "switch0.10" {
		type wireless;
		rxcost 128;
	};
        interface "switch0.11" {
                type wireless;
                rxcost 1024;
        };
        interface "switch0.20" {
                type wireless;
                rxcost 2048;
        };
}

protocol kernel {       
        ipv6 sadr {                  
                table v6_main;
                export all;
        };       
}   

protocol kernel {
        kernel table 12;
	ipv4 {
                table v4_babel_src;
		export all;
	};
}

protocol kernel { 
        kernel table 10;
	ipv4 {
                table v4_babel_ff;
		export all;
	};
}

protocol kernel { 
        kernel table 11;
        ipv4 {             
        	table v4_babel_default;
                export all;
        };                 
}

protocol pipe {
	table v4_babel_src;
	peer table v4_babel_ff;
	export where net != 0.0.0.0/0;
}

protocol pipe {
        table v4_babel_src;
        peer table v4_babel_default;
        export where net = 0.0.0.0/0;
@spolack spolack changed the title Replace babel with bird2 RFC: Replace babel with bird2 Oct 3, 2024
@Noki
Copy link
Member

Noki commented Oct 3, 2024

For me switching to bird2 is fine. Can you create a PR so we can test it on more locations?

@PolynomialDivision
Copy link
Contributor

For me as well. However, I'm not sure if the WireGuard setup will work smoothly, since we added some 'IPC' to dynamically add interfaces to it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants