Hello! Bonjour! Hola! Nǐ hǎo! Здравствуйте!

Сегодня поговорим о наболевшем – совместимости западного сетевого оборудования с отечественным. У нас уже есть опыт построения фабрики ЦОДов на российских коммутаторах Eltex. И мы даже проверили ее работоспособность под нагрузкой. Вывод – работает.  Бери и делай – построить фабрику с нуля на едином вендоре проблем не составляет. 

Но что, если нам нужно расширить существующую фабрику ЦОДов или заменить только один, вышедший из строя, коммутатор?

Можем ли мы использовать оборудование Eltex в комбинации с другими вендорами? Давайте проверим. А проверять мы будем на всем привычном оборудовании Cisco (Hello!) и Huawei (Nǐ hǎo!).

Топология

Конечно, правильным подходом было бы собрать фабрики на Cisco и Huawei, и плавно менять/добавлять оборудование Eltex, но мы пойдем другим путем. Ведь у нас уже есть фабрика Eltex, к которой мы привыкли, и можно добавлять/менять оборудование в ней (помните правило из школы: от перестановки мест слагаемых сумма не меняется).

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

Нам не сильно сейчас важно, что у нас 2 площадки, поэтому сократим схему, заменим часть коммутаторов и будем тестировать такую топологию:

Коммутаторы Spine нам тоже не принципиально тестировать, так как они, по большому счету, просто BGP Route Reflector.

Чтобы всё было честно и прозрачно, вот какое оборудование мы будем проверять на совместимость:

Вендор

Модель

Версия ПО

Cisco Systems

Nexus9000 C93180YC-EX

10.1(2)

Huawei

CE6866-48S8CQ-P

V300R024C00SPC500

L3-схему дополним коммутаторами Huawei, а Cisco должна взять на себя роль коммутатора Leaf1-1:

Теперь у нас соседство LLDP на коммутаторах Spine:

eSpine1-1#sh lldp neighbors

System capability legend:

B - Bridge; R - Router; W - Wlan Access Point; T - telephone;

D - DOCSIS Cable Device; H - Host; r - Repeater;

TP - Two Ports MAC Relay; S - S-VLAN; C - C-VLAN; O - Other

   Port        Device ID          Port ID               System Name           Capabilities  TTL

---------- ----------------- ----------------- ------------------------------ ------------ -----

hu1/0/1    a0:23:9f:3b:35:76   Ethernet1/49               cLeaf1-1                B, R      94

hu1/0/2    90:54:b7:59:ff:80      hu1/0/5                 eLeaf1-2                B, R      96

hu1/0/3    28:53:4e:83:26:51    100GE1/0/7                hLeaf1-3                B, R      104

eSpine1-2#sh lldp neighbors

System capability legend:

B - Bridge; R - Router; W - Wlan Access Point; T - telephone;

D - DOCSIS Cable Device; H - Host; r - Repeater;

TP - Two Ports MAC Relay; S - S-VLAN; C - C-VLAN; O - Other

   Port        Device ID          Port ID               System Name           Capabilities  TTL

---------- ----------------- ----------------- ------------------------------ ------------ -----

hu1/0/1    a0:23:9f:3b:35:7a   Ethernet1/50               cLeaf1-1                B, R      105

hu1/0/2    90:54:b7:59:ff:80      hu1/0/6                 eLeaf1-2                B, R      106

hu1/0/3    28:53:4e:83:26:51    100GE1/0/8                hLeaf1-3                B, R      104

Интересно наблюдать за тем, как разные вендоры дают имена интерфейсов (несмотря на то, что это всё 100G интерфейсы): Ethernet1/50, hu1/0/6, 100GE1/0/8. А вот службе эксплуатации сетей такое разнообразие уже совсем не нравится.

Поэтому не стоит строить сети по принципу «я его слепила из того, что было». Ведь когда у вас единая линейка используемого оборудования, единая версия ПО на сетевом оборудовании, то и вероятность несовместимости ниже, и количество проблем будет меньше. Кстати, унификация оборудования и версии ПО называется у них там термином baseline. Поэтому вы можете иногда услышать фразу «выровнять baseline» — это будет означать, что, например, не на всем оборудовании стоит одна и та же версия ПО, а значит, вероятность нетипичных ошибок будет выше. А если у вас есть процессы автоматизации настроек или системы управления, то поддерживать все возможные варианты будет крайне трудозатратно.

Что ж, со схемами определились. Давайте настраивать!

Настройка Underlay

Вы ведь уже обратили внимание, что eLeaf1-1 у нас поменялся на cLeaf1-1, а hLeaf1-3 – это новый коммутатор? Это неслучайно. Мы проверим потребность в добавлении настроек в зависимости от вендора.

Настроим cLeaf1-1:

feature ospf

feature bgp

feature interface-vlan

feature vn-segment-vlan-based

feature lldp

feature bfd


interface Ethernet1/49

  description to_spine

  speed 100000

  duplex full

  fec rs-fec

  no negotiate auto

  ip address 10.1.1.2/30

  ip ospf mtu-ignore

  ip router ospf 100 area 0.0.0.0

  no shutdown


interface Ethernet1/50

  description to_spine

  speed 100000

  duplex full

  fec rs-fec

  no negotiate auto

  ip address 10.1.1.10/30

  ip ospf mtu-ignore

  ip router ospf 100 area 0.0.0.0

  no shutdown


interface loopback0

  ip address 10.1.0.13/32

  ip router ospf 100 area 0.0.0.0


router ospf 100

  router-id 10.1.0.13

Настроим hLeaf1-3:

interface 100GE1/0/7

 undo portswitch

 description eSpine1-1

 ip address 10.1.1.18 255.255.255.252

 device transceiver 100GBASE-COPPER

 negotiation disable

 fec mode rs

#

