最近由微軟、Arista、英特爾、戴爾、惠普、Broadcom和Emulex向IETF提交的通用路由封裝(NVGRE)標準提案,和由思科、VMware、Citrix、紅帽、Arista和Broadcom提出的VXLAN標準,實際上都使用封裝策略來創建大量的VLAN子網,這些子網可以擴展到分散的數據中心和2、3層網絡。二者都旨在實現在云和專有網絡中共享負載均衡的多租賃網絡。
NVGRE通過租賃網絡標識符解決多租賃網絡問題
一個大型的云可以支持數以百計的租賃用戶,每個租賃用戶又可以同時運行多個應用,他們之間的流量都是相互隔離的。
目前,VLAN可以用來分隔流量,但是這種方法受限于幾個缺陷。例如,VLAN總是無法處理很多的容量分割需求。在一個大型的虛擬云環境中,每個應用都是由多個VM中運行的組件組成的,而每個應用交互的VM流量都必須分別位于獨立的VLAN中。結果:所需要的VLAN總數量很容易超出IEEE 802.1Q VLAN定義的上限:4,094。
當VM在物理服務器之間遷移時,又會出現第二個問題。VM遷移不得影響應用程序,因此,2層協議的地址必須保持不變。針對這種情況,網絡必須重新配置,將VLAN擴展到不同服務器,而這個過程很容易出錯。
通過指定24位的租賃網絡標識符(TNI),NVGRE解決了這些問題。每個TNI都定義了一個虛擬的2層網絡,最多支持1.6千萬個網絡。
NVGRE創建了一個虛擬2層網絡
NVGRE是一個由RFC 2784定義和RFC 2890擴展的通道協議,該協議提供了一種封裝方法,將數據包發送到2層或3層網絡目的地址。NVGRE提議使用GRE來創建一個獨立的虛擬2層網絡,限制物理2層網絡或擴展超過子網邊界。
每個TNI都與一個GRE通道相關聯。從通道終端發送的數據包會通過IP組播送往與同一個TNI相關的另一個終端。使用多播技術意味著通道可以擴展到3層網絡,將一個大型的廣播域劃分成多個較小的域,從而限制廣播流量。
NVGRE終端接收來自VM的以太網數據包,將它們封裝并通過GRE通道發送出去。終端會打開接收的數據包,將它們分配給對應的VM。雖然終端可能位于任意組件,但是一般情況下,它們都是在服務器的虛擬機管理程序中。
每個NVGRE終端都配置了一個或多個IP地址。每個IP地址叫做供應商地址(PA)。VM的IP地址是客戶地址(CA)。為終端配置多個PA就可以實現負載均衡。但這個提案并沒有定義流量如何根據特定CA或負載均衡算法分配給某個PA。
通過NVGRE標準隔離租賃數據
NVGRE終端通過在GRE頭插入INT指示符的方式分隔各個TNI。TNI指示符是位于RFC 2890規定的關鍵域中。雖然該關鍵域定義為32位域,但是TNT會占用24位,其余8位為保留位。NVGRE不使用RFC定義的序列號。
封裝了數據包的NVGRE終端必須定義數據包發送的目標地址。目前,NVGRE提議草案將這個問題延遲到后續版本,它規定:“控制面板可以使用任意技術進行配置、發現和分配策略信息”。
通過NVGRE將整個子網遷移到云中
雖然提案并沒有指定CA和PA地址的配置方法,但是它可以靜態、動態或使用無狀態地址自動配置方式來解決分配問題。IPv4或IPv6都是可以使用的。CA能配置IPv4地址,同樣的,PA也能配置IPv6地址空間。
根據NVGRE提案,這個標準旨在讓企業能夠將整個子網遷移到云中。子網的一部分可以遷移,而剩下的運行在企業網絡中,這樣,VPN就可以將云連接到企業網絡中。
有效使用網絡需要在多個網絡路徑中分散流量。提案規定,諸如ECMP的技術可以與保留的8位GRE頭關鍵域一起使用,支持多路徑使用。這個提案并不包括實現負載均衡流的算法細節。另一個實現ECMP的方法是在服務器中分配多個PA。然后,交換機可以在PA的路由中分散傳輸流量。
NVGRE標準與VXLAN標準
很明顯,兩個提案都解決了相同的問題:4094個VLAN無法支持多個云租賃和應用程序。提案的其他主要相似點包括:
引入了新的24位標識符
使用通道在網絡和子網邊界傳輸數據包
使用組播來連接網絡VM中運行的應用程序組件
這兩個提案的不同之處在于存儲目標地址的位置。VXLAN提案詳細地描述了數據包是如何通過通道尋找到目標終端。而NVGRE提案將定位目標的方法延遲到后續版本。
兩種提案都認為負載均衡是實現有效運營的必要條件。VXLAN解釋了如何通過隨機分配端口號來分散負載。NVGRE建議使用GRE關鍵域中的保留8位,但是沒有詳細介紹它們的使用方法。
總之,VXLAN更為全面。思科和VMware都發布了支持這個標準的產品。而NVGRE提案還需要進一步完善,才能發布產品。