楊帆,晏思宇,黃韜
?
OVS的編程擴展技術
楊帆,晏思宇,黃韜
(北京郵電大學,北京 100876)
OVS(open vSwitch)作為一款開源的SDN軟件交換機,得到了廣泛關注。但在復雜多變的網絡環(huán)境下,易出現數據層失去控制器控制和流表項學習老化等故障問題,嚴重制約了SDN性能。針對以上問題,研究設計了OVS的編程擴展技術架構,包含鏈接狀態(tài)處理、故障感知、二三層自學習轉發(fā)等核心功能的擴展,使OVS實現自動快速恢復、流表表項及時更新,保障了SDN吞吐量,從而減小了控制器失聯對通信的影響,增強了SDN的穩(wěn)定性和可靠性。
OVS;SDN;OpenFlow;軟件交換機
Open vSwitch(OVS)[1]是開源的SDN數據平面軟件交換設備[2,3],是SDN的重要組成部分。隨著通用處理器性能的不斷提升,SDN軟件交換設備性能逐步增強[4,5],基于OVS構建的SDN越來越受到業(yè)界的追捧和青睞。但由于SDN的集中式架構,OVS很容易受到諸如控制器宕機或切換、控制器應用故障、控制層鏈路擁塞或斷開、人為控制層配置錯誤等故障問題影響[6-8],造成通信中斷,給SDN的安全性和可靠性帶來了極大的挑戰(zhàn)[9]。本文設計了一種OVS的編程擴展技術架構,建立完全兼容OpenFlow通道[10]的OVS自學習體制,可以提高SDN恢復時間,保障故障場景下二層、三層正常通信,提升SDN的穩(wěn)定性和可擴展性[11]。
2.1 總體架構設計
OVS架構可分為用戶層、內核層、配置管理層3個主要部分[1,10]。其中,內核層包含了流表和一個或多個數據通路模塊,主要負責對數據分組進行操作;用戶層中運行著OVS的守護進程和數據庫,它們是OVS的核心功能模塊;配置管理層主要用于和守護進程、數據庫之間進行交互操作以及OVS的安裝配置和部署。
目前OVS使用雙通道來實現故障場景下的轉發(fā)性能[1,10],即允許進入OVS的數據分組先進入OpenFlow通道,然后通過normal或flood保留端口再進入傳統(tǒng)通道,按照傳統(tǒng)協議完成二層轉發(fā)功能,以此來保障控制器失效后數據分組的轉發(fā)。為了改善normal模式目前無法支持三層路由功能、使用雙通道進入故障場景狀態(tài)時間較長、安全性能不足且使用傳統(tǒng)通道與SDN思想相違背等問題,設計實現OVS的編程擴展技術架構,具有以下特點。
(1)完全兼容OpenFlow
傳統(tǒng)OVS使用雙通道處理數據分組,兼容性較差,基于OVS編程擴展技術實現新的轉發(fā)體系,在OpenFlow基礎上進行設計,故障情況下,數據分組經由OpenFlow通道處理,與OpenFlow完全兼容,保留OpenFlow與SDN技術靈活性、擴展性等優(yōu)點。
(2)支持三層路由功能
目前使用normal模式處理數據分組無法支持三層路由功能,僅能實現二層轉發(fā),基于OVS擴展技術的新的轉發(fā)體系設計使用RIP(routing information protocol,路由信息協議)以實現三層路由功能。
(3)減短故障恢復時間
在傳統(tǒng)OVS解決方案中,不能及時檢測到控制器連接失效,故障恢復時間較長,嚴重影響SDN控制器失效場景下底層網絡通信的性能。OVS編程擴展技術通過設計連接故障檢測機制,快速感知故障的發(fā)生,并且通過狀態(tài)匹配進行故障的平滑切換,縮短故障恢復時間。
(4)增強安全性管理
使用傳統(tǒng)OVS通道轉發(fā)的數據分組不受控制,無法對數據分組進行安全檢測和控制流向,存在安全性問題。研究設計的OVS編程擴展技術可通過連接狀態(tài)匹配,完成斷開狀態(tài)下對數據分組的控制策略,增強控制范圍和安全性。
(5)及時適應網絡拓撲變化
OVS編程擴展技術設計新的轉發(fā)體系,其轉發(fā)機制完全受OVS中流表的控制,控制轉發(fā)的流表能夠及時學習以及老化,使OVS能迅速適應網絡拓撲的變化,避免造成網絡拓撲變化導致數據分組錯誤轉發(fā)的情況。
圖1是設計的OVS編程擴展技術架構,通過開發(fā)OpenFlow消息處理模塊、狀態(tài)的跟蹤/分發(fā)/添加模塊、應用感知服務模塊、vPort數據分組處理模塊、數據通道流表匹配模塊等實現故障檢測機制、二層自學習、三層路由轉發(fā)和OVS災備流表的設計,其擴展功能主要包括狀態(tài)檢測擴展、轉發(fā)擴展和信息更新擴展。
2.2 狀態(tài)檢測擴展
通過狀態(tài)檢測擴展,OVS交換機可以實時動態(tài)地監(jiān)測控制器的可用性。控制器發(fā)生故障失效后,擴展后的OVS交換機可以依賴連接狀態(tài)檢測機制使得SDN平滑進入災備模式,保持數據平面通信,實現SDN的穩(wěn)定性和可靠性。狀態(tài)檢測機制通過探測消息來動態(tài)檢測控制器的活動狀態(tài),并且為了保證探測的及時性,會通過往返時延動態(tài)調整探針的發(fā)送間隔。對于SDN的可靠性保障,連接狀態(tài)主要分為連接正常和連接中斷兩種狀態(tài)。當連接狀態(tài)正常時,OVS交換機由SDN控制器正常管控,完成網絡的路由和通信;當連接狀態(tài)處于中繼狀態(tài)時,網關設備進入災備模式。OVS編程擴展技術中的狀態(tài)檢測機通過拓展OpenFlow協議匹配字段,設計連接狀態(tài)檢測和匹配功能,當數據分組到達OVS交換機時,會得到實時的控制器與交換設備間的連接狀態(tài),以此通過匹配流表狀態(tài)完成相應動作。
2.3 轉發(fā)擴展
轉發(fā)擴展包含兩種情況:二層轉發(fā)擴展和三層轉發(fā)擴展。根據實際故障場景和組網的差異性,在SDN中會出現:一種是基本的二層轉發(fā),數據分組不需要修改MAC地址直接進行匹配轉發(fā)即可;另一種是需要不同網段的路由轉發(fā),對數據分組頭進行地址修改。
二層轉發(fā)擴展:通過設計的狀態(tài)匹配自學習模塊即可實現。對于進入此故障域的數據分組,匹配自學習表項,然后跳轉到流表進行匹配轉發(fā),如果匹配失敗,則只需要通過簡單的泛洪機制轉發(fā)至網絡域內所有設備即可。
三層轉發(fā)擴展:除結合二層轉發(fā)擴展外,需要在轉發(fā)前對原MAC地址和目的MAC地址進行修改。通過拓展OpenFlow的ARP機制來探測獲取目的地址,然后修改數據分組的目的地址進行轉發(fā)。此外,對于三層轉發(fā)擴展的自學習功能,學習到的新表項指令需要含有二層MAC地址修改動作。
2.4 信息更新擴展
信息更新擴展用于故障恢復后幫助控制器獲取最新的網絡信息,主要包括當前拓撲信息和最新流表信息??刂破鞴收匣謴椭匦陆尤牒?,會通過向OVS交換機發(fā)送流表請求消息,重新讀取交換機和網關的最新流表信息,完成控制器在故障恢復后的信息更新工作。
故障恢復控制器重接入SDN后,網絡拓撲可能已經發(fā)生變化,某些交換機中原有的表項信息可能已經過期失效。因此,控制器重新接入網絡后,會通過獲取的最新拓撲信息和舊的拓撲信息,進行拓撲節(jié)點連接對比,然后對數據庫中獲取到的最新流表信息進行拓撲的有效性檢測,將錯誤的流表從數據庫中刪除,并下發(fā)指令從相應交換機中刪除或更新。如圖2所示,控制器重新連接后,網絡拓撲已經發(fā)生變化,控制器保存的原有交換機1的流表信息會出現錯誤,通過信息更新擴展,控制器下發(fā)指令進行信息更新與刪除。
OVS是在開源的Apache 2.0許可下的產品級質量的多層虛擬交換機,支持標準的管理接口和協議,目前廣泛應用于SDN中[12-14]。OVS的編程擴展技術基于OVS進行設計實現,兼容OpenFlow通道,主要設計開發(fā)連接狀態(tài)檢測機制、自學習機制、災備機制、三層路由轉發(fā)等功能模塊,實現保障故障場景下SDN的通信吞吐能力。
3.1 連接狀態(tài)檢測機制實現
連接狀態(tài)檢測機制通過擴展OpenFlow的無狀態(tài)字段,向流表匹配域中增加狀態(tài)匹配字段,主要通過控制器連接狀態(tài)檢測和狀態(tài)同步與封裝來完成。連接狀態(tài)檢測機制如圖3所示。
(1)控制器連接狀態(tài)檢測
根據狀態(tài)機和數據分組傳輸速率跟蹤機制完成狀態(tài)的實時監(jiān)測,控制器連接狀態(tài)碼設計為4種:中斷(disconnected)、連接(connected)、閑時(idle)、忙時(active)。對于連接與中斷狀態(tài),控制器連接狀態(tài)檢測機制主要基于有限狀態(tài)機實現。擴展的有限狀態(tài)機包括active、idle和disconnected等狀態(tài)。當OVS與SDN控制器間建立起OpenFlow連接,即進入active狀態(tài),之后會根據是否接收到來自SDN控制器OpenFlow通道消息,進行active、idle狀態(tài)間的互相轉換。當收到控制器斷開的消息時,則直接跳轉到disconnected狀態(tài)。
(2)狀態(tài)同步與封裝
首先,將SDN控制器與擴展的OVS設備間控制鏈路的連接狀態(tài)值通過通用進程通信接口高效傳遞給OVS的數據通路中。然后,當數據分組進入擴展的OVS設備時,會將連接狀態(tài)值作為數據分組的一個元數據,連同端口號等其他數據分組元數據字段共同構造帶有連接狀態(tài)的匹配查找key,完成擴展的OVS設備流表的快速匹配。
3.2 自學習機制實現
自學習機制通過拓展OpenFlow的動作,保障故障場景下SDN數據層面的轉發(fā)能力和效率。
自學習功能嵌入OVS數據層面,數據分組有時候不需要發(fā)送給控制器處理而直接在數據層面處理。為了符合SDN思想和增加靈活性,控制器利用OpenFlow API對自學習等功能進行靈活調用,在數據層面實現部分服務。此外,自學習模塊產生的流表項和原有的OpenFlow流表規(guī)則相同,可以無差異地插入原有的OpenFlow流表,保持OpenFlow和 SDN的原有特性。
具體實現流程如圖4所示。首先,將執(zhí)行自學習行為的數據分組進行分組頭解析,提取數據分組源MAC地址和入端口字段;其次,根據這些信息構造學習新OpenFlow流表項,新的流表項的目的地址匹配字段就是數據分組的源MAC地址,行為的轉發(fā)出口就是數據分組的入端口;最后,檢查流表中是否存在相似流表項,存在則對舊的流表項進行更新,不存在則插入新學習到的流表項。
3.3 災備機制實現
災備機制基于連接狀態(tài)檢測機制和自學自機制來實現,設計的災備方案流程如下。
(1)控制器運行災備App向擴展OVS下發(fā)啟動災備機制。災備機制主要由3張流表項組成,具體見表1~表3。
表1 狀態(tài)流表項
表2 連接流表項
表3 災備流表項
其中,表1~表3分別為狀態(tài)流表項、連接流表項和災備流表項。狀態(tài)流用于實現SDN控制器與OVS在不同連接狀態(tài)下的不同執(zhí)行策略;連接流用于實現OVS與SDN控制器在正常連接狀態(tài)下數據分組的轉發(fā)動作。災備流用于實現出現故障場景時的自學習流表項的執(zhí)行。匹配域連接狀態(tài)為1時表示控制器連接正常,為2則斷開。
(2)當數據分組進入OpenFlow通道后,首先進入表1進行匹配,然后根據OVS與SDN控制器當前的連接狀態(tài),對數據分組進行相應的匹配處理。
(3)當OVS與控制器連接正常時,數據分組匹配表1的第二條流表項,即跳轉到表2。表2是連接狀態(tài)下控制器下發(fā)給OVS的流表項,實現在連接狀態(tài)下的數據分組轉發(fā)策略。
(4)當OVS與控制器連接斷開時,數據分組匹配表1的第一條流表項。需執(zhí)行兩個動作:第一個動作是執(zhí)行自學習策略,把學習到的表項插入表3中;隨后執(zhí)行第二個動作,即跳轉到表3。
(5)在表3中完成故障場景下的災備模式,匹配二層或三層的自學習流表項,完成OVS與SDN控制器斷開后的正常通信。
3.4 三層路由轉發(fā)
區(qū)別于傳統(tǒng)OVS僅支持二層網絡,直接使用MAC地址進行通信,擴展的OVS交換機引入支持三層網絡,可以實現不同IP網段之間的通信,具備全局路由表能力,指導不同IP網段之間主機的通信。為了使擴展的OVS交換機獲得全局的路由表,結合傳統(tǒng)網絡三層路由轉發(fā)的體系結構,基于已擴展的處理模塊添加使用RIP內部網關協議進行路由表的構建。
(1)自主進行RIP數據分組的發(fā)送和終止發(fā)送
防止因網絡情況不好導致誤判控制器連接失敗的情況,設置當連續(xù)檢測到10次connect_state=2時,表示與控制器連接已中斷,開始進入自主發(fā)送RIP數據分組狀態(tài)。當檢測機制檢測到與控制器鏈路中斷時,OVS將立即進入自主發(fā)送RIP數據分組狀態(tài),開始進行RIP數據分組的封裝和定時發(fā)送。通過相鄰OVS間RIP數據分組的交換,OVS將逐漸建立全局的路由表,以實現不同網段間的數據轉發(fā)。
(2)解析RIP數據分組并由此生成路由表
將RIP數據分組的解析擴展OpenFlow的動作,在擁有災備流表的情況下,擴展的OVS能進行RIP數據分組的解析動作,以逐漸建立全局路由情況,并根據全局路由情況下發(fā)相應流表,實現一次路由多次轉發(fā)的能力(即下發(fā)流表后,數據分組只需匹配流表即可正確轉發(fā),無需進行路由查詢)。在數據層面可以直接調度三層自學習功能,保障數據平面轉發(fā)能力和效率。
(3)支持IP地址到MAC地址的轉換功能
即傳統(tǒng)網絡中的ARP功能,以保障能正確通過IP地址查詢出主機對應MAC地址進行轉發(fā)。由于目前OVS無法支持主動發(fā)送ARP請求以及緩存ARP,為了實現三層的路由轉發(fā),將ARP學習擴展為OpenFlow的動作,與二層自學習類似,在OVS收到ARP數據分組時,進行相應MAC地址與IP地址對應關系的學習,并將結果直接下發(fā)至流表中。
3.5 災備流表設計
為了使交換機在與控制器失去連接的情況下仍然能夠使用OpenFlow通道進行數據分組的處理,數據分組的處理流程應該完全受到流表的控制,所以為三層路由轉發(fā)設計了一系列災備流表。當交換機失去控制后,數據分組到來后將會自動匹配災備流表,在一系列災備流表的引導下進行正常的路由轉發(fā)。
基于災備流表,擴展的OVS將數據分組分為ARP數據分組、RIP數據分組以及IP數據分組3種,并針對3種數據分組的不同情況進行細分,依次進行相應的處理。采用多級流表的設計,每級流表擁有不同的功能,各級流表配合實現對數據分組的處理。使OVS能在與控制器失聯的情況下,能根據災備流表處理所有可能收到的數據分組,保障網絡的通信能力。
為了加強對比性,同時引入二層、三層轉發(fā)實驗。為了清晰方便地描述,對于設計擴展的OVS設備方案分別在二層和三層實驗中命名為AL2和AL3,此外,將對比的傳統(tǒng)OVS設備的實驗分別命名為 BL2和BL3。轉發(fā)實驗在相同的時間段內隨機地觸發(fā)SDN控制鏈路故障,測試多次UDP會話流在不同吞吐量下的切換時延,圖5為二層、三層轉發(fā)實驗切換時延概率分布。
由圖5結果可知,本文方案的切換時延整體小于OVS自身機制的切換時延。以90%位數為準,本文方案的切換時延依然保持在RTT的200 ms級別。由于三層AL3轉發(fā)需要一定的路由收斂時間,因此切換時延相對二層AL2較長,但依然處于200 ms級別左右。整體來說,擴展后的OVS設備故障切換時延相比OVS自身的機制有了很大的性能提升。
在二層、三層轉發(fā)實驗中觀測故障發(fā)生時不同OVS設備下的最大吞吐量變化,實驗分別在運行5 s、12 s進行故障場景觸發(fā),并在4 s后故障場景恢復,控制器重新連接網絡。圖6為二層、三層轉發(fā)實驗故障場景吞吐量對比。
從圖6中可以看到,OVS設備自身策略在吞吐量上不穩(wěn)定,且故障恢復時間長,主要因為OVS設備自身方案需要定期維持表項,其性能受控制鏈路影響較大,吞吐量出現波動。而擴展后的OVS設備通過檢測、災備等多種保障機制保障通信正常,使得吞吐量相對穩(wěn)定,故障恢復時間較短。此外從圖6中可以看出,當控制器重新連接后,擴展后的OVS設備能較快收斂并且保障通信正常,快速恢復吞吐量穩(wěn)定狀態(tài),反映信息更新機制起到了故障恢復后的積極效果。全面保障了SDN通信的可靠性和穩(wěn)定性。
SDN應用場景中,網絡控制器故障、拓撲突變等故障,容易使OVS設備出現失去SDN控制器控制、流表老化無法更新導致網絡通信中斷等問題。針對以上問題,本文設計了OVS的編程擴展技術架構,使傳統(tǒng)OVS設備具備連接狀態(tài)檢測、表項自學習、災備路由轉發(fā)等能力,可實現SDN故障場景下不同網段的數據分組正確匹配轉發(fā)和數據層面的自動化組網,提高了無控制器場景下的數據分組的控制,增強了數據分組轉發(fā)效率,降低了網絡恢復時間,保障了二、三層通信,提升了SDN安全性和可控性,并完全兼容OpenFlow通道,可拓展與應用于廣泛的SDN場景。
[1] Open vSwitch[EB/OL]. (2015-11-05)[2017-01-13]. http://baike. baidu. com/link?url=eE6wD_8BWkT3MHsd3LP31KT2lLi88ZVEkwmw2AmER85vvZHYErKXNlBVG1f3I8p5J5aQthlzJBQEdANWJ-wNITS_20G_pF-h1uTNsPqtGZm.
[2] ONF. OpenFlow-enabled mobile and wireless networks[EB/OL]. (2013-11-05) [2017-01-13]. http://wenku.baidu.com/link?url= KSCjGlIn79WW4sm9Abm906LqhjpXdVKKtOrDIBZ-9kqSVwTakdGQi-ONZRBYQt93ZvlaYcn1xYohLexmgMtkLy-rHEI by3cIjScV_iAVre_.
[3] YAP K K, KOBAYASHI M, SHERWOOD R, et al. OpenRoads: empowering research in mobile networks[J]. ACM Sigcomm Computer Communication Review, 2010, 40(1): 125-126.
[4] KU I, LU Y, GERLA M, et al. Towards software-defined VANET: architecture and services[C]//2014 13th Annual Mediterranean Ad Hoc Networking Workshop (MED-HOC-NET), June 2-4, 2014, Ayia Napa, Cyprus. New Jersey: IEEE Press, 2014: 103-110.
[5] BASKETT P, SHANG Y, ZENG W, et al. SDNAN: software-defined networking in Ad Hoc networks of smartphones[C]//2013 IEEE Consumer Communications and Networking Conference (CCNC), January 11-14, 2013, Las Vegas, NV, USA. New Jersey: IEEE Press, 2013: 861-862.
[6] KIM H, FEAMSTER N. Improving network management with software defined networking[J]. IEEE Communications Magazine, 2013, 51(2): 114-119.
[7] CHANDRASEKARAN B, BENSON T. Tolerating SDN application failures with LegoSDN[C]//The 13th ACM Workshop on Hot Topics in Networks, August 22, 2014, Chicago, Illinois, USA. New York: ACM Press, 2014: 22.
[8] MULEC G, VASIU R, FRIGURA-ILIASA F. Distributed flow controller for mobile Ad Hoc networks[C]//2013 IEEE 8th International Symposium on Applied Computational Intelligence and Informatics (SACI), May 23-25, 2013, Timisoara, Romania. New Jersey: IEEE Press, 2013: 143-146.
[9] MEKKY H, HAO F, MUKHERJEE S, et al. Application-aware data plane processing in SDN[C]//The Third Workshop on Hot Topics in Software Defined Networking, August 22, 2014, Chicago, Illinois, USA. New York: ACM Press, 2014: 13-18.
[10] PFAFF B, PETTIT J, KOPONEN T, et al. The design and implementation of open vSwitch[C]//12th USENIX Symposium on Networked Systems Design and Implementation (NSDI 15), May 4-6, 2015, Oakland, CA, USA. [S.l.:s.n.], 2015:117-130.
[11] 韋樂平. SDN的戰(zhàn)略性思考[J]. 電信科學, 2015, 31(1): 7-12.
WEI L P. Strategic thinking on SDN[J]. Telecommunications Science, 2015, 31(1): 7-12.
[12] 趙輝, 丁鳴, 程青松, 等. SDN與NFV技術在云數據中心的規(guī)模應用[J]. 電信科學, 2016, 32(1): 144-151.
ZHAO H, DING M, CHENG Q S, et al. Application of SDN and NFV technology in the cloud data center[J]. Telecommunications Science, 2016, 32(1): 144-151.
[13] 劉漢江, 歐亮, 陳文華, 等. 基于SDN的跨數據中心承載技術[J]. 電信科學, 2016, 32(3): 28-34.
LIU H J, OU L, CHEN W H, et al. Bearing technology across the data center based on SDN[J]. Telecommunications Science, 2016, 32(3): 28-34.
[14] 唐宏, 朱華虹, 曹維華, 等. 基于SDN的大型IP網絡BGP路由優(yōu)化方案[J]. 電信科學, 2016, 32(3): 14-19.
TANG H, ZHU H H, CAO W H, et al. Route optimization method for BGP based on SDN in large-scale IP network[J]. Telecommunications Science, 2016, 32(3): 14-19.
Programming extention technology of open vSwitch
YANG Fan, YAN Siyu, HUANG Tao
Beijing University of Posts and Telecommunications, Beijing 100876, China
As an open source SDN software switch, open vSwitch (OVS) has been widespread concerned. But in complex and changeable network environment, data layer loses control of controller and flow table entry learning aging appears easily and the performance of SDN is seriously hampered. To solve the problems, the programming extension technology architecture of OVS was designed, including link state processing, fault perception, two three-tier self-learning forwarding and other expansion of core functions, so that OVS could recover automatic and rapidly, flow table entries could update in time, throughput of SDN was guaranteed, thereby the influence of controller loss control for communication was reduced, SDN stability and reliability was enhanced.
open vSwitch, software defined networking, OpenFlow, sofware switch
TP393.4
A
10.11959/j.issn.1000?0801.2017094
2016?01?13;
2017?03?29
楊帆(1981?),男,北京郵電大學講師,主要研究方向為軟件定義網絡、高性能路由交換技術。
晏思宇(1991?),男,北京郵電大學碩士生,主要研究方向為軟件定義網絡、高性能路由交換技術。
黃韜(1980?),男,北京郵電大學教授,主要研究方向為未來網絡體系架構、軟件定義網絡、信息中心網絡、網絡試驗平臺。