溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

VXLAN網(wǎng)關(guān)

發(fā)布時間:2020-04-05 15:54:11 來源:網(wǎng)絡(luò) 閱讀:1071 作者:lukaschare 欄目:數(shù)據(jù)安全

VXLAN網(wǎng)關(guān)

首先,補(bǔ)充一下現(xiàn)在流行的OverLay技術(shù):

  • VXLANVXLAN是將以太網(wǎng)報文封裝成UDP報文進(jìn)行隧道傳輸,UDP目的端口為4798(可修改),標(biāo)準(zhǔn)5元組方式有利于在IP網(wǎng)絡(luò)轉(zhuǎn)發(fā)過程中進(jìn)行負(fù)載分擔(dān);隔離標(biāo)識VNI采用24比特來表示;所有的流量均被封裝為payload轉(zhuǎn)發(fā)。
  • NVGRE NVGRE采用的是RFC 2784和RFC 2890所定義的GRE隧道協(xié)議。將以太網(wǎng)報文封裝在GRE內(nèi)進(jìn)行隧道傳輸。隔離標(biāo)識采用24比特來表示;與VXLAN的主要區(qū)別在對流量的負(fù)載分擔(dān)上,因?yàn)槭褂昧薌RE隧道封裝,NVGRE使用了GRE擴(kuò)展字段flow ID進(jìn)行流量負(fù)載分擔(dān),這就要求物理網(wǎng)絡(luò)能夠識別GRE隧道的擴(kuò)展信息。
  • STT STT是無狀態(tài)傳輸協(xié)議,通過將以太網(wǎng)報文封裝成TCP報文進(jìn)行隧道傳輸,隔離標(biāo)識采用64比特來表示。與VXLAN和NVGRE的主要區(qū)別是在隧道封裝格式使用了無狀態(tài)TCP,需要對傳統(tǒng)TCP協(xié)議進(jìn)行修改以適應(yīng)NVGRE的傳輸。

//感覺大同小異,基本新技術(shù)的產(chǎn)生最多的也是從舊協(xié)議中添加擴(kuò)展來支持新功能。

言歸正傳,VXLAN的網(wǎng)關(guān):

為什么需要VXLAN網(wǎng)關(guān)?

因?yàn)閂XLAN的VTEP之間發(fā)現(xiàn)技術(shù)導(dǎo)致的,畢竟組播是不能適用于如今這么大規(guī)模的IDC設(shè)備的。

另外一部分原因是VXLAN的通信需求,即——同VNI VM之間的通信;不同VNI VM之間的通信;VM和外部服務(wù)器的通信

無論如何,VXLAN兩種數(shù)據(jù)包是不變的:

1. BUM(broadcast&unknown-unicast&multicast)包,就是新連接,需要尋找對應(yīng)的VTEP

2. 在已知VTEP和對端的MAC地址的時候,發(fā)送單播包

VXLAN網(wǎng)關(guān)的幾種分類:

VXLAN網(wǎng)關(guān)

1. 二層VXLAN網(wǎng)關(guān)

就是普通的同VNI內(nèi)的VM相互通信(同一個組播組互相查找)

2. 三層VXLAN網(wǎng)關(guān)

a.不同VNI之間的互訪(同時有兩個VNI的組播組,作為中間人)

b.VM和外網(wǎng)server之間的互訪(需要添加三層路由)

VXLAN網(wǎng)關(guān)的組網(wǎng)(集中式和分布式):

集中式VXLAN網(wǎng)關(guān):

VXLAN網(wǎng)關(guān)

以地址為10.1.1.11的虛擬機(jī)為例,虛擬機(jī)與外界網(wǎng)絡(luò)進(jìn)行三層通信的過程為:

(1)虛擬機(jī)(10.1.1.11)跨網(wǎng)段進(jìn)行三層通信時,先廣播發(fā)送ARP請求消息,解析VXLAN IP網(wǎng)關(guān)(10.1.1.1)的MAC地址。//不管怎么樣VM的包第一個給接入VTEP

(2)VTEP 1收到ARP請求消息后,添加VXLAN封裝并發(fā)送給所有的遠(yuǎn)端VTEP。//其實(shí),不在已經(jīng)學(xué)習(xí)到的流表中的請求,都需要提交VXLAN網(wǎng)關(guān)

