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

Вопрос по Quagga/Zebra Как отучить Зебру реагировать на поднятие / опускание определённых инт

Имеется машина под Freebsd 7.1 с последней Quagg'ой (zebra bgp).

mpd создает 1000 интерфейсов ngxxx и (предположительно) при поднятии/опускании каждого из них Zebra активно грузит процессор на протяжении 5-10 секунд (system 60%-80%). Поскольку события подключения происходят довольно часто (до нескольких раз в минуту) то в результате получаем весьма некислую нагрузку на машину.

Убивание процесса zebra проблему перегрузки, естественно, снимает.

 

Лог:

 

19:03:34 ZEBRA: Kernel: Len: 236 Type: RTM_ADD
19:03:34 ZEBRA: Kernel: UP HOST DONE LLINFO WASCLONED
19:03:34 ZEBRA: Kernel: message seq 0
19:03:34 ZEBRA: Kernel: pid 0, rtm_addrs 0x33
19:03:34 ZEBRA: rtm_read_mesg: RTA_SDL_GET nlen 4, alen 6
19:03:34 ZEBRA: rtm_read: got rtm of type 1 (RTM_ADD)
19:03:34 ZEBRA: Kernel: Len: 96 Type: RTM_IFINFO
19:03:34 ZEBRA: Kernel: DYNAMIC STATIC PROTO1
19:03:34 ZEBRA: Kernel: message seq 1342177280
19:03:34 ZEBRA: Kernel: pid 53, rtm_addrs 0x13a
19:03:34 ZEBRA: ifm_read: sdl ifname (nil)
19:03:34 ZEBRA: ifm_read: interface ng305 index 314
19:03:34 ZEBRA: Kernel: Len: 96 Type: RTM_IFINFO
19:03:34 ZEBRA: Kernel: DYNAMIC STATIC PROTO1
19:03:34 ZEBRA: Kernel: message seq 1342177280
19:03:34 ZEBRA: Kernel: pid 53, rtm_addrs 0x13a
19:03:34 ZEBRA: ifm_read: sdl ifname (nil)
19:03:34 ZEBRA: ifm_read: interface ng305 index 314
19:03:34 ZEBRA: Kernel: Len: 96 Type: RTM_IFINFO
19:03:34 ZEBRA: Kernel: UP DYNAMIC STATIC PROTO1
19:03:34 ZEBRA: Kernel: message seq 1342177280
19:03:34 ZEBRA: Kernel: pid 53, rtm_addrs 0x13a
19:03:34 ZEBRA: ifm_read: sdl ifname (nil)
19:03:34 ZEBRA: MESSAGE: ZEBRA_INTERFACE_UP ng305
19:03:34 ZEBRA: MESSAGE: ZEBRA_INTERFACE_UP ng305
19:03:34 ZEBRA: ifm_read: interface ng305 index 314
19:03:34 ZEBRA: Kernel: Len: 116 Type: RTM_NEWADDR
19:03:34 ZEBRA: Kernel:
19:03:34 ZEBRA: Kernel: message seq 520
19:03:34 ZEBRA: Kernel: pid 0, rtm_addrs 0x13a
19:03:34 ZEBRA: ifam_read_mesg: RTA_SDL_GET nlen 5, alen 0
19:03:34 ZEBRA: ifam_read_mesg: ifindex 314, ifname ng305, ifam_addrs 0xb4, ifam_flags 0x0, addr xx.xx.xx.1/32 broad 10.80.129.1 dst 0.0.0.0 gateway 0.0.0.0
19:03:34 ZEBRA: MESSAGE: ZEBRA_INTERFACE_ADDRESS_ADD xx.xx.xx.1/32 on ng305
19:03:34 ZEBRA: Kernel: Len: 124 Type: RTM_ADD
19:03:34 ZEBRA: Kernel: UP HOST
19:03:34 ZEBRA: Kernel: message seq 0
19:03:34 ZEBRA: Kernel: pid 0, rtm_addrs 0x3
19:03:34 ZEBRA: Kernel: Len: 88 Type: RTM_NEWMADDR
19:03:34 ZEBRA: Kernel:
19:03:34 ZEBRA: Kernel: message seq 1333
19:03:34 ZEBRA: Kernel: pid 20582968, rtm_addrs 0x13a
19:03:34 ZEBRA: Unprocessed RTM_type: 15
19:03:34 ZEBRA: Kernel: Len: 236 Type: RTM_ADD
19:03:34 ZEBRA: Kernel: UP HOST DONE LLINFO WASCLONED

 

