邱 堃 方鈺權(quán) 陸 偉 趙 進
1(復(fù)旦大學(xué)計算機科學(xué)技術(shù)學(xué)院 上海 201203)2(上海文廣互動電視有限公司 上海 200072)3(網(wǎng)絡(luò)信息安全審計與監(jiān)控教育部工程研究中心 上海 201203)
?
基于通用寬帶路由器的OpenFlow交換機設(shè)計
邱 堃1,3方鈺權(quán)1,3陸 偉2趙 進1,3
1(復(fù)旦大學(xué)計算機科學(xué)技術(shù)學(xué)院 上海 201203)2(上海文廣互動電視有限公司 上海 200072)3(網(wǎng)絡(luò)信息安全審計與監(jiān)控教育部工程研究中心 上海 201203)
基于OpenFlow協(xié)議的軟件定義網(wǎng)絡(luò)離不開控制器與OpenFlow交換機。然而,支持OpenFlow協(xié)議的交換機異常昂貴且難于獲得。為了方便地獲得支持OpenFlow協(xié)議的交換機,介紹一種基于通用寬帶路由器的OpenFlow交換機設(shè)計。該設(shè)計可以僅用市場上常見的通用寬帶路由器以及開源Linux軟件構(gòu)建出一款完整支持OpenFlow協(xié)議的交換機。實驗結(jié)果顯示,該設(shè)計以可接受的性能實現(xiàn)現(xiàn)階段OpenFlow協(xié)議的所有功能。
軟件定義網(wǎng)絡(luò) OpenFlow 交換機 Open vSwitch Open Wrt 通用寬帶路由器 Linux
全球互聯(lián)網(wǎng)自20世紀末進入商用領(lǐng)域以來發(fā)展迅速,現(xiàn)在已經(jīng)成為推動世界發(fā)展的力量的一個重要組成部分。隨著移動互聯(lián)網(wǎng)、云計算、大數(shù)據(jù)等新概念的興起,基于下一代網(wǎng)絡(luò)的創(chuà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ī)模的擴大,網(wǎng)絡(luò)內(nèi)容正在爆炸式的增長。云計算、物聯(lián)網(wǎng)、虛擬化等各種新技術(shù)不斷產(chǎn)生,改變了網(wǎng)絡(luò)業(yè)務(wù)發(fā)展的態(tài)勢。然而基于傳統(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è)計,軟件定義網(wǎng)絡(luò)帶來了更大的靈活性與開放性。
誕生于學(xué)術(shù)界的軟件定義網(wǎng)絡(luò)是由美國斯坦福大學(xué) Clean Slate 研究組所提出的。它把傳統(tǒng)的硬件封閉式的網(wǎng)絡(luò)轉(zhuǎn)變成一個開放式的環(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 交換機與控制器兩部分組成。為了實現(xiàn)數(shù)據(jù)層與控制層分離, OpenFlow 將原來由交換機與路由器所控制的轉(zhuǎn)發(fā)過程轉(zhuǎn)化為由 OpenFlow 交換機與控制器共同完成: OpenFlow 交換機進行數(shù)據(jù)層的轉(zhuǎn)發(fā);控制器對網(wǎng)絡(luò)進行集中控制。因此,控制層與數(shù)據(jù)層可以實現(xiàn)完全分離??刂破餍枰孪葘penFlow 交換機中的數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則設(shè)定好,從而達到控制數(shù)據(jù)轉(zhuǎn)發(fā)的目的。
現(xiàn)階段,OpenFlow交換機主要由兩種類型組成:一種是硬交換機,即主要使用硬件來處理數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則。例如HP 5400系列、OpenxNet-5016R、盛科V350等交換機,在這些交換機中使用TCAM或者NetFPGA等硬件設(shè)備來保證高速的規(guī)則匹配。另外一種則由普通PC機來提供平臺,通過Open vSwitch來完成規(guī)則匹配以及數(shù)據(jù)轉(zhuǎn)發(fā)相關(guān)工作。這兩種平臺各有利弊,第一種平臺轉(zhuǎn)發(fā)效率高,但是擴展性差并且價格昂貴; 第二種平臺轉(zhuǎn)發(fā)效率適中,但是擴展性好并且價格適中。但是,無論哪種平臺,其成本都不適合作為小規(guī)模實驗用。本文提出了一種在家用簡單路由器上運行的OpenFlow交換機系統(tǒng),該系統(tǒng)可以在目前常用的通用寬帶路由器上運行,給通用寬帶路由器加上OpenFlow相關(guān)特性。
1.1 OpenFlow交換機的發(fā)展
網(wǎng)絡(luò)交換機是一種計算機網(wǎng)絡(luò)設(shè)備,這種設(shè)備將其他不同的網(wǎng)絡(luò)設(shè)備連接在一起,并在這些設(shè)備之間轉(zhuǎn)發(fā)數(shù)據(jù)。網(wǎng)絡(luò)交換機的功能強于集線器。網(wǎng)絡(luò)交換機只會把接收到的數(shù)據(jù)交換到數(shù)據(jù)所需要被轉(zhuǎn)發(fā)的網(wǎng)絡(luò)端口,而集線器則會把接收到的數(shù)據(jù)無條件轉(zhuǎn)發(fā)給所有網(wǎng)絡(luò)端口。
一般來說,一個網(wǎng)絡(luò)交換機有許多個端口,這些端口與CPU一同被橋接在一起,用以提供在OSI模型中的第二層——數(shù)據(jù)交換功能。交換機內(nèi)的數(shù)據(jù)傳輸是異步的。假設(shè)有4臺計算機(A、B、C、D)連接上了某個交換機的四個端口,在任何時刻,任何組合都可以同時傳輸:A可以與B交換數(shù)據(jù),同時C可以與D交換數(shù)據(jù),并且兩者之間互不干擾。在全雙工模式下,A在發(fā)送數(shù)據(jù)給B的同時,B也可以發(fā)送數(shù)據(jù)給C。
對于現(xiàn)代網(wǎng)絡(luò)交換機而言,設(shè)備制造商通過擴展設(shè)備內(nèi)不同的模塊可以實現(xiàn)對不同網(wǎng)絡(luò)類型的支持:以太網(wǎng)、光纖、ATM等。除了可以工作在OSI模型的第二層,還可以工作在OSI模型的第三層,可以工作在第三層的交換機一般被稱作路由器。為了保證網(wǎng)絡(luò)交換機的性能以及安全性,某些設(shè)備制造商會在網(wǎng)絡(luò)交換機中提供例如防火墻、網(wǎng)絡(luò)行為監(jiān)測以及性能分析等工具。
網(wǎng)絡(luò)交換機中最為核心的部分是交換機芯片。在早期,規(guī)則匹配以及網(wǎng)絡(luò)交換行為是在OSI模型的第二層中實現(xiàn)的,因此在早期的交換芯片中只包含第二層協(xié)議(簡稱MAC層)相關(guān)的處理機制。為了能夠傳輸數(shù)據(jù),還需要一套OSI模型第一層(物理層)處理芯片(簡稱PHY)來將網(wǎng)絡(luò)數(shù)據(jù)與物理層信號進行互相轉(zhuǎn)換,使得通信得以正常進行。隨著大規(guī)模集成電路的廣泛應(yīng)用,現(xiàn)在已經(jīng)出現(xiàn)了將OSI第一層處理物理信號的芯片與第二層處理網(wǎng)絡(luò)數(shù)據(jù)的芯片集成在一起的交換機芯片。目前低速網(wǎng)絡(luò)設(shè)備已經(jīng)大量使用這種芯片,而高速網(wǎng)絡(luò)設(shè)備依舊需要專有的物理層處理芯片?,F(xiàn)有的交換機芯片主要由Broadcom、Realtek以及VIA公司提供。Broadcaom公司作為數(shù)據(jù)通信行業(yè)的領(lǐng)導(dǎo)者,較早推出將MAC層與PHY層集成在一顆芯片上的解決方案。根據(jù)處理能力以及市場定位的不同,Broadcom公司推出了幾款不同的商用交換機芯片方案:
1) 較為低端的BCM5312+BCM5248U+B5011A方案。其中,BCM5312為第二層(MAC層)數(shù)據(jù)處理芯片,內(nèi)部可以存儲4K個MAC地址。BCM5248U是一個8口百兆PHY,BCM5011A則是一個千兆PHY。整個產(chǎn)品的交換能力可以達到8.8 Gbps。
2) 中、高端的產(chǎn)品使用的BCM5380芯片。這顆芯片中集成了一個8口百兆PHY與一個千兆PHY。若整個交換機使用3顆BCM5380芯片則可以組成一個24口百兆+6口千兆的產(chǎn)品。BCM5380芯片集成了一個12 MB的緩存用以數(shù)據(jù)包的轉(zhuǎn)發(fā),整個產(chǎn)品可以達到16.8 Gbps的交換能力。
3) 集成度更高的產(chǎn)品使用BCM5324芯片,集成了24口百兆PHY的交換機芯片,集成度更高并且性能更好。BCM5324芯片集成了4 MB緩存用于數(shù)據(jù)包的存儲轉(zhuǎn)發(fā)。
然而,無論是Broadcom或者Realtek或者其他芯片公司,他們的產(chǎn)品參數(shù)大同小異,但是在產(chǎn)品功能細化上卻有著較大的差異。無論如何,目前主流網(wǎng)絡(luò)交換機主要功能還是由第二層網(wǎng)絡(luò)芯片與第一層物理交換芯片組成。
1.2 OpenFlow交換機
OpenFlow交換機是一種在軟件定義網(wǎng)絡(luò)中使用的交換機設(shè)備,這種設(shè)備基于OpenFlow協(xié)議或與之兼容。
在傳統(tǒng)的網(wǎng)絡(luò)交換機中,數(shù)據(jù)轉(zhuǎn)發(fā)(數(shù)據(jù)平面)與路由、防火墻(控制平面)等功能是在同一個設(shè)備當中。在軟件定義網(wǎng)絡(luò)中,數(shù)據(jù)平面與控制平面從同一個設(shè)備當中分離出來,數(shù)據(jù)平面仍然在交換機內(nèi)部實現(xiàn),但是控制平面則會獨立由OpenFlow控制器進行控制。OpenFlow控制器可以實現(xiàn)高級別的交換機行為控制。OpenFlow交換機與OpenFlow控制器通過OpenFlow協(xié)議進行信息交互。
與傳統(tǒng)的網(wǎng)絡(luò)交換機不同,OpenFlow交換機必須遵守OpenFlow協(xié)議[3]。OpenFlow協(xié)議規(guī)范中規(guī)定,OpenFlow交換機需要支持如表1所示的表項以及流表。
表1 OpenFlow表項內(nèi)容
一個 OpenFlow 流表由大量 OpenFlow 表項所組成。每一個表項包括:
1) 匹配項;
2) 優(yōu)先級;
3) 計數(shù)器;
4) 操作指令;
5) 超時;
6) Cookie。
每一個表項包括匹配項與優(yōu)先級,匹配項與優(yōu)先級可以唯一地定義流表中的表項。若匹配項中所有項都是任意可取,則這樣的表項的優(yōu)先級永遠是 0,并且這個表項被叫做失敗匹配項。
數(shù)據(jù)包能否被匹配取決于數(shù)據(jù)包中的匹配項是否能夠被流表項中的匹配項所匹配。如果表項中的匹配項中有值是“ANY”(忽略該項),那么數(shù)據(jù)包中該匹配項在匹配時會被忽略。如果交換機的特性支持精確匹配,那么交換機可以對輸入流進行更精確的匹配(例如 IP 地址前綴查找匹配、MAC地址前綴查找匹配)。如果數(shù)據(jù)包可以被多個流表中的表項匹配,那么只有優(yōu)先級別最高的表項可以被選擇。當流表中的表項被匹配,對應(yīng)表項的計數(shù)器會被更新,表項所對應(yīng)的命令指令會被執(zhí)行。如果有復(fù)數(shù)個優(yōu)先級別相同的的表項被匹配, OpenFlow 對于這類操作是未定義的。在 OpenFlow Specification 1.3 中,定義了最新的 OpenFlow 匹配項的內(nèi)容。這些匹配項一共有 40多個,不過交換機并不需要實現(xiàn)所有 40 多個匹配項的匹配功能??刂破骺梢酝ㄟ^查詢交換機來得知交換機支持哪些匹配項目。
由上文可知,OpenFlow交換機的設(shè)計與傳統(tǒng)二層交換機區(qū)別甚大,因此OpenFlow交換機的交換芯片需要重新進行設(shè)計。Specification 1.3中提出,由OpenFlow標準規(guī)定,流表中的字段可以自由組合進行流表查找。在現(xiàn)在的芯片設(shè)計中,能夠?qū)崿F(xiàn)這種需求的只有TCAM芯片。TCAM芯片是一種三態(tài)內(nèi)容尋址存儲器,其設(shè)計的目的是快速查找訪問控制列表、路由表等表項。TCAM中每個比特位可以有三種狀態(tài):’0’、‘1’和‘don’t care’。第三種狀態(tài)的存在使得TCAM既可以精確匹配也可以模糊查找。雖然TCAM有這么多的優(yōu)點,但是TCAM的成本非常高,其存儲空間的價格遠遠高于一般的SRAM,而且功耗也高于SRAM,占用芯片面積大。一條TCAM表項相當于五六條DRAM表項,幾十千比特的流表至少需要20 Mbit的TCAM,遠超目前市場上最大交換芯片的TCAM大小。
除了TCAM芯片,目前被用來作為OpenFlow交換機芯片的還有NetFPGA以及網(wǎng)絡(luò)處理器NP。NetFPGA與NP一樣,均是具有非常強大的可編程能力的芯片。這些芯片被用來作為OpenFlow交換機芯片的好處在于,設(shè)備商可以非常方便地對芯片的功能進行更改。Stanford大學(xué)在研究OpenFlow的初期,就是使用基于FPGA開發(fā)的NetFPGA可編程平臺。在文獻[2]中,使用NetFPGA實現(xiàn)的OpenFlow交換機,當包大小為64 bytes時,速度可以達到61 Kflows/s,在文獻[4,9]中,使用NP實現(xiàn)的OpenFlow交換機也有不錯的性能。然而,使用NP或者NetFPGA來實現(xiàn)OpenFlow交換機,在成本上與容量上都有著弊端。而且對于成品交換機來說,NP和NetFPGA的可編程性并沒有特別大意義,即對于用戶來說,內(nèi)部芯片是否可編程不會影響到OpenFlow交換機的功能。因此,使用NP以及NetFPGA來設(shè)計OpenFlow交換機更多的意義在于實現(xiàn)OpenFlow交換機功能的原型,或者作為商業(yè)OpenFlow交換機的補充。
ONF組織(開放網(wǎng)絡(luò)組織)意識到為OpenFlow交換機重新設(shè)計芯片是一件較為困難的事情。因此,ONF在2012年提出了一個叫作TTP(Table Typing Patterns)的方案。TTP的目的在于使用現(xiàn)有的交換機芯片處理邏輯來達到OpenFlow交換機的功能。TTP在2013年重新改名為NDM(Negotiable Data-plane Model)。在傳統(tǒng)的商用交換機處理芯片中與OpenFlow邏輯類似的是ACL表,而NDM希望在保持與控制器接口不變的前提下,使用傳統(tǒng)商用交換機中的路由表、VLAN表、MPLS表等相關(guān)表項來實現(xiàn)OpenFlow的功能。雖然無法完全實現(xiàn)OpenFlow的功能,但是在大多數(shù)應(yīng)用下使用這些傳統(tǒng)表項就可以滿足了。在文獻[5]中,作者就使用VLAN來實現(xiàn)部分OpenFlow的功能。
還有一種通過使用軟件來實現(xiàn)OpenFlow交換機的功能,這類交換機有著最好的可調(diào)整性與擴展性。通過一臺普通的PC機與一些網(wǎng)卡以及開源軟件就可以搭建出一臺具有OpenFlow功能的交換機。這種交換機在本質(zhì)上還是一臺PC機,沒有專有的轉(zhuǎn)發(fā)處理模塊,基本上使用多核CPU來進行轉(zhuǎn)發(fā)匹配操作。也有在GPU上進行流表匹配的相關(guān)研究[6-8],但是并沒有相應(yīng)的成品出現(xiàn)。一般使用的開源軟件主要搭配是Linux+Open vSwitch,目前Open vSwitch已經(jīng)將自身部分整合進入了Linux內(nèi)核中。
目前,得益于芯片制造工藝與性能的提升,通用寬帶路由器的進入門檻變得越來越低。雖然市面上有著許多種通用寬帶路由器,但是根據(jù)它們所使用的芯片方案可以簡單地將其進行分類。目前,占據(jù)通用寬帶路由器市場份額前幾名的主要有Atheros、Braodcom以及Ralink等幾家公司所設(shè)計的芯片組。
通用寬帶路由器與商用網(wǎng)絡(luò)交換機不同,商家根據(jù)市場需求,對商用網(wǎng)絡(luò)交換機的功能從各個方面進行大幅度縮減,如表2所示。
表2 通用寬帶路由器與商用網(wǎng)絡(luò)交換機功能對比
由表2可知,通用寬帶路由器功能比商用網(wǎng)絡(luò)交換機少許多,但是在功耗上遠低于商用網(wǎng)絡(luò)交換機,并且在價格上也遠比商用交換機便宜。因此,通用寬帶路由器多采用集成度較高的芯片方案,一般將交換機數(shù)據(jù)處理芯片與交換機芯片集成在一起以減少成本。Artheros官方給出了一套成熟的解決方案:AR9XXX解決方案。這款芯片可以支持32 MB的RAM,并且支持至少4 MB的Flash ROM。AR9XXX系列也有不同的細分產(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è)計的標桿也有許多通用寬帶路由器芯片產(chǎn)品。著名的Cisco無線路由器Linksys WRT54G便使用了Broadcom的brcm47xx系列芯片。brcm47xx系列芯片也有不同細分的產(chǎn)品,如表4所示。
表4 brcm47xx系列路由器芯片
由此可見,brcm47xx系列與AR9XXX系列在不同細分下標準不太相同,brcm47xx通過改變CPU的時鐘頻率來改變芯片性能。
采用Broadcom解決方案的設(shè)備主要集中在較為高端的通用寬帶路由器中,如曾經(jīng)在Cisco旗下的Linksys推出的著名的WRT54G系統(tǒng)就采用了brcm47xx系列芯片。中國電信與中國聯(lián)通為普及寬帶向家庭用戶贈送的上海貝爾RG100A-AA以及大亞DB120WG兩款路由器均是采用bcm6358芯片,性能與擴展性都非常優(yōu)秀。
還有其他路由器如華為HG255D、貝爾金 8235-4 V2采用了Ralink公司的芯片,D-Link的dir 615 rev.A 采用了 Marvell 88E6061。這些芯片在功能上與Atheros和Broadcom公司的芯片大同小異,但是在性能或者穩(wěn)定性上不如以上兩家公司的芯片,因此價格較為便宜,常用在低端通用寬帶路由器中。
在軟件上,通用寬帶路由器普遍使用兩種操作系統(tǒng):Linux與VxWorks。由于通用寬帶路由器的主控芯片多為MIPS或者ARM架構(gòu),采用開源Linux系統(tǒng)作為通用寬帶路由占了大部分,Linksys的WRT54G早期版本即是使用開源Linux作為其操作系統(tǒng)。由于是開源軟件,所以就有可能對通用寬帶路由器進行系統(tǒng)上的修改以達到添加用戶所需要的功能的目的。
OpenWrt是一個主要在通用寬帶路由器上運行的開源Linux發(fā)行版。由于Linksys的WRT54G使用了開源的Linux操作系統(tǒng),而Linux操作系統(tǒng)是遵守GPL協(xié)議的,所以Linksys公司被迫放出WRT54G系統(tǒng)的源代碼,經(jīng)過開源團體的維護形成了以O(shè)penWrt為代表的在通用寬帶路由器運行的開源Linux發(fā)行版。OpenWrt可以通過命令行以及Web頁面的方式對其進行配置,到2015年6月為止,已經(jīng)有超過3500個左右的軟件包可供安裝,提供了非常強大的可擴展性。OpenWrt支持超過50種不同的芯片,從上文所述的Broadcom、Atheros、Ralink到Intel的X86與X86-64都有支持。TP-LINK的TL-8XX系列、Linksys的WRT54G系列等均被成功移植OpenWrt系統(tǒng)。OpenWrt可以讓通用寬帶路由器擴展出更多功能,如文件服務(wù)器(FTP)、P2P下載服務(wù)器等功能。由于OpenWrt是一個開源的Linux發(fā)行版本,大部份Linux應(yīng)用程序均可以工作在OpenWrt上,這為通用寬帶路由器的功能擴展帶來了無限的可能性。
如上文所述,大部分通用寬帶路由器實質(zhì)上是一個運行著Linux操作系統(tǒng)的嵌入式系統(tǒng),因此移植本屬于在PC機上運行的OpenFlow交換機軟件——Open vSwitch到運行著OpenWrt系統(tǒng)的通用寬帶路由器當中即可。
對于大部分通用寬帶路由器來說,如圖1所示, 有兩類芯片控制著交換機的轉(zhuǎn)發(fā)過程。
圖1 通用寬帶路由器中的控制芯片與交換芯片
其中控制芯片與轉(zhuǎn)發(fā)芯片根據(jù)公司的不同會有不同的型號與封裝形式。Linksys公司的WRT54G v2.0使用的是bcm4712(控制芯片)+bcm5325(交換芯片)的組合,TP-LINK公司的TL-WR1043ND使用的是AR9132(控制芯片)+RTL8366RB(交換芯片)組合。然而該公司的TL-WR841N v7.0則使用了一個將兩者集成在一個芯片的型號AR7240,雖然兩芯片的物理部分集成在一起,但邏輯部分仍然是分開的。
一般來說,控制芯片都是通用處理器,即可以由運行在其上的Linux操作系統(tǒng)直接進行控制。然而,交換機芯片則不同,根據(jù)不同的制造廠家,芯片的操作方式完全不同,這就需要在Linux操作系統(tǒng)上移植相應(yīng)的交換芯片驅(qū)動程序以實現(xiàn)對交換芯片的配置。目前常用的交換芯片驅(qū)動都已被移植入OpenWrt操作系統(tǒng),通過相應(yīng)的程序可以直接對交換芯片進行功能的控制。有些芯片的驅(qū)動程序并不完善(一些功能沒有被成功移植,例如VLAN等),因此還需要根據(jù)需求對驅(qū)動程序進行相應(yīng)的修改才能正常工作。
Open vSwitch,有時也簡稱Ovs,是一個高質(zhì)量的開源虛擬化交換機。Open vSwitch的目的在于提供一個僅使用普通PC硬件組成的網(wǎng)絡(luò)交換機。Open vSwitch不僅僅能夠滿足現(xiàn)有交換機的功能,還能夠組建兼容OpenFlow協(xié)議的OpenFlow交換機。Open vSwitch不僅可以像一個商用網(wǎng)絡(luò)交換機提供不同設(shè)備之間的數(shù)據(jù)交換服務(wù),還可以在單臺計算機中為不同的虛擬機提供虛擬交換機的服務(wù)。
在計算機網(wǎng)絡(luò)中,網(wǎng)橋的概念與交換機類似。網(wǎng)橋可以在一臺計算機中連接幾個不同的局域網(wǎng)設(shè)備,根據(jù)程序的設(shè)定來轉(zhuǎn)發(fā)數(shù)據(jù)幀。一般來說,網(wǎng)橋會根據(jù)MAC地址來轉(zhuǎn)發(fā)數(shù)據(jù)幀,這種行為與網(wǎng)絡(luò)交換機十分類似。在Open vSwitch中,將需要組成交換機的端口加入Open vSwitch所控制的網(wǎng)橋后再將加入的端口配置成混雜模式即可。當Open vSwitch被配置成OpenFlow交換機模式后,加入該網(wǎng)橋的所有端口就成為了一臺OpenFlow交換機。
然而,如圖2所示,一般來說通用寬帶路由器的控制芯片是無法分辨數(shù)據(jù)是從交換芯片的哪一個端口送出來的(交換芯片的每一個端口對應(yīng)一個數(shù)據(jù)流,數(shù)據(jù)可能從1口傳送到控制芯片也可能從4口傳送到控制芯片,控制芯片無法分辨是從具體哪個端口傳送的),也無法直接將數(shù)據(jù)包發(fā)送到特定的端口。這是因為在一般的設(shè)置下,交換機芯片只有一個端口與控制芯片進行通信,這就造成了控制芯片無法對通用寬帶路由器具體端口進行控制。這是因為通用寬帶路由器的設(shè)計目標是簡單的數(shù)據(jù)交換,并不需要復(fù)雜的控制功能。若將通用寬帶路由器添加OpenFlow功能則需要控制芯片可以識別來自不同端口的數(shù)據(jù)包。
圖2 通用寬帶路由器交換芯片與數(shù)據(jù)流示意圖
如圖3所示,為了達成這個目的,可以使用VLAN技術(shù)對經(jīng)過不同端口的數(shù)據(jù)包加標簽,使得控制芯片可以識別數(shù)據(jù)包是從哪一個端口進入的。VLAN中文名為“虛擬局域網(wǎng)”。VLAN可以將一個交換機中的網(wǎng)絡(luò)從邏輯上劃分為不同的幾個網(wǎng)絡(luò),網(wǎng)絡(luò)之間互相無干擾,好似一個交換機被分隔成了幾個不同的交換機。VLAN的簡單工作流程如圖4所示。
圖3 使用VLAN技術(shù)對數(shù)據(jù)包加標簽
圖4 VLAN的工作流程
由圖4中可以看出,當數(shù)據(jù)包經(jīng)過某個交換機端口時,如果這個端口屬于某個VLAN,則該數(shù)據(jù)包就會被打上該VLAN的標簽。同時也可以通過設(shè)置端口,使得數(shù)據(jù)包在流出端口時將標簽取消。一般標簽都是一個數(shù)字,控制芯片可以根據(jù)這個標簽來判斷該數(shù)據(jù)包屬于哪一個VLAN。具有相同標簽數(shù)據(jù)包會被交換機認為是一個網(wǎng)段數(shù)據(jù)包,可以被轉(zhuǎn)發(fā)到屬于該VLAN的端口或被控制芯片所接收,否則會被認為是其他網(wǎng)段的數(shù)據(jù)包而不予轉(zhuǎn)發(fā)。
圖5 控制芯片依據(jù)標簽分辨數(shù)據(jù)據(jù)包進入端口
如圖5所示,為使通用寬帶路由器的控制芯片能夠分辨數(shù)據(jù)包具體從哪一個端口進入,通過控制交換芯片給每一個端口都分配一個不同的VLAN。這樣數(shù)據(jù)包在從端口進入的時候就會被打上標簽,控制芯片就可以依據(jù)標簽分辨數(shù)據(jù)包具體是從哪個端口進入。同時還可以通過不同的VLAN屏蔽交換芯片本來的交換功能,將端口的控制權(quán)上交給控制芯片。
對于OpenWrt系統(tǒng)來說,只要有相應(yīng)的交換芯片驅(qū)動,swconfig命令便可以簡單地對交換芯片進行控制。當通過swconfig或者其他方式對交換芯片配置好以后,原本在OpenWrt中僅有的兩個端口擴充到了4個或5個端口(根據(jù)交換芯片的能力與通用寬帶路由器的配置而定)。就像普通的局域網(wǎng)設(shè)備一樣,OpenWrt對這些端口有著完全的控制權(quán)。再將這些端口一一加入Open vSwitch的網(wǎng)橋中,由Open vSwitch接管所有端口的控制權(quán)。OpenFlow交換機除了數(shù)據(jù)平面外還需要有控制平面。如圖6所示, 將某一個端口設(shè)置為固定IP地址后,在Open vSwitch中設(shè)置該IP為該OpenFlow交換機的控制平面IP,再將該端口與OpenFlow控制器相連,OpenFlow控制器便可發(fā)現(xiàn)該OpenFlow交換機。
圖6 設(shè)定的控制端口接受控制器的控制
4.1 實驗環(huán)境
本實驗由一臺PC機作為控制器,移植了三臺不同的通用寬帶路由器成為OpenFlow交換機。
路由器硬件情況如表5所示。
表5 路由器硬件情況
路由器軟件情況如表6所示。
表6 路由器軟件情況
控制器配置如表7所示。
表7 控制器配置
4.2 關(guān)閉交換芯片的MAC地址學(xué)習(xí)功能
在移植過程中,OpenWrt的驅(qū)動不支持關(guān)閉某些交換芯片的MAC地址學(xué)習(xí)功能。主要表現(xiàn)在交換芯片將ARP請求私自處理,導(dǎo)致ARP包無法從端口進入Open vSwitch所構(gòu)建的網(wǎng)橋。因此在向某些通用寬帶路由器移植OpenFlow功能時,需要首先檢查OpenWrt能否關(guān)閉芯片的MAC地址學(xué)習(xí)功能。如果無法打開混雜模式,則需要通過修改交換芯片的驅(qū)動以打開混雜模式。在實驗過程中,水星公司的MW150R(控制芯片為AR9331)以及TP-LINK公司的WR841N(控制芯片為AR7240)所集成的交換芯片的驅(qū)動均不支持關(guān)閉交換芯片的MAC地址學(xué)習(xí),導(dǎo)致Open vSwitch無法接收某些數(shù)據(jù)包。在修改交換芯片的驅(qū)動程序以后,該問題得到了解決。在實驗過程中,其他型號的通用寬帶路由器所帶的交換芯片沒有出現(xiàn)如上所述的問題。
4.3 實驗結(jié)果與分析
本文對上文所述的三種路由器進行了性能測試。在控制器上運行L2_Learning_Switch,同時進行不同的上網(wǎng)應(yīng)用,記錄路由器以及控制器的CPU使用率。
從圖7可以看出,CPU的頻率與路由器的性能有著非常大的關(guān)聯(lián)度。在日常上網(wǎng)的情況下,CPU頻率較低的Linksys WRT54G的占用率接近50%,而其他兩款路由器的CPU占用率在20%附近。當開始全速下載時,所有的路由器占用率均全部達到100%,即將所有的資源消耗殆盡。然而,不管在什么情況下,控制器的CPU使用率均沒有太大的變化,一直保持在4.5%左右。
圖7 不同通用寬帶路由器在不同運行場景下的CPU使用率
圖8 在CPU使用率均達到100%時各路由器的傳輸速度
如圖8所示,CPU的性能直接決定了路由器交換性能。在滿速下載文件時,LinksysCPU頻率最低,因此交換性能非常低下,只有不到1000 Kbps;而其他兩款路由器均在5 Kbps以上。由于WR841N的CPU速度比MW150R快100 Mhz左右,所以整體傳輸速度也較快。
本文介紹了現(xiàn)代網(wǎng)絡(luò)交換機以及通用寬帶路由器的內(nèi)部硬件結(jié)構(gòu)以及軟件構(gòu)成。在使用開源路由器操作系統(tǒng)的環(huán)境下,通過控制通用寬帶路由器的交換芯片,通過VLAN技術(shù)將交換芯片的每個端口分割獨立,使得路由器的控制芯片可以直接控制每個端口狀態(tài)與輸入輸出;再由OpenFlow模式下的OpenVSwitch所創(chuàng)建的網(wǎng)橋控制每個端口,達到將通用寬帶路由器變成OpenFlow交換機的目的。在移植的過程中,發(fā)現(xiàn)一些芯片方案需要通過修改驅(qū)動以關(guān)閉MAC地址學(xué)習(xí)功能才可正常接收數(shù)據(jù)包。使用通用寬帶路由器改造的OpenFlow交換機可以大幅度降低使用OpenFlow交換機的成本,同時由于通用寬帶路由器的小體積以及低功耗,在進行OpenFlow相關(guān)的科研工作中可以大量采購這種設(shè)備以更好地從事OpenFlow網(wǎng)絡(luò)以及軟件定義網(wǎng)絡(luò)的相關(guān)研究。
本文還對這樣的OpenFlow交換機進行了性能測試。測試結(jié)果表明在實驗環(huán)境下,通用寬帶路由器改造的OpenFlow交換機的性能可以達到正常實驗應(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。國家科技支撐計劃項目(2012BAH39F 06)。邱堃,碩士生,主研領(lǐng)域:未來網(wǎng)絡(luò)。方鈺權(quán),本科生。陸偉,工程師。趙進,副教授。
TP3
A
10.3969/j.issn.1000-386x.2016.11.020