VxLAN 工厂。 第2部分

你好,哈布尔。 我继续VxLAN EVPN技术系列文章,其中 专为课程启动而编写 “网络工程师” 通过 OTUS。 今天我们将讨论任务中一个有趣的部分——路由。 然而,无论听起来多么微不足道,在网络工厂的工作框架内,一切可能并不那么简单。

VxLAN 工厂。 第2部分

1 部分循环 - 服务器之间的 L2 连接

在上一部分中,我们在 Nexus 9000v 的网络结构之上实现了一个构建的广播域。 然而,这并不是数据中心网络内需要解决的全部任务。 今天我们将讨论下一个任务 - 网络之间或 VNI 之间的路由。

让我提醒您一下,使用了 Spine-Leaf 拓扑:

VxLAN 工厂。 第2部分

首先,我们来看看路由是如何发生的以及它有什么特点。

为了便于理解,我们简化一下逻辑图,为 Host-20000 添加另一个 VNI 2。 结果是:

VxLAN 工厂。 第2部分

在这种情况下,如何将流量从一台主机传输到另一台主机?

有两种选择:

  1. 在所有 Leaf 交换机上保留所有 VNI 的信息,然后所有路由都将发生在网络中的第一个 Leaf 上;
  2. 使用专用的 L3 VNI

第一种方法简单方便。 因为您只需要在所有 Leaf 交换机上安装所有 VNI。 然而,为所有叶子设置数百或数千个 VNI 似乎不再是一项简单的任务。 因此,在工作中很少使用。

让我们看看方法 2,它更有趣,也更复杂一些,但在设置工厂方面提供了更大的灵活性。

让我们将“PROD”添加到 VRF 拓扑中。 我们将在 Leaf-10/11 对上添加接口 vlan 12,在 Leaf-20 上添加接口 VLAN 21。 VLAN 20 与 VNI 20000 关联

vrf context PROD
  rd auto       ! Route Distinguisher не принципиален и можем использовать сформированный автоматически
  address-family ipv4 unicast
    route-target both auto      ! указываем Route-target с которым будут импортироваться и экспортироваться префиксы в/из VRF
vlan 20
  vn-segment 20000

interface nve 1
  member vni 20000
    ingress-replication protocol bgp

interface Vlan10
  no shutdown
  vrf member PROD
  ip address 192.168.20.1/24
  fabric forwarding mode anycast-gateway

为了使用 L3VNI,您需要创建一个新的 VLAN 并将其与新的 VNI 关联。 新的 VNI 在对 VLAN 10 和 20 信息感兴趣的所有叶子上必须相同

vlan 99
  vn-segment 99000

interface nve1
  member vni 99000 associate-vrf        ! Создаем L3 VNI

vrf context PROD
  vni 99000                             ! Привязываем L3 VNI к определенному VRF

结果,图表将如下所示:

VxLAN 工厂。 第2部分

还需要做一点工作 - 添加一个接口 - VRF PROD 中的接口 vlan 99

interface Vlan99
  no shutdown
  vrf member PROD
  ip forward  ! На интерфейсе не должно быть IP. Используется только для пересылки пакетов между Leaf

因此,从 Host-1 向 Host-2 传递帧的逻辑如下:

  1. Host-1发送的帧到达VLAN 10中的Leaf,关联VNI 10000;
  2. Leaf检查目的地址在哪里,并通过第二个Leaf交换机上的L3 VNI找到它;
  3. 一旦找到到目标地址的路由,Leaf 就会将帧打包到带有必要的 L3VNI 99000 的标头中,并将其发送到第二个 Leaf;
  4. 第二个叶子交换机从 L3VNI 99000 接收数据。它获取原始帧并将其传输到所需的 L2VNI 20000,然后传输到 VLAN 20。

这项工作的结果是,L3VNI 无需在所有叶子交换机上保留有关网络上所有 VNI 的信息。

因此,当我们将流量从 Host-1 发送到 Host-2 时,数据包将使用新的 VNI - 99000 打包在 VxLAN 内:

