QFX5100 позволяет использовать туннелирование dot1q или Q-in-Q. Если вы когда-либо настраивали dot1q-туннелирование на EX-коммутаторе, эта конфигурация сильно отличается от того, к чему вы привыкли. В этой статье предлагается попытка прояснить и объяснить настройку туннеля dot1q на автономном QFX5100 без лицензии с расширенными функциями.В следующих примерах я буду использовать следующую настройку:

QFX Q in Q

Я настрою несколько интерфейсов vlan на маршрутизаторах MX104 (Mars и Jupiter) и установлю IP-соединение между этими интерфейсами.

Начнем с настройки QFX5100. Чтобы создать dot1q-туннель между двумя портами в примере, я начал с инкапсуляции интерфейсов.

set interfaces xe-0/0/46 vlan-tagging
set interfaces xe-0/0/46 encapsulation extended-vlan-bridge
set interfaces xe-0/0/47 vlan-tagging
set interfaces xe-0/0/47 encapsulation extended-vlan-bridge

После этого я применил конфигурацию блока интерфейса. Эта конфигурация включает карту ввода и вывода vlan. Входная карта будет помещать тег в кадры, отправляемые в QFX, а выходная карта просто выталкивает внешний тег.
set interfaces xe-0/0/46 unit 10 input-vlan-map push
set interfaces xe-0/0/46 unit 10 input-vlan-map vlan-id 10
set interfaces xe-0/0/46 unit 10 output-vlan-map pop

set interfaces xe-0/0/47 unit 10 input-vlan-map push
set interfaces xe-0/0/47 unit 10 input-vlan-map vlan-id 10
set interfaces xe-0/0/47 unit 10 output-vlan-map pop

После этого нам нужно определить, какие вланы разрешены в «туннеле». Начнем с vlan 1500:

set interfaces xe-0/0/46 unit 10 vlan-id-list 1500
set interfaces xe-0/0/47 unit 10 vlan-id-list 1500

Последнее, что нам нужно настроить, это dot1q vlan (это нужно настроить без тега):

set vlans Q-in-Q interface xe-0/0/46.10
set vlans Q-in-Q interface xe-0/0/47.10

Полная конфигурация dot1q-туннеля на QFX5100 в итоге будет выглядеть так:

set interfaces xe-0/0/46 description MX104-MARS_xe-1/2/0
set interfaces xe-0/0/46 vlan-tagging
set interfaces xe-0/0/46 encapsulation extended-vlan-bridge
set interfaces xe-0/0/46 unit 10 vlan-id-list 1500
set interfaces xe-0/0/46 unit 10 input-vlan-map push
set interfaces xe-0/0/46 unit 10 input-vlan-map vlan-id 10
set interfaces xe-0/0/46 unit 10 output-vlan-map pop

set interfaces xe-0/0/47 description MX104-JUPITER_xe-1/3/0
set interfaces xe-0/0/47 vlan-tagging
set interfaces xe-0/0/47 encapsulation extended-vlan-bridge
set interfaces xe-0/0/47 unit 10 vlan-id-list 1500
set interfaces xe-0/0/47 unit 10 input-vlan-map push
set interfaces xe-0/0/47 unit 10 input-vlan-map vlan-id 10
set interfaces xe-0/0/47 unit 10 output-vlan-map pop

set vlans Q-in-Q interface xe-0/0/46.10
set vlans Q-in-Q interface xe-0/0/47.10

Применив конфигурацию, переходим к MX-роутерам и настраиваем сабинтерфейс с vlan-id 1500.

Mars:

set interfaces xe-1/2/0 description QFX5100-xe-0/0/46
set interfaces xe-1/2/0 flexible-vlan-tagging
set interfaces xe-1/2/0 encapsulation flexible-ethernet-services
set interfaces xe-1/2/0 unit 1500 vlan-id 1500
set interfaces xe-1/2/0 unit 1500 family inet address 192.168.1.1/24

Jupiter:

set interfaces xe-1/3/0 description QFX5100-xe-0/0/47
set interfaces xe-1/3/0 flexible-vlan-tagging
set interfaces xe-1/3/0 encapsulation flexible-ethernet-services
set interfaces xe-1/3/0 unit 1500 vlan-id 1500
set interfaces xe-1/3/0 unit 1500 family inet address 192.168.1.2/24

После завершения настройки и когда мы начнем отправлять трафик с маршрутизатора Mars на маршрутизатор Jupiter, произойдет следующее:

QFX Q in Q

