Ситуация такая: есть сеть, в ней freebsd-роутер и win-сервера, в частности, nlb-кластер. Кластер сконфигурирован в режиме multicast: обе ноды с разными маками имеют одинаковый ip, и у каждого мака - свой отдельный ip алиасом прописан.Все работало хорошо, пока я не решил обновить роутер до freebsd 9.0
Теперь же кластер недоступен, при попытке пингануть кластер, получаю в логе строчку:
router3 kernel: in_arp: source hardware address is multicast.in_arp: source hardware address is multicast.А пинг отвечает:
ping: sendto: Host is downВ arp -a просто нет этого ip, который должен висеть на 2 маках.
ip каждой ноды в arp-таблице присутствует и благополучно пингуется, но надо чтобы работал именно кластер.В более ранних версиях freebsd все работало хорошо: на каждый пинг просто приходило по 2 ответа (по 1 от каждой ноды). TCP-сессии тоже благополучно работали.
В гугле по этой проблеме на редкость мало инфы, нарыл только то, что по стандарту оно и не должно работать, вроде, что есть патч, который убирает ошибку из логов, и все.Есть какие-нибудь идеи, никто не сталкивался?
> Ситуация такая: есть сеть, в ней freebsd-роутер и win-сервера, в частности, nlb-кластер.
> Кластер сконфигурирован в режиме multicast: обе ноды с разными маками имеют
> одинаковый ip,хз.
можно сравнить исходники /usr/src/sys/netinet/if_ether.c
в 8 и 9-ке
> можно сравнить исходники /usr/src/sys/netinet/if_ether.c
> в 8 и 9-кеСравнил. Код в основном одинаковый, но есть и изменения, в частности в функции in_arpinput, появилась проверка:
if (ETHER_IS_MULTICAST(ar_sha(ah))) {
log(LOG_ERR, "in_arp: source hardware address is multicast.");
return;
}И чем это мне поможет, интересно? Никаких ifdef'ов поблизости не видно, как я понимаю, параметры ядра не помогут. Или надо в другом месте где-то смотреть?
Сегодня ночью сервер вообще перестал отвечать по сети, остальные сервисы все работали - разбираться времени не было, поэтому мы его перезагрузили с консоли. В логах ничего кроме кучи сообщений про "source hardware address is multicast.".
Интересно, причина может быть связана с этим?Как решить проблему? Или единственный способ - откатиться на 8-ю ветку?
>[оверквотинг удален]
> }
> И чем это мне поможет, интересно? Никаких ifdef'ов поблизости не видно, как
> я понимаю, параметры ядра не помогут. Или надо в другом месте
> где-то смотреть?
> Сегодня ночью сервер вообще перестал отвечать по сети, остальные сервисы все работали
> - разбираться времени не было, поэтому мы его перезагрузили с консоли.
> В логах ничего кроме кучи сообщений про "source hardware address is
> multicast.".
> Интересно, причина может быть связана с этим?
> Как решить проблему? Или единственный способ - откатиться на 8-ю ветку?Ну попробуйте в freebsd-questions@, или как там правильно, задать.
Ну как успехи в этом вопросе. Как-то удалось победить?
> Ну как успехи в этом вопросе. Как-то удалось победить?Удалось, прописал в rc.conf то ли один из маков в arp-таблицу статически то ли другой в список исключений. В итоге только один из адресов доступен, но этого хватало.
Что и как именно прописал, уже не вспомню, т.к. сейчас по ряду других причин откатился обратно на 8-ю фрю...
> Ну как успехи в этом вопросе. Как-то удалось победить?В 9ке новый параметр системы. net.link.ether.inet.allow_multicast=1 добавить в /etc/sysctl.conf. зачем он появился непонятно
>> Ну как успехи в этом вопросе. Как-то удалось победить?
> В 9ке новый параметр системы. net.link.ether.inet.allow_multicast=1 добавить в /etc/sysctl.conf.
> зачем он появился непонятноВыяснилось, что данный параметр позволяет системе добавлять в arp-таблицу MAC адреса из multicast диапазона. Работает и для FreeBSD 10.0
>>> Ну как успехи в этом вопросе. Как-то удалось победить?
>> В 9ке новый параметр системы. net.link.ether.inet.allow_multicast=1 добавить в /etc/sysctl.conf.
>> зачем он появился непонятно
> Выяснилось, что данный параметр позволяет системе добавлять в arp-таблицу MAC адреса из
> multicast диапазона. Работает и для FreeBSD 10.0Вот это я удачно зашел спустя 3,5 года в поисках решения этой же проблемы после того как обновился до 10.2.
Смотрю, что-то такое когда-то уже читал. Потом смотрю - а оказывается я же и тему создал, вот так бывает!По сабжу подтверждаю, net.link.ether.inet.allow_multicast=1 - ровно то, что нужно.
С ним 10.2 отвечает аналогично 8-й ветке:
64 bytes from 192.168.xx.xx: icmp_seq=0 ttl=128 time=0.720 ms
64 bytes from 192.168.xx.xx: icmp_seq=0 ttl=128 time=0.768 ms (DUP!)