Please help, local interfaces not being recognized as local

Jerry Scharf jerry at soundhound.com
Thu May 18 03:28:59 CEST 2017


Hi,

So I have narrowed things down but still don't understand what is going 
on. The symptoms are as follows:

I have local interfaces with either simple addresses on net or on vlans. 
The peer is on the local subnet of the interface. Some are ibgp and some 
are ebgp. If I set direct, they all fail and I don't see any listener on 
port 179. As soon as I change them to multihop, everything works fine.

Also, I have defined a bunch of local aliases on lo. I then create a 
static block that lists all the addresses as via "lo". When I show 
static, they all show as dormant and they are not being redistributed by 
the bgp speaker.

This is on a centos 7 system currently stock configured runing 1.4.5 
from epel. I had been doing things with systemd-networkd and alternate 
kernels, but I did a clean install now. I have also tried 1.6.0 
bird/centos7 build with the same issues.

If someone can help me debug this, I would really appreciate it. If not, 
I may have to abandon using bird in favor of another routing daemon. 
That is certainly not my first choice.

thanks,
jerry

here's my current config (with multihop specified and bfd disabled. 
There are currently no other files being included.)

# this is automatically generated from borderbird4.j2, version 0.3

protocol kernel {
#	learn;			# Learn all alien routes from the kernel
	persist;		# Don't remove routes on bird shutdown
	scan time 20;		# Scan kernel routing table every 20 seconds
#	import none;		# Default is import all
	export all;		# Default is export none
#	kernel table 5;		# Kernel table to synchronize with (default: mai
n)
}

protocol direct {
     interface "lo", "*";
     preference 32000;    # make sure bgp routes don't overwrite direct
}

log "/var/log/birdlog" all;

router id 10.100.16.10;

protocol static {
     preference 16000;
     route 198.49.100.45/32 via "lo";
     route 8.25.217.18/32 via "lo";
     route 198.49.100.18/32 via "lo";
     route 8.25.217.45/32 via "lo";
     route 8.6.161.18/32 via "lo";
     route 8.5.161.45/32 via "lo";
}

function issecondary() {
     return net ~ 
[198.49.100.45,8.25.217.18,198.49.100.18,8.25.217.45,8.6.161.18
,8.5.161.45];
}
function isprimary() {
     return net ~ [0.0.0.4/30];
}

function net_outside() {
   return net ~ [172.18.10.0/24+,8.5.161.0/24+,198.49.100.0/24+];
}

function is_internal_local() {
     return net ~ 
[10.100.32.10/32,10.100.32.0/20,10.100.16.10/32,10.100.16.0/20]
;
}

filter inside_export {
     if ((net = 0.0.0.0/0) || (net ~ 10.0.0.0/8)) then accept;
     else reject;
}

filter inside_import {
     if is_internal_local() then reject;
     if net ~ [10.0.0.0/8+, 172.16.0.0/12+] then accept;
     else reject;
}
filter load_default {
     if net = 0.0.0.0/0 then accept;
     else reject;
}

filter outside_only {
     if isprimary() then bgp_local_pref=100;
     else if issecondary() then bgp_local_pref=80;
     else if net_outside() then bgp_local_pref=25;
     if net_outside() then accept;
     else reject;
}

template bgp tocore {
     description "bgp to data center as";
     local as 65302;
     multihop;
     export filter inside_export;
     import filter inside_import;
#    bfd on;
}

protocol bgp inside_netA from tocore {
     neighbor 10.100.16.3 as 65302;
     source address 10.100.16.10;
}
protocol bgp inside_netB from tocore {
     neighbor 10.100.32.3 as 65302;
     source address 10.100.32.10;
}

template bgp toedge {
     description "bgp to edge/ISP as";
     local as 64102;
     multihop;
     export filter outside_only;
     import filter load_default;
     allow local as;
#    bfd on;
}

protocol bgp outside_edge_A from toedge {
     neighbor 172.18.10.1 as 18741;
     source address 172.18.10.4;
}
protocol bgp outside_edge_B from toedge {
     neighbor 172.18.10.2 as 18741;
     source address 172.18.10.5;
}

protocol bfd {
     interface "eth*" {
         interval 300  ms;
         multiplier 3;
     };
}

include "/soundhound/etc/bird/*4.part.cfg";


-- 
Jerry Scharf, Soundhound DevOps
"What could possibly go wrong?"


More information about the Bird-users mailing list