楊艷梅 盧 菁
(上海理工大學光電信息與計算機工程學院 上海 200093)
?
基于標簽的SDN控制邏輯更新策略研究
楊艷梅 盧 菁
(上海理工大學光電信息與計算機工程學院 上海 200093)
為減少控制邏輯更新導致的網絡時延,改進基于標簽的兩階段更新策略中的等待機制。改進后的機制中,控制器依次向新轉發路徑上的所有交換機安裝新的控制邏輯,轉發路徑上的入口交換機為數據流打上標簽(設置VLAN id),出口交換機去掉標簽,中間交換機根據數據流是否設置了標簽來決定是否發送packet_in。在Open vSwitch中實現了該機制,并通過Mininet仿真實驗驗證了該機制的可行性和有效性。
軟件定義網絡 控制邏輯更新 端到端時延 丟包 Open vSwitch
軟件定義網絡SDN[1],是一種新型網絡創新架構,其核心思想是將網絡設備控制平面與數據平面分離開來。數據平面只負責轉發數據;控制平面向數據平面下發控制邏輯,同時又向業務平面(應用程序)提供API;業務平面通過這些接口來集中配置、管理網絡設備。
目前基于OpenFlow的SDN 技術在數據中心等特定領域已有部署應用。然而 SDN 這種管控分離架構和OpenFlow協議本身都還不是很成熟,面臨著許多還未解決的問題[1,2],如轉發平面的設計問題、控制平面的可擴展性、控制邏輯的一致性等。本文針對控制邏輯的一致性這一問題進行研究。
在SDN中,為了實現路由切換、負載均衡、網絡維護等,需要更新各交換機上的控制邏輯,并確保控制邏輯的一致性。該一致性包含三個方面:首先是一個應用業務產生的控制邏輯要一致,即確保多條控制邏輯之間不能沖突,而且要確定多條控制邏輯的更新順序[3];其次是多個應用業務同時更新一個交換機的控制邏輯時,如何保證所有控制邏輯不沖突[4];再次是將一條控制邏輯更新到各個網絡設備時,如何保證該控制邏輯在各網絡設備上的一致性。本文將對最后一個問題進行研究。
控制邏輯更新時,要保證數據流只能按照新的控制邏輯或者只能按照舊的控制邏輯來處理,而不能同時被新舊兩種控制邏輯處理。這個一致性更新問題的成果主要有基于時間的更新和基于標簽的兩階段更新。
文獻[5]提出了一種基于平均時延的一致性解決方案。該方案中,SDN控制器維護網絡拓撲和所有網絡節點間的平均時延,然后根據時延計算出控制邏輯在各個交換機上的安裝時刻以避免控制邏輯的不一致。文獻[6]首先對所有交換機進行時鐘同步;然后把控制邏輯依次下發到各交換機,同時告訴交換機加載該控制邏輯的時刻——在一條轉發路徑上,后面的交換機要比前面的交換機先加載。該機制被納入最新的OpenFlow 1.5規范。
基于標簽的兩階段更新[7]利用不同的VLAN標簽來標識新舊兩種控制邏輯。第一階段將新的控制邏輯下發到除入口交換機以外的其他后續交換機。第二階段是等第一階段完成之后再把新的控制邏輯下發到入口交換機。入口交換機為新進入的數據流打上新的標簽,后續交換機根據不同的標簽而用新舊兩種控制邏輯轉發數據流,出口交換機再把標簽去掉。等舊控制邏輯上的數據流都離開網絡之后,刪除舊的控制邏輯,至此完成整個更新操作。文獻[8]為減少兩階段更新過程中新舊控制邏輯所占流表空間,用通配符標簽對新舊控制邏輯進行合并。
OpenFlow協議[9]用TCP來確保發出的控制邏輯能到達對端,對控制邏輯的更新都是采用異步方式。當一條控制邏輯成功安裝在交換機上時不會給SDN控制器返回確認消息,只有安裝失敗或沖突時才會返回錯誤報告消息。因此兩階段更新等待機制很難實現,只能維護最大網絡時延,以及控制器和交換機之間的最大網絡時延,等一定時間再做下一步操作[5];而這個最大時延的維護相對復雜。文獻[6]需要同步交換機的時鐘,可以解決第一個等待問題,但第二個等待還是沒能很好解決。
減少兩階段更新中的第一個等待時間,可以更快地建立新的轉發路徑,交換機或控制器所需緩存的數據包也就越少,一定程度上可以減少端到端時延和丟包。為了盡快建立新的轉發路徑,本文對文獻[7]的兩階段更新機制TPU(Two Phase Update)的等待機制進行了修改,提出一種改進的基于標簽兩階段更新方案ETPU(Enhanced Two Phase Update)。
圖1為一校園網宿舍區拓撲圖,從左到右依次為核心路由器、分流交換機、防火墻交換機、核心交換機、匯集交換機和接入交換機。為實現負載均衡,將一數據流的轉發路徑由S1->S3->S4->S5更新為S1->S3->S4->S6。

