Довольно популярным запросом у заказчиков стало наращивание существующей фабрики Cisco коммутаторами Maipu. Недавно нам удалось наконец собрать необходимый пул оборудования и разобраться, что может и чего не может оборудование Maipu в таких кейсах. Ранее, кстати, рассказал, как мы расширяем существующую DMVPN-сеть Cisco с помощью Maipu, и про коммутаторы Maipu для сетей ЦОД.

Ограничение, которое мы увидели сразу - невозможность реализовать схему Multisite, которую предлагает Cisco. В этой схеме существует специальная роль коммутаторов -- Border Gateway. Эти коммутаторы терминируют VXLAN-туннели внутри фабрики и создают новые туннели до других дата-центров вот так:

Такой подход позволяет ограничить распространение информации, связанной с работой Control Plane, что позволяет лучше масштабировать сети датацентров и сузить домены отказа. При этом между датацентрами работает и L2, и L3.

Функционал основан на нескольких драфтах RFC, и пока не очень распространён. Что-то подобное умеет делать ещё Arista, но на Maipu данная схема недоступна. Поэтому мы пробуем классический Multipod - полный обмен маршрутами между двумя наборами Leaf/Spine-коммутаторов через EBGP. Другой вариант - объединение фабрик через L3, но сейчас не об этом.

Схема, которую нам удалось собрать из имеющегося оборудования, выглядит так:

Второе заметное ограничение - отсутствие на Maipu возможности распространять Broadcast/Unknown Unicast-трафик с помощью PIM и Multicast. Используем BGP Ingress Replication на обоих подах.

На этом грустная часть истории заканчивается и начинается интересная.

Фабрику настраиваем так же, как и в предыдущей серии: в Underlay OSPF и IBGP. Такой вариант мы чаще всего встречаем у заказчиков, эксплуатирующих фабрику на Cisco. Хосты сразу подключаем к двум Leaf-коммутаторам, это VPC и MLAG соответственно.

Между Spine-коммутаторами, где у нас, собственно, и происходит соединение двух фабрик, настраиваем EBGP. Для того, чтобы VXLAN-туннели корректно строились от одного Leaf-коммутатора до другого, сохраняем значение атрибута Next-Hop в передаваемых EVPN-маршрутах.

Конфиги Leaf-коммутаторов Cisco Nexus:

N9k-Leaf1

N9k-Leaf2

cfs eth distribute

nv overlay evpn

feature ospf

feature bgp

feature pim

feature fabric forwarding

feature interface-vlan

feature vn-segment-vlan-based

feature hsrp

feature lacp

feature vpc

feature lldp

feature bfd

feature nv overlay

 

fabric forwarding anycast-gateway-mac 0001.0001.0100

 

vlan 1,41-42,999

vlan 41

  vn-segment 100

vlan 42

  vn-segment 200

vlan 999

  vn-segment 1

 

route-map DIRECT-BGP-RM permit 10

  match tag 12345

vrf context Keepalive

 

vrf context vxlan-100

  vni 1

  rd 100:42

  address-family ipv4 unicast

    route-target import 100:2

    route-target import 100:2 evpn

    route-target export 100:2

    route-target export 100:2 evpn

vpc domain 1

  peer-keepalive destination 10.253.1.5 source 10.253.1.4 vrf Keepalive

 

interface Vlan41

  no shutdown

  vrf member vxlan-100

  ip address 172.16.129.1/24

  fabric forwarding mode anycast-gateway

 

interface Vlan42

  no shutdown

  vrf member vxlan-100

  ip address 172.16.130.1/24

  fabric forwarding mode anycast-gateway

 

interface Vlan999

  no shutdown

  vrf member vxlan-100

  ip forward

 

interface port-channel30

  switchport

  switchport mode trunk

  switchport trunk allowed vlan 41-42

  vpc 1

 

interface port-channel54

  switchport

  switchport mode trunk

  spanning-tree port type network

  vpc peer-link

 

interface nve1

  no shutdown

  host-reachability protocol bgp

  source-interface loopback101

  member vni 1 associate-vrf

  member vni 100

    ingress-replication protocol bgp

  member vni 200

    ingress-replication protocol bgp

 

interface Ethernet1/1

  switchport

  switchport mode trunk

  switchport trunk allowed vlan 41-42

  channel-group 30 mode active

  no shutdown

 

interface Ethernet1/48

  description -= Peer Keepalive Link =-

  vrf member Keepalive

  ip address 10.253.1.4/31

  no shutdown

 

interface Ethernet1/53

  description -= Spine =-

  ip address 10.253.1.1/31

  ip ospf network point-to-point

  ip router ospf 1 area 0.0.0.0

  ip pim sparse-mode

  no shutdown

 

interface Ethernet1/54

  description -= Peer Link =-

  switchport

  switchport mode trunk

  channel-group 54 mode active

  no shutdown

 

interface loopback0

  ip address 10.253.127.1/32

  ip router ospf 1 area 0.0.0.0

 

