4.14. Настройка туннелирования протоколов L2

Назначение

Данная функциональность предназначена для прозрачной передачи пакетов канальных протоколов клиента (STP, LLDP и др.) через внешнюю сеть, изолируя их от инфраструктуры этой сети и позволяя клиентским устройствам взаимодействовать так, как если бы они находились в единой локальной среде.

Описание

При развертывании сети со сложной топологией могут возникнуть ситуации, когда отдельные площадки соединяются через сеть оператора связи или другую внешнюю сеть. Чтобы канальные протоколы, такие как STP и LLDP, функционировали на всех площадках так же, как и в единой сети, необходимо обеспечить прозрачную передачу пакетов этих протоколов между площадками.

Однако, стандартные L2-протоколы не рассчитаны на работу в транзитных сетях. Например, если клиентские коммутаторы начнут отправлять BPDU-пакеты STP через внешнюю сеть, оборудование в этой сети может принять их за свои и начать изменять топологию внутри своей инфраструктуры.

L2 Protocol Tunneling решает эту задачу так:

  • На входе (на пограничном устройстве со стороны клиента или на первом устройстве внешней сети) служебные кадры клиента распознаются и изменяются таким образом, что для транзитной сети они становятся неотличимы от обычного пользовательского трафика. Для этого стандартные пакеты L2-протоколов инкапсулируются во фреймы Ethernet со специально выделенным MAC-адресом назначения, задаваемым командой l2protocol tunnel-dmac [MAC] из диапазона 0100.0CCD.CDD0 - 0100.0CCD.CDD2, 010F.E200.0003, или с адресом назначения 0100.0CCD.CDD0, если эта команда отсутствует.

Примечание

Для MAC-адреса источника внешнего фрейма используется системный MAC-адрес пограничного коммутатора, выполняющего инкапсуляцию.

  • После инкапсуляции, при передаче по внешней сети, эти кадры не распознаются как пакеты стандартных L2-протоколов и не обрабатываются как служебные. Оборудование просто пересылает их как любые другие Ethernet-фреймы, ориентируясь только на MAC-адрес назначения.

  • На выходе из внешней сети пограничное устройство восстанавливает исходные заголовки пакетов L2-протоколов (удаляет внешний заголовок Ethernet) и передаёт их клиентскому оборудованию в первоначальном виде.

  • В результате клиентские коммутаторы на разных площадках могут обмениваться BPDU-кадрами, LLDP-сообщениями и т.д. так, как будто между ними нет никакой промежуточной сети.

Настройка

Пакеты протоколов L2 включают STP BPDU, LACP slow protocol, DOT1X EAPOL, CFM.

В примере ниже коммутатор “Switch1” и коммутатор “Switch2” соединяет один канал связи. Порты “eth-0-1” коммутатора “Switch1” и коммутатора “Switch2” являются настроенными туннельными портами. Порты “eth-0-2” коммутатора “Switch1” и коммутатора “Switch2” являются магистральными портами. При поступлении на порт “eth-0-1” коммутатора “Switch1” пакетов вышеперечисленных L2-протоколов, к ним добавляется новый заголовок L2, после чего пакеты с новым заголовком пересылаются через магистральный порт. После приема пакетов портом “eth-0-2” коммутатора “Switch2” новый заголовок L2 будет удален, и пакеты будут отправлены на порт “eth-0-1” коммутатора “Switch2”.

image

Рис. 4.17 Туннелирование протоколов L2

Шаг 1: Вход в режим Global Config

Switch# configure terminal

Шаг 2: Вход в режим конфигурации VLAN и создание VLAN

Switch(config)# vlan database
Switch(config-vlan)# vlan 2-4
Switch(config-vlan)# exit

Шаг 3: Создание логического соединения Ethernet (EVC) и назначения для него VLAN

Switch(config)# ethernet evc evc_c1
Switch(config-evc)# dot1q mapped-vlan 2
Switch(config-evc)# exit
Switch(config)# ethernet evc evc_c2
Switch(config-evc)# dot1q mapped-vlan 3
Switch(config-evc)# exit
Switch(config)# ethernet evc evc_c3
Switch(config-evc)# dot1q mapped-vlan 4
Switch(config-evc)# exit

Шаг 4: Включение режима инкапсуляции пакетов L2-протоколов, установка МАС-адреса назначения туннеля и определение L2-протоколов по указанным MAC-адресам назначения

Switch(config)# l2protocol enable
Switch(config)# l2protocol tunnel-dmac 0100.0CCD.CDD2
Switch(config)# l2protocol mac 3 0180.C200.0008
Switch(config)# l2protocol mac 4 0180.C200.0009
Switch(config)# l2protocol full-mac 0100.0CCC.CCCC 

Примечание

Для обеспечения большей гибкости при обработке инкапсулированных пакетов в версии AqNOS 7.6.1 появилась возможность назначать разные MAC-адреса для разных L2-протоколов. Это можно делать с помощью опции group-mac при определении L2-протоколов, которые нужно передать через внешнюю сеть командами l2protocol ( lldp | dot1x | stp | slow-proto | full-mac ) group-mac MAC или l2protocol mac MACNUM group-mac MAC в глобальном режиме конфигурации.