interface 100GE1/0/8

 undo portswitch

 description eSpine1-2

 ip address 10.1.1.22 255.255.255.252

 device transceiver 100GBASE-COPPER

 negotiation disable

 fec mode rs

interface LoopBack0

 ip address 10.1.0.18 255.255.255.255


ospf 100 router-id 10.1.0.18

 area 0.0.0.0

  network 10.1.0.18 0.0.0.0

  network 10.1.1.18 0.0.0.0

  network 10.1.1.22 0.0.0.0

Проверим соседство:

cLeaf1-1# sh ip ospf neighbors

 OSPF Process ID 100 VRF default

 Total number of neighbors: 2

 Neighbor ID     Pri State            Up Time  Address         Interface

 10.1.0.11         1 FULL/BDR         2w0d     10.1.1.1        Eth1/49

 10.1.0.12         1 FULL/BDR         2w0d     10.1.1.9        Eth1/50

[~hLeaf1-3]dis ospf peer brief


(M) Indicates MADJ neighbor


OSPF Process 100 with Router ID 10.1.0.18

                   Peer Statistic Information

Total number of peer(s): 2

 Peer(s) in full state: 2

-----------------------------------------------------------------------------

 Area Id         Interface                  Neighbor id          State

 0.0.0.0         100GE1/0/7                 10.1.0.11            Full

 0.0.0.0         100GE1/0/8                 10.1.0.12            Full

-----------------------------------------------------------------------------

И проверим, что IP-адреса Loopback приходят на коммутаторы Spine:

eSpine1-1#show ip route | include 10.1.0.1[38]

O    10.1.0.13/32 [30/11] via 10.1.1.2, 339:07:07, hu1/0/1

O    10.1.0.18/32 [30/10] via 10.1.1.18, 64:36:07, hu1/0/3

eSpine1-2#show ip route | include 10.1.0.1[38]

O    10.1.0.13/32 [30/11] via 10.1.1.10, 339:06:35, hu1/0/1

O    10.1.0.18/32 [30/10] via 10.1.1.22, 64:35:39, hu1/0/3

Коммутаторы Spine по OSPF видны, Loopback-адреса коммутаторов Leaf анонсируются, можем переходить к настройке BGP.

Заполним таблицу, как и ранее это делали:

Коммутатор

BGP AS

BGP Update source (Loopback 1)

eSpine1-1

65001

10.1.0.11

eSpine1-2

65001

10.1.0.12

cLeaf1-1

65001

10.1.0.13

eLeaf1-2

65001

10.1.0.14

hLeaf1-2

65001

10.1.0.18 (адреса 15-17 заняты под Pod-2)

Настройки BGP для cLeaf1-1:

router bgp 65001

  router-id 10.1.0.13

  log-neighbor-changes

  address-family l2vpn evpn

  template peer RR

    bfd

    remote-as 65001

    password 3 173f895b54107e20

    update-source loopback0

    address-family ipv4 unicast

      soft-reconfiguration inbound

    address-family l2vpn evpn

      send-community

      send-community extended

  neighbor 10.1.0.11

    inherit peer RR

    remote-as 65001

    no shutdown

  neighbor 10.1.0.12

    inherit peer RR

    remote-as 65001

    no shutdown

Настройки BGP для hLeaf1-3:

bfd

bgp 65001

 router-id 10.1.0.18

 private-4-byte-as enable

 group RR internal

 peer RR connect-interface LoopBack0

 peer RR password simple Eltex

 peer RR bfd enable

 peer 10.1.0.11 as-number 65001

 peer 10.1.0.11 group RR

 peer 10.1.0.12 as-number 65001

 peer 10.1.0.12 group RR

 #

 ipv4-family unicast

  peer RR enable

  peer RR advertise-community

  peer RR advertise-ext-community

  peer 10.1.0.11 enable

  peer 10.1.0.11 group RR

  peer 10.1.0.12 enable

  peer 10.1.0.12 group RR

Не забываем, что hLeaf1-3 – это новое устройство и его надо добавить в конфигурацию коммутаторов eSpine1-1 и eSpine1-2:

router bgp 65001

 neighbor 10.1.0.18

  peer-group RRC

  address-family ipv4 unicast

  exit

  !

  address-family l2vpn evpn

  exit

 exit

Кто повнимательнее – заметил, что у hLeaf1-3 не хватает части настройки (об этом чуть позже).

А пока давайте проверим BGP связность.

cLeaf1-1# sh ip bgp sum

BGP summary information for VRF default, address family IPv4 Unicast

BGP router identifier 10.1.0.13, local AS number 65001

BGP table version is 5, IPv4 Unicast config peers 2, capable peers 2

0 network entries and 0 paths using 0 bytes of memory

BGP attribute entries [0/0], BGP AS path entries [0/0]

BGP community entries [0/0], BGP clusterlist entries [6/40]


Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

10.1.0.11       4 65001  115150   40885        5    0    0 00:11:30 0

10.1.0.12       4 65001  118980   40885        5    0    0 00:11:30 0

[~hLeaf1-3]dis bgp peer

 BGP local router ID        : 10.1.0.18

 Local AS number            : 65001

 Total number of peers      : 2

 Peers in established state : 2

  Peer                             V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State  PrefRcv

  10.1.0.11                        4       65001      155      173     0 01:14:06 Established        0

  10.1.0.12                        4       65001      152      170     0 01:12:26 Established        0

Обратите внимание, что количество полученных префиксов у нас равно 0.

И так как у нас BGP завязан на BFD, то проверим сразу и его:

cLeaf1-1# sh bfd neighbors

OurAddr         NeighAddr       LD/RD                 RH/RS           Holdown(mult)     State       Int                   Vrf                              Type

10.1.0.13       10.1.0.11       1090519043/2147483655 Up              634(3)            Up          Lo0                   default                          MH

10.1.0.13       10.1.0.12       1090519044/2147483654 Up              695(3)            Up          Lo0                   default                          MH