QFX будет передавать vlan-id 10 при входе, а тег извлекается (удаляется) при выходе. Давайте проверим связь между маршрутизаторами:

play@MX104-TEST-HB:Mars> ping 192.168.1.2 size 1472 do-not-fragment
PING 192.168.1.2 (192.168.1.2): 1472 data bytes
1480 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=1.066 ms
1480 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=1.001 ms
^C
--- 192.168.1.2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 1.001/1.034/1.066/0.032 ms

play@MX104-TEST-HB:Mars> show arp no-resolve | match 192.168.1.2
cc:e1:7f:7a:d4:a0 192.168.1.2     xe-1/2/0.1500        none

На QFX мы видим следующее:

play@QFX5100-play> show ethernet-switching table

MAC flags (S - static MAC, D - dynamic MAC, L - locally learned, P - Persistent static
           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
    name                address             flags              interface
    Q-in-Q              cc:e1:7f:7a:d3:f7   D             -   xe-0/0/46.10
    Q-in-Q              cc:e1:7f:7a:d4:a0   D             -   xe-0/0/47.10

В текущей конфигурации QFX не волнует, сколько тегов MX прикрепляет к пакету. Чтобы проверить это, давайте добавим vlan 1000 в список разрешенных vlan на QFX и заставим MX отправлять пакеты с двумя тегами по этому каналу.

Jupiter:

set interfaces xe-1/3/0 unit 1000 vlan-tags outer 1000
set interfaces xe-1/3/0 unit 1000 vlan-tags inner 2500
set interfaces xe-1/3/0 unit 1000 family inet address 10.0.0.1/24

On Mars:

set interfaces xe-1/2/0 unit 1000 vlan-tags outer 1000
set interfaces xe-1/2/0 unit 1000 vlan-tags inner 2500
set interfaces xe-1/2/0 unit 1000 family inet address 10.0.0.2/24

On the QFX:

set interfaces xe-0/0/46 unit 10 vlan-id-list 1000
set interfaces xe-0/0/47 unit 10 vlan-id-list 1000

Эта последняя команда только добавит vlan в список vlan-id-list, она не удалит ранее настроенный vlan:

play@QFX5100-play> show configuration interfaces xe-0/0/47
description MX104-JUPITER_xe-1/3/0;
vlan-tagging;
encapsulation extended-vlan-bridge;
unit 10 {
    vlan-id-list [ 1000 1500 ];
    input-vlan-map {
        push;
        vlan-id 10;
    }
    output-vlan-map pop;
}

После применения всей конфигурации мы можем наблюдать следующее:

play@MX104-TEST-HB:Jupiter> show interfaces xe-1/3/0.1000
  Logical interface xe-1/3/0.1000 (Index 462) (SNMP ifIndex 656)
    Flags: SNMP-Traps 0x0 VLAN-Tag [ 0x8100.1000 0x8100.2500 ]  Encapsulation: ENET2
    Input packets : 24
    Output packets: 35
    Protocol inet, MTU: 1500
      Flags: Sendbcast-pkt-to-re
      Addresses, Flags: Is-Preferred Is-Primary
        Destination: 10.0.0/24, Local: 10.0.0.1, Broadcast: 10.0.0.255
    Protocol multiservice, MTU: Unlimited

play@MX104-TEST-HB:Jupiter> ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: icmp_seq=0 ttl=64 time=0.643 ms
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.593 ms
^C
--- 10.0.0.2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.593/0.618/0.643/0.025 ms
«Старый» способ EX был немного проще. На коммутаторе EX (большинство из них) вы можете просто настроить это:
set ethernet-switching-options dot1q-tunneling ether-type 0x8100
set vlans example vlan-id 2000
set vlans example dot1q-tunneling customer-vlans 1-4094

И применим его к интерфейсу:

set interfaces ge-0/1/3 unit 0 family ethernet-switching port-mode trunk
set interfaces ge-0/1/3 unit 0 family ethernet-switching vlan members 2000
И если вы хотите туннелировать (v)stp, lldp и т. д., просто добавьте следующее:
set vlans example dot1q-tunneling layer2-protocol-tunneling all

Для туннелирования протоколов уровня 2 на QFX находится в разделе конфигурации [protocols layer2-control]. Похоже, это не работает с представленной здесь конфигурацией QFX. Он работает на интерфейсах с включенным семейством etherswitching. К сожалению, мне не удалось заставить dot1q-tunneling работать с семейством etherswitching, включенным на интерфейсе.

Оригинал