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...