[~hLeaf1-3]dis bfd session all

S: Static session

D: Dynamic session

IP: IP session

IF: Single-hop session

PEER: Multi-hop session

AUTO: Automatically negotiated session

VXLAN: VXLAN session

(w): State in WTR

(*): State is invalid

Total UP/DOWN Session Number : 2/0

--------------------------------------------------------------------------------

Local      Remote     PeerIpAddr      State     Type        InterfaceName

--------------------------------------------------------------------------------

16386      2147483654 10.1.0.11       Up        D/IP-PEER          -

16388      2147483653 10.1.0.12       Up        D/IP-PEER          -

--------------------------------------------------------------------------------

Так почему же у нас 0 принятых префиксов? Всё просто – мы используем BGP для EVPN-семейства, поэтому нужно проверять именно для него:

cLeaf1-1# sh bgp l2vpn evpn summary

BGP summary information for VRF default, address family L2VPN EVPN

BGP router identifier 10.1.0.13, local AS number 65001

BGP table version is 361362, L2VPN EVPN config peers 2, capable peers 2

46 network entries and 66 paths using 11592 bytes of memory

BGP attribute entries [46/8464], BGP AS path entries [0/0]

BGP community entries [0/0], BGP clusterlist entries [6/40]

Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd

10.1.0.11       4 65001  115527   41015   361362    0    0 01:16:11 0

10.1.0.12       4 65001  119376   41015   361362    0    0 01:16:11 0

А почему не вся часть конфигурации BGP на Huawei была прописана? На Huawei тоже есть что-то вроде feature-set («evpn-overlay»), который нужно включать, чтобы появились нужные настройки.

Ведь изначально в секции BGP мы даже не можем настроить EVPN:

[~hLeaf1-3-bgp]?

Current view commands:

<пропущено>

  keep-all-routes            Keep all original route's information

  load                       Load operation

  load-balancing             Change route load-balancing

<пропущено>

Донастроим hLeaf1-3:

evpn-overlay enable

bgp 65001

 l2vpn-family evpn                        <- появилась после включения evpn-overlay

  policy vpn-target

  peer RR enable

  peer RR advertise irb

  peer RR advertise-community

  peer 10.1.0.11 enable

  peer 10.1.0.11 group RR

  peer 10.1.0.12 enable

  peer 10.1.0.12 group RR

[~hLeaf1-3]dis bgp evpn group RR

Group in EVPN:

 BGP peer-group                       : RR

 Remote AS                            : 65001

 Authentication type configured       : MD5

 Group's BFD has been enabled

 Type                                 : internal

 Configured hold timer value   : 180

 Keepalive timer value         : 60

 Connect-retry timer value     : 32

 Minimum route advertisement interval is 15 seconds

 Connect-interface has been configured

 PeerSession Members                  :

 10.1.0.11                               10.1.0.12

 Send community has been configured

 Peer Preferred Value: 0

 No routing policy is configured

 Peer Members:

  Peer            V          AS  MsgRcvd  MsgSent  OutQ  Up/Down       State  PrefRcv

  10.1.0.11       4       65001       48        9     0 00:01:50 Established        0

  10.1.0.12       4       65001       50        9     0 00:01:50 Established        0

BGP EVPN установился с обоими вендорами. Пора настраивать Overlay!

Настройка Overlay

Ну что, готовы к гению технической мысли? Вот наша схема overlay:

Тем временем где-то высококвалифицированный инженер с регалиями CCIE/HCIE получает психический шок:

Да не переживайте вы так! Мы же не просто пытаемся разобраться в вопросах совместимости, но и попробовать по пути ответить на вопросы: «а если так?», «почему нет?», «кто-то проверял?» и даже «какого …………?». Пробуем, комментируем, корректируем. Кстати, на коммутаторах Eltex я легко соберу такую схему.

Настройки L2/L3 VNI

Итак, настройки cLeaf1-1:

nv overlay evpn

feature fabric forwarding

feature interface-vlan

feature vn-segment-vlan-based

feature nv overlay

fabric forwarding anycast-gateway-mac 1234.5678.abcd

vlan 10,20,3000-3001

vlan 10

  vn-segment 20010

vlan 20

  vn-segment 20020

vlan 3000

  vn-segment 30000

vlan 3001

  vn-segment 30001

vrf context A

  vni 30000

  rd 10.1.0.13:30000

  address-family ipv4 unicast

    route-target import 1.2.3.4:3000

    route-target import 1.2.3.4:3000 evpn

    route-target export 1.2.3.4:3000

    route-target export 1.2.3.4:3000 evpn

vrf context B

  vni 30001

  rd 10.1.0.13:30001

  address-family ipv4 unicast

    route-target import 1.2.3.4:3001

    route-target import 1.2.3.4:3001 evpn

    route-target export 1.2.3.4:3001

    route-target export 1.2.3.4:3001 evpn

interface Vlan10

  no shutdown

  vrf member A

  ip address 10.1.10.1/24

  fabric forwarding mode anycast-gateway

interface Vlan20

  no shutdown

  vrf member B

  ip address 10.1.20.1/24

  fabric forwarding mode anycast-gateway

interface Vlan3000

  no shutdown

  vrf member A

  ip forward

interface Vlan3001

  no shutdown

  vrf member B

  ip forward

interface nve1

  no shutdown

  host-reachability protocol bgp

  source-interface loopback0

  member vni 20010

    suppress-arp

    ingress-replication protocol bgp

  member vni 20020

    suppress-arp

    ingress-replication protocol bgp

  member vni 30000 associate-vrf

  member vni 30001 associate-vrf

evpn

  vni 20010 l2

    rd 10.1.0.13:20010

    route-target import 10.1.10.0:10

    route-target export 10.1.10.0:10

  vni 20020 l2

    rd 10.1.0.13:20020

    route-target import 10.1.20.0:20

    route-target export 10.1.20.0:20

