Не стоит забывать про MTU на портах перед настройкой QinQ. Тут всё работает из-за того, что на vMX-ах MTU по-умолчанию равен 1522
1. Настройка Bridge-Domains (MX) и VLANs (QFX)
1.1. Bridge-Domains (MX)
Чтобы настроить вланы на MX нам нужно сбриджевать интерфейсы. Иными словами объединить юниты в один Bridge-Domain. Так будут выглядеть домены на PE-1:
root@MX-PE1#
set bridge-domains v400 description Customer-1 vlan-id 400
set bridge-domains v800 description Customer-2 vlan-id 800
Если на PE-устройствах мы настраивали S-TAG, то на клиентских добавляем туда C-TAG's:
root@MX-CE1-1#
set bridge-domains v100 vlan-id 100
set bridge-domains v110 vlan-id 110
Таким образом настраиваем все MX. На ISP2 не забываем сменить S-TAG на 410 и 810 соответственно.
1.2. VLANS (QFX)
Просто указываем VLAN's на QFX. CE:
QFX-CE2-2#
set vlans v210 vlan-id 210
set vlans v200 vlan-id 200
2. Настройка CE-устройств
2.1. Настройка MX
Тут всё довольно просто. Всё настраивается под Family Bridge:
root@MX-CE1-1#
ge-0/0/0 {
unit 0 {
family bridge {
interface-mode trunk;
vlan-id-list [ 100 110 ];
}
}
}
ge-0/0/1 {
unit 0 {
family bridge {
interface-mode access;
vlan-id 100;
}
}
}
ge-0/0/2 {
unit 0 {
family bridge {
interface-mode access;
vlan-id 110;
}
}
}
Аналогично настраиваем порты и на других MX. Теперь видно какому Bridge-Domain какие интерфейсы принадлежат:
root@MX-CE1-1# run show bridge domain
Routing instance Bridge domain VLAN ID Interfaces
default-switch v100 100
ge-0/0/0.0
ge-0/0/1.0
default-switch v110 110
ge-0/0/0.0
ge-0/0/2.0
2.2. Настройка QFX
Тут всё тоже довольно просто. Можно настроить порты под Family Ethernet-Switching. Конфигурация другая, но схожа с MX:
root@QFX-CE1-3#
xe-0/0/0 {
unit 0 {
family ethernet-switching {
interface-mode trunk;
vlan {
members [ 100 110 ];
}
}
}
}
xe-0/0/1 {
unit 0 {
family ethernet-switching {
interface-mode access;
vlan {
members 100;
}
}
}
}
xe-0/0/2 {
unit 0 {
family ethernet-switching {
interface-mode access;
vlan {
members 110;
}
}
}
}
Пропингуем c 210-2 210-1 и посмотрим таблицу MAC-адресов.
210-2> ping 192.168.210.1
84 bytes from 192.168.210.1 icmp_seq=1 ttl=64 time=101.063 ms
84 bytes from 192.168.210.1 icmp_seq=2 ttl=64 time=101.207 ms
84 bytes from 192.168.210.1 icmp_seq=3 ttl=64 time=100.697 ms
84 bytes from 192.168.210.1 icmp_seq=4 ttl=64 time=100.949 ms
84 bytes from 192.168.210.1 icmp_seq=5 ttl=64 time=101.252 ms
Всё ОК:
root@QFX-CE2-2# run show ethernet-switching table
MAC flags (S - static MAC, D - dynamic MAC, L - locally learned, P - Persistent static, C - Control MAC
SE - statistics enabled, NM - non configured MAC, R - remote PE MAC, O - ovsdb MAC)
Ethernet switching table : 2 entries, 2 learned
Routing instance : default-switch
Vlan MAC MAC Age Logical NH RTR
name address flags interface Index ID
v210 00:50:79:66:68:08 D - xe-0/0/2.0 0 0
v210 00:50:79:66:68:0a D - xe-0/0/
3. Настройка PEB-устройств
Тут всё настраивается аналогично CE-устройствам:
ge-0/0/0 {
unit 0 {
family bridge {
interface-mode access;
vlan-id 400;
}
}
}
ge-0/0/1 {
unit 0 {
family bridge {
interface-mode access;
vlan-id 800;
}
}
}
ge-0/0/2 {
unit 0 {
family bridge {
interface-mode trunk;
vlan-id 400;
}
}
}
ge-0/0/3 {
unit 0 {
family bridge {
interface-mode trunk;
vlan-id-list [ 400 800 ];
}
}
}
Т.е. тут мы указываем на интерфейсе наш список VLAN'ов, затем указываем, что входящие фреймы с метками 410 и 810 мы принимаем и переписываем метки на свои: 400 и 800 соответственно. Аналогично делать на ISP2-CORE не нужно, так как на ISP1-CORE мы уже настроили смену метки. Если настроить зеркальную подмену метки, то трафик не пойдёт, так как от ISP1-CORE будет ожидаться метка 400, но приходить будет уже 410 и наоборот.
Теперь трафик проходит:
Также можно вручную сбриджевать интерфейсы, только тут логика будет немного отличаться, но об этом далее:
Тут, если посмотреть на конфигурацию интерфейса ge-0/0/0, видно, что мы настраиваем и принимаем VLAN стороннего провайдера. И уже только потом меняем его на свой. Именно поэтому в unit 400 прописан vlan-id 410, после чего при помощи input-vlan-map мы поменяли его на 400 и пустили трафик в нашу сеть. Результат:
6. Приём определённых C-TAGs (MX)
Как видно на топологии, на PE4 yет смысла принимать 210 C-TAG, учить лишние маки и забивать сеть лишним трафиком. Как это выглядит сейчас:
Тут мы вручную настроили то, что мы принимаем VLAN 200 с клиентского порта и запаковываем его в 800 влан перед отправкой к ядру сети. По-другому сделать нельзя. При этом можно от разных клиентов принимать одинаковые VLANы, но они будут смешиваться из-за того, что мы вручную внесём разные юниты в разные Bridge-Domains.
7. Приём одного и того же C-TAG от разных клиентов
7.1 MX
Схема тут такая же.
Вот настройка для ISP (Идентична для обоих MX, разница только в Host-Name). Настройка на CE была разобрана в предыдущих пунктах.
Тут мы принимаем от клиента 10 VLAN и запаковывем его в 100 при отправке. Хотя, применимо скорее больше в том случае, если от аплинка Q-in-Q распаковывем к себе в сеть. Если использовать для приёма клиентских тэгов, то придётся создавать Virtual-Switch, чтобы VLANы не пересекались.