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

Kernel trap на FreeBSD 8.2 с большим количеством MAC+VLANs

Имеется роутер с FreeBSD 8.2-p4, сетевые "em", трафик <200 mbps, клиентов <1000.

 

Если трафик к клиентам маршрутизируется через внутренний layer3, роутер работает стабильно месяцами.

 

Если клиентские vlan'ы (<100) дотянуты до роутера и роутер шлёт в них трафик напрямую,

то каждые несколько дней роутер виснет намертво (см.картинку).

 

Вопрос 1: кто-нибудь с этим сталкивался?

Гугл нашёл очень похожее описание - http://forum.pfsense.org/index.php?topic=40769.0

но там дискуссия ведётся с сентября и закончилась ничем в январе.

 

Вопрос 2: что в этой ситуации лучше/хуже - откат на 7.4, обновление до 8-STABLE, обновление до 9-RC?

 

На других роутерах такой проблемы нет, но там либо другие сетевые (не Интел),

либо существенно меньше нагрузка, либо более старая версия FreeBSD.

freebsd82-kerntrap.JPG

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


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

Вопрос 2: что в этой ситуации лучше/хуже - откат на 7.4, обновление до 8-STABLE, обновление до 9-RC?

Обновить до 9-RELEASE.

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


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

Вопрос 2: что в этой ситуации лучше/хуже - откат на 7.4, обновление до 8-STABLE, обновление до 9-RC?

Обновить до 9-RELEASE.

стандартная фраза техподдержки дибилинк, которая не даст полной уверенности.

надо лечить причину а не следствие

 

автор, научитесь пользоваться ddb, kgdb. навыки ещё пригодятся.

я так понял PPTP у вас? arp нужен.

на вскидку напомню - flowtable?

я бы смотрел чего в 8-м фрейме - arpintr с дампом памяти.

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


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

Ещё можно попробовать воспользоваться netgraph для работы с валанами.

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


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

посмотрел сейчас исходник. без дампа памяти - гадание на кофейно гуще.

говорите виснет раз в несколько дней - значит можно воспроизвести проблему.

поэтому сохраните дамп памяти, выложите куда-нибудь, вместе с бинарником ядра.

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

 

 

netisr есть возможность выключить? (это конечно не решение проблемы, а воркарауд)

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


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

Вопрос 2: что в этой ситуации лучше/хуже - откат на 7.4, обновление до 8-STABLE, обновление до 9-RC?

Обновить до 9-RELEASE.

стандартная фраза техподдержки дибилинк, которая не даст полной уверенности.

надо лечить причину а не следствие

ТС вообще хотел обновляться до 9-RC :)

 

пусть выложит во время работы vmmstat -z

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


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

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

Для начала обновится, потом, если не пройдёт лечится.

Там же много всего в коде исправляли.

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


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

А если хуже станет - как откатывать назад? :)

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


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

А если хуже станет - как откатывать назад? :)

http://www.freebsd.org/doc/ru/books/handbook/kernelconfig-trouble.html

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


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

Там ровно ничего нет про откат системы назад, есть только как починить нерабочее новое ядро. А ведь новом ядре и системе могут всплыть еще более крутые глюки, и возможность отката должна быть.

 

И ржачные моменты про:

Если вы установили версию ядра отличную от той, с которой были собраны ваши системные утилиты, например, ядро от -CURRENT на системе -RELEASE, большая часть системных команд, таких как ps(1) и vmstat(8) не будут больше работать. Вам потребуется перекомпилировать и установить систему той же версии исходных текстов, что и ядро. Это одна из причин, по которой не следует использовать версию ядра, отличную от версии всей остальной системы.

Вообще, архаизм.

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


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

Там ровно ничего нет про откат системы назад, есть только как починить нерабочее новое ядро. А ведь новом ядре и системе могут всплыть еще более крутые глюки, и возможность отката должна быть.

Качаешь с фтп нужный тебе генерик, распаковываешь в /boot/kernel, ребутишься со старым новым ядром. Какие проблемы?

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


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

Качаешь с фтп нужный тебе генерик, распаковываешь в /boot/kernel, ребутишься со старым новым ядром. Какие проблемы?

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

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


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

А как быть с обновленным юзерспейсом? Как его откатить назад?

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


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

А как быть с обновленным юзерспейсом? Как его откатить назад?

 

