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

Добрый день, коллеги. Может кто сталкивался с такой проблемой. Есть сервер с 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                            

post-88211-037200300 1468411494_thumb.png

Изменено пользователем roysbike

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


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

Да, зебра следит за маршрутами/интерфейсами ядра всегда, даже если это не требуется, хз как это отключить. Чтобы минимизировать импакт от этого дела - просто запускайте кваггу через renice -20

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


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

Да, зебра следит за маршрутами/интерфейсами ядра всегда, даже если это не требуется, хз как это отключить. Чтобы минимизировать импакт от этого дела - просто запускайте кваггу через renice -20

А маршрут он оне потеряет при этом? Самый прикол в том, что проблема только на одном брасе. Хотя конфиги одинаковые

Изменено пользователем roysbike

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


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

А маршрут он оне потеряет при этом?

Если собирать с флагом "--enable-tcp-zebra" то ничего терять не должно (точнее стек ОС будет заботиться о том, чтобы сообщения между zebra и демонами протоколов не потерялись)

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


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

Мне не понятно, почему на таком же сервере все в порядке.

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


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

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

Зебра перебирает всю таблицу каждый раз при добавлении или удалении маршрута, в том числе и при подкл и откл пользовательских туннелей.

М.б. похожая ситуация? Все линки и маршруты не изменяются на этом сервере?

Изменено пользователем Hawk128

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


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

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

Зебра перебирает всю таблицу каждый раз при добавлении или удалении маршрута, в том числе и при подкл и откл пользовательских туннелей.

М.б. похожая ситуация? Все линки и маршруты не изменяются на этом сервере?

Скорее всего похожа. Линки меняются, так как там 8к интерфейсов и эти два браса в одной сети. Кто раньше поднял ipoe сессию тот и держит ее, а второй только интерфейс поднял вот и прыгает. На втором брасе остановил accel-ppp и все ок стало.

Изменено пользователем roysbike

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


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

Были постоянные проблемы с квагой. И не только из сканом интерфейсов.

Перешел на bird с импортом из ядра и без скана интерфейсов.

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


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

Были постоянные проблемы с квагой. И не только из сканом интерфейсов.

Перешел на bird с импортом из ядра и без скана интерфейсов.

У вас BGP? Не работал с bird, можете показать ваш конфиг?

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


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

У вас 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? Не работал с 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)?

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


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

Скажите пожалуйста а как вы в бирде смотрите маршруты получаемые по 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

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


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

по вашему это эквивалент?

show ip bgp neighbors 1.2.3.4 advertised-routes -- show route export <protocol_name>

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


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

по вашему это эквивалент?

show ip bgp neighbors 1.2.3.4 advertised-routes -- show route export <protocol_name>

А по вашему нет? Выдает ту-же самую информацию.

Изменено пользователем SABRE

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


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

show route export <protocol_name>

А где вы тут видите адрес нейбора?

 

и еще вопрос, а как быть с коммандой:

show ip bgp neighbors 1.2.3.4 received-routes

?

Изменено пользователем catalist

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


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

А где вы тут видите адрес нейбора?

all добавьте и получите всю информацию о префиксе.

 

 

и еще вопрос, а как быть с коммандой:

show ip bgp neighbors 1.2.3.4 received-routes

 

show route protocol <NAME> (primary или filtered - по вкусу)

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


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

А где вы тут видите адрес нейбора?

в bird-e нет такого, как адрес нейбора

там есть имена - protocol <proto> <name>

с именами работать проще, уж поверьте.

 

как я выше привел конфиг, и при этом все логично

show route export up_ibgp

show route protocol up_ibgp

 

Документации для настраивать и рулить птицой в нете предостаточно.

Если Вам не нравится bird - сразу бы сказали.

Можете вбить квагу в отдельный namespace. Поможет до первых серйозных факапов.

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


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

Подниму тему. 

Есть 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

 

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

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


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

Нашел в расылках похожие жалобы, добавил  параметр --nl-bufsize netlink-buffer-size.

Поглядим.

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


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

24 минуты назад, kayot сказал:

Нашел в расылках похожие жалобы, добавил  параметр --nl-bufsize netlink-buffer-size.

Поглядим.

Да, очень похоже что вы правы. Банально не успевало из нетлинк сокета события выгребать до того, как их буфер переполнялся.

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


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

Есть другой вопрос по bgpd из quagga.

 

Мне нужно, чтобы демон bgpd биндился только на определённые адреса (IPv6), а не на :::179.

При старте bgpd параметрами можно задать только порт, но не адреса.

В самОм конфиге для каждого соседа задан нужный update-source.

Тем не менее - bgpd биндится на :::179.

 

Можно ли как-то заставить bgpd не биндиться на :::179, а только на конкретные IP?

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


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

4 часа назад, IVB сказал:

Есть другой вопрос по bgpd из quagga.

 

Мне нужно, чтобы демон bgpd биндился только на определённые адреса (IPv6), а не на :::179.

При старте bgpd параметрами можно задать только порт, но не адреса.

В самОм конфиге для каждого соседа задан нужный update-source.

Тем не менее - bgpd биндится на :::179.

 

Можно ли как-то заставить bgpd не биндиться на :::179, а только на конкретные IP?

fIrewall  Не поможет ?

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


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

Не, файрвол не поможет.

Т.к. на другие адреса должен биндиться bird.

(вот такой я извращенец)

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


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

2 часа назад, IVB сказал:

Т.к. на другие адреса должен биндиться bird.

Задайте quagga один порт, bird другой, и через DNAT перенаправьте 179 порты с нужных интерфейсов к ним.

 

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


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

2 hours ago, [anp/hsw] said:

Задайте quagga один порт, bird другой, и через DNAT перенаправьте 179 порты с нужных интерфейсов к ним.

 

В моём случае DNAT не нужен.

quagga "общается" с соседями на стандартном порту.

bird будет общаться только с нашей quagga, поэтому достаточно настроить bird на нестандартный порт, и в настройках соседа-bird на quagga указать этот же порт.

 

Вот только не взлетает всё равно такая конструкция...

(но только это уже отдельная тема, здесь продолжать нет смысла)

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


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

Join the conversation

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

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

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

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

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

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

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