Ноя
11

FreeBSD и bird: рассказ про птичек




  • Без заголовка

  • Минск, сентябрь 2007


  • Предыдущее решение по маршрутизации пачки fib'ов жило себе, жило и хотело жить дальше, но у него не получилось: возникли проблемы с масштабированием. Тут надо сказать, что более, чем активно используется VRF route leaking, который в квагге лучше, чем iBGP сессией не решается. Да и квага без патчей очень удивляется, зачем это вдруг понадобилась iBGP-сессия внутри локальной машины. В общем, стало понятно, что табун^Wнесколько десятков квагг с 50+ iBGP сессий между ними способно растоптать мозг либо мне, либо последователям. Тем более, что все это надо растить и беспорядочные связи пресекать^Wадминить.

    Вариантов в плане динамической машрутизации не так много - quagga, open* stuff и bird. Решения вопроса с редистрибуцией через kernel table в openBSD мне никогда не нравилось, поэтому выбор обратился на bird.

    Вообще, как позже выяснилось, bird - очень забавная софтина и в ряде аспектов сделанная очень здорово (в том числе, в части сборки конфиг-файла из кусков, специфичных для протоколов). Тем не менее, такой очевидной штуки, как инклюд файлов - в конфиге нет. Как люди живут на разных IX-ах, где надо фильтры строить - я не знаю. Видимо, отработанным движением ставят какую-нибудь гирьку на PgDown и идут курить (фильтры-то надо определять _до_ определения протоколов, где их можно использовать). В общем, теперь оно есть. Дальше пришлось рисовать собственно патч для поддержки нескольких таблиц маршрутизации, поскольку bird их поддерживает только для netlink.

    В результате получилось вполне миленько:
    bird> sh protocols
    name proto table state since info
    device1 Device master up May21
    kxxxxxxx Kernel xxxxxxx up May21
    spd_ruc BGP xxxxxxx up May21 Established
    mxxxxxxx BGP xxxxxxx up May21 Established
    kyyyyy Kernel yyyyy up May21
    spd_texnik BGP yyyyy up May21 Established
    myyyyy BGP yyyyy up May21 Established
    ....
    partk Pipe artk up May30 => igp_ospf
    partk_m Pipe artk up May27 => spd_ggggggg
    partk_r Pipe artk up May27 => spd_rkb
    partk_s Pipe artk up May30 => spd_spt
    kiiiiii Kernel iiiiii up Jun03
    piiiiii Pipe iiiiii up Jun03 => igp_ospf
    piiiiii_m Pipe iiiiii up Jun03 => spd_ggggggg
    piiiiii_r Pipe iiiiii up Jun03 => spd_rkb
    piiiiii_s Pipe iiiiii up Jun03 => spd_spt
    miiiiii BGP iiiiii up Jun03 Established

    Забавно, что в отличие от, [нужных] команд всего 3:

    configure (rehash)

    sh protocols all имя (посмотреть, что там с сессией)

    bird> sh protocols all mrsnt
    name proto table state since info
    mrsnt BGP xxxxxx up Jun03 Established
    Description: OPERATOR:XXXXXX
    Preference: 100
    Input filter: DEFAULT_ONLY
    Output filter: ACCEPT
    Routes: 1 imported, 129 exported, 1 preferred
    Route change stats: received rejected filtered ignored accepted
    Import updates: 1 0 0 0 1
    Import withdraws: 0 0 --- 0 0
    Export updates: 130 1 0 --- 129
    Export withdraws: 0 --- --- --- 0
    BGP state: Established
    Session: external
    Neighbor AS: XXXX
    Neighbor ID: XXX.XX.XXX.XX
    Neighbor address: XXX.XX.XXX.XX
    Source address: XXX.XX.XXX.XX
    Neighbor caps: refresh
    Hold timer: 118/180
    Keepalive timer: 25/60

    и show route [table zzzz] [for 1.2.3.4]
    bird> show route table zzzz for 1.2.3.4/30
    1.2.3.4/30 via XXX.XX.XXX.XX on vlan204 [spd_mspt May25] * (160) [AS65535?]

    Больше толком ничего и не надо.

    P.S. и да, так сложились зведы, что я теперь мейнтейнер этой радости в портах, поэтому начиная с 1.3.1_1 патчи отсюда перекочуют в порт














































  • Без заголовка

  • Минск, сентябрь 2007



  • Социальные сети

    Рубрики

    Последние записи