李 艷 郝志安 李 寧 盧 冀
(中國電子科技集團(tuán)公司第五十四研究所 河北 石家莊 050081)
基于mininet的SDN架構(gòu)仿真研究
李 艷 郝志安 李 寧 盧 冀
(中國電子科技集團(tuán)公司第五十四研究所 河北 石家莊 050081)
軟件定義網(wǎng)絡(luò)(SDN)是一種新型網(wǎng)絡(luò)創(chuàng)新架構(gòu),公開標(biāo)準(zhǔn)的OpenFlow技術(shù)是實(shí)現(xiàn)SDN架構(gòu)最有效的技術(shù)之一。為進(jìn)一步研究SDN架構(gòu)的特性,為應(yīng)用創(chuàng)新提供可定義的網(wǎng)絡(luò)平臺(tái),在基于OpenFlow的mininet仿真軟件的基礎(chǔ)上,實(shí)現(xiàn)了SDN架構(gòu)的仿真。文章總結(jié)了典型的SDN架構(gòu)的特性,分析了基于OpenFlow技術(shù)的仿真原理和方法,基于Mininet仿真軟件構(gòu)造,驗(yàn)證了SDN架構(gòu)的功能和基本工作流程,提出的仿真方法和搭建的平臺(tái)可為SDN架構(gòu)的研究提供有效的技術(shù)支撐。
SDN OpenFlow Mininet
伴隨著云計(jì)算、物聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,復(fù)雜的傳統(tǒng)網(wǎng)絡(luò)難以滿足使用需求的增長(zhǎng),而且有太多復(fù)雜的功能加入到路由器設(shè)計(jì)里面,比如OSPF、BGP、白名單、策略路由和MPLS等,早期定義的“最精簡(jiǎn)”的數(shù)據(jù)通路已經(jīng)臃腫不堪。網(wǎng)絡(luò)的復(fù)雜性已經(jīng)難以靈活地滿足各種業(yè)務(wù)提出的不同資源需求,在這一背景下,SDN的概念被大家廣泛接受和認(rèn)同[1]。SDN是一種基于軟件的網(wǎng)絡(luò)架構(gòu)和技術(shù),支持集中化的網(wǎng)絡(luò)控制,實(shí)現(xiàn)了底層網(wǎng)絡(luò)設(shè)施對(duì)上層應(yīng)用的透明,具有靈活的軟件編程能力[2],采用軟件定義網(wǎng)絡(luò)的方式,靈活滿足不同用戶的應(yīng)用需求。開放網(wǎng)絡(luò)基金會(huì)(Open Networking Foundation, ONF)標(biāo)準(zhǔn)化組織提出的OpenFlow技術(shù),是目前實(shí)現(xiàn)SDN唯一的開源標(biāo)準(zhǔn),為SDN架構(gòu)的研究提供了便利方法的方法[3]。
在OpenFlow技術(shù)的基礎(chǔ)上,采用mininet仿真軟件構(gòu)建了SDN模型,給出了驗(yàn)證SDN架構(gòu)靈活可編程功能的方法,驗(yàn)證了SDN的控制與轉(zhuǎn)發(fā)分離的架構(gòu),實(shí)現(xiàn)了軟件定義網(wǎng)絡(luò)。
SDN架構(gòu)如圖1所示,傳統(tǒng)網(wǎng)絡(luò)設(shè)備緊耦合的網(wǎng)絡(luò)架構(gòu)被分拆成3個(gè)層級(jí):基礎(chǔ)設(shè)施層,控制層和應(yīng)用層。基礎(chǔ)設(shè)施層負(fù)責(zé)數(shù)據(jù)高效轉(zhuǎn)發(fā)和狀態(tài)收集;控制層負(fù)責(zé)數(shù)據(jù)平面資源的編排、維護(hù)網(wǎng)絡(luò)拓?fù)浜蜖顟B(tài)信息等;應(yīng)用層負(fù)責(zé)各種業(yè)務(wù)應(yīng)用的開展[4]。
圖1 SDN架構(gòu)圖
SDN架構(gòu)具有集中控制、開放接口和網(wǎng)絡(luò)虛擬化的特征,支持控制平面與轉(zhuǎn)發(fā)平面分離,使得底層的網(wǎng)絡(luò)設(shè)備可以被統(tǒng)一控制和管理,而靈活的開放接口推動(dòng)網(wǎng)絡(luò)業(yè)務(wù)不斷創(chuàng)新。分析SDN架構(gòu)可以看出SDN控制層負(fù)責(zé)整個(gè)網(wǎng)絡(luò)的運(yùn)行,底層網(wǎng)絡(luò)設(shè)備狀態(tài)和控制指令都需要通過SDN的南向接口傳達(dá),北向接口使得業(yè)務(wù)應(yīng)用能夠便利地調(diào)用基礎(chǔ)設(shè)施層的網(wǎng)絡(luò)資源和能力[5]。
南向接口可以采用OpenFlow協(xié)議和OF-CONFIG協(xié)議實(shí)現(xiàn),通過OpenFlow協(xié)議實(shí)現(xiàn)控制軟件向網(wǎng)絡(luò)設(shè)備(如OpenFlow交換機(jī))發(fā)送流表,控制數(shù)據(jù)流通過網(wǎng)絡(luò)所經(jīng)過的路徑的方式完成對(duì)底層網(wǎng)絡(luò)設(shè)備的控制;OF-CONFIG協(xié)議規(guī)定了管理和配置交換機(jī)的端口和隊(duì)列等。OF-CONFIG與OpenFlow之間存在著密切的關(guān)系,OF-CONFIG提供一個(gè)開放接口用于遠(yuǎn)程配置和控制OpenFlow交換機(jī),如在OpenFlow交換機(jī)上配置控制器IP地址、對(duì)交換機(jī)的各個(gè)端口進(jìn)行enable/disable操作等。OF-CONFIG V1.1版本定義了OpenFlow端口和OpenFlow隊(duì)列兩類資源,支持OpenFlow交換機(jī)與控制器之間的安全通信證書配置,支持OpenFlow邏輯交換機(jī)的發(fā)現(xiàn),支持多種數(shù)據(jù)隧道類型(包括IP-in-GRE、NV-GRE和VxLAN等)。通過OpenFlow可以將網(wǎng)絡(luò)控制層和底層物理網(wǎng)絡(luò)硬件分離,實(shí)現(xiàn)更精細(xì)的管理,其理念就是軟件定義網(wǎng)絡(luò)。
OpenFlow也是由3層架構(gòu)組成,第一層架構(gòu)由支持OpenFlow協(xié)議的交換機(jī)組成,第二層是OpenFlow控制器,第三層是OpenFlow軟件應(yīng)用??刂破魇且粋€(gè)平臺(tái),可以直接與使用OpenFlow協(xié)議的交換機(jī)進(jìn)行通信,為OpenFlow軟件應(yīng)用提供豐富的功能。OpenFlow軟件應(yīng)用為網(wǎng)絡(luò)執(zhí)行控制功能,如路由交換和會(huì)話類應(yīng)用等。
OpenFlow的核心思想很簡(jiǎn)單,傳統(tǒng)的FIB表和MAC表等都被OpenFlow協(xié)議統(tǒng)一整合為流表,流表本身的生成、維護(hù)和下發(fā)完全有外置的控制器來實(shí)現(xiàn),交換機(jī)保存控制器下發(fā)流表并且只按照流表進(jìn)行轉(zhuǎn)發(fā)。進(jìn)入交換機(jī)的數(shù)據(jù)包通過查詢流表來獲得轉(zhuǎn)發(fā)的目的端口[6]。流表由很多個(gè)流表項(xiàng)組成,每個(gè)流表項(xiàng)就是一個(gè)轉(zhuǎn)發(fā)規(guī)則,流表項(xiàng)定義了端口號(hào)、VLAN、L2/L3信息等關(guān)鍵字,OpenFlow v1.3中定義的流表項(xiàng)由下列字段組成:
Match fields:對(duì)報(bào)文進(jìn)行匹配,包括入端口,報(bào)文的頭部和一些可選的元數(shù)據(jù);
Priority:匹配的優(yōu)先級(jí),決定匹配流表項(xiàng)的優(yōu)先順序;
Counters:匹配到的報(bào)文統(tǒng)計(jì);
Instructions:修改行為或者進(jìn)行流水線處理;
Timeouts:用于配置流表項(xiàng)的實(shí)效時(shí)間;
Cookie:由控制器指定的非透明數(shù)值,控制器可用此字段來過濾流統(tǒng)計(jì),流的修改以及流的刪除。
支持Openflow協(xié)議的交換機(jī)通過流表控制數(shù)據(jù)流的轉(zhuǎn)發(fā),流表是交換機(jī)進(jìn)行轉(zhuǎn)發(fā)策略控制的核心數(shù)據(jù)結(jié)構(gòu),交換芯片通過查找流表項(xiàng)來決策對(duì)進(jìn)入交換機(jī)的網(wǎng)絡(luò)流量采取何種行為。
數(shù)據(jù)包從第一個(gè)流表開始匹配,經(jīng)歷流水線處理。首先,找到流表中優(yōu)先級(jí)最高的流條目執(zhí)行匹配,這將根據(jù)入端口、包頭以及有上一個(gè)流表指定的元數(shù)據(jù)三類匹配域進(jìn)行匹配。如果某個(gè)數(shù)據(jù)包成功匹配了流表中某個(gè)流條目,則更新這個(gè)流條目的計(jì)數(shù)器計(jì)數(shù),同時(shí)這個(gè)流條目中的指令操作將被應(yīng)用生效。如果指令中沒有指定下一個(gè)流表,這時(shí)數(shù)據(jù)包通常會(huì)被所帶有的動(dòng)作集合處理后轉(zhuǎn)發(fā)。當(dāng)交換機(jī)收到一個(gè)不能被當(dāng)前流表各條流匹配的數(shù)據(jù)包時(shí),會(huì)把這個(gè)數(shù)據(jù)包以openflow的格式(PACKET_IN)發(fā)送給控制器??刂破鹘?jīng)過路由決策后,同樣以openflow的格式(PACKET_OUT)的方式將該數(shù)據(jù)包的下一跳信息回給該交換機(jī)。
電解煙氣脫硫采用“雙氧水脫硫塔-高效濕式電除塵器”的工藝流程。包含:吸收塔、循環(huán)泵、雙氧水儲(chǔ)槽、藥劑計(jì)量添加泵、稀硫酸儲(chǔ)槽等。尾氣由脫硫塔底部進(jìn)入,經(jīng)噴淋和填料吸收,與雙氧水溶液充分接觸和反應(yīng),生成稀硫酸。脫硫處理后的煙氣經(jīng)除霧沫后,由塔上部排出。為控制煙氣拖尾和進(jìn)一步降低尾氣中的污染物濃度,脫硫煙氣經(jīng)脫硫塔后再串聯(lián)進(jìn)入濕式電除塵器后達(dá)標(biāo)排放。工藝流程如圖1 所示。
在仿真實(shí)現(xiàn)中,通過Mininet軟件實(shí)現(xiàn)OpenFlow控制器和支持OpenFlow協(xié)議的交換機(jī)的功能,實(shí)現(xiàn)SDN平臺(tái)的構(gòu)建。
4.1 Mininet
Stanford大學(xué)Nick McKeown的研究小組基于LinuxContainer架構(gòu),開發(fā)了Mininet平臺(tái)。Mininet作為一個(gè)輕量級(jí)“軟件定義網(wǎng)絡(luò)”研發(fā)和測(cè)試平臺(tái),其主要特性包括:①支持OpenFlow、Open vSwitch等網(wǎng)絡(luò)部件;于方便多人協(xié)同開發(fā);③支持系統(tǒng)級(jí)的還原測(cè)試;④支持復(fù)雜拓?fù)?、自定義拓?fù)洌虎萏峁﹑hthon API;⑥很好的硬件移植性(Linux兼容);⑦高擴(kuò)展性,支持超過4 096臺(tái)主機(jī)。
SDN平臺(tái)基于Mininet軟件,可以輕易地在PC機(jī)上仿真驗(yàn)證一個(gè)軟件定義網(wǎng)絡(luò),對(duì)基于OpenFlow和Open vSwitch的各種協(xié)議進(jìn)行開發(fā)驗(yàn)證,而且,所有代碼還可以無縫遷移到真實(shí)的硬件環(huán)境中。
4.2 仿真建模
演示流表下發(fā):搭建一個(gè)網(wǎng)絡(luò)拓?fù)?,?個(gè)控制器—c0,1臺(tái)交換機(jī)—s1,3臺(tái)終端—h1、h2和h3,3臺(tái)終端與交換機(jī)s1相連接,如圖2所示。
圖2 網(wǎng)絡(luò)拓?fù)浣?/p>
4.3 仿真結(jié)果
網(wǎng)絡(luò)建好后,由于控制器流表為空,沒有給OpenFlow交換機(jī)下發(fā)流表,OpenFlow交換機(jī)沒有收到流表不能對(duì)端口接收的數(shù)據(jù)流進(jìn)行轉(zhuǎn)發(fā),因此,h2 ping h3不能成功。在控制器上通過dpctl手動(dòng)添加流表項(xiàng),下發(fā)到Openflow交換機(jī)上,完成h2和h3端口的轉(zhuǎn)發(fā)設(shè)置,查看Openflow交換機(jī)此時(shí)已經(jīng)有流表信息,包括優(yōu)先級(jí)、類型和表id等,如下所示:
此時(shí),Openflow交換機(jī)上已經(jīng)有了轉(zhuǎn)發(fā)的流表信息,交換機(jī)上端口2和3的in_port和out_port增加h2 ping h3操作,結(jié)果可以互通。
在流表下發(fā)和終端之間ping包過程中,可以通過wireshark軟件進(jìn)行抓包分析。OpenFlow協(xié)議在應(yīng)用中是在傳輸層以上,也就是應(yīng)用層解析的。首先是初始化,發(fā)送hello信息,并協(xié)商使用OF協(xié)議的版本號(hào)。
數(shù)據(jù)交互過程中抓到的OpenFlow協(xié)議包如圖3所示,包括交換機(jī)和控制器建立起連接后的維護(hù)消息Hello,查詢交換機(jī)能力的Feature消息、設(shè)置或者查詢配置參數(shù)Configuration消息、控制器指定從交換機(jī)的特定端口轉(zhuǎn)發(fā)數(shù)據(jù)包的Packet-in和Packet-Out消息等,在控制器中通過設(shè)置流表中的入端口和出端口參數(shù)就可以讓接收到流表的交換機(jī)根據(jù)入端口和出端口參數(shù)實(shí)現(xiàn)數(shù)據(jù)流的轉(zhuǎn)發(fā)。
圖3 wireshark抓包分析OpenFlow協(xié)議
典型的SDN架構(gòu)采用OpenFlow技術(shù)實(shí)現(xiàn)了把網(wǎng)絡(luò)數(shù)據(jù)和控制數(shù)據(jù)的分離,靈活改變網(wǎng)絡(luò)行為的意思體現(xiàn)出來,為未來網(wǎng)絡(luò)架構(gòu)及業(yè)務(wù)應(yīng)用發(fā)展提供了有效的方法,在分析基于OpenFlow技術(shù)仿真原理的基礎(chǔ)上,基于Mininet軟件,實(shí)現(xiàn)了一套基于OpenFlow技術(shù)的SDN仿真平臺(tái),驗(yàn)證了控制器對(duì)網(wǎng)絡(luò)設(shè)備的靈活控制,為SDN架構(gòu)的研究提供了平臺(tái)構(gòu)建及仿真技術(shù)支撐。
[1]趙慧玲,馮明,史凡.SDN—未來網(wǎng)絡(luò)演進(jìn)的重要趨勢(shì)[J].電信科學(xué),2012(11):1-5.
[2]王淑玲,李濟(jì)漢,張?jiān)?SDN架構(gòu)及安全性研[J].電信科學(xué), 2013(3):117-122.
[3]王文東,胡延楠.軟件定義網(wǎng)絡(luò):正在進(jìn)行的網(wǎng)絡(luò)變革[J].中興通訊技術(shù),2013(1):39-43.
[4]韋世紅,盧威.基于OpenFlow的未來互聯(lián)網(wǎng)試驗(yàn)網(wǎng)[J].計(jì)算機(jī)應(yīng)用系統(tǒng),2013(5):21-24.
[5]侯長(zhǎng)逸.OpenFlow網(wǎng)絡(luò)軟件路由研究[J].蘭州大學(xué)學(xué)報(bào), 2013(4):261-263.
[6]趙聯(lián)祥.SDN架構(gòu)下的Open Flow原理探討[J].電信技術(shù), 2013(2):70-72.
Research on SDN Architecture Simulation Based on Mininet
LI Yan HAO Zhi-an LI Ning LU Ji
(The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China)
The Software Defined Networking(SDN)is a new network innovation architecture,and the open OpenFlow technology is one of the most efficient technique for realizing the SDN architecture.In order to further study the characteristics of SDN architecture and provide the definable network platform for application innovation,the simulation of SDN architecture is implemented by using the Mininet simulation software based on OpenFlow technology.This paper summarizes the characteristics of typical SDN architecture, analyzes the simulation principles and methods based on OpenFlow technology,and verifies the functions and basic workflows of SDN architecture based on Mininet simulation software construction.The proposed simulation methods and platform provide the effective technical support for the research on SDN architecture.
SDN;OpenFlow;Mininet
TP393
A
1008-1739(2014)05-57-3
定稿日期:2013-12-26