Настройки eLeaf1-2:

ip vrf A

 vni 30000

 route-target both 1.2.3.4:3000

exit

!

ip vrf B

 vni 30001

 route-target both 1.2.3.4:3001

exit

!

!

vlan database

 vlan 11,20,3000-3001

exit

!

port jumbo-frame

vxlan VLAN11

 vni 20011

 arp-suppression

 vlan 11

 route-target both 10.1.11.0:11

exit

!

vxlan VLAN20

 vni 20020

 arp-suppression

 vlan 20

 route-target both 10.1.20.0:20

exit

!

vxlan VRF_A

 vni 30000 ip-routing

 vlan 3000

exit                                                  

!                                                     

vxlan VRF_B                                           

 vni 30001 ip-routing                                 

 vlan 3001                                            

exit       

anycast-gateway mac-address 12:34:56:78:ab:cd

interface vlan 11

 name CustomerA-2

 ip vrf A                                             

 ip address 10.1.11.1 255.255.255.0

 anycast-gateway

exit

!

interface vlan 20

 name CustomerB-1

 ip vrf B

 ip address 10.1.20.1 255.255.255.0

 anycast-gateway

exit

!

interface vlan 3000

 name VRF_A

 ip vrf A

exit

!

interface vlan 3001

 name VRF_B

 ip vrf B

exit

router bgp 65001

 vrf A

  address-family ipv4 unicast

   network 0.0.0.0 mask 0.0.0.0

   redistribute connected

  exit

 exit

 !

 vrf B

  address-family ipv4 unicast

   network 0.0.0.0 mask 0.0.0.0

   redistribute connected

  exit

 exit

exit

Настройки hLeaf1-3:

evpn-overlay enable

evpn

 mac-duplication

ip vpn-instance A

 ipv4-family    

  route-distinguisher 10.1.0.18:30000

  vpn-target 1.2.3.4:3000 export-extcommunity evpn

  vpn-target 1.2.3.4:3000 import-extcommunity evpn

 vxlan vni 3000 

#               

ip vpn-instance B

 ipv4-family    

  route-distinguisher 10.1.0.18:30001

  vpn-target 1.2.3.4:3001 export-extcommunity evpn

  vpn-target 1.2.3.4:3001 import-extcommunity evpn

 vxlan vni 3001

bridge-domain 12

 vxlan vni 20012

 #              

 evpn           

  route-distinguisher 10.1.0.18:20012

  vpn-target 10.1.12.0:12 export-extcommunity

  vpn-target 10.1.12.0:12 import-extcommunity

#               

bridge-domain 21

 vxlan vni 20021

 #              

 evpn           

  route-distinguisher 10.1.0.18:20021

  vpn-target 10.1.21.0:21 export-extcommunity

  vpn-target 10.1.21.0:21 import-extcommunity

interface Vbdif12

 ip binding vpn-instance A

 ip address 10.1.12.1 255.255.255.0

 mac-address 1234-5678-abcd

 vxlan anycast-gateway enable

 arp collect host enable

 arp direct-route enable

#               

interface Vbdif21

 ip binding vpn-instance B

 ip address 10.1.21.1 255.255.255.0

 mac-address 1234-5678-abcd

 vxlan anycast-gateway enable

 arp collect host enable

 arp direct-route enable

interface Nve1  

 source 10.1.0.18

 vni 20012 head-end peer-list protocol bgp

 vni 20021 head-end peer-list protocol bgp

bgp 65001

 ipv4-family vpn-instance A

  import-route direct

  advertise l2vpn evpn

 #              

 ipv4-family vpn-instance B

  import-route direct

  advertise l2vpn evpn

Настройки EVPN Multihoming

Перед тем, как настраивать EVPN Multihoming, давайте вспомним, что мы успешно настроили его в фабрике Eltex. Но сейчас нам надо настроить его для пары Eltex/Cisco и Eltex/Huawei.

Какие же команды используются у этих заморских вендоров?

Cisco:

evpn esi multihoming – глобальная команда на включение

Huawei:

interface eth-trunk <X>

 esi xxxx.xxxx.xxxx.xxxx.xxxx

Посмотрим, что у нас:

Cisco:

cLeaf1-1(config)# evpn ?

  <CR>           

  multisite      Multisite

  storm-control  Storm-control

Huawei:

[~hLeaf1-3-Eth-Trunk0]e?

  enable                                  erps

Ни там, ни там нет нужных нам команд… Ну, берем инструкцию, читаем.

Cisco:

See the following limitations for configuring VXLAN EVPN multi-homing:

EVPN multi-homing is only supported on first generation Cisco Nexus 9300 platform switches. It is not supported on Cisco Nexus 9200 switches nor on Cisco Nexus 9300-EX switches (and newer models)

Huawei:

Constraints on the EVPN ESI All-Active Function

Only the CE5881, CE6881, CE6881K, CE6863K, CE6863E, CE6881E, and CE6863 support the EVPN ESI all-active function

Смотрим на наши коммутаторы:

cLeaf1-1# show version 

Software

  NXOS: version 10.1(2)

Hardware

  cisco Nexus9000 C93180YC-EX chassis

[~hLeaf1-3]dis version 

YunShan OS, Version 1.24.0.1 (CE6800 V300R024C00SPC500)

HUAWEI CE6866-48S8CQ-P

Джекпот! Ни Cisco, ни Huawei не поддерживают EVPN Multihoming на наших коммутаторах.

А значит проверить данный функционал на совместимость мы не сможем. А еще это значит, что если вы предполагаете менять коммутаторы Cisco или Huawei в ЦОД, то делать это нужно как минимум парами, потому что эти вендоры используют VPC/MLAG для организации отказоустойчивых подключений (ограничение в 2 коммутатора). А вот если понадобится заменить 1 коммутатор Eltex, то можно использовать любой коммутатор, который поддерживает EVPN Multihoming, потому что это не проприетарная технология.