VxLAN 工厂。 第2部分

Leaf-1 究竟如何从另一个 VNI 获知 MAC 地址还有待观察。 使用 EVPN 路由类型 2 (MAC/IP) 也会发生这种情况。

下面显示了传播关于位于另一个 VNI 中的前缀的路由的过程:

VxLAN 工厂。 第2部分

也就是说,从 VNI 20000 接收的地址有两个 RT。
让我提醒您,从 Update 接收的路由最终会出现在 BGP 表中,并在 VRF 设置中指定路由目标(该过程稍微复杂一些,但我们不会深入研究本文)。
RT 本身根据以下公式形成:AS:VNI(如果使用自动模式)。

自动和手动模式下 RT 形成示例:

vrf context PROD
  address-family ipv4 unicast
    route-target import auto - автоматический режим работы
    route-target export 65001:20000 - ручной режим формирования RT

上面的结果显示来自另一个 VNI 的前缀有两个 RT 值。
其中之一是 65001:99000 - 额外的 L3 VNI。 由于此 VNI 在所有叶子上都相同,并且属于 VRF 设置中的导入规则,因此前缀最终出现在 BGP 表中,这可以从输出中看到:

sh bgp l2vpn evpn
<.....>
   Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.255.1.11:32777    (L2VNI 10000)
*>l[2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216
                      10.255.1.10                       100      32768 i
*>l[2]:[0]:[0]:[48]:[5001.0007.0007]:[32]:[192.168.10.10]/272
                      10.255.1.10                       100      32768 i
*>l[3]:[0]:[32]:[10.255.1.10]/88
                      10.255.1.10                       100      32768 i

Route Distinguisher: 10.255.1.21:32787
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.20.20]/272    ! Префикс полученный из VNI 20000
                      10.255.1.20                       100          0 i
*>i                   10.255.1.20                       100          0 i

如果我们更仔细地查看收到的更新,我们可以看到该前缀有两个 RT:

Leaf11# sh bgp l2vpn evpn 5001.0008.0007
BGP routing table information for VRF default, address family L2VPN EVPN
Route Distinguisher: 10.255.1.21:32787
BGP routing table entry for [2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.20.2
0]/272, version 5164
Paths: (2 available, best #2)
Flags: (0x000202) (high32 00000000) on xmit-list, is not in l2rib/evpn, is not i
n HW

  Path type: internal, path is valid, not best reason: Neighbor Address, no labeled nexthop
  AS-Path: NONE, path sourced internal to AS
    10.255.1.20 (metric 81) from 10.255.1.102 (10.255.1.102)
      Origin IGP, MED not set, localpref 100, weight 0
      Received label 20000 99000                                 ! Два label для работы VxLAN
      Extcommunity: RT:65001:20000 RT:65001:99000 SOO:10.255.1.20:0 ENCAP:8     ! Два значения Route-target, на основе, которых добавили данный префикс
          Router MAC:5001.0005.0007
      Originator: 10.255.1.21 Cluster list: 10.255.1.102
<......>

在 Leaf-1 的路由表中,您还可以看到前缀 192.168.20.20/32:

Leaf11# sh ip route vrf PROD
192.168.10.0/24, ubest/mbest: 1/0, attached
    *via 192.168.10.1, Vlan10, [0/0], 01:29:28, direct
192.168.10.1/32, ubest/mbest: 1/0, attached
    *via 192.168.10.1, Vlan10, [0/0], 01:29:28, local
192.168.10.10/32, ubest/mbest: 1/0, attached
    *via 192.168.10.10, Vlan10, [190/0], 01:27:22, hmm
192.168.20.20/32, ubest/mbest: 1/0                                        ! Адрес Host-2
    *via 10.255.1.20%default, [200/0], 01:20:20, bgp-65001, internal, tag 65001     ! Доступный через Leaf-2
(evpn) segid: 99000 tunnelid: 0xaff0114 encap: VXLAN                                ! Через VNI 99000

注意到路由表中缺少主前缀 192.168.20.0/24 了吗?
没错,他不在。 也就是说,远程叶子仅接收有关网络上的主机的信息。 这是正确的行为。 在上面的所有更新中您可以看到信息附带有 MAC/IP 内容。 没有谈论任何前缀。

这就是主机移动管理器 (HMM) 协议的工作原理,它先填充 ARP 表,然后再填充 BGP 表(出于本文的目的,我们将省略此过程)。 基于从HMM接收到的信息,形成EVPN路由类型2(通过MAC/IP传输)。

但是,如果需要传输前缀信息怎么办?

对于此类信息,有 EVPN 路由类型 5 - 它允许您通过地址族 l2vpn evpn 传输前缀(在撰写本文时,此类路由仅存在于草案版本中) RFC,因此,不同制造商之间此类路由的行为可能会有所不同)

