羅萱 馬塞 金耀輝



摘要:提出了一種新的基于軟件定義網絡的多區域網絡虛擬化模型。該模型引入了網絡區域的邏輯概念,在同一個區域中使用某種網絡虛擬化技術,在區域與區域的邊界通過控制平面的統一控制實現不同虛擬網絡標識符的轉換,完成跨區域交互。該模型可以同時兼容多種網絡虛擬化技術,實現高效率、可擴展、大規模的網絡虛擬化。
關鍵詞: 網絡虛擬化;虛擬網絡;軟件定義網絡;區域
網絡虛擬化通過將邏輯網絡功能和物理網絡設備解耦合,使得網絡資源可以方便地整合與擴展,可以大大地降低運營商的資本/運營支出[1-3]。在云計算環境中,網絡虛擬化將物理網絡劃分成多個虛擬網絡,在不同的虛擬網絡之間進行隔離,以保證租戶的隱私和安全。虛擬網絡的隔離主要體現在兩方面:第一,通過有效的封裝技術區分不同的虛擬網絡;第二,允許每個租戶在自己的虛擬網絡內自由定制地址空間。
為了實現網絡虛擬化,工業界提出了不少協議標準。虛擬局域網(VLAN)[4]協議是最廣泛使用的協議,操作需要較多的人工配置,最多支持4 096個虛擬網絡,無法滿足大規模數據中心的需求。虛擬可擴展局域網(VXLAN)[5]把二層以太網幀封裝到數據報協議(UDP)報文中,通過24比特的VXLAN網絡標簽(VNI)來區分不同的虛擬網絡。VXLAN依賴組播實現地址學習,需要通過VXLAN網關與物理設備(如防火墻/負載均衡器)相連。采用通用路由封裝的網絡虛擬化(NVGRE)[6]把二層以太網幀封裝到通用路由封裝協議(GRE)內,通過24比特的租戶網絡標識(TNI)租戶網絡。NVGRE需要在端到端之間建立隧道,隧道的數量隨終端數量增加以平方速率上升。無狀態傳輸隧道(STT)[7]使用64比特的內容標識虛擬網絡,把數據幀先進行分割再封裝到傳輸控制協議(TCP)報文中,利用網卡的硬件加速功能來提升效率。STT在TCP包頭中沒有維護TCP狀態信息,故被稱為無狀態TCP,隧道模式接近UDP模式。
這些協議各有優缺點,運營商需要根據實際應用場景選擇具體的技術路線。在選擇過程中,除了技術特點,運營商還面臨其他問題:
(1)設備支持
網絡虛擬化標準之爭愈演愈烈,交換機設備廠商或者支持VXLAN,或者支持NVGRE,很少有設備同時支持兩種協議。STT則需要物理網卡支持TCP分段卸載(TSO)或者大段卸載(LSO)。運營商的硬件選擇范圍受到限制。
(2)技術鎖定
現有的網絡虛擬化方案不支持多種虛擬化技術并存。運營商一旦選擇了某種虛擬化技術,就被鎖定了,無法為新的應用需求針對性的選擇虛擬化技術。
(3)原有設備兼容
運營商早期購買的交換機/網卡通常不支持VXLAN/NVGRE/STT等協議,如果沒有合適的解決方案,只能全部替換,造成巨大浪費。
針對上述問題,我們設計了基于軟件定義網絡(SDN)[8]的多區域網絡虛擬化模型,可以兼容多種網絡虛擬化技術,實現高效率、可擴展、大規模的網絡虛擬化。主要設計原理是利用SDN對網絡物理設備可控制的優勢,引入網絡區域(Zone)的邏輯概念,在同一個區域中使用某種網絡虛擬化技術,在區域與區域的邊界通過控制平面實現不同虛擬網絡標識符的轉換,完成跨區域交互。
1 多區域模型
1.1 區域
區域是一個包含一定數量的服務器與交換機的物理設備集合。整個網絡可以根據實際需求劃分為若干個區域,不同的區域通過邊界交換機互連。區域內的交換機(包括服務器上的虛擬交換機)和邊界交換機需要能夠支持同一種網絡虛擬化技術,實現區域內的虛擬網絡隔離。多區域網絡虛擬化模型如圖1所示。區域X采用VXLAN,區域Y采用NVGRE。每個區域擁有自己的控制平面,負責區域內的配置。
1.2 虛擬網絡片段
虛擬網絡可以在一個區域內,也可以跨多個區域。虛擬網絡在每一個區域中被稱為一個虛擬網絡片段,多個虛擬網絡片段通過域間的邊界交換機級聯成一個虛擬網絡。如圖1中,虛擬網絡A僅分布在區域X中,擁有一個虛擬網絡片段A1;虛擬網絡B分布在區域X和區域Y中,擁有兩個虛擬網絡片段B1和B2。
1.3 虛擬網絡標簽
虛擬網絡標簽是實現虛擬網絡隔離的關鍵。虛擬網絡標簽的格式為{區域:標識符,[區域:標識符]……},利用每一個區域內所采用網絡虛擬化技術的虛擬網絡標識符唯一標識其對應的虛擬網絡片段,從而在不增加任何封裝開銷的前提下唯一標識一個虛擬網絡。
1.4 標識符轉換
當虛擬網絡有多個虛擬網絡片段時,需要在邊界交換機處對報文進行解封裝和重新封裝,更換標識符,使得兩個虛擬網絡片段可以互通。邊界交換機為SDN交換機,需要同時支持所有相鄰區域的網絡虛擬化技術。邊界交換機根據SDN控制器下發的配置,實現動態標識符轉換,支持虛擬網絡的動態修改。邊界交換機標識符轉換過程如圖2所示。
1.5 虛擬網絡管理者
虛擬網絡管理者負責管理虛擬網絡與虛擬網絡片段之間的映射關系。虛擬網絡管理者通常作為云計算平臺的一部分,向用戶/應用提供定義良好的應用編程接口(API),用于動態創建/刪除/更新虛擬網絡。當收到請求時,虛擬網絡管理者根據虛擬機的分布、物理網絡拓撲以及區域的劃分,將虛擬網絡嵌入到物理網絡中,計算需要多少個虛擬網絡片段以及每個虛擬網絡片段的邊緣交換機端口,分配虛擬網絡標簽,然后調用對應區域的控制平面,配置交換機建立區域內的虛擬網絡連接。與此同時,虛擬網絡管理者將虛擬網絡片段之間的對應關系發送給SDN控制器,由SDN控制器負責下發配置給邊界交換機,實現標識符轉換。
2 實現
2.1 區域劃分
除了同區域交換機必須支持相同的網絡虛擬化技術,區域劃分策略還可能受到其他因素影響:
(1)虛擬網絡規模
VLAN最多支持4 096個虛擬網絡。通過劃分N個區域,將一個虛擬網絡盡量嵌入到一個區域中,理想情況下可以將支持的虛擬網絡數目擴大N倍。
(2)系統開銷
GRE隧道的數目隨著終端數目增加以平方速率增長。通過合理控制區域中的服務器/交換機數目,可以有效控制系統開銷。
2.2 虛擬網絡嵌入
虛擬網絡嵌入是非線性編程-硬(NP-hard)問題,計算復雜度隨物理網絡資源規模增加而急劇增加[9]。在我們的模型中,虛擬網絡嵌入分為兩步:虛擬網絡分解為若干個虛擬網絡片段,區域內虛擬網絡片段的嵌入。
為了實現簡單,我們盡量將虛擬網絡嵌入到一個區域內,降低跨區域引起的標識符轉換開銷。在某些情況下,虛擬網絡會被分為多個片段:
(1)策略需要
當網絡區域劃分與其他策略(如災備區域劃分)結合起來時,將一個虛擬網絡劃分成多個虛擬網絡片段,使得一個虛擬網絡中的虛擬機能處于不同的區域中,實現災備等功能。
(2)物理資源受限
一個區域的物理資源是有限的,包括服務器和交換機。當新增需求超過了區域內可用資源時,可以將需求分布在多個區域中。例如,某個用戶需要150臺2核CPU的虛擬機,連接在一個虛擬網絡中,而每個區域可用CPU都只有200核。此時,虛擬網絡將被迫分為多個片段,通過多個區域的物理資源提供用戶所需要的150臺2核CPU的虛擬機。
區域內虛擬網絡片段的嵌入可以使用任意已有的嵌入算法。
2.3 區域內網絡虛擬化
區域控制平面有很多現成的解決方案,可以集成到我們的模型中,只需要其能提供API供虛擬網絡管理者調用,配置虛擬網絡連接。
下面將介紹如何用SDN實現區域內網絡虛擬化。
我們將區域內的交換機分為兩種:邊緣交換機和中間交換機。所有與虛機直接相連的交換機(即虛擬交換機)都是邊緣交換機,其他交換機則是中間交換機。邊緣交換機負責對數據包進行封裝/解封裝,支持開放流協議(OpenFlow)[10-11],可以通過OpenFlow控制器進行管理。中間交換機只要能夠支持隧道的建立,可以不用支持OpenFlow。為了更好地控制虛擬網絡之間的安全隔離以及防止廣播包的洪泛,所有邊緣交換機上添加一條最低優先級的流表,默認丟棄所有的數據包。當有虛擬網連接需要建立時,通過添加更高級別的流表來允許此虛擬網的數據包通過。
控制平面主要包括3個模塊:
(1)拓撲管理模塊
控制器使用鏈路層發現協議(LLDP)[12]實現物理拓撲自動發現。對于支持OpenFlow協議的交換機,通過發送帶LLDP數據包的Packet-out消息,觸發相鄰OpenFlow交換機發送Packet-in消息,從而獲知兩臺交換機之間的連接情況。對于不支持OpenFlow協議的交換機,控制器通過簡單網絡管理協議從交換機的管理信息庫讀取相鄰鏈路信息。
(2)路徑計算模塊
根據輸入的虛機位置,調用路由算法尋找網絡路徑。模塊與路由算法解耦和,可以根據需求動態調用不同的路由算法。
(3)虛擬網絡服務模塊
此模塊負責維護虛擬網絡片段與區域內物理網絡之間的映射關系。當虛擬網絡片段中有虛機加入/離開/遷移時,虛擬網絡服務模塊調用路徑計算模塊計算新的路徑,下發配置給交換機,更新虛擬網絡片段。
對于虛擬網絡片段VN-X,當虛機VM-X被創建后,OpenFlow控制器在虛機VM-X所在的邊緣交換機上創建一個端口P-X,并將端口P-X連接到虛機VM-X。如果虛機VM-X是虛擬網絡片段VN-X在此邊緣交換機上的第一臺虛機,從此邊緣交換機建立到其他擁有屬于虛擬網絡片段VN-X虛機的邊緣交換機的隧道。
然后,控制器在邊緣交換機上配置3條流表:
(1)給從端口P發出的報文加上對應的虛擬網絡標識符I,并發送到對應的隧道中,使得虛機V發出的報文能夠進入虛擬網絡。
(2)將擁有相同虛擬網絡標識符I的廣播包去除標識符并發到端口P,使得虛機V能收到所屬虛擬網絡的廣播包。
(3)將擁有相同虛擬網絡標識符I且目的媒體訪問控制(MAC)地址為虛機V的MAC地址的單播包去除標識符并發到端口P,確保虛機V只收到應該收到的報文。
2.4 邊界交換機
邊界交換機需要支持OpenFlow協議和相鄰區域所采用的網絡虛擬化技術。當虛擬網絡VN-X僅在一個區域內時,邊界交換機上無需做相應配置。如果虛擬網絡VN-X分布在邊界交換機相鄰的M個區域時,OpenFlow控制器從邊界交換機建立到這M個區域中所有擁有屬于虛擬網絡VN-X的虛機的邊緣交換機的隧道,然后在邊界交換機上配置流表:
(1)對于廣播包,逐一更換相應的標識符,從接收到的隧道轉發給所有其他虛擬網絡VN-X的隧道。
(2)對于單播包,根據MAC地址,更換相應的標識符,轉發到連接到目的虛機所在邊緣交換機的隧道。
3 演示
我們搭建了一個演示環境,用于證明多種網絡虛擬化技術可以共存在多區域網絡虛擬化模型中。演示環境如圖3所示。Floodlight[13]是一款基于Java開發的開源OpenFlow控制器,支持OpenFlow協議v1.0版本。我們在Floodlight基礎上做了擴展實現SDN控制器。OpenStack[14]是開源云計算平臺的領導者,其中的Neutron項目負責提供虛擬網絡連接服務。Neutron采用可擴展的Plugin架構,支持使用不同的網絡虛擬化技術。Floodligth為Neutron實現了一個Plugin架構[15],我們在這個Plugin基礎上,實現了虛擬網絡管理者。虛擬網絡管理者在啟動的時候會載入一個配置文件。配置文件中記錄了區域劃分信息、每一個區域支持的網絡虛擬化技術以及可用的標識符區間。在演示環境中,網絡被劃分為3個區域,其中區域1和區域2采用VLAN,區域3采用GRE。虛擬網絡嵌入使用OpenStack默認的調度算法。
3.1 區域內連接與隔離
我們使用OpenStack控制節點創建兩個虛擬網絡A和B,使用相同的地址空間。區域2內創建了4臺虛機,其中虛機2和虛機3屬于虛擬網絡A,分別分配地址10.0.0.3和10.0.0.4;虛機4和虛機5屬于虛擬網絡B,分別分配地址10.0.0.2和10.0.0.3。控制器在區域2內創建了2個虛擬網絡片段A2和B1,分別分配標識符VLAN ID 10和VLAN ID 20。
我們使用Ping命令測試虛機之間的可達性,并使用Tcpdump工具進行抓包。測試結果顯示,虛擬2和虛機3之間能夠相互訪問,但不能訪問虛機4和虛機5,也偵聽不到虛機4和虛機5發出的廣播包;反之亦然。這說明虛擬網絡A和B擁有獨立的地址空間,并且相互隔離。
3.2 跨不同網絡虛機化技術區域的
虛擬網絡
區域2和區域3使用了不同的網絡虛擬化技術。在3.1節基礎上,我們使用OpenStack控制節點在區域3內創建虛機6,并加入虛擬網絡B。控制器會在區域3內創建虛擬網絡片段B2,分配標識符GRE key 100;然后配置邊界交換機B,對區域2的標識符VLAN ID 20和區域3的標識符GRE key 100進行轉換。測試結果顯示虛機6能與虛機4和虛機5相互訪問,不能訪問虛機2和虛機3。這表明虛擬網絡可以跨不同網絡虛擬化技術區域實現。
3.3 跨相同網絡虛機化技術區域的
虛擬網絡
區域1和區域2使用了相同的網絡虛擬化技術。在3.1節基礎上,我們使用OpenStack控制節點在區域1內創建虛機1,并加入虛擬網絡A。控制器會在區域1內創建虛擬網絡片段A1,分配標識符VLAN ID 20;然后配置邊界交換機A,對區域1的標識符VLAN ID 20和區域2的標識符VLAN ID 10進行轉換。測試結果顯示虛機1能與虛機2和虛機3相互訪問;雖然虛機4和虛機5在區域2內使用的標識符也是VLAN ID 20,但不能與虛機1互相訪問。這表明虛擬網絡可以跨相同網絡虛擬化技術區域實現,不同區域內的虛擬網絡標識符空間獨立。
4 結束語
本文提出了一種新型的多區域網絡虛擬化模型,將物理網絡劃分為多個區域,可以同時兼容多種網絡虛擬化技術,實現網絡平滑升級。我們基于開源軟件搭建了一個原型系統,驗證了模型的可行性。
參考文獻
[1] SHEN W, MINATO K, TSUKISHIMA Y, et al. Implementation of a novel management development [C]//Proceedings of the Network Operations and Management Symposium (APNOMS), 2013 15th Asia-Pacific. 2013
[2] CHOWDHURY N M, BOUTABA R. Network virtualization: state of the art and research challenges [J]. Communications Magazine, IEEE, 2009, 47(7): 20-26.
[3] CHOWDHURY N M, BOUTABA R. A survey of network virtualization [J]. Computer Networks, 2010, 54(5): 862-876.
[4] IEEE 802.1q. VLAN [S]. IEEE, 2005.
[5] IETF drafts. VXLAN: A Framework for Overlaying Virtualized Layer 2 Networks over Layer 3 Networks [S]. IETF, 2014.
[6] IETF drafts. NVGRE: Network Virtualization using Generic Routing Encapsulation [S]. IETF, 2014.
[7] IETF drafts. A Stateless Transport Tunneling Protocol for Network Virtualization (STT) [S]. IETF, 2013
[8] WIKIPEDIA. Software-defined networking [EB/OL]. (2014-02-28). http://en.wikipedia.org/wiki/Software-defined_networking.
[9] YU M, YI Y, REXFORD J, et al. Rethinking virtual network embedding: substrate support for path splitting and migration [J]. SIGCOMM Computer Communication Review, 2008,38(4): 19-29.
[10] MCKEOWN N. OpenFlow: Enabling Innovation in Campus Networks [J]. SIGCOMM Computer Communication Review, 2008,38(4): 69-74.
[11] OpenFlow specification v1.4.0. [EB/OL]. (2014-02-28). https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-spec-v1.4.0.pdf.
[12] IEEE 802.1AB-2009. Station and Media Access Control Connectivity Discovery [S]. IEEE, 2009.
[13] Floodligth [EB/OL]. (2014-02-28). http://www.projectfloodlight.org/floodlight/.
[14] OpenStack: Open Source Cloud Computing Software [EB/OL]. (2014-02-28). https://www.openstack.org/.
[15] Floodlight plugin for neutron: [EB/OL]. (2014-02-28). https://github.com/openstack/neutron/tree/master/neutron/plugins/bigswitch.