邱 堃 方鈺權(quán) 陸 偉 趙 進(jìn)
1(復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院 上海 201203)2(上海文廣互動(dòng)電視有限公司 上海 200072)3(網(wǎng)絡(luò)信息安全審計(jì)與監(jiān)控教育部工程研究中心 上海 201203)
?
基于通用寬帶路由器的OpenFlow交換機(jī)設(shè)計(jì)
邱 堃1,3方鈺權(quán)1,3陸 偉2趙 進(jìn)1,3
1(復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)技術(shù)學(xué)院 上海 201203)2(上海文廣互動(dòng)電視有限公司 上海 200072)3(網(wǎng)絡(luò)信息安全審計(jì)與監(jiān)控教育部工程研究中心 上海 201203)
基于OpenFlow協(xié)議的軟件定義網(wǎng)絡(luò)離不開控制器與OpenFlow交換機(jī)。然而,支持OpenFlow協(xié)議的交換機(jī)異常昂貴且難于獲得。為了方便地獲得支持OpenFlow協(xié)議的交換機(jī),介紹一種基于通用寬帶路由器的OpenFlow交換機(jī)設(shè)計(jì)。該設(shè)計(jì)可以僅用市場(chǎng)上常見的通用寬帶路由器以及開源Linux軟件構(gòu)建出一款完整支持OpenFlow協(xié)議的交換機(jī)。實(shí)驗(yàn)結(jié)果顯示,該設(shè)計(jì)以可接受的性能實(shí)現(xiàn)現(xiàn)階段OpenFlow協(xié)議的所有功能。
軟件定義網(wǎng)絡(luò) OpenFlow 交換機(jī) Open vSwitch Open Wrt 通用寬帶路由器 Linux
全球互聯(lián)網(wǎng)自20世紀(jì)末進(jìn)入商用領(lǐng)域以來發(fā)展迅速,現(xiàn)在已經(jīng)成為推動(dòng)世界發(fā)展的力量的一個(gè)重要組成部分。隨著移動(dòng)互聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)等新概念的興起,基于下一代網(wǎng)絡(luò)的創(chuàng)新活動(dòng)日益活躍。其中,軟件定義網(wǎng)絡(luò)SDN作為下一代網(wǎng)絡(luò)的核心理念受到了全球廣泛的關(guān)注。
在傳統(tǒng)網(wǎng)絡(luò)中,網(wǎng)絡(luò)的業(yè)務(wù)發(fā)展依賴于網(wǎng)絡(luò)中硬件架構(gòu)的發(fā)展。隨著網(wǎng)絡(luò)規(guī)模的擴(kuò)大,網(wǎng)絡(luò)內(nèi)容正在爆炸式的增長(zhǎng)。云計(jì)算、物聯(lián)網(wǎng)、虛擬化等各種新技術(shù)不斷產(chǎn)生,改變了網(wǎng)絡(luò)業(yè)務(wù)發(fā)展的態(tài)勢(shì)。然而基于傳統(tǒng)網(wǎng)絡(luò)的業(yè)務(wù)發(fā)展模式難以滿足新興網(wǎng)絡(luò)應(yīng)用的發(fā)展速度,因此,基于軟件定義網(wǎng)絡(luò)的研究變得越來越重要?!败浖谡碱I(lǐng)世界,未來網(wǎng)絡(luò)與硬件無關(guān)?!?IT 產(chǎn)業(yè)的中心已經(jīng)從設(shè)備制造轉(zhuǎn)到軟件設(shè)計(jì),軟件定義網(wǎng)絡(luò)帶來了更大的靈活性與開放性。
誕生于學(xué)術(shù)界的軟件定義網(wǎng)絡(luò)是由美國(guó)斯坦福大學(xué) Clean Slate 研究組所提出的。它把傳統(tǒng)的硬件封閉式的網(wǎng)絡(luò)轉(zhuǎn)變成一個(gè)開放式的環(huán)境,大大提高了網(wǎng)絡(luò)的可編程性與可管理性。軟件定義網(wǎng)絡(luò)中的核心技術(shù) OpenFlow[1]能夠?qū)?shù)據(jù)層與控制層很好地分離,這讓網(wǎng)絡(luò)控制者能夠方便地控制自己的數(shù)據(jù),使得網(wǎng)絡(luò)可以集中控制與部署,從而使得新業(yè)務(wù)可以快速上線和應(yīng)用。
OpenFlow[1]網(wǎng)絡(luò)由 OpenFlow 交換機(jī)與控制器兩部分組成。為了實(shí)現(xiàn)數(shù)據(jù)層與控制層分離, OpenFlow 將原來由交換機(jī)與路由器所控制的轉(zhuǎn)發(fā)過程轉(zhuǎn)化為由 OpenFlow 交換機(jī)與控制器共同完成: OpenFlow 交換機(jī)進(jìn)行數(shù)據(jù)層的轉(zhuǎn)發(fā);控制器對(duì)網(wǎng)絡(luò)進(jìn)行集中控制。因此,控制層與數(shù)據(jù)層可以實(shí)現(xiàn)完全分離??刂破餍枰孪葘penFlow 交換機(jī)中的數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則設(shè)定好,從而達(dá)到控制數(shù)據(jù)轉(zhuǎn)發(fā)的目的。
現(xiàn)階段,OpenFlow交換機(jī)主要由兩種類型組成:一種是硬交換機(jī),即主要使用硬件來處理數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則。例如HP 5400系列、OpenxNet-5016R、盛科V350等交換機(jī),在這些交換機(jī)中使用TCAM或者NetFPGA等硬件設(shè)備來保證高速的規(guī)則匹配。另外一種則由普通PC機(jī)來提供平臺(tái),通過Open vSwitch來完成規(guī)則匹配以及數(shù)據(jù)轉(zhuǎn)發(fā)相關(guān)工作。這兩種平臺(tái)各有利弊,第一種平臺(tái)轉(zhuǎn)發(fā)效率高,但是擴(kuò)展性差并且價(jià)格昂貴; 第二種平臺(tái)轉(zhuǎn)發(fā)效率適中,但是擴(kuò)展性好并且價(jià)格適中。但是,無論哪種平臺(tái),其成本都不適合作為小規(guī)模實(shí)驗(yàn)用。本文提出了一種在家用簡(jiǎn)單路由器上運(yùn)行的OpenFlow交換機(jī)系統(tǒng),該系統(tǒng)可以在目前常用的通用寬帶路由器上運(yùn)行,給通用寬帶路由器加上OpenFlow相關(guān)特性。
1.1 OpenFlow交換機(jī)的發(fā)展
網(wǎng)絡(luò)交換機(jī)是一種計(jì)算機(jī)網(wǎng)絡(luò)設(shè)備,這種設(shè)備將其他不同的網(wǎng)絡(luò)設(shè)備連接在一起,并在這些設(shè)備之間轉(zhuǎn)發(fā)數(shù)據(jù)。網(wǎng)絡(luò)交換機(jī)的功能強(qiáng)于集線器。網(wǎng)絡(luò)交換機(jī)只會(huì)把接收到的數(shù)據(jù)交換到數(shù)據(jù)所需要被轉(zhuǎn)發(fā)的網(wǎng)絡(luò)端口,而集線器則會(huì)把接收到的數(shù)據(jù)無條件轉(zhuǎn)發(fā)給所有網(wǎng)絡(luò)端口。
一般來說,一個(gè)網(wǎng)絡(luò)交換機(jī)有許多個(gè)端口,這些端口與CPU一同被橋接在一起,用以提供在OSI模型中的第二層——數(shù)據(jù)交換功能。交換機(jī)內(nèi)的數(shù)據(jù)傳輸是異步的。假設(shè)有4臺(tái)計(jì)算機(jī)(A、B、C、D)連接上了某個(gè)交換機(jī)的四個(gè)端口,在任何時(shí)刻,任何組合都可以同時(shí)傳輸:A可以與B交換數(shù)據(jù),同時(shí)C可以與D交換數(shù)據(jù),并且兩者之間互不干擾。在全雙工模式下,A在發(fā)送數(shù)據(jù)給B的同時(shí),B也可以發(fā)送數(shù)據(jù)給C。
對(duì)于現(xiàn)代網(wǎng)絡(luò)交換機(jī)而言,設(shè)備制造商通過擴(kuò)展設(shè)備內(nèi)不同的模塊可以實(shí)現(xiàn)對(duì)不同網(wǎng)絡(luò)類型的支持:以太網(wǎng)、光纖、ATM等。除了可以工作在OSI模型的第二層,還可以工作在OSI模型的第三層,可以工作在第三層的交換機(jī)一般被稱作路由器。為了保證網(wǎng)絡(luò)交換機(jī)的性能以及安全性,某些設(shè)備制造商會(huì)在網(wǎng)絡(luò)交換機(jī)中提供例如防火墻、網(wǎng)絡(luò)行為監(jiān)測(cè)以及性能分析等工具。
網(wǎng)絡(luò)交換機(jī)中最為核心的部分是交換機(jī)芯片。在早期,規(guī)則匹配以及網(wǎng)絡(luò)交換行為是在OSI模型的第二層中實(shí)現(xiàn)的,因此在早期的交換芯片中只包含第二層協(xié)議(簡(jiǎn)稱MAC層)相關(guān)的處理機(jī)制。為了能夠傳輸數(shù)據(jù),還需要一套OSI模型第一層(物理層)處理芯片(簡(jiǎn)稱PHY)來將網(wǎng)絡(luò)數(shù)據(jù)與物理層信號(hào)進(jìn)行互相轉(zhuǎn)換,使得通信得以正常進(jìn)行。隨著大規(guī)模集成電路的廣泛應(yīng)用,現(xiàn)在已經(jīng)出現(xiàn)了將OSI第一層處理物理信號(hào)的芯片與第二層處理網(wǎng)絡(luò)數(shù)據(jù)的芯片集成在一起的交換機(jī)芯片。目前低速網(wǎng)絡(luò)設(shè)備已經(jīng)大量使用這種芯片,而高速網(wǎng)絡(luò)設(shè)備依舊需要專有的物理層處理芯片。現(xiàn)有的交換機(jī)芯片主要由Broadcom、Realtek以及VIA公司提供。Broadcaom公司作為數(shù)據(jù)通信行業(yè)的領(lǐng)導(dǎo)者,較早推出將MAC層與PHY層集成在一顆芯片上的解決方案。根據(jù)處理能力以及市場(chǎng)定位的不同,Broadcom公司推出了幾款不同的商用交換機(jī)芯片方案:
1) 較為低端的BCM5312+BCM5248U+B5011A方案。其中,BCM5312為第二層(MAC層)數(shù)據(jù)處理芯片,內(nèi)部可以存儲(chǔ)4K個(gè)MAC地址。BCM5248U是一個(gè)8口百兆PHY,BCM5011A則是一個(gè)千兆PHY。整個(gè)產(chǎn)品的交換能力可以達(dá)到8.8 Gbps。
2) 中、高端的產(chǎn)品使用的BCM5380芯片。這顆芯片中集成了一個(gè)8口百兆PHY與一個(gè)千兆PHY。若整個(gè)交換機(jī)使用3顆BCM5380芯片則可以組成一個(gè)24口百兆+6口千兆的產(chǎn)品。BCM5380芯片集成了一個(gè)12 MB的緩存用以數(shù)據(jù)包的轉(zhuǎn)發(fā),整個(gè)產(chǎn)品可以達(dá)到16.8 Gbps的交換能力。
3) 集成度更高的產(chǎn)品使用BCM5324芯片,集成了24口百兆PHY的交換機(jī)芯片,集成度更高并且性能更好。BCM5324芯片集成了4 MB緩存用于數(shù)據(jù)包的存儲(chǔ)轉(zhuǎn)發(fā)。
然而,無論是Broadcom或者Realtek或者其他芯片公司,他們的產(chǎn)品參數(shù)大同小異,但是在產(chǎn)品功能細(xì)化上卻有著較大的差異。無論如何,目前主流網(wǎng)絡(luò)交換機(jī)主要功能還是由第二層網(wǎng)絡(luò)芯片與第一層物理交換芯片組成。
1.2 OpenFlow交換機(jī)
OpenFlow交換機(jī)是一種在軟件定義網(wǎng)絡(luò)中使用的交換機(jī)設(shè)備,這種設(shè)備基于OpenFlow協(xié)議或與之兼容。
在傳統(tǒng)的網(wǎng)絡(luò)交換機(jī)中,數(shù)據(jù)轉(zhuǎn)發(fā)(數(shù)據(jù)平面)與路由、防火墻(控制平面)等功能是在同一個(gè)設(shè)備當(dāng)中。在軟件定義網(wǎng)絡(luò)中,數(shù)據(jù)平面與控制平面從同一個(gè)設(shè)備當(dāng)中分離出來,數(shù)據(jù)平面仍然在交換機(jī)內(nèi)部實(shí)現(xiàn),但是控制平面則會(huì)獨(dú)立由OpenFlow控制器進(jìn)行控制。OpenFlow控制器可以實(shí)現(xiàn)高級(jí)別的交換機(jī)行為控制。OpenFlow交換機(jī)與OpenFlow控制器通過OpenFlow協(xié)議進(jìn)行信息交互。
與傳統(tǒng)的網(wǎng)絡(luò)交換機(jī)不同,OpenFlow交換機(jī)必須遵守OpenFlow協(xié)議[3]。OpenFlow協(xié)議規(guī)范中規(guī)定,OpenFlow交換機(jī)需要支持如表1所示的表項(xiàng)以及流表。
表1 OpenFlow表項(xiàng)內(nèi)容
一個(gè) OpenFlow 流表由大量 OpenFlow 表項(xiàng)所組成。每一個(gè)表項(xiàng)包括:
1) 匹配項(xiàng);
2) 優(yōu)先級(jí);
3) 計(jì)數(shù)器;
4) 操作指令;
5) 超時(shí);
6) Cookie。
每一個(gè)表項(xiàng)包括匹配項(xiàng)與優(yōu)先級(jí),匹配項(xiàng)與優(yōu)先級(jí)可以唯一地定義流表中的表項(xiàng)。若匹配項(xiàng)中所有項(xiàng)都是任意可取,則這樣的表項(xiàng)的優(yōu)先級(jí)永遠(yuǎn)是 0,并且這個(gè)表項(xiàng)被叫做失敗匹配項(xiàng)。
數(shù)據(jù)包能否被匹配取決于數(shù)據(jù)包中的匹配項(xiàng)是否能夠被流表項(xiàng)中的匹配項(xiàng)所匹配。如果表項(xiàng)中的匹配項(xiàng)中有值是“ANY”(忽略該項(xiàng)),那么數(shù)據(jù)包中該匹配項(xiàng)在匹配時(shí)會(huì)被忽略。如果交換機(jī)的特性支持精確匹配,那么交換機(jī)可以對(duì)輸入流進(jìn)行更精確的匹配(例如 IP 地址前綴查找匹配、MAC地址前綴查找匹配)。如果數(shù)據(jù)包可以被多個(gè)流表中的表項(xiàng)匹配,那么只有優(yōu)先級(jí)別最高的表項(xiàng)可以被選擇。當(dāng)流表中的表項(xiàng)被匹配,對(duì)應(yīng)表項(xiàng)的計(jì)數(shù)器會(huì)被更新,表項(xiàng)所對(duì)應(yīng)的命令指令會(huì)被執(zhí)行。如果有復(fù)數(shù)個(gè)優(yōu)先級(jí)別相同的的表項(xiàng)被匹配, OpenFlow 對(duì)于這類操作是未定義的。在 OpenFlow Specification 1.3 中,定義了最新的 OpenFlow 匹配項(xiàng)的內(nèi)容。這些匹配項(xiàng)一共有 40多個(gè),不過交換機(jī)并不需要實(shí)現(xiàn)所有 40 多個(gè)匹配項(xiàng)的匹配功能??刂破骺梢酝ㄟ^查詢交換機(jī)來得知交換機(jī)支持哪些匹配項(xiàng)目。
由上文可知,OpenFlow交換機(jī)的設(shè)計(jì)與傳統(tǒng)二層交換機(jī)區(qū)別甚大,因此OpenFlow交換機(jī)的交換芯片需要重新進(jìn)行設(shè)計(jì)。Specification 1.3中提出,由OpenFlow標(biāo)準(zhǔn)規(guī)定,流表中的字段可以自由組合進(jìn)行流表查找。在現(xiàn)在的芯片設(shè)計(jì)中,能夠?qū)崿F(xiàn)這種需求的只有TCAM芯片。TCAM芯片是一種三態(tài)內(nèi)容尋址存儲(chǔ)器,其設(shè)計(jì)的目的是快速查找訪問控制列表、路由表等表項(xiàng)。TCAM中每個(gè)比特位可以有三種狀態(tài):’0’、‘1’和‘don’t care’。第三種狀態(tài)的存在使得TCAM既可以精確匹配也可以模糊查找。雖然TCAM有這么多的優(yōu)點(diǎn),但是TCAM的成本非常高,其存儲(chǔ)空間的價(jià)格遠(yuǎn)遠(yuǎn)高于一般的SRAM,而且功耗也高于SRAM,占用芯片面積大。一條TCAM表項(xiàng)相當(dāng)于五六條DRAM表項(xiàng),幾十千比特的流表至少需要20 Mbit的TCAM,遠(yuǎn)超目前市場(chǎng)上最大交換芯片的TCAM大小。
除了TCAM芯片,目前被用來作為OpenFlow交換機(jī)芯片的還有NetFPGA以及網(wǎng)絡(luò)處理器NP。NetFPGA與NP一樣,均是具有非常強(qiáng)大的可編程能力的芯片。這些芯片被用來作為OpenFlow交換機(jī)芯片的好處在于,設(shè)備商可以非常方便地對(duì)芯片的功能進(jìn)行更改。Stanford大學(xué)在研究OpenFlow的初期,就是使用基于FPGA開發(fā)的NetFPGA可編程平臺(tái)。在文獻(xiàn)[2]中,使用NetFPGA實(shí)現(xiàn)的OpenFlow交換機(jī),當(dāng)包大小為64 bytes時(shí),速度可以達(dá)到61 Kflows/s,在文獻(xiàn)[4,9]中,使用NP實(shí)現(xiàn)的OpenFlow交換機(jī)也有不錯(cuò)的性能。然而,使用NP或者NetFPGA來實(shí)現(xiàn)OpenFlow交換機(jī),在成本上與容量上都有著弊端。而且對(duì)于成品交換機(jī)來說,NP和NetFPGA的可編程性并沒有特別大意義,即對(duì)于用戶來說,內(nèi)部芯片是否可編程不會(huì)影響到OpenFlow交換機(jī)的功能。因此,使用NP以及NetFPGA來設(shè)計(jì)OpenFlow交換機(jī)更多的意義在于實(shí)現(xiàn)OpenFlow交換機(jī)功能的原型,或者作為商業(yè)OpenFlow交換機(jī)的補(bǔ)充。
ONF組織(開放網(wǎng)絡(luò)組織)意識(shí)到為OpenFlow交換機(jī)重新設(shè)計(jì)芯片是一件較為困難的事情。因此,ONF在2012年提出了一個(gè)叫作TTP(Table Typing Patterns)的方案。TTP的目的在于使用現(xiàn)有的交換機(jī)芯片處理邏輯來達(dá)到OpenFlow交換機(jī)的功能。TTP在2013年重新改名為NDM(Negotiable Data-plane Model)。在傳統(tǒng)的商用交換機(jī)處理芯片中與OpenFlow邏輯類似的是ACL表,而NDM希望在保持與控制器接口不變的前提下,使用傳統(tǒng)商用交換機(jī)中的路由表、VLAN表、MPLS表等相關(guān)表項(xiàng)來實(shí)現(xiàn)OpenFlow的功能。雖然無法完全實(shí)現(xiàn)OpenFlow的功能,但是在大多數(shù)應(yīng)用下使用這些傳統(tǒng)表項(xiàng)就可以滿足了。在文獻(xiàn)[5]中,作者就使用VLAN來實(shí)現(xiàn)部分OpenFlow的功能。
還有一種通過使用軟件來實(shí)現(xiàn)OpenFlow交換機(jī)的功能,這類交換機(jī)有著最好的可調(diào)整性與擴(kuò)展性。通過一臺(tái)普通的PC機(jī)與一些網(wǎng)卡以及開源軟件就可以搭建出一臺(tái)具有OpenFlow功能的交換機(jī)。這種交換機(jī)在本質(zhì)上還是一臺(tái)PC機(jī),沒有專有的轉(zhuǎn)發(fā)處理模塊,基本上使用多核CPU來進(jìn)行轉(zhuǎn)發(fā)匹配操作。也有在GPU上進(jìn)行流表匹配的相關(guān)研究[6-8],但是并沒有相應(yīng)的成品出現(xiàn)。一般使用的開源軟件主要搭配是Linux+Open vSwitch,目前Open vSwitch已經(jīng)將自身部分整合進(jìn)入了Linux內(nèi)核中。
目前,得益于芯片制造工藝與性能的提升,通用寬帶路由器的進(jìn)入門檻變得越來越低。雖然市面上有著許多種通用寬帶路由器,但是根據(jù)它們所使用的芯片方案可以簡(jiǎn)單地將其進(jìn)行分類。目前,占據(jù)通用寬帶路由器市場(chǎng)份額前幾名的主要有Atheros、Braodcom以及Ralink等幾家公司所設(shè)計(jì)的芯片組。
通用寬帶路由器與商用網(wǎng)絡(luò)交換機(jī)不同,商家根據(jù)市場(chǎng)需求,對(duì)商用網(wǎng)絡(luò)交換機(jī)的功能從各個(gè)方面進(jìn)行大幅度縮減,如表2所示。
表2 通用寬帶路由器與商用網(wǎng)絡(luò)交換機(jī)功能對(duì)比
由表2可知,通用寬帶路由器功能比商用網(wǎng)絡(luò)交換機(jī)少許多,但是在功耗上遠(yuǎn)低于商用網(wǎng)絡(luò)交換機(jī),并且在價(jià)格上也遠(yuǎn)比商用交換機(jī)便宜。因此,通用寬帶路由器多采用集成度較高的芯片方案,一般將交換機(jī)數(shù)據(jù)處理芯片與交換機(jī)芯片集成在一起以減少成本。Artheros官方給出了一套成熟的解決方案:AR9XXX解決方案。這款芯片可以支持32 MB的RAM,并且支持至少4 MB的Flash ROM。AR9XXX系列也有不同的細(xì)分產(chǎn)品,如表3所示。
表3 AR9XXX系列路由器芯片
使用AR9XXX系列的設(shè)備有許多,常見的有TP-LINK制造的TL-WR941N、TL-WR941ND以及D-LINK的DIR-615和水星的MWR300T+等。同樣,Artheros還給出了更為低端的AR7XXX系列,使用AR7XXX系列的設(shè)備主要有TP-LINK制造的TL-WR7XX、TL-WR8XX等許多通用寬帶路由器。
Broadcom公司作為網(wǎng)絡(luò)芯片設(shè)計(jì)的標(biāo)桿也有許多通用寬帶路由器芯片產(chǎn)品。著名的Cisco無線路由器Linksys WRT54G便使用了Broadcom的brcm47xx系列芯片。brcm47xx系列芯片也有不同細(xì)分的產(chǎn)品,如表4所示。
表4 brcm47xx系列路由器芯片
由此可見,brcm47xx系列與AR9XXX系列在不同細(xì)分下標(biāo)準(zhǔn)不太相同,brcm47xx通過改變CPU的時(shí)鐘頻率來改變芯片性能。
采用Broadcom解決方案的設(shè)備主要集中在較為高端的通用寬帶路由器中,如曾經(jīng)在Cisco旗下的Linksys推出的著名的WRT54G系統(tǒng)就采用了brcm47xx系列芯片。中國(guó)電信與中國(guó)聯(lián)通為普及寬帶向家庭用戶贈(zèng)送的上海貝爾RG100A-AA以及大亞DB120WG兩款路由器均是采用bcm6358芯片,性能與擴(kuò)展性都非常優(yōu)秀。
還有其他路由器如華為HG255D、貝爾金 8235-4 V2采用了Ralink公司的芯片,D-Link的dir 615 rev.A 采用了 Marvell 88E6061。這些芯片在功能上與Atheros和Broadcom公司的芯片大同小異,但是在性能或者穩(wěn)定性上不如以上兩家公司的芯片,因此價(jià)格較為便宜,常用在低端通用寬帶路由器中。
在軟件上,通用寬帶路由器普遍使用兩種操作系統(tǒng):Linux與VxWorks。由于通用寬帶路由器的主控芯片多為MIPS或者ARM架構(gòu),采用開源Linux系統(tǒng)作為通用寬帶路由占了大部分,Linksys的WRT54G早期版本即是使用開源Linux作為其操作系統(tǒng)。由于是開源軟件,所以就有可能對(duì)通用寬帶路由器進(jìn)行系統(tǒng)上的修改以達(dá)到添加用戶所需要的功能的目的。
OpenWrt是一個(gè)主要在通用寬帶路由器上運(yùn)行的開源Linux發(fā)行版。由于Linksys的WRT54G使用了開源的Linux操作系統(tǒng),而Linux操作系統(tǒng)是遵守GPL協(xié)議的,所以Linksys公司被迫放出WRT54G系統(tǒng)的源代碼,經(jīng)過開源團(tuán)體的維護(hù)形成了以O(shè)penWrt為代表的在通用寬帶路由器運(yùn)行的開源Linux發(fā)行版。OpenWrt可以通過命令行以及Web頁面的方式對(duì)其進(jìn)行配置,到2015年6月為止,已經(jīng)有超過3500個(gè)左右的軟件包可供安裝,提供了非常強(qiáng)大的可擴(kuò)展性。OpenWrt支持超過50種不同的芯片,從上文所述的Broadcom、Atheros、Ralink到Intel的X86與X86-64都有支持。TP-LINK的TL-8XX系列、Linksys的WRT54G系列等均被成功移植OpenWrt系統(tǒng)。OpenWrt可以讓通用寬帶路由器擴(kuò)展出更多功能,如文件服務(wù)器(FTP)、P2P下載服務(wù)器等功能。由于OpenWrt是一個(gè)開源的Linux發(fā)行版本,大部份Linux應(yīng)用程序均可以工作在OpenWrt上,這為通用寬帶路由器的功能擴(kuò)展帶來了無限的可能性。
如上文所述,大部分通用寬帶路由器實(shí)質(zhì)上是一個(gè)運(yùn)行著Linux操作系統(tǒng)的嵌入式系統(tǒng),因此移植本屬于在PC機(jī)上運(yùn)行的OpenFlow交換機(jī)軟件——Open vSwitch到運(yùn)行著OpenWrt系統(tǒng)的通用寬帶路由器當(dāng)中即可。
對(duì)于大部分通用寬帶路由器來說,如圖1所示, 有兩類芯片控制著交換機(jī)的轉(zhuǎn)發(fā)過程。
圖1 通用寬帶路由器中的控制芯片與交換芯片
其中控制芯片與轉(zhuǎn)發(fā)芯片根據(jù)公司的不同會(huì)有不同的型號(hào)與封裝形式。Linksys公司的WRT54G v2.0使用的是bcm4712(控制芯片)+bcm5325(交換芯片)的組合,TP-LINK公司的TL-WR1043ND使用的是AR9132(控制芯片)+RTL8366RB(交換芯片)組合。然而該公司的TL-WR841N v7.0則使用了一個(gè)將兩者集成在一個(gè)芯片的型號(hào)AR7240,雖然兩芯片的物理部分集成在一起,但邏輯部分仍然是分開的。
一般來說,控制芯片都是通用處理器,即可以由運(yùn)行在其上的Linux操作系統(tǒng)直接進(jìn)行控制。然而,交換機(jī)芯片則不同,根據(jù)不同的制造廠家,芯片的操作方式完全不同,這就需要在Linux操作系統(tǒng)上移植相應(yīng)的交換芯片驅(qū)動(dòng)程序以實(shí)現(xiàn)對(duì)交換芯片的配置。目前常用的交換芯片驅(qū)動(dòng)都已被移植入OpenWrt操作系統(tǒng),通過相應(yīng)的程序可以直接對(duì)交換芯片進(jìn)行功能的控制。有些芯片的驅(qū)動(dòng)程序并不完善(一些功能沒有被成功移植,例如VLAN等),因此還需要根據(jù)需求對(duì)驅(qū)動(dòng)程序進(jìn)行相應(yīng)的修改才能正常工作。
Open vSwitch,有時(shí)也簡(jiǎn)稱Ovs,是一個(gè)高質(zhì)量的開源虛擬化交換機(jī)。Open vSwitch的目的在于提供一個(gè)僅使用普通PC硬件組成的網(wǎng)絡(luò)交換機(jī)。Open vSwitch不僅僅能夠滿足現(xiàn)有交換機(jī)的功能,還能夠組建兼容OpenFlow協(xié)議的OpenFlow交換機(jī)。Open vSwitch不僅可以像一個(gè)商用網(wǎng)絡(luò)交換機(jī)提供不同設(shè)備之間的數(shù)據(jù)交換服務(wù),還可以在單臺(tái)計(jì)算機(jī)中為不同的虛擬機(jī)提供虛擬交換機(jī)的服務(wù)。
在計(jì)算機(jī)網(wǎng)絡(luò)中,網(wǎng)橋的概念與交換機(jī)類似。網(wǎng)橋可以在一臺(tái)計(jì)算機(jī)中連接幾個(gè)不同的局域網(wǎng)設(shè)備,根據(jù)程序的設(shè)定來轉(zhuǎn)發(fā)數(shù)據(jù)幀。一般來說,網(wǎng)橋會(huì)根據(jù)MAC地址來轉(zhuǎn)發(fā)數(shù)據(jù)幀,這種行為與網(wǎng)絡(luò)交換機(jī)十分類似。在Open vSwitch中,將需要組成交換機(jī)的端口加入Open vSwitch所控制的網(wǎng)橋后再將加入的端口配置成混雜模式即可。當(dāng)Open vSwitch被配置成OpenFlow交換機(jī)模式后,加入該網(wǎng)橋的所有端口就成為了一臺(tái)OpenFlow交換機(jī)。
然而,如圖2所示,一般來說通用寬帶路由器的控制芯片是無法分辨數(shù)據(jù)是從交換芯片的哪一個(gè)端口送出來的(交換芯片的每一個(gè)端口對(duì)應(yīng)一個(gè)數(shù)據(jù)流,數(shù)據(jù)可能從1口傳送到控制芯片也可能從4口傳送到控制芯片,控制芯片無法分辨是從具體哪個(gè)端口傳送的),也無法直接將數(shù)據(jù)包發(fā)送到特定的端口。這是因?yàn)樵谝话愕脑O(shè)置下,交換機(jī)芯片只有一個(gè)端口與控制芯片進(jìn)行通信,這就造成了控制芯片無法對(duì)通用寬帶路由器具體端口進(jìn)行控制。這是因?yàn)橥ㄓ脤拵酚善鞯脑O(shè)計(jì)目標(biāo)是簡(jiǎn)單的數(shù)據(jù)交換,并不需要復(fù)雜的控制功能。若將通用寬帶路由器添加OpenFlow功能則需要控制芯片可以識(shí)別來自不同端口的數(shù)據(jù)包。
圖2 通用寬帶路由器交換芯片與數(shù)據(jù)流示意圖
如圖3所示,為了達(dá)成這個(gè)目的,可以使用VLAN技術(shù)對(duì)經(jīng)過不同端口的數(shù)據(jù)包加標(biāo)簽,使得控制芯片可以識(shí)別數(shù)據(jù)包是從哪一個(gè)端口進(jìn)入的。VLAN中文名為“虛擬局域網(wǎng)”。VLAN可以將一個(gè)交換機(jī)中的網(wǎng)絡(luò)從邏輯上劃分為不同的幾個(gè)網(wǎng)絡(luò),網(wǎng)絡(luò)之間互相無干擾,好似一個(gè)交換機(jī)被分隔成了幾個(gè)不同的交換機(jī)。VLAN的簡(jiǎn)單工作流程如圖4所示。
圖3 使用VLAN技術(shù)對(duì)數(shù)據(jù)包加標(biāo)簽
圖4 VLAN的工作流程
由圖4中可以看出,當(dāng)數(shù)據(jù)包經(jīng)過某個(gè)交換機(jī)端口時(shí),如果這個(gè)端口屬于某個(gè)VLAN,則該數(shù)據(jù)包就會(huì)被打上該VLAN的標(biāo)簽。同時(shí)也可以通過設(shè)置端口,使得數(shù)據(jù)包在流出端口時(shí)將標(biāo)簽取消。一般標(biāo)簽都是一個(gè)數(shù)字,控制芯片可以根據(jù)這個(gè)標(biāo)簽來判斷該數(shù)據(jù)包屬于哪一個(gè)VLAN。具有相同標(biāo)簽數(shù)據(jù)包會(huì)被交換機(jī)認(rèn)為是一個(gè)網(wǎng)段數(shù)據(jù)包,可以被轉(zhuǎn)發(fā)到屬于該VLAN的端口或被控制芯片所接收,否則會(huì)被認(rèn)為是其他網(wǎng)段的數(shù)據(jù)包而不予轉(zhuǎn)發(fā)。
圖5 控制芯片依據(jù)標(biāo)簽分辨數(shù)據(jù)據(jù)包進(jìn)入端口
如圖5所示,為使通用寬帶路由器的控制芯片能夠分辨數(shù)據(jù)包具體從哪一個(gè)端口進(jìn)入,通過控制交換芯片給每一個(gè)端口都分配一個(gè)不同的VLAN。這樣數(shù)據(jù)包在從端口進(jìn)入的時(shí)候就會(huì)被打上標(biāo)簽,控制芯片就可以依據(jù)標(biāo)簽分辨數(shù)據(jù)包具體是從哪個(gè)端口進(jìn)入。同時(shí)還可以通過不同的VLAN屏蔽交換芯片本來的交換功能,將端口的控制權(quán)上交給控制芯片。
對(duì)于OpenWrt系統(tǒng)來說,只要有相應(yīng)的交換芯片驅(qū)動(dòng),swconfig命令便可以簡(jiǎn)單地對(duì)交換芯片進(jìn)行控制。當(dāng)通過swconfig或者其他方式對(duì)交換芯片配置好以后,原本在OpenWrt中僅有的兩個(gè)端口擴(kuò)充到了4個(gè)或5個(gè)端口(根據(jù)交換芯片的能力與通用寬帶路由器的配置而定)。就像普通的局域網(wǎng)設(shè)備一樣,OpenWrt對(duì)這些端口有著完全的控制權(quán)。再將這些端口一一加入Open vSwitch的網(wǎng)橋中,由Open vSwitch接管所有端口的控制權(quán)。OpenFlow交換機(jī)除了數(shù)據(jù)平面外還需要有控制平面。如圖6所示, 將某一個(gè)端口設(shè)置為固定IP地址后,在Open vSwitch中設(shè)置該IP為該OpenFlow交換機(jī)的控制平面IP,再將該端口與OpenFlow控制器相連,OpenFlow控制器便可發(fā)現(xiàn)該OpenFlow交換機(jī)。
圖6 設(shè)定的控制端口接受控制器的控制
4.1 實(shí)驗(yàn)環(huán)境
本實(shí)驗(yàn)由一臺(tái)PC機(jī)作為控制器,移植了三臺(tái)不同的通用寬帶路由器成為OpenFlow交換機(jī)。
路由器硬件情況如表5所示。
表5 路由器硬件情況
路由器軟件情況如表6所示。
表6 路由器軟件情況
控制器配置如表7所示。
表7 控制器配置
4.2 關(guān)閉交換芯片的MAC地址學(xué)習(xí)功能
在移植過程中,OpenWrt的驅(qū)動(dòng)不支持關(guān)閉某些交換芯片的MAC地址學(xué)習(xí)功能。主要表現(xiàn)在交換芯片將ARP請(qǐng)求私自處理,導(dǎo)致ARP包無法從端口進(jìn)入Open vSwitch所構(gòu)建的網(wǎng)橋。因此在向某些通用寬帶路由器移植OpenFlow功能時(shí),需要首先檢查OpenWrt能否關(guān)閉芯片的MAC地址學(xué)習(xí)功能。如果無法打開混雜模式,則需要通過修改交換芯片的驅(qū)動(dòng)以打開混雜模式。在實(shí)驗(yàn)過程中,水星公司的MW150R(控制芯片為AR9331)以及TP-LINK公司的WR841N(控制芯片為AR7240)所集成的交換芯片的驅(qū)動(dòng)均不支持關(guān)閉交換芯片的MAC地址學(xué)習(xí),導(dǎo)致Open vSwitch無法接收某些數(shù)據(jù)包。在修改交換芯片的驅(qū)動(dòng)程序以后,該問題得到了解決。在實(shí)驗(yàn)過程中,其他型號(hào)的通用寬帶路由器所帶的交換芯片沒有出現(xiàn)如上所述的問題。
4.3 實(shí)驗(yàn)結(jié)果與分析
本文對(duì)上文所述的三種路由器進(jìn)行了性能測(cè)試。在控制器上運(yùn)行L2_Learning_Switch,同時(shí)進(jìn)行不同的上網(wǎng)應(yīng)用,記錄路由器以及控制器的CPU使用率。
從圖7可以看出,CPU的頻率與路由器的性能有著非常大的關(guān)聯(lián)度。在日常上網(wǎng)的情況下,CPU頻率較低的Linksys WRT54G的占用率接近50%,而其他兩款路由器的CPU占用率在20%附近。當(dāng)開始全速下載時(shí),所有的路由器占用率均全部達(dá)到100%,即將所有的資源消耗殆盡。然而,不管在什么情況下,控制器的CPU使用率均沒有太大的變化,一直保持在4.5%左右。
圖7 不同通用寬帶路由器在不同運(yùn)行場(chǎng)景下的CPU使用率
圖8 在CPU使用率均達(dá)到100%時(shí)各路由器的傳輸速度
如圖8所示,CPU的性能直接決定了路由器交換性能。在滿速下載文件時(shí),LinksysCPU頻率最低,因此交換性能非常低下,只有不到1000 Kbps;而其他兩款路由器均在5 Kbps以上。由于WR841N的CPU速度比MW150R快100 Mhz左右,所以整體傳輸速度也較快。
本文介紹了現(xiàn)代網(wǎng)絡(luò)交換機(jī)以及通用寬帶路由器的內(nèi)部硬件結(jié)構(gòu)以及軟件構(gòu)成。在使用開源路由器操作系統(tǒng)的環(huán)境下,通過控制通用寬帶路由器的交換芯片,通過VLAN技術(shù)將交換芯片的每個(gè)端口分割獨(dú)立,使得路由器的控制芯片可以直接控制每個(gè)端口狀態(tài)與輸入輸出;再由OpenFlow模式下的OpenVSwitch所創(chuàng)建的網(wǎng)橋控制每個(gè)端口,達(dá)到將通用寬帶路由器變成OpenFlow交換機(jī)的目的。在移植的過程中,發(fā)現(xiàn)一些芯片方案需要通過修改驅(qū)動(dòng)以關(guān)閉MAC地址學(xué)習(xí)功能才可正常接收數(shù)據(jù)包。使用通用寬帶路由器改造的OpenFlow交換機(jī)可以大幅度降低使用OpenFlow交換機(jī)的成本,同時(shí)由于通用寬帶路由器的小體積以及低功耗,在進(jìn)行OpenFlow相關(guān)的科研工作中可以大量采購(gòu)這種設(shè)備以更好地從事OpenFlow網(wǎng)絡(luò)以及軟件定義網(wǎng)絡(luò)的相關(guān)研究。
本文還對(duì)這樣的OpenFlow交換機(jī)進(jìn)行了性能測(cè)試。測(cè)試結(jié)果表明在實(shí)驗(yàn)環(huán)境下,通用寬帶路由器改造的OpenFlow交換機(jī)的性能可以達(dá)到正常實(shí)驗(yàn)應(yīng)用的程度。
[1] Mckeown N,Anderson T,Balakrishnan H,et al.OpenFlow:Enabling innovation in campus networks[J].ACM SIGCOMM Computer Communication Review,2008,38(2):69-74.
[2] Khan A,Dave N.Enabling Hardware Exploration in Software-Defined Networking:A Flexible,Portable OpenFlow Switch[C]//Field-Programmable Custom Computing Machines (FCCM),2013 IEEE 21st Annual International Symposium on.IEEE,2013:145-148.
[3] Paul Goransson,Chuck Black.Chapter 5- The OpenFlow Specification[J].Software Defined Networks,2014:81-118.
[4] Sune M,Alvarez V,Jungel T,et al.An OpenFlow Implementation for Network Processors[C]//Software Defined Networks (EWSDN),2014 Third European Workshop on.IEEE,2014:123-124.
[5] Hand R,Keller E.ClosedFlow:OpenFlow-like control over proprietary devices[C]//Proceedings of the third workshop on Hot topics in software defined networking.ACM,2014:7-12.
[6] Han S,Jang K,Park K S,et al.PacketShader:A GPU-Accelerated Software Router[J].ACM SIGCOMM Computer Communication Review,2010,41(4):195-206.
[7] Xiuhai L.An OpenFlow Switch Model using Kepler GPU[J].Journal of Software Engineering,2014,8(4):304-313.
[8] Qiu K,Chen Z,Chen Y,et al.GFlow:Towards GPU-based high-performance table matching in OpenFlow switches[C]//2015 International Conference on Information Networking (ICOIN).IEEE Computer Society,2015:283-288.
[9] Ferkouss O E,Snaiki I,Mounaouar O,et al.A 100Gig network processor platform for openflow[C]//Network and Service Management (CNSM),2011 7th International Conference on.IEEE,2011:1-4.
A DESIGN OF OPENFLOW SWITCH BASED ON GENERAL BROADBAND ROUTER
Qiu Kun1,3Fang Yuquan1,3Lu Wei2Zhao Jin1,3
1(SchoolofComputerScience,FudanUniversity,Shanghai201203,China)2(ShanghaiInteractiveTelevisionCo.,Ltd,Shanghai200072,China)3(EngineeringResearchCenterofCyberSecurityAuditingandMonitoring,MinistryofEducation,Shanghai201203,China)
OpenFlow protocol-based software-defined network has to rely on controller and OpenFlow switch. However the switches supporting OpenFlow protocol are extremely expensive and difficult to get. In order to facilitate the obtainment of switches supporting OpenFlow protocol, in this paper we introduce a general broadband router-based design of OpenFlow switch. The design can construct such a switch fully supporting OpenFlow protocol by only using general broadband router commonly found in markets and the open-source Linux software. Experimental results show that the design can implement all functions of OpenFlow protocol at current stage with an acceptable performance.
Software-defined network OpenFlow Switch Open vSwitch Open Wrt General broadband router Linux
2015-09-01。國(guó)家科技支撐計(jì)劃項(xiàng)目(2012BAH39F 06)。邱堃,碩士生,主研領(lǐng)域:未來網(wǎng)絡(luò)。方鈺權(quán),本科生。陸偉,工程師。趙進(jìn),副教授。
TP3
A
10.3969/j.issn.1000-386x.2016.11.020