https://support.huawei.com/enterprise/zh/doc/EDOC1100023543?section=j018
在VXLAN網絡中,同子網虛擬機的互通是通過查找MAC表進行轉發。如下圖所示,VM1給VM2發送報文時,經過VTEP1轉發,VTEP1上需要學習到VM2的MAC地址。
最初的VXLAN標准並沒有定義控制平面,VTEP之間無法傳遞學習到的主機MAC地址。但是VXLAN有着與傳統以太網非常相似的MAC學習機制,當VTEP接收到VXLAN報文后,會記錄源VTEP的IP、虛擬機MAC和VNI到本地MAC表中,這樣當VTEP接收到目的MAC為此虛擬機的MAC時,就可以進行VXLAN封裝並轉發。

以VTEP2學習到VM1的MAC過程為例:
- VM1發送目的地址為VM2的報文。
- VTEP1接收到報文后,進行VXLAN封裝,並將其轉發至VTEP2。同時,VTEP1可以學習到VM1的MAC地址、VNI、入接口。
- VTEP2接收到報文后,對報文進行解封裝。同時,VTEP2可以學習到VM1的MAC地址、VNI、入接口(為VTEP1)。
經過上述流程,VTEP1和VTEP2可以學習到VM1的MAC地址。VTEP1和VTEP2學習到VM2的MAC地址過程與之類似。
BUM報文轉發
前面描述的報文轉發過程都是已知單播報文轉發,如果VTEP收到一個未知地址的BUM報文(廣播、組播、未知單播)如何處理呢。與傳統以太網BUM報文轉發類似,VTEP會通過泛洪的方式轉發流量。

以上圖中VM1想向VM2發送報文為例,因為VM1不知道VM2的MAC地址,所以會發送ARP廣播報文請求VM2的MAC地址。
- VM1發送ARP廣播請求,請求VM2的MAC地址。
- VTEP1收到ARP請求后,因為是廣播報文,VTEP1會在該VNI內查找所有的隧道列表,依據獲取的隧道列表進行報文封裝后,向所有隧道發送報文,從而將報文轉發至同子網的VTEP2和VTEP3。
- VTEP2和VTEP3接收到報文后,進行解封裝,得到VM1發送的原始ARP報文,然后轉發至VM2和VM3。
- VM2和VM3接收到ARP請求后,比較報文中的目的IP地址是否為本機的IP地址。VM3發現目的IP不是本機IP,故將報文丟棄;VM2發現目的IP是本機IP,則對ARP請求做出應答。
由於此時VM2上已經學習到了VM1的MAC地址,所以ARP應答報文為已知單播報文,轉發流程與前文描述的一致,此處不在贅述。
- VM1收到VM2的ARP應答后,就可以學習到VM2的MAC地址。后續的轉發流程同已知單播轉發流程一致。
VXLAN網關部署
與不同VLAN需要通過三層網關互通一樣,VXLAN中不同VNI的互通也需要有三層網關。
在典型的“Spine-Leaf”VXLAN組網結構下,根據三層網關的部署位置不同,VXLAN三層網關可以分為集中式網關和分布式網關。
集中式網關部署
集中式網關是指將三層網關集中部署在Spine設備上,如下圖所示,所有跨子網的流量都經過三層網關進行轉發,實現流量的集中管理。
圖7-7 集中式網關組網示意圖集中式網關部署方式可以對跨子網流量進行集中管理,網關的部署和管理比較簡單,但是因為同Leaf下跨子網流量也需要經過Spine轉發,所以流量轉發路徑不是最優。同時,所有通過三層轉發的終端租戶的表項都需要在Spine上生成。但是,Spine的表項規格有限,當終端租戶的數量越來越多時,容易成為網絡瓶頸。
分布式網關部署
VXLAN分布式網關是將Leaf節點作為VXLAN隧道端點VTEP,每個Leaf節點都可作為VXLAN三層網關,Spine節點不感知VXLAN隧道,只作為VXLAN報文的轉發節點。
圖7-8 分布式網關組網示意圖在Leaf上部署VXLAN三層網關,即可實現同Leaf下跨子網通信。此時,流量只需要在Leaf節點進行轉發,不再需要經過Spine節點,從而節約了大量的帶寬資源。同時,Leaf節點只需要學習自身連接虛擬機的ARP表項,而不必像集中三層網關一樣,需要學習所有虛擬機的ARP表項,解決了集中式三層網關帶來的ARP表項瓶頸問題,網絡規模擴展能力強。
對於分布式網關場景,因為需要在三層網關間傳遞主機路由才能保證虛擬機間互通,所以需要有控制平面來進行路由的傳遞。下一章節就是描述EVPN作為控制平面技術在VXLAN網絡里的應用。