Как пересылать кадры Ethernet с тегами VLAN через мост Linux между двумя физическими интерфейсами Ethernet?Linux

Ответить Пред. темаСлед. тема
Anonymous
 Как пересылать кадры Ethernet с тегами VLAN через мост Linux между двумя физическими интерфейсами Ethernet?

Сообщение Anonymous »

Справочная информация
В настоящее время я работаю над устройством, которое использует Beaglebone Black в качестве базовой платы и имеет сторонний MAC/PHY, подключенный к коммутационным контактам.
Проблема
Надо переслать все пакеты Ethernet, полученные на одном интерфейсе, на другой интерфейс в обоих направлениях. Настроить мост между двумя интерфейсами достаточно просто:

Код: Выделить всё

        ip link add name br0 type bridge
ip link set dev br0 up
ip link set eth0 up
ip link set eth1 up
ip link set dev eth0 master br0
ip link set dev eth1 master br0
Это прекрасно работает, пока я не начну передавать кадры с тегами VLAN. Если я помечаю кадр идентификатором VLAN 0 или 1, кадры пересылаются. К сожалению, тег VLAN удаляется перед передачей на другой интерфейс. Если я помечаю любой другой идентификатор VLAN, кадр не пересылается.
Попытка решения 1
Первое, что я попробовал, — это использовать таблицы ebtables:

Код: Выделить всё

ebtables -A FORWARD -i br0 --vlan-id 2 -j ACCEPT
Это не дало никакого эффекта. Даже если бы это было так, масштабирование было бы не очень хорошим — мне пришлось бы добавить запись для всех идентификаторов VLAN, которые я хочу использовать.
Попытка решения 2Второе, что я попробовал, — это соединение подинтерфейсов:

Код: Выделить всё

ip link add name br0.2 type bridge
ip link set dev br0.2 up
vconfig add eth0 1
vconfig add eth1 2
ip link set dev eth0.2 up
ip link set dev eth1.2 up
ip link set dev eth0.2 master br0.2
ip link set dev eth1.2 master br0.2
Это работает частично, но имеет ту же проблему масштабирования, что и решение 1. Я говорю, что это работает частично, потому что данные тега VLAN частично потеряны. Используя tcpdump --x -i ethX, я заметил следующее при передаче кадров с тегами VLAN на встроенный интерфейс Ethernet Beaglebone (eth0):
  • Когда пакет поступает на eth0, присутствует весь тег VLAN.
  • Когда пакет поступает на eth0.2, тег VLAN удаляется.
  • Когда пакет поступает на br0.2, тег VLAN все еще отсутствует.
  • Когда пакет поступает на eth1. 2, тег VLAN все еще отсутствует.
  • Когда пакет поступает на eth1, тег VLAN с правильным идентификатором присутствует, но приоритет имеет потерян.
Есть ли способ сохранить весь тег VLAN при его прохождении через эту цепочку интерфейсов?
Попытка решения 3
Мост с поддержкой VLAN

Код: Выделить всё

ip link add name br0 type bridge vlan_filtering 1
ip link set dev br0 up
ip link set eth0 up
ip link set eth1 up
ip link set dev eth0 master br0
ip link set dev eth1 master br0
bridge vlan add vid 2-4094 dev br0 self
bridge vlan add vid 2-4094 dev eth0 master
bridge vlan add vid 2-4094 dev eth1 master
Это потенциально идеальное решение, поскольку оно не страдает от проблемы масштабирования, свойственной решению 2. Однако драйвер коммутатора TI Ethernet не инициализируется, когда включена переадресация VLAN. . Драйвер TI CPSW сообщает об ошибке, сообщая, что он не может инициализировать пересылку VLAN на интерфейсе.

Подробнее здесь: https://stackoverflow.com/questions/786 ... etween-two
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Что такое режимы VLAN Aware и VLAN не знают на мосту Linux?
    Anonymous » » в форуме Linux
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Linux (Ubuntu) фильтрует кадры L2 на физических интерфейсах Ethernet без моста, чтобы полностью исключить/включить устро
    Anonymous » » в форуме Linux
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Как передавать кадры один за другим и захватывать декодированные кадры с помощью LibAV?
    Anonymous » » в форуме C#
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Пересылать информацию между двумя классами с буфером между ними
    Anonymous » » в форуме C++
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Комбинация VxLAN и VLAN в Linux [закрыто]
    Anonymous » » в форуме Linux
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Linux»