Мы продолжаем изучать возможности и ограничения оборудования Maipu Communication Technology. В предыдущем материале мы уже рассказали, что это за производитель и что его маршрутизаторы умеют в части DMVPN. Сегодня речь пойдет о VXLAN/BGP/EVPN-фабрике для центров обработки данных.

Оборудование

По состоянию на лето 2022 года в линейке ЦОД-коммутаторов Maipu всего 6 моделей. Порты могут быть от 1 до 100 Гбит/сек. Софт на всех моделях одинаковый. Весь программный функционал доступен сразу, без дополнительных лицензий.

Первые четыре модели коммутаторов - одноюнитовые:

5830-56XQFP: 48 портов 10G SFP+, 8 портов 100G QSFP28
5830-56XQFP: 48 портов 10G SFP+, 8 портов 100G QSFP28
5830-54XTQFP: 48 портов 1/10G RJ45, 6 портов 100G QSFP28
5830-54XTQFP: 48 портов 1/10G RJ45, 6 портов 100G QSFP28
5930-56SQFP: 48 портов 25G SFP28, 8 портов 100G QSFP28
5930-56SQFP: 48 портов 25G SFP28, 8 портов 100G QSFP28
5950-32QFP: 32 порта 100G QSFP28
5950-32QFP: 32 порта 100G QSFP28

Две другие модели - модульные серии 18500. Доступны шасси на 4 и 8 интерфейсных плат.

Underlay

Для начала - минимальный набор коммутаторов, чтобы увидеть, как настраивается L2 и L3-связность между двумя серверами, подключёнными к разным Leaf-коммутаторам.

Мы проверили реализацию, похожую на базовую, предлагаемую Cisco: BGP-Peering через Loopback-интерфейсы и OSPF в Underlay, чтобы сделать эти Loopback-интерфейсы взаимно доступными.

DC1-Leaf1

DC1-Leaf2

router ospf 1

 router-id 1.0.0.3

 network 1.0.0.0 0.0.0.255 area 0

 network 1.0.255.0 0.0.0.255 area 0

 network 10.1.0.0 0.0.0.255 area 0

exit

 

router bgp 1

 no auto-summary

 no synchronization

 neighbor SPINES peer-group

 neighbor SPINES remote-as 1

 neighbor SPINES update-source loopback0

 neighbor 1.0.0.1 peer-group SPINES

 neighbor 1.0.0.2 peer-group SPINES

 address-family l2vpn evpn

  neighbor 1.0.0.1 activate

  neighbor 1.0.0.1 send-community both

  neighbor 1.0.0.2 activate

  neighbor 1.0.0.2 send-community both

  exit-address-family

 exit

router ospf 1

 router-id 1.0.0.4

 network 1.0.0.0 0.0.0.255 area 0

 network 1.0.255.0 0.0.0.255 area 0

 network 10.1.0.0 0.0.0.255 area 0

 exit

 

router bgp 1

 no auto-summary

 no synchronization

 neighbor SPINES peer-group

 neighbor SPINES remote-as 1

 neighbor SPINES update-source loopback0

 neighbor 1.0.0.1 peer-group SPINES

 neighbor 1.0.0.2 peer-group SPINES

 address-family l2vpn evpn

  neighbor 1.0.0.1 activate

  neighbor 1.0.0.1 send-community both

  neighbor 1.0.0.2 activate

  neighbor 1.0.0.2 send-community both

  exit-address-family

 exit

DC1-Spine1

DC1-Spine2

router ospf 1

 router-id 1.0.0.1

 network 1.0.0.0 0.0.0.255 area 0

 network 10.1.0.0 0.0.0.255 area 0

 network 10.1.1.0 0.0.0.255 area 0

 exit

 

router bgp 1

 no auto-summary

 no synchronization

 neighbor LEAVES peer-group

 neighbor LEAVES remote-as 1

 neighbor LEAVES update-source loopback0

 neighbor LEAVES route-reflector-client

 neighbor 1.0.0.3 peer-group LEAVES

 neighbor 1.0.0.4 peer-group LEAVES

 neighbor 5.1.0.5 remote-as 1

 neighbor 5.1.0.5 route-reflector-client

 address-family l2vpn evpn

  neighbor LEAVES activate

  neighbor LEAVES route-reflector-client

  neighbor LEAVES send-community both

  neighbor 1.0.0.3 peer-group LEAVES

  neighbor 1.0.0.4 peer-group LEAVES

  exit-address-family

 exit

