[Comm] kernel: Neighbour table overflow.
Dmitry Lebkov
=?iso-8859-1?q?dima_=CE=C1_sakhalin=2Eru?=
Пн Окт 27 02:30:27 MSK 2003
Доброго времени суток,
Гуглить по фразе 'Neighbour table overflow', а потом крутит
net.ipv4.neigh.default.gc_thresh1 =
net.ipv4.neigh.default.gc_thresh2 =
net.ipv4.neigh.default.gc_thresh3 =
(текуще установки смотреть с помощью 'sysctl -a')
--
WBR, Dmitry Lebkov
On Mon, 27 Oct 2003 01:58:37 +0300
"Pavel S. Khmelinsky" <hmepas на yauza.ru> wrote:
> Тут недавно после подключения к серверу еще одного интерфейса с
> кучей пользователей в логи начало сыпаться примерно следующие:
> kernel: Neighbour table overflow.
> Клиентов порядка 400 все они статически и жестко привязываются к
> своим макам командой:
> ip nei replace to $ip lladdr $mac dev eth2 nud permanent
> Причем делает это скрипт, который периодически перезапускается.
> Причем чем чаще его перезапускать тем быстрее с момента загрузки
> начинает сыпаться эта дрянь.
>
> Пробовал вопросить в kernel-devel -- не вышло. Сложилось ощущение
> что ответ знают почти все, но в воспитательных целях молчат %)
>
> Возился и так и сяк, прочитал все что нашел про настройки /proc
> которые могли бы повлиять на размер арп таблицы.... Кароче пошел
> на крайнюю меру -- полез в ядро и вот до чего довело мое
> небольшое расследование:
>
> Есть такая структура:
>
> net/ipv4/arp.c:
> struct neigh_table arp_tbl = {
> family: AF_INET,
> entry_size: sizeof(struct neighbour) + 4,
> ....
> gc_thresh3: 1024,
> };
>
> Дошел я до нее по цепочке:
> net/ipv4/route.c:rt_intern_hash ->
> net/ipv4/arp.c:arp_bind_neighbour ->
> include/net/neighbour.h:__neigh_lookup_errno ->
> net/core/neighbour.c:neigh_create ->
> net/core/neighbour.c:neigh_alloc там есть код сравнения
> gc_thresh3 и entries, дальше глянул где задается это значение.
>
>
> При создании новой записи (neigh_create ф-ия) вызывается ф-ия
> neigh_alloc в которой есть проверка tbl->entries >
> tbl->gc_thresh3 т.е. сравнивается кол-во существующих записей с
> этим самым числом. Хотя есть и другие проверки и кандитаты в
> возможные причины появления сообщения kernel: Neighbour table
> overflow. мне почему-то кажется что срабатывает именно эта
> проверка......
> И что? Да ничего
> gc_thresh3: 1024
> и все. Константа.... Ни тебе выхода в #define ни в /proc ....
> 1024 роста на растоянии прямой видимости (имеется ввиду в одном
> физическом эзернет сегменте) это чего предел что-ли?!
>
> Вобщем гуру, развейте мои сомнения скажите что я где-то чего-то
> недоконфигурил или еще чего-то. Следующим шагом будет пересборка
> ядра, а делать мне это на боевых серверах ой как не охота а нигде
> более это дело у меня не проявляется.
>
> P.S.: Интересно... А у бзди такие проблемы есть?
>
> _______________________________________________
> Community mailing list
> Community на altlinux.ru
> http://www.altlinux.ru/mailman/listinfo/community
Подробная информация о списке рассылки community