interface loopback101

  ip address 10.253.127.253/32

  ip address 10.253.127.40/32 secondary

  ip router ospf 1 area 0.0.0.0

 

router ospf 1

  router-id 10.253.127.1

router bgp 200

  address-family l2vpn evpn

  neighbor 10.253.127.3

    remote-as 200

    update-source loopback0

    address-family ipv4 unicast

      advertisement-interval 1

    address-family l2vpn evpn

      send-community

      send-community extended

  vrf vxlan-100

    address-family ipv4 unicast

      network 172.16.129.0/24

      network 172.16.130.0/24

      advertise l2vpn evpn

      redistribute direct route-map DIRECT-BGP-RM

evpn

  vni 100 l2

            rd 100:40

    route-target import 100:1

    route-target export 100:1

  vni 200 l2

            rd 200:40

    route-target import 200:1

    route-target export 200:1

cfs eth distribute

nv overlay evpn

feature ospf

feature bgp

feature pim

feature fabric forwarding

feature interface-vlan

feature vn-segment-vlan-based

feature hsrp

feature lacp

feature vpc

feature lldp

feature bfd

feature nv overlay

 

fabric forwarding anycast-gateway-mac 0001.0001.0100

 

vlan 1,41-42,999

vlan 41

  vn-segment 100

vlan 42

  vn-segment 200

vlan 999

  vn-segment 1

 

route-map DIRECT-BGP-RM permit 10

  match tag 12345

vrf context Keepalive

 

vrf context vxlan-100

  vni 1

  rd 100:42

  address-family ipv4 unicast

    route-target import 100:2

    route-target import 100:2 evpn

    route-target export 100:2

    route-target export 100:2 evpn

vpc domain 1

  peer-keepalive destination 10.253.1.4 source 10.253.1.5 vrf Keepalive

 

interface Vlan41

  no shutdown

  vrf member vxlan-100

  ip address 172.16.129.1/24

  fabric forwarding mode anycast-gateway

 

interface Vlan42

  no shutdown

  vrf member vxlan-100

  ip address 172.16.130.1/24

  fabric forwarding mode anycast-gateway

 

interface Vlan999

  no shutdown

  vrf member vxlan-100

  ip forward

 

interface port-channel30

  switchport

  switchport mode trunk

  switchport trunk allowed vlan 41-42

  vpc 1

 

interface port-channel54

  switchport

  switchport mode trunk

  spanning-tree port type network

  vpc peer-link

 

interface nve1

  no shutdown

  host-reachability protocol bgp

  source-interface loopback101

  member vni 1 associate-vrf

  member vni 100

    ingress-replication protocol bgp

  member vni 200

    ingress-replication protocol bgp

 

interface Ethernet1/1

  switchport

  switchport mode trunk

  switchport trunk allowed vlan 41-42

  channel-group 30 mode active

  no shutdown

 

interface Ethernet1/48

  description -= Peer Keepalive Link =-

  vrf member Keepalive

  ip address 10.253.1.5/31

  no shutdown

 

interface Ethernet1/53

  description -= Spine =-

  ip address 10.253.1.3/31

  ip ospf network point-to-point

  ip router ospf 1 area 0.0.0.0

  ip pim sparse-mode

  no shutdown

 

interface Ethernet1/54

  description -= Peer Link =-

  switchport

  switchport mode trunk

  channel-group 54 mode active

  no shutdown

 

interface loopback0

  ip address 10.253.127.2/32

  ip router ospf 1 area 0.0.0.0

 

interface loopback101

  ip address 10.253.127.254/32

  ip address 10.253.127.40/32 secondary

  ip router ospf 1 area 0.0.0.0

 

router ospf 1

  router-id 10.253.127.2

router bgp 200

  address-family l2vpn evpn

  neighbor 10.253.127.3

    remote-as 200

    update-source loopback0

    address-family ipv4 unicast

      advertisement-interval 1

    address-family l2vpn evpn

      send-community

      send-community extended

  vrf vxlan-100

    address-family ipv4 unicast

      network 172.16.129.0/24

      network 172.16.130.0/24

      advertise l2vpn evpn

      redistribute direct route-map DIRECT-BGP-RM

evpn

  vni 100 l2

            rd 100:40

    route-target import 100:1

    route-target export 100:1

  vni 200 l2

            rd 200:40

    route-target import 200:1

    route-target export 200:1

Spine Nexus:

N9k-Spine

nv overlay evpn

feature ospf

feature bgp

feature pim

feature fabric forwarding

feature interface-vlan

feature vn-segment-vlan-based

feature hsrp

feature lacp

feature lldp

feature bfd

feature nv overlay

 

vlan 1

 

route-map BGP-OUT-RM permit 10

  set ip next-hop unchanged

 

vrf context vxlan-100

  vni 1

  rd 100:4

  address-family ipv4 unicast

    route-target import 100:2

    route-target export 100:2

 

