作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化暨分散式安全防護技術方案的介紹與推廣。 

 

在這個專欄開始時我們曾經討論過一個問題:現行的硬體網路架構設定,並無法達成資料中心內的網路傳輸路徑最優化。 回憶一下:若我們要達成傳輸路徑優化,那必須能讓各個虛擬機器在互相溝通時,無論是在同網段或不同網段,

 

  • 若兩個VM位在同一台伺服器上,就直接於此台伺服器的記憶體內進行封包交換
  • 若兩個VM位在同一個機箱內的兩台刀鋒伺服器上,封包交換應該要在此機箱的Inter-Connect Switch進行
  • 在同一個機櫃內的兩台不同伺服器上,封包交換最多應該走到機櫃的ToR (Top-of-Rack)交換器進行
  • 僅有在兩個不同機櫃的不同伺服器上,封包交換才需要透過核心交換器

 

用下面這張圖更進一步討論:左邊是一個很典型目前虛擬環境搭配實體網路設備的狀況,當我們有兩個虛機位於同一個刀鋒伺服器且是位於不同網段,當兩個虛機要互相溝通時

 

  • Routing不能在virtual switch內發生,因為無論是standard vSwitch / distributed vSwitch / 1000v等虛擬交換機,都僅有L2交換的功能
  • Routing不能在機箱內的Inter-Connect Switch發生,因為絕大部分刀鋒伺服器機箱的交換器都僅有L2的功能
  • 封包必須要往外送到支援L3的設備,一般來說至少是Top-of-Rack Switch,或甚至是核心交換器,才能做到網段的路由轉換

 

而右圖狀況當然也相同。在這樣的架構裡面,我們希望的傳輸優化是VM間的封包即使要過Routing,應該要在同一個vSphere Host上就進行路由交換,或兩台vSphere Host連接的最近交換器上進行。

 

圖說:現行實體網路架構內,不同網段間的VM傳輸,都得送到核心交換器進行

 

而如果採用虛擬路由器,比如說vCNS內的edge gateway,就能解決這樣的問題嗎?當然也沒辦法,反而同樣可能會有所謂的hair-pin traffic。如下圖,同樣在vSphere Host上的兩個VM,位於不同網段,要互相溝通時

 

圖說:虛擬路由器,如Edge Service Gateway or VM-based NFR方案,無法滿足路徑優化的需求

 

上圖內的路徑是類似這樣:

 

  1. 當VM-A要與VM-B溝通,因為兩個VM是位於不同的網段內,VM-A送出封包到同樣綠色網段的Default Gateway (On Edge Gateway)
  2. 藉由NSX內邏輯交換器的機制(如前述文章內描述),vSphere Host藉由VXLAN封裝VM-A送出的原始Ethernet Frame,送至Edge Gateway所在的Host
  3. 於目的地Host VXLAN解封裝,將原始Ethernet Frame送到Edge Gateway。Edge Gateway利用自己的本機路由表進行封包轉送,將封包由綠色網段轉送至橘色網段。於橘色網段內,透過ARP等機制確認VM-B的MAC地址,Edge Gateway發出Ethernet Frame將原封包往VM-B送出
  4. 同樣藉由邏輯交換器機制,封包透過VXLAN封裝後送回VM-B所在的Host,也就是原來的vSphere伺服器
  5. VXLAN解封裝後,還原成原始Ethernet Frame送給VM-B

 

明明是在同一個伺服器上的VM,卻要跑到Edge-Gateway所在的右邊伺服器上,可看出這樣的環境內,路徑並非是最佳化的。

 

藉由分散式邏輯路由器,NSX將路由的轉發作業由實體路由器或是獨立的虛擬機器Gateway,變成在vSphere Hypervisor上直接執行的網路功能。也就是說,路由轉發的作業,是在離虛擬機器最為接近的vSphere Host上就可進行。我們回到最早的例子內如下圖,當採用NSX內的DLR時,

 

圖說:採用分散式邏輯路由器時架構內,網路路徑能以最優化的方式進行

 

於左方,兩個VM都位在同一個vSphere Host上的例子。當有採用NSX分散式邏輯路由器時,VM所送出的封包直接於Host上接收到後,就進行路由轉發至目的網段;且vSphere Host知道目的虛機就位於自己身上,因此直接把封包送給目的虛擬機器。

 

於右方兩個VM位於不同刀鋒伺服器的例子。左邊VM所送出的封包送到vSphere Host上後,由邏輯路由器直接進行路由轉發至對應10.1.2.0網段之邏輯交換器。vSphere Host藉由前面文章所介紹的邏輯交換機制,發現目的虛機在另一個Host上,就藉由底層的VXLAN機制,將封包送到目的Host,並解封裝後送給目的VM。因為在同一個機箱內的不同刀鋒伺服器,上面VTEP的IP設定是在同一個L2網段內,因此VXLAN的封包轉送僅於L2內進行轉送,不需要往外走到實體核心交換器。也因此,網路實際路徑同樣是在最短的路徑內進行(於機箱內的交換器就進行傳輸)。

 

希望藉由上述的說明,能讓各位理解為何採用NSX邏輯路由器可達成資料中心內的路徑優化。在NSX架構內的核心交換器,僅需要負責進行機櫃與機櫃間的封包傳送,或是虛擬環境與外部實體環境間的封包傳送,但很大部分的虛擬機器間的網路流,可以直接在vSphere Host內,或是機箱 / 機架的交換器內就處理掉。因此用戶終於可以擺脫巨艦大砲的宿命,用最精簡、有效率的方式建置大型的資料中心網路。

 

下一篇文章內我們會更進一步與各位探討,在採用邏輯路由器時的Packet Walk是怎麼走的。