VxLAN 工厂。 第3部分

你好,哈布尔。 我正在完成一系列文章, 致力于课程的推出 “网络工程师” 通过 OTUS,使用VxLAN EVPN技术在Fabric内部进行路由,并使用防火墙来限制内部服务之间的访问

VxLAN 工厂。 第3部分

该系列的前几部分可以​​在以下链接中找到:

今天我们继续研究VxLAN Fabric内部的路由逻辑。 在上一部分中,我们研究了单个 VRF 内的结构内路由。 然而,网络中可能存在大量的客户端服务,必须将它们全部分布到不同的VRF中以区分它们之间的访问。 除了网络隔离之外,企业可能还需要连接防火墙来限制这些服务之间的访问。 是的,这不能称为最佳解决方案,但现代现实需要“现代解决方案”。

让我们考虑 VRF 之间路由的两种选项:

  1. 无需离开VxLAN Fabric的路由;
  2. 外部设备上的路由。

让我们从 VRF 之间的路由逻辑开始。 VRF 的数量是一定的。 要在 VRF 之间进行路由,您需要在网络中选择一个能够了解所有 VRF(或需要路由的部分)的设备。例如,这样的设备可以是其中一台 Leaf 交换机(或一次全部) 。 该拓扑将如下所示:

VxLAN 工厂。 第3部分

这种拓扑有什么缺点?

没错,每个 Leaf 都需要了解网络上的所有 VRF(以及其中的所有信息),这会导致内存丢失和网络负载增加。 毕竟,每个叶子交换机通常不需要了解网络上的所有信息。

但是,让我们更详细地考虑此方法,因为对于小型网络,此选项非常合适(如果没有特定的业务需求)

此时,你可能会有一个疑问,如何将信息从VRF传输到VRF,因为这项技术的要点恰恰在于信息的传播应该受到限制。

答案就在于路由信息的导出和导入等功能(在 第二 循环的一部分)。 让我简单重复一遍:

在 AF 中设置 VRF 时,必须指定 route-target 用于导入和导出路由信息。 您可以自动指定它。 然后该值将包括与 VRF 关联的 ASN BGP 和 L3 VNI。 当您的工厂只有一个 ASN 时,这会很方便:

vrf context PROD20
  address-family ipv4 unicast
    route-target export auto      ! В автоматическом режиме экспортируется RT-65001:99000
    route-target import auto

但是,如果您有多个 ASN 并且需要在它们之间传输路由,那么手动配置将是一种更方便且可扩展的选项 route-target。 手动设置的建议是第一个数字,使用您方便的数字,例如, 9999.
第二个值应设置为等于该 VRF 的 VNI。

我们将其配置如下:

vrf context PROD10
  address-family ipv4 unicast
    route-target export 9999:99000          
    route-target import 9999:99000
    route-target import 9999:77000         ! Пример 1 import из другого VRF
    route-target import 9999:88000         ! Пример 2 import из другого VRF

路由表中的内容如下:

Leaf11# sh ip route vrf prod
<.....>
192.168.20.0/24, ubest/mbest: 1/0
    *via 10.255.1.20%default, [200/0], 00:24:45, bgp-65001, internal, tag 65001
(evpn) segid: 99000 tunnelid: 0xaff0114 encap: VXLAN          ! префикс доступен через L3VNI 99000

让我们考虑 VRF 之间路由的第二种选择 - 通过外部设备,例如防火墙。

通过外部设备进行工作有多种选项:

  1. 设备知道什么是VxLAN,我们可以将其添加到结构的一部分;
  2. 该设备对 VxLAN 一无所知。

我们不会详细讨论第一个选项,因为逻辑几乎与上面所示相同 - 我们将所有 VRF 引入防火墙并在其上配置 VRF 之间的路由。

让我们考虑第二种选择,当我们的防火墙对VxLAN一无所知时(当然,现在支持VxLAN的设备正在出现。例如Checkpoint在R81版本中宣布支持。您可以阅读一下 这里不过这都处于测试阶段,对运行稳定性没有信心)。

连接外部设备时,我们得到下图:

VxLAN 工厂。 第3部分

从图中可以看出,瓶颈出现在与防火墙的接口处。 未来在规划网络和优化网络流量时必须考虑到这一点。

然而,让我们回到最初的 VRF 之间的路由问题。 添加防火墙后,我们得出的结论是防火墙必须了解所有 VRF。 为此,还必须在边界叶子上配置所有 VRF,并且防火墙必须通过单独的链路连接到每个 VRF。

因此,带有防火墙的方案:

VxLAN 工厂。 第3部分

也就是说,在防火墙上,您需要为网络上的每个 VRF 配置一个接口。 总的来说,逻辑看起来并不复杂,我唯一不喜欢的是防火墙上的大量接口,但现在是时候考虑自动化了。

美好的。 我们连接了防火墙并将其添加到所有 VRF。 但是我们现在如何强制来自每个叶子的流量通过此防火墙呢?

在连接到防火墙的 Leaf 上,不会出现任何问题,因为所有路由都是本地的:

0.0.0.0/0, ubest/mbest: 1/0
    *via 10.254.13.55, [1/0], 6w5d, static       ! маршрут по-умолчанию через Firewall

但是,远程 Leaf 又如何呢? 如何向他们传递默认外部路由?

没错,通过 EVPN 路由类型 5,就像 VxLAN 结构上的任何其他前缀一样。 然而,这并不是那么简单(如果我们谈论的是思科,因为我没有与其他供应商核实过)

默认路由必须从防火墙所连接的叶子发布。 然而,为了传输路由,Leaf 本身必须知道它。 这里出现了一个问题(也许仅对我而言),该路由必须静态注册在要通告此类路由的 VRF 中:

vrf context PROD10
    ip route 0.0.0.0/0 10.254.13.55

接下来,在 BGP 配置中,在 AF IPv4 中设置此路由:

router bgp 65001
    vrf prod
        address-family ipv4 unicast
            network 0.0.0.0/0

然而,这还不是全部。 这样默认路由就不会被包含在家族中 l2vpn evpn。 除此之外,您还需要配置重新分配:

router bgp 65001
    vrf prod
        address-family ipv4 unicast
            network 0.0.0.0/0
            redistribute static route-map COMMON_OUT

我们指示哪些前缀将通过重新分配进入 BGP

route-map COMMON_OUT permit 10
  match ip address prefix-list COMMON_OUT

ip prefix-list COMMON_OUT seq 10 permit 0.0.0.0/0

现在的前缀 0.0.0.0/0 属于 EVPN 路由类型 5,并传输到 Leaf 的其余部分:

0.0.0.0/0, ubest/mbest: 1/0
    *via 10.255.1.5%default, [200/0], 5w6d, bgp-65001, internal, tag 65001, segid: 99000 tunnelid: 0xaff0105 encap: VXLAN
    ! 10.255.1.5 - Виртуальный адрес Leaf(так как Leaf выступают в качестве VPС пары), к которому подключен Firewall

在 BGP 表中,我们还可以观察到生成的路由类型 5,默认路由为 10.255.1.5:

* i[5]:[0]:[0]:[0]:[0.0.0.0]/224
                      10.255.1.5                        100          0 i
*>i                   10.255.1.5                        100          0 i

有关 EVPN 的系列文章到此结束。 将来,我会尝试考虑将 VxLAN 与 Multicast 结合使用,因为这种方法被认为更具可扩展性(目前是一个有争议的说法)

如果您对此主题仍有疑问/建议,请考虑 EVPN 的任何功能 - 写下来,我们将进一步考虑。

VxLAN 工厂。 第3部分

来源: habr.com

添加评论