interface Ethernet1/48

  ip address 11.0.0.2/24

  ip router ospf 1 area 0.0.0.0

  no shutdown

 

interface Ethernet1/49

  description -= External Port =-

  ip address 10.254.100.3/24

  ip ospf mtu-ignore

  ip router ospf 1 area 0.0.0.0

  no shutdown

 

interface Ethernet1/53

  description -= Leaf 1 =-

  ip address 10.253.1.0/31

  ip ospf network point-to-point

  ip router ospf 1 area 0.0.0.0

  ip pim sparse-mode

  no shutdown

interface Ethernet1/54

  description -= Leaf 2 =-

  ip address 10.253.1.2/31

  ip ospf network point-to-point

  ip router ospf 1 area 0.0.0.0

  ip pim sparse-mode

  no shutdown

 

interface loopback0

  ip address 10.253.127.3/32

  ip router ospf 1 area 0.0.0.0

 

router ospf 1

  router-id 10.253.127.3

 

router bgp 200

  neighbor 10.253.127.1

    remote-as 200

    update-source loopback0

    address-family ipv4 unicast

      advertisement-interval 1

    address-family l2vpn evpn

      send-community

      send-community extended

  neighbor 10.253.127.2

    remote-as 200

    update-source loopback0

    address-family ipv4 unicast

      advertisement-interval 1

    address-family l2vpn evpn

      send-community

      send-community extended

  neighbor 10.254.127.1

    remote-as 100

    update-source loopback0

    ebgp-multihop 5

    address-family ipv4 unicast

      advertisement-interval 1

    address-family l2vpn evpn

      send-community

      send-community extended

      route-map BGP-OUT-RM out

  neighbor 10.254.127.2

    remote-as 100

    update-source loopback0

    ebgp-multihop 5

    address-family ipv4 unicast

      advertisement-interval 1

    address-family l2vpn evpn

      send-community

      send-community extended

      route-map BGP-OUT-RM out

  vrf vxlan-100

    address-family ipv4 unicast

      advertise l2vpn evpn

evpn

  vni 100 l2

            rd 100:3

    route-target import 100:1

    route-target export 100:1

  vni 200 l2

            rd 200:3

    route-target import 200:1

    route-target export 200:1

Leaf Maipu:

Maipu-L11

Maipu-L12

ip vrf 100

 rd 100:2

 l3vnid 1

 address-family evpn

  route-target import 100:2 ipv4

  route-target export 100:2 ipv4

  exit

 exit

 

link-aggregation 64 mode lacp

link-aggregation 250 mode lacp

 

vlan 1

 exit

 

vlan 11-13

 

mlag domain 1

 node id 1

 node role-priority 50

 role preempt

 system-mac 0001.7a95.000b

 keepalive ip destination 192.168.168.41 source 192.168.168.40

 exit

 

vxlan 100

 vxlan vnid 100

 address-family evpn

  rd 100:10

  route-target import 100:1

  route-target export 100:1

  exit

 exit

vxlan 200

 vxlan vnid 200

 address-family evpn

  rd 200:10

  route-target import 200:1

  route-target export 200:1

  exit

 exit

 

 

interface tengigabitethernet0/48

 link-aggregation 64 active

 exit

interface 100ge0/49

 no switchport

 ip address 10.254.1.1 255.255.255.254

 no ip redirects

 ip ospf network point-to-point

 ip ospf bfd

 ip mtu exception forward

 exit

interface 100ge0/50

 no switchport

 ip address 10.254.2.1 255.255.255.254

 no ip redirects

 ip ospf network point-to-point

 ip ospf bfd

 ip mtu exception forward

 exit

interface 100ge0/55

 fec mode rs auto

 link-aggregation 250 active

 exit

interface 100ge0/56

 fec mode rs auto

 link-aggregation 250 active

 exit

!end

 

interface link-aggregation64

 switchport mode trunk

 switchport trunk allowed vlan add 1,11-12

 switchport trunk pvid vlan 1

 vxlan 100 encapsulation vlan 11

 vxlan 200 encapsulation vlan 12

 mlag group 1

 exit

interface link-aggregation250

 switchport mode trunk

 switchport trunk allowed vlan add 11-13

 switchport trunk pvid vlan 1

 mlag peer-link

 exit

 

interface dc0

 ip address 192.168.168.40 255.255.0.0

 exit

 

interface loopback1

 description Router-ID

 ip address 10.254.127.11 255.255.255.255

 exit

 

interface loopback2

 description VTEP

 ip address 10.254.128.11 255.255.255.255

 ip address 10.254.128.10 255.255.255.255 secondary

 exit

 

 

interface loopback100

 ip vrf forwarding 100

 ip address 172.16.250.11 255.255.255.255

 exit

 

interface vxlan100

 ip vrf forwarding 100

 vxlan distribute-gateway

 ip address 172.16.129.1 255.255.255.0

 mac-address 0001.0001.0100

 exit

 

interface vxlan200

 ip vrf forwarding 100

 vxlan distribute-gateway

 ip address 172.16.130.1 255.255.255.0

 mac-address 0001.0001.0100

 exit

 

