Jump to content
Калькуляторы

bird как rs 2x ebgp uplink 1x ibgp downlink

Коллеги прошу помощи в настройке:

Есть маршрутизатор se100 2FW 1home-ix

В последнее время постоянно валится по памяти.

Решил поднять RS для того чтобы на se100 была только одна текущая таблица маршрутизации и трафик шел напрямую на нее.

В теории понятно нужно чтобы аплинки, RS, se100 были между собой direct connected.

Аплинки от RS должны принимать Next Hop se100 их стыковочной сети, сам RS должен вещать se100 Next Hop аплинков.

Собрал тестовую лабу в GNS3 чтобы поглядеть на практике:

 

В лабе имею 2 ebgp(R2_AS64501 и R3_AS64502), 1 ibgp R5_AS64500 и bird как RS_AS64500.

 

Схема:

 

1e8462.jpg

 

Маршруты на R5 приходят нормально. Next Hop выдается верный.

Не могу никак траслировать свои маршруты аплинкам.

 

Что отдает R2

 

 

R2#sh ip bgp neighbors 101.0.0.2 advertised-routes 
BGP table version is 38, local router ID is 101.0.0.9
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
             r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

  Network          Next Hop            Metric LocPrf Weight Path
*> 101.0.0.0/20     0.0.0.0                  0         32768 i
*> 102.0.0.0/21     101.0.0.22               0             0 64502 i
*> 103.0.0.0/22     101.0.0.10               0             0 64503 i
*> 120.0.0.0/24     101.0.0.10               0             0 64503 i

 

 

Что отдает R3

 

 

R3#sh ip bgp neighbors 102.0.0.2 advertised-routes 
BGP table version is 35, local router ID is 102.0.0.9
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
             r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

  Network          Next Hop            Metric LocPrf Weight Path
*> 101.0.0.0/20     101.0.0.21               0             0 64501 i
*> 102.0.0.0/21     0.0.0.0                  0         32768 i
*> 103.0.0.0/22     102.0.0.10               0             0 64503 i
*> 120.0.0.0/24     102.0.0.10               0             0 64503 i

 

Что принимает R5

 

 

R5#sh ip bgp neighbors 100.0.0.5 received-routes 
BGP table version is 129, local router ID is 100.0.0.6
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
             r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

  Network          Next Hop            Metric LocPrf Weight Path
*>i101.0.0.0/20     101.0.0.1                0    100      0 64501 i
*>i102.0.0.0/21     102.0.0.1                0    100      0 64502 i
*>i103.0.0.0/22     101.0.0.1                     100      0 64501 64503 i
*>i120.0.0.0/24     101.0.0.1                     100      0 64501 64503 i

 

конфиг bird

 

 

# Override router ID
router id 100.0.0.5;
define myas=64500;
protocol device { }
protocol direct { disabled; }
protocol kernel { disabled; }

table T64501;
table T64502;
table T64500;

protocol pipe P64501 {
       table master;
       mode transparent;
       peer table T64501;
       import all;
       export none;
}
protocol pipe P64502 {
       table master;
       mode transparent;
       peer table T64502;
       import all;
       export none;
}

protocol pipe P64500 {
       table master;
       mode transparent;
       peer table T64500;
        import all;
        export all;
}

protocol bgp R64501x0x1 {
       local as 64500;
       neighbor 101.0.0.1 as 64501;
       passive on;
       import all;
       export all;
       route limit 100;
       table T64501;
       connect retry time 6000;
#        rs client;
}



protocol bgp R64502x0x1 {
       local as 64500;
       neighbor 102.0.0.1 as 64502;
       passive on;
       import all;
       export all;
       route limit 100;
       table T64502;
       connect retry time 6000;
#        rs client;
}

protocol bgp R64500x0x6 {
       local as 64500;
       neighbor 100.0.0.6 as 64500;
       passive on;
       import all;
       export all;
       route limit 100;
       table T64500;
       connect retry time 6000;
#        rs client;
#        next hop self;
}

 

 

 

