VxLAN 工厂。 第1部分

你好,哈布尔。 我目前是 OTUS 网络工程师课程的课程负责人。
期待新课程开始招生 “网络工程师”,我准备了一系列关于VxLAN EVPN技术的文章。

关于 VxLAN EVPN 如何工作的资料有大量,因此我想收集各种任务和实践来解决现代数据中心中的问题。

VxLAN 工厂。 第1部分

在有关 VxLAN EVPN 技术的系列的第一部分中,我想研究一种在网络结构之上组织主机之间的 L2 连接的方法。

所有示例都将在以主干-叶子拓扑组装的 Cisco Nexus 9000v 上执行。 在本文中,我们不会详细讨论如何设置 Underlay 网络。

  1. 底层网络
  2. 地址系列 l2vpn evpn 的 BGP 对等互连
  3. 设置 NVE
  4. 抑制 arp

底层网络

使用的拓扑结构如下:

VxLAN 工厂。 第1部分

让我们在所有设备上设置寻址:

Spine-1 - 10.255.1.101
Spine-2 - 10.255.1.102

Leaf-11 - 10.255.1.11
Leaf-12 - 10.255.1.12
Leaf-21 - 10.255.1.21

Host-1 - 192.168.10.10
Host-2 - 192.168.10.20

让我们检查所有设备之间是否存在 IP 连接:

Leaf21# sh ip route
<........>
10.255.1.11/32, ubest/mbest: 2/0                      ! Leaf-11 доступен чеерз два Spine
    *via 10.255.1.101, Eth1/4, [110/81], 00:00:03, ospf-UNDERLAY, intra
    *via 10.255.1.102, Eth1/3, [110/81], 00:00:03, ospf-UNDERLAY, intra
10.255.1.12/32, ubest/mbest: 2/0                      ! Leaf-12 доступен чеерз два Spine
    *via 10.255.1.101, Eth1/4, [110/81], 00:00:03, ospf-UNDERLAY, intra
    *via 10.255.1.102, Eth1/3, [110/81], 00:00:03, ospf-UNDERLAY, intra
10.255.1.21/32, ubest/mbest: 2/0, attached
    *via 10.255.1.22, Lo0, [0/0], 00:02:20, local
    *via 10.255.1.22, Lo0, [0/0], 00:02:20, direct
10.255.1.101/32, ubest/mbest: 1/0
    *via 10.255.1.101, Eth1/4, [110/41], 00:00:06, ospf-UNDERLAY, intra
10.255.1.102/32, ubest/mbest: 1/0
    *via 10.255.1.102, Eth1/3, [110/41], 00:00:03, ospf-UNDERLAY, intra

让我们检查一下VPC域是否已经创建,两台交换机都通过了一致性检查,并且两个节点上的设置是否相同:

Leaf11# show vpc 

vPC domain id                     : 1
Peer status                       : peer adjacency formed ok
vPC keep-alive status             : peer is alive
Configuration consistency status  : success
Per-vlan consistency status       : success
Type-2 consistency status         : success
vPC role                          : primary
Number of vPCs configured         : 0
Peer Gateway                      : Disabled
Dual-active excluded VLANs        : -
Graceful Consistency Check        : Enabled
Auto-recovery status              : Disabled
Delay-restore status              : Timer is off.(timeout = 30s)
Delay-restore SVI status          : Timer is off.(timeout = 10s)
Operational Layer3 Peer-router    : Disabled

vPC status
----------------------------------------------------------------------------
Id    Port          Status Consistency Reason                Active vlans
--    ------------  ------ ----------- ------                ---------------
5     Po5           up     success     success               1

BGP 对等互连

最后,您可以继续设置覆盖网络。

作为本文的一部分,需要在主机之间组织一个网络,如下图所示:

VxLAN 工厂。 第1部分

要配置 Overlay 网络,您需要在支持 l2vpn evpn 系列的 Spine 和 Leaf 交换机上启用 BGP:

feature bgp
nv overlay evpn

接下来,您需要在 Leaf 和 Spine 之间配置 BGP 对等互连。 为了简化设置并优化路由信息的分发,我们将 Spine 配置为 Route-Reflector 服务器。 我们将使用模板在配置中编写所有 Leaf 来优化设置。

所以 Spine 上的设置如下所示:

