◆程煒 高志鑫 徐天奇 李 琰 吳海峰
(云南民族大學(xué)電氣信息工程學(xué)院 云南 650500)
OpenFlow中基于X形拓?fù)涞木W(wǎng)絡(luò)測量研究
◆程煒 高志鑫 徐天奇 李 琰 吳海峰
(云南民族大學(xué)電氣信息工程學(xué)院 云南 650500)
OpenFlow是一種控制和轉(zhuǎn)發(fā)分離的新型架構(gòu),是目前學(xué)術(shù)界最熱門的研究話題之一。在本文中,我們將通過搭建Mininet與Floodlight的實(shí)驗(yàn)環(huán)境作為OpenFlow協(xié)議的仿真平臺,以X形拓?fù)錇闇y量對象,分別引入Mininet中的隨機(jī)流量模型與概率模型,實(shí)現(xiàn)路徑損耗率、網(wǎng)絡(luò)時(shí)延以及帶寬的測量。
OpenFlow;X拓?fù)?;網(wǎng)絡(luò)測量
隨著時(shí)代的發(fā)展,人們對生活品質(zhì)有了更高的要求與更廣的追求,這直接體現(xiàn)在網(wǎng)絡(luò)新業(yè)務(wù)的不斷涌現(xiàn)和日益復(fù)雜上,對于這樣一個承載著龐大需求的互聯(lián)網(wǎng),其運(yùn)行狀態(tài)是否能夠有條不紊地保持,網(wǎng)絡(luò)測量與評估方法的研究與發(fā)展就顯得至關(guān)重要。傳統(tǒng)IP網(wǎng)絡(luò)修修補(bǔ)補(bǔ)的緩兵之計(jì)使得人們在網(wǎng)絡(luò)測量技術(shù)方面達(dá)到了一個瓶頸。新興的OpenFlow技術(shù)正好可以打破網(wǎng)絡(luò)測量這一瓶頸的突破口。OpenFlow[1][2]是一種控制和轉(zhuǎn)發(fā)分離的新型架構(gòu),并被許多人視為“推倒重來的全新設(shè)計(jì)”理論的先驅(qū)。它將控制邏輯從網(wǎng)絡(luò)設(shè)備盒子中引出來,供研究者對其進(jìn)行任意的編程從而實(shí)現(xiàn)新型的網(wǎng)絡(luò)協(xié)議、拓?fù)浼軜?gòu)而無需改動網(wǎng)絡(luò)設(shè)備本身,是目前學(xué)術(shù)界最熱門的研究話題之一[3][4]。
在本文中,我們將通過搭建Mininet與Floodlight的實(shí)驗(yàn)環(huán)境作為OpenFlow協(xié)議的仿真平臺,以X形拓?fù)錇闇y量對象,分別引入Mininet中的隨機(jī)流量模型與概率模型,實(shí)現(xiàn)路徑損耗率、網(wǎng)絡(luò)時(shí)延以及帶寬的測量。
為了相對準(zhǔn)確地測出各個網(wǎng)絡(luò)狀態(tài)的參數(shù),考慮盡可能減少復(fù)雜結(jié)構(gòu)帶來的影響,我們創(chuàng)建一個較為通用的X形拓?fù)?,其中包含兩臺交換機(jī)和四臺主機(jī),結(jié)構(gòu)如圖1所示。并向該拓?fù)鋵?dǎo)入隨機(jī)流量模型和概率模型,如圖2和圖3所示。
圖1 用于網(wǎng)絡(luò)測量的X形拓?fù)?/p>
圖2 隨機(jī)流量模型的引入
圖3 概率模型的引入
我們根據(jù)兩種流量模型下主機(jī)與服務(wù)器匹配后確定的總鏈路,如h1向h2發(fā)送數(shù)據(jù)包,然后通過Floodlight控制器來計(jì)算s3與s4之間的路徑損耗速率。Floodlight控制器向s3和s4發(fā)送端口狀態(tài)改變請求,當(dāng)接收到來自s3和s4的答復(fù)時(shí),將各自的特定流的數(shù)據(jù)包數(shù)對應(yīng)保存在txPackets與rxPackets中,然后計(jì)算得出路徑損耗率。
在Floodlight中完成路徑損耗率模塊的添加后,在Mininet中調(diào)用path-loss.py文件即可得到圖1中的測試拓?fù)?,接著?zhí)行“iperfmulti”命令引入隨機(jī)流量模型,即“iperfmulti 100m 30”設(shè)置帶寬為100Mbps,測試時(shí)長為30S,相對應(yīng)在Floodlight中得出測試結(jié)果,如圖4所示:
圖4 隨機(jī)流量模型的路徑損耗測量結(jié)果
同樣地,將上述測試中的“iperfmulti”命令換成“iperfPb”命令引入概率模型,即“iperfPb 100m 30”設(shè)置帶寬為100Mbps,測試時(shí)長為30S,相對應(yīng)在Floodlight中得出測試結(jié)果,實(shí)驗(yàn)結(jié)果如圖5:
圖5 概率模型的路徑損耗測量結(jié)果
從兩種流量模型的引入結(jié)果可以看出數(shù)據(jù)傳輸路徑的平均損耗速率均在10%,這與在path-loss.py腳本中設(shè)置的s3與s4之間的損耗速率吻合,說明該方案下測量的路勁損耗率數(shù)值還是相對準(zhǔn)確的。
通常意義上的網(wǎng)絡(luò)傳輸時(shí)延測量是指測量報(bào)文往返的時(shí)延測量,即測量報(bào)文從發(fā)送方開始發(fā)送時(shí)計(jì)時(shí),接收方在接收到該報(bào)文后立即返回給發(fā)送方,發(fā)送方接收到該測量報(bào)文后停止計(jì)時(shí),此時(shí)發(fā)送方所得的時(shí)間間隔即為往返時(shí)延。網(wǎng)絡(luò)時(shí)延的測量步驟如下[5]:
步驟1:控制器向交換機(jī)A發(fā)送一個packet_out報(bào)文。報(bào)文的數(shù)據(jù)段攜帶了任意一個約定好的協(xié)議報(bào)文,其報(bào)文的數(shù)據(jù)段攜帶了控制器下發(fā)報(bào)文時(shí)的時(shí)間戳。packet_out報(bào)文的動作指示交換機(jī)將其泛洪或者轉(zhuǎn)發(fā)到某端口。
步驟2:交換機(jī)B收到了交換機(jī)A發(fā)送過來的數(shù)據(jù)包,無法匹配對應(yīng)流表項(xiàng),從而發(fā)送packet_in到控制器??刂破鹘邮盏竭@個數(shù)據(jù)包之后,和當(dāng)下時(shí)間相減,得到時(shí)間差T1。其時(shí)間差約等于數(shù)據(jù)包從控制器到交換機(jī)A加上交換機(jī)A到交換機(jī)B再加上交換機(jī)B到控制器的時(shí)延。
步驟3:同理,控制器向交換機(jī)B發(fā)送一個類似的報(bào)文。然后控制器從交換機(jī)A收到Packet_in報(bào)文,記錄下時(shí)間差T2。T1與T2的和等于控制器到交換機(jī)A的往返時(shí)延加上控制器到交換機(jī)B的往返時(shí)延,再加上交換機(jī)A到交換機(jī)B的往返時(shí)延。
步驟4:控制器向交換機(jī)A和交換機(jī)B分別發(fā)送帶有時(shí)間戳的echo_request。交換機(jī)收到之后即刻回復(fù)攜帶echo_request時(shí)間戳的echo_reply消息。所以控制器可以通過echo_reply的時(shí)間戳減去echo_reply攜帶的時(shí)間,從而得到對應(yīng)交換機(jī)和控制器之間的往返時(shí)延。通過這種方法測得控制器到交換機(jī)A和交換機(jī)B的往返時(shí)延分別為Ta,Tb。
步驟5:T1與T2的和減去Ta與Tb的和可以得到交換機(jī)A到交換機(jī)B的往返時(shí)延。假設(shè)往返時(shí)間一樣,則交換機(jī)A到交換機(jī)B的鏈路時(shí)延為該往返時(shí)延的一半。
在Floodlight中添加時(shí)延測量模塊的代碼得到隨機(jī)流量模型的實(shí)驗(yàn)結(jié)果和概率模型的實(shí)驗(yàn)結(jié)果如下:
圖6 隨機(jī)流量模型的時(shí)延測量結(jié)果
圖7 概率模型的時(shí)延測量結(jié)果
在path-loss.py腳本中設(shè)置的單條鏈路時(shí)延理論值為2ms,經(jīng)過三條鏈路的往返后理論值的總和為12ms,從圖6與圖7可以看到在引入隨機(jī)流量模型與概率模型后,主機(jī)與服務(wù)器之間匹配的三個鏈路的往返時(shí)延總和的測量結(jié)果在9ms到12ms之間,這與總的理論值大體接近,說明該方案下測量的網(wǎng)絡(luò)時(shí)延數(shù)值較為可信。
帶寬數(shù)據(jù)是網(wǎng)絡(luò)狀態(tài)中的重要數(shù)據(jù)。一般而言,一條鏈路的帶寬是由兩個端口的能力決定的。因此可以通過獲取端口的流量來得到鏈路的流量。OpenFlow協(xié)議中可以通過統(tǒng)計(jì)報(bào)文來獲取端口、流表、流表項(xiàng)、組表和meter表的統(tǒng)計(jì)信息。以端口的統(tǒng)計(jì)信息為例,控制器通過周期下發(fā)Port statistics消息可以獲得交換機(jī)端口的統(tǒng)計(jì)信息從該統(tǒng)計(jì)消息格式中可以獲取到收發(fā)的包數(shù)、字節(jié)數(shù)以及這個統(tǒng)計(jì)持續(xù)的時(shí)間。此時(shí)只要把兩個不同時(shí)間的統(tǒng)計(jì)消息的字節(jié)數(shù)相減,再除以兩個消息的統(tǒng)計(jì)時(shí)間差則可以得到統(tǒng)計(jì)流量速度。如果想得到端口剩余帶寬,則可以用端口最大帶寬減去當(dāng)前流量帶寬,即可得到該數(shù)值。隨機(jī)流量模型的實(shí)驗(yàn)結(jié)果和概率模型的實(shí)驗(yàn)結(jié)果如下所示:
圖8 隨機(jī)流量模型的帶寬測量結(jié)果
圖9 概率模型的帶寬測量結(jié)果
從圖8與圖9可以看到,在兩種流量模型下,測量得出的帶寬結(jié)果均為100Mbps左右,這與path-loss.py腳本中設(shè)置的帶寬理論值相吻合,說明該方案下測量的帶寬數(shù)值是準(zhǔn)確的。
在整個OpenFlow網(wǎng)絡(luò)架構(gòu)中,F(xiàn)loodlight控制器的決策取決于路徑損耗率、時(shí)延以及帶寬等網(wǎng)絡(luò)狀態(tài)。我們搭建X型拓?fù)涞牡臏y量實(shí)驗(yàn)環(huán)境中,以Floodlight控制器已經(jīng)添加好的各個模塊為測量工具,在Mininet中創(chuàng)建用于本次實(shí)驗(yàn)的拓?fù)淠_本,與此同時(shí),設(shè)置交換機(jī)之間的路徑損耗率的理論值為10%,單條鏈路時(shí)延的理論值為2ms,帶寬的理論值為100Mbps。接著向該拓?fù)鋵?dǎo)入隨機(jī)流量模型和概率模型,分別通過該拓?fù)涞贸雎窂綋p耗率、時(shí)延以及帶寬的測量結(jié)果。最后將測量結(jié)果與腳本中設(shè)置好的理論值進(jìn)行比較,從而對該實(shí)驗(yàn)方案進(jìn)行可靠性評估。
[1] McKeown N,Software-defined networking.[C].//INFO COM keynote talk/.2009.
[2] MCKEOWN N,ANDERSON T,BALAKRISHNAN H,etal.OpenFlow:enabling innovation in campus network[J]. ACM SIGCOMM Computer Communication Review,/.2008.
[3]Floodlight:aJava.basedOpenFlow Controller.[CP/OL].http://floodlight.openflowhub.org/.2012.
[4] 左青云,陳鳴,趙廣松等.基于OpenFlow的SDN技術(shù)研究.[J].軟件學(xué)報(bào),2013.
[5] Thomas D.Nadeau,Ken Gray,畢軍,張紹宇,姚廣等.軟件定義網(wǎng)絡(luò):SDN與OpenFlow解析.[M].北京:人民郵電出版社,2014.
本文受國家自然科學(xué)基金(61461055,61761049)與云南省高??萍紕?chuàng)新團(tuán)隊(duì)支持計(jì)劃資助(通訊作者:李琰)。