interface nve1

 source 10.254.128.10

 mac-address 0088.9999.1112

 vxlan 100,200 ingress-replication protocol bgp

 exit

 

router ospf 100

 router-id 10.254.127.11

 bfd all-interfaces

 network 10.254.1.1 0.0.0.0 area 0

 network 10.254.2.1 0.0.0.0 area 0

 network 10.254.127.11 0.0.0.0 area 0

 network 10.254.128.10 0.0.0.0 area 0

 maximum-paths 8

 exit

 

router bgp 100

 no auto-summary

 no synchronization

 bgp router-id 10.254.127.11

 neighbor spine peer-group

 neighbor spine remote-as 100

 neighbor spine update-source loopback1

 neighbor 10.254.127.1 peer-group spine

 neighbor 10.254.127.2 peer-group spine

 maximum-paths ibgp 8

 address-family l2vpn evpn

  neighbor spine activate

  neighbor spine send-community both

  neighbor 10.254.127.1 activate

  neighbor 10.254.127.1 send-community both

  neighbor 10.254.127.2 activate

  neighbor 10.254.127.2 send-community both

  exit-address-family

 address-family ipv4 vrf 100

  advertise-l2vpn-evpn

  network 172.16.129.0 255.255.255.0

  network 172.16.130.0 255.255.255.0

  network 172.16.250.11 255.255.255.255

  network 172.16.250.12 255.255.255.255

  exit-address-family

 exit

ip vrf 100

 rd 100:2

 l3vnid 1

 address-family evpn

  route-target import 100:2 ipv4

  route-target export 100:2 ipv4

  exit

 exit

 

link-aggregation 64 mode lacp

link-aggregation 250 mode lacp

 

vlan 1

 exit

 

vlan 11-13

 

mlag domain 1

 node id 2

 system-mac 0001.7a95.000b

 keepalive ip destination 192.168.168.40 source 192.168.168.41

 exit

 

 

 

vxlan 100

 vxlan vnid 100

 address-family evpn

  rd 100:10

  route-target import 100:1

  route-target export 100:1

  exit

 exit

vxlan 200

 vxlan vnid 200

 address-family evpn

  rd 200:10

  route-target import 200:1

  route-target export 200:1

  exit

 exit

 

 

interface tengigabitethernet0/48

 link-aggregation 64 active

 exit

interface 100ge0/49

 no switchport

 ip address 10.254.1.3 255.255.255.254

 no ip redirects

 ip ospf network point-to-point

 ip ospf bfd

 ip mtu exception forward

 exit

interface 100ge0/50

 no switchport

 ip address 10.254.2.3 255.255.255.254

 no ip redirects

 ip ospf network point-to-point

 ip ospf bfd

 ip mtu exception forward

 exit

interface 100ge0/55

 fec mode rs auto

 link-aggregation 250 active

 exit

interface 100ge0/56

 fec mode rs auto

 link-aggregation 250 active

 exit

!end

 

interface link-aggregation64

 switchport mode trunk

 switchport trunk allowed vlan add 1,11-12

 switchport trunk pvid vlan 1

 vxlan 100 encapsulation vlan 11

 vxlan 200 encapsulation vlan 12

 mlag group 1

 exit

interface link-aggregation250

 switchport mode trunk

 switchport trunk allowed vlan add 11-13

 switchport trunk pvid vlan 1

 mlag peer-link

 exit

 

interface dc0

 ip address 192.168.168.41 255.255.0.0

 exit

 

interface loopback1

 description Router-ID

 ip address 10.254.127.12 255.255.255.255

 exit

 

interface loopback2

 description VTEP

 ip address 10.254.128.12 255.255.255.255

 ip address 10.254.128.10 255.255.255.255 secondary

 exit

 

 

interface loopback100

 ip vrf forwarding 100

 ip address 172.16.250.12 255.255.255.255

 exit

 

interface vxlan100

 ip vrf forwarding 100

 vxlan distribute-gateway

 ip address 172.16.129.1 255.255.255.0

 mac-address 0001.0001.0100

 exit

 

interface vxlan200

 ip vrf forwarding 100

 vxlan distribute-gateway

 ip address 172.16.130.1 255.255.255.0

 mac-address 0001.0001.0100

 exit

 

interface nve1

 source 10.254.128.10

 mac-address 0088.9999.1112

 vxlan 100,200 ingress-replication protocol bgp

 exit

 

router ospf 100

 router-id 10.254.127.12

 bfd all-interfaces

 network 10.254.1.3 0.0.0.0 area 0

 network 10.254.2.3 0.0.0.0 area 0

 network 10.254.127.12 0.0.0.0 area 0

 network 10.254.128.10 0.0.0.0 area 0

 maximum-paths 8

 exit

 