router bgp 65001
  template peer LEAF 
    remote-as 65001
    update-source loopback0
    address-family l2vpn evpn
      send-community
      send-community extended
      route-reflector-client
  neighbor 10.255.1.11
    inherit peer LEAF
  neighbor 10.255.1.12
    inherit peer LEAF
  neighbor 10.255.1.21
    inherit peer LEAF

Leaf 交换机上的设置看起来类似:

router bgp 65001
  template peer SPINE
    remote-as 65001
    update-source loopback0
    address-family l2vpn evpn
      send-community
      send-community extended
  neighbor 10.255.1.101
    inherit peer SPINE
  neighbor 10.255.1.102
    inherit peer SPINE

在 Spine 上,让我们检查与所有 Leaf 交换机的对等互连:

Spine1# sh bgp l2vpn evpn summary
<.....>
Neighbor        V    AS MsgRcvd MsgSent   TblVer  InQ OutQ Up/Down  State/PfxRcd
10.255.1.11     4 65001       7       8        6    0    0 00:01:45 0
10.255.1.12     4 65001       7       7        6    0    0 00:01:16 0
10.255.1.21     4 65001       7       7        6    0    0 00:01:01 0

正如您所看到的,BGP 没有任何问题。 让我们继续设置 VxLAN。 进一步的配置仅在交换机的 Leaf 侧完成。 Spine仅作为网络的核心,只参与传输流量。 所有封装和路径确定工作仅发生在叶子交换机上。

设置 NVE

NVE-- 网络虚拟接口

在开始设置之前,我们先介绍一些术语:

VTEP - 虚拟隧道端点,VxLAN 隧道开始或结束的设备。 VTEP 不一定是任何网络设备。 支持VxLAN技术的服务器也可以充当服务器。 在我们的拓扑中,所有 Leaf 交换机都是 VTEP。

VNI - 虚拟网络索引 - VxLAN 内的网络标识符。 可以用 VLAN 来类比。 然而,也存在一些差异。 使用结构时,VLAN 仅在一台叶子交换机内变得唯一,并且不会在网络中传输。 但每个 VLAN 都可以有一个与其关联的 VNI 编号,该编号已通过网络传输。 它是什么样子以及如何使用它将进一步讨论。

让我们启用 VxLAN 技术的功能以及将 VLAN 编号与 VNI 编号关联的功能:

feature nv overlay
feature vn-segment-vlan-based

我们来配置NVE接口,它负责VxLAN的操作。 该接口负责将帧封装在 VxLAN 标头中。 您可以与 GRE 的 Tunnel 接口进行类比:

interface nve1
  no shutdown
  host-reachability protocol bgp ! используем BGP для передачи маршрутной информации
  source-interface loopback0    ! интерфейс  с которого отправляем пакеты loopback0

在 Leaf-21 交换机上,一切创建都没有问题。 但是,如果我们检查命令的输出 show nve peers,那么它将为空。 这里需要返回VPC配置。 我们看到Leaf-11和Leaf-12成对工作并由VPC域联合起来。 这给我们带来了以下情况:

Host-2 向 Leaf-21 发送一帧,以便它通过网络将其传输至 Host-1。 然而,Leaf-21 发现 Host-1 的 MAC 地址可以同时通过两个 VTEP 访问。 在这种情况下Leaf-21应该怎么做? 毕竟,这意味着网络中可能会出现环路。

为了解决这种情况,我们需要Leaf-11和Leaf-12在工厂内也充当一台设备。 解决方案非常简单。 在我们构建隧道的环回接口上,添加辅助地址。 两个 VTEP 上的辅助地址必须相同。

interface loopback0
 ip add 10.255.1.10/32 secondary

因此,从其他VTEP的角度来看,我们得到以下拓扑:

VxLAN 工厂。 第1部分

也就是说,现在将在Leaf-21的IP地址和两个Leaf-11和Leaf-12之间的虚拟IP之间建立隧道。 现在,从两台设备学习 MAC 地址将不再有问题,并且流量可以从一个 VTEP 转移到另一台。 使用 Spine 上的路由表决定两个 VTEP 中的哪一个将处理流量:

Spine1# sh ip route
<.....>
10.255.1.10/32, ubest/mbest: 2/0
    *via 10.255.1.11, Eth1/1, [110/41], 1d01h, ospf-UNDERLAY, intra
    *via 10.255.1.12, Eth1/2, [110/41], 1d01h, ospf-UNDERLAY, intra
10.255.1.11/32, ubest/mbest: 1/0
    *via 10.255.1.11, Eth1/1, [110/41], 1d22h, ospf-UNDERLAY, intra