(3)VTEP 3解封裝VXLAN報文后,發(fā)現(xiàn)ARP請求的目的IP為VXLAN對應(yīng)的本地網(wǎng)關(guān)IP地址,即與VXLAN關(guān)聯(lián)的VSI虛接口的IP地址,則學(xué)習(xí)10.1.1.11的ARP信息,并向虛擬機(jī)回應(yīng)ARP應(yīng)答消息。//這個時候它沒有說明白,用的是哪個MAC回給VTEP1和VM

(4)VTEP 1收到ARP應(yīng)答消息后,將該消息轉(zhuǎn)發(fā)給虛擬機(jī)。

(5)虛擬機(jī)獲取到網(wǎng)關(guān)的MAC地址后,為三層報文添加網(wǎng)關(guān)的MAC地址,通過VXLAN網(wǎng)絡(luò)將二層數(shù)據(jù)幀發(fā)送給VTEP 3。//VTEP在第三步返回的應(yīng)該是自己的MAC(????懷疑??求證20180430,已經(jīng)確認(rèn)。)

(6)VTEP 3解封裝VXLAN報文,并去掉鏈路層頭后,對內(nèi)層封裝的IP報文進(jìn)行三層轉(zhuǎn)發(fā),將其發(fā)送給最終的目的節(jié)點(diǎn)。

(7)目的節(jié)點(diǎn)回復(fù)的報文到達(dá)網(wǎng)關(guān)后,網(wǎng)關(guān)根據(jù)已經(jīng)學(xué)習(xí)到的ARP表項,為報文封裝鏈路層頭,并通過VXLAN網(wǎng)絡(luò)將其發(fā)送給虛擬機(jī)。

屬于不同VXLAN網(wǎng)絡(luò)的虛擬機(jī)之間的通信過程與上述過程類似,不同之處在于一個VXLAN網(wǎng)絡(luò)的集中式網(wǎng)關(guān)需要將報文轉(zhuǎn)發(fā)給另一個VXLAN網(wǎng)絡(luò)的集中式網(wǎng)關(guān),再由該集中式網(wǎng)關(guān)將報文轉(zhuǎn)發(fā)給本VXLAN內(nèi)對應(yīng)的虛擬機(jī)。

分布式VXLAN網(wǎng)關(guān):

VXLAN網(wǎng)關(guān)

為什么要分布式VXLAN網(wǎng)關(guān):

采用集中式VXLANIP網(wǎng)關(guān)方案時,不同VXLAN之間的流量以及VXLAN訪問外界網(wǎng)絡(luò)的流量全部由集中式VXLAN IP網(wǎng)關(guān)處理,網(wǎng)關(guān)壓力較大,并加劇了網(wǎng)絡(luò)帶寬資源的消耗。而在分布式VXLAN IP網(wǎng)關(guān)方案中,每臺VTEP設(shè)備都可以作為VXLAN IP網(wǎng)關(guān),對本地站點(diǎn)的流量進(jìn)行三層轉(zhuǎn)發(fā),很好地緩解了網(wǎng)關(guān)的壓力。

在分布式VXLAN IP網(wǎng)關(guān)組網(wǎng)中,所有的分布式VXLAN IP網(wǎng)關(guān)(GW)上都需要創(chuàng)建VSI虛接口,并為不同GW上的相同VSI虛接口配置相同的IP地址,作為VXLAN內(nèi)虛擬機(jī)的網(wǎng)關(guān)地址。在分布式VXLAN IP網(wǎng)關(guān)上還需要開啟本地代理ARP功能。邊界網(wǎng)關(guān)(Border)上也需要創(chuàng)建VSI虛接口,并配置IP地址(和GW上不同)。

采用分布式VXLANIP網(wǎng)關(guān)組網(wǎng)方案時,三層流量通過查找ARP表項進(jìn)行三層轉(zhuǎn)發(fā)。ARP表項可以根據(jù)ARP協(xié)議動態(tài)學(xué)習(xí)。

VXLAN網(wǎng)關(guān)

1.相同VXLAN內(nèi)不同站點(diǎn)的虛擬機(jī)通信過程

以VM 1訪問VM 4為例,相同VXLAN內(nèi)不同站點(diǎn)的虛擬機(jī)的通信過程為:

(1)VM 1廣播發(fā)送ARP請求消息,希望獲取VM 4的MAC地址。這個包被GW1收到。

(2)GW 1收到ARP請求消息后,學(xué)習(xí)VM 1的ARP信息,并代理應(yīng)答該ARP請求,即:向VM 1發(fā)送ARP應(yīng)答消息,應(yīng)答的MAC地址為VSI虛接口10的MAC地址。

