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部分

來源: www.habr.com

添加評論