02-EVPN VXLAN配置
本章節下載: 02-EVPN VXLAN配置 (1.44 MB)
目 錄
2.5.4 配置BGP EVPN路由進行下一跳路由迭代時不能迭代到缺省路由
2.8.11 開啟通過MAC/IP發布路由通告分布式網關ARP信息的功能
2.9.1 關閉遠端MAC地址和遠端ARP/ND自動學習功能
2.9.4 配置禁止EVPN從ARP/ND信息中學習MAC地址表項
2.9.7 配置禁止集中式EVPN網關跨網段學習ARP/ND信息
2.10.5 開啟報文轉發時下發主機路由IPv6 FIB表項功能
2.11.1 配置將包含ARP/ND信息的MAC/IP發布路由引入BGP單播路由表
2.11.2 配置BGP EVPN路由添加到VPN實例路由表時的Metric值
2.15.3 配置Tracert方式檢測VXLAN隧道的連通性
2.19.2 對稱IRB方式分布式EVPN網關配置舉例(IPv4網絡)
2.19.3 對稱IRB方式分布式EVPN網關配置舉例(IPv6網絡)
2.19.4 非對稱IRB方式分布式IPv4 EVPN網關配置舉例
2.19.6 IPv4 EVPN支持M-LAG配置舉例(直連模式peer-link鏈路)
2.19.7 IPv4 EVPN支持M-LAG配置舉例(隧道模式peer-link鏈路)
EVPN路由可以用來在VXLAN網絡中搭建VXLAN隧道、同步MAC地址信息等,以實現VXLAN組網,該網絡稱為EVPN VXLAN。與傳統VXLAN網絡相比,EVPN VXLAN網絡可以實現隧道的自動建立與關聯,簡化配置。
圖1-1 EVPN網絡模型示意圖
在EVPN組網中,站點網絡和IP核心網絡既可以是IPv4網絡也可以是IPv6網絡。如圖1-1所示,EVPN的典型網絡模型中包括如下幾部分:
· 用戶終端(Terminal):可以是PC機、無線終端設備、服務器上創建的VM(Virtual Machine,虛擬機)等。不同的用戶終端可以屬於不同的VXLAN。屬於相同VXLAN的用戶終端處於同一個邏輯二層網絡,彼此之間二層互通;屬於不同VXLAN的用戶終端之間二層隔離。
本文檔中如無特殊說明,均以VM為例介紹EVPN工作機製。采用其他類型用戶終端時,EVPN工作機製與VM相同,不再贅述。
· VTEP(VXLAN Tunnel End Point,VXLAN隧道端點):EVPN的邊緣設備。EVPN的相關處理都在VTEP上進行。
· VXLAN隧道:兩個VTEP之間的點到點邏輯隧道。VTEP為數據幀封裝VXLAN頭、UDP頭和IP頭後,通過VXLAN隧道將封裝後的報文轉發給遠端VTEP,遠端VTEP對其進行解封裝。
· 核心設備:IP核心網絡中的設備(如圖1-1中的P設備)。核心設備不參與EVPN處理,僅需要根據封裝後報文的外層目的IP地址對報文進行三層轉發。
· VXLAN網絡/EVPN實例:用戶網絡可能包括分布在不同地理位置的多個站點內的用戶終端。在骨幹網上可以利用VXLAN隧道將這些站點連接起來,為用戶提供一個邏輯的二層VPN。這個二層VPN稱為一個VXLAN網絡,也稱為EVPN實例。VXLAN網絡通過VXLAN ID來標識,VXLAN ID又稱VNI(VXLAN Network Identifier,VXLAN網絡標識符),其長度為24比特。不同VXLAN網絡中的用戶終端不能二層互通。
· VSI(Virtual Switch Instance,虛擬交換實例):VTEP上為一個VXLAN提供二層交換服務的虛擬交換實例。VSI可以看作是VTEP上的一台基於VXLAN進行二層轉發的虛擬交換機。VSI與VXLAN一一對應。
· ES(Ethernet Segment,以太網段):用戶站點連接到VTEP的鏈路,通過ESI(Ethernet Segment Identifier,以太網段標識符)唯一標識。目前,一個用戶站點隻能通過一條鏈路連接一台VTEP,該ES的ESI為0。
在EVPN的二層轉發組網中,VTEP可以通過以下方式自動發現鄰居、建立隧道並關聯隧道:
· IMET路由方式:VTEP通過IMET路由通告自己的VXLAN信息。這樣,每個VTEP設備都能獲取到網絡中所有的VTEP及其所屬VXLAN信息。如果本地VTEP和遠端VTEP屬於同一個VXLAN,則自動在二者之間建立VXLAN隧道,並將該隧道與該VXLAN關聯。
· MAC/IP發布路由方式:VTEP通過MAC/IP發布路由通告本地MAC地址和VXLAN信息。這樣,每個VTEP設備都能通過接收到的MAC/IP發布路由獲取到網絡中的VTEP及其所屬VXLAN信息。如果本地VTEP和遠端VTEP屬於同一個VXLAN,則自動在二者之間建立VXLAN隧道,並將該隧道與該VXLAN關聯。
在EVPN的三層轉發組網中,VTEP可以通過以下方式自動發現鄰居、建立隧道並關聯隧道:
· IMET路由方式:VTEP通過IMET路由通告自己的VXLAN信息。這樣,每個VTEP設備都能獲取到網絡中所有的VTEP及其所屬VXLAN信息。如果本地VTEP和遠端VTEP屬於同一個VXLAN,則自動在二者之間建立VXLAN隧道,並將該隧道與該VXLAN關聯。
· MAC/IP發布路由和IP前綴路由方式:在EVPN的三層轉發組網中,當本地VTEP接收到遠端VTEP通告的MAC/IP發布路由或IP前綴路由,且該路由攜帶的Export target屬性與本地某個VPN實例的Import target屬性匹配時,本地VTEP會與遠端VTEP建立VXLAN隧道,並將該VXLAN隧道與VPN實例對應的L3VNI(Layer 3 VNI,三層VXLAN ID)關聯。L3VNI的詳細介紹,請參見“1.6 分布式EVPN網關”。
EVPN的MAC地址/ARP表項/ND表項學習、流量轉發均基於報文所屬的VXLAN進行,因此,VTEP接收到報文需要識別報文所屬的VXLAN。
VTEP將連接本地站點的以太網服務實例(Service Instance)與VSI關聯。VTEP從以太網服務實例接收到數據幀後,查找與其關聯的VSI,VSI內創建的VXLAN即為該數據幀所屬的VXLAN。
在VXLAN中,與VSI關聯的以太網服務實例稱為AC(Attachment Circuit,接入電路)。以太網服務實例在二層以太網接口上創建,它定義了一係列匹配規則(匹配接口接收到的所有報文、匹配所有攜帶VLAN Tag的報文、匹配所有不攜帶VLAN Tag的報文等),用來靈活地匹配從該二層以太網接口上接收到的數據幀。
如圖1-2所示,VM 1屬於VLAN 2,在VTEP上配置以太網服務實例1匹配VLAN 2的報文,將以太網服務實例1與VSI A綁定,並在VSI A內創建VXLAN 10,則VTEP接收到VM 1發送的數據幀後,可以判定該數據幀屬於VXLAN 10。
對於從VXLAN隧道上接收到的VXLAN報文,VTEP根據報文中攜帶的VXLAN ID判斷該報文所屬的VXLAN。
VTEP根據學習到的MAC地址表項轉發二層單播流量。VTEP上MAC地址學習分為兩部分:
· 本地MAC地址學習:學習本地站點內虛擬機的MAC地址。VTEP接收到本地虛擬機發送的數據幀後,判斷該數據幀所屬的VSI,並將數據幀中的源MAC地址(本地虛擬機的MAC地址)添加到該VSI的MAC地址表中,該MAC地址對應的接口為接收到數據幀的接口。
· 遠端MAC地址學習:學習遠端站點內虛擬機的MAC地址。VTEP通過MP-BGP協議將本地學習的MAC地址及其所屬的VXLAN通告給遠端VTEP。遠端VTEP接收到該信息後,將其添加到所屬VXLAN對應VSI的MAC地址表中,該MAC地址對應的接口為兩個VTEP之間的VXLAN隧道接口(Tunnel接口)。
VTEP接收到二層數據幀後,判斷其所屬的VSI,根據目的MAC地址查找該VSI的MAC地址表,通過表項的出接口轉發該數據幀。如圖1-3所示,如果出接口為本地接口,則VTEP直接通過該接口轉發數據幀;如圖1-4所示,如果出接口為Tunnel接口,則VTEP根據Tunnel接口為數據幀添加VXLAN封裝後,通過VXLAN隧道將其轉發給遠端VTEP。
泛洪流量包括組播、廣播和未知單播流量,該流量通過單播路由方式(頭端複製)轉發。VTEP負責複製報文,采用單播方式將複製後的報文通過本地接口發送給本地站點,並通過VXLAN隧道發送給VXLAN內的所有遠端VTEP。
如圖1-5所示,泛洪流量轉發過程為:
(1) VTEP 1接收到本地虛擬機發送的組播、廣播和未知單播數據幀後,判斷數據幀所屬的VXLAN,通過該VXLAN內除接收接口外的所有本地接口和VXLAN隧道轉發該數據幀。通過VXLAN隧道轉發數據幀時,需要為其封裝VXLAN頭、UDP頭和IP頭,以便將泛洪流量封裝在多個單播報文中,發送到VXLAN內的所有遠端VTEP。
(2) 遠端VTEP(VTEP 2和VTEP 3)接收到VXLAN報文後,解封裝報文,將原始的數據幀在本地站點的指定VXLAN內泛洪。為了避免環路,遠端VTEP從VXLAN隧道上接收到報文後,不會再將其泛洪到其他的VXLAN隧道。
本節僅以IPv4網絡為例說明集中式EVPN網關轉發三層流量的過程,IPv6網絡中的三層流量轉發過程與此類似。
集中式EVPN網關進行二層VXLAN業務終結的同時,還對內層封裝的IP報文進行三層轉發處理。
集中式EVPN網關配置簡單,但不同VXLAN之間的流量以及VXLAN訪問外界網絡的流量全部由集中式EVPN網關處理,網關壓力較大。
圖1-6 集中式EVPN網關的三層通信過程
如圖1-6所示,集中式EVPN網關上需要配置VSI虛接口,該接口的IP地址作為VXLAN內虛擬機的網關IP地址,虛擬機訪問其他子網的過程為:
(1) 虛擬機獲取網關的MAC地址(網關IP對應的MAC地址),並將報文發送給集中式EVPN網關。
(2) VTEP接收到報文後,根據目的MAC地址在VSI的MAC地址表中查找匹配的表項,將報文通過VXLAN隧道發送給集中式EVPN網關。
(3) 網關解除VXLAN封裝後,對內層封裝的IP報文進行三層轉發,將其發送給最終的目的節點。
(4) 目的節點返回的報文到達網關後,網關根據已經學習到的虛擬機ARP表項,將報文轉發給虛擬機。
本節僅以IPv4網絡為例說明分布式EVPN網關轉發三層流量的過程,IPv6網絡中的三層流量轉發過程與此類似。
如圖1-7所示,在分布式EVPN網關組網中,每台VTEP設備都作為EVPN網關,對本地站點的流量進行三層轉發,緩解了網關的壓力。
圖1-7 分布式EVPN網關示意圖
分布式EVPN網關支持非對稱IRB和對稱IRB兩種流量轉發方式:
· 非對稱IRB轉發方式:連接報文源節點的網關(入口網關)上需要進行二層和三層轉發,連接目的節點的網關(出口網關)上僅需要進行二層轉發。
· 對稱IRB轉發方式:入口網關和出口網關上的報文轉發方式相同,都需要同時進行二層和三層轉發。
對稱IRB方式引入了如下概念:
· L3VNI(Layer 3 VNI,三層VXLAN ID):在網關之間通過VXLAN隧道轉發流量時,屬於同一路由域、能夠進行三層互通的流量通過L3VNI來標識。L3VNI唯一關聯一個VPN實例,通過VPN實例確保不同業務之間的隔離。
· 網關的Router MAC地址:每個分布式EVPN網關擁有一個唯一的Router MAC地址,用於在網關之間通過VXLAN隧道轉發流量。報文在網關之間轉發時,報文的內層MAC地址為出口網關的Router MAC地址。
如圖1-8所示,在分布式EVPN網關組網中,所有的分布式EVPN網關(GW)上都存在以下類型的VSI虛接口:
· 作為分布式網關接口的VSI虛接口。該接口需要與VSI、VPN實例關聯。不同GW上相同VSI虛接口的IP地址必須相同,該IP地址作為VXLAN內虛擬機的網關地址。
· 承載L3VNI的VSI虛接口。該接口需要與VPN實例關聯,並需要指定L3VNI。關聯相同VPN實例的VSI虛接口共用該L3VNI。
邊界網關(Border)上也需要存在承載L3VNI的VSI虛接口。
圖1-8 分布式EVPN網關部署示意圖
三層流量通過查找FIB表項進行轉發。FIB表項通過路由信息或ARP信息生成。
在EVPN地址族下引入外部路由後,VTEP通過MP-BGP將該路由及其所屬的L3VNI發布給遠端VTEP,遠端VTEP學習該路由,並將其添加到L3VNI對應VPN實例的FIB表項中,表項的出接口為兩個VTEP之間的VXLAN隧道接口(Tunnel接口)、下一跳為路由的NEXT_HOP屬性攜帶的地址(即對端VTEP的地址)。
VTEP上ARP信息學習分為兩部分:
· 本地學習:學習本地站點內虛擬機的ARP信息。VTEP通過本地虛擬機發送的GARP、RARP和對網關的ARP請求學習本地虛擬機的ARP信息,並添加ARP表項和FIB表項。VTEP判斷GARP、RARP、ARP請求所屬的VSI,查找與該VSI關聯的VSI虛接口。ARP表項和FIB表項的出接口為接收到報文的接口,該表項所屬的VPN實例為VSI虛接口關聯的VPN實例。
· 遠端學習:學習遠端站點內虛擬機的ARP信息。VTEP通過MP-BGP協議將本地的ARP信息及其所屬的L3VNI通告給遠端VTEP。遠端VTEP學習該信息,但不會添加ARP表項,而是由路由管理模塊添加FIB表項。該FIB表項的出接口為與L3VNI關聯的VSI虛接口、下一跳為路由的NEXT_HOP屬性攜帶的地址(即對端VTEP的地址),該表項所屬的VPN實例為L3VNI對應的VPN實例。遠端VTEP查找下一跳對應的ARP信息,並添加對應的ARP表項。
分布式網關對流量的轉發方式分為兩種:
· 區分二三層轉發方式:對於二層流量,查找MAC地址表進行轉發;對於三層流量,查找FIB表進行轉發。在該方式下,建議在分布式網關上開啟ARP泛洪抑製功能,以減少泛洪流量。
· 全三層轉發方式:對於二層和三層流量,均查找FIB表進行轉發。在該方式下,需要在分布式網關上開啟本地代理ARP功能。
查找MAC地址表轉發二層流量的過程,請參見“1.4.2 轉發已知單播流量”;相同站點間三層流量的轉發過程如圖1-9所示;不同站點間三層流量轉發過程如圖1-10所示。
以IPv4網絡為例,查找FIB表轉發流量的過程為:
(1) 虛擬機訪問相同子網、不同子網內的其他虛擬機時,發送ARP請求獲取ARP信息。
(2) GW接收到ARP請求後,判斷ARP請求所屬VSI,采用與該VSI關聯的VSI虛接口MAC地址對其進行應答。
(3) 虛擬機將報文發送給GW。
(4) GW判斷報文所屬VSI,並查找與該VSI關聯的VSI虛接口,在與VSI虛接口關聯的VPN實例內查找FIB表項,並根據匹配的FIB表項轉發報文:
¡ 如果FIB表項的出接口為本地接口,則GW將目的MAC替換為目的虛擬機的MAC地址、源MAC替換為VSI虛接口的MAC,並通過本地接口轉發給目的虛擬機。
¡ 如果FIB表項的出接口為VSI虛接口,則GW將目的MAC替換為目的GW的Router MAC地址、源MAC替換為自己的Router MAC,報文添加VXLAN封裝後將其轉發給目的GW。其中,為報文封裝的VXLAN ID為與VPN實例關聯的L3VNI。
(5) 目的GW接收到報文後,根據L3VNI判斷報文所屬的VPN實例,解除VXLAN封裝後,在該VPN實例內查找ARP表項轉發該報文。
分布式EVPN網關基於VPN實例轉發三層流量,不能轉發公網的三層流量。將傳統網絡升級為EVPN網絡時,用戶可能希望在保持原有公私網部署不變的前提下,實現公私網流量通過分布式EVPN網關轉發,並實現公私網的互通。此時,需要在分布式EVPN網關上配置公網實例。
公網實例可以看作是特殊的VPN實例,分布式EVPN網關對公網實例的處理與VPN實例完全相同:
· 公網實例也包括RD、Route Target屬性和L3VNI。
· 如果VSI虛接口沒有綁定任何VPN實例,則該VSI虛接口屬於公網實例。
合理地規劃公網實例、VPN實例的VPN target屬性,可以實現公私網的互通。
非對稱IRB與對稱IRB方式中,分布式EVPN網關的部署方式基本相同。
如圖1-8所示,所有的分布式EVPN網關(GW)上都存在以下類型的VSI虛接口:
· 作為分布式網關接口的VSI虛接口。該接口需要與VSI、VPN實例關聯。不同GW上相同VSI虛接口的IP地址不能相同。
· 承載L3VNI的VSI虛接口。在非對稱IRB轉發方式中,L3VNI用來實現VXLAN網絡與外界網絡的互通。當VXLAN內的虛擬機需要通過邊界網關(Border)與外界通信時,GW上必須部署該類VSI虛接口。該接口需要與VPN實例關聯,並需要指定L3VNI。關聯相同VPN實例的VSI虛接口共用該L3VNI。
邊界網關上也需要存在承載L3VNI的VSI虛接口。
目前,非對稱IRB轉發方式僅支持通過分布式EVPN網關轉發相同VXLAN的三層流量。
在非對稱IRB轉發方式中,GW學習到本地虛擬機的ARP信息後,通過MAC/IP發布路由將其通告給其他GW。其他GW學習ARP信息,並生成對應的FIB表項。
如圖1-11所示,VM 1和VM 2屬於VXLAN 10,通過分布式EVPN網關實現三層互通。分布式EVPN網關采用非對稱IRB方式轉發三層流量的過程為:
(1) GW 1接收到VM 1發送的報文後,由於目的MAC地址為自己,GW 1剝離二層幀頭,根據目的IP地址查找FIB表。
(2) GW 1在FIB表中匹配到VM 2的ARP信息生成的FIB表項。
(3) GW 1為報文封裝源和目的MAC地址(分別為網關MAC地址和VM 2的MAC地址)、VXLAN頭後,通過VXLAN隧道將其轉發到GW 2。
(4) GW 2接收到報文後,解除VXLAN封裝,並在VXLAN 10內進行二層轉發,即根據目的MAC地址查找MAC地址表。
(5) GW 2根據MAC地址表查找結果,將報文轉發給VM 2。
圖1-11 非對稱IRB三層流量轉發過程
為了避免廣播發送的ARP/ND請求報文占用核心網絡帶寬,VTEP會根據接收到的ARP/ND請求和ARP/ND應答報文、BGP EVPN路由在本地建立ARP/ND泛洪抑製表項。後續當VTEP收到本站點內虛擬機請求其它虛擬機MAC地址的ARP/ND請求時,優先根據ARP/ND泛洪抑製表項進行代答。如果沒有對應的表項,則通過VXLAN隧道將ARP/ND請求泛洪到其他站點。ARP/ND泛洪抑製功能可以大大減少ARP/ND泛洪的次數。
圖1-12 ARP/ND泛洪抑製示意圖
如圖1-12所示,以ARP為例,泛洪抑製的處理過程如下:
(1) 虛擬機VM 1發送ARP請求,獲取VM 7的MAC地址。
(2) VTEP 1根據接收到的ARP請求,建立VM 1的ARP泛洪抑製表項,在VXLAN內泛洪該ARP請求(圖1-12以單播路由泛洪方式為例)。VTEP 1還會通過BGP EVPN將該表項同步給VTEP 2和VTEP 3。
(3) 遠端VTEP(VTEP 2和VTEP 3)解封裝VXLAN報文,獲取原始的ARP請求報文後,在本地站點的指定VXLAN內泛洪該ARP請求。
(4) VM 7接收到ARP請求後,回複ARP應答報文。
(5) VTEP 2接收到ARP應答後,建立VM 7的ARP泛洪抑製表項,通過VXLAN隧道將ARP應答發送給VTEP 1。VTEP 2通過BGP EVPN將該表項同步給VTEP 1和VTEP 3。
(6) VTEP 1解封裝VXLAN報文,獲取原始的ARP應答,將ARP應答報文發送給VM 1。
(7) 在VTEP 1上建立ARP泛洪抑製表項後,虛擬機VM 4發送ARP請求,獲取VM 1的MAC地址。
(8) VTEP 1接收到ARP請求後,建立VM 4的ARP泛洪抑製表項,並查找本地ARP泛洪抑製表項,根據已有的表項回複ARP應答報文,不會對ARP請求進行泛洪。
(9) 虛擬機VM 10發送ARP請求,獲取VM 1的MAC地址。
(10) VTEP 3接收到ARP請求後,建立VM 10的ARP泛洪抑製表項,並查找ARP泛洪抑製表項,根據已有的表項(VTEP 1通過BGP EVPN同步)回複ARP應答報文,不會對ARP請求進行泛洪。
MAC地址遷移是指虛擬機或主機從一個ES遷移到另一個ES。原ES連接的VTEP無法感知MAC地址已經遷移到其他ES段。新遷移到的ES所在VTEP需要重新通告該MAC/IP路由。原VTEP在收到此路由後,撤銷之前通告的路由。MAC地址每次遷移,遷移序列號依次遞增,以便在MAC地址多次遷移時,通過序列號來標識最近一次遷移。
目前,本功能僅支持站點網絡和Underlay網絡同為IPv4網絡,或站點網絡和Underlay網絡同為IPv6網絡。
EVPN利用M-LAG功能(Multichassis link aggregation,跨設備鏈路聚合)將兩台物理設備連接起來虛擬成一台設備,使用該虛擬設備作為VTEP(既可以是僅用於二層轉發的VTEP,也可以是EVPN網關),可以避免VTEP單點故障對網絡造成影響,從而提高EVPN網絡的可靠性。M-LAG的詳細介紹,請參見“二層技術-以太網交換配置指導”中的“M-LAG”。
圖1-13 EVPN支持M-LAG組網圖
作為M-LAG設備的兩台VTEP通過peer-link鏈路連接,在peer-link鏈路上同步MAC地址、ARP和ND信息,以確保兩台VTEP上的MAC地址、ARP和ND信息保持一致。peer-link鏈路既可以是以太網聚合鏈路,也可以是VXLAN隧道。作為peer-link鏈路的以太網聚合鏈路稱為直連模式peer-link鏈路,作為peer-link鏈路的VXLAN隧道稱為隧道模式peer-link鏈路。作為peer-link鏈路的以太網聚合鏈路稱為直連模式peer-link鏈路,作為peer-link鏈路的VXLAN隧道稱為隧道模式peer-link鏈路。
作為peer-link鏈路的VXLAN隧道自動與設備上的所有VXLAN關聯。
作為M-LAG設備的兩台VTEP具有相同的虛擬VTEP地址,對外表現為一台虛擬VTEP設備。其他VTEP使用該地址與這台虛擬設備自動建立VXLAN隧道。
兩台VTEP使用不同的地址作為BGP對等體地址,分別與其他VTEP建立BGP EVPN鄰居。
利用Underlay網絡的等價路由機製,其他VTEP可以將發往虛擬VTEP地址的流量同時發送到兩台VTEP,從而實現負載分擔和冗餘備份。
在用戶側,兩台VTEP均通過以太網鏈路接入同一台虛擬機,跨設備在兩條鏈路間建立二層聚合接口,將該聚合接口配置為AC(在聚合接口上創建以太網服務實例、配置報文匹配規則並關聯以太網服務實例與VSI),從而避免單條以太網鏈路故障導致虛擬機無法訪問網絡。
采用直連模式peer-link鏈路時,VTEP通過自動創建VXLAN隧道或在peer-link鏈路上自動創建AC來實現用戶側鏈路備份。
· 自動創建VXLAN隧道
作為M-LAG設備的兩台VTEP之間自動建立VXLAN隧道,並將該VXLAN隧道自動與所有VXLAN關聯。
通過自動創建的VXLAN隧道實現用戶側鏈路備份的過程為:如果一台VTEP上的AC故障,則該VTEP從VXLAN隧道上接收到遠端VTEP(非M-LAG成員設備)發送給故障AC的報文後,為報文添加VXLAN封裝,封裝的VXLAN ID為故障AC所屬VSI對應的VXLAN ID,並通過自動創建的VXLAN隧道將其轉發到另一台VTEP(M-LAG成員設備)。該VTEP根據VXLAN ID判斷報文所屬的VSI,並轉發該報文。
· 在peer-link鏈路上自動創建AC
作為M-LAG設備的VTEP可以通過如下方式在peer-link鏈路上自動創建AC:
¡ 根據用戶側AC自動創建:用戶側接口上創建以太網服務實例、配置報文匹配規則並關聯VSI後,VTEP會在peer-link鏈路上自動創建具有相同報文匹配規則、關聯相同VSI的AC。
¡ 通過VXLAN ID映射方式自動創建:在VTEP上創建VXLAN後,peer-link鏈路上會自動創建以太網服務器實例,根據VXLAN ID生成報文匹配規則,並將以太網服務實例與該VXLAN對應的VSI關聯。
通過自動創建的AC實現用戶側鏈路備份的過程為:當一台VTEP上的AC故障後,從VXLAN隧道上接收到的、發送給該AC的報文將通過peer-link鏈路轉發到另一台VTEP,該VTEP根據peer-link鏈路上配置的AC判斷報文所屬VSI,並轉發該報文,從而保證轉發不中斷。
采用隧道模式peer-link鏈路時,用戶側鏈路備份機製為:如果一台VTEP上的AC故障,則該VTEP從VXLAN隧道上接收到發送給故障AC的報文後,為報文添加VXLAN封裝,封裝的VXLAN ID為故障AC所屬VSI對應的VXLAN ID,並通過作為peer-link鏈路的VXLAN隧道將其轉發到另一台VTEP。該VTEP根據VXLAN ID判斷報文所屬的VSI,並轉發該報文。
EVPN VXLAN配置任務如下:
(1) 配置VSI和VXLAN
a. 創建VSI和VXLAN
b. (可選)配置VSI參數
(2) 配置EVPN實例
(3) 配置BGP發布EVPN路由
b. (可選)配置BGP EVPN路由
c. (可選)配置BGP EVPN路由進行下一跳路由迭代時不能迭代到缺省路由
d. (可選)維護BGP會話
(4) 配置AC與VSI關聯
(5) 配置EVPN網關
轉發三層流量時,請選擇以下一項任務進行配置:
¡
(6) (可選)管理遠端MAC地址和遠端ARP/ND信息學習
(7) (可選)配置按需下發轉發表項
執行本配置後,隻有存在報文轉發需求時,設備上才會將遠端MAC地址表項、主機路由FIB表項下發到硬件,以節省設備的硬件資源。
(8) (可選)配置BGP EVPN路由的引入和發布
¡ 配置將包含ARP/ND信息的MAC/IP發布路由引入BGP單播路由表
¡ 配置BGP EVPN路由添加到VPN實例路由表時的Metric值
(9) (可選)維護和優化EVPN網絡
(10) (可選)開啟EVPN支持M-LAG功能
本功能將兩台VTEP虛擬成一台VTEP設備,從而避免VTEP單點故障對網絡造成影響,提高EVPN網絡的可靠性。
EVPN VXLAN功能受設備的工作模式限製,如需正常使用EVPN VXLAN功能,請切換設備的工作模式為專家模式。有關設備工作模式的詳細介紹,請參見“基礎配置指導”中的“設備管理”。
VXLAN隧道既可以通過EVPN自動創建,也可以手工創建。隧道目的地址相同的EVPN自動創建隧道和手工創建隧道不能關聯同一個VXLAN。手工創建VXLAN隧道的詳細介紹,請參見“VXLAN配置指導”中的“配置VXLAN”。
在EVPN組網中使用多端口組播MAC地址表項功能時,為了保證本端VTEP與遠端VTEP之間可以同步並生成多端口組播MAC地址表項,需要本端和遠端VTEP設備都支持多端口組播MAC地址表項功能。
建議在同一個EVPN網關上為所有的VSI虛接口配置相同的MAC地址,以免流量轉發不通。
在配置了微分段功能的EVPN VXLAN網絡中,需要在分布式網關設備上配置業務環回組,設備從VXLAN隧道接收到報文後,才能夠根據報文的源IP地址查找到該地址所屬的微分段,否則分布式網關設備無法查找到源IP地址所屬的微分段。配置業務環回組的操作為:在係統視圖下執行service-loopback group type vsi-gateway命令創建VSI網關類型的業務環回組。
有關業務環回組的詳細介紹,請參見“二層技術-以太網交換配置指導”中的“業務環回組”。
同一端口不能同時支持作為VXLAN隧道的源接口以及創建以太網服務實例,如果同時配置了這兩者,則隻有作為VXLAN隧道的源接口生效。
本配置中各命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
(1) 進入係統視圖。
system-view
(2) 開啟L2VPN功能。
l2vpn enable
缺省情況下,L2VPN功能處於關閉狀態。
(3) 創建VSI,並進入VSI視圖。
vsi vsi-name
(4) 開啟VSI。
undo shutdown
缺省情況下,VSI處於開啟狀態。
(5) 創建VXLAN,並進入VXLAN視圖。
vxlan vxlan-id
在一個VSI下隻能創建一個VXLAN。
不同VSI下創建的VXLAN,其VXLAN ID不能相同。
(1) 進入係統視圖。
system-view
(2) 進入VSI視圖。
vsi vsi-name
(3) 配置VSI的描述信息。
description text
缺省情況下,未配置VSI的描述信息。
(4) 配置VSI的MTU值。
mtu size
缺省情況下,VSI的MTU值為1500字節。
(5) 開啟VSI的MAC地址學習功能。
mac-learning enable
缺省情況下,VSI的MAC地址學習功能處於開啟狀態。
創建EVPN實例後,可以為其配置RD和RT屬性。僅用於二層交換的VXLAN網絡無需關聯VPN實例。VTEP在發布該VXLAN內路由時,攜帶VXLAN對應EVPN實例下配置的RD和RT。
一個VSI實例僅能關聯一個EVPN實例。
(1) 進入係統視圖。
system-view
(2) 進入VSI視圖。
vsi vsi-name
(3) 創建EVPN實例,並進入EVPN實例視圖。
evpn encapsulation vxlan
(4) 配置EVPN實例的RD。
route-distinguisher { route-distinguisher | auto [ router-id ] }
缺省情況下,未指定EVPN實例的RD。
(5) 配置EVPN實例的Route Target屬性。
vpn-target { vpn-target&<1-8> | auto } * [ both | export-extcommunity | import-extcommunity ]
缺省情況下,未指定EVPN實例的Route Target屬性。
建議為EVPN實例配置的Import target不要與VPN實例、公網實例的Export target匹配,反之亦然。VPN實例、公網實例的配置,請參見“2.8.5 配置VSI虛接口關聯L3VNI”。
BGP相關命令的詳細介紹,請參見“三層技術-IP路由命令參考”中的“BGP”。
(1) 進入係統視圖。
system-view
(2) 配置全局Router ID。
router id router-id
缺省情況下,未配置全局Router ID。
(3) 啟動BGP實例,並進入BGP實例視圖。
bgp as-number [ instance instance-name ]
缺省情況下,係統沒有運行BGP。
(4) 將遠端VTEP配置為對等體。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } as-number as-number
(5) 創建BGP EVPN地址族,並進入BGP EVPN地址族視圖。
address-family l2vpn evpn
(6) 使能本地路由器與指定對等體/對等體組交換BGP EVPN路由的能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } enable
缺省情況下,本地路由器不能與對等體/對等體組交換BGP EVPN路由。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP EVPN地址族視圖。
address-family l2vpn evpn
(4) 配置向對等體/對等體組發送缺省路由。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } default-route-advertise { ipv4 | ipv6 } vpn-instance vpn-instance-name
缺省情況下,不向對等體/對等體組發送缺省路由。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP EVPN地址族視圖。
address-family l2vpn evpn
(4) 配置對於從對等體/對等體組接收的BGP消息,允許本地AS號在該消息的AS_PATH屬性中出現,並配置允許出現的次數。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } allow-as-loop [ number ]
缺省情況下,不允許本地AS號在接收消息的AS_PATH屬性中出現。
(5) 配置向EBGP對等體/對等體組發布路由時不改變下一跳。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } next-hop-invariable
缺省情況下,向EBGP對等體/對等體組發布路由時會將下一跳改為自己的地址。
(6) 配置向對等體/對等體組發布團體屬性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-community
缺省情況下,不向對等體/對等體組發布團體屬性。
(7) 配置向對等體/對等體組發布EVPN網關路由時不攜帶Default-gateway擴展團體屬性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } default-gateway no-advertise
缺省情況下,向對等體/對等體組發布EVPN網關路由時會攜帶Default-gateway擴展團體屬性。
(8) 配置將發送給鄰居的BGP路由調整為最低優先級。請選擇其中一項進行配置。
¡ 配置鄰居狀態由Down變為Up後,在指定的持續時間內將發送給鄰居的BGP路由調整為最低優先級。
advertise lowest-priority on-peer-up duration seconds
¡ 配置設備重啟且BGP進程恢複後,在持續時間內調整發送給鄰居的BGP路由優先級為最低。
advertise lowest-priority on-startup duration seconds
缺省情況下,設備不修改發送給鄰居的BGP路由的優先級。
調整BGP路由優先級的方式是,將BGP路由的本地優先級值調整為最小值0,並將BGP路由的MED值調整為最大值4294967295。如需在設備發送最低優先級BGP路由的持續時間內,恢複發送正常優先級的路由,可以在用戶視圖下執行reset bgp advertise lowest-priority命令。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP EVPN地址族視圖。
address-family l2vpn evpn
(4) 配置BGP選擇最優路由時,優選下一跳地址為IPv6地址的路由。
bestroute ipv6-nexthop
缺省情況下,BGP選擇最優路由時,優選下一跳地址為IPv4地址的路由。
(5) (可選)配置BGP路由延遲優選。
route-select delay delay-value
缺省情況下,延遲時間為0秒,即路由優選不延遲。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP EVPN地址族視圖。
address-family l2vpn evpn
(4) 配置本機作為路由反射器,對等體/對等體組作為路由反射器的客戶機。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } reflect-client
缺省情況下,沒有配置路由反射器及其客戶機。
(5) (可選)允許路由反射器在客戶機之間反射EVPN路由。
reflect between-clients
缺省情況下,允許路由反射器在客戶機之間反射EVPN路由。
(6) (可選)配置路由反射器的集群ID。
reflector cluster-id { cluster-id | ipv4-address }
缺省情況下,每個路由反射器都使用自己的Router ID作為集群ID。
(7) (可選)配置路由反射器對反射的EVPN路由進行過濾。
rr-filter ext-comm-list-number
缺省情況下,路由反射器不會對反射的EVPN路由進行過濾。
(8) (可選)允許路由反射器反射路由時修改路由屬性。
reflect change-path-attribute
缺省情況下,不允許路由反射器反射路由時修改路由屬性。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP EVPN地址族視圖。
address-family l2vpn evpn
(4) 在本機上開啟Route Server功能,配置對等體/對等體組作為Route Server的客戶機。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-server-client [ external ]
缺省情況下,未配置Route Server功能及其客戶機。
在本機上配置Route Server功能後,對等設備上需要配置peer ignore-first-as命令,不檢查從指定EBGP對等體發來的更新消息中AS_Path屬性的第一個AS號,否則鄰居關係無法正常建立。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP EVPN地址族視圖。
address-family l2vpn evpn
(4) 對來自對等體/對等體組的路由或發布給對等體/對等體組的路由應用路由策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name { export | import }
缺省情況下,沒有為對等體/對等體組指定路由策略。
(5) 設置基於二層ACL的路由過濾策略。
¡ 為指定對等體/對等體組設置基於二層ACL的路由過濾策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } filter-policy { mac-acl-number | name mac-acl-name } { export | import }
¡ 配置對發布的所有路由信息進行過濾。
filter-policy { mac-acl-number | name mac-acl-name } export
¡ 配置對接收的所有路由信息進行過濾。
filter-policy { mac-acl-number | name mac-acl-name } import
缺省情況下,未設置基於二層ACL的路由過濾策略。
在二層ACL中,rule [ rule-id ] { deny | permit } dest-mac dest-address dest-mask命令配置的規則用來過濾攜帶指定MAC地址的MAC/IP發布路由,不能過濾其他類型的BGP EVPN路由。除了上述規則之外,二層ACL中的其他規則對EVPN路由的過濾不生效。
(6) 開啟BGP EVPN路由的VPN-Target過濾功能。
policy vpn-target
缺省情況下,BGP EVPN路由的VPN-Target過濾功能處於開啟狀態。
(7) 配置根據EBGP路由的第一個AS號來過濾發布對象。
peer-as-check enable
缺省情況下,設備接收到EBGP路由後,會將其發布給除發送該路由的對等體之外的所有BGP對等體,不會根據EBGP路由的第一個AS號來過濾發布對象。
配置本命令後,BGP向EBGP對等體發布EBGP路由時,會檢查AS_Path屬性中的第一個AS號,不會向EBGP對等體發布第一個AS號與該EBGP對等體所在的AS相同的路由。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP EVPN地址族視圖。
address-family l2vpn evpn
(4) 為指定對等體/對等體組配置Add-Path功能。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } additional-paths { receive | send } *
缺省情況下,未配置Add-Path功能。
(5) 配置向指定對等體/對等體組發送的Add-Path優選路由的最大條數。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise additional-paths best number
缺省情況下,向指定對等體/對等體組發送的Add-Path優選路由的最大條數為1。
(6) 配置Add-Path優選路由的最大條數。
additional-paths select-best best-number
缺省情況下,Add-Path優選路由的最大條數為1。
缺省情況下,BGP路由在進行下一跳路由迭代時,若隻能通過缺省路由到達BGP路由的下一跳,則BGP路由會迭代到缺省路由,即選擇缺省路由作為BGP路由的下一跳的依賴路由。如果通過該缺省路由實際無法到達BGP路由的下一跳,則匹配該BGP路由的流量將轉發失敗。
為了解決上述問題,可以配置本命令,使得BGP路由進行下一跳路由迭代時,不迭代到缺省路由。配置本命令後,BGP路由在進行下一跳路由迭代時,若隻能通過缺省路由到達BGP路由的下一跳,則路由迭代失敗,該BGP路由成為失效路由,同一前綴的其他BGP路由可以被優選。
本功能可以應用在到達同一目的地址存在多條鏈路的組網場景中,在承載流量的鏈路發生故障時,原本迭代到該鏈路的BGP路由也不會因為迭代到缺省路由而保持繼續生效,而是變為失效路由,使得下一跳指向其他鏈路的BGP路由能夠優選,以實現鏈路的切換,避免長時間丟包。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP EVPN地址族視圖。
address-family l2vpn evpn
(4) 配置下一跳路由迭代時不能迭代到缺省路由。
nexthop recursive-lookup default-route ignore [ route-policy route-policy-name ]
缺省情況下,BGP路由進行下一跳路由迭代時,可以迭代到缺省路由。
配置本命令後,可能會使得EVPN VXLAN網絡中已經創建的VXLAN隧道重新建立,導致VXLAN流量的短暫丟失。建議您在配置本命令後,再使能BGP EVPN路由的交互能力。
請在用戶視圖下執行如下命令,複位或軟複位BGP會話。
· 複位EVPN地址族下的BGP會話。
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } l2vpn evpn
· 手工對EVPN地址族下的BGP會話進行軟複位。
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } l2vpn evpn
手工創建以太網服務實例,並將以太網服務實例與VSI關聯後,從該接口接收到的、符合以太網服務實例報文匹配規則的報文,將通過查找關聯VSI的MAC地址表進行轉發。
本配置中各命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
本配置與以太網鏈路聚合功能互斥。二層以太網接口加入聚合組後,不能再將該接口上的以太網服務實例與VSI關聯;反之亦然。
同一接口下不同以太網服務實例,不能配置匹配相同外層VLAN tag不同內層VLAN tag的報文匹配規則。
配置以太網服務實例的報文匹配規則時需要注意的事項請參見“VXLAN命令參考”中的“VXLAN”。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖。
¡ 進入二層以太網接口視圖。
interface interface-type interface-number
¡ 進入二層聚合接口視圖。
interface bridge-aggregation interface-number
(3) 手工創建以太網服務實例,並進入以太網服務實例視圖。
service-instance instance-id
(4) 配置以太網服務實例的報文匹配規則。
¡ 匹配報文的內層VLAN tag。
encapsulation c-vid vlan-id
¡ 匹配報文的外層VLAN tag。
encapsulation s-vid vlan-id [ only-tagged ]
¡ 同時匹配報文的外層和內層VLAN tag。
encapsulation s-vid vlan-id c-vid { vlan-id | all }
¡ 匹配攜帶VLAN tag或不攜帶VLAN tag的所有報文。
encapsulation { tagged | untagged }
¡ 匹配未匹配到接口上其他以太網服務實例的所有報文。
encapsulation default
同一個接口上最多隻能有一個服務實例的報文匹配規則為encapsulation default。
如果接口上隻存在一個配置了encapsulation default規則的以太網服務實例,則該接口上的所有報文都匹配該以太網服務實例。
缺省情況下,未配置報文匹配規則。
(5) 將以太網服務實例與VSI關聯。
xconnect vsi vsi-name [ access-mode { ethernet | vlan } ] [ track track-entry-number&<1-3> ]
缺省情況下,以太網服務實例未關聯VSI。
在集中式EVPN網關組網中,VTEP上需要開啟ARP/ND泛洪抑製功能。EVPN組網中通常關閉遠端ARP/ND自動學習功能,網關從VXLAN隧道上接收到請求網關MAC地址的ARP/ND請求後,不會對其進行應答。如果未開啟ARP/ND泛洪抑製功能,則可能會導致虛擬機獲取不到網關的MAC地址。
(1) 進入係統視圖。
system-view
(2) 創建VSI虛接口,並進入VSI虛接口視圖。
interface vsi-interface vsi-interface-id
本命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
(3) 配置VSI虛接口的IP地址。
(IPv4網絡)
ip address ip-address { mask | mask-length } [ sub ]
(IPv6網絡)
IPv6地址的配置方法,請參見“三層技術-IP業務配置指導”中的“IPv6基礎”。
缺省情況下,未配置VSI虛接口的IP地址。
(4) 退回係統視圖。
quit
(5) 進入VXLAN所在VSI視圖。
vsi vsi-name
(6) 為VSI指定網關接口。
gateway vsi-interface vsi-interface-id
缺省情況下,未指定VSI的網關接口。
本命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
在集中式EVPN網關組網中,若用戶終端的MAC地址與集中式EVPN網關MAC地址發生衝突,則VTEP設備會認為發生MAC地址遷移,用戶終端的MAC地址表項會覆蓋集中式EVPN網關的MAC地址表項,導致流量轉發錯誤。
在集中式EVPN網關上配置本功能可以解決上述問題。配置本功能後,集中式EVPN網關在通過MAC/IP發布路由通告集中式EVPN網關MAC地址時,將該路由攜帶的MAC遷移擴展屬性中的靜態比特位設置為1,以標識集中式EVPN網關MAC地址為靜態MAC地址。當用戶終端的MAC地址與集中式EVPN網關MAC地址發生衝突時,用戶MAC地址不會覆蓋網關MAC地址表項,避免流量轉發錯誤。
MAC遷移擴展屬性中的靜態比特位設置為1,表示該MAC地址為靜態MAC;取值為0時,表示該MAC地址為非靜態MAC。
(1) 進入係統視圖。
system-view
(2) 將集中式網關的MAC地址標記為靜態MAC。
evpn route gateway-mac unmovable
缺省情況下,將集中式網關的MAC地址標記為非靜態MAC。
分布式EVPN網關上VSI虛接口存在如下配置要求:
· VSI接口的MAC地址不能配置為設備的保留MAC。
· 同一分布式網關上承載L3VNI的VSI虛接口的MAC地址必須配置一致。
· 不同分布式網關上作為同一個VXLAN網絡網關接口的VSI虛接口需要配置相同的IP/IPv6地址和MAC地址。
· 當網關連接IPv6站點網絡時,還需要為同一分布式網關上承載L3VNI的VSI虛接口配置相同的IPv6鏈路本地地址。采用自動方式生成鏈路本地地址時,由於MAC地址相同,則生成的鏈路本地地址相同;若采用手工方式配置,則必須保證配置的鏈路本地地址相同。
在分布式EVPN網關設備上,如果開啟了ARP/ND泛洪抑製功能,並在VSI虛接口上開啟了本地代理ARP/ND功能,則隻有本地代理ARP/ND功能生效。請在分布式EVPN網關設備上選擇一種進行配置,建議不要在分布式EVPN網關設備上同時開啟這兩個功能。
在分布式EVPN網關設備上,如果通過mac-address命令修改了某一關聯L3VNI的VSI虛接口的MAC地址,則必須通過該命令將所有與L3VNI關聯的VSI虛接口的MAC地址修改為相同的值,否則可能會導致報文轉發失敗。
如果虛擬機要想與外部網絡進行三層通信,那麼除了分布式EVPN網關的配置外,還需要在接入虛擬機的本地分布式EVPN網關上配置靜態路由或策略路由:
· 配置靜態路由:指定路由的下一跳為Border上同一個VXLAN對應VSI虛接口的IPv4地址或IPv6地址。
· 配置策略路由:通過apply default-next-hop命令或apply next-hop命令設置報文的缺省下一跳或下一跳為Border上同一個VXLAN對應VSI虛接口的IP地址。策略路由的配置方法,請參見“三層技術-IP路由配置指導”中的“策略路由”和“IPv6策略路由”。
目前,非對稱IRB轉發方式僅支持通過分布式EVPN網關轉發相同VXLAN的三層流量,且不同GW上相同VSI虛接口的IP地址不能相同。
(1) 進入係統視圖。
system-view
(2) 配置EVPN VXLAN的轉發方式。請選擇其中一項進行配置。
¡ EVPN VXLAN采用非對稱IRB方式轉發流量。
evpn irb asymmetric [ route-policy route-policy-name ]
¡ EVPN VXLAN采用對稱IRB方式轉發流量。
undo evpn irb asymmetric
缺省情況下,EVPN網關采用對稱IRB方式轉發流量。
為了節省分布式VXLAN IP網關設備上的三層接口資源,在網關設備上多個VXLAN可以共用一個VSI虛接口,為VSI虛接口配置一個主IPv4地址和多個從IPv4地址、或多個IPv6地址,分別作為不同VXLAN內虛擬機的網關地址。
多個VXLAN共用一個VSI虛接口時,網關設備無法判斷從VSI虛接口接收到的報文屬於哪個VXLAN。為了解決該問題,需要在VSI視圖下通過gateway subnet命令指定VSI所屬的子網網段,通過子網網段判斷報文所屬的VSI,並在該VSI內轉發報文,從而限製IPv4廣播報文範圍或IPv6組播報文,有效地節省帶寬資源。
(1) 進入係統視圖。
system-view
(2) 創建VSI虛接口,並進入VSI虛接口視圖。
interface vsi-interface vsi-interface-id
本命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
(3) 配置VSI虛接口的IP地址。
(IPv4網絡)
ip address ip-address { mask | mask-length } [ sub ]
(IPv6網絡)
IPv6地址的配置方法,請參見“三層技術-IP業務配置指導”中的“IPv6基礎”。
缺省情況下,未配置VSI虛接口的IP地址。
(4) 配置VSI虛接口的MAC地址。
mac-address mac-address
缺省情況下,VSI虛接口的MAC地址為三層以太網接口的缺省MAC。
不同分布式EVPN網關設備上,為同一個VXLAN的VSI虛接口配置的MAC地址必須相同。否則,虛擬機發生遷移後,虛擬機上網關IP地址對應的MAC地址為遠端網關的MAC地址,可能導致流量轉發錯誤。
(5) 配置VSI虛接口為分布式網關接口。
distributed-gateway local
缺省情況下,VSI虛接口不是分布式本地網關接口。
本命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
(6) (可選)開啟本地代理ARP功能或本地ND代理功能。
(IPv4網絡)
local-proxy-arp enable [ ip-range startIP to endIP ]
缺省情況下,本地代理ARP功能處於關閉狀態。
本命令的詳細介紹,請參見“三層技術-IP業務命令參考”中的“代理ARP”。
(IPv6網絡)
local-proxy-nd enable
缺省情況下,本地ND代理功能處於關閉狀態。
本命令的詳細介紹,請參見“三層技術-IP業務命令參考”中的“IPv6基礎”。
(7) 退回係統視圖。
quit
(8) 進入VXLAN所在VSI視圖。
vsi vsi-name
(9) 為VSI指定網關接口。
gateway vsi-interface vsi-interface-id
缺省情況下,未指定VSI的網關接口。
本命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
(10) 配置當前VSI所屬的子網網段。
gateway subnet { ipv4-address wildcard-mask | ipv6-address prefix-length }
缺省情況下,未指定VSI所屬的子網網段。
本命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
(1) 進入係統視圖。
system-view
(2) 配置VPN實例。
a. 創建VPN實例,並進入VPN實例視圖。
ip vpn-instance vpn-instance-name
b. 配置VPN實例的RD。
route-distinguisher route-distinguisher
缺省情況下,未配置VPN實例的RD。
c. 配置VPN實例的RT。
vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ]
缺省情況下,未配置VPN實例的Route Target。
d. (可選)對VPN實例應用出方向路由策略。
export route-policy route-policy
缺省情況下,不對發布的路由進行過濾。
e. (可選)對VPN實例應用入方向路由策略。
import route-policy route-policy
缺省情況下,VPN實例未應用入方向路由策略。如果接收到的路由攜帶的Route Target屬性中存在與本地配置的Import Target相同的值,則接收該路由。
(3) 配置VPN實例下的EVPN。
a. 進入VPN實例EVPN視圖。
address-family evpn
b. 在VPN實例下配置EVPN的Route Target。
vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ]
缺省情況下,VPN實例下的EVPN未配置Route Target。
建議為EVPN實例配置的Import target不要與VPN實例的Export target匹配,反之亦然。
c. (可選)在VPN實例下配置EVPN的出方向路由策略。
export route-policy route-policy
缺省情況下,不對發布的路由進行過濾。
出方向路由策略用來對VPN實例發布給BGP EVPN協議的路由進行過濾。
d. (可選)在VPN實例下配置EVPN的入方向路由策略。
import route-policy route-policy
缺省情況下,在VPN實例下未配置EVPN的入方向路由策略,即如果接收到的路由攜帶的Route Target屬性中存在與本地配置的Import Target相同的值,則接收該路由。
入方向路由策略用來對從BGP EVPN協議引入到VPN實例的路由進行過濾。
(4) 依次執行以下命令退回係統視圖。
a. quit
b. quit
(5) 進入VSI虛接口視圖。
interface vsi-interface vsi-interface-id
(6) 配置接口與指定的VPN實例關聯。
ip binding vpn-instance vpn-instance-name
缺省情況下,接口未關聯VPN實例,接口屬於公網。
(7) 配置VPN實例的L3VNI。
l3-vni vxlan-id
缺省情況下,未配置VPN實例的L3VNI。
一個VPN實例隻能關聯一個L3VNI。若為VPN實例配置了多個L3VNI,則該VPN實例與數值最小的L3VNI關聯。通過display evpn routing-table命令可以查看與VPN實例關聯的L3VNI。
(1) 進入係統視圖。
system-view
(2) 創建公網實例,並進入公網實例視圖。
ip public-instance
本命令的詳細介紹請參見“MPLS命令參考”中的“MPLS L3VPN”。
(3) 配置公網實例的RD。
route-distinguisher route-distinguisher
缺省情況下,未配置公網實例的RD。
(4) 配置公網實例的L3VNI。
l3-vni vxlan-id
缺省情況下,未配置公網實例的L3VNI。
一個公網實例隻能關聯一個L3VNI。不能通過重複執行本命令修改公網實例的L3VNI。如需修改,請先刪除已有的L3VNI後再配置。
(5) (可選)配置公網實例的RT。
vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ]
缺省情況下,未配置公網實例的RT。
(6) 進入公網實例IPv4地址族視圖、IPv6 VPN視圖或EVPN視圖。
¡ 進入公網實例IPv4地址族視圖。
address-family ipv4
本命令的詳細介紹請參見“MPLS命令參考”中的“MPLS L3VPN”。
¡ 進入公網實例IPv6地址族視圖。
address-family ipv6
本命令的詳細介紹請參見“MPLS命令參考”中的“MPLS L3VPN”。
¡ 進入公網實例EVPN視圖。
address-family evpn
(7) 在公網實例下配置IPv4 VPN、IPv6 VPN或EVPN的Route Target。
vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ]
缺省情況下,公網實例下的IPv4 VPN、IPv6 VPN、EVPN未配置Route Target。
建議為EVPN實例配置的Import target不要與公網實例的Export target匹配,反之亦然。
(8) 依次執行以下命令退回係統視圖。
a. quit
b. quit
(9) 進入VSI虛接口視圖。
interface vsi-interface vsi-interface-id
(10) 在屬於公網實例的VSI虛接口上配置L3VNI。
l3-vni vxlan-id
缺省情況下,在屬於公網實例的VSI虛接口上未配置L3VNI。
在所有屬於公網實例的VSI虛接口中,必須至少有一個接口上配置的L3VNI與公網實例視圖下指定的L3VNI相同。
在BGP-VPN IPv4單播地址族視圖/BGP-VPN IPv6單播地址族視圖下引入IGP路由後,如果該VPN實例關聯了L3VNI,則引入的路由將作為EVPN的IP前綴路由發布給遠端VTEP。
在BGP IPv4單播地址族視圖/BGP IPv6單播地址族視圖下引入IGP路由後,如果公網實例關聯了L3VNI,則引入的路由將作為EVPN的IP前綴路由發布給遠端VTEP。
遠端VTEP接收到EVPN的IP前綴路由後,將路由中的Route Target屬性與本地VPN實例/公網實例下為IPv4 VPN/IPv6 VPN配置的Import Target進行比較。若匹配則接收該路由,並將該路由添加到VPN實例或公網的路由表中。
隻有分布式EVPN網關組網支持本配置。
本配置中各命令的詳細介紹,請參見“三層技術-IP路由命令參考”中的“BGP”。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP地址族視圖。
¡ 進入BGP IPv4單播地址族視圖。
address-family ipv4 [ unicast ]
¡ 依次執行以下命令,進入BGP-VPN IPv4單播地址族視圖。
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 進入BGP IPv6單播地址族視圖。
address-family ipv6 [ unicast ]
¡ 依次執行以下命令,進入BGP-VPN IPv6單播地址族視圖。
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(4) 將IGP路由協議的路由信息引入到BGP路由表中。
import-route protocol [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ]
缺省情況下,BGP不會引入IGP路由協議的路由信息。
(5) (可選)允許將缺省路由引入到BGP路由表中。
default-route imported
缺省情況下,BGP不允許將缺省路由引入到BGP路由表中。
(6) (可選)配置VPN引入等價路由功能。
a. 退回BGP實例視圖。
quit
b. 進入BGP EVPN地址族視圖。
address-family l2vpn evpn
c. 開啟VPN引入等價路由功能。
vpn-route cross multipath
缺省情況下,VPN引入等價路由功能處於關閉狀態,對於前綴和RD均相同的多條路由,隻會將最優路由引入到BGP EVPN路由表中。
開啟本功能後,BGP將前綴和RD均相同的多條路由全部引入到BGP EVPN路由表中。
EVPN全局MAC地址僅用於承載L3VNI的VSI虛接口。如果承載L3VNI的VSI虛接口上通過mac-address命令配置了MAC地址,則VSI虛接口的MAC地址為該地址;否則,VSI虛接口的MAC地址為配置的EVPN全局MAC地址。
分布式EVPN網關在所有承載L3VNI的VSI虛接口中,選擇接口編號最小的VSI虛接口的MAC地址作為Router MAC。在EVPN M-LAG組網中,作為M-LAG設備的兩台分布式EVPN網關選取的Router MAC可能不同,導致報文轉發錯誤。在兩台網關上均執行本配置,設置相同的EVPN全局MAC地址,可以解決上述問題。
建議用戶采用如下方式之一來配置EVPN全局MAC地址:
· 采用一台成員設備上三層以太網接口(即工作模式為route的以太網接口)的缺省MAC地址作為一個M-LAG係統內所有成員設備的EVPN全局MAC。
· 指定符合要求的單播MAC地址作為M-LAG係統內所有成員設備的EVPN全局MAC,建議采用0001-0001-0001~0001-0001-FFFE範圍內未被使用的MAC地址。
(1) 進入係統視圖。
system-view
(2) 配置EVPN的全局MAC地址。
evpn global-mac mac-address
缺省情況下,未配置EVPN的全局MAC地址。
分布式VXLAN IP網關上,缺省情況下,VSI虛接口IP地址所在網段會產生IP前綴路由,並將該路由發布給遠端VTEP。遠端VTEP可以將該路由發布到本地站點。如果用戶不希望將該路由發布到租戶網絡,則可以執行本配置禁止VSI虛接口IP地址所在網段產生IP前綴路由。
本命令僅對分布式VXLAN IP網關(在VSI虛接口上執行distributed-gateway local命令)生效。在集中式VXLAN IP網關上,隻產生VSI虛接口IP地址和MAC對應關係的MAC/IP發布路由,不會產生IP前綴路由,不受本命令的控製。
(1) 進入係統視圖。
system-view
(2) 進入VSI虛接口視圖。
interface vsi-interface vsi-interface-id
(3) 配置分布式VXLAN IP網關中VSI虛接口IP地址所在網段不產生IP前綴路由。
ip-prefix-route generate disable
缺省情況下,對於分布式VXLAN IP網關,VSI虛接口IP地址所在網段會產生IP前綴路由。
EVPN分布式網關從VXLAN隧道接收到RS消息後會丟棄該報文,且網關僅周期性地向本地發送RA消息,不會向VXLAN隧道發送RA消息。若VXLAN隧道對端的分布式網關不支持主動向本地發送RA消息,也不支持根據RS消息應答RA消息,就會導致VXLAN隧道對端的設備無法根據RA消息來更新網關信息。開啟本功能後,對於從VXLAN隧道接收到的RS消息,網關會應答RA消息,並且網關會周期性地向VXLAN隧道發送RA消息,以保證VXLAN隧道對端的設備能夠收到RA消息,並根據該消息來更新網關信息。
係統視圖和VSI虛接口視圖下均可以開啟網關向VXLAN隧道發送RA消息功能。係統視圖的配置對所有VSI虛接口都有效,而VSI虛接口視圖下的配置隻對當前VSI虛接口有效。對於一個VSI虛接口來說,優先采用該VSI虛接口視圖下的配置,隻有該VSI虛接口下未進行配置時,才采用係統視圖的配置。
(1) 進入係統視圖。
system-view
(2) 全局開啟網關向VXLAN隧道發送RA消息功能。
ipv6 nd ra tunnel-broadcast global enable
缺省情況下,網關向VXLAN隧道發送RA消息功能處於關閉狀態。
(1) 進入係統視圖。
system-view
(2) 進入VSI虛接口視圖。
interface vsi-interface vsi-interface-id
(3) 開啟網關向VXLAN隧道發送RA消息功能。
ipv6 nd ra tunnel-broadcast enable
缺省情況下,與係統視圖下配置的網關向VXLAN隧道發送RA消息功能的開啟狀態一致。
在EVPN分布式網關上配置L3VNI後,網關會自動創建與該L3VNI關聯的VSI。用戶無法進入該VSI的視圖,無法對其進行配置。
通過本配置開啟與L3VNI關聯的VSI的流量統計功能後,設備將對該VSI接收和發送的報文進行統計。通過display l2vpn vsi verbose命令可以查看統計信息;通過reset l2vpn statistics vsi命令可以清除統計信息。
(1) 進入係統視圖。
system-view
(2) 開啟與L3VNI關聯的VSI的流量統計功能。
l2vpn statistics vsi l3-vni
缺省情況下,與L3VNI關聯的VSI的流量統計功能處於關閉狀態。
在EVPN分布式網關下行連接VTEP的組網中,分布式網關通過IP前綴路由通告網關的ARP信息。VTEP設備上由於不存在網關配置而無法學習到網關的ARP信息,導致其不能將流量轉發到網關設備。此時,可以在分布式網關設備上開啟本功能,使得該網關通過MAC/IP發布路由通告分布式網關的ARP信息(即作為分布式網關的VSI虛接口的IP地址和MAC地址),使VTEP學習到網關的ARP信息。
(1) 進入係統視圖。
system-view
(2) 開啟通過MAC/IP發布路由通告分布式網關ARP信息的功能。
evpn mac-ip advertise distributed-gateway
缺省情況下,通過MAC/IP發布路由通告分布式網關ARP信息的功能處於關閉狀態。
缺省情況下,設備從VXLAN隧道接收到報文後可以自動學習遠端虛擬機的MAC地址和ARP/ND信息。在EVPN組網中,為了避免自動學習的遠端MAC地址/ARP信息/ND信息與通過BGP通告的MAC地址/ARP信息/ND信息衝突,需要關閉遠端MAC地址和遠端ARP/ND自動學習功能。
本配置中各命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
(1) 進入係統視圖。
system-view
(2) 關閉遠端MAC地址自動學習功能。
vxlan tunnel mac-learning disable
缺省情況下,遠端MAC地址自動學習功能處於開啟狀態。
(3) 關閉遠端ARP自動學習功能。
vxlan tunnel arp-learning disable
缺省情況下,遠端ARP自動學習功能處於開啟狀態。
(4) 關閉遠端ND自動學習功能。
vxlan tunnel nd-learning disable
缺省情況下,遠端ND自動學習功能處於開啟狀態。
VTEP可能會同時向遠端VTEP通告MAC地址信息和ARP/ND信息。其中,ARP/ND信息中已經包含MAC地址信息。為了避免重複,可以執行本配置來禁止本端VTEP向遠端VTEP通告MAC地址信息。執行本配置後,本端VTEP還會撤銷已經發布的MAC地址信息。
(1) 進入係統視圖。
system-view
(2) 進入VSI視圖。
vsi vsi-name
(3) 進入VSI實例下的EVPN實例視圖。
evpn encapsulation vxlan
(4) 配置禁止通告MAC地址信息,並撤銷已經通告的MAC地址信息。
mac-advertising disable
缺省情況下,允許通告MAC地址信息。
EVPN VXLAN組網中,不同VTEP下的設備如果錯誤地配置了相同的MAC地址,會造成VTEP間不斷同步MAC地址信息,並更新本地EVPN的MAC地址表項。此時VTEP認為該設備在不斷遷移。這種情況可能會使VTEP間形成環路,占用大量的鏈路帶寬。開啟本功能後,若在檢測周期內某MAC地址從本地遷移到遠端的次數超過閾值,則抑製最後一次由遠端向本地遷移,即僅本地學習但不對外通告該MAC地址,避免VTEP間形成環路。
執行undo evpn route mac-mobility suppression命令或MAC地址的抑製時間超過抑製恢複時間時,如果VTEP上被抑製遷移的MAC地址未老化,則立即向遠端通告該MAC地址;如果VTEP上被抑製遷移的MAC地址已經老化,則VTEP重新從本地學習該MAC地址後再對外通告。
當MAC地址表項和ARP表項均發生衝突時,需要同時開啟MAC地址反複遷移抑製功能和ARP反複遷移抑製功能。如果僅開啟MAC地址表項抑製功能,則會導致MAC地址表項抑製失敗。
(1) 進入係統視圖。
system-view
(2) 開啟MAC地址反複遷移抑製功能。
evpn route mac-mobility suppression [ detect-cycle detect-time | detect-threshold move-times | suppression-time [ suppression-time | permanent ] ] *
缺省情況下,MAC地址反複遷移抑製功能處於關閉狀態。
VTEP可能會同時接收到遠端VTEP通告的MAC地址信息和ARP/ND信息。其中,ARP/ND信息中包含MAC地址信息。為了避免重複,可以在VTEP上執行本配置來禁止EVPN從ARP/ND信息中學習MAC地址表項,EVPN僅通過MAC地址信息學習遠端MAC地址表項。
(1) 進入係統視圖。
system-view
(2) 進入VSI視圖。
vsi vsi-name
(3) 進入VSI實例下的EVPN實例視圖。
evpn encapsulation vxlan
(4) 配置禁止EVPN從ARP信息中學習MAC地址表項。
arp mac-learning disable
缺省情況下,EVPN可以從ARP信息中學習MAC地址表項。
(5) 配置禁止EVPN從ND信息中學習MAC地址表項。
nd mac-learning disable
缺省情況下,EVPN可以從ND信息中學習MAC地址表項。
在EVPN分布式網關組網中,如果同一個VXLAN內的所有用戶終端都部署在同一台EVPN網關下,則EVPN不需要通告該VXLAN的ARP信息(同時攜帶MAC和IP地址的MAC/IP發布路由),隻需通告IP前綴路由,其他VXLAN內的用戶終端通過IP前綴路由即可訪問該VXLAN。此時,可以配置本命令禁止EVPN通告ARP信息,以減少占用的設備和網絡資源。執行本命令後,設備還會撤銷已經發布的ARP信息。
(1) 進入係統視圖。
system-view
(2) 進入VSI視圖。
vsi vsi-name
(3) 進入VSI實例下的EVPN實例視圖。
evpn encapsulation vxlan
(4) 配置禁止通告ARP信息,並撤銷已經通告的ARP信息。
arp-advertising disable
缺省情況下,允許通告ARP信息。
在EVPN分布式網關組網中,如果同一個VXLAN內的所有用戶終端都部署在同一台EVPN網關下,則EVPN不需要通告該VXLAN的ND信息(同時攜帶MAC和IPv6地址的MAC/IP發布路由),隻需通告IP前綴路由,其他VXLAN內的用戶終端通過IP前綴路由即可訪問該VXLAN。此時,可以配置本命令禁止EVPN通告ND信息,以減少占用的設備和網絡資源。執行本命令後,設備還會撤銷已經發布的ND信息。
(1) 進入係統視圖。
system-view
(2) 進入EVPN實例視圖。
evpn instance instance-name
(3) 開啟通告ND信息功能。
nd-advertising enable
缺省情況下,允許通告ND信息。
(1) 進入係統視圖。
system-view
(2) 進入VSI視圖。
vsi vsi-name
(3) 進入VSI實例下的EVPN實例視圖。
evpn encapsulation vxlan
(4) 開啟通告ND信息功能。
nd-advertising enable
缺省情況下,允許通告ND信息。
集中式EVPN網關組網中,虛擬機VM 1和VM 2屬於同一VXLAN,所屬網段為10.1.1.0/24,VSI虛接口1為該VXLAN的網關接口,網關連接的外部三層網絡為10.1.2.0/24。若連接VM 2的VTEP上配置了ARP/ND泛洪抑製功能,則VM 2的地址錯誤地配置為10.1.2.0/24網段的地址(如10.1.2.2)時,連接VM 2的VTEP會向網關發送攜帶ARP/ND信息(IP為10.1.2.2,MAC為VM 2的MAC)的MAC/IP發布路由,網關會學習該ARP/ND並下發到轉發表。這種情況下,若VM 1訪問外部網絡中的10.1.2.2,則網關會將流量轉發至VM 2,造成VM 1無法訪問10.1.2.2。
配置本功能後,網關不會跨網段學習MAC/IP發布路由中的ARP/ND信息,從而解決上述問題。
(1) 進入係統視圖。
system-view
(2) 進入VSI虛接口視圖。
interface vsi-interface vsi-interface-id
本命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
(3) 配置禁止集中式EVPN網關跨網段學習MAC/IP發布路由中的ARP/ND信息。
evpn span-segment { arp-learning | nd-learning } disable
缺省情況下,集中式EVPN網關可以跨網段學習MAC/IP發布路由中的ARP/ND信息。
EVPN VXLAN組網中,不同VTEP下的設備如果錯誤地配置了相同的IP地址,會造成VTEP間不斷同步ARP信息並更新本地EVPN的ARP表項信息,此時VTEP認為該設備在不斷遷移。這種情況可能會使VTEP間形成環路,占用大量的鏈路帶寬。開啟本功能後,若檢測周期內某ARP信息從本地遷移到遠端的次數超過閾值,則抑製最後一次由遠端向本地遷移,即僅本地學習但不對外通告該ARP信息,避免VTEP間形成環路。
ARP反複遷移抑製功能僅在EVPN VXLAN分布式網關組網中生效。
執行undo evpn route arp-mobility suppression命令或ARP表項的抑製時間超過抑製恢複時間時,如果VTEP上被抑製遷移的ARP表項未老化,則立即向遠端通告該ARP信息;如果VTEP上被抑製遷移的ARP表項已經老化,則VTEP重新從本地學習該ARP信息後再對外通告。
當MAC地址表項和ARP表項均發生衝突時,需要同時開啟MAC地址反複遷移抑製功能和ARP反複遷移抑製功能。如果僅開啟MAC地址表項抑製功能,則會導致MAC地址表項抑製失敗。
(1) 進入係統視圖。
system-view
(2) 開啟ARP反複遷移抑製功能。
evpn route arp-mobility suppression [ detect-cycle detect-time | detect-threshold move-times | suppression-time [ suppression-time | permanent ] ] *
缺省情況下,ARP反複遷移抑製功能處於關閉狀態。
EVPN VXLAN組網中,如果不同VTEP學習到了相同的本地ND表項,則VTEP會不斷在彼此之間同步ND信息,並更新本地EVPN的ND表項信息,此時VTEP認為該設備在不斷遷移。這種情況可能會使VTEP間形成環路,占用大量的鏈路帶寬。開啟本功能後,若檢測周期內某ND信息從本地遷移出到遠端的次數超過閾值,則抑製最後一次由遠端向本地遷移,即僅本地學習但不對外通告該ND信息,避免VTEP間形成環路。
執行undo evpn route nd-mobility suppression命令或ND表項的抑製時間超過抑製恢複時間時,如果VTEP上被抑製遷移的ND表項未老化,則立即向遠端通告該ND信息;如果VTEP上被抑製遷移的ND表項已經老化,則VTEP重新從本地學習該ND信息後再對外通告。
ND反複遷移抑製功能僅在如下兩種組網中生效:
· 啟用ND泛洪抑製功能的EVPN VXLAN組網
· EVPN VXLAN分布式網關組網
當MAC地址表項和ND表項均發生衝突時,需要同時開啟MAC地址反複遷移抑製功能和ND反複遷移抑製功能。如果僅開啟MAC地址表項抑製功能,則會導致MAC地址表項抑製失敗。
(1) 進入係統視圖。
system-view
(2) 開啟ND反複遷移抑製功能。
evpn route nd-mobility suppression [ detect-cycle detect-time | detect-threshold move-times | suppression-time [ suppression-time | permanent ] ] *
缺省情況下,ND反複遷移抑製功能處於關閉狀態。
EVPN VXLAN組網中,VM 1連接VTEP 1,VM 2連接VTEP 2,VM 1和VM 2屬於同一網段。VTEP 1和VTEP 2分別配置VSI虛接口作為VM 1和VM 2的網關,VTEP 1和VTEP 2均配置如下功能:
· VTEP 1和VTEP 2建立BGP EVPN鄰居
· 禁止EVPN從ARP信息中學習MAC地址表項
· 禁止通告MAC地址信息,並撤銷已經通告的MAC地址信息
· 關閉遠端MAC地址自動學習功能
· VSI虛接口開啟本地代理ARP功能
· VTEP 1和VTEP 2的VSI虛接口的IP地址、MAC地址均不同
在該組網中,VM 1希望訪問VM 2時,VM 1發送ARP請求報文,VTEP 1學習VM 1的MAC地址並代理應答VM 1的ARP請求報文。同時VTEP 1發送ARP請求報文請求VM 2的MAC地址。VM 2單播應答VTEP 1的ARP請求。VTEP 2不會從VM 2的ARP應答報文中學習VM 2的MAC地址,由於VTEP 1關閉了遠端MAC地址自動學習功能,也不會學習VM 2的MAC地址,無法形成表項,導致VM 1無法訪問VM 2。
為解決上述問題,可在VTEP 2上配置本功能,使VTEP 2收到VTEP 1的ARP請求報文時,生成以VSI虛接口IP地址為源的ARP請求,並同時廣播兩個ARP請求。VM 2分別應答VTEP 1和VTEP 2的ARP請求。VTEP 2從VM 2發給自己的ARP應答報文中學習VM 2的MAC地址,並通過EVPN路由發布給VTEP 1。VTEP 1和VTEP 2均獲得VM 1和VM 2的MAC地址信息後,VM 1和VM 2可以互相訪問。
(1) 進入係統視圖。
system-view
(2) 進入VSI虛接口視圖。
interface vsi-interface vsi-interface-id
(3) 開啟ARP請求代理發送功能。
arp proxy-send enable
缺省情況下,ARP請求代理發送功能處於關閉狀態。
EVPN VXLAN組網中,VM 1連接VTEP 1,VM 2連接VTEP 2,VM 1和VM 2屬於同一網段。VTEP 1和VTEP 2分別配置VSI虛接口作為VM 1和VM 2的網關,VTEP 1和VTEP 2均配置如下功能:
· VTEP 1和VTEP 2建立BGP EVPN鄰居
· 禁止EVPN從ND信息中學習MAC地址表項
· 禁止通告MAC地址信息,並撤銷已經通告的MAC地址信息
· 關閉遠端MAC地址自動學習功能
· VSI虛接口開啟本地代理ND功能
· VTEP 1和VTEP 2的VSI虛接口的IPv6地址、MAC地址均不同
在該組網中,VM 1希望訪問VM 2時,VM 1發送NS報文,VTEP 1學習VM 1的MAC地址並代理應答VM 1的NS報文。同時VTEP 1發送NS報文請求VM 2的MAC地址。VM 2單播應答VTEP 1的ND請求。VTEP 2不會從VM 2的NA報文中學習VM 2的MAC地址,由於VTEP 1關閉了遠端MAC地址自動學習功能,也不會學習VM 2的MAC地址,無法形成表項,導致VM 1無法訪問VM 2。
為解決上述問題,可在VTEP 2上配置本命令,使VTEP 2收到VTEP 1的NS報文時,生成以VSI虛接口IPv6地址為源的NS報文,並同時組播兩個NS報文。VM 2分別應答VTEP 1和VTEP 2的NS報文。VTEP 2從VM 2發給自己的NA報文中學習VM 2的MAC地址,並通過EVPN路由發布給VTEP 1。VTEP 1和VTEP 2均獲得VM 1和VM 2的MAC地址信息後,VM 1和VM 2可以互相訪問。
(1) 進入係統視圖。
system-view
(2) 進入VSI虛接口視圖。
interface vsi-interface vsi-interface-id
(3) 開啟ND請求代理發送功能。
ipv6 nd proxy-send enable
缺省情況下,ND請求代理發送功能處於關閉狀態。
執行本配置後,隻有存在報文轉發需求時,設備上才會將遠端MAC地址表項、主機路由FIB表項或遠端ARP表項下發到硬件,以節省設備的硬件資源。
本功能僅用於EVPN組網。非EVPN組網中,不要配置本功能。
缺省情況下,通過BGP EVPN路由同步過來的遠端MAC地址表項會直接下發到硬件。開啟本功能後,同步過來的遠端MAC地址表項不會直接下發到硬件,當報文轉發過程中需要使用遠端MAC地址表項時,才會將其下發到硬件。該功能可以有效節省設備的硬件資源。
開啟本功能後,當設備在一個MAC地址表項老化時間內收到50次目的MAC地址相同的報文,且設備的MAC地址表中不存在該MAC地址,設備會將此報文的目的MAC地址加入到黑洞MAC地址表項中。這種黑洞MAC地址表項可以老化,老化時間通過mac-address timer命令配置。黑洞MAC地址表項老化之後,報文將正常進行轉發。
MAC地址表項老化時間和黑洞MAC地址的詳細介紹,請參見“二層技術-以太網交換配置指導”中的“MAC地址表”。
(1) 進入係統視圖。
system-view
(2) 開啟報文轉發時下發遠端MAC地址表項功能。
mac-address forwarding-conversational-learning
缺省情況下,報文轉發時下發遠端MAC地址表項功能處於關閉狀態。
缺省情況下,設備會直接生成主機路由FIB表項,並下發到硬件。開啟本功能後,設備不會直接將主機路由FIB表項下發到硬件,隻有在報文轉發過程中需要使用主機路由FIB表項時,才會將其下發到硬件,以節省設備的硬件資源。
用戶配置的老化時間過長或者過短,都可能影響設備的運行性能:
· 如果用戶配置的老化時間過長,設備可能會保存許多過時的主機路由FIB表項,從而耗盡主機路由FIB表項資源,導致設備無法根據網絡的變化及時更新主機路由FIB表項。
· 如果用戶配置的老化時間太短,設備可能會刪除有效的主機路由FIB表項,導致表項震蕩,影響設備的運行性能。
所以用戶需要根據實際情況,配置合適的老化時間來有效地實現主機路由FIB表項老化功能。
開啟本功能後,當設備收到目的IP地址匹配直連路由、但不存在對應主機路由的報文時,會創建探測節點,周期性發送ARP請求來學習目的IP地址的主機路由。如果在探測節點老化時間內收到50次目的IP地址相同的報文,且設備沒有學習到此IP地址的主機路由,則設備會添加目的IP地址為此地址的黑洞路由,丟棄後續發往該IP地址的報文,直到探測節點老化刪除,或者設備學習到目的IP地址的主機路由。
(1) 進入係統視圖。
system-view
(2) 開啟報文轉發時下發主機路由FIB表項功能。
ip forwarding-conversational-learning [ aging aging-time ]
缺省情況下,報文轉發時下發主機路由FIB表項功能處於關閉狀態。
缺省情況下,設備會直接生成主機路由IPv6 FIB表項,並下發到硬件。開啟本功能後,設備不會直接將主機路由IPv6 FIB表項下發到硬件,隻有在報文轉發過程中需要使用主機路由IPv6 FIB表項時,才會將其下發到硬件,以節省設備的硬件資源。
用戶配置的老化時間過長或者過短,都可能影響設備的運行性能:
· 如果用戶配置的老化時間過長,設備可能會保存許多過時的主機路由IPv6 FIB表項,從而耗盡主機路由IPv6 FIB表項資源,導致設備無法根據網絡的變化更新主機路由IPv6 FIB表項。
· 如果用戶配置的老化時間太短,設備可能會刪除有效的主機路由IPv6 FIB表項,可能導致表項震蕩,影響設備的運行性能。
所以用戶需要根據實際情況,配置合適的老化時間來有效地實現主機路由IPv6 FIB表項老化功能。
(1) 進入係統視圖。
system-view
(2) 開啟報文轉發時下發主機路由IPv6 FIB表項功能。
ipv6 forwarding-conversational-learning [ aging aging-time ]
缺省情況下,報文轉發時下發主機路由IPv6 FIB表項功能處於關閉狀態。
在BGP IPv4或BGP IPv6單播地址族下配置BGP EVPN路由引入BGP單播路由表後,設備會將從對等體/對等體組收到的包含ARP/ND信息的MAC/IP發布路由添加到BGP IPv4或BGP IPv6單播路由表,並發布到本地站點。
在BGP-VPN IPv4或BGP-VPN IPv6單播地址族下配置BGP EVPN路由引入BGP單播路由表後,設備會將從對等體/對等體組收到的包含ARP/ND信息的MAC/IP發布路由添加到VPN實例對應的BGP IPv4或BGP IPv6單播路由表,如果執行了advertise l2vpn evpn命令配置允許向本地站點發布BGP EVPN路由,則該路由會發布到本地站點,否則,該路由不會發布到本地站點。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP IPv4或BGP IPv6單播地址族視圖。
address-family { ipv4 | ipv6 }
(4) 配置將包含ARP/ND信息的MAC/IP發布路由引入BGP IPv4或BGP IPv6單播路由表。
import evpn mac-ip
缺省情況下,禁止將包含ARP/ND信息的MAC/IP發布路由引入BGP IPv4或BGP IPv6單播路由表。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP-VPN實例視圖。
ip vpn-instance vpn-instance-name
(4) 進入BGP-VPN IPv4或BGP-VPN IPv6單播地址族視圖。
address-family { ipv4 | ipv6 }
(5) 配置將包含ARP/ND信息的MAC/IP發布路由引入BGP-VPN IPv4或BGP-VPN IPv6單播路由表。
import evpn mac-ip
缺省情況下,禁止將包含ARP/ND信息的MAC/IP發布路由引入BGP-VPN IPv4或BGP-VPN IPv6單播路由表。
配置本功能後,設備將BGP EVPN路由添加到VPN實例的路由表時,VPN實例中的該路由將會繼承到達原EVPN路由下一跳的IGP路由的Metric值,即該路由在VPN實例路由表中的IGP Metric值為到達原EVPN路由下一跳的IGP路由的Metric值。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP EVPN地址族視圖。
address-family l2vpn evpn
(4) 配置將BGP EVPN路由添加到VPN實例路由表時,路由的Metric值為到達原EVPN路由下一跳的IGP路由的Metric值。
igp-metric inherit
缺省情況下,將BGP EVPN路由添加到VPN實例路由表時,路由的Metric值變為0。
配置允許對外發布BGP EVPN路由後,設備接收到BGP EVPN的IP前綴路由和包含ARP/ND信息的MAC/IP發布路由,並將其添加到某個VPN實例路由表後,會將IP前綴路由和包含ARP/ND信息的MAC/IP發布路由(私網路由)發布到本地站點。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP-VPN實例視圖。
ip vpn-instance vpn-instance-name
(4) 進入BGP-VPN IPv4單播地址族視圖。
address-family ipv4 [ unicast ]
(5) 配置允許向本地站點發布BGP EVPN路由。
advertise l2vpn evpn
缺省情況下,允許向本地站點發布BGP EVPN路由。
(1) 進入係統視圖。
system-view
(2) 進入BGP實例視圖。
bgp as-number [ instance instance-name ]
(3) 進入BGP-VPN實例視圖。
ip vpn-instance vpn-instance-name
(4) 進入BGP-VPN IPv6單播地址族視圖。
address-family ipv6 [ unicast ]
(5) 配置允許向本地站點發布BGP EVPN路由。
advertise l2vpn evpn
缺省情況下,允許向本地站點發布BGP EVPN路由。
缺省情況下,VTEP從本地站點內接收到目的MAC地址為廣播、未知單播和未知組播的數據幀後,會在該VXLAN內除接收接口外的所有本地接口和VXLAN隧道上泛洪該數據幀,將該數據幀發送給VXLAN內的所有站點;VTEP從VXLAN隧道接收到目的MAC地址為廣播、未知單播和未知組播的數據幀後,會在該VXLAN內的所有本地接口上泛洪該數據幀。通過本配置可以手工禁止某類數據幀在VXLAN內泛洪,以減少網絡中的泛洪流量。
禁止通過VXLAN隧道向遠端站點泛洪後,為了將某些單播或組播MAC地址的數據幀泛洪到遠端站點以保證某些業務的流量在站點間互通,可以配置選擇性泛洪的MAC地址,當數據幀的目的MAC地址匹配該MAC地址時,該數據幀可以泛洪到遠端站點。
本配置中各命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
(1) 進入係統視圖。
system-view
(2) 進入VSI視圖。
vsi vsi-name
(3) 關閉VSI的泛洪功能。
flooding disable { all | { broadcast | unknown-multicast | unknown-unicast } * } [ all-direction ]
缺省情況下,VSI泛洪功能處於開啟狀態。
unknown-multicast和unknown-unicast參數必須同時指定。
(4) (可選)配置VSI選擇性泛洪的MAC地址。
selective-flooding mac-address mac-address
開啟ARP/ND泛洪抑製時,如果同時執行flooding disable命令關閉了VSI的泛洪功能,則建議通過mac-address timer命令配置動態MAC地址的老化時間大於25分鍾(ARP/ND泛洪抑製表項的老化時間),以免MAC地址在ARP/ND泛洪抑製表項老化之前老化,產生黑洞MAC地址。
如果配置了vxlan tunnel arp-learning disable或vxlan tunnel nd-learning disable命令,則設備從VXLAN隧道上接收到ARP/ND請求報文後,不會采用匹配的ARP/ND泛洪抑製表項對其進行應答。
ARP泛洪抑製表項可以通過reset arp suppression vsi命令清除,不能通過reset arp命令清除。reset arp suppression vsi命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”;reset arp命令的詳細介紹,請參見“三層技術-IP業務命令參考”中的“ARP”。
ND泛洪抑製表項可以通過reset ipv6 nd suppression vsi命令清除,不能通過reset ipv6 neighbors命令清除。reset ipv6 nd suppression vsi命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”;reset ipv6 neighbors命令的詳細介紹,請參見“三層技術-IP業務命令參考”中的“IPv6基礎”。
(1) 進入係統視圖。
system-view
(2) 進入VSI視圖。
vsi vsi-name
(3) 開啟ARP泛洪抑製功能。
arp suppression enable
缺省情況下,ARP泛洪抑製功能處於關閉狀態。
本命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
(1) 進入係統視圖。
system-view
(2) 進入VSI視圖。
vsi vsi-name
(3) 開啟ND泛洪抑製功能。
ipv6 nd suppression enable
缺省情況下,ND泛洪抑製功能處於關閉狀態。
本命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
開啟本功能後,設備會統計已經創建的自動VXLAN隧道上轉發的流量,也會對之後創建的自動VXLAN隧道進行流量統計,直到刪除VXLAN隧道或關閉本功能。
開啟自動VXLAN隧道的報文統計功能後,可以通過display interface tunnel命令查看統計信息,通過reset counters interface tunnel命令清除VXLAN隧道的統計信息。
(1) 進入係統視圖。
system-view
(2) 開啟自動VXLAN隧道的報文統計功能。
tunnel statistics vxlan auto
缺省情況下,自動VXLAN隧道的報文統計功能處於關閉狀態。
本命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
在隧道源節點上檢測VXLAN隧道的連通性前,需要在VXLAN隧道的尾節點上執行本配置,否則隧道尾節點無法正常識別檢測報文,導致檢測失敗。
如果隧道源節點執行ping vxlan/tracert vxlan命令時指定-r reply-mode參數為3,則還需要在隧道源節點上執行本命令。
(1) 進入係統視圖。
system-view
(2) 開啟VXLAN隧道的連通性檢測功能。
overlay oam enable
缺省情況下,VXLAN隧道的連通性檢測功能處於關閉狀態。
在EVPN VXLAN組網中,VTEP之間通過VXLAN隧道傳輸數據報文。當VTEP間出現丟包或斷流現象時,可以通過本功能檢測VTEP設備間VXLAN隧道的連通性。具體檢測過程為:
(1) 本端VTEP設備通過tunnel-source source-address tunnel-destination dest-address指定的VXLAN隧道向遠端VTEP發送VXLAN Echo Request報文,該報文采用VXLAN封裝。
(2) 遠端VTEP設備收到VXLAN Echo Request報文後,回複VXLAN Echo Reply報文。
(3) 本端設備根據是否收到VXLAN Echo Reply報文、收到VXLAN Echo Reply報文的信息,判斷該VXLAN隧道的連通性,並輸出相應的統計信息。
VTEP基於VXLAN Echo Request報文的源UDP端口號進行負載分擔。當兩個VTEP之間的VXLAN隧道對應多條路徑時,為了保證檢測結果的準確性,可以通過配置負載分擔參數實現對多條路徑的遍曆檢測。可以通過如下兩種方式指定VXLAN Echo Request報文的源UDP端口號:
· 直接指定源UDP端口號的起始值和結束值,使設備發出的VXLAN Echo Request報文中的UDP端口號從起始值開始,依次+1,直到遞增到結束值。
· 通過指定不同的MAC地址、IP地址以及協議類型參數動態計算VXLAN的源UDP號。采用該方式時,需要多次執行ping vxlan命令實現對多條等價路徑的遍曆檢測。
配置本功能時,指定負載分擔參數僅改變VXLAN Echo Request報文的源UDP端口號並不會改變設備發送的VXLAN Echo Request報文的其他信息。
指定vxlan-source-udpport vxlan-source-udpport [ end-vxlan-src-udpport ]參數後,每個源UDP端口號對應VXLAN Echo Request報文的發送數目由-c count參數決定。
通過本功能檢測VXLAN隧道的連通性時,需要在VXLAN隧道的對端VTEP上配置overlay oam enable命令。
可在任意視圖下執行本命令,檢測VXLAN隧道的連通性。
ping vxlan [ -a inner-src-address | -c count | -m interval | -r reply-mode | -t timeout | -tos tos-value ] * vxlan-id vxlan-id tunnel-source source-address tunnel-destination dest-address [ destination-udpport dest-port ] [ vxlan-source-address vxlan-source-address ] [ load-balance { vxlan-source-udpport vxlan-source-udpport [ end-vxlan-src-udpport ] | source-address lb-src-address destination-address lb-dest-address protocol { udp | lb-protocol-id } source-port lb-src-port destination-port lb-dest-port source-mac lb-source-mac destination-mac lb-destination-mac } ]
本命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
在EVPN VXLAN中,VTEP之間通過VXLAN隧道傳輸數據報文。當VTEP間出現丟包或斷流現象時,可以通過本功能查看VXLAN隧道所經過的路徑,並根據應答信息對錯誤點進行定位。具體檢測過程為:
(1) 本端VTEP設備通過tunnel-source source-address tunnel-destination dest-address指定的VXLAN隧道向遠端VTEP發送VXLAN Echo Request報文,該報文采用VXLAN封裝且IPv4報文頭部的TTL字段取值設置為1。
(2) 下一個節點收到報文後,TTL字段的值變成0,會向首節點(即本端VTEP)發送ICMP的TTL超時報文。
(3) 本端VTEP收到ICMP報文後,將TTL字段的取值加1(此時設置為2)繼續發送VXLAN Echo Request報文。
(4) 下遊節點收到報文後,依次將TTL減1,直到TTL為0,該節點會向首節點發送ICMP報文;若為目的節點則向首節點發送VXLAN Echo Reply報文。
(5) 本端VTEP依次重複上述過程,直至TTL達到最大值或收到遠端VTEP發送的應答報文。
(6) 本端VTEP設備根據是否收到應答報文、收到應答報文的信息,判斷該VXLAN隧道的連通性,並輸出相應的統計信息。
VTEP基於VXLAN Echo Request報文的源UDP端口號進行負載分擔。當兩個VTEP之間的VXLAN隧道對應多條路徑時,為了保證檢測結果的準確性,可以通過配置負載分擔參數實現對多條路徑的遍曆。可以通過如下兩種方式指定VXLAN Echo Request報文的源UDP端口號:
· 直接指定源UDP端口號的起始值和結束值,使設備發出的VXLAN Echo Request報文中的UDP端口號從起始值開始,依次+1,直到遞增到結束值。
· 通過指定不同的MAC地址、IP地址以及協議類型參數動態計算VXLAN的源UDP號。采用該方式時,需要多次執行tracert vxlan命令實現對多條等價路徑的遍曆檢測。
配置本功能時,指定負載分擔參數僅改變VXLAN Echo Request報文的源UDP端口號並不會改變設備發送的VXLAN Echo Request報文的其他信息。
通過本命令檢測VXLAN隧道的連通性時,需要在VXLAN隧道的對端VTEP上配置overlay oam enable命令。
可在任意視圖下執行本命令,檢測VXLAN隧道的連通性。
tracert vxlan [ -a inner-src-address | -h ttl-value | -r reply-mode | -t timeout ] * vxlan-id vxlan-id tunnel-source source-address tunnel-destination dest-address [ destination-udpport dest-port ] [ vxlan-source-address vxlan-source-address ] [ load-balance { vxlan-source-udpport vxlan-source-udpport | source-address lb-src-address destination-address lb-dest-address protocol { udp | lb-protocol-id } source-port lb-src-port destination-port lb-dest-port source-mac lb-source-mac destination-mac lb-destination-mac } ]
本命令的詳細介紹,請參見“VXLAN命令參考”中的“VXLAN”。
開啟EVPN告警功能後,當MAC地址遷移次數達到設置的閾值時會產生告警信息。生成的告警信息將發送到設備的SNMP模塊,通過設置SNMP中告警信息的發送參數,來決定告警信息輸出的相關屬性。
有關告警信息的詳細介紹,請參見“網絡管理和監控配置指導”中的“SNMP”。
(1) 進入係統視圖。
system-view
(2) 開啟EVPN告警功能。
snmp-agent trap enable evpn [ mac-mobility-suppression ]
缺省情況下,EVPN告警功能處於關閉狀態。
在兩台VTEP上均開啟EVPN支持M-LAG功能,並為其配置相同的虛擬VTEP地址後,這兩台VTEP將虛擬成為一台VTEP設備,設備采用虛擬VTEP地址作為源端地址與遠端VTEP自動建立VXLAN隧道,從而避免VTEP單點故障對網絡造成影響。
在EVPN M-LAG組網中,組成M-LAG係統的兩台VTEP上AC配置可能不一致,若某個AC僅連接到其中一台VTEP,該AC稱為單掛AC。執行evpn m-lag local命令後,VTEP發布從單掛AC學習到的路由信息時,將路由的下一跳設置為該命令配置的本地VTEP地址(local-ipv4-address或local-ipv6-address),從而保證該AC的流量不會錯誤地轉發到另一台VTEP。VTEP從remote-ipv4-address或remote-ipv6-address接收到EVPN路由後,不會與其建立VXLAN隧道,以免單掛AC的流量轉發失敗。
采用直連模式peer-link鏈路時,如果存在單掛AC,則必須執行evpn m-lag local命令;采用隧道模式peer-link鏈路時,如果存在單掛AC,可以不執行本命令,此時設備會使用peer-link鏈路的源地址作為從單掛AC學習到的路由的下一跳。
配置EVPN支持M-LAG時,需要注意:
· 開啟、關閉EVPN支持M-LAG功能後,需要在BGP實例視圖下執行address-family l2vpn evpn命令,以便設備采用新的隧道源端地址與遠端VTEP建立隧道。
· M-LAG的虛擬VTEP地址不能指定為接口的從IP地址。
· 若DR device作為EVPN分布式網關,則兩台網關上還需要通過evpn global-mac mac-address命令配置相同的EVPN全局MAC地址,保證兩台設備上選取的Router MAC一致。
· Underlay網絡為IPv4網絡(或IPv6網絡)時,M-LAG的虛擬VTEP地址必須同為IPv4地址(或IPv6地址),否則會導致作為M-LAG設備的VTEP無法與遠端VTEP(非M-LAG設備)建立VXLAN隧道。
· 遠端VTEP上存在三條到達M-LAG係統(由兩台VTEP組成)的VXLAN隧道,當遠端VTEP設備向組成M-LAG係統的兩台VTEP發送泛洪流量(組播、廣播和未知單播流量)時,作為M-LAG設備的兩台VTEP設備會從VXLAN隧道上收到三份泛洪流量,其中兩份會被丟棄。若此時作為M-LAG設備的VTEP設備正好學習到了泛洪流量的目的MAC地址對應的MAC地址表項,則應該被丟棄的泛洪報文也會按照單播流量轉發,造成本地虛機收到多份相同的流量。
配置采用直連模式peer-link鏈路的EVPN支持M-LAG時,需要注意:
· 根據用戶側以太網服務實例的報文匹配規則創建peer-link鏈路上的AC時,用戶側以太網服務實例配置的報文匹配規則隻能為匹配報文的外層VLAN tag(encapsulation s-vid { vlan-id | vlan-id-list })、匹配不攜帶VLAN tag的所有報文(encapsulation untagged),且AC的接入模式必須為VLAN模式。
· 采用VXLAN ID映射方式生成peer-link鏈路上動態AC的報文匹配規則,AC的接入模式必須為VLAN模式。
· 作為M-LAG設備的兩台VTEP上,同一M-LAG接口以及單掛AC口上以太網服務實例的匹配規則、關聯的VSI對應的VXLAN ID必須一致,且隻能采用手工方式創建AC。
· 建議不要在作為M-LAG設備的兩台VTEP上引入外部路由。
配置采用隧道模式peer-link鏈路的EVPN支持M-LAG時,M-LAG的兩台VTEP上,M-LAG接口的以太網服務實例匹配規則、關聯的VSI對應的VXLAN ID必須一致,且隻能采用手工方式創建AC。
作為M-LAG設備的VTEP從M-LAG接口或VXLAN隧道學習到MAC地址,並通過peer-link鏈路將MAC地址同步給遠端VTEP(另一台 M-LAG功能後)後,在本端VTEP上手動刪除MAC地址表項,遠端VTEP(M-LAG設備)上的MAC地址表項不會隨之刪除,隻能等待MAC地址老化時間到達後,才會刪除遠端VTEP上的表項。
站點網絡為IPv6網絡時,如果在作為M-LAG設備的VTEP上開啟ND泛洪抑製功能,則任意一台VTEP從M-LAG接口上接收到NS報文後,作為M-LAG設備的兩台VTEP均會回複NA報文。
VTEP 1和VTEP 2組成M-LAG係統,並通過路由反射器在VTEP 1和VTEP 2之間反射路由。VTEP 1上執行evpn m-lag local命令後,如果在VTEP 2上也執行了evpn m-lag local命令或VTEP 1上執行undo evpn m-lag local命令取消配置,則需要通過reset arp、reset arp suppression vsi、reset ipv6 neighbors、reset ipv6 nd suppression vsi命令清除ARP、ARP泛洪抑製、ND和ND泛洪抑製表項,並重新學習這些表項,否則會導致部分流量轉發失敗。
在EVPN M-LAG組網中,除本配置外,還需執行以下配置:
· 配置M-LAG,並根據實際情況進行其他EVPN配置。M-LAG的配置方法請參見“二層技術-以太網交換配置指導”中的“M-LAG”。
· 為了避免M-LAG協議將接口置為M-LAG MAD DOWN狀態,需要將如下參與EVPN業務的接口配置為保留接口:
¡ 執行m-lag mad default-action none命令使M-LAG係統分裂後接口保持原狀態不變。
¡ M-LAG接口和peer-link接口所在VLAN對應的VLAN接口不需要做任何配置,M-LAG係統分裂後,這些端口不會Down。
¡ 采用直連模式peer-link鏈路時:上行接口(路由口、VLAN接口、物理接口)需要通過m-lag mad include interface命令配置為M-LAG非保留接口,M-LAG係統分裂後,這些端口會Down。采用隧道模式peer-link鏈路時不需要進行此配置。
¡ 所有參與EVPN業務的接口(VSI虛接口、BGP對等體地址所在的接口、Keepalive鏈路的接口)不需要做任何配置,M-LAG係統分裂後,這些端口不會Down。
¡ M-LAG設備采用的虛擬地址(即evpn m-lag group命令配置的IP地址)所在的接口不需要做任何配置,M-LAG係統分裂後,這些端口不會Down。
· 在隧道模式peer-link鏈路的組網環境中,必須先將VXLAN隧道接口、VXLAN隧道的公網出接口配置為保留接口後,再將VXLAN隧道接口配置為peer-link接口。如果在配置保留接口前已經將VXLAN隧道接口配置為peer-link接口,則需要先取消VXLAN隧道接口作為peer-link接口的配置,待VXLAN隧道接口、VXLAN隧道的公網出接口up後,將這些接口配置為保留接口,之後再將VXLAN隧道接口配置為peer-link接口。
· 執行m-lag restore-delay命令配置延遲恢複時間大於等於300秒。
· 在M-LAG設備上,需要關閉VXLAN隧道對應的二層以太網接口上的STP功能,以免上行設備錯誤地阻塞連接M-LAG設備的接口。
· 建議將peer-link接口的PVID配置為4094。否則,如果設備配置了通過VXLAN ID映射方式生成peer-link鏈路上動態AC的報文匹配規則(l2vpn m-lag peer-link ac-match-rule vxlan-mapping命令),可能會出現計算出的AC的報文匹配規則外層VLAN標簽為peer-link接口的PVID,影響VLAN Tag為VXLAN ID%4094+1(VXLAN ID除以4094,取餘後加1)的Underlay流量轉發。
采用隧道模式peer-link鏈路時,還需執行以下配置:
· 手工創建作為peer-link鏈路的VXLAN隧道,並將其配置為peer-link接口,隧道的源端地址必須與建立BGP對等體時使用的地址相同。自動創建的VXLAN隧道不能作為peer-link鏈路。
· 建議在作為peer-link鏈路的VXLAN隧道接口上執行tunnel tos命令為封裝後的隧道報文配置較高的優先級(數值越大,優先級越高),以確保該隧道上傳遞的DRCP(Distributed Relay Control Protocol,分布式聚合控製協議)等協議報文的優先級高於其他隧道上傳遞的普通數據報文。
· M-LAG的虛擬VTEP地址和作為peer-link鏈路的VXLAN隧道的源端地址分別指定為不同LoopBack接口的地址,並通過路由協議發布這兩個地址。
· 執行reserved vxlan命令配置保留VXLAN,以便通過該VXLAN轉發M-LAG協議報文等。作為M-LAG設備的兩台VTEP上必須配置相同的保留VXLAN。
(1) 進入係統視圖。
system-view
(2) 開啟EVPN支持M-LAG功能,並配置虛擬VTEP地址。
evpn m-lag group virtual-vtep-ipv4
缺省情況下,EVPN支持M-LAG功能處於關閉狀態。
不能通過重複執行本命令修改虛擬VTEP地址。如需修改,請先通過undo evpn m-lag group命令刪除虛擬VTEP地址,再執行evpn m-lag group命令配置新的虛擬VTEP地址。
(3) 配置組成M-LAG係統的本地和遠端VTEP的IPv4地址。
evpn m-lag local local-ipv4-address remote remote-ipv4-address
缺省情況下,未指定組成M-LAG係統的本地和遠端VTEP的IPv4地址。
本命令中指定的本地VTEP的IPv4地址必須是設備上本地接口的IPv4地址;指定的遠端VTEP地址必須與遠端VTEP上配置的本地IPv4地址保持一致。
(4) 配置M-LAG係統的本地VTEP地址僅對MAC/IP發布路由生效。
evpn m-lag local mac-ip
缺省情況下,M-LAG係統的本地VTEP地址對IMET路由、MAC/IP發布路由和IP前綴路由均生效。
(5) (可選)配置通過VXLAN ID映射方式生成peer-link鏈路上動態AC的報文匹配規則。
l2vpn m-lag peer-link ac-match-rule vxlan-mapping
缺省情況下,采用直連模式peer-link鏈路時,peer-link鏈路上動態AC的報文匹配規則與用戶側鏈路上AC的報文匹配規則相同。
peer-link鏈路上根據用戶側AC創建AC時,匹配相同外層VLAN Tag的不同以太網服務實例必須關聯相同的VSI;采用VXLAN ID映射方式時,VTEP上創建的VXLAN的ID不能大於16000000。
(1) 進入係統視圖。
system-view
(2) 開啟EVPN支持M-LAG功能,並配置虛擬VTEP地址。
evpn m-lag group virtual-vtep-ipv6
缺省情況下,EVPN支持M-LAG功能處於關閉狀態。
(3) 配置組成M-LAG係統的當前和遠端VTEP的本地IPv6地址。
evpn m-lag local local-ipv6-address remote remote-ipv6-address
缺省情況下,未指定組成M-LAG係統的當前和遠端VTEP的本地IPv6地址。
本命令中指定當前VTEP的本地IPv6地址必須是設備上本地接口的IPv6地址;指定的遠端VTEP本地地址必須與遠端VTEP上配置的本地IPv6地址保持一致。
(4) 配置M-LAG係統的本地VTEP地址僅對MAC/IP發布路由生效。
evpn m-lag local mac-ip
缺省情況下,M-LAG係統的本地VTEP地址對IMET路由、MAC/IP發布路由和IP前綴路由均生效。
(5) (可選)采用直連模式peer-link鏈路時,配置通過VXLAN ID映射方式生成peer-link鏈路上動態AC的報文匹配規則。
l2vpn m-lag peer-link ac-match-rule vxlan-mapping
缺省情況下,采用直連模式peer-link鏈路時,peer-link鏈路上動態AC的報文匹配規則與用戶側鏈路上AC的報文匹配規則相同。
peer-link鏈路上根據用戶側AC創建AC時,匹配相同外層VLAN Tag的不同以太網服務實例必須關聯相同的VSI;采用VXLAN ID映射方式時,VTEP上創建的VXLAN的ID不能大於16000000。
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後EVPN的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下,用戶可以執行reset命令來清除EVPN的相關信息。
display bgp group、display bgp peer、display bgp update-group命令的詳細介紹請參見“三層技術-IP路由命令參考”中的“BGP”。
操作 |
命令 |
顯示BGP對等體組的信息 |
display bgp [ instance instance-name ] group l2vpn evpn [ group-name group-name ] |
顯示BGP EVPN路由信息 |
display bgp [ instance instance-name ] l2vpn evpn [ peer { ipv4-address | ipv6-address } { advertised-routes | received-routes } [ statistics ] | [ route-distinguisher route-distinguisher | route-type { imet | ip-prefix | mac-ip } ] * [ { evpn-route route-length | evpn-prefix } [ advertise-info | as-path | cluster-list | community | ext-community ] | { ipv4-address | ipv6-address | mac-address } [ verbose ] ] | statistics ] display bgp [ instance instance-name ] l2vpn evpn [ route-distinguisher route-distinguisher ] [ statistics ] community [ community-number&<1-32> | aa:nn&<1-32> ] [ internet | no-advertise | no-export | no-export-subconfed ] [ whole-match ] display bgp [ instance instance-name ] l2vpn evpn [ route-distinguisher route-distinguisher ] [ statistics ] community-list { basic-community-list-number | adv-community-list-number | comm-list-name } [ whole-match ] display bgp [ instance instance-name ] l2vpn evpn [ route-distinguisher route-distinguisher ] [ statistics ] ext-community [ rt route-target | soo site-of-origin]&<1-32> [ whole-match ] |
顯示BGP對等體或對等體組的狀態和統計信息 |
display bgp [ instance instance-name ] peer l2vpn evpn [ ipv4-address mask-length | ipv6-address prefix-length | { ipv4-address | ipv6-address | group-name group-name } log-info | [ ipv4-address ] verbose ] |
顯示BGP打包組的相關信息 |
display bgp [ instance instance-name ] update-group l2vpn evpn [ ipv4-address | ipv6-address ] |
顯示EVPN通過BGP自動發現的IPv4鄰居信息 |
display evpn auto-discovery { { imet | mac-ip } [ peer ip-address] [ vsi vsi-name ] | macip-prefix [ nexthop next-hop ] [ count ] } |
顯示從M-LAG遠端設備同步過來的MAC地址信息 |
display evpn m-lag synchronized-mac [ vsi vsi-name ] [ count ] |
顯示EVPN通過BGP自動發現IPv6的鄰居信息 |
display evpn ipv6 auto-discovery { imet [ peer ipv6-address ] [ vsi vsi-name ] | mac-ip | macip-prefix [ nexthop next-hop ] [ count ] } |
顯示IPv6 EVPN的MAC地址信息 |
display evpn ipv6 route mac [ local | remote ] [ vsi vsi-name ] [ count ] |
顯示EVPN的ARP信息 |
display evpn route arp [ local | remote ] [ public-instance | vpn-instance vpn-instance-name ] [ count ] |
顯示EVPN的ARP泛洪抑製信息 |
display evpn route arp suppression [ local | remote ] [ vsi vsi-name ] [ count ] |
顯示EVPN的ARP遷移信息 |
display evpn route arp-mobility [ public-instance | vpn-instance vpn-instance-name ] [ ip ip-address ] |
顯示EVPN的MAC地址信息 |
display evpn route mac [ local | remote ] [ vsi vsi-name ] [ count ] |
顯示EVPN的MAC地址遷移信息 |
display evpn [ ipv6 ] route mac-mobility [ vsi vsi-name ] [ mac-address mac-address ] |
顯示EVPN的ND信息 |
display evpn route nd [ local | remote ] [ public-instance | vpn-instance vpn-instance-name ] [ count ] |
顯示EVPN的ND泛洪抑製信息 |
display evpn route nd suppression [ local | remote ] [ vsi vsi-name ] [ count ] |
顯示EVPN的ND遷移信息 |
display evpn route nd-mobility [ public-instance | vpn-instance vpn-instance-name ] [ ipv6 ipv6-address ] |
顯示EVPN的路由表信息 |
display evpn routing-table [ ipv6 ] { public-instance | vpn-instance vpn-instance-name } [ count ] |
顯示EVPN多歸屬組網中滿足水平分割原則的接口信息 |
(獨立運行模式) display l2vpn forwarding evpn split-horizon { ac interface interface-type interface-number | ac interface interface-type interface-number service-instance instance-id | tunnel tunnel-number } slot slot-number (IRF模式) display l2vpn forwarding evpn split-horizon { ac interface interface-type interface-number | ac interface interface-type interface-number service-instance instance-id | tunnel tunnel-number } chassis chassis-number slot slot-number |
取消對ARP遷移的抑製 |
reset evpn route arp-mobility suppression [ public-instance | vpn-instance vpn-instance-name [ ip ip-address ] ] |
取消對MAC地址遷移的抑製 |
reset evpn route mac-mobility suppression [ vsi vsi-name [ mac mac-address ] ] |
取消對ND遷移的抑製 |
reset evpn route nd-mobility suppression [ public-instance | vpn-instance vpn-instance-name [ ipv6 ipv6-address ] ] |
顯示以太網服務實例上ARP網關保護的相關信息 |
(獨立運行模式) display arp filter source service-instance [ interface interface-type interface-number [ service-instance instance-id ] ] [ slot slot-number ] (IRF模式) display arp filter source service-instance [ interface interface-type interface-number [ service-instance instance-id ] ] [ chassis chassis-number slot slot-number ] |
本節僅以IPv4站點接入IPv4網絡為例,IPv4站點接入IPv6、IPv6站點接入IPv4網絡、IPv6站點接入IPv6網絡的配置與此類似。
Switch A、Switch B為與服務器連接的VTEP設備;Switch C為與廣域網連接的集中式EVPN網關設備;Switch D為RR,負責在交換機之間反射BGP路由。
虛擬機VM 1和VM 3屬於VXLAN 10;VM 2和VM 4屬於VXLAN 20。相同VXLAN之間可以二層互通,不同VXLAN之間、VXLAN與廣域網之間可以通過集中式EVPN網關互通。
圖2-1 集中式IPv4 EVPN網關配置組網圖
(1) 配置IP地址和單播路由協議
# 在VM 1和VM 3上指定網關地址為10.1.1.1;在VM 2和VM 4上指定網關地址為10.1.2.1。(具體配置過程略)
# 配置各接口的IP地址和子網掩碼;在IP核心網絡內配置OSPF協議,確保交換機之間路由可達。(具體配置過程略)
(2) 配置Switch A
# 開啟L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] arp suppression enable
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] arp suppression enable
[SwitchA-vsi-vpnb] evpn encapsulation vxlan
[SwitchA-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchA-vsi-vpnb] vxlan 20
[SwitchA-vsi-vpnb-vxlan-20] quit
[SwitchA-vsi-vpnb] quit
# 配置BGP發布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 4.4.4.4 as-number 200
[SwitchA-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchA] interface ten-gigabitethernet 3/0/1
[SwitchA-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] quit
# 在接口Ten-GigabitEthernet3/0/1上創建以太網服務實例2000,該實例用來匹配VLAN 3的數據幀。
[SwitchA-Ten-GigabitEthernet3/0/1] service-instance 2000
[SwitchA-Ten-GigabitEthernet3/0/1-srv2000] encapsulation s-vid 3
# 配置以太網服務實例2000與VSI實例vpnb關聯。
[SwitchA-Ten-GigabitEthernet3/0/1-srv2000] xconnect vsi vpnb
[SwitchA-Ten-GigabitEthernet3/0/1-srv2000] quit
[SwitchA-Ten-GigabitEthernet3/0/1] quit
(3) 配置Switch B
# 開啟L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] arp suppression enable
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] arp suppression enable
[SwitchB-vsi-vpnb] evpn encapsulation vxlan
[SwitchB-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 配置BGP發布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 4.4.4.4 as-number 200
[SwitchB-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 在接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchB] interface ten-gigabitethernet 3/0/1
[SwitchB-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] xconnect vsi vpna
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] quit
[SwitchB-Ten-GigabitEthernet3/0/1] quit
# 在接口Ten-GigabitEthernet3/0/2上創建以太網服務實例2000,該實例用來匹配VLAN 3的數據幀。
[SwitchB] interface ten-gigabitethernet 3/0/2
[SwitchB-Ten-GigabitEthernet3/0/2] service-instance 2000
[SwitchB-Ten-GigabitEthernet3/0/2-srv2000] encapsulation s-vid 3
# 配置以太網服務實例2000與VSI實例vpnb關聯。
[SwitchB-Ten-GigabitEthernet3/0/2-srv2000] xconnect vsi vpnb
[SwitchB-Ten-GigabitEthernet3/0/2-srv2000] quit
[SwitchB-Ten-GigabitEthernet3/0/2] quit
(4) 配置Switch C
# 開啟L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置VXLAN的硬件資源模式。
[SwitchC] hardware-resource vxlan l3gw8k
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] evpn encapsulation vxlan
[SwitchC-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchC-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] evpn encapsulation vxlan
[SwitchC-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchC-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchC-vsi-vpnb] vxlan 20
[SwitchC-vsi-vpnb-vxlan-20] quit
[SwitchC-vsi-vpnb] quit
# 配置BGP發布EVPN路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] peer 4.4.4.4 as-number 200
[SwitchC-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 創建VSI虛接口VSI-interface1,並為其配置IP地址,該IP地址作為VXLAN 10內虛擬機的網關地址。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchC-Vsi-interface1] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] gateway vsi-interface 1
[SwitchC-vsi-vpna] quit
# 創建VSI虛接口VSI-interface2,並為其配置IP地址,該IP地址作為VXLAN 20內虛擬機的網關地址。
[SwitchC] interface vsi-interface 2
[SwitchC-Vsi-interface2] ip address 10.1.2.1 255.255.255.0
[SwitchC-Vsi-interface2] quit
# 配置VXLAN 20所在的VSI實例和接口VSI-interface1關聯。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] gateway vsi-interface 2
[SwitchC-vsi-vpnb] quit
(5) 配置Switch D
# 配置Switch D與其他交換機建立BGP連接。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp-default] group evpn
[SwitchD-bgp-default] peer 1.1.1.1 group evpn
[SwitchD-bgp-default] peer 2.2.2.2 group evpn
[SwitchD-bgp-default] peer 3.3.3.3 group evpn
[SwitchD-bgp-default] peer evpn as-number 200
[SwitchD-bgp-default] peer evpn connect-interface loopback 0
# 配置BGP發布EVPN路由,並關閉BGP EVPN路由的VPN-Target過濾功能。
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer evpn enable
[SwitchD-bgp-default-evpn] undo policy vpn-target
# 配置Switch D為路由反射器。
[SwitchD-bgp-default-evpn] peer evpn reflect-client
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
(1) 驗證EVPN網關設備Switch C
# 查看Switch C上的EVPN路由信息,可以看到Switch C發送了網關的MAC/IP路由和IMET路由,並接收到Switch A和Switch B發送的MAC/IP路由和IMET路由。(具體顯示信息略)
# 查看Switch C上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口處於up狀態。
[SwitchC] display interface tunnel
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 1.1.1.1
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch C上的VSI虛接口信息,可以看到VSI虛接口處於up狀態。
[SwitchC] display interface vsi-interface brief
Brief information on interfaces in route mode:
Link: ADM - administratively down; Stby - standby
Protocol: (s) - spoofing
Interface Link Protocol Primary IP Description
Vsi1 UP UP 10.1.1.1
Vsi2 UP UP 10.1.2.1
# 查看Switch C上的VSI信息,可以看到VSI內創建的VXLAN、與VXLAN關聯的VXLAN隧道、與VSI關聯的VSI虛接口等信息。
[SwitchC] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000000 UP Auto Disabled
Tunnel2 0x5000001 UP Auto Disabled
VSI Name: vpnb
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000000 UP Auto Disabled
Tunnel2 0x5000001 UP Auto Disabled
# 查看Switch C上VSI的EVPN ARP表項信息,可以看到已學習到了虛擬機的ARP信息。
[SwitchC] display evpn route arp
Flags: D - Dynamic B - BGP L - Local active
G - Gateway S - Static M - Mapping I - Invalid
Public instance Interface: Vsi-interface1
IP address MAC address Router MAC VSI index Flags
10.1.1.1 0003-0003-0003 - 0 GL
10.1.1.10 0000-1234-0001 - 0 B
10.1.1.20 0000-1234-0003 - 0 B
Public instance Interface: Vsi-interface2
IP address MAC address Router MAC VSI index Flags
10.1.2.1 0005-0005-0005 - 1 GL
10.1.2.10 0000-1234-0002 - 1 B
10.1.2.20 0000-1234-0004 - 1 B
# 查看Switch C上FIB表項信息,可以看到已學習到了虛擬機的轉發表項信息。
[SwitchC] display fib 10.1.1.10
Destination count: 1 FIB entry count: 1
Flag:
U:Useable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination/Mask Nexthop Flag OutInterface/Token Label
10.1.1.10/32 10.1.1.10 UH Vsi1 Null
(2) 驗證主機之間可以互訪
虛擬機VM 1、VM 2、VM 3、VM 4之間可以互訪。
本節僅以IPv4站點接入IPv4網絡為例,IPv6站點接入IPv4網絡的配置與此類似。
Switch A、Switch B為分布式EVPN網關設備;Switch C為與廣域網連接的邊界網關設備;Switch D為RR,負責在交換機之間反射BGP路由。
虛擬機VM 1和VM 3屬於VXLAN 10;VM 2和VM 4屬於VXLAN 20。相同VXLAN之間可以二層互通;不同VXLAN之間通過分布式EVPN網關實現三層互通,並采用對稱IRB方式轉發流量;VXLAN與廣域網之間通過邊界網關實現三層互通。
圖2-2 分布式IPv4 EVPN網關配置組網圖
(1) 配置IP地址和單播路由協議
# 在VM 1和VM 3上指定網關地址為10.1.1.1;在VM 2和VM 4上指定網關地址為10.1.2.1。(具體配置過程略)
# 配置各接口的IP地址和子網掩碼;在IP核心網絡內配置OSPF協議,確保交換機之間路由可達。(具體配置過程略)
(2) 配置Switch A
# 開啟L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] evpn encapsulation vxlan
[SwitchA-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchA-vsi-vpnb] vxlan 20
[SwitchA-vsi-vpnb-vxlan-20] quit
[SwitchA-vsi-vpnb] quit
# 配置BGP發布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 4.4.4.4 as-number 200
[SwitchA-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchA] interface ten-gigabitethernet 3/0/1
[SwitchA-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] quit
# 在接口Ten-GigabitEthernet3/0/1上創建以太網服務實例2000,該實例用來匹配VLAN 3的數據幀。
[SwitchA-Ten-GigabitEthernet3/0/1] service-instance 2000
[SwitchA-Ten-GigabitEthernet3/0/1-srv2000] encapsulation s-vid 3
# 配置以太網服務實例2000與VSI實例vpnb關聯。
[SwitchA-Ten-GigabitEthernet3/0/1-srv2000] xconnect vsi vpnb
[SwitchA-Ten-GigabitEthernet3/0/1-srv2000] quit
[SwitchA-Ten-GigabitEthernet3/0/1] quit
# 配置L3VNI的RD和RT。
[SwitchA] ip vpn-instance l3vpna
[SwitchA-vpn-instance-l3vpna] route-distinguisher 1:1
[SwitchA-vpn-instance-l3vpna] address-family ipv4
[SwitchA-vpn-ipv4-l3vpna] vpn-target 2:2
[SwitchA-vpn-ipv4-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] address-family evpn
[SwitchA-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchA-vpn-evpn-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] quit
# 配置VSI虛接口VSI-interface1。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip binding vpn-instance l3vpna
[SwitchA-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchA-Vsi-interface1] mac-address 1-1-1
[SwitchA-Vsi-interface1] distributed-gateway local
[SwitchA-Vsi-interface1] local-proxy-arp enable
[SwitchA-Vsi-interface1] quit
# 配置VSI虛接口VSI-interface2。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip binding vpn-instance l3vpna
[SwitchA-Vsi-interface2] ip address 10.1.2.1 255.255.255.0
[SwitchA-Vsi-interface2] mac-address 2-2-2
[SwitchA-Vsi-interface2] distributed-gateway local
[SwitchA-Vsi-interface2] local-proxy-arp enable
[SwitchA-Vsi-interface2] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置VPN實例l3vpna對應的L3VNI為1000。
[SwitchA] interface vsi-interface 3
[SwitchA-Vsi-interface3] ip binding vpn-instance l3vpna
[SwitchA-Vsi-interface3] l3-vni 1000
[SwitchA-Vsi-interface3] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] gateway vsi-interface 1
[SwitchA-vsi-vpna] quit
# 配置VXLAN 20所在的VSI實例和接口VSI-interface2關聯。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] gateway vsi-interface 2
[SwitchA-vsi-vpnb] quit
(3) 配置Switch B
# 開啟L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] evpn encapsulation vxlan
[SwitchB-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 配置BGP發布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 4.4.4.4 as-number 200
[SwitchB-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 在接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchB] interface ten-gigabitethernet 3/0/1
[SwitchB-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] xconnect vsi vpna
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] quit
[SwitchB-Ten-GigabitEthernet3/0/1] quit
# 在接口Ten-GigabitEthernet3/0/2上創建以太網服務實例2000,該實例用來匹配VLAN 3的數據幀。
[SwitchB] interface ten-gigabitethernet 3/0/2
[SwitchB-Ten-GigabitEthernet3/0/2] service-instance 2000
[SwitchB-Ten-GigabitEthernet3/0/2-srv2000] encapsulation s-vid 3
# 配置以太網服務實例2000與VSI實例vpnb關聯。
[SwitchB-Ten-GigabitEthernet3/0/2-srv2000] xconnect vsi vpnb
[SwitchB-Ten-GigabitEthernet3/0/2-srv2000] quit
[SwitchB-Ten-GigabitEthernet3/0/2] quit
# 配置L3 VNI的RD和RT。
[SwitchB] ip vpn-instance l3vpna
[SwitchB-vpn-instance-l3vpna] route-distinguisher 1:2
[SwitchB-vpn-instance-l3vpna] address-family ipv4
[SwitchB-vpn-ipv4-l3vpna] vpn-target 2:2
[SwitchB-vpn-ipv4-l3vpna] quit
[SwitchB-vpn-instance-l3vpna] address-family evpn
[SwitchB-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchB-vpn-evpn-l3vpna] quit
[SwitchB-vpn-instance-l3vpna] quit
# 配置VSI虛接口VSI-interface1。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip binding vpn-instance l3vpna
[SwitchB-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchB-Vsi-interface1] mac-address 1-1-1
[SwitchB-Vsi-interface1] distributed-gateway local
[SwitchB-Vsi-interface1] local-proxy-arp enable
[SwitchB-Vsi-interface1] quit
# 創建VSI虛接口VSI-interface2。
[SwitchB] interface vsi-interface 2
[SwitchB-Vsi-interface2] ip binding vpn-instance l3vpna
[SwitchB-Vsi-interface2] ip address 10.1.2.1 255.255.255.0
[SwitchB-Vsi-interface2] mac-address 2-2-2
[SwitchB-Vsi-interface2] distributed-gateway local
[SwitchB-Vsi-interface2] local-proxy-arp enable
[SwitchB-Vsi-interface2] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置VPN實例l3vpna對應的L3VNI為1000。
[SwitchB] interface vsi-interface 3
[SwitchB-Vsi-interface3] ip binding vpn-instance l3vpna
[SwitchB-Vsi-interface3] l3-vni 1000
[SwitchB-Vsi-interface3] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] gateway vsi-interface 1
[SwitchB-vsi-vpna] quit
# 配置VXLAN 20所在的VSI實例和接口VSI-interface2關聯。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] gateway vsi-interface 2
[SwitchB-vsi-vpnb] quit
(4) 配置Switch C
# 開啟L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 配置BGP發布EVPN路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] peer 4.4.4.4 as-number 200
[SwitchC-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 配置L3 VNI的RD和RT。
[SwitchC] ip vpn-instance l3vpna
[SwitchC-vpn-instance-l3vpna] route-distinguisher 1:3
[SwitchC-vpn-instance-l3vpna] address-family ipv4
[SwitchC-vpn-ipv4-l3vpna] vpn-target 2:2
[SwitchC-vpn-ipv4-l3vpna] quit
[SwitchC-vpn-instance-l3vpna] address-family evpn
[SwitchC-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchC-vpn-evpn-l3vpna] quit
[SwitchC-vpn-instance-l3vpna] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置VPN實例l3vpna對應的L3VNI為1000。
[SwitchC] interface vsi-interface 3
[SwitchC-Vsi-interface3] ip binding vpn-instance l3vpna
[SwitchC-Vsi-interface3] l3-vni 1000
[SwitchC-Vsi-interface3] quit
# 配置缺省路由,下一跳為廣域網中某台設備的IP地址20.1.1.100。
[SwitchC] ip route-static vpn-instance l3vpna 0.0.0.0 0 20.1.1.100
# 將缺省路由引入到VPN實例l3vpna的BGP IPv4單播路由表中。
[SwitchC] bgp 200
[SwitchC-bgp-default] ip vpn-instance l3vpna
[SwitchC-bgp-default-l3vpna] address-family ipv4 unicast
[SwitchC-bgp-default-ipv4-l3vpna] default-route imported
[SwitchC-bgp-default-ipv4-l3vpna] import-route static
[SwitchC-bgp-default-ipv4-l3vpna] quit
[SwitchC-bgp-default-l3vpna] quit
[SwitchC-bgp-default] quit
# 配置連接廣域網的接口Vlan-interface20與VPN實例l3vpna關聯。
[SwitchC] interface vlan-interface 20
[SwitchC-Vlan-interface20] ip binding vpn-instance l3vpna
[SwitchC-Vlan-interface20] ip address 20.1.1.3 24
[SwitchC-Vlan-interface20] quit
(5) 配置Switch D
# 配置Switch D與其他交換機建立BGP連接。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp-default] group evpn
[SwitchD-bgp-default] peer 1.1.1.1 group evpn
[SwitchD-bgp-default] peer 2.2.2.2 group evpn
[SwitchD-bgp-default] peer 3.3.3.3 group evpn
[SwitchD-bgp-default] peer evpn as-number 200
[SwitchD-bgp-default] peer evpn connect-interface loopback 0
# 配置BGP發布EVPN路由,並關閉BGP EVPN路由的VPN-Target過濾功能。
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer evpn enable
[SwitchD-bgp-default-evpn] undo policy vpn-target
# 配置Switch D為路由反射器。
[SwitchD-bgp-default-evpn] peer evpn reflect-client
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
(1) 驗證分布式EVPN網關設備Switch A
# 查看Switch A上的EVPN路由信息,可以看到Switch A發送了網關的IP前綴路由、各VSI的IMET路由和MAC/IP路由,並接收到Switch B發送的網關IP前綴路由、各VSI的IMET路由和MAC/IP路由。(具體顯示信息略)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口處於up狀態。(以Tunnel1接口為例)
[SwitchA] display interface tunnel 1
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.1.1.1, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI虛接口信息,可以看到VSI虛接口處於up狀態。(以VSI虛接口1為例)
[SwitchA] display interface vsi-interface brief
Brief information on interfaces in route mode:
Link: ADM - administratively down; Stby - standby
Protocol: (s) - spoofing
Interface Link Protocol Primary IP Description
Vsi1 UP UP 10.1.1.1
Vsi2 UP UP 10.1.2.1
# 查看Switch A上的VSI信息,可以看到VSI內創建的VXLAN、與VXLAN關聯的VXLAN隧道、與VSI關聯的VSI虛接口等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: Auto_L3VNI1000_3
VSI Index : 1
VSI State : Down
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 3
VXLAN ID : 1000
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 Up Auto Disabled
Tunnel2 0x5000002 Up Auto Disabled
ACs:
AC Link ID State Type
XGE1/0/1 srv1000 0 Up Manual
VSI Name: vpnb
VSI Index : 2
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 Up Auto Disabled
Tunnel2 0x5000002 Up Auto Disabled
ACs:
AC Link ID State Type
XGE1/0/1 srv2000 0 Up Manual
# 查看Switch A上VSI的ARP表項信息,可以看到已學習到了本地虛擬機的ARP信息。
# 查看Switch A上VSI的EVPN ARP表項信息,可以看到已學習到了本地虛擬機的ARP信息。
[SwitchA] display evpn route arp
Flags: D - Dynamic B - BGP L - Local active
G - Gateway S - Static M - Mapping I - Invalid
VPN instance: l3vpna Interface: Vsi-interface1
IP address MAC address Router MAC VSI Index Flags
10.1.1.1 0001-0001-0001 a0ce-7e40-0400 0 GL
10.1.1.10 0000-1234-0001 a0ce-7e40-0400 0 DL
10.1.2.10 0000-1234-0002 a0ce-7e40-0400 0 DL
10.1.1.20 0000-1234-0003 a0ce-7e40-0400 0 B
10.1.2.20 0000-1234-0004 a0ce-7e40-0400 0 B
(2) 驗證主機之間可以互訪
虛擬機VM 1、VM 2、VM 3、VM 4之間可以互訪。
本節僅以IPv6站點接入IPv6網絡為例,IPv4站點接入IPv6網絡的配置與此類似。
Switch A、Switch B為分布式EVPN網關設備;Switch C為與廣域網連接的邊界網關設備;Switch D為RR,負責在交換機之間反射BGP路由。
虛擬機VM 1和VM 3屬於VXLAN 10;VM 2和VM 4屬於VXLAN 20。相同VXLAN之間可以二層互通;不同VXLAN之間通過分布式EVPN網關實現三層互通,並采用對稱IRB方式轉發流量;VXLAN與廣域網之間通過邊界網關實現三層互通。
圖2-3 分布式EVPN網關IPv6 Underlay配置組網圖
(1) 配置IP地址和單播路由協議
# 在VM 1和VM 3上指定網關地址為11::1;在VM 2和VM 4上指定網關地址為12::1。(具體配置過程略)
# 配置各接口的IPv6地址和子網掩碼;在IP核心網絡內配置OSPFv3協議,確保交換機之間路由可達。(具體配置過程略)
(2) 配置Switch A
# 開啟L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 關閉遠端MAC地址和遠端ND自動學習功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel nd-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] evpn encapsulation vxlan
[SwitchA-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchA-vsi-vpnb] vxlan 20
[SwitchA-vsi-vpnb-vxlan-20] quit
[SwitchA-vsi-vpnb] quit
# 配置BGP發布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] router-id 1.1.1.1
[SwitchA-bgp-default] peer 4::4 as-number 200
[SwitchA-bgp-default] peer 4::4 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 4::4 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchA] interface ten-gigabitethernet 3/0/1
[SwitchA-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] quit
# 在接口Ten-GigabitEthernet3/0/1上創建以太網服務實例2000,該實例用來匹配VLAN 3的數據幀。
[SwitchA-Ten-GigabitEthernet3/0/1] service-instance 2000
[SwitchA-Ten-GigabitEthernet3/0/1-srv2000] encapsulation s-vid 3
# 配置以太網服務實例2000與VSI實例vpnb關聯。
[SwitchA-Ten-GigabitEthernet3/0/1-srv2000] xconnect vsi vpnb
[SwitchA-Ten-GigabitEthernet3/0/1-srv2000] quit
[SwitchA-Ten-GigabitEthernet3/0/1] quit
# 配置L3VNI的RD和RT。
[SwitchA] ip vpn-instance l3vpna
[SwitchA-vpn-instance-l3vpna] route-distinguisher 1:1
[SwitchA-vpn-instance-l3vpna] address-family ipv6
[SwitchA-vpn-ipv6-l3vpna] vpn-target 2:2
[SwitchA-vpn-ipv6-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] address-family evpn
[SwitchA-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchA-vpn-evpn-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] quit
# 配置VSI虛接口VSI-interface1。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip binding vpn-instance l3vpna
[SwitchA-Vsi-interface1] ipv6 address 11::1 64
[SwitchA-Vsi-interface1] mac-address 1-1-1
[SwitchA-Vsi-interface1] distributed-gateway local
[SwitchA-Vsi-interface1] local-proxy-nd enable
[SwitchA-Vsi-interface1] quit
# 配置VSI虛接口VSI-interface2。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip binding vpn-instance l3vpna
[SwitchA-Vsi-interface2] ipv6 address 12::1 64
[SwitchA-Vsi-interface2] mac-address 2-2-2
[SwitchA-Vsi-interface2] distributed-gateway local
[SwitchA-Vsi-interface2] local-proxy-nd enable
[SwitchA-Vsi-interface2] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置VPN實例l3vpna對應的L3VNI為1000。
[SwitchA] interface vsi-interface 3
[SwitchA-Vsi-interface3] ip binding vpn-instance l3vpna
[SwitchA-Vsi-interface3] ipv6 address auto link-local
[SwitchA-Vsi-interface3] l3-vni 1000
[SwitchA-Vsi-interface3] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] gateway vsi-interface 1
[SwitchA-vsi-vpna] quit
# 配置VXLAN 20所在的VSI實例和接口VSI-interface2關聯。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] gateway vsi-interface 2
[SwitchA-vsi-vpnb] quit
(3) 配置Switch B
# 開啟L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 關閉遠端MAC地址和遠端ND自動學習功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel nd-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] evpn encapsulation vxlan
[SwitchB-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 配置BGP發布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] router-id 2.2.2.2
[SwitchB-bgp-default] peer 4::4 as-number 200
[SwitchB-bgp-default] peer 4::4 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 4::4 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 在接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchB] interface ten-gigabitethernet 3/0/1
[SwitchB-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] xconnect vsi vpna
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] quit
[SwitchB-Ten-GigabitEthernet3/0/1] quit
# 在接口Ten-GigabitEthernet3/0/2上創建以太網服務實例2000,該實例用來匹配VLAN 3的數據幀。
[SwitchB] interface ten-gigabitethernet 3/0/2
[SwitchB-Ten-GigabitEthernet3/0/2] service-instance 2000
[SwitchB-Ten-GigabitEthernet3/0/2-srv2000] encapsulation s-vid 3
# 配置以太網服務實例2000與VSI實例vpnb關聯。
[SwitchB-Ten-GigabitEthernet3/0/2-srv2000] xconnect vsi vpnb
[SwitchB-Ten-GigabitEthernet3/0/2-srv2000] quit
[SwitchB-Ten-GigabitEthernet3/0/2] quit
# 配置L3 VNI的RD和RT。
[SwitchB] ip vpn-instance l3vpna
[SwitchB-vpn-instance-l3vpna] route-distinguisher 1:2
[SwitchB-vpn-instance-l3vpna] address-family ipv6
[SwitchB-vpn-ipv6-l3vpna] vpn-target 2:2
[SwitchB-vpn-ipv6-l3vpna] quit
[SwitchB-vpn-instance-l3vpna] address-family evpn
[SwitchB-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchB-vpn-evpn-l3vpna] quit
[SwitchB-vpn-instance-l3vpna] quit
# 配置VSI虛接口VSI-interface1。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip binding vpn-instance l3vpna
[SwitchB-Vsi-interface1] ipv6 address 11::1 64
[SwitchB-Vsi-interface1] mac-address 1-1-1
[SwitchB-Vsi-interface1] distributed-gateway local
[SwitchB-Vsi-interface1] local-proxy-nd enable
[SwitchB-Vsi-interface1] quit
# 創建VSI虛接口VSI-interface2。
[SwitchB] interface vsi-interface 2
[SwitchB-Vsi-interface2] ip binding vpn-instance l3vpna
[SwitchB-Vsi-interface2] ipv6 address 12::1 64
[SwitchB-Vsi-interface2] mac-address 2-2-2
[SwitchB-Vsi-interface2] distributed-gateway local
[SwitchB-Vsi-interface2] local-proxy-nd enable
[SwitchB-Vsi-interface2] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置VPN實例l3vpna對應的L3VNI為1000。
[SwitchB] interface vsi-interface 3
[SwitchB-Vsi-interface3] ip binding vpn-instance l3vpna
[SwitchB-Vsi-interface3] ipv6 address auto link-local
[SwitchB-Vsi-interface3] l3-vni 1000
[SwitchB-Vsi-interface3] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] gateway vsi-interface 1
[SwitchB-vsi-vpna] quit
# 配置VXLAN 20所在的VSI實例和接口VSI-interface2關聯。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] gateway vsi-interface 2
[SwitchB-vsi-vpnb] quit
(4) 配置Switch C
# 開啟L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 關閉遠端MAC地址和遠端ND自動學習功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel nd-learning disable
# 配置BGP發布EVPN路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] router-id 3.3.3.3
[SwitchC-bgp-default] peer 4::4 as-number 200
[SwitchC-bgp-default] peer 4::4 connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer 4::4 enable
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 配置L3 VNI的RD和RT。
[SwitchC] ip vpn-instance l3vpna
[SwitchC-vpn-instance-l3vpna] route-distinguisher 1:3
[SwitchC-vpn-instance-l3vpna] address-family ipv6
[SwitchC-vpn-ipv6-l3vpna] vpn-target 2:2
[SwitchC-vpn-ipv6-l3vpna] quit
[SwitchC-vpn-instance-l3vpna] address-family evpn
[SwitchC-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchC-vpn-evpn-l3vpna] quit
[SwitchC-vpn-instance-l3vpna] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置VPN實例l3vpna對應的L3VNI為1000。
[SwitchC] interface vsi-interface 3
[SwitchC-Vsi-interface3] ip binding vpn-instance l3vpna
[SwitchC-Vsi-interface3] ipv6 address auto link-local
[SwitchC-Vsi-interface3] l3-vni 1000
[SwitchC-Vsi-interface3] quit
# 配置缺省路由,下一跳為廣域網中某台設備的IP地址20::100。
[SwitchC] ipv6 route-static vpn-instance l3vpna :: 0 20::100
# 將缺省路由引入到VPN實例l3vpna的BGP IPv6單播路由表中。
[SwitchC] bgp 200
[SwitchC-bgp-default] ip vpn-instance l3vpna
[SwitchC-bgp-default-vpna] address-family ipv6 unicast
[SwitchC-bgp-default-ipv6-vpna] default-route imported
[SwitchC-bgp-default-ipv6-vpna] import-route static
[SwitchC-bgp-default-ipv6-vpna] quit
[SwitchC-bgp-default-vpna] quit
[SwitchC-bgp-default] quit
# 配置連接廣域網的接口Vlan-interface20與VPN實例l3vpna關聯,並配置接口的IPv6地址。
[SwitchC] interface vlan-interface 20
[SwitchC-Vlan-interface20] ip binding vpn-instance l3vpna
[SwitchC-Vlan-interface20] ipv6 address 20::1 64
[SwitchC-Vlan-interface20] quit
(5) 配置Switch D
# 配置Switch D與其他交換機建立BGP連接。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp-default] router-id 4.4.4.4
[SwitchD-bgp-default] group evpn
[SwitchD-bgp-default] peer 1::1 group evpn
[SwitchD-bgp-default] peer 2::2 group evpn
[SwitchD-bgp-default] peer 3::3 group evpn
[SwitchD-bgp-default] peer evpn as-number 200
[SwitchD-bgp-default] peer evpn connect-interface loopback 0
# 配置BGP發布EVPN路由,並關閉BGP EVPN路由的VPN-Target過濾功能。
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer evpn enable
[SwitchD-bgp-default-evpn] undo policy vpn-target
# 配置Switch D為路由反射器。
[SwitchD-bgp-default-evpn] peer evpn reflect-client
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
(1) 驗證分布式EVPN網關設備Switch A
# 查看Switch A上的EVPN路由信息,可以看到Switch A發送了網關的IP前綴路由、各VSI的IMET路由和MAC/IP路由,並接收到Switch B發送的網關IP前綴路由、各VSI的IMET路由和MAC/IP路由。(具體顯示信息略)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口處於up狀態。(以Tunnel1接口為例)
[SwitchA] display interface tunnel 1
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1::1, destination 2::2
Tunnel protocol/transport UDP_VXLAN/IPv6
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI虛接口信息,可以看到VSI虛接口處於up狀態。(以VSI虛接口1為例)
[SwitchA] display ipv6 interface vsi-interface brief
*down: administratively down
(s): spoofing
Interface Physical Protocol IPv6 Address
Vsi1 UP UP 11::1
Vsi2 UP UP 12::1
# 查看Switch A上的VSI信息,可以看到VSI內創建的VXLAN、與VXLAN關聯的VXLAN隧道、與VSI關聯的VSI虛接口等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: Auto_L3VNI1000_3
VSI Index : 1
VSI State : Down
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 3
VXLAN ID : 1000
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 Up Auto Disabled
Tunnel2 0x5000002 Up Auto Disabled
ACs:
AC Link ID State Type
XGE1/0/1 srv1000 0 Up Manual
VSI Name: vpnb
VSI Index : 2
VSI State : Up
MTU : 1500
...
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 Up Auto Disabled
Tunnel2 0x5000002 Up Auto Disabled
ACs:
AC Link ID State Type
XGE1/0/1 srv2000 0 Up Manual
# 查看Switch A上VSI的EVPN ND表項信息,可以看到已學習到了本地虛擬機的ND信息。
[SwitchA] display evpn route nd
Flags: D - Dynamic B - BGP L - Local active
G - Gateway S - Static M - Mapping I - Invalid
VPN instance: l3vpna Interface: Vsi-interface1
IPv6 address : 11::1
MAC address : 0001-0001-0001 Router MAC : 06dc-93de-0100
VSI index : 0 Flags : GL
IPv6 address : 11::7
MAC address : 06dc-98ca-0206 Router MAC : 06dc-93de-0100
VSI index : 0 Flags : DL
IPv6 address : 11::8
MAC address : 06dc-a8dd-0506 Router MAC : 06dc-a235-0400
VSI index : 0 Flags : B
VPN instance: l3vpna Interface: Vsi-interface2
IPv6 address : 12::1
MAC address : 0002-0002-0002 Router MAC : 06dc-93de-0100
VSI index : 1 Flags : GL
IPv6 address : 12::7
MAC address : 06dc-9ca0-0306 Router MAC : 06dc-93de-0100
VSI index : 1 Flags : DL
IPv6 address : 12::8
MAC address : 06dc-ad91-0606 Router MAC : 06dc-a235-0400
VSI index : 1 Flags : B
(2) 驗證主機之間可以互訪
虛擬機VM 1、VM 2、VM 3、VM 4之間可以互訪。
Switch A、Switch B為分布式EVPN網關設備;Switch C為與廣域網連接的邊界網關設備;Switch D為RR,負責在交換機之間反射BGP路由。
虛擬機VM 1和VM 3屬於VXLAN 10;VM 2和VM 4屬於VXLAN 20。相同VXLAN之間可以二層互通;不同站點、相同VXLAN的VM通過分布式EVPN網關實現三層互通,並采用非對稱IRB方式轉發流量;VXLAN與廣域網之間通過邊界網關實現三層互通。
圖2-4 分布式EVPN網關配置組網圖
(1) 配置IP地址和單播路由協議
# 在VM 1、VM 2、VM 3和VM 4上分別指定網關地址為10.1.1.1、10.1.2.1、20.1.1.1、20.1.2.1。(具體配置過程略)
# 請按照圖2-4配置各接口的IP地址和子網掩碼;在IP核心網絡內配置OSPF協議,確保交換機之間路由可達。(具體配置過程略)
(2) 配置Switch A
# 開啟L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 配置EVPN VXLAN采用非對稱IRB方式轉發流量。
[SwitchA] evpn irb asymmetric
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] evpn encapsulation vxlan
[SwitchA-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchA-vsi-vpnb] vxlan 20
[SwitchA-vsi-vpnb-vxlan-20] quit
[SwitchA-vsi-vpnb] quit
# 配置BGP發布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 4.4.4.4 as-number 200
[SwitchA-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchA] interface ten-gigabitethernet 3/0/1
[SwitchA-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] quit
# 在接口Ten-GigabitEthernet3/0/1上創建以太網服務實例2000,該實例用來匹配VLAN 3的數據幀。
[SwitchA-Ten-GigabitEthernet3/0/1] service-instance 2000
[SwitchA-Ten-GigabitEthernet3/0/1-srv2000] encapsulation s-vid 3
# 配置以太網服務實例2000與VSI實例vpnb關聯。
[SwitchA-Ten-GigabitEthernet3/0/1-srv2000] xconnect vsi vpnb
[SwitchA-Ten-GigabitEthernet3/0/1-srv2000] quit
[SwitchA-Ten-GigabitEthernet3/0/1] quit
# 配置L3VNI的RD和RT。
[SwitchA] ip vpn-instance l3vpna
[SwitchA-vpn-instance-l3vpna] route-distinguisher 1:1
[SwitchA-vpn-instance-l3vpna] address-family ipv4
[SwitchA-vpn-ipv4-l3vpna] vpn-target 2:2
[SwitchA-vpn-ipv4-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] address-family evpn
[SwitchA-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchA-vpn-evpn-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] quit
# 配置VSI虛接口VSI-interface1。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip binding vpn-instance l3vpna
[SwitchA-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchA-Vsi-interface1] mac-address 1-1-1
[SwitchA-Vsi-interface1] distributed-gateway local
[SwitchA-Vsi-interface1] local-proxy-arp enable
[SwitchA-Vsi-interface1] quit
# 配置VSI虛接口VSI-interface2。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip binding vpn-instance l3vpna
[SwitchA-Vsi-interface2] ip address 10.1.2.1 255.255.255.0
[SwitchA-Vsi-interface2] mac-address 2-2-2
[SwitchA-Vsi-interface2] distributed-gateway local
[SwitchA-Vsi-interface2] local-proxy-arp enable
[SwitchA-Vsi-interface2] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置VPN實例l3vpna對應的L3VNI為1000。
[SwitchA] interface vsi-interface 3
[SwitchA-Vsi-interface3] ip binding vpn-instance l3vpna
[SwitchA-Vsi-interface3] l3-vni 1000
[SwitchA-Vsi-interface3] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] gateway vsi-interface 1
[SwitchA-vsi-vpna] quit
# 配置VXLAN 20所在的VSI實例和接口VSI-interface2關聯。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] gateway vsi-interface 2
[SwitchA-vsi-vpnb] quit
(3) 配置Switch B
# 開啟L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 配置EVPN VXLAN采用非對稱IRB方式轉發流量。
[SwitchB] evpn irb asymmetric
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] evpn encapsulation vxlan
[SwitchB-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 配置BGP發布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 4.4.4.4 as-number 200
[SwitchB-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 在接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchB] interface ten-gigabitethernet 3/0/1
[SwitchB-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] xconnect vsi vpna
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] quit
[SwitchB-Ten-GigabitEthernet3/0/1] quit
# 在接口Ten-GigabitEthernet3/0/2上創建以太網服務實例2000,該實例用來匹配VLAN 3的數據幀。
[SwitchB] interface ten-gigabitethernet 3/0/2
[SwitchB-Ten-GigabitEthernet3/0/2] service-instance 2000
[SwitchB-Ten-GigabitEthernet3/0/2-srv2000] encapsulation s-vid 3
# 配置以太網服務實例2000與VSI實例vpnb關聯。
[SwitchB-Ten-GigabitEthernet3/0/2-srv2000] xconnect vsi vpnb
[SwitchB-Ten-GigabitEthernet3/0/2-srv2000] quit
[SwitchB-Ten-GigabitEthernet3/0/2] quit
# 配置L3 VNI的RD和RT。
[SwitchB] ip vpn-instance l3vpna
[SwitchB-vpn-instance-l3vpna] route-distinguisher 1:2
[SwitchB-vpn-instance-l3vpna] address-family ipv4
[SwitchB-vpn-ipv4-l3vpna] vpn-target 2:2
[SwitchB-vpn-ipv4-l3vpna] quit
[SwitchB-vpn-instance-l3vpna] address-family evpn
[SwitchB-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchB-vpn-evpn-l3vpna] quit
[SwitchB-vpn-instance-l3vpna] quit
# 配置VSI虛接口VSI-interface1。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip binding vpn-instance l3vpna
[SwitchB-Vsi-interface1] ip address 20.1.1.1 255.255.255.0
[SwitchB-Vsi-interface1] mac-address 1-1-1
[SwitchB-Vsi-interface1] distributed-gateway local
[SwitchB-Vsi-interface1] local-proxy-arp enable
[SwitchB-Vsi-interface1] quit
# 創建VSI虛接口VSI-interface2。
[SwitchB] interface vsi-interface 2
[SwitchB-Vsi-interface2] ip binding vpn-instance l3vpna
[SwitchB-Vsi-interface2] ip address 20.1.2.1 255.255.255.0
[SwitchB-Vsi-interface2] mac-address 2-2-2
[SwitchB-Vsi-interface2] distributed-gateway local
[SwitchB-Vsi-interface2] local-proxy-arp enable
[SwitchB-Vsi-interface2] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置VPN實例l3vpna對應的L3VNI為1000。
[SwitchB] interface vsi-interface 3
[SwitchB-Vsi-interface3] ip binding vpn-instance l3vpna
[SwitchB-Vsi-interface3] l3-vni 1000
[SwitchB-Vsi-interface3] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] gateway vsi-interface 1
[SwitchB-vsi-vpna] quit
# 配置VXLAN 20所在的VSI實例和接口VSI-interface2關聯。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] gateway vsi-interface 2
[SwitchB-vsi-vpnb] quit
(4) 配置Switch C
# 開啟L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 配置BGP發布EVPN路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] peer 4.4.4.4 as-number 200
[SwitchC-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 配置L3 VNI的RD和RT。
[SwitchC] ip vpn-instance l3vpna
[SwitchC-vpn-instance-l3vpna] route-distinguisher 1:3
[SwitchC-vpn-instance-l3vpna] address-family ipv4
[SwitchC-vpn-ipv4-l3vpna] vpn-target 2:2
[SwitchC-vpn-ipv4-l3vpna] quit
[SwitchC-vpn-instance-l3vpna] address-family evpn
[SwitchC-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchC-vpn-evpn-l3vpna] quit
[SwitchC-vpn-instance-l3vpna] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置VPN實例l3vpna對應的L3VNI為1000。
[SwitchC] interface vsi-interface 3
[SwitchC-Vsi-interface3] ip binding vpn-instance l3vpna
[SwitchC-Vsi-interface3] l3-vni 1000
[SwitchC-Vsi-interface3] quit
# 配置缺省路由,下一跳為廣域網中某台設備的IP地址20.1.1.100。
[SwitchC] ip route-static vpn-instance l3vpna 0.0.0.0 0 20.1.1.100
# 將缺省路由引入到VPN實例l3vpna的BGP IPv4單播路由表中。
[SwitchC] bgp 200
[SwitchC-bgp-default] ip vpn-instance l3vpna
[SwitchC-bgp-default-l3vpna] address-family ipv4 unicast
[SwitchC-bgp-default-ipv4-l3vpna] default-route imported
[SwitchC-bgp-default-ipv4-l3vpna] import-route static
[SwitchC-bgp-default-ipv4-l3vpna] quit
[SwitchC-bgp-default-l3vpna] quit
[SwitchC-bgp-default] quit
# 配置連接廣域網的接口Vlan-interface20與VPN實例l3vpna關聯。
[SwitchC] interface vlan-interface 20
[SwitchC-Vlan-interface20] ip binding vpn-instance l3vpna
[SwitchC-Vlan-interface20] ip address 20.1.1.3 24
[SwitchC-Vlan-interface20] quit
(5) 配置Switch D
# 配置Switch D與其他交換機建立BGP連接。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp-default] group evpn
[SwitchD-bgp-default] peer 1.1.1.1 group evpn
[SwitchD-bgp-default] peer 2.2.2.2 group evpn
[SwitchD-bgp-default] peer 3.3.3.3 group evpn
[SwitchD-bgp-default] peer evpn as-number 200
[SwitchD-bgp-default] peer evpn connect-interface loopback 0
# 配置BGP發布EVPN路由,並關閉BGP EVPN路由的VPN-Target過濾功能。
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer evpn enable
[SwitchD-bgp-default-evpn] undo policy vpn-target
# 配置Switch D為路由反射器。
[SwitchD-bgp-default-evpn] peer evpn reflect-client
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
(1) 驗證分布式EVPN網關設備Switch A
# 查看Switch A上的EVPN路由信息,可以看到Switch A發送了網關的IP前綴路由、各VSI的IMET路由和MAC/IP路由,並接收到Switch B發送的網關IP前綴路由、各VSI的IMET路由和MAC/IP路由。(具體顯示信息略)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口處於up狀態。(以Tunnel1接口為例)
[SwitchA] display interface tunnel 1
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.1.1.1, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI虛接口信息,可以看到VSI虛接口處於up狀態。(以VSI虛接口1為例)
[SwitchA] display interface vsi-interface 1
Vsi-interface1
Current state: UP
Line protocol state: UP
Description: Vsi-interface1 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1500
Internet address: 10.1.1.1/24 (primary)
IP packet frame type: Ethernet II, hardware address: 0003-0003-0003
IPv6 packet frame type: Ethernet II, hardware address: 0003-0003-0003
Physical: Unknown, baudrate: 1000000 kbps
Last clearing of counters: Never
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到VSI內創建的VXLAN、與VXLAN關聯的VXLAN隧道、與VSI關聯的VSI虛接口等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: Auto_L3VNI1000_3
VSI Index : 1
VSI State : Down
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 3
VXLAN ID : 1000
Tunnel Statistics : Disabled
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000000 UP Auto Disabled
ACs:
AC Link ID State Type
XGE1/0/1 srv1000 0x0 Up Manual
VSI Name: vpnb
VSI Index : 2
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000000 UP Auto Disabled
ACs:
AC Link ID State Type
XGE1/0/1 srv2000 0x0 Up Manual
# 查看Switch A上VSI的ARP表項信息,可以看到已學習到了本地虛擬機的ARP信息。
# 以VSI實例vpna為例,查看Switch A上VSI的EVPN ARP表項信息,可以看到已學習到了本地和遠端虛擬機的ARP信息。
[SwitchA] display evpn route arp
Flags: D - Dynamic B - BGP L - Local active
G - Gateway S - Static M - Mapping I - Invalid
E - Multihoming ES sync F - Leaf
VPN instance: l3vpna Interface: Vsi-interface1
IP address MAC address Router MAC VSI index Flags
10.1.1.1 0001-0001-0001 522b-3413-0200 0 GL
10.1.1.10 521f-b814-0106 522b-3413-0200 0 DL
20.1.1.20 522b-3c6a-0406 522b-38cd-0300 0 B
(2) 驗證主機之間可以互訪
虛擬機VM 1和VM 3、VM 2和VM 4之間分別可以互訪。
本節僅以IPv4站點接入IPv4網絡為例,IPv4站點接入IPv6、IPv6站點接入IPv4網絡、IPv6站點接入IPv6網絡的配置與此類似。
Switch A、Switch B、Switch C為分布式EVPN網關設備;Switch D為RR,負責在交換機之間反射BGP路由。
虛擬機VM 1屬於VXLAN 10、位於VPN實例l3vpna;VM 2屬於VXLAN 20、位於VPN實例l3vpnb;VM 3屬於VXLAN 30、位於公網。通過EVPN分布式網關和公私網互通配置,保證VM 1和VM 2之間互通(私網之間互通),VM 2不能訪問VM 3,VM 1和VM 3之間互通(公私網互通)。
圖2-5 IPv4 EVPN公私網互通配置組網圖
(1) 配置IP地址和單播路由協議
# 在VM 1上指定網關地址為10.1.1.1;在VM 2上指定網關地址為10.1.2.1;在VM 3上指定網關地址10.1.3.1。(具體配置過程略)
# 配置各接口的IP地址和子網掩碼;在IP核心網絡內配置OSPF協議,確保交換機之間路由可達。(具體配置過程略)
(2) 配置Switch A
# 開啟L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置BGP發布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 4.4.4.4 as-number 200
[SwitchA-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 1的數據幀。
[SwitchA] interface ten-gigabitethernet 3/0/1
[SwitchA-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] encapsulation s-vid 1
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet3/0/1-srv1000] quit
# 配置L3 VNI的RD和RT。
[SwitchA] ip vpn-instance l3vpna
[SwitchA-vpn-instance-l3vpna] route-distinguisher 1:1
[SwitchA-vpn-instance-l3vpna] address-family ipv4
[SwitchA-vpn-ipv4-l3vpna] vpn-target 1:1
[SwitchA-vpn-ipv4-l3vpna] vpn-target 2:2 import-extcommunity
[SwitchA-vpn-ipv4-l3vpna] vpn-target 3:3 import-extcommunity
[SwitchA-vpn-ipv4-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] address-family evpn
[SwitchA-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchA-vpn-evpn-l3vpna] vpn-target 2:2 import-extcommunity
[SwitchA-vpn-evpn-l3vpna] vpn-target 3:3 import-extcommunity
[SwitchA-vpn-evpn-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] quit
# 配置VSI虛接口VSI-interface1。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip binding vpn-instance l3vpna
[SwitchA-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchA-Vsi-interface1] distributed-gateway local
[SwitchA-Vsi-interface1] local-proxy-arp enable
[SwitchA-Vsi-interface1] quit
# 創建VSI虛接口VSI-interface2,在該接口上配置VPN實例l3vpna對應的L3VNI為1000。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip binding vpn-instance l3vpna
[SwitchA-Vsi-interface2] l3-vni 1000
[SwitchA-Vsi-interface2] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置L3VNI為2000,用來匹配從Switch B接收的路由。
[SwitchA] interface vsi-interface 3
[SwitchA-Vsi-interface3] l3-vni 2000
[SwitchA-Vsi-interface3] quit
# 創建VSI虛接口VSI-interface4,在該接口上配置L3VNI為3000,用來匹配從Switch C接收的路由。
[SwitchA] interface vsi-interface 4
[SwitchA-Vsi-interface4] l3-vni 3000
[SwitchA-Vsi-interface4] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] gateway vsi-interface 1
[SwitchA-vsi-vpna] quit
(3) 配置Switch B
# 開啟L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] evpn encapsulation vxlan
[SwitchB-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 配置BGP發布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 4.4.4.4 as-number 200
[SwitchB-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 在接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchB] interface ten-gigabitethernet 3/0/1
[SwitchB-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpnb關聯。
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] xconnect vsi vpnb
[SwitchB-Ten-GigabitEthernet3/0/1-srv1000] quit
[SwitchB-Ten-GigabitEthernet3/0/1] quit
# 配置L3 VNI的RD和RT。
[SwitchB] ip vpn-instance l3vpnb
[SwitchB-vpn-instance-l3vpnb] route-distinguisher 2:2
[SwitchB-vpn-instance-l3vpnb] address-family ipv4
[SwitchB-vpn-ipv4-l3vpnb] vpn-target 2:2
[SwitchB-vpn-ipv4-l3vpnb] vpn-target 1:1 import-extcommunity
[SwitchB-vpn-ipv4-l3vpnb] quit
[SwitchB-vpn-instance-l3vpnb] address-family evpn
[SwitchB-vpn-evpn-l3vpnb] vpn-target 2:2
[SwitchB-vpn-evpn-l3vpnb] vpn-target 1:1 import-extcommunity
[SwitchB-vpn-evpn-l3vpnb] quit
[SwitchB-vpn-instance-l3vpnb] quit
# 配置VSI虛接口VSI-interface1。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip binding vpn-instance l3vpnb
[SwitchB-Vsi-interface1] ip address 10.1.2.1 255.255.255.0
[SwitchB-Vsi-interface1] distributed-gateway local
[SwitchB-Vsi-interface1] local-proxy-arp enable
[SwitchB-Vsi-interface1] quit
# 創建VSI虛接口VSI-interface2,在該接口上配置L3VNI為1000,用來匹配從Switch A接收的路由。
[SwitchB] interface vsi-interface 2
[SwitchB-Vsi-interface2] l3-vni 1000
[SwitchB-Vsi-interface2] qui
# 創建VSI虛接口VSI-interface3,在該接口上配置VPN實例l3vpnb對應的L3VNI為2000。
[SwitchB] interface vsi-interface 3
[SwitchB-Vsi-interface3] ip binding vpn-instance l3vpnb
[SwitchB-Vsi-interface3] l3-vni 2000
[SwitchB-Vsi-interface3] quit
# 創建VSI虛接口VSI-interface4,在該接口上配置L3VNI為3000,用來匹配從Switch C接收的路由。
[SwitchB] interface vsi-interface 4
[SwitchB-Vsi-interface4] l3-vni 3000
[SwitchB-Vsi-interface4] quit
# 配置VXLAN 20所在的VSI實例和接口VSI-interface1關聯。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] gateway vsi-interface 1
[SwitchB-vsi-vpnb] quit
(4) 配置Switch C
# 開啟L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 在VSI實例vpnc下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchC] vsi vpnc
[SwitchC-vsi-vpnc] evpn encapsulation vxlan
[SwitchC-vsi-vpnc-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpnc-evpn-vxlan] vpn-target auto
[SwitchC-vsi-vpnc-evpn-vxlan] quit
# 創建VXLAN 30。
[SwitchC-vsi-vpnc] vxlan 30
[SwitchC-vsi-vpnc-vxlan-30] quit
[SwitchC-vsi-vpnc] quit
# 配置BGP發布EVPN路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] peer 4.4.4.4 as-number 200
[SwitchC-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchC-bgp-default] address-family ipv4 unicast
[SwitchC-bgp-default-ipv4]quit
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 配置公網實例的RD和RT,配置公網實例對應的L3VNI為3000。
[SwitchC] ip public-instance
[SwitchC-public-instance] route-distinguisher 3:3
[SwitchC-public-instance] l3-vni 3000
[SwitchC-public-instance] address-family ipv4
[SwitchC-public-instance-ipv4] vpn-target 3:3
[SwitchC-public-instance-ipv4] vpn-target 1:1 import-extcommunity
[SwitchC-public-instance-ipv4] quit
[SwitchC-public-instance] address-family evpn
[SwitchC-public-instance-evpn]vpn-target 3:3
[SwitchC-public-instance-evpn] vpn-target 1:1 import-extcommunity
[SwitchC-public-instance-evpn] quit
[SwitchC-public-instance] quit
# 在接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 3的數據幀。
[SwitchC] interface ten-gigabitethernet 3/0/1
[SwitchC-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchC-Ten-GigabitEthernet3/0/1-srv1000] encapsulation s-vid 3
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchC-Ten-GigabitEthernet3/0/1-srv1000] xconnect vsi vpnc
[SwitchC-Ten-GigabitEthernet3/0/1-srv1000] quit
[SwitchC-Ten-GigabitEthernet3/0/1] quit
# 配置VSI虛接口VSI-interface1。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ip address 10.1.3.1 255.255.255.0
[SwitchC-Vsi-interface1] distributed-gateway local
[SwitchC-Vsi-interface1] local-proxy-arp enable
[SwitchC-Vsi-interface1] quit
# 創建VSI虛接口VSI-interface2,在該接口上配置L3VNI為1000,用來匹配從Switch A接收的路由。
[SwitchC] interface vsi-interface 2
[SwitchC-Vsi-interface2] l3-vni 1000
[SwitchC-Vsi-interface2] quit
# 創建VSI虛接口VSI-interface3,在該接口上配置L3VNI為2000,用來匹配從Switch B接收的路由。
[SwitchC] interface vsi-interface 3
[SwitchC-Vsi-interface3] l3-vni 2000
[SwitchC-Vsi-interface3] quit
# 創建VSI虛接口VSI-interface4,在該接口上配置公網實例對應的L3VNI為3000。
[SwitchC] interface vsi-interface 4
[SwitchC-Vsi-interface4] l3-vni 3000
[SwitchC-Vsi-interface4] quit
# 配置VXLAN 30所在的VSI實例和接口VSI-interface1關聯。
[SwitchC] vsi vpnc
[SwitchC-vsi-vpnc] gateway vsi-interface 1
[SwitchC-vsi-vpnc] quit
(5) 配置Switch D
# 配置Switch D與其他交換機建立BGP連接。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp-default] group evpn
[SwitchD-bgp-default] peer 1.1.1.1 group evpn
[SwitchD-bgp-default] peer 2.2.2.2 group evpn
[SwitchD-bgp-default] peer 3.3.3.3 group evpn
[SwitchD-bgp-default] peer evpn as-number 200
[SwitchD-bgp-default] peer evpn connect-interface loopback 0
# 配置BGP發布EVPN路由,並關閉BGP EVPN路由的VPN-Target過濾功能。
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer evpn enable
[SwitchD-bgp-default-evpn] undo policy vpn-target
# 配置Switch D為路由反射器。
[SwitchD-bgp-default-evpn] peer evpn reflect-client
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
(1) 驗證分布式EVPN網關設備Switch A
# 查看Switch A上的EVPN路由信息,可以看到Switch A發送了網關的IP前綴路由、各VSI的IMET路由、帶主機MAC的MAC路由和帶主機ARP的MAC/IP發布路由,並接收到SwitchB, SwitchC發出的網關的IP前綴路由和MAC/IP發布路由。(具體顯示信息略)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口處於up狀態。
[SwitchA] display interface tunnel
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.1.1.1, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.1.1.1, destination 3.3.3.3
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI虛接口信息,可以看到VSI虛接口處於up狀態。
[SwitchA] display interface vsi-interface brief
Brief information on interfaces in route mode:
Link: ADM - administratively down; Stby - standby
Protocol: (s) - spoofing
Interface Link Protocol Primary IP Description
Vsi1 UP UP 10.1.1.1
Vsi2 UP UP --
Vsi3 UP UP --
Vsi4 UP UP --
# 查看Switch A上的VSI信息,可以看到VSI內創建的VXLAN、與VXLAN關聯的VXLAN隧道、與VSI關聯的VSI虛接口等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: Auto_L3VNI1000_2
VSI Index : 1
VSI State : Down
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 1000
VSI Name: Auto_L3VNI2000_3
VSI Index : 2
VSI State : Down
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 3
VXLAN ID : 2000
VSI Name: Auto_L3VNI3000_4
VSI Index : 3
VSI State : Down
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 4
VXLAN ID : 3000
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
ACs:
AC Link ID State Type
XGE1/0/1 srv1000 0 Up Manual
# 查看Switch A上VSI的ARP表項信息,可以看到已學習到了本地虛擬機的ARP信息和BGP EVPN路由下一跳地址的ARP信息。
(2) 驗證主機之間互訪
VM 1和VM 2、VM 1和VM 3之間可以互訪,VM 2和VM 3不能互訪。
本節僅以IPv4站點接入IPv4網絡為例,IPv6站點接入IPv6網絡的配置與此類似。
Switch A、Switch B、Switch D為與服務器連接的VTEP設備,Switch A和Switch B通過M-LAG功能虛擬為一台VTEP設備,采用直連模式peer-link鏈路;Switch C為與廣域網連接的集中式EVPN網關設備,Switch C同時作為路由反射器在Switch A、Switch B、Switch D之間反射路由。
虛擬機VM 1和VM 2屬於VXLAN 10,VM 3屬於VXLAN 20,通過集中式EVPN網關實現VM 1、VM 2和VM 3互通。
圖2-6 IPv4 EVPN支持M-LAG配置組網圖
(1) 配置IP地址和單播路由協議
# 在VM 1和VM 2上指定網關地址為10.1.1.1;在VM 3上指定網關地址為10.1.2.1。(具體配置過程略)
# 配置各接口的IP地址和子網掩碼。(具體配置過程略)
# 在IP核心網絡內配置OSPF協議,發布各接口IP地址(包括Loopback接口的IP地址)對應網段的路由,確保交換機之間路由可達;並在OSPF鄰居兩端的接口上配置ospf peer hold-max-cost duration命令,提高M-LAG設備重啟後的回切性能。(具體配置過程略)
(2) 配置Switch A
# 開啟L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 配置peer-link鏈路上動態AC的報文匹配規則,有如下兩個方案。Switch A和Switch B上采用的方案必須相同。
¡ 方案一:采用VXLAN ID映射方式生成peer-link鏈路上動態AC的報文匹配規則。
[SwitchA] l2vpn m-lag peer-link ac-match-rule vxlan-mapping
¡ 方案二:根據用戶側以太網服務實例的報文匹配規則創建peer-link鏈路上的AC。
無需執行其他配置,默認采用該方案。
# 開啟EVPN支持M-LAG功能,並配置虛擬VTEP地址為1.2.3.4。
[SwitchA] evpn m-lag group 1.2.3.4
# 配置M-LAG係統。
[SwitchA] m-lag system-mac 0001-0001-0001
[SwitchA] m-lag system-number 1
[SwitchA] m-lag system-priority 10
[SwitchA] m-lag keepalive ip destination 60.1.1.2 source 60.1.1.1
[SwitchA] m-lag restore-delay 180
# 創建二層聚合接口3,並配置該接口為動態聚合模式。
[SwitchA] interface bridge-aggregation 3
[SwitchA-Bridge-Aggregation3] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation3] quit
# 將端口Ten-GigabitEthernet3/0/3加入到聚合組3中。
[SwitchA] interface ten-gigabitethernet 3/0/3
[SwitchA-Ten-GigabitEthernet3/0/3] port link-aggregation group 3
[SwitchA-Ten-GigabitEthernet3/0/3] quit
# 將二層聚合接口3配置為peer-link接口。
[SwitchA] interface bridge-aggregation 3
[SwitchA-Bridge-Aggregation3] port m-lag peer-link 1
[SwitchA-Bridge-Aggregation3] quit
# 配置M-LAG設備Switch A與Switch B之間路由可達。
[SwitchA] vlan 100
[SwitchA-vlan100] quit
[SwitchA] interface Vlan-interface 100
[SwitchA-Vlan-interface100] ip address 100.1.1.1 255.255.255.0
[SwitchA-Vlan-interface100] ospf 1 area 0.0.0.0
[SwitchA-Vlan-interface100] quit
# 在網絡側物理出接口Ten-GigabitEthernet3/0/5上關閉生成樹協議。
[SwitchA] interface ten-gigabitethernet 3/0/5
[SwitchA-Ten-GigabitEthernet3/0/5] undo stp enable
[SwitchA-Ten-GigabitEthernet3/0/5] quit
# 創建二層聚合接口4,並配置該接口為動態聚合模式。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation4] quit
# 將端口Ten-GigabitEthernet3/0/1加入到聚合組4中。
[SwitchA] interface ten-gigabitethernet 3/0/1
[SwitchA-Ten-GigabitEthernet3/0/1] port link-aggregation group 4
[SwitchA-Ten-GigabitEthernet3/0/1] quit
# 將二層聚合接口4加入M-LAG組4中。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] port m-lag group 4
[SwitchA-Bridge-Aggregation4] quit
# 創建二層聚合接口5,並配置該接口為動態聚合模式。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation5] quit
# 將端口Ten-GigabitEthernet3/0/2加入到聚合組5中。
[SwitchA] interface ten-gigabitethernet 3/0/2
[SwitchA-Ten-GigabitEthernet3/0/2] port link-aggregation group 5
[SwitchA-Ten-GigabitEthernet3/0/2] quit
# 將二層聚合接口5加入M-LAG組5中。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] port m-lag group 5
[SwitchA-Bridge-Aggregation5] quit
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] arp suppression enable
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置BGP發布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 3.3.3.3 as-number 200
[SwitchA-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 接入服務器的接口Bridge-Aggregation4上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] service-instance 1000
[SwitchA-Bridge-Aggregation4-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchA-Bridge-Aggregation10-srv1000] xconnect vsi vpna
[SwitchA-Bridge-Aggregation10-srv1000] quit
# 接入服務器的接口Bridge-Aggregation5上創建以太網服務實例1000,該實例用來匹配VLAN 3的數據幀。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] service-instance 1000
[SwitchA-Bridge-Aggregation5-srv1000] encapsulation s-vid 3
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchA-Bridge-Aggregation5-srv1000] xconnect vsi vpna
[SwitchA-Bridge-Aggregation5-srv1000] quit
# 將所有參與EVPN業務的接口配置為M-LAG保留接口。
[SwitchA] m-lag mad exclude interface loopback 0
[SwitchA] m-lag mad exclude interface loopback 1
[SwitchA] m-lag mad exclude interface ten-gigabitethernet 3/0/4
[SwitchA] m-lag mad exclude interface ten-gigabitethernet 3/0/5
[SwitchA] m-lag mad exclude interface vlan-interface 11
[SwitchA] m-lag mad exclude interface vlan-interface 100
(3) 配置Switch B
# 開啟L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 配置peer-link鏈路上動態AC的報文匹配規則,有如下兩個方案。Switch A和Switch B上采用的方案必須相同。
¡ 方案一:采用VXLAN ID映射方式生成peer-link鏈路上動態AC的報文匹配規則。
[SwitchB] l2vpn m-lag peer-link ac-match-rule vxlan-mapping
¡ 方案二:根據用戶側以太網服務實例的報文匹配規則創建peer-link鏈路上的AC。
無需執行其他配置,默認采用該方案。
# 開啟EVPN支持M-LAG功能,並配置虛擬VTEP地址為1.2.3.4。
[SwitchB] evpn m-lag group 1.2.3.4
# 配置M-LAG係統。
[SwitchB] m-lag system-mac 0001-0001-0001
[SwitchB] m-lag system-number 2
[SwitchB] m-lag system-priority 10
[SwitchB] m-lag keepalive ip destination 60.1.1.1 source 60.1.1.2
[SwitchB] m-lag restore-delay 180
# 創建二層聚合接口3,並配置該接口為動態聚合模式。
[SwitchB] interface bridge-aggregation 3
[SwitchB-Bridge-Aggregation3] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation3] quit
# 將端口Ten-GigabitEthernet3/0/3加入到聚合組3中。
[SwitchB] interface ten-gigabitethernet 3/0/3
[SwitchB-Ten-GigabitEthernet3/0/3] port link-aggregation group 3
[SwitchB-Ten-GigabitEthernet3/0/3] quit
# 將二層聚合接口3配置為peer-link接口。
[SwitchB] interface bridge-aggregation 3
[SwitchB-Bridge-Aggregation3] port m-lag peer-link 1
[SwitchB-Bridge-Aggregation3] quit
# 配置M-LAG設備Switch A與Switch B之間路由可達。
[SwitchB] vlan 100
[SwitchB-vlan100] quit
[SwitchB] interface Vlan-interface 100
[SwitchB-Vlan-interface100] ip address 100.1.1.2 255.255.255.0
[SwitchB-Vlan-interface100] ospf 1 area 0.0.0.0
[SwitchB-Vlan-interface100] quit
# 在網絡側物理出接口Ten-GigabitEthernet3/0/5上關閉生成樹協議。
[SwitchB] interface ten-gigabitethernet 3/0/5
[SwitchB-Ten-GigabitEthernet3/0/5] undo stp enable
[SwitchB-Ten-GigabitEthernet3/0/5] quit
# 創建二層聚合接口4,並配置該接口為動態聚合模式。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation4] quit
# 將端口Ten-GigabitEthernet3/0/1加入到聚合組4中。
[SwitchB] interface ten-gigabitethernet 3/0/1
[SwitchB-Ten-GigabitEthernet3/0/1] port link-aggregation group 4
[SwitchB-Ten-GigabitEthernet3/0/1] quit
# 將二層聚合接口4加入M-LAG組4中。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] port m-lag group 4
[SwitchB-Bridge-Aggregation4] quit
# 創建二層聚合接口5,並配置該接口為動態聚合模式。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation5] quit
# 將端口Ten-GigabitEthernet3/0/2加入到聚合組5中。
[SwitchB] interface ten-gigabitethernet 3/0/2
[SwitchB-Ten-GigabitEthernet3/0/2] port link-aggregation group 5
[SwitchB-Ten-GigabitEthernet3/0/2] quit
# 將二層聚合接口5加入M-LAG組5中。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] port m-lag group 5
[SwitchB-Bridge-Aggregation5] quit
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] arp suppression enable
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 配置BGP發布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 3.3.3.3 as-number 200
[SwitchB-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 接入服務器的接口Bridge-Aggregation4上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] service-instance 1000
[SwitchB-Bridge-Aggregation4-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchB-Bridge-Aggregation10-srv1000] xconnect vsi vpna
[SwitchB-Bridge-Aggregation10-srv1000] quit
# 接入服務器的接口Bridge-Aggregation5上創建以太網服務實例1000,該實例用來匹配VLAN 3的數據幀。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] service-instance 1000
[SwitchB-Bridge-Aggregation5-srv1000] encapsulation s-vid 3
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchB-Bridge-Aggregation5-srv1000] xconnect vsi vpna
[SwitchB-Bridge-Aggregation5-srv1000] quit
# 將所有參與EVPN業務的接口配置為M-LAG保留接口。
[SwitchB] m-lag mad exclude interface loopback 0
[SwitchB] m-lag mad exclude interface loopback 1
[SwitchB] m-lag mad exclude interface ten-gigabitethernet 3/0/4
[SwitchB] m-lag mad exclude interface ten-gigabitethernet 3/0/5
[SwitchB] m-lag mad exclude interface vlan-interface 12
[SwitchB] m-lag mad exclude interface vlan-interface 100
(4) 配置Switch C
# 開啟L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 關閉遠端MAC地址自動學習功能。
[SwitchC] vxlan tunnel mac-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] evpn encapsulation vxlan
[SwitchC-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchC-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] evpn encapsulation vxlan
[SwitchC-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchC-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchC-vsi-vpnb] vxlan 20
[SwitchC-vsi-vpnb-vxlan-20] quit
[SwitchC-vsi-vpnb] quit
# 配置BGP發布EVPN路由,並作為路由反射器反射路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] group evpn
[SwitchC-bgp-default] peer 1.1.1.1 group evpn
[SwitchC-bgp-default] peer 2.2.2.2 group evpn
[SwitchC-bgp-default] peer 4.4.4.4 group evpn
[SwitchC-bgp-default] peer evpn as-number 200
[SwitchC-bgp-default] peer evpn connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer evpn enable
[SwitchC-bgp-default-evpn] undo policy vpn-target
[SwitchC-bgp-default-evpn] peer evpn reflect-client
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 創建VSI虛接口VSI-interface1,並為其配置IP地址,該IP地址作為VXLAN 10內虛擬機的網關地址。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchC-Vsi-interface1] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] gateway vsi-interface 1
[SwitchC-vsi-vpna] quit
# 創建VSI虛接口VSI-interface2,並為其配置IP地址,該IP地址作為VXLAN 20內虛擬機的網關地址。
[SwitchC] interface vsi-interface 2
[SwitchC-Vsi-interface2] ip address 10.1.2.1 255.255.255.0
[SwitchC-Vsi-interface2] quit
# 配置VXLAN 20所在的VSI實例和接口VSI-interface1關聯。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] gateway vsi-interface 2
[SwitchC-vsi-vpnb] quit
(5) 配置Switch D
# 開啟L2VPN能力。
<SwitchD> system-view
[SwitchD] l2vpn enable
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchD] vsi vpnb
[SwitchD-vsi-vpnb] arp suppression enable
[SwitchD-vsi-vpnb] evpn encapsulation vxlan
[SwitchD-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchD-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchD-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchD-vsi-vpnb] vxlan 20
[SwitchD-vsi-vpnb-vxlan-20] quit
[SwitchD-vsi-vpnb] quit
# 配置BGP發布EVPN路由。
[SwitchD] bgp 200
[SwitchD-bgp-default] peer 3.3.3.3 as-number 200
[SwitchD-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
# 接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 4的數據幀。
[SwitchD] interface ten-gigabitethernet 3/0/1
[SwitchD-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchD-Ten-GigabitEthernet3/0/1] encapsulation s-vid 4
# 配置以太網服務實例1000與VSI實例vpnb關聯。
[SwitchD-Ten-GigabitEthernet3/0/1] xconnect vsi vpnb
[SwitchD-Ten-GigabitEthernet3/0/1] quit
(1) 驗證EVPN網關設備Switch C
# 查看Switch C上的EVPN路由信息,可以看到Switch C發送了網關的MAC/IP路由和IMET路由,並接收到Switch A、Switch B和Switch D發送的MAC/IP路由和IMET路由。(具體顯示信息略)
# 查看Switch C上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口處於up狀態,並且隧道目的地址是虛擬VTEP地址。
[SwitchC] display interface tunnel
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 1.2.3.4
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch C上的VSI信息,可以看到VSI內創建的VXLAN、與VXLAN關聯的VXLAN隧道、與VSI關聯的VSI虛接口等信息。
[SwitchC] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000000 UP Auto Disabled
VSI Name: vpnb
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel2 0x5000001 UP Auto Disabled
(2) 以Switch A為例,驗證M-LAG設備
# 查看Switch A上的EVPN路由信息。
[SwitchA] display bgp l2vpn evpn
BGP local router ID is 1.2.3.4
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of routes from all PEs: 5
Route distinguisher: 1:100
Total number of routes: 5
* > Network : [2][0][48][0800-2700-400e][0][0.0.0.0]/104
NextHop : 1.2.3.4 LocPrf : 100
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: i
* >i Network : [2][0][48][46b2-aea0-0101][0][0.0.0.0]/104
NextHop : 3.3.3.3 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: i
* > Network : [2][0][48][ac1e-24e3-0201][0][0.0.0.0]/104
NextHop : 3.3.3.3 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: i
* >i Network : [3][0][32][1.2.3.4]/80
NextHop : 1.2.3.4 LocPrf : 100
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: i
* >i Network : [3][0][32][3.3.3.3]/80
NextHop : 3.3.3.3 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: i
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口處於up狀態,並且隧道源地址是虛擬VTEP地址。
[SwitchA] display interface tunnel
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.2.3.4, destination 3.3.3.3
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到設備自動在peer-link鏈路上創建了AC,並將其與VSI關聯。
¡ 采用VXLAN ID映射方式生成peer-link鏈路上動態AC的報文匹配規則:
[SwitchA] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000000 UP Auto Disabled
ACs:
AC Link ID State Type
BAGG3 srv1 0 Up Dynamic (M-LAG)
BAGG4 srv1000 1 Up Manual
BAGG5 srv1000 2 Up Manual
¡ 根據用戶側以太網服務實例的報文匹配規則創建peer-link鏈路上的AC:
[SwitchA] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000000 UP Auto Disabled
ACs:
AC Link ID State Type
BAGG4 srv1000 0 Up Manual
BAGG3 srv2 1 Up Dynamic (M-LAG)
BAGG5 srv1000 2 Up Manual
BAGG3 srv3 3 Up Dynamic (M-LAG)
(3) 驗證主機之間可以互訪
虛擬機VM 1、VM 2和VM 3之間可以互訪。虛擬機與Switch A或Switch B相連的鏈路斷開後,VM 1、VM 2和VM 3仍然可以通過另一台設備互訪。
本節僅以IPv4站點接入IPv4網絡為例,IPv6站點接入IPv6網絡的配置與此類似。
Switch A、Switch B、Switch D為與服務器連接的VTEP設備,Switch A和Switch B通過M-LAG功能虛擬為一台VTEP設備,采用隧道模式peer-link鏈路。在Switch A和Switch B上配置Monitor Link組。把所有上行口配置為Up-Link,所有下行M-LAG接口配置為Down-Link,通過Monitor Link實現上下行接口聯動,以便及時發現上行接口故障,並在M-LAG設備之間進行主從切換。
Switch C為與廣域網連接的集中式EVPN網關設備,Switch C同時作為路由反射器在Switch A、Switch B、Switch D之間反射路由。
虛擬機VM 1和VM 2屬於VXLAN 10,VM 3屬於VXLAN 20,通過集中式EVPN網關實現VM 1、VM 2和VM 3互通。
圖2-7 IPv4 EVPN支持M-LAG配置組網圖
(1) 配置IP地址和單播路由協議
# 在VM 1和VM 2上指定網關地址為10.1.1.1;在VM 3上指定網關地址為10.1.2.1。(具體配置過程略)
# 配置各接口的IP地址和子網掩碼。(具體配置過程略)
# 在IP核心網絡內配置OSPF協議,發布各接口IP地址(包括Loopback接口的IP地址)對應網段的路由,確保交換機之間路由可達;並在OSPF鄰居兩端的接口上配置ospf peer hold-max-cost duration命令,提高M-LAG設備重啟後的回切性能。(具體配置過程略)
(2) 配置Switch A
# 開啟L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 開啟EVPN支持M-LAG功能,並配置虛擬VTEP地址為1.2.3.4。
[SwitchA] evpn m-lag group 1.2.3.4
# 配置預留VXLAN ID為1234。
[SwitchA] reserved vxlan 1234
# 配置M-LAG係統。
[SwitchA] m-lag system-mac 0001-0001-0001
[SwitchA] m-lag system-number 1
[SwitchA] m-lag system-priority 10
[SwitchA] m-lag restore-delay 180
# 在Switch A和Switch B之間手工創建VXLAN隧道Tunnel2,並配置封裝後隧道報文的ToS值為100。
[SwitchA] interface tunnel 2 mode vxlan
[SwitchA-Tunnel2] source 1.1.1.1
[SwitchA-Tunnel2] destination 2.2.2.2
[SwitchA-Tunnel2] tunnel tos 100
[SwitchA-Tunnel2] quit
# 將VXLAN隧道接口配置M-LAG保留接口。
[SwitchA] m-lag mad exclude interface tunnel 2
# 配置VXLAN隧道接口為peer-link接口。
[SwitchA] interface tunnel 2
[SwitchA-Tunnel2] port m-lag peer-link 1
[SwitchA-Tunnel2] quit
# 在網絡側物理出接口Ten-GigabitEthernet3/0/4上關閉生成樹協議。
[SwitchA] interface ten-gigabitethernet 3/0/4
[SwitchA-Ten-GigabitEthernet3/0/4] undo stp enable
[SwitchA-Ten-GigabitEthernet3/0/4] quit
# 創建二層聚合接口4,並配置該接口為動態聚合模式。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation4] quit
# 將端口Ten-GigabitEthernet3/0/1加入到聚合組4中。
[SwitchA] interface ten-gigabitethernet 3/0/1
[SwitchA-Ten-GigabitEthernet3/0/1] port link-aggregation group 4
[SwitchA-Ten-GigabitEthernet3/0/1] quit
# 將二層聚合接口4加入M-LAG組4中。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] port m-lag group 4
[SwitchA-Bridge-Aggregation4] quit
# 創建二層聚合接口5,並配置該接口為動態聚合模式。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation5] quit
# 將端口Ten-GigabitEthernet3/0/2加入到聚合組5中。
[SwitchA] interface ten-gigabitethernet 3/0/2
[SwitchA-Ten-GigabitEthernet3/0/2] port link-aggregation group 5
[SwitchA-Ten-GigabitEthernet3/0/2] quit
# 將二層聚合接口5加入M-LAG組5中。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] port m-lag group 5
[SwitchA-Bridge-Aggregation5] quit
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] arp suppression enable
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置BGP發布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 3.3.3.3 as-number 200
[SwitchA-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 接入服務器的接口Bridge-Aggregation4上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] service-instance 1000
[SwitchA-Bridge-Aggregation4-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchA-Bridge-Aggregation10-srv1000] xconnect vsi vpna
[SwitchA-Bridge-Aggregation10-srv1000] quit
# 接入服務器的接口Bridge-Aggregation5上創建以太網服務實例1000,該實例用來匹配VLAN 3的數據幀。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] service-instance 1000
[SwitchA-Bridge-Aggregation5-srv1000] encapsulation s-vid 3
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchA-Bridge-Aggregation5-srv1000] xconnect vsi vpna
[SwitchA-Bridge-Aggregation5-srv1000] quit
# 創建Monitor Link組1,添加上行和下行接口,以便在上下行接口之間形成聯動。
[SwitchA] monitor-link group 1
[SwitchA-mtlk-group1] port ten-gigabitethernet 3/0/1 downlink
[SwitchA-mtlk-group1] port ten-gigabitethernet 3/0/2 downlink
[SwitchA-mtlk-group1] port ten-gigabitethernet 3/0/4 uplink
[SwitchA-mtlk-group1] quit
# 將所有參與EVPN業務的接口配置為M-LAG保留接口。
[SwitchA] m-lag mad exclude interface loopback 0
[SwitchA] m-lag mad exclude interface loopback 1
[SwitchA] m-lag mad exclude interface ten-gigabitethernet 3/0/4
[SwitchA] m-lag mad exclude interface vlan-interface 11
(3) 配置Switch B
# 開啟L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 關閉遠端MAC地址和遠端ARP自動學習功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 開啟EVPN的M-LAG模式,並配置虛擬VTEP地址為1.2.3.4。
[SwitchB] evpn m-lag group 1.2.3.4
# 配置預留VXLAN ID為1234。
[SwitchB] reserved vxlan 1234
# 配置M-LAG係統。
[SwitchB] m-lag system-mac 0001-0001-0001
[SwitchB] m-lag system-number 2
[SwitchB] m-lag system-priority 10
[SwitchB] m-lag restore-delay 180
# 在Switch A和Switch B之間手工創建VXLAN隧道Tunnel2,並配置封裝後隧道報文的ToS值為100。
[SwitchB] interface tunnel 2 mode vxlan
[SwitchB-Tunnel2] source 2.2.2.2
[SwitchB-Tunnel2] destination 1.1.1.1
[SwitchB-Tunnel2] tunnel tos 100
[SwitchB-Tunnel2] quit
# 將VXLAN隧道接口配置M-LAG保留接口。
[SwitchB] m-lag mad exclude interface tunnel 2
# 配置VXLAN隧道接口為peer-link接口。
[SwitchB] interface tunnel 2
[SwitchB-Tunnel2] port m-lag peer-link 1
[SwitchB-Tunnel2] quit
# 在網絡側物理出接口Ten-GigabitEthernet3/0/4上關閉生成樹協議。
[SwitchB] interface ten-gigabitethernet 3/0/4
[SwitchB-Ten-GigabitEthernet3/0/4] undo stp enable
[SwitchB-Ten-GigabitEthernet3/0/4] quit
# 創建二層聚合接口4,並配置該接口為動態聚合模式。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation4] quit
# 將端口Ten-GigabitEthernet3/0/1加入到聚合組4中。
[SwitchB] interface ten-gigabitethernet 3/0/1
[SwitchB-Ten-GigabitEthernet3/0/1] port link-aggregation group 4
[SwitchB-Ten-GigabitEthernet3/0/1] quit
# 將二層聚合接口4加入M-LAG組4中。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] port m-lag group 4
[SwitchB-Bridge-Aggregation4] quit
# 創建二層聚合接口5,並配置該接口為動態聚合模式。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation5] quit
# 將端口Ten-GigabitEthernet3/0/2加入到聚合組5中。
[SwitchB] interface ten-gigabitethernet 3/0/2
[SwitchB-Ten-GigabitEthernet3/0/2] port link-aggregation group 5
[SwitchB-Ten-GigabitEthernet3/0/2] quit
# 將二層聚合接口5加入M-LAG組5中。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] port m-lag group 5
[SwitchB-Bridge-Aggregation5] quit
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] arp suppression enable
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 配置BGP發布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 3.3.3.3 as-number 200
[SwitchB-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 接入服務器的接口Bridge-Aggregation4上創建以太網服務實例1000,該實例用來匹配VLAN 2的數據幀。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] service-instance 1000
[SwitchB-Bridge-Aggregation4-srv1000] encapsulation s-vid 2
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchB-Bridge-Aggregation10-srv1000] xconnect vsi vpna
[SwitchB-Bridge-Aggregation10-srv1000] quit
# 接入服務器的接口Bridge-Aggregation5上創建以太網服務實例1000,該實例用來匹配VLAN 3的數據幀。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] service-instance 1000
[SwitchB-Bridge-Aggregation5-srv1000] encapsulation s-vid 3
# 配置以太網服務實例1000與VSI實例vpna關聯。
[SwitchB-Bridge-Aggregation5-srv1000] xconnect vsi vpna
[SwitchB-Bridge-Aggregation5-srv1000] quit
# 創建Monitor Link組1,添加上行和下行接口,以便在上下行接口之間形成聯動。
[SwitchB] monitor-link group 1
[SwitchB-mtlk-group1] port ten-gigabitethernet 3/0/1 downlink
[SwitchB-mtlk-group1] port ten-gigabitethernet 3/0/2 downlink
[SwitchB-mtlk-group1] port ten-gigabitethernet 3/0/4 uplink
[SwitchB-mtlk-group1] quit
# 將所有參與EVPN業務的接口配置為M-LAG保留接口。
[SwitchB] m-lag mad exclude interface loopback 0
[SwitchB] m-lag mad exclude interface loopback 1
[SwitchB] m-lag mad exclude interface ten-gigabitethernet 3/0/4
[SwitchB] m-lag mad exclude interface vlan-interface 12
(4) 配置Switch C
# 開啟L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 關閉遠端MAC地址自動學習功能。
[SwitchC] vxlan tunnel mac-learning disable
# 在VSI實例vpna下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] evpn encapsulation vxlan
[SwitchC-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchC-vsi-vpna-evpn-vxlan] quit
# 創建VXLAN 10。
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] evpn encapsulation vxlan
[SwitchC-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchC-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchC-vsi-vpnb] vxlan 20
[SwitchC-vsi-vpnb-vxlan-20] quit
[SwitchC-vsi-vpnb] quit
# 配置BGP發布EVPN路由,並作為路由反射器反射路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] group evpn
[SwitchC-bgp-default] peer 1.1.1.1 group evpn
[SwitchC-bgp-default] peer 2.2.2.2 group evpn
[SwitchC-bgp-default] peer 4.4.4.4 group evpn
[SwitchC-bgp-default] peer evpn as-number 200
[SwitchC-bgp-default] peer evpn connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer evpn enable
[SwitchC-bgp-default-evpn] undo policy vpn-target
[SwitchC-bgp-default-evpn] peer evpn reflect-client
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 創建VSI虛接口VSI-interface1,並為其配置IP地址,該IP地址作為VXLAN 10內虛擬機的網關地址。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchC-Vsi-interface1] quit
# 配置VXLAN 10所在的VSI實例和接口VSI-interface1關聯。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] gateway vsi-interface 1
[SwitchC-vsi-vpna] quit
# 創建VSI虛接口VSI-interface2,並為其配置IP地址,該IP地址作為VXLAN 20內虛擬機的網關地址。
[SwitchC] interface vsi-interface 2
[SwitchC-Vsi-interface2] ip address 10.1.2.1 255.255.255.0
[SwitchC-Vsi-interface2] quit
# 配置VXLAN 20所在的VSI實例和接口VSI-interface1關聯。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] gateway vsi-interface 2
[SwitchC-vsi-vpnb] quit
(5) 配置Switch D
# 開啟L2VPN能力。
<SwitchD> system-view
[SwitchD] l2vpn enable
# 在VSI實例vpnb下創建EVPN實例,並配置自動生成EVPN實例的RD和RT。
[SwitchD] vsi vpnb
[SwitchD-vsi-vpnb] arp suppression enable
[SwitchD-vsi-vpnb] evpn encapsulation vxlan
[SwitchD-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchD-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchD-vsi-vpnb-evpn-vxlan] quit
# 創建VXLAN 20。
[SwitchD-vsi-vpnb] vxlan 20
[SwitchD-vsi-vpnb-vxlan-20] quit
[SwitchD-vsi-vpnb] quit
# 配置BGP發布EVPN路由。
[SwitchD] bgp 200
[SwitchD-bgp-default] peer 3.3.3.3 as-number 200
[SwitchD-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
# 接入服務器的接口Ten-GigabitEthernet3/0/1上創建以太網服務實例1000,該實例用來匹配VLAN 4的數據幀。
[SwitchD] interface ten-gigabitethernet 3/0/1
[SwitchD-Ten-GigabitEthernet3/0/1] service-instance 1000
[SwitchD-Ten-GigabitEthernet3/0/1] encapsulation s-vid 4
# 配置以太網服務實例1000與VSI實例vpnb關聯。
[SwitchD-Ten-GigabitEthernet3/0/1] xconnect vsi vpnb
[SwitchD-Ten-GigabitEthernet3/0/1] quit
(1) 驗證EVPN網關設備Switch C
# 查看Switch C上的EVPN路由信息,可以看到Switch C發送了網關的MAC/IP路由和IMET路由,並接收到Switch A、Switch B和Switch D發送的MAC/IP路由和IMET路由。(具體顯示信息略)
# 查看Switch C上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口處於up狀態,並與虛擬VTEP地址建立VXLAN隧道。
[SwitchC] display interface tunnel
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 4.4.4.4
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 1.1.1.1
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
Tunnel3
Current state: UP
Line protocol state: UP
Description: Tunnel3 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 1.2.3.4
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
Tunnel4
Current state: UP
Line protocol state: UP
Description: Tunnel4 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch C上的VSI信息,可以看到VSI內創建的VXLAN、與VXLAN關聯的VXLAN隧道、與VSI關聯的VSI虛接口等信息。
[SwitchC] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel2 0x5000001 UP Auto Disabled
Tunnel3 0x5000002 UP Auto Disabled
Tunnel4 0x5000003 UP Auto Disabled
VSI Name: vpnb
VSI Index : 1
VSI State : Up
MTU : 1500
...
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000000 UP Auto Disabled
(2) 以Switch A為例,驗證M-LAG設備
# 查看Switch A上的EVPN路由信息。
[SwitchA] display bgp l2vpn evpn
BGP local router ID is 1.2.3.4
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of routes from all PEs: 3
Route distinguisher: 1:10
Total number of routes: 5
* >i Network : [2][0][48][7e9a-48e9-0100][32][10.1.1.1]/136
NextHop : 3.3.3.3 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: i
* > Network : [3][0][32][1.1.1.1]/80
NextHop : 1.1.1.1 LocPrf : 100
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: i
* > Network : [3][0][32][1.2.3.4]/80
NextHop : 1.2.3.4 LocPrf : 100
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: i
* >i Network : [3][0][32][3.3.3.3]/80
NextHop : 3.3.3.3 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: i
* >i Network : [3][0][32][2.2.2.2]/80
NextHop : 2.2.2.2 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: i
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口處於up狀態,並且隧道源地址是虛擬VTEP地址。
[SwitchA] display interface tunnel
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.2.3.4, destination 3.3.3.3
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.1.1.1, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到作為peer-link鏈路的VXLAN隧道與VSI關聯。
[SwitchA] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000000 UP Auto Disabled
Tunnel2 0x5000001 UP Manual Disabled
ACs:
AC Link ID State Type
BAGG4 srv1000 0 Down Manual
BAGG5 srv1000 1 Down Manual
(3) 驗證主機之間可以互訪
虛擬機VM 1、VM 2和VM 3之間可以互訪。虛擬機與Switch A或Switch B相連的鏈路斷開後,VM 1、VM 2和VM 3仍然可以通過另一台設備互訪。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!