R5

 

 

interface Loopback0

ip address 192.168.2.1 255.255.254.0

 

interface GigabitEthernet0/0

ip address 101.0.0.3 255.255.255.248

duplex full

speed 1000

media-type gbic

negotiation auto

!

interface GigabitEthernet1/0

ip address 102.0.0.3 255.255.255.248

negotiation auto

!

interface GigabitEthernet2/0

ip address 100.0.0.6 255.255.255.0

shutdown

negotiation auto

!

router bgp 64500

no synchronization

bgp router-id 100.0.0.6

bgp log-neighbor-changes

network 192.168.2.0 mask 255.255.254.0

neighbor 100.0.0.5 remote-as 64500

neighbor 100.0.0.5 update-source GigabitEthernet2/0

neighbor 100.0.0.5 next-hop-self

neighbor 100.0.0.5 soft-reconfiguration inbound

no auto-summary

 

 

 

Bird не хочет принимать от R5 сети

 

bird> show route table T64500
192.168.2.0/23     unreachable [R64500x0x6 2015-02-18 14:10:54 from 100.0.0.6] * (100/-) [i]

 

Дальше я уже пробовал писать статиком в bird сеть 192.168.2.0/23 via 10.0.0.6

и при отдаче замену next-hop

function to_uplink_1() {
       bgp_next_hop = 101.0.0.3;
       return true;}

Но это у меня не получилось и я сомневаюсь в правильности этого пути.

Коллеги подскажите куда копать дальше?

Share this post


Link to post
Share on other sites

Зачем вам этот геморой? Не проще пофильтровать fv до le 22 или, вообще, принять дефолты?

Зачем вам весь фв?

Share this post


Link to post
Share on other sites

у меня 2FW+home-ix и нужна балансировка.

Если бы был один FW принимал бы дефолт.

 

Да и в целом я так понимаю что RS это совершенно обычное явление.

Share this post


Link to post
Share on other sites

Вопрос не читал, у себя делаю вот так:

template bgp rr_client {
direct;
local as 12345;
rr client;
rr cluster id 0.0.0.42;
import filter blahblah;
export filter blahblah;
gateway direct;
}

protocol bgp rr_b1 from rr_client
{
neighbor 1.1.1.1 as 12345;
}

protocol bgp rr_b2 from rr_client
{
neighbor 1.1.1.2 as 12345;
}

Точно помню - нужны были rr client, rr cluster id (если RR больше одного), direct и gateway direct.

Share this post


Link to post
Share on other sites

Abram

Большое спасибо!

 

Добавление direct;rr client;

 

Помогло уйти от ошибки unreachable

 

 

R2#sh ip bgp neighbors 101.0.0.2 received-routes 
BGP table version is 67, local router ID is 101.0.0.9
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
             r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

  Network          Next Hop            Metric LocPrf Weight Path
*> 192.168.2.0/23   101.0.0.2                0             0 64500 64500 i

 

 

Остался только один момент - как заставить bird отдавать Next Hop R5? 101.0.0.2 это сам bird. fixed.

 

 

 

function to_uplink_1() {
       bgp_next_hop = 101.0.0.3;
       return true;
}

function pref_from_myasset()
prefix set pref_from_64500;
{
pref_from_64500 = [ 192.168.2.0/23 ];
if net ~ pref_from_64500 then return true;
return false;
}

filter prov64501out {
if pref_from_myasset() then
{
bgp_community = -empty-; #не отправляем никаких коммьюнити
bgp_path.prepend(64500);
accept;
}
reject;
}


protocol pipe P64501 {
       table master;
       mode transparent;
       peer table T64501;
       import all;
#        export all;
       export filter prov64501out;
}

protocol bgp R64501x0x1 {
       local as 64500;
       neighbor 101.0.0.1 as 64501;
       passive on;
       import all;
#        export none;
       export where to_uplink_1();
       route limit 100;
       table T64501;
       connect retry time 6000;
}

 

 

 

Может быть есть более красивые и правильные варианты?

Edited by wed

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this