为了传输前缀,需要添加将在 VRF 的 BGP 进程中通告的前缀:

router bgp 65001
  vrf PROD
    address-family ipv4 unicast
      redistribute direct route-map VNI20000        ! В данном случае анонсируем префиксы подключение непосредственно к Leaf в VNI 20000
route-map VNI20000 permit 10
  match ip address prefix-list VNI20000_OUT    ! Указываем какой использовать prefix-list

ip prefix-list VNI20000_OUT seq 5 permit 192.168.20.0/24   ! Указываем какие сети будут попадать в EVPN route-type 5

结果,更新将具有:

VxLAN 工厂。 第2部分

让我们看一下 BGP 表。 除了EVPN路由类型2,3之外,还出现了类型5路由,其中​​包含有关网络号的信息:

<......>
   Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.255.1.11:3
* i[5]:[0]:[0]:[24]:[192.168.10.0]/224
                      10.255.1.10              0        100          0 ?
*>i                   10.255.1.10              0        100          0 ?

Route Distinguisher: 10.255.1.11:32777
* i[2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216
                      10.255.1.10                       100          0 i
*>i                   10.255.1.10                       100          0 i
* i[2]:[0]:[0]:[48]:[5001.0007.0007]:[32]:[192.168.10.10]/272
                      10.255.1.10                       100          0 i
*>i                   10.255.1.10                       100          0 i
* i[3]:[0]:[32]:[10.255.1.10]/88
                      10.255.1.10                       100          0 i
*>i                   10.255.1.10                       100          0 i

Route Distinguisher: 10.255.1.12:3
*>i[5]:[0]:[0]:[24]:[192.168.10.0]/224      ! EVPN route-type 5 с номером префикса
                      10.255.1.10              0        100          0 ?
* i
<.......>                   

该前缀也出现在路由表中:

Leaf21# sh ip ro vrf PROD
192.168.10.0/24, ubest/mbest: 1/0
    *via 10.255.1.10%default, [200/0], 00:14:32, bgp-65001, internal, tag 65001  ! Удаленный префикс, доступный через Leaf1/2(адрес Next-hop = virtual IP между парой VPC)
(evpn) segid: 99000 tunnelid: 0xaff010a encap: VXLAN      ! Префикс доступен через L3VNI 99000

192.168.10.10/32, ubest/mbest: 1/0
    *via 10.255.1.10%default, [200/0], 02:33:40, bgp-65001, internal, tag 65001
(evpn) segid: 99000 tunnelid: 0xaff010a encap: VXLAN

192.168.20.0/24, ubest/mbest: 1/0, attached
    *via 192.168.20.1, Vlan20, [0/0], 02:39:44, direct
192.168.20.1/32, ubest/mbest: 1/0, attached
    *via 192.168.20.1, Vlan20, [0/0], 02:39:44, local
192.168.20.20/32, ubest/mbest: 1/0, attached
    *via 192.168.20.20, Vlan20, [190/0], 02:35:46, hmm

VxLAN EVPN 系列文章的第二部分到此结束。 在下一部分中,我们将研究 VRF 之间路由的各种选项。

IPv6协议基础知识及其与IPv4的区别

来源: habr.com

添加评论