router ospf 1

 router-id 1.0.0.2

 network 1.0.0.0 0.0.0.255 area 0

 network 10.1.0.0 0.0.0.255 area 0

 network 10.1.1.0 0.0.0.255 area 0

 exit

 

router bgp 1

 no auto-summary

 no synchronization

 neighbor LEAVES peer-group

 neighbor LEAVES remote-as 1

 neighbor LEAVES update-source loopback0

 neighbor LEAVES route-reflector-client

 neighbor 1.0.0.3 peer-group LEAVES

 neighbor 1.0.0.4 peer-group LEAVES

 neighbor 5.1.0.5 remote-as 1

 neighbor 5.1.0.5 route-reflector-client

 address-family l2vpn evpn

  neighbor LEAVES activate

  neighbor LEAVES route-reflector-client

  neighbor LEAVES send-community both

  neighbor 1.0.0.3 peer-group LEAVES

  neighbor 1.0.0.4 peer-group LEAVES

  exit-address-family

 exit

Multihoming

Из всех возможных опций Multihoming на коммутаторах Maipu доступна только одна - MCLAG с соединениями между Leaf-коммутаторами. Логически соединений требуется два: Peer-Link и Peer-Keepalive Link.

 Peer-Link обеспечивает работу MLAG на уровне протокола и передаёт пользовательские данные, которые по какой-то причине должны попасть с одного MLAG-коммутатора на другой.

Peer-Keepalive Link - L3-соединение, с помощью которого каждый из MLAG-коммутаторов знает о том, что его партнёр жив.

В нашем случае Peer-Keepalive Link продет с помощью VLAN через отдельные физические интерфейсы коммутаторов.

Пример конфига: 

 

 

mlag domain 1

node id 1

 node role-priority 50

 role preempt

 system-mac 0001.7a95.000b

 keepalive ip destination 30.0.0.2 source 30.0.0.1

 exit

interface link-aggregation1

 description -= MLAG to SERVER =-

 switchport mode trunk

 switchport trunk allowed vlan add 1,10,100,150,200

 switchport trunk pvid vlan 1

 vxlan 1000 encapsulation vlan 100

 vxlan 2000 encapsulation vlan 200

 mlag group 1

 exit

 interface link-aggregation10

 description -= PEER-LINK =-

 switchport mode trunk

 switchport trunk allowed vlan add 1,10,100,150,200

 switchport trunk pvid vlan 1

 mlag peer-link

 exit

interface vlan4094

 description -= PEER-KEEPALIVE LINK =-

 ip address 30.0.0.1 255.255.255.0

 exit

interface tengigabitethernet0/10

 switchport access vlan 4094

 exit

mlag domain 1

 node id 2

 system-mac 0001.7a95.000b

 keepalive ip destination 30.0.0.1 source 30.0.0.2

 exit

interface link-aggregation1

 description -= MLAG to SERVER =-

 switchport mode trunk

 switchport trunk allowed vlan add 1,100,150,200

 switchport trunk pvid vlan 1

 vxlan 1000 encapsulation vlan 100

 vxlan 2000 encapsulation vlan 200

 mlag group 1

 exit

interface link-aggregation10

 description -= PEER-LINK =-

 switchport mode trunk

 switchport trunk allowed vlan add 100,150,200

 switchport trunk pvid vlan 1

 mlag peer-link

 exit

 interface vlan4094

 description -= PEER-KEEPALIVE LINK =-

 ip address 30.0.0.2 255.255.255.0

 exit

interface tengigabitethernet0/10

 switchport access vlan 4094

 exit

DC1-LEAF1#show mlag brief

MLAG domain id                : 1

Role FSM status                : MASTER

Peering FSM status           : ESTABLISHED

Keepalive FSM status  : ALIVE

PTS Service       : ON

Up-delay              : 90sec

Graceful-restart  : Disabled

Number of mlags configured : 1

 

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

Peer-Link             Link-status Data-status Active-vlans

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

link-aggregation10   UP                   UP                    100,150,200

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

Node      ID   Role System-MAC       System-Priority

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

Self        1            MASTER  0001.7a95.000b  32768

Remote  2            SLAVE   0001.7a95.000b  32768

DC1-LEAF1#show mlag group 1

 mlag-id: 1 (link-aggregation1)

--Link status: UP

--Data status: UP

--Active mlag vlans: 100,150,200

--Redirect FSM state: UNREDIRECT

--Isolate FSM state: ISOLATE

--Block FSM state: UNBLOCK

--Remote interface: link-aggregation 1

--Remote link status: UP

