你好,哈布爾。我目前是 OTUS 網路工程師課程的負責人。
期待新課程開始招生 ,我準備了一系列關於VxLAN EVPN技術的文章。
關於 VxLAN EVPN 操作的資料非常多,因此我想收集解決現代資料中心問題的各種任務和實踐。

在 VxLAN EVPN 技術系列的第一部分中,我想考慮一種透過網路結構組織主機之間的 L2 連接的方法。
所有範例都將在採用 Spine-Leaf 拓樸組裝的 Cisco Nexus 9000v 上執行。在本文中,我們不會詳細討論如何設定 Underlay 網路。
- 底層網路
- 位址族 l2vpn evpn 的 BGP 對等連接
- 設定 NVE
- 抑制 ARP
底層網路
所採用的拓樸結構如下:

讓我們在所有裝置上設定尋址:
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 1BGP 對等體
最後,您可以繼續設定覆蓋網路。
在本文的框架內,需要在主機之間組織一個網絡,如下圖所示:

要設定 Overlay 網絡,您需要在 Spine 和 Leaf 交換器上啟用支援 l2vpn evpn 系列的 BGP:
feature bgp
nv overlay evpn接下來,您需要設定 Leaf 和 Spine 之間的 BGP 對等連線。為了簡化設定並優化路由資訊分發,我們將 Spine 配置為路由反射器伺服器。我們將透過模板在配置中註冊所有 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 LEAFLeaf 交換器上的設定看起來類似:
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僅作為網路的核心,只處理流量傳輸。所有封裝和路徑確定的工作僅發生在 Leaf 交換器上。
設定 NVE
NVE-- 網路虛擬介面
在開始設定之前,讓我們先介紹一些術語:
VTEP — 虛擬隧道端點,VxLAN 隧道開始或結束的裝置。 VTEP 不一定是任何網路設備。支援VxLAN技術的伺服器也可以起到這樣的作用。在我們的拓樸中,所有 Leaf 交換器都是 VTEP。
VNI-虛擬網路索引-VxLAN 內的網路識別碼。可以與 VLAN 進行類比。然而,也存在一些差異。當使用結構時,VLAN 僅在單一 Leaf 交換器內變得唯一,並且不會在整個網路中傳播。但每個 VLAN 都可以與一個 VNI 編號相關聯,然後透過網路傳輸。以下將討論它是什麼樣子以及如何使用它。
讓我們啟用 VxLAN 技術的功能以及將 VLAN 號與 VNI 號關聯的功能:
feature nv overlay
feature vn-segment-vlan-based讓我們來設定負責 VxLAN 操作的 NVE 介面。此介面負責將訊框封裝在 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 發送一個幀,然後 Leaf-1 透過網路將其傳輸到 Host-21。然而,Leaf-1 發現 Host-21 的 MAC 位址可以同時透過兩個 VTEP 存取。在這種情況下,Leaf-XNUMX 該怎麼做?畢竟,這意味著網路中可能會出現循環。
為了解決這種情況,我們需要 Leaf-11 和 Leaf-12 在工廠內充當一台設備。這個問題可以很簡單地解決。在我們建置隧道的環回介面上,我們新增了一個輔助位址。兩個 VTEP 上的輔助位址必須相同。
interface loopback0
ip add 10.255.1.10/32 secondary因此,從其他VTEP的角度來看,我們得到以下拓撲:

也就是說現在Leaf-21的IP位址和Leaf-11、Leaf-12兩台之間的虛擬IP之間會建立隧道。現在從兩個裝置學習 MAC 位址不會有問題,而且流量可以從一個 VTEP 移動到另一個 VTEP。兩個 VTEP 中的哪一個將處理流量取決於 Spine 上的路由表:
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 並將其與每個 Leaf 上主機的 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現在讓我們檢查 nve 對等和 BGP EVPN 表:
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。這種類型的路由說明了對等體(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
<........>讓我們看看這些框架在經過工廠時是什麼樣子的:

抑制 ARP
太好了,我們現在在主機之間建立了 L2 通信,我們可以在這裡完成。然而,一切並非如此簡單。只要我們的主機數量少,就不會有問題。但讓我們想像一下我們有成百上千台主機的情況。我們可能會遇到什麼問題?
這個問題是BUM(廣播、未知單播、多播)流量。在本文中,我們將考慮一種對抗廣播流量的方法。
乙太網路中廣播的主要產生器是透過 ARP 協定的主機本身。
nexus 具有以下對抗 ARP 請求的機制:suppress-arp。
此功能的工作原理如下:
- 主機 1 向其網路的廣播位址發送 APR 請求。
- 請求到達 Leaf 交換機,Leaf 不會將此請求進一步傳遞到工廠中的 Host-2,而是自行回應並指定所需的 IP 和 MAC。
因此,廣播請求沒有到達工廠。但是如果 Leaf 只知道 MAC 位址,這該如何實現呢?
很簡單,EVPN route-type 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因此從主機的角度來看,網路將是這樣的:

讓我們檢查一下 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 記憶體中的空間。以下是 suppress-arp 設定的範例:
hardware access-list tcam region arp-ether 256此設定需要雙倍寬度。也就是說,如果你設定了256,那麼你就需要在TCAM中釋放512。設定 TCAM 超出了本文的討論範圍,因為設定 TCAM 僅取決於您面前設定的任務,並且可能因網路而異。
- 必須在所有 Leaf 交換器上實作 Suppress-arp。然而,在 VPC 域中的 Leaf 對上進行配置時可能會變得複雜。當 TCAM 發生變化時,對之間的一致性將被破壞,並且一個節點可能會停止服務。此外,可能需要重新啟動裝置才能套用 TCAM 變更設定。
因此,您應該仔細考慮在您的情況下是否值得在正在運行的工廠中實現此設定。
至此,循環的第一部分結束。在下一節中,我們將考慮透過 VxLAN 結構進行路由,將網路分成不同的 VRF。
現在我邀請大家 ,我將在其中向您詳細介紹該課程。報名參加本次網路研討會的前 20 名參與者將在直播後 1-2 天內透過電子郵件收到折扣證書。
來源: www.habr.com
