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

GoBGP - BGP демон с удобным API и cli

Всем привет!

 

Хочу поделиться отличной находкой - GoBGP: https://github.com/osrg/gobgp, чудесный BGP демон с API и CLI, которых как раз бесконечно не хватает в quagga/bird/exabgp и прочих. Все работает стабильно, уже почти 3й месяц гоняю в продакшене. Используется для целей быстрого блэкхола на бордере и передачи информации об этом апстриму.

 

Также среди плюшек умеет BGP Flow Spec.

Изменено пользователем pavel.odintsov

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


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

Можно ли узнать, какое его преимущество перед тем-же bird. Интересует именно распределенный блекхол.

Сейчас все собрано через таблицы + мелкий http интерфейс...

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


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

Преимущество на мой взгляд очень мощное - крутая cli тулза для управления:

gobgp global rib add 10.33.0.0/24 -a ipv4

 

И очень простой конфиг:

[Global]
 [Global.GlobalConfig]
   As = 65001
   RouterId = "213.133.111.200"

[Neighbors]
 [[Neighbors.NeighborList]]
   [Neighbors.NeighborList.NeighborConfig]
     NeighborAddress = "10.10.10.250"
     PeerAs = 65001
   [Neighbors.NeighborList.AfiSafis]
     [[Neighbors.NeighborList.AfiSafis.AfiSafiList]]
       AfiSafiName = "ipv4-unicast"

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


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

Очередная экзотика.

На python или ruby bgpd демона не встречали? :)

 

Преимущество на мой взгляд очень мощное - крутая cli тулза для управления:

gobgp global rib add 10.33.0.0/24 -a ipv4

 

Подсказать, как через vtysh добавить сеть в список для блэкхола? :)

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


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

Это будет дольше, потому что оно захочет soft reset, а прямой анонс быстрее в разы.

 

На Python точно есть - ExaBGP.

 

Экзотика - это Quagag и Bird, которые даже flow spec не умеют :)

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


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

Это будет дольше, потому что оно захочет soft reset, а прямой анонс быстрее в разы.

Быстрее для чего? во многих местах стоят дефолтные таймеры для BGP. Напомнить порядок величин?

 

На Python точно есть - ExaBGP.

Еще одна экзотика.

 

Экзотика - это Quagag и Bird, которые даже flow spec не умеют :)

А вы соберите статистику. На софт-роутерах quagga лидирует с большим отрывом :)

flow spec - нужна специалистам узкого профиля.

Большинство админов настраивают BGP по how-to :)

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


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

Ну, если кого-то устраивает Quagga... я могу лишь пожалеть :)

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


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

Квагга устраивает цисководов ввиду cisco-like CLI и довольно простого конфига.

BIRD - хорош своей гибкостью и универсальностью.

GoBGP - ИМХО не такой гибкий как BIRD, и не такой разжеванный как квагга.

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


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

Имхо, не особая разжеванность - это нормально для софта, которому полгода от роду. У проекта огромный потенциал. Quagga мертва уже долгие годы, оно не развивается вообще. Bird активнее, но все равно крайне сложен для обращений извне и очень гибкого управления. ExaBGP медленанная и местами очень специфичная.

 

А вот GoBGP написан программистами (хорошими!) для программистов :) Это лично меня очень радует. Как другим - поживем увидим.

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


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

Имхо, не особая разжеванность - это нормально для софта, которому полгода от роду

 

Не в том дело. Quagga = cisco (почти, за исключением мелочей). Потому howto-шек и use cases - завались. С bird-ом, хоть ему уже сколько лет - такого изобилия нет.

 

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

 

Ну в общем да, cli ограничивается списком маршрутов, реконфигурацией, проверкой фильтров и включением-отключением протоколов. Хотя для 99% этого хватает.

 

А вот GoBGP написан программистами (хорошими!) для программистов :)

 