Что ж, прокомментировали, теперь подкорректируем нашу схему:

Настройки Access ports

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

TestEndpoint#sh lldp neighbors 

Index        Local Intf           Hold-time  Capability     Peer Intf                        Device ID          

1            100ge0/49            120        B,R            Ethernet1/53                     cLeaf1-1           

2            100ge0/52            120        B,R            hu1/0/2                          eLeaf1-2           

3            100ge0/54            120        B,R            100GE1/0/1                       hLeaf1-3  

Настроим соответствующие Peer Intf на коммутаторах.

cLeaf1-1:

interface Ethernet1/53

  switchport

  switchport mode trunk

  switchport trunk allowed vlan 10,20

  speed 100000

  duplex full

  fec rs-fec

  no negotiate auto

  no shutdown

eLeaf1-2:

interface HundredGigabitEthernet1/0/2

 switchport mode trunk

 switchport trunk allowed vlan add 11,20

 fec cl91

exit

hLeaf1-3:

interface 100GE1/0/1

 port link-type trunk

 device transceiver 100GBASE-COPPER

 negotiation disable

 fec mode rs

#

interface 100GE1/0/1.12 mode l2

 encapsulation dot1q vid 12

 bridge-domain 12

#               

interface 100GE1/0/1.21 mode l2

 encapsulation dot1q vid 21

 bridge-domain 21

Обратили внимание на масштаб трагедии, если нам, скажем, понадобится на 48 портов Huawei прописать 100 VLAN в какую-нибудь систему виртуализации? Придется создавать 48*100=4800 подинтерфейсов!

Давайте проверять.

Проверка

Проверка связности

Для простоты будем проверять связность от имени конечных IP с адресами 10.1.10.100 (VRF A) и 10.1.20.100 (VRF B) – они расположены за коммутатором Cisco.

Тест доступности из VRF A:

Доступность шлюза на коммутаторе Cisco, VRF A из VRF A:

TestEndpoint#ping vrf Pod1VRFA 10.1.10.1  

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.10.1 , timeout is 0 seconds:

!!!!!

Success rate is 100% (5/5). Round-trip min/avg/max = 1/1/1 ms.

Доступность хоста на коммутаторе Eltex, VRF A из VRF A:

TestEndpoint#ping vrf Pod1VRFA 10.1.11.100

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.11.100 , timeout is 0 seconds:

!!!!!

Success rate is 100% (5/5). Round-trip min/avg/max = 1/1/1 ms.

Доступность хоста на коммутаторе Huawei, VRF A из VRF A:

TestEndpoint#ping vrf Pod1VRFA 10.1.12.100

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.12.100 , timeout is 0 seconds:

!!!!!

Success rate is 100% (5/5). Round-trip min/avg/max = 1/1/1 ms.

Доступность хоста на коммутаторе Cisco, VRF B из VRF A:

TestEndpoint#ping vrf Pod1VRFA 10.1.20.100

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.20.100 , timeout is 0 seconds:

.....

Success rate is 0% (0/5). 

Доступность хоста на коммутаторе Eltex, VRF B из VRF A:

TestEndpoint#ping vrf Pod1VRFA 10.1.20.101

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.20.101 , timeout is 0 seconds:

.....

Success rate is 0% (0/5). 

Доступность хоста на коммутаторе Huawei, VRF B из VRF A:

TestEndpoint#ping vrf Pod1VRFA 10.1.21.100

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.21.100 , timeout is 0 seconds:

.....

Success rate is 0% (0/5).

Тест доступности из VRF B:

Доступность шлюза на коммутаторе Cisco, VRF B из VRF B:

TestEndpoint#ping vrf Pod1VRFB 10.1.20.1

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.20.1 , timeout is 0 seconds:

!!!!!

Success rate is 100% (5/5). Round-trip min/avg/max = 1/1/1 ms.

Доступность хоста на коммутаторе Eltex, VRF B из VRF B:

TestEndpoint#ping vrf Pod1VRFB 10.1.20.101

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.20.101 , timeout is 0 seconds:

!!!!!

Success rate is 100% (5/5). Round-trip min/avg/max = 1/1/1 ms.

Доступность хоста на коммутаторе Huawei, VRF B из VRF B:

TestEndpoint#ping vrf Pod1VRFB 10.1.21.100

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.21.100 , timeout is 0 seconds:

!!!!!

Success rate is 100% (5/5). Round-trip min/avg/max = 1/1/1 ms.

Доступность хоста на коммутаторе Cisco, VRF A из VRF B:

TestEndpoint#ping vrf Pod1VRFB 10.1.10.100

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.10.100 , timeout is 0 seconds:

.....

Success rate is 0% (0/5).

Доступность хоста на коммутаторе Eltex, VRF A из VRF B:

TestEndpoint#ping vrf Pod1VRFB 10.1.11.100

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.11.100 , timeout is 0 seconds:

.....

Success rate is 0% (0/5).

Доступность хоста на коммутаторе Huawei, VRF A из VRF B:

TestEndpoint#ping vrf Pod1VRFB 10.1.12.100

Press key (ctrl + shift + 6) interrupt it.

Sending 5, 76-byte ICMP Echos to 10.1.12.100 , timeout is 0 seconds:

.....

Success rate is 0% (0/5).

Всё работает! Даже не так – всё работает, как задумано! Или нет? Проверим на коммутаторах?

Проверка на коммутаторах

Посмотрим таблицу EVPN на Cisco:

cLeaf1-1# sh bgp l2vpn evpn | i 10.1....10[01]

*>l[2]:[0]:[0]:[48]:[ccd8.1f47.173d]:[32]:[10.1.10.100]/272

*>i[2]:[0]:[0]:[48]:[aaaa.bbbb.cc52]:[32]:[10.1.11.100]/272

