Перед тем как говорить о технологии 802.1ad (QinQ) нужно вспомнить о технологии 802.1q. Если коротко, то это технология тегирования трафика, то есть деление его на 2 уровне модели OSI (так как на L3 сеть мы делим уже по маске)
Чем же отличается трафик обычный от тегированного спросите вы? Практически ничем, кроме добавления добавление тега в заголовок фрейма.
Размер такого тега всего 4 байта (32 бита) и он состоит:
- TPID (Tag Protocol Identifier): на него уходит половина размера тега и это значение равно 0x8100 для 802.1q (VLAN) , а для 802.1ad(QinQ) заголовок выглядит так: 0x88a8.
- TCI (Tag Control Information): на это поле уходит оставшийся половина 16 бит тега.
В него входит:
- PCP(Priority) - 3-битное поле, которое относится к классу обслуживания IEEE 802.1p и сопоставляется с уровнем приоритета кадра. (3 бита)
- Drop eligible indicator (DEI) (ранее CFI - Canonical Format Indicator) - Может использоваться отдельно или вместе с PCP для обозначения фреймов, которые могут быть отброшены при наличии перегрузки. (1 бит )
- VID (VLAN Identifier) - VLAN ID . размером он в 12 бит ,а это значит что в него можно заложить 2^12 = 4096 VLAN . Но на самом деле меньше ,так как 0 и 4095( 0x000 и 0xFFF) зарезервированы , в итоге 4094 получается. (12 бит)
Зачем же понадобилась технология двойного тегирования QinQ? Вот тут возникает как раз ограничение поля VID на количество VLAN (4094) и тут на помощь приходит стандарт 802.1ad, который позволяет уже увеличить количество VLAN. (4094*4094 = 16760836 - больше пока никому не потребовалось.)
Ниже укажу dump трафика вначале обычного 802.1q:
А потом 802.1ad наш QinQ о котором как раз и шла речь:
Как видно из вывода, тип трафика указывается в самом фрейме. (см картинки выше), а далее идёт тег и в случае QinQ ещё один тег.
Практика
А теперь давайте немного попрактикуемся.
Клиенты VPC1 и VPC2 будут находиться в одной подсети, это было сделано для удобства.
- VPC1 : 172.16.20.1/24
- VPC2 : 172.16.20.2/24
Теперь первый Mikrotik, который будет отвечать за access и trunk порты
/interface bridge add name=bridge vlan-filtering=yes /interface bridge port add bridge=bridge interface=ether1 pvid=100 add bridge=bridge interface=ether2 /interface bridge vlan add bridge=bridge tagged=ether2 vlan-ids=100
Mikrotik4 конфигурируется точно по такой же логике
/interface bridge add name=bridge vlan-filtering=yes /interface bridge port add bridge=bridge interface=ether1 pvid=100 add bridge=bridge interface=ether2 /interface bridge vlan add bridge=bridge tagged=ether2 vlan-ids=100
Теперь самое интересное: Mikrotik2
/interface bridge add ether-type=0x88a8 name=bridge vlan-filtering=yes /interface bridge port add bridge=bridge interface=ether1 pvid=200 tag-stacking=yes add bridge=bridge interface=ether2 /interface bridge vlan add bridge=bridge tagged=ether1 vlan-ids=100 add bridge=bridge tagged=ether2 vlan-ids=200
Mikrotik3
/interface bridge add ether-type=0x88a8 name=bridge vlan-filtering=yes /interface bridge port add bridge=bridge interface=ether1 add bridge=bridge interface=ether2 pvid=200 tag-stacking=yes /interface bridge vlan add bridge=bridge tagged=ether2 vlan-ids=100 add bridge=bridge tagged=ether1 vlan-ids=200
Я указал только простую настройку для понимания настройки его на оборудовании Mikrotik. Не стал копать глубоко и указывать что и зачем каждый заголовок значит, так как моей задачей было указать основную настройку оборудования и по какой логике работает Q-in-Q, и с этой задачей я справился. Удачи!