10.255.1.12/32, ubest/mbest: 1/0
    *via 10.255.1.12, Eth1/2, [110/41], 1d01h, ospf-UNDERLAY, intra

如上所示,地址 10.255.1.10 可通过两个下一跃立即可用。

在此阶段,我们已经处理了基本的连接问题。 让我们继续设置 NVE 接口:
让我们立即启用 Vlan 10 并将其与主机的每个叶子上的 VNI 10000 关联。 让我们在主机之间设置 L2 隧道

vlan 10                 ! Включаем VLAN на всех VTEP подключенных к необходимым хостам
  vn-segment 10000      ! Ассоциируем VLAN с номер VNI 

interface nve1
  member vni 10000      ! Добавляем VNI 10000 для работы через интерфейс NVE. для инкапсуляции в VxLAN
    ingress-replication protocol bgp    ! указываем, что для распространения информации о хосте используем BGP

现在让我们检查 BGP EVPN 的 nve 对等点和表:

Leaf21# sh nve peers
Interface Peer-IP          State LearnType Uptime   Router-Mac
--------- ---------------  ----- --------- -------- -----------------
nve1      10.255.1.10      Up    CP        00:00:41 n/a                 ! Видим что peer доступен с secondary адреса

Leaf11# sh bgp l2vpn evpn

   Network            Next Hop            Metric     LocPrf     Weight Path
Route Distinguisher: 10.255.1.11:32777    (L2VNI 10000)        ! От кого именно пришел этот l2VNI
*>l[3]:[0]:[32]:[10.255.1.10]/88                                   ! EVPN route-type 3 - показывает нашего соседа, который так же знает об l2VNI10000
                      10.255.1.10                       100      32768 i
*>i[3]:[0]:[32]:[10.255.1.20]/88
                      10.255.1.20                       100          0 i
* i                   10.255.1.20                       100          0 i

Route Distinguisher: 10.255.1.21:32777
* i[3]:[0]:[32]:[10.255.1.20]/88
                      10.255.1.20                       100          0 i
*>i                   10.255.1.20                       100          0 i

上面我们只看到了EVPN路由类型3的路由,这种类型的路由讲的是peer(Leaf),但是我们的主机在哪里呢?
问题是有关 MAC 主机的信息是通过 EVPN 路由类型 2 传输的

为了查看我们的主机,您需要配置 EVPN 路由类型 2:

evpn
  vni 10000 l2
    route-target import auto   ! в рамках данной статьи используем автоматический номер для route-target
    route-target export auto

让我们从 Host-2 ping 到 Host-1:

Firewall2# ping 192.168.10.1
PING 192.168.10.1 (192.168.10.1): 56 data bytes
36 bytes from 192.168.10.2: Destination Host Unreachable
Request 0 timed out
64 bytes from 192.168.10.1: icmp_seq=1 ttl=254 time=215.555 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=254 time=38.756 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=254 time=42.484 ms
64 bytes from 192.168.10.1: icmp_seq=4 ttl=254 time=40.983 ms

下面我们可以看到 BGP 表中出现了带有主机 MAC 地址的路由类型 2 - 5001.0007.0007 和 5001.0008.0007

Leaf11# 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                      !  evpn route-type 2 и mac адрес хоста 1
                      10.255.1.10                       100      32768 i
*>i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]/216                      ! evpn route-type 2 и mac адрес хоста 2
* i                   10.255.1.20                       100          0 i
*>l[3]:[0]:[32]:[10.255.1.10]/88
                      10.255.1.10                       100      32768 i
Route Distinguisher: 10.255.1.21:32777
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]/216
                      10.255.1.20                       100          0 i
*>i                   10.255.1.20                       100          0 i

接下来,您可以看到更新的详细信息,其中您收到了有关 MAC 主机的信息。 以下不是所有命令输出。

Leaf21# sh bgp l2vpn evpn 5001.0007.0007

BGP routing table information for VRF default, address family L2VPN EVPN
Route Distinguisher: 10.255.1.11:32777        !  отправил Update с MAC Host. Не виртуальный адрес VPC, а адрес Leaf
BGP routing table entry for [2]:[0]:[0]:[48]:[5001.0007.0007]:[0]:[0.0.0.0]/216,
 version 1507
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 labe
led nexthop
  AS-Path: NONE, path sourced internal to AS
    10.255.1.10 (metric 81) from 10.255.1.102 (10.255.1.102)    ! с кем именно строим VxLAN тоннель
      Origin IGP, MED not set, localpref 100, weight 0
      Received label 10000         ! Номер VNI, который ассоциирован с VLAN, в котором находится Host
      Extcommunity: RT:65001:10000 SOO:10.255.1.10:0 ENCAP:8        ! Тут видно, что RT сформировался автоматически на основе номеров AS и VNI
      Originator: 10.255.1.11 Cluster list: 10.255.1.102
