具有选择性 VNI 底层操作的 VXLAN

网络工程 思科 虚拟局域网
2021-07-04 01:51:07

我们尝试实现一个场景,提供从 POP A 到 POP B 的 L2 传输服务,连接三个不同的运营商传输链路。将来,我们可能希望实施 POP C 并有能力在任何 POP 之间提供 L2 服务。

我们努力实现的目标是:

  1. 可扩展性。将添加更多 POP
  2. 亚秒收敛
  3. 流量工程能力,以便根据传输链路的状态建立有条件的业务逻辑。

我们尝试了一种基于 BGP 底层的 VXLAN 方法,使用路由映射来建立本地首选项并通过操纵对等 VTEPS 的可达性来控制传输每个 VNI 的运营商链路,为每个 VLAN/VNI 使用一个环回接口

在为 nve 接口定义源接口时会出现以下配置的问题,因为它必须只有一个。如果定义loopback1为source,则只携带vlan 101。如果定义loopback 2为source,则只携带vlan 102,以此类推。忽略从任何环回(1 到 3)获取流量时每个对等 VTEP 均可访问的事实。

下面的配置是针对 POP A red siwtch,但您可以计算其他 3 个。Eht1/6 和 Eth1/7 是传输链路中的 2 个。蓝色交换机的第三个链接是 Eth1/5。Eth1/53 用于 POP 交换机互连。

这种配置有没有可能起作用?有谁知道实现上述目标的另一种方法?

我也尝试过底层 OSPF + BGP EVP 方法。收敛很棒(低于200ms)并且所有的vlan都被承载了。问题是我们无法找到一种方法来通过不同的传输链接有选择地路由 vlan/vnis。是否可以?有什么线索吗?

提前致谢,

米格尔


nv overlay evpn
feature ospf
feature bgp
feature interface-vlan
feature vn-segment-vlan-based
feature lacp
feature bfd
feature nv overlay

!
vlan 1,101-103
vlan 101
  vn-segment 10101

vlan 102
  vn-segment 10102

vlan 103
  vn-segment 10103
!
spanning-tree port type edge bpduguard default
spanning-tree vlan 101-103 priority 0
!
ip prefix-list REMOTE_TEP_101 seq 5 permit 31.31.31.31/32 
ip prefix-list REMOTE_TEP_101 seq 10 permit 41.41.41.31/32 
ip prefix-list REMOTE_TEP_102 seq 5 permit 32.32.32.32/32 
ip prefix-list REMOTE_TEP_102 seq 10 permit 42.42.42.42/32 
ip prefix-list REMOTE_TEP_103 seq 5 permit 33.33.33.33/32 
ip prefix-list REMOTE_TEP_103 seq 10 permit 43.43.43.43/32 

route-map FROM_LINK1 permit 10
  match ip address prefix-list REMOTE_TEP_101 
  set local-preference 300

route-map FROM_LINK1 permit 20
  match ip address prefix-list REMOTE_TEP_102 
  set local-preference 200

route-map FROM_LINK1 permit 30
  match ip address prefix-list REMOTE_TEP_103 
  set local-preference 100

route-map FROM_LINK1 permit 100

route-map FROM_LINK2 permit 10
  match ip address prefix-list REMOTE_TEP_101 
  set local-preference 100

route-map FROM_LINK2 permit 20
  match ip address prefix-list REMOTE_TEP_102 
  set local-preference 300

route-map FROM_LINK2 permit 30
  match ip address prefix-list REMOTE_TEP_103 
  set local-preference 200

route-map FROM_LINK2 permit 100

route-map FROM_LINK3 permit 10
  match ip address prefix-list REMOTE_TEP_101 
  set local-preference 200

route-map FROM_LINK3 permit 30
  match ip address prefix-list REMOTE_TEP_102 REMOTE_TEP_103 
  set local-preference 300

route-map FROM_LINK3 permit 100
!

vrf context management
!
interface Vlan1
  no shutdown
!
interface Vlan101
  no shutdown
  ip address 91.91.91.1/24
  mtu 9216
!
interface Vlan102
  no shutdown
  ip address 92.92.92.1/24
  mtu 9216
