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

Вопрос по 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. Я отдаю себе отчёт, что держать роутинг на сервере доступа нехорошо, но пока что завести отдельную машину под роутер не представляеться возможным.

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


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

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

!

interface em0

!

interface em1

!

 

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

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


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

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

гдето так:

 

passive-interface default

interface XXX

interface YYY

 

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


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

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

!

interface em0

!

interface em1

!

 

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

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

 

 

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

гдето так:

 

passive-interface default

interface XXX

interface YYY

 

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

 

Error occured during reading below line.
passive-interface default

 

 

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


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

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

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

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


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

1. покажите конфиг
interface int0
!
interface int1
!
interface rtr0
!
interface rtr1
!
interface lo0
!
ip forwarding
ipv6 forwarding

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

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


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

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

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

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

 

...

 

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

 

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

 

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

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

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

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

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

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


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

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

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

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

 

...

 

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

 

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

 

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

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

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

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

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

 

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


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

Версия косвенно указана через дату поста и версию фряхи, далее freshports.org/net/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 смайлов.

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

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

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