Шаг 5: Настройка туннельного порта, привязка L2-протоколов к EVC, настройка магистрального порта

Switch(config)# interface eth-0-1
Switch(config-if)# no shutdown
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan add 2-4
Switch(config-if)# spanning-tree port disable
Switch(config-if)# l2protocol mac 3 tunnel evc evc_c1
Switch(config-if)# l2protocol mac 4 tunnel evc evc_c2
Switch(config-if)# l2protocol full-mac tunnel evc evc_c3
Switch(config)# interface eth-0-2
Switch(config-if)# no shutdown
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan add 2-4
Switch(config-if)# l2protocol uplink enable

Шаг 6: Выход из режима Global Config

Switch(config-if)# end

Шаг 7: Проверка

Вывод информации о туннельном интерфейсе:

switch1# show l2protocol interface eth-0-1
Interface  PDU Address        MASK            Status    EVC             
           (u)-Untagged
           (t)-Tagged
=========  =================  ==============  ========  ================
eth-0-1    0180.c200.0008(u)  ffff.ffff.ffff  Tunnel    evc_c1          
eth-0-1    0180.c200.0008(t)  ffff.ffff.ffff  Tunnel    evc_c1          
eth-0-1    0180.c200.0009(u)  ffff.ffff.ffff  Tunnel    evc_c2          
eth-0-1    0180.c200.0009(t)  ffff.ffff.ffff  Tunnel    evc_c2          
eth-0-1    0100.0ccc.cccc(u)  ffff.ffff.ffff  Tunnel    evc_c3          
eth-0-1    0100.0ccc.cccc(t)  ffff.ffff.ffff  Tunnel    evc_c3          
eth-0-1    stp(u)             ffff.ffff.ffff  Peer      N/A             
eth-0-1    stp(t)             ffff.ffff.ffff  Peer      N/A             
eth-0-1    slow-proto(u)      ffff.ffff.ffff  Peer      N/A             
eth-0-1    slow-proto(t)      ffff.ffff.ffff  Peer      N/A             
eth-0-1    dot1x(u)           ffff.ffff.ffff  Peer      N/A             
eth-0-1    dot1x(t)           ffff.ffff.ffff  Peer      N/A             
eth-0-1    cfm(u)             ffff.ffff.ffff  Peer      N/A             
eth-0-1    cfm(t)             ffff.ffff.ffff  Peer      N/A             
eth-0-1    lldp(u)            ffff.ffff.ffff  Peer      N/A             
eth-0-1    lldp(t)            ffff.ffff.ffff  Peer      N/A             
eth-0-1    cdp(u)             ffff.ffff.ffff  Peer      N/A             
eth-0-1    cdp(t)             ffff.ffff.ffff  Peer      N/A             
eth-0-1    vtp(u)             ffff.ffff.ffff  Peer      N/A             
eth-0-1    vtp(t)             ffff.ffff.ffff  Peer      N/A

Вывод информации о магистральном интерфейсе:

switch# show l2protocol interface eth-0-2
Interface  PDU Address        MASK            Status    EVC             
           (u)-Untagged
           (t)-Tagged
=========  =================  ==============  ========  ================
eth-0-2    0180.c200.0008(u)  ffff.ffff.ffff  Peer      N/A             
eth-0-2    0180.c200.0008(t)  ffff.ffff.ffff  Peer      N/A             
eth-0-2    0180.c200.0009(u)  ffff.ffff.ffff  Peer      N/A             
eth-0-2    0180.c200.0009(t)  ffff.ffff.ffff  Peer      N/A             
eth-0-2    0100.0ccc.cccc(u)  ffff.ffff.ffff  Peer      N/A             
eth-0-2    0100.0ccc.cccc(t)  ffff.ffff.ffff  Peer      N/A             
eth-0-2    stp(u)             ffff.ffff.ffff  Peer      N/A             
eth-0-2    stp(t)             ffff.ffff.ffff  Peer      N/A             
eth-0-2    slow-proto(u)      ffff.ffff.ffff  Peer      N/A             
eth-0-2    slow-proto(t)      ffff.ffff.ffff  Peer      N/A             
eth-0-2    dot1x(u)           ffff.ffff.ffff  Peer      N/A             
eth-0-2    dot1x(t)           ffff.ffff.ffff  Peer      N/A             
eth-0-2    cfm(u)             ffff.ffff.ffff  Peer      N/A             
eth-0-2    cfm(t)             ffff.ffff.ffff  Peer      N/A             
eth-0-2    lldp(u)            ffff.ffff.ffff  Peer      N/A             
eth-0-2    lldp(t)            ffff.ffff.ffff  Peer      N/A             
eth-0-2    cdp(u)             ffff.ffff.ffff  Peer      N/A             
eth-0-2    cdp(t)             ffff.ffff.ffff  Peer      N/A             
eth-0-2    vtp(u)             ffff.ffff.ffff  Peer      N/A             
eth-0-2    vtp(t)             ffff.ffff.ffff  Peer      N/A             
eth-0-2    N/A                N/A             Uplink    N/A

Вывод информации о MAC-адресе назначения туннеля:

Switch# show l2protocol tunnel-dmac
Layer2 protocols tunnel destination MAC address is 0100.0ccd.cdd2