[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