Просто снимок в темноте, но я подумал, что спрошу, если у кого-то есть идеи:
У меня есть сценарий тестирования, в котором некоторые (без графического интерфейса / встроенные) устройства IPv6 будут временно подключены к портам управляемого коммутатора Ethernet, а также программа управления (работающая на отдельном ПК с Linux, также подключенном к коммутатору). ) обнаружит, когда одно из этих устройств появится в локальной сети, и автоматически запустит тест, чтобы убедиться, что устройство работает правильно.
Обычно одновременно подключается около дюжины этих устройств (так что мы можем запускать тесты параллельно), и устройства будут подключаться и отключаться на регулярной основе людьми, которые не обязательно ничего знают о сети; они знают только, как подключить кабель Ethernet, а затем (несколько часов спустя) смотрят на экран ПК, чтобы узнать, прошел ли тест или нет.
Проблема в том, как указать тестирующему, когда конкретное устройство не прошло тест. Один из вариантов - включить в журнал / сообщение об ошибках MAC-адрес устройства (полученный из его локального адреса IPv6), и этого может быть достаточно в крайнем случае, но было бы намного лучше, если бы программа тестирования могла также сказать что-то вроде «Устройство, подключенное к порту №5, работает неправильно, посмотрите на это». Таким образом, тестер может просто проследовать по кабелю Ethernet к неисправному устройству, вместо того, чтобы выяснять MAC-адрес каждого устройства, пока он / она не найдет подходящий.
Я не считать что компьютер Linux может определить, к какому порту коммутатора подключено определенное устройство (дайте мне знать, если я ошибаюсь). Но в этом случае лучше всего было бы, если бы я мог запрограммировать коммутатор на перевод MAC-адресов, например так что любое устройство, подключенное к порту #n, всегда отображается (для компьютера Linux), как если бы оно имеет MAC-адрес foo: bar: baz: n, и, следовательно, отображается как IPv6-адрес fe80 :: 2foo: bar: baz: п. Если бы коммутатор выполнял подобную трансляцию MAC-адресов, то управляющее программное обеспечение могло бы определить, к какому порту было подключено устройство, просто просмотрев последнюю часть поддельного MAC-адреса.
Итак, мой вопрос: поддерживает ли такое поведение какие-либо управляемые коммутаторы Ethernet? Если да, то как называется эта функция (чтобы я мог найти переключатель, который ее выполняет)? Если нет, то есть ли лучший подход к этой проблеме, на который я должен вместо этого обратить внимание?
Я никогда не слышал о переключателе, который может преобразовывать MAC-адрес. Однако большинство хороших управляемых коммутаторов позволяют вам запрашивать таблицу мостов через SNMP: dot1dBridge.dot1dTpFdbTable в стандартной MIB мостов выглядит оптимальным вариантом. Вам нужно будет преобразовать MAC-адрес в десятичный и добавить его к префиксу MIB, и он выдаст порт, на котором он его изучил. Есть некоторые дополнительные уловки, если вам нужно иметь дело с VLAN.
http://wiki.xdroop.com/space/snmp/Switching+Tables есть пример.