Точно так же. Причем не факт что у вас будет не работать что-либо кроме ps/vmstat (что работает со структурами ядра). В плане обновления в пределах major-ветки проблем обычно минимум.

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


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

А как быть с обновленным юзерспейсом? Как его откатить назад?

 

freebsd-update имеет ключ -r

http://www.freebsd.org/doc/handbook/updating-upgrading-freebsdupdate.html

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


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

А как быть с обновленным юзерспейсом? Как его откатить назад?

Каким образом связаны поддержка вланов в ядре и обновленный юзерспейс? Идите буратиньте в другом месте, гражданин ;)

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


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

В том, что топикстартеру посоветовали накатить новую систему, чтоб избавиться от бага, это значит обновить _всё_, и возможно наловить новых глюков.

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


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

автор, научитесь пользоваться ddb, kgdb. навыки ещё пригодятся.

Уважаемый, я умею ими пользоваться, но чтобы ловить проблему, необходимо одно из трёх:

1) watchdog, который перезапустит повисший сервер,

2) "специально подготовленный сержант", который нажмёт ресет,

3) готовность к даунтайму не менее получаса днём и х.з. сколько ночью.

 

Встроенного ватчдога там нет, внешнего тоже (пока?) нет, остальное неприемлемо.

 

я так понял PPTP у вас?

Нет. Причём здесь PPTP? Ему не был бы нужен прямой доступ в клиентские vlan'ы.

 

на вскидку напомню - flowtable?

Ок, попробую выключить, но вряд ли дело в нём.

На других серверах с ядром 8.2 (конфиг ядра и системы одинаковые) и похожей нагрузкой ничего не виснет.

Главное отличие - вместо Интелов на них используются встроенные Броадкомы.

 

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

Получит ли DDB управление, если даже kdb_backtrace виснет раньше, чем успевает распечатать полный листинг и отправить сервер в ребут?

 

netisr есть возможность выключить? (это конечно не решение проблемы, а воркарауд)

Что значит выключить?

Его можно вызывать либо из обработчика прерывания от сетевой карты, либо в отдельном потоке(потоках).

У меня используется первый вариант:

# sysctl net.isr
net.isr.numthreads: 1
net.isr.defaultqlimit: 256
net.isr.maxqlimit: 10240
net.isr.bindthreads: 0
net.isr.maxthreads: 1
net.isr.direct: 1
net.isr.direct_force: 1

/boot/loader.conf

ichwd_load="YES"
netgraph_load="YES"
dummynet_load="YES"
ng_ipfw_load="YES"
ng_netflow_load="YES"

kern.coredump=0
kern.hz=4000

# Intel network cards
hw.em.rxd=4096
hw.em.txd=4096
hw.em.enable_msi=1
hw.em.rx_int_delay=600
hw.em.tx_int_delay=600
hw.em.rx_abs_int_delay=1000
hw.em.tx_abs_int_delay=1000

/etc/sysctl.conf

kern.ipc.somaxconn=512

net.inet.ip.fw.verbose=1

net.link.ether.inet.log_arp_wrong_iface=0

net.inet.ip.dummynet.io_fast=1
net.inet.ip.dummynet.expire=0
net.inet.ip.fastforwarding=0
net.inet.ip.redirect=0

net.inet.ip.fw.dyn_buckets=2048         # default=256
net.inet.ip.dummynet.hash_size=512      # default=64

# Drop SYN without RST on closed ports
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1

# Igor Sysoev settings for Intel network cards:
# http://dadv.livejournal.com/49013.html

dev.em.0.rx_int_delay=600
dev.em.0.tx_int_delay=600
dev.em.0.rx_abs_int_delay=1000
dev.em.0.tx_abs_int_delay=1000
dev.em.0.rx_processing_limit=1024

dev.em.1.rx_int_delay=600
dev.em.1.tx_int_delay=600
dev.em.1.rx_abs_int_delay=1000
dev.em.1.tx_abs_int_delay=1000
dev.em.1.rx_processing_limit=1024

 

В том, что топикстартеру посоветовали накатить новую систему, чтоб избавиться от бага, это значит обновить _всё_, и возможно наловить новых глюков.

Понимаю Ваш сарказьм, коллега, но в данном случае переезд на Линукс рискует принести ещё больше головняка :)

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


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

 

Если клиентские vlan'ы (<100) дотянуты до роутера и роутер шлёт в них трафик напрямую,

