Cisco Q-in-Q

Ни чего страшного тут нет , более того все банально и просто

И так для начало нам необходимо подготовить почву на Cisco  , а точней сделать :

# sh system mtu

по дефолту везде стоят след . строки :

System MTU size is 1500 bytes
System Jumbo MTU size is 1500 bytes
Routing MTU size is 1500 bytes

И так вводим с начала :

#system mtu 1508

Далее смотрим , что у нас получилось :

#show system mtu

System MTU size is 1500 bytes
On next reload, System MTU will be 1508 bytes
System Jumbo MTU size is 1500 bytes
Routing MTU size is 1500 bytes

Далее настраиваем 2 порта

Коммутатор  С1

interface FastEthernet0/7
description testing
switchport access vlan 501
switchport mode dot1q-tunnel
no cdp enable

Коммутатор  С2

interface FastEthernet0/8
description TESTING
switchport access vlan 501
switchport mode dot1q-tunnel
no cdp enable

При попадании пакета на порт interface FastEthernet0/7  Коммутатора  С1 к пакету принудительно будит добавляться еще один заголовок dot1q ( принудительно ) — и по вашей сети он будит идти как обычный vlan 501 — но внутри будит удвоенный заголовок ( или двойной tag ) и размер такого пакета будит 1508 байт   и на всем пути следования такого пакета необходимо поставить минимальный размер MTU 1508  — то есть на всех транзитных коммутаторах  (если такие имеются) надо тоже ставить , более того на всем транзитном железе (если оно будит) , которое обрабатывает ethernet фреймы необходимо ставить MTU 1508.

Что будит происходить :

Вот и все настройки которые необходимо сделать на коммутаторе , далее можно проверить при помощи коммутатора или Freebsd сервера с настроенным vlan`ми  , подключить к этим портам  и посылать в них тегированные пакеты  , с нужными вланами  .

И так эти строки говорят о том , что при следующей перезагрузки коммутатора все изменения вступят в силу (увы ,но это факт , прийдется делать перезагрузку коммутатора по другому ни как с Cisco )

Если же будит меньше то  при реализации Q-in-Q и System MTU size is 1500 bytes  коммутатор просто удалит этот второй заголовок dot1q для Q-in-Q и пакет будит не будит иметь соответствующий заголовок , тем самым он будит отброшен .

Для того , что б у нас проходили пакеты двойной упаковки или vlan в vlan или Q-in-Q нам необходимо иметь как минимум   System MTU size is 1508 bytes — для чего это надо , так как размер ethernet фрейма вместе с заголовками составляет 1500 байт ( по умолчанию ) , а при упаковке (или перепакови) Q-in-Q на обычный фрейм налаживается еще один заголовок dot1q — а это 8 байт . Вот и получается , что как минимум надо ставить System MTU size is 1508 bytes  или больше .

Железо — относительно Cisco начинает поддерживать Q-in-Q с 35 серии и т.д  Да к сожалению 29xx  серия это делать не может , но при этом она может пропускать такие пакеты ( хоть это хорошо 🙂 ,  более того пакеты с 2-м тагом может пропустить любое оборудование на котором можно выставить значение MTU больше 1500

И так стоит задача реализации Q-in-Q или vlan in vlan . Стоит отметить , что не все железо может работать с этим зверем и не все железо может пропускать данные пакеты (пакеты двойной упаковки — так сказать ).

Замечание :

При реализации Q in Q могут использоваться следующие варианты , к примеру если в порт с настройкой под Q in Q придет пакет без тега , то по сети этот пакет пойдет как обычный пакет с обычным MTU  и если придет этот пакет на маршрутизатор , маршрутизатор сможет прочесть информацию внутри него (так как у него будет обычная структура) , если же на порт с настройкой под Q in Q придет пакет с тагом , коммутатор повесит ему еще один таг и с двойным такого будет его гнать по сети , если же маршрутизатор встретит такой пакет он не сможет считать информацию внутри него — так как пакет будет иметь не стандартную структуру (сдвинутую из за двойного тегирования) .