--Remote data status: UP

 DC1-LEAF1#show mlag keepalive

 Keepalive status : ALIVE

--Destination IP address : 30.0.0.2

--Source IP address : 30.0.0.1

--Keepalive UDP port : 53910

--Keepalive vrf : global

--Keepalive interval : 1000 msec

--Keepalive timeout : 6 sec

--Keepalive quiet time : 3000 msec

DC1-LEAF2#sh mlag brief

MLAG domain id                : 1

Role FSM status                : SLAVE

Peering FSM status           : ESTABLISHED

Keepalive FSM status  : ALIVE

PTS Service       : ON

Up-delay              : 90sec

Graceful-restart  : Disabled

Number of mlags configured : 1

 

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

Peer-Link             Link-status Data-status Active-vlans

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

link-aggregation10   UP                   UP                    100,150,200

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

Node      ID   Role System-MAC       System-Priority

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

Self        2            SLAVE   0001.7a95.000b  32768

Remote  1            MASTER  0001.7a95.000b  32768

 DC1-LEAF2#sh mlag group 1

 mlag-id: 1 (link-aggregation1)

--Link status: UP

--Data status: UP

--Active mlag vlans: 100,150,200

--Redirect FSM state: UNREDIRECT

--Isolate FSM state: ISOLATE

--Block FSM state: UNBLOCK

--Remote interface: link-aggregation 1

--Remote link status: UP

--Remote data status: UP

 DC1-LEAF2#sh mlag keepalive

 Keepalive status : ALIVE

--Destination IP address : 30.0.0.1

--Source IP address : 30.0.0.2

--Keepalive UDP port : 53910

--Keepalive vrf : global

--Keepalive interval : 1000 msec

--Keepalive timeout : 6 sec

--Keepalive quiet time : 3000 msec

VXLAN

Настройка VXLAN похожа на Cisco:

Maipu

Cisco

L3VNI

ip vrf DC1-L3VNI

 rd 1:1

 l3vnid 1

 address-family evpn

  route-target import 12:12 ipv4

  route-target export 12:12 ipv4

vrf context Tenant-1

 vni 1

 rd 1:1

 address-family ipv4 unicast

  route-target both 12:12

  route-target both 12:12 evpn

L2VNI

vxlan 1000

 vxlan vnid 1000

 address-family evpn

  rd 1000:1000

  route-target import 1000:1000

  route-target export 1000:1000

exit

vxlan 2000

 vxlan vnid 2000

 address-family evpn

  rd 2000:2000

  route-target import 2000:2000

  route-target export 2000:2000

  exit

 exit

evpn

  vni 20100 l2

      rd auto

      route-target import 1000:1000

      route-target export 1000:1000

  vni 20200 l2

      rd auto

      route-target import 2000:2000

      route-target export 2000:2000

 

Привязка VLAN к VXLAN VNID

interface link-aggregation1

 vxlan 1000 encapsulation vlan 100

 vxlan 2000 encapsulation vlan 200

 mlag group 1

vlan 100

vn-segment 1000

vlan 200

 vn-segment 2000

Anycast-Gateway

interface vxlan1000

 ip vrf forwarding DC1-L3VNI

 vxlan distribute-gateway

 ip address 192.168.100.254 255.255.255.0

 mac-address 0001.0001.0001

 interface vxlan2000

 ip vrf forwarding DC1-L3VNI

 vxlan distribute-gateway

 ip address 192.168.200.254 255.255.255.0

 mac-address 0002.0002.0002

fabric forwarding anycast-gateway-mac 0001.0001.0001

interface Vlan100

 no shutdown

 ip address 192.168.100.254/24

 fabric forwarding mode anycast-gateway

interface Vlan100

  no shutdown

  ip address 192.168.200.254/24

  fabric forwarding mode anycast-gateway

NVE

interface nve1

 source 1.0.255.3

 mac-address 0088.9999.1111

 vxlan 1000,2000 ingress-replication protocol bgp

 mac-address learning disable

interface nve1

  no shutdown

  description -= VTEP =-

  source-interface loopback1

  host-reachability protocol bgp

  member vni 1000 ingress-replication

  member vni 2000 ingress-replication

  member vni 1 associate-vrf

Multipod