圖1 網絡拓撲圖
首先,控制器為該數據流計算新的轉發路徑,同時將新的控制邏輯依次下發到所有交換機(按照S1->S3->S4->S6的順序)。入口交換機(S1)為數據流執行PUSH操作,打上新的VLAN標簽(如原VLAN id加1,VLAN id占12 Bit),出口交換機執行POP操作把VLAN標簽去掉。新的數據包有可能在新的控制邏輯之前到達后續的交換機(如S3),該交換機根據匹配字段查找控制邏輯時將會失敗,通常交換機會往控制器發Packet-In消息去請求控制邏輯。
這時對OpenFlow交換機的行為加以修改:如果查找失敗的數據包中包含VLAN標簽,則認為VLAN標簽為控制器所設置,該數據包已經被控制器處理過,控制器已經為該數據包建立了轉發路徑。該交換機為轉發路徑上的一個節點,新的控制邏輯還沒有到達該交換機,因此該交換機僅緩存數據包并等待新的控制邏輯,而不發送Packet-In消息;新的控制邏輯成功安裝之后再根據新的控制邏輯來轉發緩存的數據包。
其次,針對何時刪除舊的控制邏輯這一問題,多數文獻是等待一個網絡時延之后由控制器發控制報文去刪除。本文曾嘗試獲取各交換機基于控制邏輯所處理的數據包個數,然后進行比較,進而判斷數據包是否已離開出口交換機。實驗表明其在某些網絡拓撲場景下可行,而有些場景下獲取數據包個數的控制報文往返用時反而大于最大網絡時延,而且網絡負載重時丟包嚴重,仍需依靠超時機制。為此,本文也將采用等待一定時間之后由控制器依次發送控制報文去刪除舊的控制邏輯的方法。不同的是等待時間變為從發完新控制邏輯開始等待最大網絡時延加上控制器到新轉發路徑上初始交換機的時延。
Open vSwitch的實現分為用戶空間進程和內核模塊,如圖2所示。內核模塊維護一張精確匹配的快速轉發表,根據該流表實現對數據包的快速處理。用戶空間進程(ovs-vswitchd)接收控制器下發的控制邏輯,維護一張包含通配符的流表和一張精確匹配的慢路徑轉發表,并將該精確匹配的慢路徑轉發表映射到內核空間的快路徑流表。

