[Comm] kernel: Neighbour table overflow.

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


Тут недавно после подключения к серверу еще одного интерфейса с 
кучей пользователей в логи начало сыпаться примерно следующие:
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