*>i[2]:[0]:[0]:[48]:[aaaa.bbbb.cc52]:[32]:[10.1.20.101]/272

*>l[2]:[0]:[0]:[48]:[ccd8.1f47.173d]:[32]:[10.1.20.100]/272

* i[2]:[0]:[0]:[48]:[aaaa.bbbb.cc52]:[32]:[10.1.11.100]/272

*>i[2]:[0]:[0]:[48]:[aaaa.bbbb.cc52]:[32]:[10.1.20.101]/272

*>i[5]:[0]:[0]:[32]:[10.1.12.100]/224

*>i[5]:[0]:[0]:[32]:[10.1.21.100]/224

*>i[2]:[0]:[0]:[48]:[aaaa.bbbb.cc52]:[32]:[10.1.11.100]/272

*>i[5]:[0]:[0]:[32]:[10.1.12.100]/224

*>i[2]:[0]:[0]:[48]:[aaaa.bbbb.cc52]:[32]:[10.1.20.101]/272

*>i[5]:[0]:[0]:[32]:[10.1.21.100]/224

Обратите внимание, что IP 10.1.11.100 и 10.1.20.101 с коммутатора Eltex присутствуют в таблице как EVPN записи типа 2, а вот IP 10.1.12.100 и 10.1.21.100 с коммутатора Huawei присутствуют только как EVPN записи типа 5. Почему?

А что говорит коммутатор Eltex?

eLeaf1-2#sh ip bgp l2vpn evpn | i 10.1....10[01]

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.10.100]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.10.100]/272

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.20.100]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.20.100]/272

*>a[2][0][0][48][aa:aa:bb:bb:cc:52][32][10.1.11.100]/272

*>a[2][0][0][48][aa:aa:bb:bb:cc:52][32][10.1.20.101]/272

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.12.100]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.12.100]/272

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.21.100]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.21.100]/272

*>i[5][0][0][32][10.1.12.100]/224

* i[5][0][0][32][10.1.12.100]/224

*>i[5][0][0][32][10.1.21.100]/224

* i[5][0][0][32][10.1.21.100]/224

Хм… Тут присутствуют и записи EVPN типа 2 и записи типа 5.

Давайте разбираться. Как Huawei генерирует EVPN тип 5? Для этого используется команда «advertise l2vpn evpn»:

bgp 65001

 ipv4-family vpn-instance A

  advertise l2vpn evpn

 ipv4-family vpn-instance B

  advertise l2vpn evpn

А как генерируется запись EVPN типа 2? Для этого используются ext-community:

bridge-domain 12

 vxlan vni 20012

 #              

 evpn           

  route-distinguisher 10.1.0.18:20012

  vpn-target 10.1.12.0:12 export-extcommunity

  vpn-target 10.1.12.0:12 import-extcommunity

Давайте попробуем убрать «advertise l2vpn evpn» на Huawei и посмотрим выводы команд снова.

Cisco:

cLeaf1-1# sh bgp l2vpn evpn | i 10.1....10[01]

*>l[2]:[0]:[0]:[48]:[ccd8.1f47.173d]:[32]:[10.1.10.100]/272

*>i[2]:[0]:[0]:[48]:[aaaa.bbbb.cc52]:[32]:[10.1.11.100]/272

*>i[2]:[0]:[0]:[48]:[aaaa.bbbb.cc52]:[32]:[10.1.20.101]/272

*>l[2]:[0]:[0]:[48]:[ccd8.1f47.173d]:[32]:[10.1.20.100]/272

* i[2]:[0]:[0]:[48]:[aaaa.bbbb.cc52]:[32]:[10.1.11.100]/272

*>i[2]:[0]:[0]:[48]:[aaaa.bbbb.cc52]:[32]:[10.1.20.101]/272

*>i[2]:[0]:[0]:[48]:[aaaa.bbbb.cc52]:[32]:[10.1.11.100]/272

*>i[2]:[0]:[0]:[48]:[aaaa.bbbb.cc52]:[32]:[10.1.20.101]/272

Eltex:

eLeaf1-2#sh ip bgp l2vpn evpn | i 10.1....10[01]

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.10.100]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.10.100]/272

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.20.100]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.20.100]/272

*>a[2][0][0][48][aa:aa:bb:bb:cc:52][32][10.1.11.100]/272

*>a[2][0][0][48][aa:aa:bb:bb:cc:52][32][10.1.20.101]/272

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.12.100]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.12.100]/272

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.21.100]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.21.100]/272

Так, записи EVPN типа 5 пропали, но на Eltex, в отличие от Cisco, остались записи EVPN типа 2. В чем же отличие? Сейчас мне будет стыдно, потому что…

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

А на Cisco, так уж совпало, уже был и VLAN 12, и VLAN 21, да только с другими ext-commuity:

evpn

  vni 20012 l2

    rd 10.11.0.6:20012

    route-target import 65100:20012

    route-target export 65100:20012

  vni 20021 l2

    rd 10.11.0.6:20021

    route-target import 65100:20021

    route-target export 65100:20021

А на Huawei тем временем:

bridge-domain 12

 vxlan vni 20012

 evpn           

  route-distinguisher 10.1.0.18:20012

  vpn-target 10.1.12.0:12 export-extcommunity

  vpn-target 10.1.12.0:12 import-extcommunity

#               

bridge-domain 21

 vxlan vni 20021

 evpn           

  route-distinguisher 10.1.0.18:20021

  vpn-target 10.1.21.0:21 export-extcommunity

  vpn-target 10.1.21.0:21 import-extcommunity

Получается, что EVPN пакеты от Huawei до Cisco доходят, да не принимаются, так как не совпадают ext-community. Ладно, нам по схеме Overlay (исправленной) всё равно не надо, чтобы на cLeaf1-2 были записи L2VNI для VLAN 12 и VLAN 21. Поэтому просто немного зачистим конфигурацию на Cisco. Но почему тогда эти записи приходят на Eltex?!

