Перейти к содержимому
Калькуляторы

BIRD анонсирование AS клиента

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

настраиваешь протоколы  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 поднимаем без задержек, а второй и далее с задержкой я пока не придумал.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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;

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В 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;
}

 

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

Изменено пользователем nixx
слово перепутал )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Join the conversation

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.