router bgp 100

 no auto-summary

 no synchronization

 bgp router-id 10.254.127.12

 neighbor spine peer-group

 neighbor spine remote-as 100

 neighbor spine update-source loopback1

 neighbor 10.254.127.1 peer-group spine

 neighbor 10.254.127.2 peer-group spine

 maximum-paths ibgp 8

 address-family l2vpn evpn

  neighbor spine activate

  neighbor spine send-community both

  neighbor 10.254.127.1 activate

  neighbor 10.254.127.1 send-community both

  neighbor 10.254.127.2 activate

  neighbor 10.254.127.2 send-community both

  exit-address-family

 address-family ipv4 vrf 100

  advertise-l2vpn-evpn

  network 172.16.129.0 255.255.255.0

  network 172.16.130.0 255.255.255.0

  network 172.16.250.11 255.255.255.255

  network 172.16.250.12 255.255.255.255

  exit-address-family

 exit

Spine Maipu:

Maipu-S1

Maipu-S2

ip vrf 100

 rd 100:3

 l3vnid 1

 address-family evpn

  route-target import 100:2 ipv4

  route-target export 100:2 ipv4

  exit

 exit

 

vxlan 100

 vxlan vnid 100

 address-family evpn

  rd 100:1

  route-target import 100:1

  route-target export 100:1

  exit

 exit

vxlan 200

 vxlan vnid 200

 address-family evpn

  rd 200:1

  route-target import 200:1

  route-target export 200:1

  exit

 exit

 

interface 100ge0/1

 no switchport

 ip address 10.254.1.0 255.255.255.254

 no ip redirects

 ip ospf network point-to-point

 ip ospf bfd

 ip mtu exception forward

 exit

 

interface 100ge0/2

 no switchport

 ip address 10.254.1.2 255.255.255.254

 no ip redirects

 ip ospf network point-to-point

 ip ospf bfd

 ip mtu exception forward

 exit

 

interface 100ge0/6

 no switchport

 ip address 10.254.1.4 255.255.255.254

 no ip redirects

 ip ospf network point-to-point

 ip ospf bfd

 ip mtu exception forward

 exit

 

interface 100ge0/10

 no switchport

 ip address 10.254.1.6 255.255.255.254

 no ip redirects

 ip ospf network point-to-point

 ip ospf bfd

 ip mtu exception forward

 exit

 

interface 100ge0/14

 no switchport

 ip address 10.254.100.1 255.255.255.0

 ip ospf mtu-ignore

 exit

!end

 

interface loopback1

 description Router-ID

 ip address 10.254.127.1 255.255.255.255

 exit

 

router ospf 100

 router-id 10.254.127.1

 bfd all-interfaces

 network 10.254.1.0 0.0.0.0 area 0

 network 10.254.1.2 0.0.0.0 area 0

 network 10.254.1.4 0.0.0.0 area 0

 network 10.254.1.6 0.0.0.0 area 0

 network 10.254.100.0 0.0.0.255 area 0

 network 10.254.127.1 0.0.0.0 area 0

 exit

 

router bgp 100

 no auto-summary

 no synchronization

 neighbor leaf peer-group

 neighbor leaf remote-as 100

 neighbor leaf update-source loopback1

 neighbor leaf advertisement-interval 0

 neighbor 10.253.127.3 remote-as 200

 neighbor 10.253.127.3 ebgp-multihop 10

 neighbor 10.253.127.3 update-source loopback1

 neighbor 10.253.127.3 advertisement-interval 0

 neighbor 10.253.127.3 attribute-unchanged

 neighbor 10.254.127.11 peer-group leaf

 neighbor 10.254.127.12 peer-group leaf

 neighbor 10.254.127.21 peer-group leaf

 address-family l2vpn evpn

  neighbor 10.253.127.3 activate

  neighbor 10.253.127.3 send-community both

  neighbor 10.253.127.3 attribute-unchanged

  neighbor 10.254.127.11 activate

  neighbor 10.254.127.11 route-reflector-client

  neighbor 10.254.127.11 send-community both

  neighbor 10.254.127.12 activate

  neighbor 10.254.127.12 route-reflector-client

  neighbor 10.254.127.12 send-community both

  neighbor 10.254.127.21 activate

  neighbor 10.254.127.21 route-reflector-client

  neighbor 10.254.127.21 send-community both

  exit-address-family

 address-family ipv4 vrf 100

  advertise-l2vpn-evpn

  exit-address-family

 exit

ip vrf 100

 rd 100:3

 l3vnid 1

 address-family evpn

  route-target import 100:2 ipv4

  route-target export 100:2 ipv4

  exit

 exit

 

vxlan 100

 vxlan vnid 100

 address-family evpn

  rd 100:2

  route-target import 100:1

  route-target export 100:1

  exit

 exit

vxlan 200

 vxlan vnid 200

 address-family evpn

  rd 200:2

  route-target import 200:1

  route-target export 200:1

  exit

 exit

 

interface 100ge0/1

 no switchport

 ip address 10.254.2.0 255.255.255.254

 no ip redirects

 ip ospf network point-to-point

 ip ospf bfd

 ip mtu exception forward

 exit

 

