пятница, 11 августа 2017 г.

Selective Q-in-Q с профилями и без

Продолжаем серию заметок о Q-in-Q. В прошлый раз коснулись темы Selective Q-in-Q на примере модели DGS-3420-28SC. Сегодня попробуем разобраться с этим еще раз. :)

Описанная в прошлой заметке задача очень проста, потому давайте усложним ее. Представим, что нам надо завернуть во внешний тег (SP-VLAN) не выборочные VLAN, а целый диапазон.

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

Схема сети:

На доступе используется коммутатор DES-3200-28. В портах с 1 по 24-й находятся клиенты, каждый в своей VLAN. Номера VLAN начинаются с 401 и в дальнейшем соответствуют номеру порта, т.е. продолжаются до 424.

На агрегации как и раньше используется коммутатор DGS-3420-28SC. Управляющий интерфейс также находится в VLAN 7. В качестве SP-VLAN используется VLAN с ID 101.

Как обычно, не забудем поменять outer_tpid, чтобы не потерять управление коммутатором:
config qinq ports 1-28 outer_tpid 0x8100

Теперь можно безопасно включить Q-in-Q:
enable qinq

Разрешим кадры большого размера:
enable jumbo_frame

Создадим VLAN, которая будет использоваться в качестве SP-VLAN:
create vlan 101 tag 101
config vlan 101 add tagged 20,28

Дальше у нас есть выбор - использовать профили или нет. Профили поддерживаются далеко не всеми моделями (DGS-3420-28SC поддерживает). Рассмотрим оба варианта.

Вариант с использованием профилей

Создадим профиль для Q-in-Q с номером 1:
create vlan_translation_profile 1

Добавим в профиль правило, согласно которому внешние VID в диапазоне 401-424 относятся к SP-VLAN 101
config vlan_translation_profile 1 add rule_id add svid 101 classify outer_vid 401-424

На самом деле профили позволяются классифицировать фреймы по многим признакам (source_mac, destination_mac, source_ipv4, destination_ipv4, outer_vid, 802.1p, ip_protocol, l4_src_port, l4_dest_port), но в данном случае мы будем классифицировать их по outer_vid.

Добавим правило* для трансляции управляющей VLAN в VLAN с тем же самым ID, т.е. без добавления внешнего тега SP-VLAN:
config vlan_translation_profile 1 add rule_id replace svid 7 classify outer_vid 7

Применим профиль для порта №20:
config qinq ports 20 add vlan_translation_profile 1

Сменим порту №20 в роль на UNI:
config qinq ports 20 role uni missdrop enable

Справочная информация из презентации D-Link:
  • Параметр «missdrop enable» означает, что добавление внешнего тега (SP-VLAN) будет осуществляться только согласно правилам vlan_translation.
  • Параметр «missdrop disable» означает, что добавление внешнего тега (SP-VLAN) будет осуществляться согласно правилам vlan_translation, а к трафику не попавшему под правила vlan_translation будет добавлятся внешний тег (SP-VLAN) равный PVID порта, т.е. SP-VID = PVID.

* В реальных условиях мне не доводилось протаскивать управляющую VLAN через UNI порт в случае использования профилей, но теоретически это должно работать. :)

Вариант без использования профилей (подходит и для других моделей D-Link)

Создадим правило трансляции для диапазона VLAN:
create vlan_translation ports 20 add cvid 401-424 svid 101

Добавим правило для трансляции управляющей VLAN без добавления внешнего тега:
create vlan_translation ports 20 replace outer_vid 7 svid 7

Изменим роль порту №20 на UNI:
config qinq ports 20 role uni missdrop enable

Как видно, основное отличие от прошлого примера состоит в использовании диапазона вместо единичного номера VLAN. Ну и в этот раз мы включили missdrop enable, чтобы ограничить применение Q-in-Q только для явно заданных правил трансляции.