您好,登錄后才能下訂單哦!
VXLAN網關
首先,補充一下現在流行的OverLay技術:
//感覺大同小異,基本新技術的產生最多的也是從舊協議中添加擴展來支持新功能。
言歸正傳,VXLAN的網關:
為什么需要VXLAN網關?
因為VXLAN的VTEP之間發現技術導致的,畢竟組播是不能適用于如今這么大規模的IDC設備的。
另外一部分原因是VXLAN的通信需求,即——同VNI VM之間的通信;不同VNI VM之間的通信;VM和外部服務器的通信
無論如何,VXLAN兩種數據包是不變的:
1. BUM(broadcast&unknown-unicast&multicast)包,就是新連接,需要尋找對應的VTEP
2. 在已知VTEP和對端的MAC地址的時候,發送單播包
VXLAN網關的幾種分類:
1. 二層VXLAN網關
就是普通的同VNI內的VM相互通信(同一個組播組互相查找)
2. 三層VXLAN網關
a.不同VNI之間的互訪(同時有兩個VNI的組播組,作為中間人)
b.VM和外網server之間的互訪(需要添加三層路由)
VXLAN網關的組網(集中式和分布式):
集中式VXLAN網關:
以地址為10.1.1.11的虛擬機為例,虛擬機與外界網絡進行三層通信的過程為:
(1)虛擬機(10.1.1.11)跨網段進行三層通信時,先廣播發送ARP請求消息,解析VXLAN IP網關(10.1.1.1)的MAC地址。//不管怎么樣VM的包第一個給接入VTEP
(2)VTEP 1收到ARP請求消息后,添加VXLAN封裝并發送給所有的遠端VTEP。//其實,不在已經學習到的流表中的請求,都需要提交VXLAN網關
(3)VTEP 3解封裝VXLAN報文后,發現ARP請求的目的IP為VXLAN對應的本地網關IP地址,即與VXLAN關聯的VSI虛接口的IP地址,則學習10.1.1.11的ARP信息,并向虛擬機回應ARP應答消息。//這個時候它沒有說明白,用的是哪個MAC回給VTEP1和VM
(4)VTEP 1收到ARP應答消息后,將該消息轉發給虛擬機。
(5)虛擬機獲取到網關的MAC地址后,為三層報文添加網關的MAC地址,通過VXLAN網絡將二層數據幀發送給VTEP 3。//VTEP在第三步返回的應該是自己的MAC(????懷疑??求證20180430,已經確認。)
(6)VTEP 3解封裝VXLAN報文,并去掉鏈路層頭后,對內層封裝的IP報文進行三層轉發,將其發送給最終的目的節點。
(7)目的節點回復的報文到達網關后,網關根據已經學習到的ARP表項,為報文封裝鏈路層頭,并通過VXLAN網絡將其發送給虛擬機。
屬于不同VXLAN網絡的虛擬機之間的通信過程與上述過程類似,不同之處在于一個VXLAN網絡的集中式網關需要將報文轉發給另一個VXLAN網絡的集中式網關,再由該集中式網關將報文轉發給本VXLAN內對應的虛擬機。
分布式VXLAN網關:
為什么要分布式VXLAN網關:
采用集中式VXLANIP網關方案時,不同VXLAN之間的流量以及VXLAN訪問外界網絡的流量全部由集中式VXLAN IP網關處理,網關壓力較大,并加劇了網絡帶寬資源的消耗。而在分布式VXLAN IP網關方案中,每臺VTEP設備都可以作為VXLAN IP網關,對本地站點的流量進行三層轉發,很好地緩解了網關的壓力。
在分布式VXLAN IP網關組網中,所有的分布式VXLAN IP網關(GW)上都需要創建VSI虛接口,并為不同GW上的相同VSI虛接口配置相同的IP地址,作為VXLAN內虛擬機的網關地址。在分布式VXLAN IP網關上還需要開啟本地代理ARP功能。邊界網關(Border)上也需要創建VSI虛接口,并配置IP地址(和GW上不同)。
采用分布式VXLANIP網關組網方案時,三層流量通過查找ARP表項進行三層轉發。ARP表項可以根據ARP協議動態學習。
1.相同VXLAN內不同站點的虛擬機通信過程
以VM 1訪問VM 4為例,相同VXLAN內不同站點的虛擬機的通信過程為:
(1)VM 1廣播發送ARP請求消息,希望獲取VM 4的MAC地址。這個包被GW1收到。
(2)GW 1收到ARP請求消息后,學習VM 1的ARP信息,并代理應答該ARP請求,即:向VM 1發送ARP應答消息,應答的MAC地址為VSI虛接口10的MAC地址。
(3)VM 1學習到VM 4的MAC地址為GW 1上VSI虛接口10的MAC地址。
(4)GW 1將接收到的ARP請求消息中的源MAC地址修改為VSI虛接口10的MAC地址,對該消息進行VXLAN封裝后,將其發送給VXLAN內的所有遠端VTEP。//1.組播 2.不改ARP內容,還是詢問VM4
(5)GW 2對VXLAN報文進行解封裝后,學習VM 1的ARP信息(IP為10.1.1.11、MAC為GW 1上VSI虛接口10的MAC、出接口為接收該VXLAN報文的Tunnel接口),并將ARP請求消息中的源MAC修改為本地VSI虛接口10的MAC地址,在VXLAN 10的本地站點內進行廣播。//同樣是代理ARP
(6)VM 4收到ARP請求后,學習VM 1的ARP信息(IP為10.1.1.11、MAC為GW 2上VSI虛接口10的MAC),并發送ARP應答消息給本地網關GW 2。
(7)GW 2從VM 4收到ARP應答消息后,學習VM 4的ARP信息,將ARP應答消息中的源MAC修改為本地VSI虛接口10的MAC地址,并根據已經學習到的ARP表項,為ARP應答消息添加VXLAN封裝后發送給GW 1。
(8)GW 1對VXLAN報文進行解封裝后,根據收到的ARP應答消息學習VM 4的ARP信息(IP為10.1.1.12、MAC為GW 2上VSI虛接口10的MAC、出接口為接收該VXLAN報文的Tunnel接口)。
(9)通過上述步驟完成ARP信息的學習后,VM 1發送給VM 4的報文,根據已經學習到的ARP信息進行轉發:首先發送給GW 1;GW 1對其進行VXLAN封裝后,將其發送給GW 2;GW 2解封裝后,將其發送給VM 4。
//可以看到的是除了代理ARP代答,并沒有用到VSI口的IP,僅僅是用的MAC。所以相同的VSI IP也是可行的。
2.不同VXLAN間不同站點的虛擬機通信過程
以VM 1訪問VM 5為例,不同VXLAN的虛擬機的通信過程為:
(1)VM 1廣播發送ARP請求消息,獲取網關10.1.1.1的MAC地址。
(2)GW 1收到ARP請求消息后,學習VM 1的ARP信息,并向VM 1發送ARP應答消息,應答的MAC地址為VSI虛接口10的MAC地址。//ARP代理
(3)VM 1將訪問VM 5的報文發送給GW 1。
(4)GW 1在所有VXLAN內向本地站點和遠端站點廣播發送ARP請求,獲取VM 5的MAC地址。ARP請求消息中的源IP地址為20.1.1.1、源MAC地址為本地VSI虛接口20的MAC地址。//GW1直接拿VNI20的IP做ARP,說明在這里它已經知道VM5屬于VNI20
(5)GW 2從VXLAN隧道上接收到VXLAN報文,對其進行解封裝后,學習GW 1的ARP信息(IP為20.1.1.1、MAC為GW 1上VSI虛接口20的MAC、出接口為接收該VXLAN報文的Tunnel接口),并將ARP請求消息中的源MAC修改為本地VSI虛接口20的MAC地址,在VXLAN 20的本地站點內廣播該ARP請求消息。//注意:GW2改了MAC,但是沒有改IP!!!因為IP是一樣的!
(6)VM 5收到ARP請求后,學習GW 2的ARP信息(IP為20.1.1.1、MAC為GW 2上VSI虛接口20的MAC),并發送ARP應答消息給本地網關GW 2。
(7)GW 2從VM 5收到ARP應答消息后,學習VM 5的ARP信息,將ARP應答消息中的源MAC修改為本地VSI虛接口20的MAC地址,并根據已經學習到的ARP表項,為ARP應答消息添加VXLAN封裝后發送給GW 1。
(8)GW 1對VXLAN報文進行解封裝后,根據收到的ARP應答消息學習VM 5的ARP信息(IP為20.1.1.12、MAC為GW 2上VSI虛接口20的MAC、出接口為接收該VXLAN報文的Tunnel接口)。
(9)通過上述步驟完成ARP信息的學習后,VM 1發送給VM 5的報文,根據已經學習到的ARP信息進行轉發:首先發送給GW 1;GW 1對其進行VXLAN封裝后,將其發送給GW 2;GW 2解封裝后,將其發送給VM 5。
疑問:未解決//20180503
//在GW1和GW2的交互過程中,他們都用到了VNI20的IP20.1.1.1,要注意的是他們發的是ARP包,雖然目的IP不一樣,但是源IP是一樣的,GW2收到了來自自己IP的,不同MAC的ARP請求包,還能正常處理,這是必須要這么做還是另有原因?
虛擬機與外部網絡的三層通信過程
虛擬機要想與外部網絡進行三層通信,需要在接入虛擬機的本地分布式VXLAN IP網關上指定流量的下一跳為Border,可以通過如下方式來實現:
·在本地分布式VXLAN IP網關上配置靜態路由,指定路由下一跳為Border上同一個VXLAN對應VSI虛接口的IP地址。
·在本地分布式VXLAN IP網關上配置策略路由,通過apply default-next-hop命令設置報文的缺省下一跳為Border上同一個VXLAN對應VSI虛接口的IP地址。
以VM 1訪問外部網絡內的主機50.1.1.1為例,虛擬機訪問外部網絡的三層通信過程為:
(1)VM 1廣播發送ARP請求消息,獲取網關10.1.1.1的MAC地址。
(2)GW 1收到ARP請求消息后,學習VM 1的ARP信息,并向VM 1發送ARP應答消息,應答的MAC地址為VSI虛接口10的MAC地址。//ARP代理
(3)VM 1將訪問外部網絡的報文發送給GW 1。
(4)GW 1接收到報文后,根據策略路由判斷報文的下一跳地址為10.1.1.2。GW 1在VXLAN 10內向本地站點和遠端站點廣播發送ARP請求消息,獲取10.1.1.2對應的MAC地址。//也就是說,GW1已經知道了這個目的地址是在外網
(5)Border對VXLAN報文進行解封裝,學習GW 1的ARP信息,并通過VXLAN隧道回復ARP應答消息。//答復的是10.1.1.2的MAC地址
(6)GW 1對VXLAN報文進行解封裝,并獲取到10.1.1.2的ARP信息。
(7)GW 1根據獲取到的信息為VM 1發送的報文封裝鏈路層地址(10.1.1.2對應的MAC地址),并通過VXLAN隧道將報文發送給Border。
(8)Border對接收到的報文進行解封裝后,對報文進行三層轉發。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。