Ну не знаю, мне конфиг bird-а кажется более понятным, чем конфиг GoBGP.

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


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

Конфиг даа, сложно называть понятным и удобным :( Но тут другой прикол - можно все настроить по API, запустившись с пустым конфигом или вообще без него.

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


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

Впервые столкнувшись с динамической маршрутизацией, проштудировав хаутушки в интернетах остановился на bird, как на самом простом и понятном софте для bgp/ospf.

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


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

pavel.odintsov, вот Вы вместо того, чтоб людям экзотику всякую предлагать, запилили-бы нужные плюшки в любой из популярных демонов. :-)

 

// Offtopic on

С вашей AS опять SPAM массово попер.

// Offtopic off

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


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

А жалобу можно забить по https://bill2fast.com/abuse.php ? Мы таких товарищей быстро уму разуму учим :)

 

snvoronkov, добавление кода в Quagga - проще себя застрелить, как по качеству самого кода, так и по части адекватности разработчиков. Форков квагги уже десяток развелось, именно по причине "особенностей" разработчиков :) С Bird все лучше, но они итак многие фичи планируют сделать сами либо уже сделали в мастер бранче. Мне GoBGP больше всего интересен, с ним удобно работать из моего софта :)

Изменено пользователем pavel.odintsov

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


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

А жалобу можно забить по https://bill2fast.com/abuse.php ? Мы таких товарищей быстро уму разуму учим :)

 

snvoronkov, добавление кода в Quagga - проще себя застрелить, как по качеству самого кода, так и по части адекватности разработчиков. Форков квагги уже десяток развелось, именно по причине "особенностей" разработчиков :) С Bird все лучше, но они итак многие фичи планируют сделать сами либо уже сделали в мастер бранче. Мне GoBGP больше всего интересен, с ним удобно работать из моего софта :)

Запилить бы на него ещё klish

https://code.google.com/p/klish/

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


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

Работает как и выглядит - довольно интересно.

Но вот только с конфигурацией в toml немного промахнулись....

 

Все хотел спросить по Flow Spec.

Возможно ли правила динамически заливать в тот-же junos? (по bgp к примеру)

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


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

Все хотел спросить по Flow Spec.

Возможно ли правила динамически заливать в тот-же junos? (по bgp к примеру)

 

 Можно, нужно, проверял в продакшене - тщательно :)

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


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

Ну, если кого-то устраивает Quagga... я могу лишь пожалеть :)

А вот жалеть не надо. Имеем несколько лет стабильной работы. К кваге претензий не возникло.

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


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

Все хотел спросить по Flow Spec.

Возможно ли правила динамически заливать в тот-же junos? (по bgp к примеру)

 

 Можно, нужно, проверял в продакшене - тщательно :)

 

Могу даже пример дать:

gobgp global rib -a ipv4-flowspec add match destination 10.0.0.0/24 source 20.0.0.0/24 then redirect 10:10

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


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

В общем на стенде выглядит интересно и само главное динамически.

 

Вот только небольшой бросок камня в его работу.

Не нашел как можно перечитать конфиг-файл на лету.

Пока пытался настроить то что у меня есть в bird-e, вспоминал квагу и все ее форки не чистым словом....

 

Вот небольшой кусок того, что хотел повторить. Архитектура связаности - full mesh.

template bgp rr_cdn {
   table master;
   local as 65301;
   gateway direct;
   import filter {
if (65300,666) ~ bgp_community then {
    dest = RTD_BLACKHOLE;
    bgp_local_pref = 255;
    accept;
}
if net ~ [ 10.17.0.0/16{24,32} ] then accept;
reject;
   };
   export filter {
if net ~ [ 10.17.0.0/16{24,32} ] then accept;
if (65300,666) ~ bgp_community then accept;
reject;
   };
}

protocol bgp cs2 from rr_cdn {
   neighbor 10.17.19.5 as 65302;
   source address 10.17.19.6;
}

 

