Jump to content
Калькуляторы

Quagga и ASN4

Судя по упавшему с 60 гигабит до 25 трафику на М9 проблема с такой вот ошибкой массовая

 

 

 Assertion `len < str_size' failed in file bgp_aspath.c, line 619, function aspath_make_str_count

 

http://groups.google.ru/group/fido7.ru.uni...d7a4f3ce0?hl=ru

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

патчится вот так

собственно значимую часть патча я выдели болдом:

 

aurora:/usr/home/wawa# cat /usr/ports/net/quagga/files/patch-WAWA-AS4fix*

--- bgpd/bgp_aspath.h.orig 2008-09-05 18:27:26.000000000 +0400

+++ bgpd/bgp_aspath.h 2009-04-30 13:54:00.000000000 +0400

@@ -60,7 +60,7 @@ struct aspath

char *str;

};

 

-#define ASPATH_STR_DEFAULT_LEN 32

+#define ASPATH_STR_DEFAULT_LEN 512

 

/* Prototypes. */

extern void aspath_init (void);

--- bgpd/bgp_aspath.c.orig 2008-09-05 18:27:26.000000000 +0400

+++ bgpd/bgp_aspath.c 2009-04-30 13:50:17.000000000 +0400

@@ -540,16 +540,14 @@ aspath_make_str_count (struct aspath *as

 

seg = as->segments;

 

- /* ASN takes 5 chars at least, plus seperator, see below.

+ /* ASN takes 10 chars at least, plus seperator, see below.

* If there is one differing segment type, we need an additional

* 2 chars for segment delimiters, and the final '\0'.

* Hopefully this is large enough to avoid hitting the realloc

* code below for most common sequences.

*

- * With 32bit ASNs, this range will increase, but only worth changing

- * once there are significant numbers of ASN >= 100000

*/

-#define ASN_STR_LEN (5 + 1)

+#define ASN_STR_LEN (10 + 1)

str_size = MAX (assegment_count_asns (seg, 0) * ASN_STR_LEN + 2 + 1,

ASPATH_STR_DEFAULT_LEN);

str_buf = XMALLOC (MTYPE_AS_STR, str_size);

@@ -574,16 +572,6 @@ aspath_make_str_count (struct aspath *as

XFREE (MTYPE_AS_STR, str_buf);

return NULL;

}

-

- /* We might need to increase str_buf, particularly if path has

- * differing segments types, our initial guesstimate above will

- * have been wrong. need 5 chars for ASN, a seperator each and

- * potentially two segment delimiters, plus a space between each

- * segment and trailing zero.

- *

- * This may need to revised if/when significant numbers of

- * ASNs >= 100000 are assigned and in-use on the internet...

- */

#define SEGMENT_STR_LEN(X) (((X)->length * ASN_STR_LEN) + 2 + 1 + 1)

if ( (len + SEGMENT_STR_LEN(seg)) > str_size)

{

 

Share this post


Link to post
Share on other sites

ээээ объясните плиз что это за проблема и зачем надо патчить квагу

дело в том что пару дней дней назад поднял квагу в виртуалке - для теста - и наблюдал падение демона bgpd

с записью в логе аналогичной ошибки

Share this post


Link to post
Share on other sites

ээээ объясните плиз что это за проблема и зачем надо патчить квагу

Патчить надо: 32bit ASN это больше, чем 5 цифр. Так что при появлении номеров более 99999 происходит "наезд" на другие данные со всеми вытекающими последствиями.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Насколько я понимаю это все патчи для 0.99.11 А где взять для 0.99.10 ?

Share this post


Link to post
Share on other sites

сегодня также влетели :(

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

Share this post


Link to post
Share on other sites

А собственно, если я full view не беру, оно мне срочно надо ? или подождать обновления в портах ?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

ну тем неменее, давеча на Msk-Ix в те 6 тысяч префиксов, что там есть, закралась такая весчь.... поэтому если от апстрима отдается не только дефолт, а и что-то еще, то надо бы. причем сами такие префиксы отфильтрвать вы не сможете, оно развалится сразу по приходу.

Share this post


Link to post
Share on other sites

Вот так райп борется с фрей!!!!

Share this post


Link to post
Share on other sites

Вот так райп борется с фрей!!!!

А причем тут *bsd ? там же свой и вполне адекватный openbgpd есть.

Share this post


Link to post
Share on other sites

дефолт не спасет. bgpd валится еще на этапе приема апдейтов, до их фильтрации

Share this post


Link to post
Share on other sites

centos 5.3. Quagga 0.98.6. Работает, не валится... Соседняя сеть - упала вчера ;)

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Подобная проблема возникает естественно при принятии fullview с апстримов. Причем штатными средствами куаги, например отрезать префикс-листами все кроме default, не дало результата, bgpd все также уходит в ступор.

 

4 варианта выхода из данной ситуации:

1. Купить cisco/juniper в место тазика с куагой ($$$$$$$$).

2. Даунгрейд до версии quagga-0.98.6. (тут все понятно)

3. Попросить апстримы отдавать Вам не fullview, а только default. (Соответственно при нескольких апстримах про балансировку забудьте. Разве что если есть сессия в IX, но не факт что и рано или поздно оттуда придут префиксы, которые завалят Вашу куагу)

4. Пропатчить куагу патчем.

Edited by Keyptor

Share this post


Link to post
Share on other sites
2. Даунгрейд до версии quagga-0.98.6. (тут все понятно)

А что собсно понятно?

 

Share this post


Link to post
Share on other sites
1. Купить cisco/juniper в место тазика с куагой ($$$$$$$$).

хотелось бы спросить многоуважаемого и всепросвещённого товарища wawa, к тому что они когда то давно там в Яндексе приняли концепцию использовать только OpenSource решения,

в том числе чтобы не тратить много денег и не зависеть от злобных вендоров и их проприетарщины,

как вы кушаете такие ошибки?(*материтесь пятиэтажно в слух при всех?*) :)

проводите ли анализ кода который скачиваете бесплатно?

Share this post


Link to post
Share on other sites
Уважаемые коллеги,

 

в прошедшие выходные была обнаружена проблема с программным обеспечением Route Server (работающем под управлением Quagga daemon), связанная с некорректной обработкой новых ASN32.

Был выпущен патч, который был наложен на Route Serverа MSK-IX и проблема была устранена. Обращаем внимание участников MSK-IX, кто столкнулся с подобной ошибкой, на необходимость обновления ПО quagga с целью ее устранения.

 

Для дополнительной информации вы можете ознакомиться со списком рассылки

Quagga:

 

http://lists.quagga.net/pipermail/quagga-d...ril/006537.html

 

После обновления система ведет себя стабильно и проблем более не наблюдается.

Приносим извинения за доставленные неудобства, связанными с перебоями в работе услуги Route Server на MSK-IX.

 

---

С уважением.

Технический директор MSK-IX

Ильин Александр.

Share this post


Link to post
Share on other sites
1. Купить cisco/juniper в место тазика с куагой ($$$$$$$$).

хотелось бы спросить многоуважаемого и всепросвещённого товарища wawa, к тому что они когда то давно там в Яндексе приняли концепцию использовать только OpenSource решения,

в том числе чтобы не тратить много денег и не зависеть от злобных вендоров и их проприетарщины,

как вы кушаете такие ошибки?(*материтесь пятиэтажно в слух при всех?*) :)

проводите ли анализ кода который скачиваете бесплатно?

Я давно заметил, что неинформированные люди почему-то более склонны к агрессии.

Поэтому информирую (долой агрессию !):

 

Словили проблему 30 апреля утром.

Отлов и диагностика проблемы заняла минут пять

Выпуск горячего патча примерно столько же (чтоб не падало).

Еще через полчаса был выпущен более осмысленный (разобрались почему падало и исправили нетопорно).

 

Основую проблему составила переналивка большого парка маршрутизаторов. Как легко дагадаться задним умом тут полезно было соблюдать очередность

Так или иначе, к ночи 30 апреля почти все было готово (что-то по мелочи конечно недоглядели).

 

Вот планово перепуститься не успели. Факт. И закоммитить патчи по-нормальному тоже не успели. Чтобы меньше народу пострадало.

 

Тем не менее, когда бабахнуло по полной программе (в выходной день) неперепущенные Квагги попадали, но отжались уже пропатченным кодом.

 

А про Жунипер Вы у японцев спросите. Про Циску тут тоже многим есть что рассказать.

Впрочем, кто сказал что в Яндексе этих зверьков не водится ?

Edited by wawa

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this