Multipod в сетях ЦОД - это о том, как соединить между собой несколько залов с вязанками Leaf-Spine. Традиционно для этого используются дополнительные коммутаторы Superspine, к которым подключаются Spine-коммутаторы каждого из залов по той же Clos-схеме.

 Передать EVPN-маршруты Leaf-коммутаторам из другого зала дело нехитрое. Главный вопрос в таком сценарии - как обеспечить сохранность атрибута BGP Next-Hop в EVPN-маршрутах. Leaf-коммутаторы используют эти маршруты для обмена трафиком в VXLAN Overlay. При этом недостаточно, чтобы Leaf-коммутатор мог найти Next-Hop рекурсивно через имеющуюся таблицу маршрутизации. Next-Hop должен указывать непосредственно на адрес, с которого другой Leaf-коммутатор готов поднять VXLAN-туннель. В реализации Maipu - на source, указанный в параметрах интерфейса NVE:

interface nve1
 source 1.0.255.3
 mac-address 0088.9999.1111
 vxlan 1000,2000 ingress-replication protocol bgp
 mac-address learning disable
 exit

DC2-LEAF2# sh bgp l2vpn evpn all all-type BGP local router ID is 2.0.255.3

Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
EVPN Information for Route Distinguisher:1:1
 MAC/IP Advertisement Routes:
      Network(ETID:MAC:IP)                                    Next Hop          Metric      LocPrf Weight Path
[B]>i0:48:ccd8.1f44.94c1:32:192.168.100.1/128                1.0.255.3               0    100  0 1 i EVPN Information for Route Distinguisher:1000:1000  MAC/IP Advertisement Routes:       Network(ETID:MAC:IP)                                    Next Hop          Metric      LocPrf Weight Path [B]>i0:48:ccd8.1f44.94c1:0:0.0.0.0/96                        1.0.255.3               0    100  0 1 i
[B]* i                                                        1.0.255.3               0    100  0 1 i
[B]>i0:48:ccd8.1f44.94c1:32:192.168.100.1/128                1.0.255.3               0    100  0 1 i [B] i                                                        1.0.255.3               0    100  0 1 i

Inclusive Multicast Ethernet Tag Routes:
      Network(Originating IP Addr)                            Next Hop          Metric      LocPrf Weight Path

[B]>i0:32:1.0.255.3/72                                       1.0.255.3               0     100  0 1 i [B] i                                                        1.0.255.3               0    100  0 1 i

При передаче через Spine коммутатор, например по цепочке Leaf1->Spine1->Leaf2, либо по цепочке Leaf1->Spine1->Superspine1 значение Next-Hop сохранится. Все эти коммутаторы в нашем сценарии находятся в одной автономной системе, а Spine1 выступает в качестве Route-Reflector. Это нормальное поведение iBGP, можно быть спокойным.

 Однако при передаче в другую автономную систему Next-Hop изменится. Между Superspine-коммутаторами будет работать уже EBGP, а в EBGP-соседстве маршрутизатор меняет Next-Hop на свой собственный адрес. Чтобы этого не произошло Cisco использует параметр Next-Hop-Unchanged

router bgp 65535
address-family ipv4
neighbor 10.0.0.100 remote-as 65600
neighbor 10.0.0.100 activate
neighbor 10.0.0.100 next-hop-unchanged
end

В случае с Maipu, параметр называется Attribute-Unchanged

 router bgp 1
 no auto-summary
 no synchronization
 neighbor SPINES peer-group
 neighbor SPINES remote-as 1
 neighbor SPINES update-source loopback0
 neighbor SPINES attribute-unchanged
 neighbor 1.0.0.1 peer-group SPINES
 neighbor 1.0.0.2 peer-group SPINES
 neighbor 55.0.0.6 remote-as 2
 neighbor 55.0.0.6 attribute-unchanged
 address-family l2vpn evpn
  neighbor SPINES activate
  neighbor SPINES send-community both
  neighbor SPINES attribute-unchanged
  neighbor 1.0.0.1 peer-group SPINES
  neighbor 1.0.0.2 peer-group SPINES
  neighbor 55.0.0.6 activate
  neighbor 55.0.0.6 send-community both
  neighbor 55.0.0.6 attribute-unchanged
  exit-address-family

Дальше могут быть разные варианты, как устанавливать соседство. Мы сделали EBGP с Loopback-интерфейсов, адреса которых распространили через OSPF.

Итог

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

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


  1. net_racoon
    05.08.2022 09:17

    Внешне похож на Huawei, совпадение?


    1. council_estate
      05.08.2022 17:13

      Я бы не сказал, что похож именно на какой-либо из коммутаторов Huawei. Все коммутаторы похожи друг на друга. Какие в принципе новшества в дизайне коммутаторов можно ждать?


  1. algerka
    05.08.2022 17:58

    Для сравнения можете назвать цену на 5930-56SQFP ?