Jump to content

Recommended Posts

Posted

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

Posted

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

!

interface em0

!

interface em1

!

 

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

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

!

interface em0

!

interface em1

!

 

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

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

 

 

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

гдето так:

 

passive-interface default

interface XXX

interface YYY

 

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

 

Error occured during reading below line.
passive-interface default

 

 

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

2. каким именно протоколом пользуетесь?
BGP only
Posted (edited)
Имеется машина под Freebsd 7.1 с последней Quagg'ой (zebra bgp).

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

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

 

...

 

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

 

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

 

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

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

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

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

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

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

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

 

...

 

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

 

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

 

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

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

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

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

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

 

Posted

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

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.