[Babel-users] a better bird config and a survived gnarly rtod test
Dave Taht
dave.taht at gmail.com
Wed Oct 3 22:49:39 BST 2018
I just successfully tested distribution of 16000 ipv6 routes over 5
speakers (including bird) over ethernet.
the box doing the injection ate a cpu for all of the 5 minutes the
test ran (due to the known xroute import issue) but an edgerouter x,
a wndr3800 (filtering out the routes via various filters as it was my
default gw to the rest of the wan), the arm based tp-link 1200, and
another x86_64 box running bird, all survived. A bunch of unrelated
routes did go unreachable from the couch gw for a while (I need to
repatch in my "late hello" logger, and look harder at filtering stuff
out sooner/faster)
Things like odhcpd ate cpu for breakfast and I'm going to go poke at
ebpf support for that also ( https://github.com/dtaht/babeld/issues )
I'm back to running my babeld-xnor (and ebpf and ecn) patchset on the
x86 boxes for this test, but this was much more positive than my (very
dense) wifi tests of 2+ years back. I did overwhelm the wifi chip on
one box... but it didn't die, soo.
toke's default config for bird was a little off. It needed to filter
out babel messages
from self, so here that is.
d at prancer:/usr/local/etc$ cat bird.conf
router id 62.168.0.2; # change this for each router!
# Enable debugging output
debug protocols all;
# Need to define table for ipv6 sadr (v4 is implicitly defined as 'master4')
ipv6 sadr table tab1;
# Listen to dev up/down events
protocol device {}
# Blacklisting and filtering from kernel
define blacklist = [
a::/16,
127.0.0.0/8
];
filter import_filter
{
# Filter routes in blacklist
if (net ~ blacklist) then reject "blacklisted";
# Only import kernel protocol 50
#if (krt_source != 50) then reject "wrong protocol";
accept;
}
protocol kernel {
ipv6 sadr {
table tab1;
export all;
import filter import_filter;
};
learn yes;
}
protocol kernel {
ipv4 {
export all;
import filter import_filter;
};
learn yes;
}
# Create routes subnets configured on interfaces
protocol direct {
ipv6 sadr;
ipv4;
}
protocol babel {
ipv6 sadr {
table tab1;
import all;
# Set initial metric for all routes
export filter { if source != RTS_BABEL then babel_metric = 128; accept; };
};
ipv4 {
import all;
# Set initial metric for all routes
export filter { if source != RTS_BABEL then babel_metric = 128; accept; };
};
# Interfaces to listen on and their config
interface "enp3s0" { type wired; };
interface "enp4s0" { type wired; };
interface "wlan0" { type wireless; };
}
More information about the Babel-users
mailing list