Hi,

I thought about it too, so one option is to split two internal legs into two 
different “protocols” inside BIRD cfg and filters will work as expected?

------------------------------------------
Служба поддержки серверов
Группа сетевого администрирования
ДПП.УТП.СПС
АО «ПФ «СКБ-Контур»,
dc-...@skbkontur.ru<mailto:dc-...@skbkontur.ru>
Тел. +7 (343) 344-11-50 доб. 75352

From: gr...@highloadlab.com [mailto:gr...@highloadlab.com] On Behalf Of 
Alexander Zubkov
Sent: Tuesday, October 10, 2017 2:59 PM
To: Войнович Андрей Александрович <andr...@skbkontur.ru>
Cc: bird-users@network.cz
Subject: Re: OSPF routes not filtered

Hi.
If I understand correctly, import/export filters are not applied to OSPF 
internals - LSDB announces, etc. They are applied to prefixes imported into 
OSPF protocol from router and exported from it to its table.

On Tue, Oct 10, 2017 at 10:36 AM, Войнович Андрей Александрович 
<andr...@skbkontur.ru<mailto:andr...@skbkontur.ru>> wrote:

Hi all!

I am facing  strange problem with OSPF – my router has 2 Phy links and 4 VLAN 
links to two different routers:
Phy 1 Vlan 1400 internal link to R1
Phy 1 Vlan 1401 external link to R1
Phy 2 Vlan 1402 internal link to R2
Phy 2 Vlan 1403 external link to R2
R1 and R2 has direct connection and are OSPF neighbors in Area 0.

So I am trying to achieve ECMP load balancing and fault tolerance.

Linux box addresses:

lo
    inet 99.99.99.99
enp1s0f0.1402
    inet 10.16.0.10/30<http://10.16.0.10/30> brd 10.16.0.11
enp1s0f0.1403
    inet 10.16.0.14/30<http://10.16.0.14/30> brd 10.16.0.15
enp1s0f1.1400
    inet 10.16.0.2/30<http://10.16.0.2/30> brd 10.16.0.3
enp1s0f1.1401
    inet 10.16.0.6/30<http://10.16.0.6/30> brd 10.16.0.7

Linux box BIRD cfg:


router id 99.99.99.99;

filter deny_default {
if net = 0.0.0.0/0<http://0.0.0.0/0> then reject;
else accept;
}

filter permit_white {
if net ~ [
99.99.99.99/32<http://99.99.99.99/32>
]
then accept;
else reject;
}

filter change_src {
if net = 0.0.0.0/0<http://0.0.0.0/0>
then {
krt_prefsrc = 99.99.99.99;
accept;
}
else accept;
}

filter deny_all {
reject;
}

protocol kernel {
scan time 20;
import all;
export filter change_src;
}

protocol device {
scan time 10; # Scan interfaces every 10 seconds
}

protocol direct {
        interface "enp1s0f1.1400, enp1s0f0.1402, enp1s0f1.1401, enp1s0f0.1403", 
"lo";
}

protocol ospf Internal {
rfc1583compat yes;
import filter deny_default;
export filter deny_all;
area 0.0.0.20 {
interface "enp1s0f1.1400" {
type pointopoint;
};
interface "enp1s0f0.1402" {
type pointopoint;
};
};
}

protocol ospf External {
rfc1583compat yes;
import all;
export filter permit_white;
area 100.0.0.0 {
interface "enp1s0f1.1401" {
type pointopoint;
};
interface "enp1s0f0.1403" {
type pointopoint;
};
};
}

When I enable only one Phy link, everything works fine and as expected:

R1# sh ip ro next-hop 10.16.0.2
10.16.0.2/32<http://10.16.0.2/32>, ubest/mbest: 1/0, attached
    *via 10.16.0.2, Vlan1400, [250/0], 01:09:29, am
10.16.0.8/30<http://10.16.0.8/30>, ubest/mbest: 1/0
    *via 10.16.0.2, Vlan1400, [110/1010], 00:10:43, ospf-10, intra

R2# sh ip ro next-hop 10.16.0.10
<nothing, as expected, link disabled>

But when I enable second Phy link, I see following:

R1# sh ip ro next-hop 10.16.0.2
0.0.0.0/0<http://0.0.0.0/0>, ubest/mbest: 1/0
     via 10.16.0.2, Vlan1400, [110/1], 0.000000, ospf-10, type-2
10.1.1.44/30<http://10.1.1.44/30>, ubest/mbest: 1/0
    *via 10.16.0.2, Vlan1400, [110/2010], 0.000000, ospf-10, intra
10.1.1.224/30<http://10.1.1.224/30>, ubest/mbest: 1/0
    *via 10.16.0.2, Vlan1400, [110/2010], 0.000000, ospf-10, intra
10.16.0.2/32<http://10.16.0.2/32>, ubest/mbest: 1/0, attached
    *via 10.16.0.2, Vlan1400, [250/0], 01:09:31, am
10.16.0.8/30<http://10.16.0.8/30>, ubest/mbest: 1/0
    *via 10.16.0.2, Vlan1400, [110/1010], 00:10:45, ospf-10, intra

R2# sh ip ro next-hop 10.16.0.10

0.0.0.0/0<http://0.0.0.0/0>, ubest/mbest: 1/0
     via 10.16.0.10, Vlan1402, [110/1], 00:00:05, ospf-10, type-2
10.1.1.60/30<http://10.1.1.60/30>, ubest/mbest: 1/0
    *via 10.16.0.10, Vlan1402, [110/2010], 00:00:05, ospf-10, intra
10.1.1.216/30<http://10.1.1.216/30>, ubest/mbest: 1/0
    *via 10.16.0.10, Vlan1402, [110/2010], 00:00:05, ospf-10, intra
10.16.0.0/30<http://10.16.0.0/30>, ubest/mbest: 1/0
    *via 10.16.0.10, Vlan1402, [110/1010], 00:00:05, ospf-10, intra
10.16.0.10/32<http://10.16.0.10/32>, ubest/mbest: 1/0, attached
    *via 10.16.0.10, Vlan1402, [250/0], 00:00:13, am


So on linux box intafaces vlan1400 and vlan 1402 are in the same area and it is 
expected that they will have idaentical lsdbs and will send all the LSA they 
receive via all interfaces in the same area, so saying simply - whey will 
interchange routes. But in BIRD cfg I apply filters to avoid doing it, however 
routes are not filtered, and even default route received
Am I missing something?
Thanks.



  • OSPF routes not f... Войнович Андрей Александрович
    • Re: OSPF rou... Alexander Zubkov
      • RE: OSPF... Войнович Андрей Александрович
        • Re: ... Alexander Zubkov
          • ... Alexander Zubkov
            • ... Войнович Андрей Александрович
              • ... Alexander Zubkov

Reply via email to