О кваге.

Она зарекомендовала себя как стабильное решения.

Использовать можно когда серверов несколько и пиров столько-же.

Когда парк оборудования вырастает до несколько сотен единиц, а вместе с ними и архитектура - в кваге можно потеряться, пока поймешь что она делает и что нужно доконфигурить...

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


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

1. Сервер написан на Go. Этот язык изначально заточен на поддержку многопоточности.

 

Теоретически, если его запустить на железе типа Mikrotik CCR c 36 ядрами, то он будет в десятки раз быстрее.

И на любом многопроцессороном сервере он будет быстрее любых других продуктов ( GO сейчас примерно в 2 раза медленнее C)

 

2. Поддерживается несколько форматов конфигов.

 

3. Есть API через которые можно теоретически запилить парсер любых конфигов.

 

Изначально продукт преднозначен для Роут серверов с сотнями и тысячами пиров.

 

По отзывам, разработка на языке GO примерно в 10 раз быстрее чем на языке C/C++, так что прогресс действительно еще впереди.

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


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

ну судя по тому что жаба8 уже быстрее чем чистый ASM, а node.js работает с такой же скоростью как с\с++ (ибо написано на с++)

то всё ещё впереди

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


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

На Микротике - Tilera, крайне специфичная платформа. Под нее Google крайне маловероятно, что сделает порт. Да и оно само по себе довольно быстро. Но это все же control plane, тут можно обойтись без реактивности.

 

А вот это "По отзывам, разработка на языке GO примерно в 10 раз быстрее чем на языке C/C++, так что прогресс действительно еще впереди." - неправда :) У Go быстрый, но неоптимизирующий компилятор и до компиляторов С/С++ и их скорости ему далеко.

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


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

И очень простой конфиг:

"простой" - ахахаха, он заставил меня рыдать как сучку :,-(

Подсказать, как через vtysh добавить сеть в список для блэкхола? :)

ответ прост: квагга забагованный кусок булшита и его не надо использовать. гобгп и ехабгп - это другой класс программ - рут инжекторы же Ж) у них другие задачи и цели, и они просты и изящны. а квагга - это оверкилл, берд тоже пинцет. тем более у них нет нормального апи, а у гобгп есть. бебебе :-Р

Ну, если кого-то устраивает Quagga... я могу лишь пожалеть :)

если кого-то устраивает квагга, то надо санитаров скорее вызывать, а не жалеть Ж) пусть поциента лечат электрическим током очень-очень долго Ж)

pavel.odintsov, вот Вы вместо того, чтоб людям экзотику всякую предлагать, запилили-бы нужные плюшки в любой из популярных демонов. :-)

это не нужно. просто рут инжекторы решают другие проблемы чем роутсервера на иксах или софтроутеры. не нужны эти тонны ненужных фич. ваш любимый юнегз-вей же, не ?

Все хотел спросить по Flow Spec.

Возможно ли правила динамически заливать в тот-же junos? (по bgp к примеру)

да, флоуспек умеют все маршрутизаторы J. еще alcatel lucent и вроде чтото в циске аср9к появиться собиралось...

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


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

1. Сервер написан на Go. Этот язык изначально заточен на поддержку многопоточности.

Херня от гугла для написания мелких утилит на скорую руку.

 

Теоретически, если его запустить на железе типа Mikrotik CCR c 36 ядрами, то он будет в десятки раз быстрее. И на любом многопроцессороном сервере он будет быстрее любых других продуктов ( GO сейчас примерно в 2 раза медленнее C)

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

А кроме того 2 раза медленнее это на х86 с мегажирнющим кешем и охерительной длинны конвеером, на огрызке с 36 ядрами тебя ждёт масса сюрпризов.

 

Разработка на Visual Basic была в 1000 раз быстрее 17 лет тому назад, чем на сях, так что прогресса нет.

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


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

Join the conversation

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

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

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

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

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

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

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