(3)VM 1學(xué)習(xí)到VM 4的MAC地址為GW 1上VSI虛接口10的MAC地址。

(4)GW 1將接收到的ARP請求消息中的源MAC地址修改為VSI虛接口10的MAC地址,對該消息進(jìn)行VXLAN封裝后,將其發(fā)送給VXLAN內(nèi)的所有遠(yuǎn)端VTEP。//1.組播 2.不改ARP內(nèi)容,還是詢問VM4

(5)GW 2對VXLAN報文進(jìn)行解封裝后,學(xué)習(xí)VM 1的ARP信息(IP為10.1.1.11、MAC為GW 1上VSI虛接口10的MAC、出接口為接收該VXLAN報文的Tunnel接口),并將ARP請求消息中的源MAC修改為本地VSI虛接口10的MAC地址,在VXLAN 10的本地站點(diǎn)內(nèi)進(jìn)行廣播。//同樣是代理ARP

(6)VM 4收到ARP請求后,學(xué)習(xí)VM 1的ARP信息(IP為10.1.1.11、MAC為GW 2上VSI虛接口10的MAC),并發(fā)送ARP應(yīng)答消息給本地網(wǎng)關(guān)GW 2。

(7)GW 2從VM 4收到ARP應(yīng)答消息后,學(xué)習(xí)VM 4的ARP信息,將ARP應(yīng)答消息中的源MAC修改為本地VSI虛接口10的MAC地址,并根據(jù)已經(jīng)學(xué)習(xí)到的ARP表項,為ARP應(yīng)答消息添加VXLAN封裝后發(fā)送給GW 1。

(8)GW 1對VXLAN報文進(jìn)行解封裝后,根據(jù)收到的ARP應(yīng)答消息學(xué)習(xí)VM 4的ARP信息(IP為10.1.1.12、MAC為GW 2上VSI虛接口10的MAC、出接口為接收該VXLAN報文的Tunnel接口)。

(9)通過上述步驟完成ARP信息的學(xué)習(xí)后,VM 1發(fā)送給VM 4的報文,根據(jù)已經(jīng)學(xué)習(xí)到的ARP信息進(jìn)行轉(zhuǎn)發(fā):首先發(fā)送給GW 1;GW 1對其進(jìn)行VXLAN封裝后,將其發(fā)送給GW 2;GW 2解封裝后,將其發(fā)送給VM 4。

//可以看到的是除了代理ARP代答,并沒有用到VSI口的IP,僅僅是用的MAC。所以相同的VSI IP也是可行的。

2.不同VXLAN間不同站點(diǎn)的虛擬機(jī)通信過程

以VM 1訪問VM 5為例,不同VXLAN的虛擬機(jī)的通信過程為:

(1)VM 1廣播發(fā)送ARP請求消息,獲取網(wǎng)關(guān)10.1.1.1的MAC地址。

(2)GW 1收到ARP請求消息后,學(xué)習(xí)VM 1的ARP信息,并向VM 1發(fā)送ARP應(yīng)答消息,應(yīng)答的MAC地址為VSI虛接口10的MAC地址。//ARP代理

(3)VM 1將訪問VM 5的報文發(fā)送給GW 1。

(4)GW 1在所有VXLAN內(nèi)向本地站點(diǎn)和遠(yuǎn)端站點(diǎn)廣播發(fā)送ARP請求,獲取VM 5的MAC地址。ARP請求消息中的源IP地址為20.1.1.1、源MAC地址為本地VSI虛接口20的MAC地址。//GW1直接拿VNI20的IP做ARP,說明在這里它已經(jīng)知道VM5屬于VNI20

(5)GW 2從VXLAN隧道上接收到VXLAN報文,對其進(jìn)行解封裝后,學(xué)習(xí)GW 1的ARP信息(IP為20.1.1.1、MAC為GW 1上VSI虛接口20的MAC、出接口為接收該VXLAN報文的Tunnel接口),并將ARP請求消息中的源MAC修改為本地VSI虛接口20的MAC地址,在VXLAN 20的本地站點(diǎn)內(nèi)廣播該ARP請求消息。//注意:GW2改了MAC,但是沒有改IP?。?!因?yàn)镮P是一樣的!