interface 100ge0/2

 no switchport

 ip address 10.254.2.2 255.255.255.254

 no ip redirects

 ip ospf network point-to-point

 ip ospf bfd

 ip mtu exception forward

 exit

 

interface 100ge0/6

 no switchport

 ip address 10.254.2.4 255.255.255.254

 no ip redirects

 ip ospf network point-to-point

 ip ospf bfd

 ip mtu exception forward

 exit

 

interface 100ge0/10

 no switchport

 ip address 10.254.2.6 255.255.255.254

 no ip redirects

 ip ospf network point-to-point

 ip ospf bfd

 ip mtu exception forward

 exit

 

interface 100ge0/14

 no switchport

 ip address 10.254.100.2 255.255.255.0

 ip ospf mtu-ignore

 exit

!end

 

interface loopback1

 description Router-ID

 ip address 10.254.127.2 255.255.255.255

 exit

 

router ospf 100

 router-id 10.254.127.2

 bfd all-interfaces

 network 2.2.2.2 0.0.0.0 area 0

 network 10.254.2.0 0.0.0.0 area 0

 network 10.254.2.2 0.0.0.0 area 0

 network 10.254.2.4 0.0.0.0 area 0

 network 10.254.100.0 0.0.0.255 area 0

 network 10.254.127.2 0.0.0.0 area 0

 exit

 

router bgp 100

 no auto-summary

 no synchronization

 neighbor leaf peer-group

 neighbor leaf remote-as 100

 neighbor leaf update-source loopback1

 neighbor leaf advertisement-interval 0

 neighbor 10.253.127.3 remote-as 200

 neighbor 10.253.127.3 ebgp-multihop 10

 neighbor 10.253.127.3 update-source loopback1

 neighbor 10.253.127.3 advertisement-interval 0

 neighbor 10.253.127.3 attribute-unchanged

 neighbor 10.254.127.11 peer-group leaf

 neighbor 10.254.127.12 peer-group leaf

 neighbor 10.254.127.21 peer-group leaf

 address-family l2vpn evpn

  neighbor 10.253.127.3 activate

  neighbor 10.253.127.3 send-community both

  neighbor 10.253.127.3 attribute-unchanged

  neighbor 10.254.127.11 activate

  neighbor 10.254.127.11 route-reflector-client

  neighbor 10.254.127.11 send-community both

  neighbor 10.254.127.12 activate

  neighbor 10.254.127.12 route-reflector-client

  neighbor 10.254.127.12 send-community both

  neighbor 10.254.127.21 activate

  neighbor 10.254.127.21 route-reflector-client

  neighbor 10.254.127.21 send-community both

  exit-address-family

 address-family ipv4 vrf 100

  advertise-l2vpn-evpn

  exit-address-family

 exit

Результат

Хосты друг друга пингуют, прочий трафик тоже ходит. Честно говоря, в этом мы особенно и не сомневались. Опасения вызывало то, как поймут друг друга фабрики, в которых присутствует с одной стороны VPC, а с другой Multi-Chassis LAG. Подёргав интерфейсы с каждой из сторон, убедились в том, что всё работает корректно. Впрочем, на случай проблем с MLAG, на коммутаторах Maipu серии ЦОД доступно стекирование.

 Вот так выглядят маршруты на Nexus:

N9k-Leaf1# sh bgp l2vpn evpn

BGP routing table information for VRF default, address family L2VPN EVPN

BGP table version is 1286, Local Router ID is 10.253.127.1

Status: s-suppressed, x-deleted, S-stale, d-dampened, h-history, *-valid, >-best

Path type: i-internal, e-external, c-confed, l-local, a-aggregate, r-redist, I-injected

Origin codes: i - IGP, e - EGP, ? - incomplete, | - multipath, & - backup, 2 - best2

 

   Network        Next Hop          Metric   LocPrf     Weight Path

Route Distinguisher: 100:1

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[0]:[0.0.0.0]/216

                      10.254.128.20                0          100      0 100 i

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[32]:[172.16.129.1]/272

                      10.254.128.20                0          100      0 100 i

*>i[3]:[0]:[32]:[10.254.128.20]/88

                      10.254.128.20                0          100      0 100 i

 

Route Distinguisher: 100:10

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[0]:[0.0.0.0]/216

                      10.254.128.10                0          100      0 100 i

*>i[2]:[0]:[0]:[48]:[dc4a.3e3b.cbf8]:[0]:[0.0.0.0]/216

                      10.254.128.10                0              100          0 100 i

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[32]:[172.16.129.1]/272

                      10.254.128.10                0          100      0 100 i

*>i[2]:[0]:[0]:[48]:[dc4a.3e3b.cbf8]:[32]:[172.16.129.11]/272

                      10.254.128.10                0          100      0 100 i

*>i[3]:[0]:[32]:[10.254.128.10]/88

                      10.254.128.10                0          100      0 100 i

 

