roysbike Опубликовано 13 июля, 2016 (изменено) Добрый день, коллеги. Может кто сталкивался с такой проблемой. Есть сервер с 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 Изменено 13 июля, 2016 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 13 июля, 2016 Да, зебра следит за маршрутами/интерфейсами ядра всегда, даже если это не требуется, хз как это отключить. Чтобы минимизировать импакт от этого дела - просто запускайте кваггу через renice -20 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 13 июля, 2016 (изменено) Да, зебра следит за маршрутами/интерфейсами ядра всегда, даже если это не требуется, хз как это отключить. Чтобы минимизировать импакт от этого дела - просто запускайте кваггу через renice -20 А маршрут он оне потеряет при этом? Самый прикол в том, что проблема только на одном брасе. Хотя конфиги одинаковые Изменено 13 июля, 2016 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
[anp/hsw] Опубликовано 13 июля, 2016 А маршрут он оне потеряет при этом? Если собирать с флагом "--enable-tcp-zebra" то ничего терять не должно (точнее стек ОС будет заботиться о том, чтобы сообщения между zebra и демонами протоколов не потерялись) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 13 июля, 2016 Мне не понятно, почему на таком же сервере все в порядке. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Hawk128 Опубликовано 14 июля, 2016 (изменено) Я сталкивался с подобным когда пытался сделать бордер и брас в одном. Зебра перебирает всю таблицу каждый раз при добавлении или удалении маршрута, в том числе и при подкл и откл пользовательских туннелей. М.б. похожая ситуация? Все линки и маршруты не изменяются на этом сервере? Изменено 14 июля, 2016 пользователем Hawk128 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 14 июля, 2016 (изменено) Я сталкивался с подобным когда пытался сделать бордер и брас в одном. Зебра перебирает всю таблицу каждый раз при добавлении или удалении маршрута, в том числе и при подкл и откл пользовательских туннелей. М.б. похожая ситуация? Все линки и маршруты не изменяются на этом сервере? Скорее всего похожа. Линки меняются, так как там 8к интерфейсов и эти два браса в одной сети. Кто раньше поднял ipoe сессию тот и держит ее, а второй только интерфейс поднял вот и прыгает. На втором брасе остановил accel-ppp и все ок стало. Изменено 14 июля, 2016 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalvas Опубликовано 14 июля, 2016 Были постоянные проблемы с квагой. И не только из сканом интерфейсов. Перешел на bird с импортом из ядра и без скана интерфейсов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 14 июля, 2016 Были постоянные проблемы с квагой. И не только из сканом интерфейсов. Перешел на bird с импортом из ядра и без скана интерфейсов. У вас BGP? Не работал с bird, можете показать ваш конфиг? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalvas Опубликовано 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; } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
catalist Опубликовано 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)? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
FATHER_FBI Опубликовано 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 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
catalist Опубликовано 15 июля, 2016 по вашему это эквивалент? show ip bgp neighbors 1.2.3.4 advertised-routes -- show route export <protocol_name> Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SABRE Опубликовано 18 июля, 2016 (изменено) по вашему это эквивалент? show ip bgp neighbors 1.2.3.4 advertised-routes -- show route export <protocol_name> А по вашему нет? Выдает ту-же самую информацию. Изменено 18 июля, 2016 пользователем SABRE Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
catalist Опубликовано 18 июля, 2016 (изменено) show route export <protocol_name> А где вы тут видите адрес нейбора? и еще вопрос, а как быть с коммандой: show ip bgp neighbors 1.2.3.4 received-routes ? Изменено 18 июля, 2016 пользователем catalist Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
SABRE Опубликовано 19 июля, 2016 А где вы тут видите адрес нейбора? all добавьте и получите всю информацию о префиксе. и еще вопрос, а как быть с коммандой: show ip bgp neighbors 1.2.3.4 received-routes show route protocol <NAME> (primary или filtered - по вкусу) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vitalvas Опубликовано 19 июля, 2016 А где вы тут видите адрес нейбора? в bird-e нет такого, как адрес нейбора там есть имена - protocol <proto> <name> с именами работать проще, уж поверьте. как я выше привел конфиг, и при этом все логично show route export up_ibgp show route protocol up_ibgp Документации для настраивать и рулить птицой в нете предостаточно. Если Вам не нравится bird - сразу бы сказали. Можете вбить квагу в отдельный namespace. Поможет до первых серйозных факапов. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 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 Понятно что нужно чинить сами сервера, но пока не вылезали грабли с маршрутами эти обрывы раз в месяц совершенно не напрягали. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 2 июля, 2018 Нашел в расылках похожие жалобы, добавил параметр --nl-bufsize netlink-buffer-size. Поглядим. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
adron2 Опубликовано 2 июля, 2018 24 минуты назад, kayot сказал: Нашел в расылках похожие жалобы, добавил параметр --nl-bufsize netlink-buffer-size. Поглядим. Да, очень похоже что вы правы. Банально не успевало из нетлинк сокета события выгребать до того, как их буфер переполнялся. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
IVB Опубликовано 21 августа, 2018 Есть другой вопрос по bgpd из quagga. Мне нужно, чтобы демон bgpd биндился только на определённые адреса (IPv6), а не на :::179. При старте bgpd параметрами можно задать только порт, но не адреса. В самОм конфиге для каждого соседа задан нужный update-source. Тем не менее - bgpd биндится на :::179. Можно ли как-то заставить bgpd не биндиться на :::179, а только на конкретные IP? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
YuryD Опубликовано 21 августа, 2018 4 часа назад, IVB сказал: Есть другой вопрос по bgpd из quagga. Мне нужно, чтобы демон bgpd биндился только на определённые адреса (IPv6), а не на :::179. При старте bgpd параметрами можно задать только порт, но не адреса. В самОм конфиге для каждого соседа задан нужный update-source. Тем не менее - bgpd биндится на :::179. Можно ли как-то заставить bgpd не биндиться на :::179, а только на конкретные IP? fIrewall Не поможет ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
IVB Опубликовано 22 августа, 2018 Не, файрвол не поможет. Т.к. на другие адреса должен биндиться bird. (вот такой я извращенец) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
[anp/hsw] Опубликовано 22 августа, 2018 2 часа назад, IVB сказал: Т.к. на другие адреса должен биндиться bird. Задайте quagga один порт, bird другой, и через DNAT перенаправьте 179 порты с нужных интерфейсов к ним. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
IVB Опубликовано 22 августа, 2018 2 hours ago, [anp/hsw] said: Задайте quagga один порт, bird другой, и через DNAT перенаправьте 179 порты с нужных интерфейсов к ним. В моём случае DNAT не нужен. quagga "общается" с соседями на стандартном порту. bird будет общаться только с нашей quagga, поэтому достаточно настроить bird на нестандартный порт, и в настройках соседа-bird на quagga указать этот же порт. Вот только не взлетает всё равно такая конструкция... (но только это уже отдельная тема, здесь продолжать нет смысла) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...