章喜字,林雙欽
(黎明職業(yè)大學(xué)教育信息中心,福建泉州362000)
近年來(lái),隨著互聯(lián)網(wǎng)、云計(jì)算和大數(shù)據(jù)技術(shù)的迅猛發(fā)展,很多網(wǎng)絡(luò)用戶為了避免網(wǎng)絡(luò)擁塞而采用增大專線帶寬的方法,這種方法雖然也有一定的效果,但卻降低了專線帶寬增大前帶寬的利用率,資源浪費(fèi)較嚴(yán)重。數(shù)據(jù)中心作為信息化基礎(chǔ)設(shè)施,是被單一組織擁有的專用服務(wù)器集群。云計(jì)算、Hadoop等需要在服務(wù)器和虛擬機(jī)間進(jìn)行大量的數(shù)據(jù)通信,數(shù)據(jù)中心的網(wǎng)絡(luò)流量增長(zhǎng)更為迅速,傳統(tǒng)的數(shù)據(jù)中心面對(duì)這些新的應(yīng)用產(chǎn)生資源分配不合理、丟包、延時(shí)等問(wèn)題,使得服務(wù)質(zhì)量嚴(yán)重下降。因此,對(duì)數(shù)據(jù)中心網(wǎng)絡(luò)的流量控制技術(shù)提出了新的要求。數(shù)據(jù)中心網(wǎng)絡(luò)流量的優(yōu)化是目前急需解決的問(wèn)題。傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)臃腫,難以滿足用戶越來(lái)越復(fù)雜和多樣的需要,因此,軟件定義網(wǎng)絡(luò)(Software Define Network,SDN)應(yīng)運(yùn)而生,SDN將網(wǎng)絡(luò)層和控制層分離,使得網(wǎng)絡(luò)轉(zhuǎn)發(fā)策略得到優(yōu)化[1]。
SDN為Software Define Network的英文縮寫,意思是軟件定義網(wǎng)絡(luò)。SDN是將控制和數(shù)據(jù)平面分離,使控制平面和數(shù)據(jù)平面松散耦合,通過(guò)控制平面的通信接口靈活控制網(wǎng)絡(luò)接口,從而構(gòu)成可編程的新型網(wǎng)絡(luò)體系結(jié)構(gòu),實(shí)現(xiàn)底層網(wǎng)絡(luò)的透明性。傳統(tǒng)的網(wǎng)絡(luò)中管理員無(wú)法在網(wǎng)絡(luò)管理中體現(xiàn)自己的意志,SDN可以使網(wǎng)絡(luò)管理員利用軟件來(lái)規(guī)劃需要的網(wǎng)絡(luò)。SDN定義了多種接口協(xié)議,如OpenFlow南向接口協(xié)議和北向應(yīng)用程序接口,使得SDN具有很好的管理和控制網(wǎng)絡(luò)的能力[2]。
自2001年始,開(kāi)放網(wǎng)絡(luò)基金會(huì)一直致力于SDN的標(biāo)準(zhǔn)化過(guò)程,是到目前為止規(guī)模和活躍度比較大的SDN標(biāo)準(zhǔn)化組織。開(kāi)放網(wǎng)絡(luò)基金會(huì)定義的SDN結(jié)構(gòu)具有三個(gè)平面,分別是應(yīng)用平面、數(shù)據(jù)平面和控制平面。平面之間的交互式是通過(guò)使用不同的接口協(xié)議進(jìn)行的。其中應(yīng)用平面是由若干個(gè)SDN的應(yīng)用組成,是通過(guò)北向接口與控制器交互,是用戶直接使用的應(yīng)用程序。用戶可以通過(guò)可編程的將需要的請(qǐng)求和下發(fā)的流表信息提交到控制器??刂破矫媸且粋€(gè)邏輯上的實(shí)體,一個(gè)SDN控制器能夠包含多個(gè)北向接口驅(qū)動(dòng),也可以對(duì)其自身的功能進(jìn)行封裝和抽象,成為更高級(jí)的北向接口。主要過(guò)程分為自上而下的和自下而上的,自上而下的過(guò)程是將應(yīng)用層的請(qǐng)求轉(zhuǎn)換為SDN Datapath,自下而上的過(guò)程是將底層網(wǎng)絡(luò)設(shè)備抽象為狀態(tài)、事件等。數(shù)據(jù)平面是由若干個(gè)叫作網(wǎng)元的設(shè)備組成,網(wǎng)元是網(wǎng)絡(luò)設(shè)備的統(tǒng)稱,傳統(tǒng)的網(wǎng)絡(luò)中需要在不同的網(wǎng)絡(luò)層次中使用不同的設(shè)備處理的任務(wù),例如路由器、交換機(jī)等,OpenFlow交換機(jī)能夠具有網(wǎng)絡(luò)的7層功能,每個(gè)網(wǎng)元映射為若干個(gè)DataPath,每個(gè)DataPath沒(méi)有控制能力,都是邏輯上的網(wǎng)絡(luò)設(shè)備,它們只能來(lái)自控制層的指令并轉(zhuǎn)發(fā)和處理數(shù)據(jù)[3]。SDN的體系結(jié)構(gòu)如圖1所示。
數(shù)據(jù)中心的規(guī)模隨著云計(jì)算的發(fā)展逐漸擴(kuò)大,然而數(shù)據(jù)中心在流量?jī)?yōu)化控制、網(wǎng)絡(luò)資源管理、虛擬機(jī)遷移和綠色節(jié)能等方面都存在問(wèn)題。
①流量?jī)?yōu)化控制。目前,數(shù)據(jù)中心的網(wǎng)絡(luò)流量的調(diào)度算法是利用數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)提供的多路徑,通過(guò)靜態(tài)哈希的方法將數(shù)據(jù)隨機(jī)分配到最短路徑上,沒(méi)有考慮鏈路負(fù)載,對(duì)大流量的調(diào)度不適合,大流量的網(wǎng)絡(luò)可能發(fā)生擁塞。擁塞極大影響用戶的體驗(yàn),因此,需要盡量避免[4-5]。
②網(wǎng)絡(luò)資源管理。大型企業(yè)的數(shù)據(jù)中心一般具有大量的服務(wù)器和虛擬機(jī),這些設(shè)備通過(guò)數(shù)據(jù)中心連接起來(lái)系統(tǒng)很多的物流交換機(jī)和虛擬交換機(jī),為了提高網(wǎng)絡(luò)的使用效率,需要對(duì)網(wǎng)絡(luò)進(jìn)行集中管理。
③虛擬機(jī)遷移。在數(shù)據(jù)中心中具有大量的虛擬機(jī),網(wǎng)絡(luò)中的這些虛擬機(jī)在網(wǎng)絡(luò)中需要根據(jù)業(yè)務(wù)需要進(jìn)行遷移,因此,需要數(shù)據(jù)中心網(wǎng)絡(luò)能夠識(shí)別虛擬機(jī),在虛擬機(jī)遷移時(shí)將網(wǎng)絡(luò)配置遷移到新的網(wǎng)絡(luò)中。但是,目前所存在的技術(shù)還不能完全滿足這種需要。
圖1 SDN體系結(jié)構(gòu)
在數(shù)據(jù)中心流量?jī)?yōu)化技術(shù)中引入SDN技術(shù)后,控制器能夠集中控制網(wǎng)絡(luò)流量,能夠識(shí)別基礎(chǔ)轉(zhuǎn)發(fā)層的流量并對(duì)其進(jìn)行控制,用戶能夠根據(jù)需要自定義業(yè)務(wù)邏輯,對(duì)應(yīng)用進(jìn)行開(kāi)發(fā)和管理。因此,能夠?qū)W(wǎng)絡(luò)的靜態(tài)現(xiàn)狀進(jìn)行改變,適合數(shù)據(jù)中心網(wǎng)絡(luò)的流量變化,為基于數(shù)據(jù)中心的業(yè)務(wù)提供網(wǎng)絡(luò)的支持。所以,基于SDN的數(shù)據(jù)中心流量?jī)?yōu)化技術(shù)是目前工業(yè)界和學(xué)術(shù)界的研究熱點(diǎn)。目前,對(duì)基于SND數(shù)據(jù)中心流量?jī)?yōu)化技術(shù)中仍然存在一些問(wèn)題,例如,未對(duì)大象流和老鼠流的傳輸特性綜合考慮,不能滿足數(shù)據(jù)中心網(wǎng)絡(luò)的需要。 本文針對(duì)基于SDN的數(shù)據(jù)中心流量?jī)?yōu)化問(wèn)題,提出一種綜合的網(wǎng)絡(luò)流量?jī)?yōu)化技術(shù)。
整體方案設(shè)計(jì)中將分層次對(duì)層進(jìn)行設(shè)計(jì),整個(gè)方案分為三個(gè)層次,最上層是應(yīng)用層,實(shí)現(xiàn)用戶具體業(yè)務(wù)的開(kāi)發(fā),在這一層中利用北向接口對(duì)網(wǎng)絡(luò)信息進(jìn)行獲取。中間的網(wǎng)絡(luò)控制層實(shí)現(xiàn)本文的基于SDN流量的優(yōu)化。通過(guò)控制器發(fā)出OpenFlow消息,實(shí)現(xiàn)網(wǎng)絡(luò)流量的實(shí)時(shí)、動(dòng)態(tài)的調(diào)度。最下面的數(shù)據(jù)轉(zhuǎn)發(fā)層接收到OpenFlow消息,實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。這時(shí)大象流和老鼠流通過(guò)最優(yōu)路徑傳輸,提高網(wǎng)絡(luò)的吞吐率。本文提出的基于SDN的數(shù)據(jù)中心網(wǎng)絡(luò)流量的優(yōu)化技術(shù)主要是基于中間的控制層的研究?;赟DN的數(shù)據(jù)中心網(wǎng)絡(luò)流量的優(yōu)化整體設(shè)計(jì)方案如圖2所示。
圖2 整體方案
此方案中在網(wǎng)絡(luò)控制器的基礎(chǔ)上添加了流量統(tǒng)計(jì)、流量監(jiān)測(cè)、流量調(diào)度和序列與反序列,能夠根據(jù)流量?jī)?yōu)化的需要進(jìn)行處理。其中流量統(tǒng)計(jì)是使用改進(jìn)的Statistics函數(shù)統(tǒng)計(jì)網(wǎng)絡(luò)狀態(tài)。流量監(jiān)測(cè)根基統(tǒng)計(jì)所傳輸?shù)膮?shù)設(shè)置閾值,對(duì)大象流和老鼠流進(jìn)行識(shí)別。流量調(diào)度時(shí)通過(guò)大象流和老鼠流的調(diào)度算法實(shí)現(xiàn)。
首先獲取網(wǎng)絡(luò)信息,將消息傳給網(wǎng)絡(luò)控制器,此消息通過(guò)反序列后傳遞給流量統(tǒng)計(jì)模塊處理。流量統(tǒng)計(jì)模塊將端口速率傳遞給流量監(jiān)測(cè),監(jiān)測(cè)部分設(shè)置閾值,識(shí)別大象流和老鼠流。然后流量統(tǒng)計(jì)部分將當(dāng)前的可用帶寬、鏈路時(shí)延和丟包率等傳遞給流量調(diào)度部分,流量調(diào)度部分根據(jù)統(tǒng)計(jì)、監(jiān)測(cè)部分傳遞的信息,制定調(diào)度策略。最后經(jīng)序列和反序列的消息傳遞給數(shù)據(jù)轉(zhuǎn)發(fā)層,由數(shù)據(jù)轉(zhuǎn)發(fā)層來(lái)控制流量的轉(zhuǎn)發(fā)。
在數(shù)據(jù)中心中,老鼠流較為均勻地分布在網(wǎng)絡(luò)中,能夠充分利用數(shù)據(jù)中心的多路徑進(jìn)行傳輸。然而對(duì)于大象流,應(yīng)該能夠充分利用網(wǎng)絡(luò)的鏈路資源。基于SDN的數(shù)據(jù)中心網(wǎng)絡(luò)流量?jī)?yōu)化中,控制器時(shí)刻掌握網(wǎng)絡(luò)鏈路負(fù)載信息。對(duì)于大象流應(yīng)能夠識(shí)別,并在控制器中進(jìn)行路徑的計(jì)算,實(shí)現(xiàn)負(fù)載均衡。
在基于SDN的網(wǎng)絡(luò)中,對(duì)大象流實(shí)現(xiàn)集中調(diào)度需要的流程有大象流的檢測(cè)、預(yù)測(cè)大象流的帶寬需求、計(jì)算大象流的路徑、控制器下發(fā)流表項(xiàng)到OpenFlow交換機(jī)。具體流程如下:
①大象流檢測(cè)
在網(wǎng)絡(luò)中,當(dāng)檢測(cè)到數(shù)據(jù)流進(jìn)入時(shí)是不能夠立即判斷出是否為大象流的,而是根據(jù)靜態(tài)哈希機(jī)制為其隨機(jī)分配一條路徑進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)。OpenFlow交換機(jī)的流表項(xiàng)中的計(jì)數(shù)器可以統(tǒng)計(jì)流量,根據(jù)流量信息判斷傳輸速率,根據(jù)流量速率的閾值判斷是否為大象流,如果某條數(shù)據(jù)被判斷為大象流,將進(jìn)入下一步驟。
②大象流的帶寬需求預(yù)測(cè)
當(dāng)檢測(cè)出大象流后,對(duì)此數(shù)據(jù)的流量帶寬進(jìn)行預(yù)測(cè),TCP自身的擁塞控制機(jī)制不能夠代表實(shí)際的數(shù)據(jù)發(fā)送速率,需要在后面的算法進(jìn)行大象流的流量調(diào)度。
③大象流路徑計(jì)算
大象流的調(diào)度算法分為靜態(tài)的和動(dòng)態(tài)的。靜態(tài)調(diào)度算法是檢測(cè)到大象流并計(jì)算出帶寬后計(jì)算轉(zhuǎn)發(fā)路徑,充分考慮實(shí)時(shí)流量分布,根據(jù)流量帶寬計(jì)算優(yōu)化方案。當(dāng)有新的大象流進(jìn)入網(wǎng)絡(luò)需要重新計(jì)算路徑,需要經(jīng)常改變路徑。這種方式適合網(wǎng)絡(luò)規(guī)模小和單控制器的數(shù)據(jù)中心。動(dòng)態(tài)調(diào)度算法通過(guò)網(wǎng)絡(luò)拓?fù)浜拓?fù)載為新大象流計(jì)算轉(zhuǎn)發(fā)路徑。動(dòng)態(tài)調(diào)度算法對(duì)新的大象流的進(jìn)入不影響以前的大象流的轉(zhuǎn)發(fā),效率較高。但是流量調(diào)度有可能不是最優(yōu)。這種方式可以用在多控制器的數(shù)據(jù)中心和大規(guī)模的網(wǎng)絡(luò)中。
④下發(fā)流表項(xiàng)到OpenFlow交換機(jī)
在上一步驟中,通過(guò)靜態(tài)或者動(dòng)態(tài)的調(diào)度算法得到大象流的轉(zhuǎn)發(fā)路徑之后,需要將結(jié)果轉(zhuǎn)為OpenFlow交換機(jī)的流表項(xiàng),下發(fā)到OpenFlow交換機(jī),OpenFlow交換機(jī)接收到大象流的數(shù)據(jù)包后,根據(jù)流表將大象流轉(zhuǎn)發(fā)到需要的出口,使得大象流能夠按照調(diào)度算法的路徑進(jìn)行轉(zhuǎn)發(fā)。
本論文研究了基于SDN的數(shù)據(jù)中心流量?jī)?yōu)化技術(shù),文中首先從數(shù)據(jù)中心網(wǎng)絡(luò)的流量控制技術(shù)的應(yīng)用背景出發(fā),提出基于SDN的數(shù)據(jù)中心流量?jī)?yōu)化技術(shù)研究的必要性。然后對(duì)SDN技術(shù)進(jìn)行了概述,提出基于SDN數(shù)據(jù)中心流量?jī)?yōu)化整體方案設(shè)計(jì)和基于SDN數(shù)據(jù)中心流量?jī)?yōu)化流程。詳細(xì)給出基于SDN數(shù)據(jù)中心流量?jī)?yōu)化的整體層次結(jié)構(gòu),對(duì)流量?jī)?yōu)化流程的四個(gè)方面進(jìn)行了闡述。本文所研究的基于SDN的數(shù)據(jù)中心流量?jī)?yōu)化技術(shù)保障數(shù)據(jù)傳輸?shù)馁|(zhì)量,有效避免網(wǎng)絡(luò)擁塞,提高網(wǎng)絡(luò)服務(wù)的質(zhì)量,為此方面的進(jìn)一步的研究提供了很好的參考。