[Comm] kernel: Neighbour table overflow.

Pavel S. Khmelinsky =?iso-8859-1?q?hmepas_=CE=C1_yauza=2Eru?=
Пн Окт 27 03:06:34 MSK 2003


Dmitry Lebkov wrote:
> Доброго времени суток,
> 
> 
> Гуглить по фразе 'Neighbour table overflow', а потом крутит
> 
> net.ipv4.neigh.default.gc_thresh1 = 
> net.ipv4.neigh.default.gc_thresh2 = 
> net.ipv4.neigh.default.gc_thresh3 = 
> 
> (текуще установки смотреть с помощью 'sysctl -a')
Спасибо большое! Значит все таки есть выход в /proc
А гуглить я гулил. Не ужто я б сорцы полез не погуглив? ;)
Балбес конечно, но не настолько. Еще раз спасибо!

> 
> 
> --
> 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 mailing list
> Community на altlinux.ru
> http://www.altlinux.ru/mailman/listinfo/community
> 




Подробная информация о списке рассылки community