吳 慧,陳秋紅,劉國(guó)輝
(1.武漢郵電科學(xué)研究院,湖北武漢430074;2.光纖通信技術(shù)和網(wǎng)絡(luò)國(guó)家重點(diǎn)實(shí)驗(yàn)室,湖北武漢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是一個(gè)標(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),實(shí)現(xiàn)網(wǎng)絡(luò)流量的靈活控制和設(shè)備的靈活部署[1]。然而,OpenFlow技術(shù)才剛起步,想要大規(guī)模部署還存在很多問題,比如與IP網(wǎng)絡(luò)的互通性、QoS等問題,因此對(duì)OpenFlow網(wǎng)絡(luò)中QoS管理機(jī)制的研究極具意義。
OpenFlow是美國(guó)斯坦福大學(xué)于2007年提出的一種支持網(wǎng)絡(luò)創(chuàng)新研究的新型網(wǎng)絡(luò)交換模型,該模型通過開放流表支持用戶對(duì)網(wǎng)絡(luò)處理行為進(jìn)行控制,從而為新型互聯(lián)網(wǎng)體系結(jié)構(gòu)研究提供新的實(shí)驗(yàn)途徑[2]。
OpenFlow是一種SDN網(wǎng)絡(luò),由一個(gè)包含整個(gè)網(wǎng)絡(luò)拓?fù)涞腛F(OpenFlow)控制器和擁有流表的OF交換機(jī)組成,前者通過開放的OF協(xié)議對(duì)OF網(wǎng)關(guān)設(shè)備中的流表進(jìn)行編程,決定每個(gè)數(shù)據(jù)包的傳輸路徑,而后者只負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),簡(jiǎn)化底層設(shè)備的工作負(fù)載。
1個(gè)OF交換機(jī)至少包含3個(gè)部分[3]:Flow Table(流表)、Secure Channel(安全通道)、OpenFlow Protocol(開放流協(xié)議)。OpenFlow交換機(jī)的體系結(jié)構(gòu)如圖1所示。
圖1 OF交換機(jī)的體系結(jié)構(gòu)
OF(OpenFlow)交換機(jī)中每個(gè)Flow Table流表項(xiàng)包含3 個(gè)域[4]:Head Fields(包頭域)、Action(動(dòng)作)、Counter(計(jì)數(shù)器),如圖2所示。
圖2 OF交換機(jī)中流表項(xiàng)的組成
當(dāng)有數(shù)據(jù)包到達(dá)時(shí),OF交換機(jī)將其送入Pipeline流水線中進(jìn)行處理,即查詢流表項(xiàng),若查詢到,就按照匹配的流表中Action域進(jìn)行處理;若未查詢到,就把數(shù)據(jù)包的第一個(gè)有效分組進(jìn)行OF協(xié)議封裝并通過安全通道發(fā)送到控制器,等待后續(xù)動(dòng)作的確認(rèn)。
QoS(Quality of Service)即服務(wù)質(zhì)量,它是一種網(wǎng)絡(luò)安全機(jī)制,用來保證網(wǎng)絡(luò)延遲、帶寬和阻塞等性能[5]。目前,IETF為QoS機(jī)制提供3種服務(wù)模型:BestEffort(盡力而為服務(wù)模型)、IntServ(綜合服務(wù)模型)和DiffServ(區(qū)分服務(wù)模型)。
DiffServ通過定義幾種特定的服務(wù)類型對(duì)業(yè)務(wù)流進(jìn)行分類,并為不同的分類提供對(duì)應(yīng)的每跳行為(Per Hop Behavior,PHB)來保證服務(wù)質(zhì)量,實(shí)現(xiàn)多業(yè)務(wù)類型的QoS保證[6]。該模型靈活性好,易擴(kuò)展,但只能提供逐跳行為的QoS保證,而非端到端的。
本系統(tǒng)在OF控制器NOX上添加QoSCLI組件、QoS管理器和QoS數(shù)據(jù)庫,實(shí)現(xiàn)QoS的管理層功能,在OF交換機(jī)Open Vswitch(OVS)上添加QoS代理和DiffServ流量控制模塊,實(shí)現(xiàn)分類業(yè)務(wù)的流量控制機(jī)制,系統(tǒng)體系結(jié)構(gòu)如圖3所示。
系統(tǒng)控制平面主要負(fù)責(zé)控制管理模塊之間的信息交互,將管理員的服務(wù)質(zhì)量需求通過指令的形式在整個(gè)管理域內(nèi)生效,提供QoS配置和查詢功能,例如對(duì)管理域內(nèi)結(jié)點(diǎn)的QoS配置更改、狀態(tài)查詢和歷史信息查看等。
當(dāng)管理員從QoSCLI界面輸入配置指令時(shí),管理器會(huì)將指令信息進(jìn)行OF協(xié)議封裝,并通過安全通道發(fā)送給代理,同時(shí)更改數(shù)據(jù)庫中實(shí)時(shí)配置信息。QoS代理會(huì)將收到的配置信息解析出來,并更改DiffServ模塊的參數(shù),例如分類規(guī)則、端口帶寬限制、隊(duì)列配置等,同時(shí)負(fù)責(zé)將Diff-Serv模塊執(zhí)行的結(jié)果反饋給代理,由代理封裝并上傳反饋結(jié)果給管理器。最后,反饋消息會(huì)被解析并顯示在CLI界面上,整個(gè)QoS指令配置任務(wù)完成。
圖3 OpenFlow QoS管理系統(tǒng)體系結(jié)構(gòu)圖
DiffServ流量控制模塊負(fù)責(zé)對(duì)底層交換機(jī)上的數(shù)據(jù)流進(jìn)行流量控制,采用傳統(tǒng)的區(qū)分服務(wù)模型與OF交換機(jī)的轉(zhuǎn)發(fā)機(jī)制相結(jié)合,將前者的主要功能移植到OF軟交換機(jī)上。在OF軟交換機(jī)的數(shù)據(jù)流轉(zhuǎn)發(fā)過程中添加了流分類、標(biāo)記測(cè)量和隊(duì)列處理等處理機(jī)制。
由于OF交換機(jī)只根據(jù)匹配到的流表項(xiàng)的Action域?qū)?shù)據(jù)流進(jìn)行處理,所以系統(tǒng)在流進(jìn)入Pipeline流水線處理之前,對(duì)流進(jìn)行分類和標(biāo)記,即修改IP包頭中的DSCP值,然后在匹配到的轉(zhuǎn)發(fā)端口上進(jìn)行隊(duì)列操作,保證不同DSCP值的包進(jìn)入不同的隊(duì)列,獲得不同的PHB處理。OpenFlow QoS管理系統(tǒng)的DiffServ流量控制模塊的數(shù)據(jù)流處理流程如圖4所示。
DiffServ流量控制模塊中各個(gè)部分的實(shí)現(xiàn)機(jī)制如下:
1)流分類:在DiffServ模型中,核心結(jié)點(diǎn)通過對(duì)DSCP值進(jìn)行匹配并分類,而邊緣結(jié)點(diǎn)則對(duì)包頭中所有字段或部分字段的組合進(jìn)行分類,將具有相同特征的單流匯聚成洪流,并送到不同的隊(duì)列中進(jìn)行處理。
2)測(cè)量和標(biāo)記:按照事先約定好的規(guī)則,修改流分類處理后的聚合流IP包頭中的DSCP值,確保擁有不同DSCP值的流進(jìn)入到不同的隊(duì)列中,進(jìn)行調(diào)度。主要通過配置靜態(tài)流規(guī)則對(duì)匹配到某種相同特征的流設(shè)置不同的Action動(dòng)作,即通過set_nw_tos來修改IP的TOS值,此動(dòng)作只需在邊緣結(jié)點(diǎn)中執(zhí)行。
圖4 DiffServ流量控制模塊數(shù)據(jù)流處理流程圖
3)Pipeline:當(dāng)數(shù)據(jù)流的DSCP字段被重新標(biāo)記后,數(shù)據(jù)流被送入Pipeline流水線處理,負(fù)責(zé)將流送入到指定的端口進(jìn)行下一步處理,此功能由Open vSwitch自動(dòng)完成,不需要做任何改動(dòng)。
4)隊(duì)列:隊(duì)列機(jī)制包括隊(duì)列管理和隊(duì)列調(diào)度,負(fù)責(zé)在交換機(jī)的端口上為擁有不同DSCP值的包提供不同隊(duì)列的帶寬資源分配、突發(fā)量、最大最小速率。在Open vS-witch的出端口上可以配置多個(gè)Linux-h(huán)tb的隊(duì)列,并設(shè)置不同的速率限制、突發(fā)和丟包率實(shí)現(xiàn)差別服務(wù)等級(jí)的流量調(diào)度。
為了驗(yàn)證系統(tǒng)的正確性和網(wǎng)絡(luò)流量控制的性能,搭建了一個(gè)簡(jiǎn)單的DiffServ模型的小型網(wǎng)絡(luò),如圖5所示。
圖5 OpenFlow QoS管理系統(tǒng)實(shí)驗(yàn)拓?fù)?/p>
其中OpenFlow控制器為運(yùn)行NOX及QoS控制程序的Linux(Ubuntu)主機(jī),OVS為運(yùn)行OpenVswitch及Diff-Serv組件的Linux(Ubuntu)主機(jī),分別充當(dāng)OpenFlow網(wǎng)絡(luò)的控制器和交換機(jī)。OVS1為邊緣結(jié)點(diǎn),與控制器直連,OVS2為中心結(jié)點(diǎn),PC1和PC2分別連接在2個(gè)結(jié)點(diǎn)上。為了簡(jiǎn)化網(wǎng)絡(luò)路由,網(wǎng)絡(luò)拓?fù)洳捎渺o態(tài)路由的方式實(shí)現(xiàn),實(shí)驗(yàn)結(jié)果通過數(shù)據(jù)流獲得的網(wǎng)絡(luò)帶寬和丟包率來驗(yàn)證。OVS配置如下:
#流分類,匹配tos值。1號(hào)端口流送入2號(hào)端口排隊(duì),不同tos值的流送入不同隊(duì)列。
#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,針對(duì)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隊(duì)列實(shí)現(xiàn)。不同dscp值的對(duì)應(yīng)的隊(duì)列速率限制不同。
#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)先級(jí)不同的流A、B,A為FTP流,B為普通無服務(wù)質(zhì)量保證的流,網(wǎng)絡(luò)總帶寬為40 Mbit/s。在PC2上通過對(duì)A、B流量的分析,得到實(shí)驗(yàn)結(jié)果,如表1所示。
表1 系統(tǒng)實(shí)驗(yàn)結(jié)果
從實(shí)驗(yàn)結(jié)果可知,QoS管理系統(tǒng)能夠正確地區(qū)分不同QoS等級(jí)的服務(wù),并提供差別服務(wù)質(zhì)量保證。系統(tǒng)使用前,不同的流公平占用網(wǎng)絡(luò)流量,系統(tǒng)使用后,不同的QoS等級(jí)的數(shù)據(jù)流獲得的網(wǎng)絡(luò)帶寬不同。
本文通過簡(jiǎn)要的分析OpenFlow和QoS技術(shù),結(jié)合OpenFlow對(duì)數(shù)據(jù)流的處理機(jī)制,提出了一種適用于Open-Flow網(wǎng)絡(luò)的QoS管理機(jī)制,通過控制器集中控制管理域內(nèi)的所有結(jié)點(diǎn)的QoS配置,并在底層OF交換機(jī)上配置靜態(tài)流規(guī)則實(shí)現(xiàn)流分類、標(biāo)記和入隊(duì)等流量控制機(jī)制,實(shí)現(xiàn)了高效可控的QoS管理系統(tǒng)。但此系統(tǒng)需要人工配置QoS參數(shù),且控制平面缺乏對(duì)網(wǎng)絡(luò)流量的實(shí)時(shí)監(jiān)控和資源利用率等信息的采集,不能根據(jù)網(wǎng)絡(luò)環(huán)境提供動(dòng)態(tài)的QoS策略,缺乏自適應(yīng)性,因此更加智能和自適應(yīng)的QoS管理體系還有待進(jìn)一步研究。
[1]何國(guó)鋒.OpenFlow在下一代數(shù)據(jù)中心網(wǎng)絡(luò)的應(yīng)用研究[J].互聯(lián)網(wǎng)天地,2013,3(3):71-74.
[2]王麗君,劉永強(qiáng),張健.基于OpenFlow的未來互聯(lián)網(wǎng)實(shí)驗(yàn)技術(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].計(jì)算機(jī)工程,2008,10,34(20):130-132.