!
interface Vlan103
  no shutdown
  ip address 93.93.93.1/24
  mtu 9216
!
interface nve1
  no shutdown
  source-interface loopback1
  member vni 10101
    ingress-replication protocol static
      peer-ip 31.31.31.31
  member vni 10102
    ingress-replication protocol static
      peer-ip 32.32.32.32
  member vni 10103
    ingress-replication protocol static
      peer-ip 33.33.33.33
!
interface Ethernet1/53
  no switchport
  mtu 9216
  bfd interval 50 min_rx 50 multiplier 3
  bfd ipv4 interval 50 min_rx 50 multiplier 3
  no ip redirects
  ip address 201.201.201.1/24
  no ipv6 redirects
  no shutdown
!
interface Ethernet1/6
  no switchport
  mtu 9216
  bfd interval 50 min_rx 50 multiplier 3
  bfd ipv4 interval 50 min_rx 50 multiplier 3
  no ip redirects
  ip address 102.102.102.1/24
  no ipv6 redirects
  no shutdown
!
interface Ethernet1/7
  no switchport
  mtu 9216
  bfd interval 50 min_rx 50 multiplier 3
  bfd ipv4 interval 50 min_rx 50 multiplier 3
  no ip redirects
  ip address 101.101.101.1/24
  no ipv6 redirects
  no shutdown
!
interface Ethernet1/48
  switchport
  switchport access vlan 101
  spanning-tree port type edge
  mtu 9216
  no shutdown
!
interface loopback0
  description ### VXLAN - ROUTING PURPOSES ###
  ip address 1.1.1.1/32
!
interface loopback1
  description ### VXLAN - TEP-NVE - VLAN 101 ###
  ip address 11.11.11.11/32
  ip address 10.101.0.1/32 secondary
!
interface loopback2
  description ### VXLAN - TEP-NVE - VLAN 102 ###
  ip address 12.12.12.12/32
  ip address 10.102.0.1/32 secondary
!
interface loopback3
  description ### VXLAN - TEP-NVE - VLAN 103 ###
  ip address 13.13.13.13/32
  ip address 10.103.0.1/32 secondary
!
router bgp 100
  router-id 1.1.1.1
  timers bgp 5 15
  address-family ipv4 unicast
    network 11.11.11.11/32
    network 12.12.12.12/32
    network 13.13.13.13/32
    network 10.101.0.1/32
    network 10.102.0.1/32
    network 10.103.0.1/32
  neighbor 101.101.101.2
    remote-as 200
        bfd
    address-family ipv4 unicast
      send-community
      send-community extended
      route-map FROM_LINK1 in
  neighbor 102.102.102.2
    remote-as 200
    bfd
    address-family ipv4 unicast
      send-community
      send-community extended
      route-map FROM_LINK2 in
  neighbor 201.201.201.2
    remote-as 100
    bfd
    address-family ipv4 unicast
      send-community
      send-community extended
      next-hop-self
!
end
!
1个回答

我认为您尝试做的事情不符合 VXLAN 或 VXLAN EVPN 的设计。重点是结构是模板化的、可扩展的,并且在任何地方都具有相同的多条路径。一旦您对每个 VNI 每个 VTEP 进行操作,可扩展性和统一转发模型就会受到影响。

此外,通过在多个站点之间拆分单个结构,您正在创建一个共享容错域。

我不会操纵底层,而是采用不同的方法,并考虑实施某种 DCI 技术,然后在切换时进行分段,可能基于每个租户 (VRF)。例如,运行 3 组 OTV 或 DCI VXLAN(例如 Cisco 多站点 EVPN)段,然后以不同方式路由它们。它可能像将 dot1q 切换到 3 个单独的 DCI VXLAN 一样“简单”,然后您可以以不同的方式路由每个组(尽管至少需要 12 个额外的交换机来实现 2 个 DC 的冗余......)。最终,至少在 Cisco 上,无法拆分 NVE/VTEP。

我还注意到,在路由方面,无论您是使用传统切换到边界/中央路由的方式运行 VXLAN,还是使用 EVPN 升级到分布式任播 GW,单一结构方法都会让您头疼。这在对称性方面尤其成问题(想想结构边缘的防火墙......)。