(6)VM 5收到ARP請求后,學(xué)習(xí)GW 2的ARP信息(IP為20.1.1.1、MAC為GW 2上VSI虛接口20的MAC),并發(fā)送ARP應(yīng)答消息給本地網(wǎng)關(guān)GW 2。

(7)GW 2從VM 5收到ARP應(yīng)答消息后,學(xué)習(xí)VM 5的ARP信息,將ARP應(yīng)答消息中的源MAC修改為本地VSI虛接口20的MAC地址,并根據(jù)已經(jīng)學(xué)習(xí)到的ARP表項,為ARP應(yīng)答消息添加VXLAN封裝后發(fā)送給GW 1。

(8)GW 1對VXLAN報文進(jìn)行解封裝后,根據(jù)收到的ARP應(yīng)答消息學(xué)習(xí)VM 5的ARP信息(IP為20.1.1.12、MAC為GW 2上VSI虛接口20的MAC、出接口為接收該VXLAN報文的Tunnel接口)。

(9)通過上述步驟完成ARP信息的學(xué)習(xí)后,VM 1發(fā)送給VM 5的報文,根據(jù)已經(jīng)學(xué)習(xí)到的ARP信息進(jìn)行轉(zhuǎn)發(fā):首先發(fā)送給GW 1;GW 1對其進(jìn)行VXLAN封裝后,將其發(fā)送給GW 2;GW 2解封裝后,將其發(fā)送給VM 5。

疑問:未解決//20180503

//在GW1和GW2的交互過程中,他們都用到了VNI20的IP20.1.1.1,要注意的是他們發(fā)的是ARP包,雖然目的IP不一樣,但是源IP是一樣的,GW2收到了來自自己IP的,不同MAC的ARP請求包,還能正常處理,這是必須要這么做還是另有原因?

虛擬機(jī)與外部網(wǎng)絡(luò)的三層通信過程

虛擬機(jī)要想與外部網(wǎng)絡(luò)進(jìn)行三層通信,需要在接入虛擬機(jī)的本地分布式VXLAN IP網(wǎng)關(guān)上指定流量的下一跳為Border,可以通過如下方式來實(shí)現(xiàn):

·在本地分布式VXLAN IP網(wǎng)關(guān)上配置靜態(tài)路由,指定路由下一跳為Border上同一個VXLAN對應(yīng)VSI虛接口的IP地址。

·在本地分布式VXLAN IP網(wǎng)關(guān)上配置策略路由,通過apply default-next-hop命令設(shè)置報文的缺省下一跳為Border上同一個VXLAN對應(yīng)VSI虛接口的IP地址。

以VM 1訪問外部網(wǎng)絡(luò)內(nèi)的主機(jī)50.1.1.1為例,虛擬機(jī)訪問外部網(wǎng)絡(luò)的三層通信過程為:

(1)VM 1廣播發(fā)送ARP請求消息,獲取網(wǎng)關(guān)10.1.1.1的MAC地址。

(2)GW 1收到ARP請求消息后,學(xué)習(xí)VM 1的ARP信息,并向VM 1發(fā)送ARP應(yīng)答消息,應(yīng)答的MAC地址為VSI虛接口10的MAC地址。//ARP代理

(3)VM 1將訪問外部網(wǎng)絡(luò)的報文發(fā)送給GW 1。

(4)GW 1接收到報文后,根據(jù)策略路由判斷報文的下一跳地址為10.1.1.2。GW 1在VXLAN 10內(nèi)向本地站點(diǎn)和遠(yuǎn)端站點(diǎn)廣播發(fā)送ARP請求消息,獲取10.1.1.2對應(yīng)的MAC地址。//也就是說,GW1已經(jīng)知道了這個目的地址是在外網(wǎng)

(5)Border對VXLAN報文進(jìn)行解封裝,學(xué)習(xí)GW 1的ARP信息,并通過VXLAN隧道回復(fù)ARP應(yīng)答消息。//答復(fù)的是10.1.1.2的MAC地址

(6)GW 1對VXLAN報文進(jìn)行解封裝,并獲取到10.1.1.2的ARP信息。

(7)GW 1根據(jù)獲取到的信息為VM 1發(fā)送的報文封裝鏈路層地址(10.1.1.2對應(yīng)的MAC地址),并通過VXLAN隧道將報文發(fā)送給Border。

(8)Border對接收到的報文進(jìn)行解封裝后,對報文進(jìn)行三層轉(zhuǎn)發(fā)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI