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