a.p.tomilin Опубликовано 19 июля, 2019 · Жалоба Коллеги, здравствуйте! Возникла задача анонсировать AS клиента, все время работал с CISCO и там мне все понятно, настроить нужно на BIRD. Google ничего толкового про Trasit AS с использованием BIRD не ответил... Прошу подсказать как правильно настраивается анонсирование. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 19 июля, 2019 · Жалоба настраиваешь протоколы 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 поднимаем без задержек, а второй и далее с задержкой я пока не придумал. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a.p.tomilin Опубликовано 19 июля, 2019 · Жалоба 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; } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
LostSoul Опубликовано 19 июля, 2019 · Жалоба 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
a.p.tomilin Опубликовано 19 июля, 2019 · Жалоба Все верно, изменено в целях приватности. Я правильно понимаю, что нужно сделать следующее: function 1_net(){ if (net = XX.XXX.X.XX/22) then return true; return false;} и добавить в исходящий к вышестоящему оператору фильтр? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
TriKS Опубликовано 19 июля, 2019 · Жалоба По сути логика птички - проста. Каждый проокол(точнее пиринг) это своя таблица. С ней можно воротить все что угодно, вливая в общий кернел. Это для простоты понимания логики работы. По функциям - обычные логические операции, как и в любом языке программирования. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
nixx Опубликовано 22 июля, 2019 (изменено) · Жалоба В 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; } функция динамически анонсирует даунлинка, если он реально к вам подключен, и соответственно перестает анонсировать, когда он отпал. Изменено 22 июля, 2019 пользователем nixx слово перепутал ) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...