本申請涉及通信技術(shù)領(lǐng)域,特別涉及一種VXLAN組播方法和裝置。
背景技術(shù):
隨著云計算的快速發(fā)展,數(shù)據(jù)中心的虛擬化程度越來越高,對物理網(wǎng)絡(luò)的要求也越來越苛刻,比如TOR交換機需要支持大規(guī)格MAC地址表;4094個VLAN(Virtual Local Area Network,虛擬局域網(wǎng))無法劃分海量虛擬機;需要支持多租戶的網(wǎng)絡(luò)隔離等。正是這些需求使得疊加網(wǎng)絡(luò)技術(shù)VXLAN(Virtual Extensible Local Area Network,虛擬可擴展局域網(wǎng))應運而生。
在實際應用中,加入組播組的VTEP(VXLAN Tunneling End Point,VXLAN隧道終端)設(shè)備在接收到VM(Virtual Machine,虛擬機)發(fā)送的ARP(Address Resolution Protocol,地址解析協(xié)議)請求報文后,會將該ARP請求報文發(fā)送至連接組播組各VTEP設(shè)備的核心設(shè)備,以由核心設(shè)備復制該ARP請求報文,并轉(zhuǎn)發(fā)該ARP請求報文至遠端VTEP設(shè)備。當本端VM需要與大量遠端VM通信時,首報文都進行泛洪,核心設(shè)備的工作量過大,影響轉(zhuǎn)發(fā)性能。
技術(shù)實現(xiàn)要素:
有鑒于此,本申請?zhí)峁┮环NVXLAN組播方法和裝置,用以解決現(xiàn)有技術(shù)中,在多臺VTEP設(shè)備加入組播組,VXLAN網(wǎng)絡(luò)出現(xiàn)大量進行泛洪的首報文時,造成核心設(shè)備的工作量過大,影響轉(zhuǎn)發(fā)性能的問題。
具體地,本申請是通過如下技術(shù)方案實現(xiàn)的:
一種VXLAN組播方法,應用于發(fā)送端VTEP設(shè)備,包括:
當配置在所述發(fā)送端VTEP設(shè)備的目標VXLAN加入預設(shè)的組播組后,向所述組播組內(nèi)的各遠端VTEP設(shè)備發(fā)送封裝VXLAN報文頭的控制報文,以由各遠端VTEP設(shè)備保存該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系,并返回封裝VXLAN報文頭的ACK報文;
接收到各遠端VTEP設(shè)備返回的封裝VXLAN報文頭的所述ACK報文后,保存VXLAN報文頭中攜帶的所述目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系;
當接收到來自所述目標VXLAN的用戶側(cè)BUM報文后,根據(jù)已保存的該目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系,將所述BUM報文基于頭端復制模式發(fā)送至所述組播組內(nèi)的各遠端VTEP設(shè)備。
在所述VXLAN組播方法中,還包括:
當所述目標VXLAN離開所述組播組時,向所述組播組內(nèi)的各遠端VTEP設(shè)備發(fā)送封裝VXLAN報文頭的控制報文,以由各遠端VTEP設(shè)備刪除該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系,并返回封裝VXLAN報文頭的ACK報文;
接收到各遠端VTEP設(shè)備返回的封裝VXLAN報文頭的所述ACK報文后,刪除該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系。
在所述VXLAN組播方法中,所述將所述BUM報文基于頭端復制模式發(fā)送至所述組播組內(nèi)的各遠端VTEP設(shè)備,包括:
啟用組播發(fā)送的頭端復制模式,根據(jù)已保存的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系,為所述組播組內(nèi)的各遠端VTEP設(shè)備分別復制BUM報文;
將為所述組播組內(nèi)各遠端VTEP設(shè)備復制的所述BUM報文分別封裝VXLAN報文頭,并單播發(fā)送至各遠端VTEP設(shè)備。
在所述VXLAN組播方法中,還包括:
接收到配置在所述遠端VTEP設(shè)備的所述目標VXLAN加入所述組播組后所述遠端VTEP設(shè)備發(fā)送的封裝VXLAN報文頭的控制報文后,保存所述控制報文的VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述遠端VTEP設(shè)備的IP地址的映射關(guān)系;
發(fā)送封裝VXLAN報文頭的ACK報文至所述遠端VTEP設(shè)備,以由所述遠端VTEP設(shè)備在接收到封裝VXLAN報文頭的ACK報文后,保存VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系,并在接收到BUM報文后,根據(jù)該映射關(guān)系發(fā)送封裝VXLAN報文頭的BUM報文至所述發(fā)送端VTEP設(shè)備。
在所述VXLAN組播方法中,還包括:
接收到配置在所述遠端VTEP設(shè)備的所述目標VXLAN離開所述組播組后所述遠端VTEP設(shè)備發(fā)送的封裝VXLAN報文頭的控制報文后,刪除該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述遠端VTEP設(shè)備的IP地址的映射關(guān)系;
發(fā)送封裝VXLAN報文頭的ACK報文至所述遠端VTEP設(shè)備,以由所述遠端VTEP設(shè)備在接收到封裝VXLAN報文頭的ACK報文后,刪除該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系。
一種VXLAN組播裝置,應用于發(fā)送端VTEP設(shè)備,包括:
發(fā)送單元,用于當配置在所述發(fā)送端VTEP設(shè)備的目標VXLAN加入預設(shè)的組播組后,向所述組播組內(nèi)的各遠端VTEP設(shè)備發(fā)送封裝VXLAN報文頭的控制報文,以由各遠端VTEP設(shè)備保存該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系,并返回封裝VXLAN報文頭的ACK報文;
接收單元,用于接收到各遠端VTEP設(shè)備返回的封裝VXLAN報文頭的所述ACK報文后,保存VXLAN報文頭中攜帶的所述目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系;
所述發(fā)送單元,進一步用于當接收到來自所述目標VXLAN的用戶側(cè)BUM報文后,根據(jù)已保存的該目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系,將所述BUM報文基于頭端復制模式發(fā)送至所述組播組內(nèi)的各遠端VTEP設(shè)備。
在所述VXLAN組播裝置中,還包括:
所述發(fā)送單元,進一步用于當所述目標VXLAN離開所述組播組時,向所述組播組內(nèi)的各遠端VTEP設(shè)備發(fā)送封裝VXLAN報文頭的控制報文,以由各遠端VTEP設(shè)備刪除該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系,并返回封裝VXLAN報文頭的ACK報文;
所述接收單元,進一步用于接收到各遠端VTEP設(shè)備返回的封裝VXLAN報文頭的所述ACK報文后,刪除該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系。
在所述VXLAN組播裝置中,所述發(fā)送單元,進一步用于:
啟用組播發(fā)送的頭端復制模式,根據(jù)已保存的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系,為所述組播組內(nèi)的各遠端VTEP設(shè)備分別復制BUM報文;
將為所述組播組內(nèi)各遠端VTEP設(shè)備復制的所述BUM報文分別封裝VXLAN報文頭,并單播發(fā)送至各遠端VTEP設(shè)備。
在所述VXLAN組播裝置中,所述裝置還包括:
所述接收單元,進一步用于接收到配置在所述遠端VTEP設(shè)備的所述目標VXLAN加入所述組播組后所述遠端VTEP設(shè)備發(fā)送的封裝VXLAN報文頭的控制報文后,保存所述控制報文的VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述遠端VTEP設(shè)備的IP地址的映射關(guān)系;
所述發(fā)送單元,進一步用于發(fā)送封裝VXLAN報文頭的ACK報文至所述遠端VTEP設(shè)備,以由所述遠端VTEP設(shè)備在接收到封裝VXLAN報文頭的ACK報文后,保存VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系,并在接收到BUM報文后,根據(jù)該映射關(guān)系發(fā)送封裝VXLAN報文頭的BUM報文至所述發(fā)送端VTEP設(shè)備。
在所述VXLAN組播裝置中,還包括:
所述接收單元,進一步用于接收到配置在所述遠端VTEP設(shè)備的所述目標VXLAN離開所述組播組后所述遠端VTEP設(shè)備發(fā)送的封裝VXLAN報文頭的控制報文后,刪除該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述遠端VTEP設(shè)備的IP地址的映射關(guān)系;
所述發(fā)送單元,進一步用于發(fā)送封裝VXLAN報文頭的ACK報文至所述遠端VTEP設(shè)備,以由所述遠端VTEP設(shè)備在接收到封裝VXLAN報文頭的ACK報文后,刪除該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系。
在本申請實施例中,配置在發(fā)送端VTEP設(shè)備的目標VXLAN加入組播組后,發(fā)送端VTEP設(shè)備通過控制報文將所述目標VXLAN的VNI和發(fā)送端VTEP設(shè)備的IP地址同步到各遠端VTEP設(shè)備,由各遠端VTEP設(shè)備保存所述目標VXLAN的VNI與發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系;各遠端VTEP設(shè)備在收到控制報文后,通過ACK報文,將所述目標VXLAN的VNI和各遠端VTEP設(shè)備的IP地址同步到發(fā)送端VTEP設(shè)備,由發(fā)送端VTEP設(shè)備保存所述目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系,從而發(fā)送端VTEP設(shè)備在接收到來自目標VXLAN的用戶側(cè)BUM報文后,可以根據(jù)已建立的目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址之間的映射關(guān)系,基于頭端復制模式將該BUM報文單播發(fā)送至各遠端VTEP設(shè)備,可以避免由核心設(shè)備采用核心復制模式對BUM報文進行組播泛洪處理導致的核心設(shè)備處理壓力過大,影響轉(zhuǎn)發(fā)性能的問題。
附圖說明
圖1是本申請示出的一種VXLAN組播的架構(gòu)圖;
圖2是本申請示出的一種VXLAN組播方法的流程圖;
圖3是本申請示出的一種VXLAN組播裝置的邏輯框圖;
圖4是本申請示出的一種VXLAN組播裝置的硬件結(jié)構(gòu)圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實施例中的技術(shù)方案,并使本發(fā)明實施例的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖對現(xiàn)有技術(shù)方案和本發(fā)明實施例中的技術(shù)方案作進一步詳細的說明。
在相關(guān)技術(shù)中,當VTEP設(shè)備從本地VM接收到一個來自加入組播組的VXLAN的目的MAC地址是BUM(Broadcast&Unknown-unicast&Multicast,廣播&未知單播&組播)的原始報文時,通常需要將該報文封裝為組播VXLAN報文,然后由核心設(shè)備基于組播發(fā)送的核心復制模式進行組播組泛洪處理來學習MAC表項。
參見圖1,為本申請示出的一種VXLAN組播的架構(gòu)圖,如圖所示,VTEP1、VTEP2和VTEP3通過核心設(shè)備相連接,VM1與VM2接入VTEP1,VM3接入VTEP2,VM4接入VTEP3。VM1、VM2、VM3和VM4屬于同一個VXLAN網(wǎng)絡(luò),可以將該VXLAN網(wǎng)絡(luò)稱為目標VXLAN,將VTEP1、VTEP2和VTEP3上配置的目標VXLAN加入到同一個組播組中。
其中,上述VM,指的是利用虛擬化技術(shù),在一臺物理服務(wù)器上虛擬出多個主機。每個虛擬主機互相獨立,有各自的操作系統(tǒng)和邏輯上相互獨立的內(nèi)存、CPU、網(wǎng)卡等設(shè)備,從應用程序的角度來看,絕大部分情況下和使用物理服務(wù)器沒有差別。
上述VTEP設(shè)備,指的是VXLAN網(wǎng)絡(luò)中用于建立VXLAN隧道的端點設(shè)備,用于在VXLAN網(wǎng)絡(luò)中發(fā)送、接收VXLAN報文;其中,VXLAN報文即為封裝了VXLAN報文頭的報文。一臺VTEP設(shè)備可以接入多個VXLAN網(wǎng)絡(luò),也可以接入多臺處于不同或相同VXLAN網(wǎng)絡(luò)的VM,其中,每個VM的二層網(wǎng)絡(luò)地址和三層網(wǎng)絡(luò)地址都是不同的。VTEP設(shè)備接收到VM發(fā)送至接入遠端VTEP設(shè)備的遠端VM的報文后,將該報文封裝VXLAN報文頭,然后將該VXLAN報文發(fā)送至核心設(shè)備,由核心設(shè)備轉(zhuǎn)發(fā)該VXLAN報文至遠端VTEP設(shè)備,以由遠端VTEP設(shè)備將該報文解封裝后發(fā)送至遠端VM。
上述核心設(shè)備,指的是具有組播功能的骨干網(wǎng)設(shè)備。
在VM1沒有VM3的MAC地址的情況下,VM1可以發(fā)送ARP請求報文至VTEP1請求VM3的MAC地址,該ARP請求報文的源MAC地址是VM1的MAC地址,目的MAC是廣播MAC。
一方面,VTEP1在接收到該ARP請求報文后,可以保存對應VM1的MAC表項,該MAC表項包括目標VXLAN的VNI、VM1的MAC地址以及接收該ARP請求報文的接口的映射關(guān)系,該映射關(guān)系用于后續(xù)的單播轉(zhuǎn)發(fā)。
另一方面,VTEP1接收到該ARP請求報文后,由于沒有匹配的MAC表項,因此將該ARP請求報文發(fā)送至除接收該ARP請求報文的接收接口以外的所有本地接口,同時會對該ARP請求報文封裝VXLAN報文頭,其中源IP為VTEP1的IP地址,目的IP為組播組的IP地址;然后轉(zhuǎn)發(fā)至核心設(shè)備,由核心設(shè)備基于核心復制模式進行組播泛洪處理,發(fā)送至該組播組中的其它遠端VETP設(shè)備。
核心設(shè)備接收到封裝VXLAN報文頭的該ARP請求報文后,讀取目的IP,然后基于核心復制模式將封裝VXLAN報文頭的該ARP請求報文,泛洪至組播組中的VTEP2和VTEP3。
VTEP2接收到封裝VXLAN報文頭的該ARP請求報文后,學習對應VM1的MAC表項,該MAC表項包括目標VXLAN的VNI、VM1的MAC地址以及VTEP1的IP地址的映射關(guān)系,該映射關(guān)系用于后續(xù)的單播轉(zhuǎn)發(fā),同時解封裝VXLAN報文頭,將該ARP請求報文廣播至接入本地的目標VXLAN。
VM3接收到該ARP請求報文后,將VM1的IP地址與MAC地址的對應關(guān)系記錄到本地的ARP表中,然后向VTEP2發(fā)送ARP應答報文,該ARP應答報文的源MAC是VM3的MAC地址,目的MAC是VM1的MAC地址。
VTEP2接收到該ARP應答報文后,學習對應VM3的MAC表項,該MAC表項包括目標VXLAN的VNI、VM3的MAC地址以及接收該ARP應答報文的接口的映射關(guān)系,該映射關(guān)系用于后續(xù)的單播轉(zhuǎn)發(fā);同時根據(jù)該ARP應答報文的目的MAC查找本地的MAC表,獲得對應VM1的MAC地址的MAC表項,然后將該ARP應答報文封裝VXLAN報文頭,封裝后的外層目的IP為VTEP1的IP地址,然后將封裝VXLAN報文頭的該ARP應答報文發(fā)送至核心設(shè)備,以由核心設(shè)備轉(zhuǎn)發(fā)該ARP應答報文至VTEP1。
VTEP1接收到封裝VXLAN報文頭的該ARP應答報文后,學習對應VM3的MAC表項,該MAC表項包括目標VXLAN的VNI、VM3的MAC地址和VTEP2的IP地址的映射關(guān)系,該映射關(guān)系用于后續(xù)的單播轉(zhuǎn)發(fā);同時解封裝VXLAN報文頭,然后根據(jù)該ARP應答報文的目的MAC查找本地的MAC表,獲得對應VM1的MAC表項,并根據(jù)對應VM1的MAC表項,將該ARP應答報文發(fā)送至VM1。
VM1在接收到該ARP應答報文后,將VM3的IP地址與MAC地址的對應關(guān)系記錄到本地的ARP表中。后續(xù)VM1與VM3之間的通信可以通過已保存的表項進行單播轉(zhuǎn)發(fā)。
可見,在現(xiàn)有技術(shù)中,VTEP設(shè)備從本地接收到的目的MAC地址為BUM地址的報文時,通常是由核心設(shè)備基于核心復式模式進行組播組泛洪處理來學習MAC表項。當本地VM與遠端VM需要進行大量通信時,VETP設(shè)備接收到的首個BUM報文都會由核心設(shè)備基于核心復制模式進行組播泛洪處理,因此核心設(shè)備的瞬時壓力會比較大,影響轉(zhuǎn)發(fā)性能。
針對上述問題,由于在配置階段對發(fā)送端VTEP設(shè)備和各遠端VTEP設(shè)備的遠端VTEP列表進行更新,所以發(fā)送端VTEP設(shè)備在處理BUM報文時,可以基于頭端復制模式進行泛洪,不需要核心設(shè)備進行泛洪。本申請實施例通過分散VXLAN組播泛洪的方式,緩解出現(xiàn)大量組播泛洪時給核心設(shè)備的壓力,優(yōu)化了VXLAN組播方法,提升了轉(zhuǎn)發(fā)性能。
下面結(jié)合附圖對本申請實施例的技術(shù)方案進行說明。
參見圖2,為本申請示出的一種VXLAN組播方法的流程圖,該技術(shù)方案應用于發(fā)送端VTEP設(shè)備,所述方法包括以下步驟:
步驟201:當配置在所述發(fā)送端VTEP設(shè)備的目標VXLAN加入預設(shè)的組播組后,向所述組播組內(nèi)的各遠端VTEP設(shè)備發(fā)送封裝VXLAN報文頭的控制報文,以由各遠端VTEP設(shè)備保存該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系,并返回封裝VXLAN報文頭的ACK報文。
步驟202:接收到各遠端VTEP設(shè)備返回的封裝VXLAN報文頭的所述ACK報文后,保存VXLAN報文頭中攜帶的所述目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系。
步驟203:當接收到來自所述目標VXLAN的用戶側(cè)BUM報文后,根據(jù)已保存的該目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系,將所述BUM報文基于頭端復制模式發(fā)送至所述組播組內(nèi)的各遠端VTEP設(shè)備。
本申請通過配置在發(fā)送端VTEP設(shè)備的目標VXLAN加入組播組后,引入VXLAN鄰居關(guān)系的學習機制,將相關(guān)技術(shù)中由核心設(shè)備基于核心復制模式對接收到的用戶側(cè)BUM報文進行組播泛洪的轉(zhuǎn)發(fā)方式,更改為由VETP設(shè)備基于頭端復制模式對接收到的用戶側(cè)BUM報文進行單播轉(zhuǎn)發(fā),從而可以分散VXLAN組播泛洪給核心設(shè)備帶來的轉(zhuǎn)發(fā)性能的壓力。
下面結(jié)合圖1對本申請的技術(shù)方案進行詳細說明,如圖1所示,VTEP1、VTEP2和VTEP3通過核心設(shè)備相連接,VM1與VM2接入VTEP1,VM3接入VTEP2,VM4接入VTEP3。VM1、VM2、VM3和VM4屬于同一個VXLAN網(wǎng)絡(luò),可以將該VXLAN網(wǎng)絡(luò)稱為目標VXLAN,目標VXLAN的VNI為1000;將VTEP2和VTEP3上配置的目標VXLAN加入到同一個組播組中。
在本申請實施例中,當配置在發(fā)送端VTEP設(shè)備的目標VXLAN加入組播組后,發(fā)送控制報文至組播組內(nèi)的遠端VTEP設(shè)備,其中,上述控制報文的VXLAN報文頭中攜帶目標VXLAN的VNI,上述控制報文的目的IP為組播組的IP地址。比如:當配置在VTEP1上的目標VXLAN經(jīng)人工設(shè)置加入到與VTEP2和VTEP3上配置的目標VXLAN相同的組播組后,即屬于VXLAN 1000的VM1和VM2經(jīng)設(shè)置加入到與VM3和VM4相同的組播組中,此時,VTEP1可以發(fā)送控制報文至組播組內(nèi)的其它VTEP設(shè)備,以學習VXLAN鄰居關(guān)系。其中,上述控制報文的VXLAN報文頭攜帶的VNI為1000,上述控制報文的目的IP為組播組的IP地址。
核心設(shè)備接收到上述控制報文后,讀取上述控制報文的目的IP,并根據(jù)目的IP將上述控制報文發(fā)送至組播組內(nèi)的其它VTEP設(shè)備,即VTEP2和VTEP3。
各遠端VTEP設(shè)備接收到上述控制報文后,可以保存上述控制報文的VXLAN報文頭中的目標VXLAN的VNI與發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系,將該映射關(guān)系保存在本地的遠端VTEP列表中,此時,各遠端VTEP設(shè)備即學習到了發(fā)送端VTEP設(shè)備的鄰居關(guān)系,即VTEP2和VTEP3都學習到了VTEP1的鄰居關(guān)系。
各遠端VTEP設(shè)備在接收到上述控制報文后,可以發(fā)送封裝VXLAN報文頭的ACK(Acknowledgement)報文至發(fā)送端VTEP設(shè)備。其中,封裝VXLAN報文頭的ACK報文的目的IP可以是發(fā)送端VTEP設(shè)備的IP地址,即VTEP1的IP地址。封裝VXLAN報文頭的ACK報文被發(fā)送至核心設(shè)備后,由核心設(shè)備轉(zhuǎn)發(fā)至VTEP1。
在本申請實施例中,發(fā)送端VTEP設(shè)備接收到遠端VTEP設(shè)備返回的封裝VXLAN報文頭的ACK報文后,保存VXLAN報文頭中攜帶的目標VXLAN的VNI與遠端VTEP設(shè)備的IP地址的映射關(guān)系,將該映射關(guān)系保存在本地的遠端VTEP列表中。此時,發(fā)送端VTEP設(shè)備即學習到遠端VTEP設(shè)備的鄰居關(guān)系。
比如:VTEP1接收到VTEP2返回的ACK報文,在本地的遠端VTEP列表中保存目標VXLAN的VNI與VTEP2的IP地址的映射關(guān)系,此時,VTEP1學習到VTEP2的鄰居關(guān)系。
當VTEP1與VTEP2、VTEP3建立鄰居關(guān)系以后,在接收到用戶側(cè)的BUM報文時,可以根據(jù)鄰居關(guān)系對BUM報文進行處理。
在本申請實施例中,當發(fā)送端VTEP設(shè)備接收到來自目標VXLAN的用戶側(cè)的BUM報文,由于沒有匹配的MAC表項,因此將該BUM報文發(fā)送至除接收該BUM報文的接收接口以外的所有接入目標VXLAN的本地接口和組播組內(nèi)的遠端VTEP設(shè)備。
在本申請實施例中,發(fā)送端VTEP設(shè)備在向組播組內(nèi)的遠端VTEP設(shè)備發(fā)送BUM報文時,不再將組播組的IP地址填充為BUM報文封裝的VXLAN報文頭的目的IP,然后發(fā)送BUM報文至核心設(shè)備,由核心設(shè)備基于核心復制模式轉(zhuǎn)發(fā)該BUM報文至各遠端VTEP設(shè)備,而是直接基于頭端復制模式,向各遠端VTEP設(shè)備單播發(fā)送BUM報文。由于復制BUM報文的工作由發(fā)送端VTEP設(shè)備取代核心設(shè)備來完成,因此可以緩解核心設(shè)備的工作壓力,有效提高轉(zhuǎn)發(fā)性能。
具體而言,在將該BUM報文發(fā)送至組播組內(nèi)的遠端VTEP設(shè)備時,可以啟用組播發(fā)送的頭端復制模式。根據(jù)已保存的目標VXLAN的VNI與遠端VTEP設(shè)備的IP地址的映射關(guān)系,為組播組內(nèi)的各遠端VTEP設(shè)備分別復制BUM報文。
然后根據(jù)上述映射關(guān)系,將為組播組內(nèi)各遠端VTEP設(shè)備復制的上述BUM報文封裝VXLAN報文頭,將目標IP地址填為各遠端VTEP設(shè)備的IP地址,并將封裝VXLAN報文頭的BUM報文單播發(fā)送至各遠端VTEP設(shè)備。
比如,VTEP1接收到VM1發(fā)送的BUM報文,在將BUM報文發(fā)送至VTEP2和VTEP3之前,可以根據(jù)學習到的鄰居關(guān)系,然后啟用頭端復制模式,為VTEP2和VTEP3分別復制BUM報文,獲得兩個BUM報文,然后為BUM報文封裝VXLAN報文頭,向封裝VXLAN報文頭的BUM報文填充目的IP,填充的目的IP分別為VTEP2和VTEP3的IP地址,進而發(fā)送封裝VXLAN報文頭的BUM報文至核心設(shè)備,以由核心設(shè)備根據(jù)目的IP將封裝VXLAN報文頭的BUM報文發(fā)送至VTEP2和VTEP3。
可見,通過頭端復制模式,發(fā)送端VTEP設(shè)備在處理本地接收到的BUM報文時,可以根據(jù)已保存的目標VXLAN的VNI與遠端VTEP設(shè)備的IP地址的映射關(guān)系,自主地復制發(fā)往各遠端VTEP設(shè)備的BUM報文,然后在BUM報文的報文頭中填充各遠端VTEP設(shè)備的IP地址,進而單播發(fā)送上述BUM報文至各遠端VTEP設(shè)備。所以在VXLAN組播組內(nèi)出現(xiàn)大量需要泛洪的BUM報文時,各發(fā)送端VTEP設(shè)備分散了原本由核心設(shè)備復制BUM報文的工作,可以有效地緩解核心設(shè)備的工作壓力。
在本申請實施例中,發(fā)送端VTEP設(shè)備除與各遠端VTEP設(shè)備建立VXLAN鄰居關(guān)系外,還可以在建立VXLAN鄰居關(guān)系以后,與各遠端VTEP設(shè)備解除VXLAN鄰居關(guān)系。
當配置在發(fā)送端VTEP設(shè)備的目標VXLAN離開組播組后,發(fā)送控制報文至組播組內(nèi)的各遠端VTEP設(shè)備,其中,上述控制報文的VXLAN報文頭中攜帶目標VXLAN的VNI,上述控制報文的目的IP為組播組的IP地址。比如:當配置在VTEP1的目標VXLAN經(jīng)人工設(shè)置離開與VTEP2和VTEP3上配置的目標VXLAN相同的組播組后,即屬于VXLAN 1000的VM1和VM2經(jīng)設(shè)置離開與VM3和VM4相同的組播組,此時,VTEP1可以發(fā)送控制報文至組播組內(nèi)的其它VTEP設(shè)備,以解除VXLAN鄰居關(guān)系。其中,上述控制報文的VXLAN報文頭攜帶的VNI為1000,上述控制報文的目的IP為組播組的IP地址。
核心設(shè)備接收到上述控制報文后,讀取上述控制報文的目的IP,并根據(jù)目的IP將上述控制報文發(fā)送至組播組內(nèi)的其它VTEP設(shè)備,即VTEP2和VTEP3。
各遠端VTEP設(shè)備接收到上述控制報文后,可以刪除已保存在本地的遠端VTEP列表中的目標VXLAN的VNI與發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系,此時,各遠端VTEP設(shè)備即解除了發(fā)送端VTEP設(shè)備的鄰居關(guān)系,即VTEP2和VTEP3都解除了VTEP1的鄰居關(guān)系。
在本申請實施例中,各遠端VTEP設(shè)備接收到上述控制報文后,可以發(fā)送封裝VXLAN報文頭的ACK報文至發(fā)送端VTEP設(shè)備。其中,封裝VXLAN報文頭的ACK報文的目的IP可以是發(fā)送端VTEP設(shè)備的IP地址,即VTEP1的IP地址,該VXLAN報文頭中攜帶所述目標VXLAN的VNI。封裝VXLAN報文頭的ACK報文被發(fā)送至核心設(shè)備后,由核心設(shè)備轉(zhuǎn)發(fā)至VTEP1。
發(fā)送端VTEP設(shè)備接收到封裝VXLAN報文頭的上述ACK報文后,可以刪除已保存在本地的遠端VTEP列表中的目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系,此時,發(fā)送端VTEP設(shè)備解除了與遠端VTEP設(shè)備的鄰居關(guān)系。比如:VTEP1接收到VTEP2返回的ACK報文后,刪除本地VTEP列表中目標VXLAN的VNI與VTEP2的IP地址的映射關(guān)系;VTEP1接收到VTEP3返回的ACK報文后,刪除本地VTEP列表中目標VXLAN的VNI與VTEP3的IP地址的映射關(guān)系。
當發(fā)送端VTEP設(shè)備與各遠端VTEP設(shè)備相互解除鄰居關(guān)系后,各遠端VTEP設(shè)備在處理來自目標VXLAN的組播VXLAN報文時,因發(fā)送端VTEP設(shè)備配置的目標VXLAN已離開組播組,不再發(fā)送報文至發(fā)送端VTEP設(shè)備。
下面以BUM報文為ARP報文為例,描述一次泛洪的過程。
在VM1沒有VM3的MAC地址的情況下,VM1可以發(fā)送ARP請求報文至VTEP1請求VM3的MAC地址,該ARP請求報文的源MAC地址是VM1的MAC地址,目的MAC是廣播MAC。
一方面,VTEP1接收到該ARP請求報文后,可以保存對應VM1的MAC表項,該MAC表項包括目標VXLAN的VNI、VM1的MAC地址以及接收該ARP請求報文的接口的映射關(guān)系,該映射關(guān)系用于后續(xù)的單播轉(zhuǎn)發(fā)。
另一方面,VTEP1接收到該ARP請求報文后,由于沒有匹配的MAC表項,因此將該ARP請求報文發(fā)送至除接收該ARP請求報文的接收接口以外的所有本地接口;同時會啟用頭端復制模式,根據(jù)預先保存的目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系,為VTEP2和VTEP3分別復制該ARP請求報文。在復制完成后,VTEP1將復制得到的ARP請求報文封裝攜帶目標VXLAN的VNI的VXLAN報文頭,并向ARP請求報文的VXLAN報文頭中分別填充目的IP,其中,目的IP為VTEP2和VTEP3的IP地址。VTEP1將封裝VXLAN報文頭的ARP請求報文發(fā)送至核心設(shè)備,由核心設(shè)備轉(zhuǎn)發(fā)至VM1所在的組播組中的其它遠端VTEP設(shè)備。
核心設(shè)備在接收封裝VXLAN報文頭的ARP請求報文后,讀取目的IP,然后根據(jù)讀取結(jié)果,將目的IP為VTEP2的IP地址的ARP請求報文發(fā)送至VTEP2,將目的IP為VTEP3的IP地址的ARP請求報文發(fā)送至VTEP3。
綜上所述,在本申請實施例中,通過引入VXLAN鄰居關(guān)系的學習機制,即當配置在發(fā)送端VTEP設(shè)備上的目標VXLAN加入組播組后,發(fā)送端VTEP設(shè)備與組播組內(nèi)同樣配置目標VXLAN的各遠端VTEP設(shè)備之間建立VXLAN鄰居關(guān)系,在鄰居關(guān)系建立后,如果發(fā)送端VTEP設(shè)備接收到來自目標VXLAN的用戶側(cè)BUM報文后,啟用頭端復制模式,根據(jù)鄰居關(guān)系復制該BUM報文,分別將各遠端VTEP設(shè)備的IP地址填充為復制得到的BUM報文的VXLAN報文頭的目的IP,并發(fā)送BUM報文至各遠端VTEP設(shè)備。通過以上措施,當組播組內(nèi)出現(xiàn)大量需要泛洪的BUM報文時,復制BUM報文的工作由發(fā)送端VTEP設(shè)備替代核心設(shè)備來完成,使得核心設(shè)備在接收到封裝VXLAN報文頭的BUM報文后無需基于核心復制模式處理BUM報文,而可以直接轉(zhuǎn)發(fā)BUM報文,有效降低了核心設(shè)備的工作壓力,優(yōu)化了轉(zhuǎn)發(fā)性能。
與本申請VXLAN組播方法的實施例相對應,本申請還提供了用于執(zhí)行上述方法實施例的裝置的實施例。
參見圖3,為本申請VXLAN組播裝置的一個實施例框圖:
如圖3所示,該VXLAN組播裝置30包括:
發(fā)送單元310,用于當配置在所述發(fā)送端VTEP設(shè)備的目標VXLAN加入預設(shè)的組播組后,向所述組播組內(nèi)的各遠端VTEP設(shè)備發(fā)送封裝VXLAN報文頭的控制報文,以由各遠端VTEP設(shè)備保存該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系,并返回封裝VXLAN報文頭的ACK報文。
接收單元320,用于接收到各遠端VTEP設(shè)備返回的封裝VXLAN報文頭的所述ACK報文后,保存VXLAN報文頭中攜帶的所述目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系。
所述發(fā)送單元310,進一步用于當接收到來自所述目標VXLAN的用戶側(cè)BUM報文后,根據(jù)已保存的該目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系,將所述BUM報文基于頭端復制模式發(fā)送至所述組播組內(nèi)的各遠端VTEP設(shè)備。
在本例中,所述裝置還包括:
所述發(fā)送單元310,進一步用于當所述目標VXLAN離開所述組播組時,向所述組播組內(nèi)的各遠端VTEP設(shè)備發(fā)送封裝VXLAN報文頭的控制報文,以由各遠端VTEP設(shè)備刪除該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系,并返回封裝VXLAN報文頭的ACK報文。
所述接收單元320,進一步用于接收到各遠端VTEP設(shè)備返回的封裝VXLAN報文頭的所述ACK報文后,刪除該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系。
在本例中,所述發(fā)送單元310,進一步用于:
啟用組播發(fā)送的頭端復制模式,根據(jù)已保存的VNI與各遠端VTEP設(shè)備的IP地址的映射關(guān)系,為所述組播組內(nèi)的各遠端VTEP設(shè)備分別復制BUM報文;
將為所述組播組內(nèi)各遠端VTEP設(shè)備復制的所述BUM報文分別封裝VXLAN報文頭,并單播發(fā)送至各遠端VTEP設(shè)備。
在本例中,所述裝置還包括:
所述接收單元320,進一步用于接收到配置在所述遠端VTEP設(shè)備的所述目標VXLAN加入所述組播組后所述遠端VTEP設(shè)備發(fā)送的封裝VXLAN報文頭的控制報文后,保存所述控制報文的VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述遠端VTEP設(shè)備的IP地址的映射關(guān)系。
所述發(fā)送單元310,進一步用于發(fā)送封裝VXLAN報文頭的ACK報文至所述遠端VTEP設(shè)備,以由所述遠端VTEP設(shè)備在接收到封裝VXLAN報文頭的ACK報文后,保存VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系,并在接收到BUM報文后,根據(jù)該映射關(guān)系發(fā)送封裝VXLAN報文頭的BUM報文至所述發(fā)送端VTEP設(shè)備。
在本例中,所述裝置還包括:
所述接收單元320,進一步用于接收到配置在所述遠端VTEP設(shè)備的所述目標VXLAN離開所述組播組后所述遠端VTEP設(shè)備發(fā)送的封裝VXLAN報文頭的控制報文后,刪除該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述遠端VTEP設(shè)備的IP地址的映射關(guān)系。
所述發(fā)送單元310,進一步用于發(fā)送封裝VXLAN報文頭的ACK報文至所述遠端VTEP設(shè)備,以由所述遠端VTEP設(shè)備在接收到封裝VXLAN報文頭的ACK報文后,刪除該VXLAN報文頭中攜帶的所述目標VXLAN的VNI與所述發(fā)送端VTEP設(shè)備的IP地址的映射關(guān)系。
本申請VXLAN組播裝置的實施例可以應用在發(fā)送端VTEP設(shè)備上。裝置實施例可以通過軟件實現(xiàn),也可以通過硬件或者軟硬件結(jié)合的方式實現(xiàn)。以軟件實現(xiàn)為例,作為一個邏輯意義上的裝置,是通過其所在發(fā)送端VTEP設(shè)備的處理器將非易失性存儲器中對應的計算機程序指令讀取到內(nèi)存中運行形成的。從硬件層面而言,如圖4所示,為本申請VXLAN組播裝置所在發(fā)送端VTEP設(shè)備的一種硬件結(jié)構(gòu)圖,除了圖4所示的處理器、內(nèi)存、網(wǎng)絡(luò)接口、以及非易失性存儲器之外,實施例中裝置所在的發(fā)送端VTEP設(shè)備通常根據(jù)該VXLAN組播裝置的實際功能,還可以包括其他硬件,對此不再贅述。
上述裝置中各個單元的功能和作用的實現(xiàn)過程具體詳見上述方法中對應步驟的實現(xiàn)過程,在此不再贅述。
對于裝置實施例而言,由于其基本對應于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本申請方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
以上所述僅為本申請的較佳實施例而已,并不用以限制本申請,凡在本申請的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本申請保護的范圍之內(nèi)。