From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 27 Oct 2003 09:30:27 +1000 From: Dmitry Lebkov To: community@altlinux.ru Subject: Re: [Comm] kernel: Neighbour table overflow. Message-Id: <20031027093027.57f8b525.dima@sakhalin.ru> In-Reply-To: <3F9C519D.5060104@yauza.ru> References: <3F9C519D.5060104@yauza.ru> Organization: Sakhalin branch of DalSvyaz JSC X-Mailer: Sylpheed version 0.9.2 (GTK+ 1.2.10; i586-alt-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.1.2 Precedence: list Reply-To: community@altlinux.ru List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Oct 2003 23:30:36 -0000 X-List-Received-Date: Sun, 26 Oct 2003 23:30:36 -0000 Archived-At: List-Archive: List-Post: Доброго времени суток, Гуглить по фразе '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" 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