Jump to content

Recommended Posts

Posted

Коллеги, здравствуйте!

Возникла задача анонсировать AS клиента, все время работал с CISCO и там мне все понятно, настроить нужно на BIRD.

Google ничего толкового про Trasit AS с использованием BIRD не ответил...

Прошу подсказать как правильно настраивается анонсирование.

Posted

настраиваешь протоколы  protocol bgp <upllink>  ( ну это наверное уже есть )

настраиваешь протокол protocol bgp <client>

в секции настроек клиента указываешь import filter , export filter.

логику фильтров заполняешь как угодно начиная от

 

filter import_bgp_smallTelecom{
    if net ~ [ 198.51.100.0/22+ ] then accept;

    else reject;
}

 

filter export_bgp_smallTelecom {
    if net ~ [ 192.168.0.0/16+ ] then reject;

    else accept;
}

 

 

я клиента описываю примерно так

 

protocol bgp smallTelecom {
table master;
router id <мой id>;
description "Small Gadukino Telecom customer link id 12345";
local as 1234;
neighbor xx.xx.xx.xx  as 5678;
hold time 240;
startup hold time 240;
connect retry time 120;
keepalive time 80;
start delay time 5;
error wait time 60, 300;
error forget time 300;
next hop self;
path metric 1;
source address yyy.yyy.yyy.yyy;
#import where net ~ [ 198.51.100.0/22+ ];

#упрощенный вариант

import filter import_bgp_smallTelecom;

export filter export_bgp_smallTelecom;

 

ну собственно и все работает.

бирду собственно без разницы что у тебя транзит что нет.

все что в одной таблице ( master ) будет обмениваться(синхронизироваться)  с каждым из протоколов , согласно прописанным правилам.

 

p.s. настройки всяких starup timer обычному клиенту не нужны.

Они прописаны для случая когда , когда с к маршрутизатору клиента  проложено несколько дублированных волокон и sfp ,это защита от ситуации когда один из каналов начнет флапать. ( задержка поднятия сессии на некоторое время стабилизации линка)

( предполагается, что все каналы сразу не станут аварийными никогда  , иначе они все поднимутся с задержкой)

как описать логику , что первый линк с определенной as поднимаем без задержек, а второй и далее с задержкой я пока не придумал.

 

 

Posted

LostSoulБлагодарю за развернутый ответ.

Что мне необходимо добавить в фильтр для передачи вышестоящим операторам?

Сейчас фильтр выглядит так:

function pref_from_myasset()

prefix set pref_from_65000;

{

pref_from_65000 = [ zzz.zzz.zzz.0/23  ];

if net ~ pref_from_65000 then return true;

return false;

}

 
filter prov65002out {

if pref_from_myasset() then

{

bgp_community = -empty-;

bgp_path.prepend(65000);
accept;

}

reject;

}

Posted
12 минут назад, a.p.tomilin сказал:

Сейчас фильтр выглядит так:

А у вас вообще есть свой номер AS ?

Или Вы для взаимодействия с аплинком используете приватный номер AS  ( 65002 , 65000 ) ?

Или это так изменено перед публикацией в целях приватности?

 

если это все на самом деле номера публичных AS , то поправьте свой фильтр к аплинку примерно так.

 

function pref_from_myasset()

prefix set pref_from_65000;

{

pref_from_65000 = [ zzz.zzz.zzz.0/23  ];

if net ~ pref_from_65000 then return true;

return false;

}

 
function pref_from_downlinkasset()

prefix set pref_from_XXXX;  #( XXXX - as клиента _

{

pref_from_XXXX = [ bbb.bbb.bbb.0/23  ];

if net ~ pref_from_XXXX then return true;

return false;

}

 
  
filter prov65002out {

if pref_from_myasset() then

{

bgp_community = -empty-;

bgp_path.prepend(65000);
accept;

}

 

if pref_from_downlinkasset() then

{

 

accept;

}

 

reject;

}

 

Мне , правда , непонятно зачем вы ставите дополнительные препенды в своих анонсах аплинку и нужно ли это делать для анонсов вашего клиента.

Ну и хочу отметить , что ваш вариант фильтра пропустит только конкретный заявленный префикс /23 , форма записи в моем примере пропустит и подсеть /22 и любой более маленький анонс, входящий в данный блок - /23 / 24 и вплоть до /32

 

Posted

Все верно, изменено в целях приватности.

Я правильно понимаю, что нужно сделать следующее:

function 1_net()
{
    if (net = XX.XXX.X.XX/22) then return true;
    return false;
}

 

и добавить в исходящий к вышестоящему оператору фильтр?

 

 

Posted

По сути логика птички - проста. Каждый проокол(точнее пиринг) это своя таблица. С ней можно воротить все что угодно, вливая в общий кернел. Это для простоты понимания логики работы. По функциям - обычные логические операции, как и в любом языке программирования.

Posted (edited)
В 19.07.2019 в 09:56, a.p.tomilin сказал:

Что мне необходимо добавить в фильтр для передачи вышестоящим операторам?

оргмомент - не забудьте попинать аплинков, чтобы обновили свои фильтры, стоящие на вас (ваш as-set). в автоматическом режиме это далеко не у всех делается.

 

function export_to_uplinks()
{
        if source != RTS_BGP then return false;
        if ( bgp_path.len = 2 ) && ( bgp_path.first = my-AS ) then return bgp_path ~ [ downlink-AS ];
        return false;
}


filter to-my-uplink-out {
        if !export_to_uplinks() && !mynets() then reject;
        bgp_community.empty;
        accept;
}

 

функция динамически анонсирует даунлинка, если он реально к вам подключен, и соответственно перестает анонсировать, когда он отпал.

Edited by nixx
слово перепутал )

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.