談小冬,鄒山,郭浩然,田野(中國(guó)科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,合肥 230027)
?
面向協(xié)議無(wú)感知轉(zhuǎn)發(fā)技術(shù)的SDN試驗(yàn)床①
談小冬,鄒山,郭浩然,田野
(中國(guó)科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,合肥 230027)
摘 要:基于OpenFlow的軟件定義網(wǎng)絡(luò)(SDN)中的轉(zhuǎn)發(fā)設(shè)備不便于支持新協(xié)議的轉(zhuǎn)發(fā),因此協(xié)議無(wú)感知轉(zhuǎn)發(fā)(Protocol Oblivious Forwarding,POF)技術(shù)被提出.本文基于POF技術(shù)和OpenFlow控制器POX,設(shè)計(jì)并實(shí)現(xiàn)了一種支持POF技術(shù)的SDN控制器,POF控制器可以充分利用POF轉(zhuǎn)發(fā)設(shè)備并且體現(xiàn)了SDN的可編程性.同時(shí),我們基于POF控制器搭建了POF試驗(yàn)床,實(shí)驗(yàn)結(jié)果表明POF控制器能夠有效地管理POF網(wǎng)絡(luò),并提供高效的控制功能.
關(guān)鍵詞:軟件定義網(wǎng)絡(luò); OpenFlow; 協(xié)議無(wú)感知轉(zhuǎn)發(fā); 試驗(yàn)床
軟件定義網(wǎng)絡(luò)(Software Defined Networking,SDN)是將控制平面與轉(zhuǎn)發(fā)平面分離并直接可編程的網(wǎng)絡(luò)架構(gòu)[1],它的思路是: 將傳統(tǒng)網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)轉(zhuǎn)發(fā)和路由控制兩個(gè)功能模塊相分離,通過(guò)集中式的控制器以標(biāo)準(zhǔn)化的接口對(duì)各種網(wǎng)絡(luò)設(shè)備進(jìn)行管理和配置.
OpenFlow是由斯坦福大學(xué)提出的可用于SDN中的核心技術(shù)[2],它已逐漸成為SDN中的控制器與網(wǎng)絡(luò)設(shè)備通信協(xié)議的標(biāo)準(zhǔn).然而,基于OpenFlow的SDN只能支持現(xiàn)有的數(shù)據(jù)報(bào)文協(xié)議轉(zhuǎn)發(fā),不能支持新的協(xié)議,若需要支持新協(xié)議,設(shè)備制造商需要修改設(shè)備代碼.所以為了支持更多的新協(xié)議,OpenFlow協(xié)議變得越來(lái)越復(fù)雜.
開(kāi)放網(wǎng)路基金會(huì)(Open Networking Foundation,ONF)在中提出了協(xié)議獨(dú)立轉(zhuǎn)發(fā)層和協(xié)議獨(dú)立轉(zhuǎn)發(fā)(Protocol Independent Forwarding,PIF)[3],并在白皮書(shū)中提出使用P4[4]和協(xié)議無(wú)感知轉(zhuǎn)發(fā)技術(shù)(Protocol-Oblivious Forwarding,POF)[5]兩種方案互補(bǔ)的方式來(lái)解決協(xié)議獨(dú)立轉(zhuǎn)發(fā)的問(wèn)題.POF技術(shù)定義了底層的原始指令集,P4需要來(lái)編寫和編譯使用POF指令集的數(shù)據(jù)包處理程序.
POF技術(shù)是由華為公司提出的SDN轉(zhuǎn)發(fā)平面的一項(xiàng)創(chuàng)新技術(shù),即轉(zhuǎn)發(fā)硬件設(shè)備對(duì)數(shù)據(jù)報(bào)文協(xié)議和處理轉(zhuǎn)發(fā)流程沒(méi)有感知,網(wǎng)絡(luò)行為完全由控制面負(fù)責(zé)定義.POF技術(shù)可以作為對(duì)ONF OpenFlow協(xié)議的增強(qiáng),支持任意轉(zhuǎn)發(fā)協(xié)議和分組數(shù)據(jù)格式,使SDN的控制平面和轉(zhuǎn)發(fā)平面分離更加徹底.目前,華為公司只發(fā)布了支持POF技術(shù)的交換機(jī)和控制器的Linux版本代碼[6],但是華為提供的POF控制器只能手工配置網(wǎng)絡(luò)設(shè)備的流表,不支持編程模型,而SDN最大的特色就是可編程性.所以本文中,我們?cè)赑OX控制器[7]的基礎(chǔ)上,提出了一個(gè)新的支持POF技術(shù)的SDN控制器.同時(shí),我們利用新的POF控制器和POF軟交換機(jī)搭建了第一個(gè)POF試驗(yàn)床,并進(jìn)行了相關(guān)的功能和性能測(cè)試.
本文余下的內(nèi)容安排為: 第2節(jié)介紹我們開(kāi)發(fā)POF控制器的工作; 第3節(jié)展示了在POF試驗(yàn)床上的相應(yīng)測(cè)試工作; 第4節(jié)總結(jié)我們的工作,并說(shuō)明后續(xù)工作的安排.
1.1基于POF的SDN架構(gòu)
基于POF的SDN架構(gòu)如圖1所示,類似于基于OpenFlow的SDN機(jī)構(gòu).POF控制器中包括通信引擎、拓?fù)浒l(fā)現(xiàn)、最小生成樹(shù)、MAC地址學(xué)習(xí)等模塊,控制器通過(guò)擴(kuò)展的OpenFlow協(xié)議下發(fā)流表來(lái)控制POF交換機(jī)的轉(zhuǎn)發(fā)行為.在設(shè)計(jì)POF控制器時(shí),我們借助了POX控制器的編程模型和基礎(chǔ)結(jié)構(gòu).同時(shí),我們利用POF控制器和POF軟交換機(jī)搭建了第一個(gè)POF試驗(yàn)床并進(jìn)行測(cè)試.
圖1 基于POF的SDN架構(gòu)
1.2通信引擎
POF控制器與POF交換機(jī)通信主要是通過(guò)消息的交互,這些消息可以是控制器與交換機(jī)建立連接、向POF交換機(jī)下發(fā)流表、改變POF交換機(jī)的狀態(tài)等.通信引擎模塊主要功能是實(shí)現(xiàn)這些消息的數(shù)據(jù)結(jié)構(gòu)、封裝收發(fā)和解析處理,是整個(gè)控制器框架的基本模塊,也是我們?cè)O(shè)計(jì)過(guò)程中的關(guān)鍵之處.我們根據(jù)POF技術(shù)設(shè)計(jì)和定義基本的消息類型,消息的解析過(guò)程以及異常處理過(guò)程.
1.3拓?fù)浒l(fā)現(xiàn)
拓?fù)浒l(fā)現(xiàn)模塊實(shí)現(xiàn)了在POF網(wǎng)絡(luò)中發(fā)現(xiàn)POF交換機(jī)間(本文假設(shè)POF網(wǎng)絡(luò)中所有的網(wǎng)絡(luò)設(shè)備都支持POF技術(shù))的網(wǎng)絡(luò)拓?fù)湫畔⒌墓δ?主要使用了LLDP(Link Layer Discovery Protocol,鏈路層發(fā)現(xiàn)協(xié)議)[8]作為鏈路發(fā)現(xiàn)協(xié)議.LLDP協(xié)議是一種鄰居發(fā)現(xiàn)協(xié)議,它提供了一種標(biāo)準(zhǔn)的鏈路發(fā)現(xiàn)方式,可以將本端設(shè)備的主要能力、管理地址、設(shè)備標(biāo)識(shí)、接口標(biāo)識(shí)等信息表示成不同的TLV(Type/Length/Value,類型/長(zhǎng)度/值)形式,并封裝在LLDPDU(鏈路層發(fā)現(xiàn)協(xié)議數(shù)據(jù)單元)中,封裝有LLDPDU的報(bào)文稱為L(zhǎng)LDP報(bào)文,報(bào)文中包含了特定的組播、目的MAC地址,以及特定的以太網(wǎng)類型,可以將LLDP數(shù)據(jù)包與其他MAC數(shù)據(jù)幀區(qū)分.POF控制器進(jìn)行鏈路發(fā)現(xiàn)的過(guò)程如圖2所示.
圖2 POF交換機(jī)間的鏈路發(fā)現(xiàn)示意圖
當(dāng)POF交換機(jī)連接POF控制器時(shí),POF控制器會(huì)發(fā)送一個(gè)包含LLDP數(shù)據(jù)包的PACKET_OUT的消息給該交換機(jī),該消息使POF交換機(jī)通過(guò)所有自身端口發(fā)送LLDP數(shù)據(jù)包.當(dāng)POF交換機(jī)收到鄰居POF交換機(jī)發(fā)送的LLDP數(shù)據(jù)包時(shí),由于POF交換機(jī)初始時(shí)并沒(méi)有專門的流表項(xiàng)用于處理LLDP數(shù)據(jù)包,所以它會(huì)通過(guò)一個(gè)PACKET_IN消息將LLDP數(shù)據(jù)包發(fā)送給POF控制器.POF控制器在收到PACKET_IN消息時(shí),通過(guò)解析消息和LLDP數(shù)據(jù)從而發(fā)現(xiàn)兩臺(tái)POF交換機(jī)間的鏈路信息.網(wǎng)絡(luò)中其他POF交換機(jī)也都采用相同的方式發(fā)現(xiàn)與鄰居POF交換機(jī)間的鏈路,因此POF控制器通過(guò)拓?fù)浒l(fā)現(xiàn)模塊能夠發(fā)現(xiàn)完整的網(wǎng)路拓?fù)鋱D.
1.4生成樹(shù)協(xié)議
如果基于POF的SDN網(wǎng)絡(luò)拓?fù)渲写嬖诨芈窌r(shí)可能會(huì)產(chǎn)生網(wǎng)絡(luò)風(fēng)暴,最小生成樹(shù)模塊能有效地防止了網(wǎng)絡(luò)中回路的出現(xiàn),避免了由于幀的無(wú)限循環(huán)和重復(fù)接收所導(dǎo)致網(wǎng)絡(luò)風(fēng)暴的發(fā)生.該模塊的實(shí)現(xiàn)需要拓?fù)浒l(fā)現(xiàn)模塊探測(cè)的網(wǎng)絡(luò)拓?fù)湫畔?實(shí)現(xiàn)算法如下:
由拓?fù)浒l(fā)現(xiàn)模塊得到所有連接POF控制器POF交換機(jī)的集合switches和POF交換機(jī)間的鏈路關(guān)系tree_dict,并用done保存已遍歷的POF交換機(jī),用tree_port保存生成樹(shù)里的端口.按序遍歷switches里的每個(gè)POF交換機(jī),將該交換機(jī)保存到done中,若tree_dict中存在該P(yáng)OF交換機(jī)與另一POF交換機(jī)間的鏈路,則將另一交換機(jī)和存在的鏈路兩端端口加入到tree_port中.最后,done中已包含所有POF交換機(jī)時(shí),將tree_port中對(duì)應(yīng)的端口開(kāi)啟洪泛功能.
1.5MAC地址學(xué)習(xí)
MAC地址學(xué)習(xí)模塊是通過(guò)維持MAC地址表來(lái)保存MAC地址和端口的映射關(guān)系,實(shí)現(xiàn)MAC地址學(xué)習(xí)功能.如果網(wǎng)絡(luò)拓?fù)渲写嬖诨芈?則需要啟動(dòng)最小生成樹(shù)模塊打破環(huán)路,避免廣播風(fēng)暴.MAC地址學(xué)習(xí)模塊的實(shí)現(xiàn)算法如下:
當(dāng)POF交換機(jī)收到數(shù)據(jù)包時(shí),首先根據(jù)輸入端口p和源MAC地址src_mac更新MAC地址表mac_dict,如果數(shù)據(jù)包是LLDP類型或目的MAC地址dst_mac 是Bridge Filtered地址,則丟棄數(shù)據(jù)包; 如果dst_mac是廣播地址或者mac_dict中沒(méi)有dst_mac對(duì)應(yīng)的鍵值(即輸出端口)時(shí),則廣播該數(shù)據(jù)包; 如果mac_dict中有dst_mac對(duì)應(yīng)的輸出端口是p,則丟棄數(shù)據(jù)包,否則將收到數(shù)據(jù)包轉(zhuǎn)發(fā)到合適端口并安裝相應(yīng)的轉(zhuǎn)發(fā)流表.
基于我們實(shí)現(xiàn)的POF控制器和POF交換機(jī),我們搭建了第一個(gè)POF試驗(yàn)床,如圖3所示.其中,8臺(tái)POF交換機(jī)通過(guò)以太網(wǎng)交換機(jī)連接,POF控制器也與以太網(wǎng)交換機(jī)連接.POF控制器運(yùn)行在一個(gè)配置為酷睿i7,1T硬盤和1G內(nèi)存的主機(jī)上,POF交換機(jī)運(yùn)行在10個(gè)千兆網(wǎng)口的主機(jī)上,如圖4所示.同時(shí),我們也對(duì)我們的試驗(yàn)床進(jìn)行了相應(yīng)測(cè)試.
圖3 POF試驗(yàn)床
圖4 安裝POF交換機(jī)的10網(wǎng)口主機(jī)
2.1性能分析
吞吐量和時(shí)延是網(wǎng)絡(luò)性能的重要衡量指標(biāo).這里,我們通過(guò)對(duì)POF交換機(jī)進(jìn)行了簡(jiǎn)單的修改,以統(tǒng)計(jì)POF控制器每秒中能夠下發(fā)流表的數(shù)量.經(jīng)過(guò)我們測(cè)量統(tǒng)計(jì),我們得到了POF控制器下發(fā)流表的速率和POF交換機(jī)建立一個(gè)流表的平均時(shí)間,并與POX控制器進(jìn)行了比較,如表1所示.由結(jié)果可知,POF控制器的性能是可觀的,基本達(dá)到了與POX控制器一致的性能.
表1 流表下發(fā)速率與建立流表的平均時(shí)間
2.2拓?fù)浒l(fā)現(xiàn)
為了測(cè)試POF試驗(yàn)床的功能,我們運(yùn)行拓?fù)浒l(fā)現(xiàn)模塊來(lái)展示.這里,我們借用第三方工具poxdesk[9]來(lái)顯示我們的測(cè)試結(jié)果,如圖5所示.圖中每個(gè)節(jié)點(diǎn)代表一個(gè)POF交換機(jī),與圖3對(duì)比可知,我們通過(guò)POF控制器的拓?fù)浒l(fā)現(xiàn)的模塊得到的網(wǎng)絡(luò)拓?fù)渑c我們?cè)囼?yàn)床的拓?fù)湟恢?
圖5 網(wǎng)絡(luò)拓?fù)鋱D
2.3生成樹(shù)協(xié)議
POF技術(shù)對(duì)轉(zhuǎn)發(fā)的數(shù)據(jù)包協(xié)議無(wú)感知,能支持任何協(xié)議的數(shù)據(jù)包轉(zhuǎn)發(fā).我們通過(guò)工具Ostinato[10]組建并發(fā)送自定義數(shù)據(jù)包來(lái)測(cè)試試驗(yàn)床的性能.我們?cè)O(shè)置自定義數(shù)據(jù)包的類型為0x0988,TTL字段值為10.同時(shí),在POF控制器端運(yùn)行MAC地址學(xué)習(xí)模塊.當(dāng)數(shù)據(jù)包到達(dá)POF交換機(jī)時(shí),交換機(jī)在轉(zhuǎn)發(fā)前會(huì)通過(guò)相應(yīng)流表操作將TTL值會(huì)減1,當(dāng)TTL值為0或者數(shù)據(jù)包到達(dá)目的交換機(jī)時(shí)數(shù)據(jù)包將不會(huì)轉(zhuǎn)發(fā).我們?cè)赑C_1向PC_2連續(xù)發(fā)送50個(gè)自定義數(shù)據(jù)包,并在相應(yīng)鏈路上的POF交換機(jī)用wireshark抓包分析.
在表2中,我們統(tǒng)計(jì)比較是否運(yùn)行生成樹(shù)協(xié)議模塊這兩種情景下POF交換機(jī)上經(jīng)過(guò)的數(shù)據(jù)包數(shù)量: 當(dāng)沒(méi)有運(yùn)行生成樹(shù)協(xié)議模塊時(shí),POF交換機(jī)PS_04和PS_05上轉(zhuǎn)發(fā)的數(shù)據(jù)包數(shù)量是運(yùn)行生成樹(shù)協(xié)議模塊時(shí)的6倍,PS_01、PS_03和PS_06上是運(yùn)行生成樹(shù)協(xié)議模塊的5倍.因此,該模塊可有效減少冗余傳輸,有效地提高網(wǎng)絡(luò)的穩(wěn)定性.
表2 POF交換機(jī)轉(zhuǎn)發(fā)數(shù)據(jù)包的數(shù)量
本文基于POF技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了POF控制器,主要包括通信引擎、拓?fù)浒l(fā)現(xiàn)、最小生成樹(shù)、MAC地址學(xué)習(xí)等模塊.在此基礎(chǔ)上,我們利用新的POF控制器和POF交換機(jī)搭建了基于POF的SDN試驗(yàn)床,證實(shí)了我們的POF控制器具有良好的特性和一定的靈活性和擴(kuò)展性.我們的工作為POF技術(shù)的研究提供了很好地思路,極大的體現(xiàn)了SDN的可編程性這一特點(diǎn).但是,POF控制器的功能和性能亟待豐富提升,下一步的工作我們將修改Mininet平臺(tái)使其支持POF技術(shù),并進(jìn)行不同規(guī)模的仿真實(shí)驗(yàn).同時(shí)我們將考慮POF控制器的并行化[11]以及性能提升,以及將POF軟交換機(jī)移植到OpenWRT[12]系統(tǒng)中以便于支持無(wú)線接入技術(shù).
參考文獻(xiàn)
1Casado M,Freedman MJ,Pettit J,Luo J,McKeown N,Shenker S.Ethane: taking control of the enterprise.ACM SIGCOMM Computer Communication Review,2007,37(4): 1–12.
2McKeown N,Anderson T,Balakrishnan H,Parulkar G,Peterson L,Rexford J,Shenker S,Turner J.OpenFlow: Enabling Innovation in Campus Networks.ACM SIGCOMM Computer Communication Review,2008,38(2): 69–74.
3PIF.https://www.opennetworking.org/protocol-independentforwarding.
4Bossharty P,Daly D,Gibb G,et al.P4: Programming protocol-independent packet processors,ACM SIGCOMM Computer Communication Review,2014,44(3): 87–95.
5Song H.Protocol-Oblivious forwarding: Unleash the power of SDN through a future-proof forwarding plane.ACM SIGCOMM Workshop on HotSDN.2013.127–132.
6Huawei’s POF Controller and switch.http://www.poforwarding.org/vdownload/.
7POX.http://www.noxrepo.org/pox/about-pox/.
8LLDP.http://en.wikipedia.org/wiki/Link_Layer_Discovery_ Protocol.
9Poxdesk.https://github.com/MurphyMc/poxdesk/wiki/Getting-Started.
10Ostinato.https://code.google.com/p/ostinato/wiki/UserGuide
11Cai Z,Cox AL,Ng TSE.Maestro: A system for scalable OpenFlow control[Technical Report],TR10-08,Rice University,2010.
12OpenWRT.http://www.openwrt.org.cn.
SDN Testbed for Protocol Oblivious Forwarding
TAN Xiao-Dong,ZOU Shan,GUO Hao-Ran,TIAN Ye
(School of Computer Science and Technology,University of Science and Technology of China,Hefei 230027,China)
Abstract:The OpenFlow-based software-defined Networking could not easily support forwarding of the new protocols,thus Protocol-Oblivious Forwarding technology is proposed.On the basis of POF technology and OpenFlow controller POX,this paper designs and implements the controller which supports POF technology,employs the full potentials of POF devices and reflects the programmability of SDN.Meanwhile,we construct a network testbed based on POF controller,and experimentally illustrate that POF controller can effectively manage the POF network and provide the controlling functionality with high performances.
Key words:software-defined networking; OpenFlow; protocol oblivious forwarding; testbed
基金項(xiàng)目:①國(guó)家自然科學(xué)基金(61202405);中國(guó)科學(xué)院先導(dǎo)專項(xiàng)子課題(XDA06011202)
收稿時(shí)間:2015-07-30;收到修改稿時(shí)間:2015-10-09