<........>

让我们看看帧通过工厂时是什么样子的:

VxLAN 工厂。 第1部分

抑制ARP

太棒了,我们现在在主机之间有了 L2 通信,我们可以在那里完成。 然而,事情并非如此简单。 只要我们的主机很少,就不会有问题。 但让我们想象一下这样一种情况:我们有成百上千的主机。 我们可能面临什么问题?

这个问题就是BUM(广播、未知单播、组播)流量。 在本文中,我们将考虑处理广播流量的选项。
以太网中的主要广播生成器是通过 ARP 协议的主机本身。

Nexus 实现了以下机制来对抗 ARP 请求 - 抑制 arp。
该功能的工作原理如下:

  1. Host-1 向其网络的广播地址发送 APR 请求。
  2. 请求到达 Leaf 交换机,Leaf 不会将此请求进一步传递到 Host-2 的结构,而是自行响应并指示所需的 IP 和 MAC。

因此,广播请求没有发送到工厂。 但如果 Leaf 只知道 MAC 地址,这怎么行呢?

一切都很简单,EVPN 路由类型 2,除了 MAC 地址之外,还可以传输 MAC/IP 组合。 为此,您需要在 Leaf 上的 VLAN 中配置 IP 地址。 那么问题来了,我应该设置什么IP呢? 在 Nexus 上,可以在所有交换机上创建分布式(相同)地址:

feature interface-vlan

fabric forwarding anycast-gateway-mac 0001.0001.0001    ! задаем virtual mac для создания распределенного шлюза между всеми коммутаторами

interface Vlan10
  no shutdown
  ip address 192.168.10.254/24          ! на всех Leaf задаем одинаковый IP
  fabric forwarding mode anycast-gateway    ! говорим использовать Virtual mac

因此,从主机的角度来看,网络将如下所示:

VxLAN 工厂。 第1部分

让我们检查一下 BGP l2route evpn

Leaf11# 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.21                       100      32768 i
*>i[2]:[0]:[0]:[48]:[5001.0008.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.0008.0007]:[32]:[192.168.10.20]/248
                      10.255.1.10                       100          0 i
*>i                   10.255.1.10                       100          0 i

<......>

Route Distinguisher: 10.255.1.21:32777
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[0]:[0.0.0.0]/216
                      10.255.1.20                       100          0 i
*>i                   10.255.1.20                       100          0 i
* i[2]:[0]:[0]:[48]:[5001.0008.0007]:[32]:[192.168.10.20]/248
*>i                   10.255.1.20                       100          0 i

<......>

从命令输出中可以看到,在EVPN路由类型2中,除了MAC之外,我们现在还可以看到主机IP地址。

让我们回到设置suppress-arp。 单独为每个 VNI 启用此设置:

interface nve1
  member vni 10000   
    suppress-arp

然后就出现了一些复杂性:

  • 要使此功能发挥作用,需要 TCAM 内存空间。 以下是抑制 arp 的设置示例:

hardware access-list tcam region arp-ether 256

此设置需要双宽。 也就是说,如果您设置了 256,那么您需要在 TCAM 中释放 512。设置 TCAM 超出了本文的范围,因为设置 TCAM 仅取决于分配给您的任务,并且可能因网络而异。

  • 必须在所有叶子交换机上实施抑制-arp。 但是,在 VPC 域中的叶对上进行配置时,可能会变得复杂。 如果 TCAM 发生更改,对之间的一致性将被破坏,并且一个节点可能会停止运行。 此外,可能需要重新启动设备才能应用 TCAM 更改设置。

因此,您需要仔细考虑,在您的情况下,是否值得在正在运行的工厂中实施此设置。

本系列的第一部分到此结束。 在下一部分中,我们将研究通过 VxLAN 结构进行路由,并将网络分离到不同的 VRF。

现在我邀请大家 免费网络研讨会,其中我会详细介绍一下课程。 报名参加本次网络研讨会的前 20 名参与者将在直播后 1-2 天内通过电子邮件收到折扣证书。

来源: habr.com

添加评论