Версия Иван-дурак 2.0, дополненная. После написания статьи о настройке фабрики Eltex я, опять же, не стал чистить конфигурацию на eLeaf1-2, поэтому там остались записи:

vxlan VLAN12

 vni 20012

 arp-suppression

 vlan 12

 route-target both 10.1.12.0:12

exit

!

vxlan VLAN21

 vni 20021

 arp-suppression

 vlan 21

 route-target both 10.1.21.0:21

exit

Поэтому-то на коммутаторе Eltex и присутствуют эти записи EVPN тип 2. Уберем эти настройки с eLeaf1-2. Проверим?

eLeaf1-2:

eLeaf1-2#sh ip bgp l2vpn evpn | i 10.1....10[01]

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.10.100]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.10.100]/272

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.20.100]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.20.100]/272

*>a[2][0][0][48][aa:aa:bb:bb:cc:52][32][10.1.11.100]/272

*>a[2][0][0][48][aa:aa:bb:bb:cc:52][32][10.1.20.101]/272

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.12.100]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.12.100]/272

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.21.100]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][10.1.21.100]/272

А?! Что?! Иван-дурак, версия 3.0?! Не хочу! А сделаю-ка я быстрый тест – заведу на Huawei вообще новый VLAN777 и новую сеть 7.7.7.0/24 (тестовый хост 7.7.7.7), чтобы проверить. Сказано – сделано (пропущу здесь настройки на Huawei, не благодарите). Быстро проверяем на коммутаторах.

Cisco:

cLeaf1-1# sh bgp l2vpn evpn | i 7.7.7

<пусто>

Eltex:

eLeaf1-2#sh ip bgp l2vpn evpn | i 7.7.7

*>i[2][0][0][48][cc:d8:1f:47:17:3d][32][7.7.7.7]/272

* i[2][0][0][48][cc:d8:1f:47:17:3d][32][7.7.7.7]/272

Что получается? Cisco, получая пакеты по EVPN видит, что это не её ext-community (vpn-target) и не обрабатывает их. Eltex же игнорирует ext-community и добавляет в таблицу В ЛЮБОМ СЛУЧАЕ. И пусть это можно назвать косметическим багом, но ведь эти записи точно хранятся где-то в памяти и снижают полезную нагрузку. В реальной жизни, конечно, вы будете настраивать одни и те же VxLAN на всех коммутаторах Leaf.

Давайте вернем назад на Huawei анонс EVPN Type 5 и уберем все временные настройки.

Итак, на данном этапе у нас есть полная связность (см. раздел «Проверка связности»).

Мы посмотрели записи EVPN, но не посмотрели маршруты.

Почему же у нас есть связность? Ограничим нашу диагностику только для VRF A.

Cisco:

cLeaf1-1# sh ip route vrf A

10.1.12.0/24, ubest/mbest: 1/0

    *via 10.1.0.18%default, [200/0], 00:07:34, bgp-65001, internal, tag 65001, segid: 3000 (Asymmetric) tunnelid: 0xa010012 encap: VXLAN

10.1.12.1/32, ubest/mbest: 1/0

    *via 10.1.0.18%default, [200/0], 00:07:34, bgp-65001, internal, tag 65001, segid: 3000 (Asymmetric) tunnelid: 0xa010012 encap: VXLAN

10.1.12.100/32, ubest/mbest: 1/0

    *via 10.1.0.18%default, [200/0], 00:07:34, bgp-65001, internal, tag 65001, segid: 3000 (Asymmetric) tunnelid: 0xa010012 encap: VXLAN

Eltex:

eLeaf1-2#sh ip route vrf A

B    10.1.12.0/24 [200/0] via 10.1.0.18, 00:07:42, VNI 30000, router-mac   

28:53:4e:83:26:51                                                          

B    10.1.12.1/32 [200/0] via 10.1.0.18, 00:07:42, VNI 30000, router-mac   

28:53:4e:83:26:51                                                          

B    10.1.12.100/32 [200/0] via 10.1.0.18, 00:07:42, VNI 30000,            

router-mac 28:53:4e:83:26:51

Мы ожидаем, что связность у нас достигается за счет Symmetric IRB, так как в качестве назначения указаны L3 VNI. Так почему в выводе команды на Cisco указано «Asymmetric»?

Проверим настройки L3 VNI на Cisco:

vlan 3000

  vn-segment 30000

vlan 3001

  vn-segment 30001

Настройки L3 VNI на Huawei:

ip vpn-instance A

 vxlan vni 3000 

ip vpn-instance B

 vxlan vni 3001

Вот и ошибка! Случайно (или нет?) на Huawei я указал неправильный L3 VNI!

Это же мы видим в поле Label Information на Huawei (приходит 30000, а не 3000):

[~hLeaf1-3]dis bgp vpnv4 vpn-instance A routing-table 10.1.10.100 

 BGP local router ID : 10.1.0.18

 Local AS number : 65001

 VPN-Instance A, Router ID 10.1.0.18:

 Paths:   2 available, 1 best, 1 select, 0 best-external, 0 add-path

 BGP routing table entry information of 10.1.10.100/32:

 Route Distinguisher: 10.1.0.13:20010

 Remote-Cross route

 Evpn route: Type 2, irb

 Label information (Received/Applied): 30000/NULL

 From: 10.1.0.11 (10.1.0.11)

 Route Duration: 1d02h59m57s

 Relay Tunnel Out-Interface: VXLAN

 Original nexthop: 10.1.0.13

 Qos information : 0x0

 Ext-Community: RT <1.2.3.4 : 3000>, RT <10.1.10.0 : 10>, Tunnel Type <VxLan>, Router's MAC <a023-9f3b-3545>

 AS-path Nil, origin igp, localpref 100, pref-val 0, valid, internal, best, select, pre 255

 Originator: 10.1.0.13

 Cluster list: 10.1.0.11

 Not advertised to any peer yet