Route Distinguisher: 100:40      (L2VNI 100)

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[0]:[0.0.0.0]/216

                      10.254.128.10                0          100      0 100 i

* i                   10.254.128.20                0          100      0 100 i

*>i[2]:[0]:[0]:[48]:[dc4a.3e3b.cbf8]:[0]:[0.0.0.0]/216

                      10.254.128.10                0          100      0 100 i

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[32]:[172.16.129.1]/272

                      10.254.128.10                0          100          0 100 i

* i                   10.254.128.20                0          100      0 100 i

*>i[2]:[0]:[0]:[48]:[dc4a.3e3b.cbf8]:[32]:[172.16.129.11]/272

                      10.254.128.10                0          100      0 100 i

*>l[3]:[0]:[32]:[10.253.127.40]/88

                      10.253.127.40                     100              32768 i

*>i[3]:[0]:[32]:[10.254.128.10]/88

                      10.254.128.10                0          100      0 100 i

*>i[3]:[0]:[32]:[10.254.128.20]/88

                      10.254.128.20                0          100      0 100 i

 

Route Distinguisher: 200:10

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[0]:[0.0.0.0]/216

                      10.254.128.10                0          100      0 100 i

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[32]:[172.16.130.1]/272

                      10.254.128.10                0          100      0 100 i

*>i[3]:[0]:[32]:[10.254.128.10]/88

                      10.254.128.10                0          100      0 100 i

 

Route Distinguisher: 200:40      (L2VNI 200)

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[0]:[0.0.0.0]/216

                      10.254.128.10                0          100      0 100 i

*>l[2]:[0]:[0]:[48]:[dc4a.3e3b.cbe9]:[0]:[0.0.0.0]/216

                      10.253.127.40                     100              32768 i

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[32]:[172.16.130.1]/272

                      10.254.128.10                0          100      0 100 i

*>l[2]:[0]:[0]:[48]:[dc4a.3e3b.cbe9]:[32]:[172.16.130.11]/272

                      10.253.127.40                     100              32768 i

*>l[3]:[0]:[32]:[10.253.127.40]/88

                      10.253.127.40                     100              32768 i

*>i[3]:[0]:[32]:[10.254.128.10]/88

                      10.254.128.10                0          100      0 100 i

 

Route Distinguisher: 100:42      (L3VNI 1)

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[0]:[0.0.0.0]/216

                      10.254.128.10                0          100      0 100 i

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[32]:[172.16.129.1]/272

                      10.254.128.10                0          100      0 100 i

* i               10.254.128.20                    0          100      0 100 i

*>i[2]:[0]:[0]:[48]:[0001.0001.0100]:[32]:[172.16.130.1]/272

                      10.254.128.10                0          100      0 100 i

*>i[2]:[0]:[0]:[48]:[dc4a.3e3b.cbf8]:[32]:[172.16.129.11]/272

                      10.254.128.10                0          100      0 100 i

*>l[5]:[0]:[0]:[24]:[172.16.129.0]/224

                      10.253.127.40                     100              32768 i

*>l[5]:[0]:[0]:[24]:[172.16.130.0]/224

                        10.253.127.40                           100       32768 i

А вот вывод с Maipu:

L11#show bgp l2vpn evpn all all-type

BGP local router ID is 10.254.127.11

 

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:100:1

 MAC/IP Advertisement Routes:

            Network(ETID:MAC:IP)                                Next Hop                    Metric LocPrf Weight Path

[B]*>i0:48:0001.0001.0100:0:0.0.0.0/96                  10.254.128.20            0          100      0 i

[B]* i                                                   10.254.128.20            0          100      0 i

[B]*>i0:48:0001.0001.0100:32:172.16.129.1/128                 10.254.128.20            0          100              0 i

[B]* i                                                  10.254.128.20            0          100      0 i

 Inclusive Multicast Ethernet Tag Routes:

            Network(Originating IP Addr)                        Next Hop                    Metric LocPrf Weight Path

[B]*>i0:32:10.254.128.20/72                                     10.254.128.20            0          100      0 i

[B]* i                                                   10.254.128.20            0          100      0 i

EVPN Information for Route Distinguisher:100:2

 MAC/IP Advertisement Routes:

            Network(ETID:MAC:IP)                                Next Hop                    Metric LocPrf Weight Path

[B]*> 0:48:0001.0001.0100:32:172.16.129.1/128                 0.0.0.0                        0                     32768 i

[B]* i                                                  10.254.128.20            0          100      0 i

[B]*> 0:48:dc4a.3e3b.cbf8:32:172.16.129.11/128                0.0.0.0                        0                     32768 i

[B]*> 0:48:0001.0001.0100:32:172.16.130.1/128                 0.0.0.0                        0                     32768 i

[B]*>i0:48:dc4a.3e3b.cbe9:32:172.16.130.11/128               10.253.127.40            0          100              0 200 i

 IP Prefix Routes:

            Network(ETID:IP)                                         Next Hop                    Metric LocPrf Weight Path

