Автоматическое обнаружение ethernet-устройств

Dasar

Есть самодельные устройства, подключаемые по ethernet.
Хочется автоматически обнаруживать их наличие в сети через какой-нибудь стандартный протокол.
Какие стандартные протоколы есть для этого?
Достаточно обнаружения внутри одного сегмента. Устройства должны быть пассивными (т.е. по своей инициативе вещать ничего не должны, а должны отвечать только при наличие запроса).
Можно, конечно, просто сделать свой broadcast запрос, но хочется чего-нибудь стандартного.

ppplva

Может что-нибудь из этого?
http://en.wikipedia.org/wiki/Zero-configuration_networking

Dasar

Смущает, что он немного для другого.
посмотрел еще также:
SNMP
UPnP
но они также подходят с натяжкой

Marinavo_0507

RRCP есть

AlexV769

Почему SNMP broadcast - это для чего-то другого?

tokuchu

LLDP есть, но там устройства периодичкски сами вещают вроде бы.

AlexV769

LLDP и CDP не коммутируются уважающими себя коммутаторами :)
Они оба предназначены для L1-обнаружения, а не L2, как хочет автор.

Marinavo_0507

Почему SNMP broadcast - это для чего-то другого?
ну типа нужно ставить IP-адреса на все устройства?

tokuchu

LLDP и CDP не коммутируются уважающими себя коммутаторами :)
Они оба предназначены для L1-обнаружения, а не L2, как хочет автор.
Это да, но если у него топология соответствующая, то может и подойдёт.
Ещё можно multicast-адрес "повесить", наверное, и на пинги отвечать.

AlexV769

Я сомневаюсь, что он собирается изобретать для общения с этими устройствами свой собственный протокол 3 уровня.
Хотя если устройства пассивные, то адрес по DHCP они словить не смогут, да и IPv6 RA обработать тоже.

tokuchu

Ещё можно multicast-адрес "повесить", наверное, и на пинги отвечать.
В IPv6 по умолчанию вроде как ff02::1 (All nodes on the local network segment) должен отзываться. В IPv4 224.0.0.1 для этих целей тоже есть, но там вроде оно появляется, если включен какой-нибудь ещё мультикаст-адрес, если правильно помню.

tokuchu

Ещё есть какие-то SLP и SSDP.

Dasar

ну типа нужно ставить IP-адреса на все устройства?
IP-адрес есть на каждом устройстве, но возможен вариант, когда он не принадлежит местной подсети

forenius


IP-адрес есть на каждом устройстве, но возможен вариант, когда он не принадлежать местной подсети
Маршрутизация и открытый порт SNMP не решают?

forenius

В идеале для мониторинга и управления сеть должна быть отделенна от основной и независима от основной.

Marinavo_0507

Маршрутизация и открытый порт SNMP не решают?
это - сведение задачи к более сложной, учитывая, что бродкасты обычно не маршрутизируются

AlexV769

IP-адрес есть на каждом устройстве, но возможен вариант, когда он не принадлежит местной подсети
В этом предложении речь идет о том, что устройство ошибочно имеет адрес не из "правильной" сети (притащили из другого места, забыли перенастроить) или специально подключено к другому L2-сегменту сети?

Dasar

первый вариант - притащили из другого места или забыли перенастроить

AlexV769

Ну тогда броадкаст SNMP с 255.255.255.255 на 255.255.255.255 должен сработать нормально.

Marinavo_0507

могут пострадать невиновные

carusya

А насколько глубоко доступен сетевой стек на устройствах для ковыряния? Не нужно ли плясать от этого?

AlexV769

каким это образом?

Dasar

А насколько глубоко доступен сетевой стек на устройствах для ковыряния?
на устройствах недо-linux. поэтому с одной стороны можно поковырять что хочешь, а с другой стороны - сильно менять стандартный функционал не хочется, потому что это усложняет портирование и создает проблемы в работе ПО.

tokuchu

на устройствах недо-linux
ipv6 включен? Тогда как я уже говорил:
ping6 ff02::1%eth0

Dasar

ipv6 включен? Тогда как я уже говорил:
нет, не включен. нафиг он там? админы с ним всё равно работать не умеют.

tokuchu

нафиг он там?
Хотя бы для того, чтобы можно было сделать как я написал. :)
админы с ним всё равно работать не умеют.
А им и не надо ничего делать. link-local адреса сами настроятся, а тебе больше ничего не надо.

Dasar

link-local адреса сами настроятся, а тебе больше ничего не надо.
получу я ip6 адреса и что с ними дальше делать?
это же надо каждую прогу проверить, что она корректно работает с ip6 и каждому пользователю объяснить, что такое ip6, как с ним работать, и как из него получить нормальный ip4.

Dasar

Почему SNMP broadcast - это для чего-то другого?
спасибо. пока на нем и остановился.
ps
когда смотрел snmp, то увидел там только сбор значений, а discovery сходу не увидел

tokuchu

получу я ip6 адреса и что с ними дальше делать?
Ну ты узнаешь, что устройство в сети есть. Вопрос ведь так стоял. :)
Можно ещё MAC узнать из аналога ARP-таблицы.
это же надо каждую прогу проверить, что она корректно работает с ip6 и каждому пользователю объяснить, что такое ip6, как с ним работать, и как из него получить нормальный ip4.
Т.е. тебе нужно IP-адрес узнать, а не просто обнаружить ethernet-устройство?
Ну в общем для IPv4 тоже можно 224.0.0.1 попингать. Но у меня, например, по умолчанию стоит net.ipv4.icmp_echo_ignore_broadcasts = 1, и оно не отвечает на такие запросы. Но если это можно выключить или другие умолчания, то можно пользоваться.
Ну или в сторону всяких service location / zeroconf смотреть, если что посложнее надо.

tokuchu

Ну тогда броадкаст SNMP с 255.255.255.255 на 255.255.255.255 должен сработать нормально.
reverse path фильтры всякие такое не фильтруют, кстати?

Marinavo_0507

> каким это образом?
ну не ожидают увидеть пакет от 255.255.255.255
индусы, которые писали прошивку, могли не обработать такой случай
или обработать каким-нибудь странным образом

Ivan8209

> индусы, которые писали прошивку, могли не обработать такой случай
> или обработать каким-нибудь странным образом
Имею опыт работы с такими индусами.
Индусы даже не представляют себе, что такое может быть.
---
"Мы диалектику учили не по Гегелю,
Бряцанием боёв она врывалась в стих..."
Оставить комментарий
Имя или ник:
Комментарий: