吳 慧,陳秋紅,劉國輝
(1.武漢郵電科學(xué)研究院,湖北武漢430074;2.光纖通信技術(shù)和網(wǎng)絡(luò)國家重點實驗室,湖北武漢430074)
隨著網(wǎng)絡(luò)的快速發(fā)展,傳統(tǒng)網(wǎng)絡(luò)模型已經(jīng)很難滿足網(wǎng)絡(luò)發(fā)展的需求,軟件自定義網(wǎng)絡(luò)(Software-Defined Networks,SDN),一種新型的網(wǎng)絡(luò)模型越來越受到重視。OpenFlow是一個標(biāo)準(zhǔn)化SDN應(yīng)用協(xié)議,旨在以現(xiàn)有TCP/IP技術(shù)條件為基礎(chǔ),將傳統(tǒng)網(wǎng)關(guān)設(shè)備的控制平面與數(shù)據(jù)平面分離,以分布式、集中式控制的管理架構(gòu),實現(xiàn)網(wǎng)絡(luò)流量的靈活控制和設(shè)備的靈活部署[1]。然而,OpenFlow技術(shù)才剛起步,想要大規(guī)模部署還存在很多問題,比如與IP網(wǎng)絡(luò)的互通性、QoS等問題,因此對OpenFlow網(wǎng)絡(luò)中QoS管理機制的研究極具意義。
OpenFlow是美國斯坦福大學(xué)于2007年提出的一種支持網(wǎng)絡(luò)創(chuàng)新研究的新型網(wǎng)絡(luò)交換模型,該模型通過開放流表支持用戶對網(wǎng)絡(luò)處理行為進(jìn)行控制,從而為新型互聯(lián)網(wǎng)體系結(jié)構(gòu)研究提供新的實驗途徑[2]。
OpenFlow是一種SDN網(wǎng)絡(luò),由一個包含整個網(wǎng)絡(luò)拓?fù)涞腛F(OpenFlow)控制器和擁有流表的OF交換機組成,前者通過開放的OF協(xié)議對OF網(wǎng)關(guān)設(shè)備中的流表進(jìn)行編程,決定每個數(shù)據(jù)包的傳輸路徑,而后者只負(fù)責(zé)對數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),簡化底層設(shè)備的工作負(fù)載。
1個OF交換機至少包含3個部分[3]:Flow Table(流表)、Secure Channel(安全通道)、OpenFlow Protocol(開放流協(xié)議)。OpenFlow交換機的體系結(jié)構(gòu)如圖1所示。
圖1 OF交換機的體系結(jié)構(gòu)
OF(OpenFlow)交換機中每個Flow Table流表項包含3 個域[4]:Head Fields(包頭域)、Action(動作)、Counter(計數(shù)器),如圖2所示。
圖2 OF交換機中流表項的組成
當(dāng)有數(shù)據(jù)包到達(dá)時,OF交換機將其送入Pipeline流水線中進(jìn)行處理,即查詢流表項,若查詢到,就按照匹配的流表中Action域進(jìn)行處理;若未查詢到,就把數(shù)據(jù)包的第一個有效分組進(jìn)行OF協(xié)議封裝并通過安全通道發(fā)送到控制器,等待后續(xù)動作的確認(rèn)。
QoS(Quality of Service)即服務(wù)質(zhì)量,它是一種網(wǎng)絡(luò)安全機制,用來保證網(wǎng)絡(luò)延遲、帶寬和阻塞等性能[5]。目前,IETF為QoS機制提供3種服務(wù)模型:BestEffort(盡力而為服務(wù)模型)、IntServ(綜合服務(wù)模型)和DiffServ(區(qū)分服務(wù)模型)。
DiffServ通過定義幾種特定的服務(wù)類型對業(yè)務(wù)流進(jìn)行分類,并為不同的分類提供對應(yīng)的每跳行為(Per Hop Behavior,PHB)來保證服務(wù)質(zhì)量,實現(xiàn)多業(yè)務(wù)類型的QoS保證[6]。該模型靈活性好,易擴展,但只能提供逐跳行為的QoS保證,而非端到端的。
本系統(tǒng)在OF控制器NOX上添加QoSCLI組件、QoS管理器和QoS數(shù)據(jù)庫,實現(xiàn)QoS的管理層功能,在OF交換機Open Vswitch(OVS)上添加QoS代理和DiffServ流量控制模塊,實現(xiàn)分類業(yè)務(wù)的流量控制機制,系統(tǒng)體系結(jié)構(gòu)如圖3所示。
系統(tǒng)控制平面主要負(fù)責(zé)控制管理模塊之間的信息交互,將管理員的服務(wù)質(zhì)量需求通過指令的形式在整個管理域內(nèi)生效,提供QoS配置和查詢功能,例如對管理域內(nèi)結(jié)點的QoS配置更改、狀態(tài)查詢和歷史信息查看等。
當(dāng)管理員從QoSCLI界面輸入配置指令時,管理器會將指令信息進(jìn)行OF協(xié)議封裝,并通過安全通道發(fā)送給代理,同時更改數(shù)據(jù)庫中實時配置信息。QoS代理會將收到的配置信息解析出來,并更改DiffServ模塊的參數(shù),例如分類規(guī)則、端口帶寬限制、隊列配置等,同時負(fù)責(zé)將Diff-Serv模塊執(zhí)行的結(jié)果反饋給代理,由代理封裝并上傳反饋結(jié)果給管理器。最后,反饋消息會被解析并顯示在CLI界面上,整個QoS指令配置任務(wù)完成。
圖3 OpenFlow QoS管理系統(tǒng)體系結(jié)構(gòu)圖
DiffServ流量控制模塊負(fù)責(zé)對底層交換機上的數(shù)據(jù)流進(jìn)行流量控制,采用傳統(tǒng)的區(qū)分服務(wù)模型與OF交換機的轉(zhuǎn)發(fā)機制相結(jié)合,將前者的主要功能移植到OF軟交換機上。在OF軟交換機的數(shù)據(jù)流轉(zhuǎn)發(fā)過程中添加了流分類、標(biāo)記測量和隊列處理等處理機制。
由于OF交換機只根據(jù)匹配到的流表項的Action域?qū)?shù)據(jù)流進(jìn)行處理,所以系統(tǒng)在流進(jìn)入Pipeline流水線處理之前,對流進(jìn)行分類和標(biāo)記,即修改IP包頭中的DSCP值,然后在匹配到的轉(zhuǎn)發(fā)端口上進(jìn)行隊列操作,保證不同DSCP值的包進(jìn)入不同的隊列,獲得不同的PHB處理。OpenFlow QoS管理系統(tǒng)的DiffServ流量控制模塊的數(shù)據(jù)流處理流程如圖4所示。
DiffServ流量控制模塊中各個部分的實現(xiàn)機制如下:
1)流分類:在DiffServ模型中,核心結(jié)點通過對DSCP值進(jìn)行匹配并分類,而邊緣結(jié)點則對包頭中所有字段或部分字段的組合進(jìn)行分類,將具有相同特征的單流匯聚成洪流,并送到不同的隊列中進(jìn)行處理。
2)測量和標(biāo)記:按照事先約定好的規(guī)則,修改流分類處理后的聚合流IP包頭中的DSCP值,確保擁有不同DSCP值的流進(jìn)入到不同的隊列中,進(jìn)行調(diào)度。主要通過配置靜態(tài)流規(guī)則對匹配到某種相同特征的流設(shè)置不同的Action動作,即通過set_nw_tos來修改IP的TOS值,此動作只需在邊緣結(jié)點中執(zhí)行。
圖4 DiffServ流量控制模塊數(shù)據(jù)流處理流程圖
3)Pipeline:當(dāng)數(shù)據(jù)流的DSCP字段被重新標(biāo)記后,數(shù)據(jù)流被送入Pipeline流水線處理,負(fù)責(zé)將流送入到指定的端口進(jìn)行下一步處理,此功能由Open vSwitch自動完成,不需要做任何改動。
4)隊列:隊列機制包括隊列管理和隊列調(diào)度,負(fù)責(zé)在交換機的端口上為擁有不同DSCP值的包提供不同隊列的帶寬資源分配、突發(fā)量、最大最小速率。在Open vS-witch的出端口上可以配置多個Linux-h(huán)tb的隊列,并設(shè)置不同的速率限制、突發(fā)和丟包率實現(xiàn)差別服務(wù)等級的流量調(diào)度。
為了驗證系統(tǒng)的正確性和網(wǎng)絡(luò)流量控制的性能,搭建了一個簡單的DiffServ模型的小型網(wǎng)絡(luò),如圖5所示。
圖5 OpenFlow QoS管理系統(tǒng)實驗拓?fù)?/p>
其中OpenFlow控制器為運行NOX及QoS控制程序的Linux(Ubuntu)主機,OVS為運行OpenVswitch及Diff-Serv組件的Linux(Ubuntu)主機,分別充當(dāng)OpenFlow網(wǎng)絡(luò)的控制器和交換機。OVS1為邊緣結(jié)點,與控制器直連,OVS2為中心結(jié)點,PC1和PC2分別連接在2個結(jié)點上。為了簡化網(wǎng)絡(luò)路由,網(wǎng)絡(luò)拓?fù)洳捎渺o態(tài)路由的方式實現(xiàn),實驗結(jié)果通過數(shù)據(jù)流獲得的網(wǎng)絡(luò)帶寬和丟包率來驗證。OVS配置如下:
#流分類,匹配tos值。1號端口流送入2號端口排隊,不同tos值的流送入不同隊列。
#ovs-ofctl add-flow br0"in_port=1 ip nw_tos=46 idle_timeout=0 actions=enqueue:2:0"
#ovs-ofctl add-flow br0"in_port=1 ip nw_tos=0 idle_timeout=0 actions=enqueue:2:1"
#標(biāo)記 BE
ovs-ofctl add-flow br0"dl_type=0x0800 nw_proto=6 idle_timeout=0 actions=mod_nw_tos:0"
#標(biāo)記EF,針對ftp流進(jìn)行流量控制,設(shè)置不同的tos值。
ovs-ofctladd-flow br0"dl_type=0x0800 nw_proto=6 tp_dst=21 idle_timeout=0 actions=mod_nw_tos:46"
#PHB行為:通過linux-h(huán)tb隊列實現(xiàn)。不同dscp值的對應(yīng)的隊列速率限制不同。
#ovs-vsctl set port eth1 qos=@newqos
id=@newqos create qos type=linux-h(huán)tb
other-config:max-rate=200000000 queues=0=@q0,1=@q1
id=@q0 create queue dscp=0
other-config:min-rate=100000000
other-config:max-rate=100000000
id=@q1 create queue dscp=46
other-config:min-rate=50000000
other-config:max-rate=50000000
從PC1向PC2發(fā)送2種優(yōu)先級不同的流A、B,A為FTP流,B為普通無服務(wù)質(zhì)量保證的流,網(wǎng)絡(luò)總帶寬為40 Mbit/s。在PC2上通過對A、B流量的分析,得到實驗結(jié)果,如表1所示。
表1 系統(tǒng)實驗結(jié)果
從實驗結(jié)果可知,QoS管理系統(tǒng)能夠正確地區(qū)分不同QoS等級的服務(wù),并提供差別服務(wù)質(zhì)量保證。系統(tǒng)使用前,不同的流公平占用網(wǎng)絡(luò)流量,系統(tǒng)使用后,不同的QoS等級的數(shù)據(jù)流獲得的網(wǎng)絡(luò)帶寬不同。
本文通過簡要的分析OpenFlow和QoS技術(shù),結(jié)合OpenFlow對數(shù)據(jù)流的處理機制,提出了一種適用于Open-Flow網(wǎng)絡(luò)的QoS管理機制,通過控制器集中控制管理域內(nèi)的所有結(jié)點的QoS配置,并在底層OF交換機上配置靜態(tài)流規(guī)則實現(xiàn)流分類、標(biāo)記和入隊等流量控制機制,實現(xiàn)了高效可控的QoS管理系統(tǒng)。但此系統(tǒng)需要人工配置QoS參數(shù),且控制平面缺乏對網(wǎng)絡(luò)流量的實時監(jiān)控和資源利用率等信息的采集,不能根據(jù)網(wǎng)絡(luò)環(huán)境提供動態(tài)的QoS策略,缺乏自適應(yīng)性,因此更加智能和自適應(yīng)的QoS管理體系還有待進(jìn)一步研究。
[1]何國鋒.OpenFlow在下一代數(shù)據(jù)中心網(wǎng)絡(luò)的應(yīng)用研究[J].互聯(lián)網(wǎng)天地,2013,3(3):71-74.
[2]王麗君,劉永強,張健.基于OpenFlow的未來互聯(lián)網(wǎng)實驗技術(shù)研究[J].電信網(wǎng)技術(shù),2011(6):11-14.
[3]NICK M,TOM A,HARIB.OpenFlow:Enabling innovation in campus networks[J].SIGCOMM Computer,2008,38(2):69-74.
[4] PFAFF B,HELLER B,PETTIT J,et al.The openflow switch specification[EB/OL].[2013-04-30].http://www.openflow.org/documents/openflow-spec-v1.1.0.pdf.
[5]王海濤,宋麗華.IP網(wǎng)絡(luò)的QoS通用框架及其體系結(jié)構(gòu)[J].電視技術(shù),2002,26(9):29-32.
[6]鮑慧,趙生崗,黃霞.基于DiffServ模型的調(diào)度算法[J].計算機工程,2008,10,34(20):130-132.