圖2 Open vSwitch消息處理流程圖
Open vSwitch對一個新的數據包的處理流程如下:
1) 從網卡收到一個數據包;
2) 內核空間函數ovs_dp_process_received_packet()(datapath/datapath.c),查找流表并執行相應action;
3) 若沒匹配到控制邏輯,則通過netLinks將該數據包傳到用戶空間;
4) 用戶空間的ovs-vswitchd調用handle_miss_upcalls()(ofproto/ofproto-dpif.c)對其進行處理,查找是否有與flow精確匹配的規則;
5) 如果不存在,則調用handle_flow_miss_common()向控制器發送packet_in;
6) 控制器向交換機中添加一條新的控制邏輯;
7) 將該規則同時保存到用戶空間和內核空間的流表;
8) 發送緩存的數據包;
9) 查找流表并做相應操作;
10) 把數據包從相應的端口發出去。
本文的做法是在第4步和第5步之間加一步:檢查數據包中是否設置了VLAN id。如設置則認為該數據包已經被控制器處理過,控制器已經為該數據流建立了轉發路徑。該交換機是轉發路徑上的一個節點,控制邏輯還沒有到達該交換機,因此不再發送packet_in,而是把數據包緩存起來等待新的控制邏輯。如不存在VLAN id則表明是新的數據流,然后執行第5步。
為了驗證本文方案的可行性,用Mininet網絡仿真平臺對該方案和文獻[7]中的兩階段更新機制分別進行仿真實驗,然后從控制邏輯更新時的網絡時延和丟包個數這兩個方面進行分析。
Mininet是一個極為輕量級的網絡仿真平臺,支持OpenFlow協議,可以通過OpenFlow協議連接外部的Open vSwitch和SDN控制器。本實驗中,基于POX網絡控制器來編寫控制邏輯更新算法;基于Open vSwitch1.9版本的代碼進行修改,在交換機中實現第2節中的機制。
仿真網絡拓撲如圖1所示,其中核心交換機(S5,S6)左邊的所有鏈路參數設置為bw=10,delay=1 ms,max_queue_size=40,loss=0,其中帶寬(bw)為10 Mbits/sec;核心交換機(S5,S6)右邊的所有鏈路參數為bw=5,delay=2 ms,max_queue_size=20,loss=0。為了測時延和丟包個數,我們分別在H1、H2和控制器上用tcpdump來抓包,并用Linux網絡性能測試工具iperf從H1發UDP包到H2。包的大小為1470 Bytes,發包速率為2 Mbits/sec,發包持續時間為10秒,每組執行10次取平均值。時延包括控制邏輯的更新周期和更新時影響到的包的平均時延,更新周期為從開始發新的控制邏輯到發完最后一條后刪除舊控制邏輯為止;丟包個數為10秒內的丟包個數。文獻[7]和本文的更新周期、端到端時延都受網絡規模的影響,因此將用圖1中的兩種路徑更新來分別比較更新周期和時延:P1=[S4,S5,S8,S10] 更新為P1′=[S4,S6,S8,S10];P2=[S1,S2,S4,S5,S8,S10]更新為P2′=[S1,S3,S4,S6,S8,S10]。
3.1 時 延
通過在交換機上抓包發現網絡最大時延為8.1 ms(S1到S11),控制器到交換機的最大時延為7.1 ms(C到S11)。時延仿真結果如表1所示,其中前兩行為控制器觸發的更新時延,后兩行為交換機觸發的更新時延,單位為毫秒(ms)。

表1 ETPU和TPU更新周期及時延
控制器觸發控制邏輯更新時,ETPU的更新周期為最大網絡時延,而TPU的更新周期需要加上控制器到交換機的最大網絡時延。在圖1的網絡拓撲下,本文方案的更新機制對數據包傳輸幾乎沒有影響,只比穩定狀態下多了0.1 ms。這是因為更新操作是由控制器觸發的,沒有packet_in的延時。P1->P1'時,新的規則到達S4時,發往后續交換機的控制邏輯更新報文也到達了S4,所以S4幾乎同時轉發出去數據包和控制報文,后續交換機也是如此;P2->P2'時,后續交換機先于S1安裝好新的控制邏輯,所以不存在額外的時延。TPU的端到端時延也不受影響,因為它是先在后續交換機上更新好新的控制邏輯。這時并不可轉發新的數據包,只有當入口交換機安裝了新的控制邏輯之后才會有新的數據流被轉發。
當鏈路故障,比如把鏈路狀態設為down,由交換機觸發控制邏輯更新時,ETPU的更新周期和控制器觸發的更新相比則多了將控制邏輯下發到初始交換機的時延,因為是從收到packet_in開始計算;TPU的更新周期不變。ETPU中數據流的端到端時延和控制器觸發的更新相比多了packet_in的時延和初始交換機安裝新控制邏輯的時延;而TPU則增加了packet_in的時延、初始交換機安裝新控制邏輯的時延和控制器到交換機的最大網絡時延。ETPU比TPU少了控制器到交換機的最大網絡時延。
3.2 丟 包
控制器觸發的控制邏輯更新不影響網絡的時延和丟包,因此只比較交換機觸發的更新對丟包的影響。iperf的發包速率分別為2 Mbits/sec和5 Mbits/sec,10秒鐘發包的總數分別為1701和4250個。同樣采用上述兩種路徑更新,其結果如表2所示。更新前后兩種機制下數據包的傳輸都是一樣的,所以兩種機制下丟包個數的差別主要是控制邏輯更新過程的不同所致。可以看出,iperf發包慢時,兩者差別不大;但當發包速率較大、網絡負載較重時,交換機要緩存的數據包個數也較多;同時由于TP建立好新轉發路徑用時較長,所以丟包個數也較多。