[B]*> 0:24:172.16.129.0/72                                       0.0.0.0                        0         32768 i

[B]*> 0:24:172.16.130.0/72                                       0.0.0.0                        0         32768 i

EVPN Information for Route Distinguisher:100:10

 MAC/IP Advertisement Routes:

            Network(ETID:MAC:IP)                                Next Hop                    Metric LocPrf Weight Path

[B]*> 0:48:0001.0001.0100:0:0.0.0.0/96                  0.0.0.0                        0         32768 i

[B]* i                                                  10.254.128.20            0          100      0 i

[B]*> 0:48:dc4a.3e3b.cbf8:0:0.0.0.0/96                    0.0.0.0                        0         32768 i

[B]*> 0:48:0001.0001.0100:32:172.16.129.1/128                 0.0.0.0                        0                     32768 i

[B]* i                                                  10.254.128.20            0          100      0 i

[B]*> 0:48:dc4a.3e3b.cbf8:32:172.16.129.11/128                0.0.0.0                        0                     32768 i

 Inclusive Multicast Ethernet Tag Routes:

            Network(Originating IP Addr)                        Next Hop                    Metric LocPrf Weight Path

[B]*>i0:32:10.253.127.40/72                                     10.253.127.40            0          100      0 200 i

[B]*> 0:32:10.254.128.10/72                                     0.0.0.0                        0         32768 i

[B]*>i0:32:10.254.128.20/72                                     10.254.128.20            0          100      0 i

EVPN Information for Route Distinguisher:100:40

 Inclusive Multicast Ethernet Tag Routes:

            Network(Originating IP Addr)                        Next Hop                    Metric LocPrf Weight Path

[B]* i0:32:10.253.127.40/72                                       10.253.127.40            0          100      0 200 i

[B]*>i                                                              10.253.127.40            0          100      0 200 i

EVPN Information for Route Distinguisher:200:10

 MAC/IP Advertisement Routes:

            Network(ETID:MAC:IP)                                Next Hop                    Metric LocPrf Weight Path

[B]*> 0:48:0001.0001.0100:0:0.0.0.0/96                  0.0.0.0                        0         32768 i

[B]*>i0:48:dc4a.3e3b.cbe9:0:0.0.0.0/96                  10.253.127.40            0          100      0 200 i

[B]*                                                    0.0.0.0                        0         32768 i

[B]*>i0:48:dc4a.3e3b.cbf8:0:0.0.0.0/96                    10.253.127.40            0          100      0 200 i

[B]*> 0:48:0001.0001.0100:32:172.16.130.1/128                 0.0.0.0                        0                     32768 i

[B]*>i0:48:dc4a.3e3b.cbe9:32:172.16.130.11/128               10.253.127.40            0          100              0 200 i

 Inclusive Multicast Ethernet Tag Routes:

            Network(Originating IP Addr)                        Next Hop                    Metric LocPrf Weight Path

[B]*>i0:32:10.253.127.40/72                                     10.253.127.40            0          100      0 200 i

[B]*> 0:32:10.254.128.10/72                                     0.0.0.0                        0         32768 i

EVPN Information for Route Distinguisher:200:40

 MAC/IP Advertisement Routes:

            Network(ETID:MAC:IP)                                Next Hop                    Metric LocPrf Weight Path

[B]*>i0:48:dc4a.3e3b.cbe9:0:0.0.0.0/96                  10.253.127.40            0          100      0 200 i

[B]* i                                                  10.253.127.40            0          100      0 200 i

[B]* i0:48:dc4a.3e3b.cbf8:0:0.0.0.0/96                     10.253.127.40            0          100      0 200 i

[B]*>i                                                              10.253.127.40            0          100      0 200 i

[B]*>i0:48:dc4a.3e3b.cbe9:32:172.16.130.11/128               10.253.127.40            0          100              0 200 i

[B]* i                                                  10.253.127.40            0          100      0 200 i

 Inclusive Multicast Ethernet Tag Routes:

            Network(Originating IP Addr)                        Next Hop                    Metric LocPrf Weight Path

[B]* i0:32:10.253.127.40/72                                       10.253.127.40            0          100      0 200 i

[B]*>i                                                              10.253.127.40            0          100      0 200 i

 Проверили доступность хостов и по L2, при помещении их в один VXLAN-сегмент.

Выводы

Главный вывод - мы не напоролись ни на какой подводный камень. Получили работающий Asymmetric Routing & Bridging. Фабрику Cisco можно нарастить подами Maipu, пусть и при определённых ограничениях.

Хорошим продолжением было бы тестирование такой схемы на пилотном сегменте реальной сети так, чтобы подключить побольше хостов разных типов, получить много MAC-адресов, маршрутов и реальный трафик.

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

Кроме того, 18 октября у нас пройдёт онлайн-митап, на котором мы расскажем о доступных сегодня в России альтернативах и на примере Maipu продемонстрируем, как они справляются с типовыми кейсами заказчиков.

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