ZEBRA: ifm_read: interface ng305 index 314
ZEBRA: Kernel: Len: 124 Type: RTM_DELETE
ZEBRA: Kernel: HOST
ZEBRA: Kernel: message seq 0
ZEBRA: Kernel: pid 0, rtm_addrs 0x3
ZEBRA: Kernel: Len: 116 Type: RTM_DELADDR
ZEBRA: Kernel: UP
ZEBRA: Kernel: message seq 520
ZEBRA: Kernel: pid 0, rtm_addrs 0x13a
ZEBRA: ifam_read_mesg: RTA_SDL_GET nlen 5, alen 0
ZEBRA: ifam_read_mesg: ifindex 314, ifname ng305, ifam_addrs 0xb4, ifam_flag 0x1, addr xx.xx.xx.1/32 broad 10.175.101.11 dst 0.0.0.0 gateway 0.0.0.0
ZEBRA: MESSAGE: ZEBRA_INTERFACE_ADDRESS_DELETE xx.xx.xx.1/32 on ng305
ZEBRA: MESSAGE: ZEBRA_INTERFACE_DOWN ng305
ZEBRA: Kernel: Len: 96 Type: RTM_IFINFO
ZEBRA: Kernel: DYNAMIC DONE STATIC PROTO1
ZEBRA: Kernel: message seq 1342177280
ZEBRA: Kernel: pid 53, rtm_addrs 0x13a
ZEBRA: ifm_read: sdl ifname (nil)
ZEBRA: ifm_read: interface ng305 index 314
ZEBRA: Kernel: Len: 96 Type: RTM_IFINFO
ZEBRA: Kernel: DYNAMIC STATIC PROTO1
ZEBRA: Kernel: message seq 1342177280
ZEBRA: Kernel: pid 53, rtm_addrs 0x13a
ZEBRA: ifm_read: sdl ifname (nil)
ZEBRA: ifm_read: interface ng305 index 314
ZEBRA: Kernel: Len: 236 Type: RTM_ADD
ZEBRA: Kernel: UP HOST DONE LLINFO WASCLONED

 

Конфиг зебры классически пустой.

 

Вопрос: Как отучить Зебру следить за ng интерфейсами?

 

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

Share this post


Link to post
Share on other sites

А если попробовать указать в zebra.conf только те интерфейсы, которые зебра явно должна слушать?

!

interface em0

!

interface em1

!

 

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

Share this post


Link to post
Share on other sites

ну, немного не совсем так.

гдето так:

 

passive-interface default

interface XXX

interface YYY

 

Share this post


Link to post
Share on other sites
А если попробовать указать в zebra.conf только те интерфейсы, которые зебра явно должна слушать?

!

interface em0

!

interface em1

!

 

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

Так и указано, однако Зебра слушает то что ей хочеться а не то что просят :(

 

 

ну, немного не совсем так.

гдето так:

 

passive-interface default

interface XXX

interface YYY

 

На такую команду обиделась:

 

Error occured during reading below line.
passive-interface default

 

 

Share this post


Link to post
Share on other sites
Конфиг зебры классически пустой.
1. покажите конфиг

2. каким именно протоколом пользуетесь?

Share this post


Link to post
Share on other sites
1. покажите конфиг
interface int0
!
interface int1
!
interface rtr0
!
interface rtr1
!
interface lo0
!
ip forwarding
ipv6 forwarding

2. каким именно протоколом пользуетесь?
BGP only

Share this post


Link to post
Share on other sites
Имеется машина под Freebsd 7.1 с последней Quagg'ой (zebra bgp).

mpd создает 1000 интерфейсов ngxxx и (предположительно) при поднятии/опускании каждого из них Zebra активно грузит процессор на протяжении 5-10 секунд (system 60%-80%). Поскольку события подключения происходят довольно часто (до нескольких раз в минуту) то в результате получаем весьма некислую нагрузку на машину.

Убивание процесса zebra проблему перегрузки, естественно, снимает.

 

...

 

Конфиг зебры классически пустой.

 

Вопрос: Как отучить Зебру следить за ng интерфейсами?

 

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

В этой версии зебры есть топорная затычка на предмет вечной болячки Зебры -рекурсии - ВСЯ база маршрутов тупо перелопачивается по изменению статуса ЛЮБОГО интерфейса

Для исправления ситуации Вам будет достаточно (рекурсии ведь нет ?) вырезать тело из функции, дай Бог памяти, rib_update (она легко находится - там простой цикл)

и пересобрать Зебру

Edited by wawa

Share this post


Link to post
Share on other sites
Имеется машина под Freebsd 7.1 с последней Quagg'ой (zebra bgp).

mpd создает 1000 интерфейсов ngxxx и (предположительно) при поднятии/опускании каждого из них Zebra активно грузит процессор на протяжении 5-10 секунд (system 60%-80%). Поскольку события подключения происходят довольно часто (до нескольких раз в минуту) то в результате получаем весьма некислую нагрузку на машину.

Убивание процесса zebra проблему перегрузки, естественно, снимает.

 

...

 

Конфиг зебры классически пустой.

 

Вопрос: Как отучить Зебру следить за ng интерфейсами?

 

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

В этой версии зебры есть топорная затычка на предмет вечной болячки Зебры -рекурсии - ВСЯ база маршрутов тупо перелопачивается по изменению статуса ЛЮБОГО интерфейса

Для исправления ситуации Вам будет достаточно (рекурсии ведь нет ?) вырезать тело из функции, дай Бог памяти, rib_update (она легко находится - там простой цикл)

и пересобрать Зебру

чесно говоря не нашёл тут номера версии, значит ли это что данное утверждение годится для всех версий quagga?

 

Share this post


Link to post
Share on other sites

Версия косвенно указана через дату поста и версию фряхи, далее freshports.org/net/quagga и смотрим по дате корректировки порта. Версия, что ближайшая перед датой исходного поста - есть искомая.

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