Назад | Перейти на главную страницу

Любая программа, которая поможет мне проверить, может ли канал Ethernet поддерживать полноразмерный пакет VLAN?

Иногда мне приходится сталкиваться с такой ситуацией, когда мне нужно быстро и точно знать, может ли полноразмерный пакет VLAN проходить между двумя портами RJ45.

Да, я имею в виду Ethernet-фрейм 802.1Q с Etype = 81 00 (диаграмма ниже).

Что я могу сделать сейчас: получить два ПК с Windows для каждого ПК, установить Intel Gigabit NIC и специальный драйвер Intel для создания виртуальной сетевой карты с назначенным идентификатором VLAN = 3.

Затем подключите два ПК к каждому из двух портов RJ45.

Наконец, выполните команду ping, чтобы сгенерировать полноразмерный пакет Ethernet.

ping -f -l 1472 <dest-IP>

Таким образом, я могу быть уверен, что отправленный пакет имеет максимальную «полезную нагрузку IP-данных» 1500 байтов (8 байтов заголовка ICMP и 1472 байта данных ICMP).

Если на эхо-запрос приходит ответ, я знаю, что канал Ethernet поддерживает полноразмерный пакет VLAN.

Согласно моему эксперименту, некоторые домашние коммутаторы или широкополосные маршрутизаторы (например, Linksys WRT54G) не поддерживают полноразмерную коммутацию пакетов VLAN, поэтому только ping -f -l 1468 удается.

Видите ли, мне приходится использовать дорогую сетевую карту Intel для проведения этого теста, что довольно неудобно. Вы знаете, что большинство современных ноутбуков не оснащены сетевой картой Intel, и, даже если это Intel NIC, драйвер Intel VLAN, Intel имеет ограничения на модели, на которые можно установить драйвер VLAN.

Итак, у меня вопрос: есть ли небольшая программа, которая может позволить мне отправить полноразмерный пакет VLAN без установки специального драйвера VLAN? Или лучше, в программе есть стандартная функция, которая как раз подходит для моей ситуации.

Предпочтительны программы Windows, приветствуется решение Linux. Чем проще программа, тем лучше. Спасибо.

[ДОПОЛНИТЕЛЬНО]

Маршрутизатор Linksys, купленный примерно в 2006 году, использует официальную прошивку v7.00.6. (изображение веб-администратора linksys)

[2012-11-09] Этот прием может быть весьма полезным. Канал Ethernet для проверки может быть чем-то более интересным, например, мостом 802.11 WDS.

если сетевая карта / драйвер является ограничением, вы ничего не можете с этим поделать, даже если программа позволяет вам отправлять больший пакет, он будет фрагментирован.

Включить теги VLAN в Linux очень просто. вам нужно установить vconfig (пакет vlan в ubuntu), тогда вы можете использовать тот же тест ping или, возможно, iperf.

Я предполагаю, что другим вариантом было бы использовать программный пакет для анализа пакетов, такой как wirehark из http://www.wireshark.org/ чтобы отслеживать трафик на обоих концах, таким образом вы убедитесь, что вы видите проходящие данные, хотя это не позволит вам создать полноразмерный пакет для теста.

Если вы соедините его с чем-то вроде Nemesis from http://nemesis.sourceforge.net/; этот инструмент можно использовать для создания пакетов для инъекции, а также для повторной отправки захваченных пакетов, поэтому теоретически вы можете использовать свой метод для генерации тестового пакета, захвата его, а затем повторного использования с Nemesis и мониторинга на дальнем конце чтобы увидеть, проходит ли это, избавляя от хлопот по установке и настройке карты, поддерживающей теги vlan. Если бы это сработало, вы могли бы довольно легко создать сценарий вокруг предварительно захваченного пакета и Немезиды, а затем либо прослушивать его на дальнем конце с помощью Wire Shark, либо прослушивать ответ icmp на ближнем конце (если дальний конец настроен для VLAN).

Этот метод полностью не протестирован, так как я никогда не использовал Nemesis, но он указан на сайте wirehark как полезный и довольно хорошо поддерживаемый инструмент для инъекции пакетов.

С намеком Андреса на vconfig в Linux и немного свободного времени, чтобы попробовать это, мне наконец удалось это сделать.

В моем ящике для экспериментов есть следующее:

  1. Компьютер с ноутбуком под управлением Windows XP с как минимум двумя свободными портами USB.
  2. Установка VMware Workstation 7.1 в Windows, создание двух виртуальных машин, на каждой из которых работает openSUSE 12.2.
  3. Два ключа USB-Ethernet, поддерживающие полноразмерные пакеты VLAN. Мой выбор Z-TEK ZK011, на котором установлен чип Realtek RTL8150.

RTL8150 настолько хорош, что openSUSE Linux (по крайней мере, начиная с SuSE 9.0) имеет для него встроенный драйвер, а vconfig также является предустановленным пакетом. После подключения к Linux Linux создает eth1 устройство для этого.

Затем, чтобы создать интерфейс vlan = 30 на eth1,

vconfig add eth1 30

Сейчас ifconfig покажет новое устройство nic с именем eth1.30 .

Назначьте IP для eth1.30,

ifconfig eth1.30 10.1.1.5 up

Сделайте то же самое для другой виртуальной машины Linux, но назначив другой IP-адрес.

Наконец, подключите два ключа с помощью кабелей Ethernet через любой концентратор / коммутатор для проверки.

Теперь я могу попробовать выполнить ping с максимальным MTU.

ping -s 1472 -M do 10.1.1.6

Ура!

Самым неопределенным фактором здесь является то, поддерживает ли сам USB-Ethernet-ключ полноразмерный пакет VLAN. Чтобы проверить это, я однажды использовал кросс-кабель, чтобы соединить два ключа, чтобы пинговать друг друга.

Кстати: Z-TEK ZE543 (Moschip MCS7830), похоже, не поддерживает полноразмерные пакеты VLAN, по крайней мере, с драйвером Linux по умолчанию.