[Comm] [sisyphus] Well... i've found a bug?.. 8021q?

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Вт Янв 13 23:20:43 MSK 2009


On Tue, Jan 13, 2009 at 04:59:05PM +0200, Dmytro O. Redchuk wrote:
> Вопрос такой.
> 
> Делаю из двухпортового линукса коммутатор (brctl addbr и далее).
> 
> Сквозь него пингаю нечто.
> 
> На обеих портах этого коммутатора навешиваю HTB.
> 
> Всё работает.
> 
> Всё работает, *если сквозь коммутатор ходят untagged packets*.
> 
> Если я, ничего не меняя на коммутаторе, начинаю пингать мечеными пакетами,
> то всё точно так же работает (пингается, то есть -- коммутатор на физических
> интерфейсах замечательно пропускает vlan'ы), кроме HTB -- у HTB все пакеты
> аккуратно падают в default class. То есть, фильтры типа
>   tc filter add dev <dev> protocol ip parent 1:0 prio 100  u32 match
> ip dst <dst> flowid <flowid>
> просто не срабатывают.
> 
> Если пишу offset, то ничего не меняется, да и не должно, вроде (смещения должны
> отсчитываться от начала пакета IP).

Однако в данной ситуации, скорее всего, получается, что смещения
считаются от заголовка 802.1Q VLAN, поскольку передача пакетов в
модуль bridge выполняется раньше, чем обработка модулем 8021q (по
крайней мере, для случая, когда сетевой контроллер не умеет аппаратно
обрабатывать теги VLAN).  Видимо, для обработки подобных пакетов
придётся писать

  tc filter add dev <dev> protocol 802.1Q ...

и составлять u32 match руками с учётом лишних 4 байт 802.1Q перед
заголовком IP (в которых надо ещё проверять как минимум протокол).

В случае, если контроллер умеет обрабатывать VLAN аппаратно (драйвер
ставит флаг NETIF_F_HW_VLAN_RX), во-первых, обычно такая обработка
включается только при создании хотя бы одного vlan-интерфейса через
vconfig, во-вторых, пакеты с соответствующими тегами в этом случае
уйдут в vlan-интерфейс вместо bridge (хотя можно организовать ещё один
мост и между vlan-интерфейсами, только это плохо согласуется со
стандартным способом работы STP), а пакеты с неизвестными тегами,
похоже, не будут обрабатываться вообще (за исключением передачи в
программы, прослушивающие все сетевые пакеты).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: Digital signature
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20090113/6e8b1bcf/attachment.bin>


Подробная информация о списке рассылки community