roysbike Posted July 13, 2016 (edited) Добрый день, коллеги. Может кто сталкивался с такой проблемой. Есть сервер с accel-ppp , ipoe и ip unnumbered. Крутится quagga в качестве BGP внутри , для обмена между бордером и брасами. Таких два сервера , одинаковые по железу, только на одном карта X520 (82599) на другом i350. Проблемный x520. CPU zebra взлетает под 100% и load average до 3.00 . 8к маршрутов /32 CPU"Intel® Xeon® CPU E3-1240 v3 @ 3.40GHz" eth0 Инет eth1- Клиенты eth2- Клиенты zebra.conf ! ! Zebra configuration saved from vty ! 2014/10/13 14:48:44 ! hostname ipoe4-bgp password pass enable password pass ! interface eth0 ipv6 nd suppress-ra ! interface eth1 ipv6 nd suppress-ra ! interface eth2 ipv6 nd suppress-ra ! interface lo ! ! ! line vty ! bgpd.conf ! ! Zebra configuration saved from vty ! 2016/07/13 12:43:21 ! hostname IPoE4_BGP password pass enable password pass log file /var/log/quagga/bgpd.log log stdout ! router bgp 64704 bgp router-id 172.31.0.4 redistribute kernel redistribute connected neighbor 172.31.0.2 remote-as 64702 neighbor 172.31.0.3 remote-as 64703 neighbor 172.31.0.5 remote-as 64705 neighbor 172.31.0.6 remote-as 64706 neighbor 172.31.0.29 remote-as 64729 neighbor 172.31.0.30 remote-as 64700 ! line vty ! top top - 14:48:48 up 14:08, 1 user, load average: 2.38, 2.15, 2.00 Tasks: 251 total, 4 running, 247 sleeping, 0 stopped, 0 zombie %Cpu0 : 15.2 us, 6.9 sy, 0.0 ni, 77.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st %Cpu1 : 38.1 us, 3.7 sy, 0.0 ni, 56.5 id, 0.0 wa, 0.0 hi, 1.7 si, 0.0 st %Cpu2 : 22.5 us, 5.5 sy, 0.0 ni, 71.3 id, 0.0 wa, 0.0 hi, 0.7 si, 0.0 st %Cpu3 : 15.1 us, 4.7 sy, 0.0 ni, 78.9 id, 0.0 wa, 0.0 hi, 1.3 si, 0.0 st KiB Mem: 8133340 total, 2026184 used, 6107156 free, 99680 buffers KiB Swap: 8350716 total, 0 used, 8350716 free. 896360 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 25715 quagga 20 0 31436 8404 640 R 61.2 0.1 12:09.97 zebra 1 root 20 0 104620 73804 1448 R 31.9 0.9 195:34.28 init 5232 root 20 0 817196 26392 1928 S 3.3 0.3 22:45.99 accel-pppd 745 message+ 20 0 39224 1280 900 S 1.0 0.0 3:45.29 dbus-daemon 437 root 20 0 24060 5248 632 S 0.7 0.1 4:18.17 upstart-udev-br 7 root 20 0 0 0 0 S 0.3 0.0 1:33.76 rcu_sched Edited July 13, 2016 by roysbike Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
s.lobanov Posted July 13, 2016 Да, зебра следит за маршрутами/интерфейсами ядра всегда, даже если это не требуется, хз как это отключить. Чтобы минимизировать импакт от этого дела - просто запускайте кваггу через renice -20 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
roysbike Posted July 13, 2016 (edited) Да, зебра следит за маршрутами/интерфейсами ядра всегда, даже если это не требуется, хз как это отключить. Чтобы минимизировать импакт от этого дела - просто запускайте кваггу через renice -20 А маршрут он оне потеряет при этом? Самый прикол в том, что проблема только на одном брасе. Хотя конфиги одинаковые Edited July 13, 2016 by roysbike Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
[anp/hsw] Posted July 13, 2016 А маршрут он оне потеряет при этом? Если собирать с флагом "--enable-tcp-zebra" то ничего терять не должно (точнее стек ОС будет заботиться о том, чтобы сообщения между zebra и демонами протоколов не потерялись) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
roysbike Posted July 13, 2016 Мне не понятно, почему на таком же сервере все в порядке. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Hawk128 Posted July 14, 2016 (edited) Я сталкивался с подобным когда пытался сделать бордер и брас в одном. Зебра перебирает всю таблицу каждый раз при добавлении или удалении маршрута, в том числе и при подкл и откл пользовательских туннелей. М.б. похожая ситуация? Все линки и маршруты не изменяются на этом сервере? Edited July 14, 2016 by Hawk128 Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
roysbike Posted July 14, 2016 (edited) Я сталкивался с подобным когда пытался сделать бордер и брас в одном. Зебра перебирает всю таблицу каждый раз при добавлении или удалении маршрута, в том числе и при подкл и откл пользовательских туннелей. М.б. похожая ситуация? Все линки и маршруты не изменяются на этом сервере? Скорее всего похожа. Линки меняются, так как там 8к интерфейсов и эти два браса в одной сети. Кто раньше поднял ipoe сессию тот и держит ее, а второй только интерфейс поднял вот и прыгает. На втором брасе остановил accel-ppp и все ок стало. Edited July 14, 2016 by roysbike Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vitalvas Posted July 14, 2016 Были постоянные проблемы с квагой. И не только из сканом интерфейсов. Перешел на bird с импортом из ядра и без скана интерфейсов. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
roysbike Posted July 14, 2016 Были постоянные проблемы с квагой. И не только из сканом интерфейсов. Перешел на bird с импортом из ядра и без скана интерфейсов. У вас BGP? Не работал с bird, можете показать ваш конфиг? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vitalvas Posted July 14, 2016 У вас BGP? Не работал с bird, можете показать ваш конфиг? Только bgp. Конфиг довольно простой и хорошо структурированный. Доки из офф сайта хватает, чтоб сделать все что нужно. Импорт из ядра "protocol kernel". Пример работы bgp. filter as_route_export { if net ~ [ x.x.x.0/22+, 100.64.0.0/16{16,19} ] then { accept; } else reject; } filter as_route_import { if net ~ [ 0.0.0.0/0 ] then { accept; } else reject; } protocol bgp up_ibgp { local as 65001; description "juniper xe-0/0/2.10"; neighbor x.x.x.1 as 65001; source address x.x.x.2; next hop self; export filter as_route_export; import filter as_route_import; } Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
catalist Posted July 14, 2016 У вас BGP? Не работал с bird, можете показать ваш конфиг? Только bgp. Конфиг довольно простой и хорошо структурированный. Доки из офф сайта хватает, чтоб сделать все что нужно. Импорт из ядра "protocol kernel". Пример работы bgp. filter as_route_export { if net ~ [ x.x.x.0/22+, 100.64.0.0/16{16,19} ] then { accept; } else reject; } filter as_route_import { if net ~ [ 0.0.0.0/0 ] then { accept; } else reject; } protocol bgp up_ibgp { local as 65001; description "juniper xe-0/0/2.10"; neighbor x.x.x.1 as 65001; source address x.x.x.2; next hop self; export filter as_route_export; import filter as_route_import; } Скажите пожалуйста а как вы в бирде смотрите маршруты получаемые по bgp от соседей? (аналог команды цыски show ip bgp neighbors 1.1.1.1 received-routes)? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
FATHER_FBI Posted July 15, 2016 Скажите пожалуйста а как вы в бирде смотрите маршруты получаемые по bgp от соседей? (аналог команды цыски show ip bgp neighbors 1.1.1.1 received-routes)? Some common Cisco commands translated to BIRD commands: show ip route -- show route [table XXX] show ip route bgp -- show route [table XXX] protocol <protocol_name> (show route proto ospf2 ) show ip route 1.2.0.0 longer- -- show route where net ~ 1.2.0.0/16 show ip bgp 1.2.0.0 -- show route where net ~ 1.2.0.0/16 all show ip bgp sum -- show protocols show ip bgp neighbors 1.2.3.4 -- show protocols all <protocol_name> (show protocols all ospf2) show ip bgp neighbors 1.2.3.4 advertised-routes -- show route export <protocol_name> clear ip bgp 1.2.3.4 -- reload <protocol_name> [in/out] show ip route summary -- show route [table XXX] count Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
catalist Posted July 15, 2016 по вашему это эквивалент? show ip bgp neighbors 1.2.3.4 advertised-routes -- show route export <protocol_name> Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
SABRE Posted July 18, 2016 (edited) по вашему это эквивалент? show ip bgp neighbors 1.2.3.4 advertised-routes -- show route export <protocol_name> А по вашему нет? Выдает ту-же самую информацию. Edited July 18, 2016 by SABRE Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
catalist Posted July 18, 2016 (edited) show route export <protocol_name> А где вы тут видите адрес нейбора? и еще вопрос, а как быть с коммандой: show ip bgp neighbors 1.2.3.4 received-routes ? Edited July 18, 2016 by catalist Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
SABRE Posted July 19, 2016 А где вы тут видите адрес нейбора? all добавьте и получите всю информацию о префиксе. и еще вопрос, а как быть с коммандой: show ip bgp neighbors 1.2.3.4 received-routes show route protocol <NAME> (primary или filtered - по вкусу) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vitalvas Posted July 19, 2016 А где вы тут видите адрес нейбора? в bird-e нет такого, как адрес нейбора там есть имена - protocol <proto> <name> с именами работать проще, уж поверьте. как я выше привел конфиг, и при этом все логично show route export up_ibgp show route protocol up_ibgp Документации для настраивать и рулить птицой в нете предостаточно. Если Вам не нравится bird - сразу бы сказали. Можете вбить квагу в отдельный namespace. Поможет до первых серйозных факапов. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kayot Posted July 2, 2018 Подниму тему. Есть 2 PPPoE сервера, современное железо и очень древний софт. В случайное время, примерно раз в месяц они ребутятся без видимых причин и каких-либо логов, ядро вероятно дырявое(2.6.31). Между серверами и бордером поднята маршрутизация на RIP2. Так вот, после очередного ребута на соседний сервер практически мгновенно переподключается до 2к клиентов и zebra в этот момент теряет часть маршрутов. Точнее перестает видеть часть PPP-интерфейсов. Т.е. подключилось 2000, а маршрутов на бордер улетело 1800. И эта ситуация остается замороженной, помогает или переподключение сессии клиента, или банальный рестарт зебры. cat /proc/net/pppoe говорит что сессий 1000, ip route show показывает 1000 маршрутов, а show route summary в консоли зебры говорит что маршрутов 900, и на бордер улетают эти 900. Пока было по ~1000 онлайн-сессий на сервер проблема не вылезала, сейчас их стало 1.5-2к - вылезает на каждом сервере и при каждом ребуте. Кваггу обновил с дистрибутивной 0.99.17 до 0.99.24.1 которая без нареканий работает на моих IPOE-серверах, ничего не изменилось. Обновлять кваггу дальше, сейчас уже вроде 1.2 актуальная версия или может крутилку какую-то не заметил в конфиге? hostname nas4.xxx password xxx enable password xxx service password-encryption ! log file /var/log/quagga/zebra.log ! interface bond0.2 multicast ! line vty exec-timeout 30 0 Понятно что нужно чинить сами сервера, но пока не вылезали грабли с маршрутами эти обрывы раз в месяц совершенно не напрягали. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
kayot Posted July 2, 2018 Нашел в расылках похожие жалобы, добавил параметр --nl-bufsize netlink-buffer-size. Поглядим. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
adron2 Posted July 2, 2018 24 минуты назад, kayot сказал: Нашел в расылках похожие жалобы, добавил параметр --nl-bufsize netlink-buffer-size. Поглядим. Да, очень похоже что вы правы. Банально не успевало из нетлинк сокета события выгребать до того, как их буфер переполнялся. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
IVB Posted August 21, 2018 Есть другой вопрос по bgpd из quagga. Мне нужно, чтобы демон bgpd биндился только на определённые адреса (IPv6), а не на :::179. При старте bgpd параметрами можно задать только порт, но не адреса. В самОм конфиге для каждого соседа задан нужный update-source. Тем не менее - bgpd биндится на :::179. Можно ли как-то заставить bgpd не биндиться на :::179, а только на конкретные IP? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
YuryD Posted August 21, 2018 4 часа назад, IVB сказал: Есть другой вопрос по bgpd из quagga. Мне нужно, чтобы демон bgpd биндился только на определённые адреса (IPv6), а не на :::179. При старте bgpd параметрами можно задать только порт, но не адреса. В самОм конфиге для каждого соседа задан нужный update-source. Тем не менее - bgpd биндится на :::179. Можно ли как-то заставить bgpd не биндиться на :::179, а только на конкретные IP? fIrewall Не поможет ? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
IVB Posted August 22, 2018 Не, файрвол не поможет. Т.к. на другие адреса должен биндиться bird. (вот такой я извращенец) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
[anp/hsw] Posted August 22, 2018 2 часа назад, IVB сказал: Т.к. на другие адреса должен биндиться bird. Задайте quagga один порт, bird другой, и через DNAT перенаправьте 179 порты с нужных интерфейсов к ним. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
IVB Posted August 22, 2018 2 hours ago, [anp/hsw] said: Задайте quagga один порт, bird другой, и через DNAT перенаправьте 179 порты с нужных интерфейсов к ним. В моём случае DNAT не нужен. quagga "общается" с соседями на стандартном порту. bird будет общаться только с нашей quagga, поэтому достаточно настроить bird на нестандартный порт, и в настройках соседа-bird на quagga указать этот же порт. Вот только не взлетает всё равно такая конструкция... (но только это уже отдельная тема, здесь продолжать нет смысла) Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...