Исправляем на hLeaf1-3:

ip vpn-instance A

 vxlan vni 30000

ip vpn-instance B

 vxlan vni 30001

И проверяем на cLeaf1-1:

cLeaf1-1# sh ip route vrf A

    *via 10.1.0.14%default, [200/0], 21:26:20, bgp-65001, internal, tag 65001, segid: 30000 tunnelid: 0xa01000e encap: VXLAN

10.1.12.0/24, ubest/mbest: 1/0

    *via 10.1.0.18%default, [200/0], 00:04:15, bgp-65001, internal, tag 65001, segid: 30000 tunnelid: 0xa010012 encap: VXLAN

10.1.12.1/32, ubest/mbest: 1/0

    *via 10.1.0.18%default, [200/0], 00:04:15, bgp-65001, internal, tag 65001, segid: 30000 tunnelid: 0xa010012 encap: VXLAN

10.1.12.100/32, ubest/mbest: 1/0

    *via 10.1.0.18%default, [200/0], 00:04:15, bgp-65001, internal, tag 65001, segid: 30000 tunnelid: 0xa010012 encap: VXLAN

Готово! Теперь нам приходит по L3 VNI 30000.

Но это очень интересная мысль для разработчиков – всего одно слово «Asymmetric» показало мне, что я где-то неправильно настроил коммутатор. Eltex, возьмете на заметку?

Выводы

Что ж, мы можем много всего протестировать на совместимость, сравнить фичи и особенности реализации. Но фактически мы будем использовать минимальный базовый функционал для построения фабрики ЦОДов. Конечно, очень важно, чтобы реализация ПО была основана на конкретных RFC с учетом аппаратных особенностей конкретного оборудования – тогда вопросы совместимости не будут настолько актуальны.

Мы выяснили, что вполне можем миксовать сетевое оборудование для построения ЦОДа. А еще мы выяснили, что службы эксплуатации и автоматизации ни за что не скажут нам за это спасибо.

Также мы увидели, что всегда есть нюансы реализации конкретных технических решений, как, например, в случае настройки отказоустойчивого решения MLAG/VPC/EVPN Multihoming. Каждый производитель сетевого оборудования сам определяет способ организации High Availability, но в случае с Cisco и Huawei, я бы сказал, что наблюдается некая коммерческая/маркетинговая нотка: «Вы можете поставить в пару только наше оборудование». Здесь мне больше импонирует решение Eltex – оно открытое (не проприетарное) и позволяет, при необходимости, собрать High Availability более чем на 2 коммутаторах, а также не требует дополнительных физических линков между коммутаторами.

Я считаю, что плавная миграция с оборудования, которое по тем или иным причинам должно быть заменено, возможна, нужно только грамотно проработать все технические моменты.

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

P.S.

Дописав 3-ю статью об оборудовании Eltex – о настройке фабрики ЦОД, ее нагрузочном тестировании и совместимости с оборудованием других производителей, –  я вдруг поймал себя на мысли: а как вы, коллеги-инженеры, думаете, ошибки, которые мы с вами разбирали в статьях, случайны или были заложены специально? Когда вам дают готовую рабочую конфигурацию оборудования (на старте это здорово!) и всё работает, сможете ли вы найти причину, если что-то пошло не так?

Скажу лишь одно – эти статьи написаны от имени простого инженера для таких же инженеров, как и он сам. От инженера, который может допускать ошибки («забыл», «очепятался», «не учел», «ошибка copy/paste» и т.д.), но, несомненно, от инженера, который всегда проверяет качество своей работы в конце.

А мнение о том, были ли эти ошибки случайными, пишите в комментариях, как говорится!

Конец

Вот и написаны статьи, в которых мы с вами сосредоточились на технических возможностях и функционале коммутаторов ЦОДа компании Eltex. Много команд для настройки и проверок, тернистый путь от простого к сложному, но, надеюсь, у вас сложилось мнение об этом оборудовании, которое очень важно не только для самого производителя сетевого оборудования, но и для инженеров, которые им пользуются.

Впереди осталась последняя статья: о системе управления Eltex ECCM. Там, уже расслабившись от технически нагруженных статей, мы будем, как маленькие дети, смотреть много красивых картинок и разбирать ее возможности. 

Кстати, если кто-то хочет посмотреть на работу Eltex вживую, приглашаю на наше мероприятие по ЦОДам 28 октября в Москве. Покажем лабораторию, демо-стенды с оборудованием для ЦОД, склад ЗИП. Поговорим о том, что вообще сейчас происходит на рынке ЦОДов – законодательство, дефицит мощностей, энергоэффективность, оборудование, техподдержка и тд. Участие бесплатное, регистрация тут 

А пока…

Комментарии (1)


  1. MEGA_Nexus
    24.10.2025 14:23

    Скажу лишь одно – эти статьи написаны от имени простого инженера для таких же инженеров, как и он сам.

    Ты нереально крут и это я говорю без лишней скромности. Твои статьи будут читать не только инженеры, но и представители заказчиков, вендоры и системные интеграторы. Все они из твоих статей увидят, что российское оборудование не только работает, но и позволяет строить само ядро сети, которое способно переваривать сотни Гигабит реального трафика без рисков уложить всю сеть.

    Одно дело, когда тебе продавец вендора втирает, что, возможно, оно будет работать, но гарантий никто не даёт, и совсем другое дело, когда можно показать реально работающую сеть, где вместе работает оборудование разных вендоров.

    На месте российских производителей я вы вкладывался в популяризацию таких историй успешного внедрения в реальные сети заказчиков, которые были построены на решениях других вендоров. Это показывает, что российского оборудование не хуже иностранного и что устройства разных вендоров могут работать вместе.