то каждые несколько дней роутер виснет намертво (см.картинку).

 

Вопрос 2: что в этой ситуации лучше/хуже - откат на 7.4, обновление до 8-STABLE, обновление до 9-RC?

 

Попробуйте поставить http://people.freebsd.org/~avg/stop_scheduler_on_panic.8.x.diff

Если usb-клавиатура то и http://people.freebsd.org/~avg/stop_scheduler_on_panic.usb.diff и попробуйте снять дамп. http://www.freebsd.org/doc/en/books/developers-handbook/kerneldebug.html#KERNELDEBUG-OBTAIN

Если дамп снимется, тогда будет что обсуждать.

 

В 9-Stable эти MFC уже есть.

Изменено пользователем Сильвер

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


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

пусть выложит во время работы vmmstat -z

Смотреть надо только на все строки, или только с ненулевым failures?

Без виланов всё красиво:

# vmstat -z | egrep -v ' 0$'
ITEM                     SIZE     LIMIT      USED      FREE  REQUESTS  FAILURES

64 Bucket:                268,        0,      173,        9,      219,       13
128 Bucket:               524,        0,     2297,        6,     3399,      687

# netstat -m | grep -i den
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0 requests for sfbufs denied

За подсказку в любом случае спасибо! :)

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


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

На других серверах с ядром 8.2 (конфиг ядра и системы одинаковые) и похожей нагрузкой ничего не виснет.

Главное отличие - вместо Интелов на них используются встроенные Броадкомы.

Если это главное и единственное отличие, то логично предположить, что проблема в дровах Интела в связке с Фряхой.

В 9-ке более новые дрова на интеловские карты.

 

И как вы делаете Вланы - цисколайк?

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


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

Если это главное и единственное отличие, то логично предположить, что проблема в дровах Интела в связке с Фряхой.

В 9-ке более новые дрова на интеловские карты.

Более новые - не есть обязательно хорошо.

Потому что в них могли не починить этот баг, а добавить другие.

На форуме pfsense написано, что у них данная проблема возникла именно после очередного обновления.

Поэтому я и рассматриваю откат на 7.4 как один из вариантов.

К сожалению, фактов для принятия решения пока маловато.

 

И как вы делаете Вланы - цисколайк?

Вот так:

for n in `jot - 100 199`; do
   v="vlan$n"
   a="10.10.$n.2/24"
   ifconfig $v create
   ifconfig $v inet $a vlan $n vlandev em0 up
done

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


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

В том, что топикстартеру посоветовали накатить новую систему, чтоб избавиться от бага, это значит обновить _всё_, и возможно наловить новых глюков.

Только я в этом мире гружу фрю с флешек с подмонтированием винтов где нужно и куда нужно или еще кто-то? В виртуалке пересобрал мир+ядро+пактыпортапгрейдом, проверил, что все запускается, mdconfig прицепил образ, проинсталил систему потом в chroot проинсталил пакеты, нарисовал конфиги, при первом старте подправил ошибки. Геморойно немного, зато старую флешку потом воткнуть можно, если новая заглючит и парк серверов нада планировать изначально под такую схему.

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


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

Только я в этом мире гружу фрю с флешек с подмонтированием винтов где нужно и куда нужно или еще кто-то?

 

С флэшками не балуюсь, но у меня есть резервный сервер, на котором и тренируюсь, в конце-концов погасить-поднять порты на каталисте можно и из дома.

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


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

тема почему я презираю фряшников перешла в другие тематические темы :))))

 

 

на счет netisr, да неверно выразился, директ-ладно.

 

у вас роутер или сервер доступа?

 

kern.hz=4000 зачем это?

net.inet.ip.dummynet.io_fast=1 ?

 

 

если ватчдога нет, плата не на Intel-чипах чтоли? на других тоже не интел?

 

пы.сы. ватчдог DDB-у может помешать сделать свою работу.

 

 

 

стоит 7.2 с mpd5.3 на PPPoE серверах и молча работает... уже больше 3-х лет наверное.

 

 

В том, что топикстартеру посоветовали накатить новую систему, чтоб избавиться от бага, это значит обновить _всё_, и возможно наловить новых глюков.

полностью согласен.

надо выяснить причину падений. вплоть до анализа данных в mbuf-е

Изменено пользователем Giga-Byte

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


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

Join the conversation

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

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

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

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

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

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

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