表2 ETPU和TPU的丟包個數
SDN中控制邏輯的更新通常需要更新轉發路徑上的多個交換機,本文提出的ETPU能有效縮短由交換機觸發的新建轉發路徑所用時間,降低控制邏輯更新對數據包轉發的影響,即降低端到端時延和丟包率。仿真實驗結果表明,當網絡負載重時,ETPU效果更加明顯。本文機制不僅適用于控制邏輯更新,同樣也適用于為數據流建立初始轉發路徑。缺點是需要用一個標志位(本文用VLAN id)來標識數據流是否已經被控制器處理過,入口交換機設置該標志位,出口交換機再將其去掉。雖有失通用性,但實現簡單有效。
[1] 張朝昆,崔勇,唐翯祎,等.軟件定義網絡(SDN)進展研究[J].軟件學報,2015,26(1):62-81.
[2] Nunes B A A,Mendonca M,Nguyen X N,et al.A survey of software-defined networking:Past,present,and future of programmable networks[J].IEEE Communications Surveys and Tutorials,2014,16(3):1617-1634.
[3] Xin Jin,Hongqiang Harry Liu,Rohan Gandhi,et al.Dynamic scheduling of network updates[C]//Proceedings of the 2014 ACM conference on SIGCOMM,2014:539-550.
[4] Canini M,Kuznetsov P,Levin D,et al.Software transactional networking:Concurrent and consistent policy composition[C]//Proceedings of the 2nd ACM SIGCOMM Workshop on Hot Topics Software Defined Network,2013:1-6.
[5] 宋海權,郭進,侯孟書,等.基于網絡時延的SDN邏輯一致性策略研究[J].電子科技大學學報,2014,43(5):730-735.
[6] Mizrahi T,Saat E,Moses Y.Timed consistent network updates[C]//ACM SIGCOMM Symposium on SDN Research (SOSR),2015:326-339.
[7] Mark Reitblatt,Nate Foster,Jennifer Rexford,et al.Abstractions for network update[C]//Proceedings of the ACM SIGCOMM 2012 conference on Applications,technologies,architectures, and protocols for computer communication,2012:323-334.
[8] Luo Shouxi,Yu Hongfang,Li Lemin.Consistency is Not Easy:How to Use Two-phase Update for Wildcard Rules[J].IEEE Communications Letters,2015,19(3):347-350.
[9] Open Networking Foundation(ONF).Openflow switch specification,version 1.5.0[EB/OL].[2014-12-19].https://www.opennetworking.org/.
RESEARCH ON LABEL-BASED SDN CONTROL LOGIC UPDATE POLICY
Yang Yanmei Lu Jing
(SchoolofOptical-ElectricalandComputerEngineering,UniversityofShanghaiforScienceandTechnology,Shanghai200093,China)
To reduce the end-to-end network delay caused by control logic update, we improved the waiting mechanism of label-based two-phase update policy. In the improved mechanism, the controller installs new control logic to all switches in new forwarding path in turn, the ingress switches on forwarding path label the data flow (setting VLAN id); the egress switches remove the label; and the middle switches, according to whether the labels are set on data flow, decide to send packet_in to controller or not. This scheme has been implemented in Open vSwitch, and has been verified through Mininet simulation experiment its feasibility and effectiveness.
Software defined network Control logic update End-to-end network delay Packet loss Open vSwitch
2015-09-01。楊艷梅,實驗師,主研領域:無線自組網絡,軟件定義網絡。盧菁,講師。
TP393.0
A
10.3969/j.issn.1000-386x.2016.11.023