[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