APP下载

基于通用宽带路由器的OpenFlow交换机设计

2016-12-26方钰权

计算机应用与软件 2016年11期
关键词:表项路由器交换机

邱 堃 方钰权 陆 伟 赵 进

1(复旦大学计算机科学技术学院 上海 201203)2(上海文广互动电视有限公司 上海 200072)3(网络信息安全审计与监控教育部工程研究中心 上海 201203)



基于通用宽带路由器的OpenFlow交换机设计

邱 堃1,3方钰权1,3陆 伟2赵 进1,3

1(复旦大学计算机科学技术学院 上海 201203)2(上海文广互动电视有限公司 上海 200072)3(网络信息安全审计与监控教育部工程研究中心 上海 201203)

基于OpenFlow协议的软件定义网络离不开控制器与OpenFlow交换机。然而,支持OpenFlow协议的交换机异常昂贵且难于获得。为了方便地获得支持OpenFlow协议的交换机,介绍一种基于通用宽带路由器的OpenFlow交换机设计。该设计可以仅用市场上常见的通用宽带路由器以及开源Linux软件构建出一款完整支持OpenFlow协议的交换机。实验结果显示,该设计以可接受的性能实现现阶段OpenFlow协议的所有功能。

软件定义网络 OpenFlow 交换机 Open vSwitch Open Wrt 通用宽带路由器 Linux

0 引 言

全球互联网自20世纪末进入商用领域以来发展迅速,现在已经成为推动世界发展的力量的一个重要组成部分。随着移动互联网、云计算、大数据等新概念的兴起,基于下一代网络的创新活动日益活跃。其中,软件定义网络SDN作为下一代网络的核心理念受到了全球广泛的关注。

在传统网络中,网络的业务发展依赖于网络中硬件架构的发展。随着网络规模的扩大,网络内容正在爆炸式的增长。云计算、物联网、虚拟化等各种新技术不断产生,改变了网络业务发展的态势。然而基于传统网络的业务发展模式难以满足新兴网络应用的发展速度,因此,基于软件定义网络的研究变得越来越重要。“软件正在占领世界,未来网络与硬件无关。” IT 产业的中心已经从设备制造转到软件设计,软件定义网络带来了更大的灵活性与开放性。

诞生于学术界的软件定义网络是由美国斯坦福大学 Clean Slate 研究组所提出的。它把传统的硬件封闭式的网络转变成一个开放式的环境,大大提高了网络的可编程性与可管理性。软件定义网络中的核心技术 OpenFlow[1]能够将数据层与控制层很好地分离,这让网络控制者能够方便地控制自己的数据,使得网络可以集中控制与部署,从而使得新业务可以快速上线和应用。

OpenFlow[1]网络由 OpenFlow 交换机与控制器两部分组成。为了实现数据层与控制层分离, OpenFlow 将原来由交换机与路由器所控制的转发过程转化为由 OpenFlow 交换机与控制器共同完成: OpenFlow 交换机进行数据层的转发;控制器对网络进行集中控制。因此,控制层与数据层可以实现完全分离。控制器需要事先将OpenFlow 交换机中的数据转发规则设定好,从而达到控制数据转发的目的。

现阶段,OpenFlow交换机主要由两种类型组成:一种是硬交换机,即主要使用硬件来处理数据转发规则。例如HP 5400系列、OpenxNet-5016R、盛科V350等交换机,在这些交换机中使用TCAM或者NetFPGA等硬件设备来保证高速的规则匹配。另外一种则由普通PC机来提供平台,通过Open vSwitch来完成规则匹配以及数据转发相关工作。这两种平台各有利弊,第一种平台转发效率高,但是扩展性差并且价格昂贵; 第二种平台转发效率适中,但是扩展性好并且价格适中。但是,无论哪种平台,其成本都不适合作为小规模实验用。本文提出了一种在家用简单路由器上运行的OpenFlow交换机系统,该系统可以在目前常用的通用宽带路由器上运行,给通用宽带路由器加上OpenFlow相关特性。

1 OpenFlow交换机的发展

1.1 OpenFlow交换机的发展

网络交换机是一种计算机网络设备,这种设备将其他不同的网络设备连接在一起,并在这些设备之间转发数据。网络交换机的功能强于集线器。网络交换机只会把接收到的数据交换到数据所需要被转发的网络端口,而集线器则会把接收到的数据无条件转发给所有网络端口。

一般来说,一个网络交换机有许多个端口,这些端口与CPU一同被桥接在一起,用以提供在OSI模型中的第二层——数据交换功能。交换机内的数据传输是异步的。假设有4台计算机(A、B、C、D)连接上了某个交换机的四个端口,在任何时刻,任何组合都可以同时传输:A可以与B交换数据,同时C可以与D交换数据,并且两者之间互不干扰。在全双工模式下,A在发送数据给B的同时,B也可以发送数据给C。

对于现代网络交换机而言,设备制造商通过扩展设备内不同的模块可以实现对不同网络类型的支持:以太网、光纤、ATM等。除了可以工作在OSI模型的第二层,还可以工作在OSI模型的第三层,可以工作在第三层的交换机一般被称作路由器。为了保证网络交换机的性能以及安全性,某些设备制造商会在网络交换机中提供例如防火墙、网络行为监测以及性能分析等工具。

网络交换机中最为核心的部分是交换机芯片。在早期,规则匹配以及网络交换行为是在OSI模型的第二层中实现的,因此在早期的交换芯片中只包含第二层协议(简称MAC层)相关的处理机制。为了能够传输数据,还需要一套OSI模型第一层(物理层)处理芯片(简称PHY)来将网络数据与物理层信号进行互相转换,使得通信得以正常进行。随着大规模集成电路的广泛应用,现在已经出现了将OSI第一层处理物理信号的芯片与第二层处理网络数据的芯片集成在一起的交换机芯片。目前低速网络设备已经大量使用这种芯片,而高速网络设备依旧需要专有的物理层处理芯片。现有的交换机芯片主要由Broadcom、Realtek以及VIA公司提供。Broadcaom公司作为数据通信行业的领导者,较早推出将MAC层与PHY层集成在一颗芯片上的解决方案。根据处理能力以及市场定位的不同,Broadcom公司推出了几款不同的商用交换机芯片方案:

1) 较为低端的BCM5312+BCM5248U+B5011A方案。其中,BCM5312为第二层(MAC层)数据处理芯片,内部可以存储4K个MAC地址。BCM5248U是一个8口百兆PHY,BCM5011A则是一个千兆PHY。整个产品的交换能力可以达到8.8 Gbps。

2) 中、高端的产品使用的BCM5380芯片。这颗芯片中集成了一个8口百兆PHY与一个千兆PHY。若整个交换机使用3颗BCM5380芯片则可以组成一个24口百兆+6口千兆的产品。BCM5380芯片集成了一个12 MB的缓存用以数据包的转发,整个产品可以达到16.8 Gbps的交换能力。

3) 集成度更高的产品使用BCM5324芯片,集成了24口百兆PHY的交换机芯片,集成度更高并且性能更好。BCM5324芯片集成了4 MB缓存用于数据包的存储转发。

然而,无论是Broadcom或者Realtek或者其他芯片公司,他们的产品参数大同小异,但是在产品功能细化上却有着较大的差异。无论如何,目前主流网络交换机主要功能还是由第二层网络芯片与第一层物理交换芯片组成。

1.2 OpenFlow交换机

OpenFlow交换机是一种在软件定义网络中使用的交换机设备,这种设备基于OpenFlow协议或与之兼容。

在传统的网络交换机中,数据转发(数据平面)与路由、防火墙(控制平面)等功能是在同一个设备当中。在软件定义网络中,数据平面与控制平面从同一个设备当中分离出来,数据平面仍然在交换机内部实现,但是控制平面则会独立由OpenFlow控制器进行控制。OpenFlow控制器可以实现高级别的交换机行为控制。OpenFlow交换机与OpenFlow控制器通过OpenFlow协议进行信息交互。

与传统的网络交换机不同,OpenFlow交换机必须遵守OpenFlow协议[3]。OpenFlow协议规范中规定,OpenFlow交换机需要支持如表1所示的表项以及流表。

表1 OpenFlow表项内容

一个 OpenFlow 流表由大量 OpenFlow 表项所组成。每一个表项包括:

1) 匹配项;

2) 优先级;

3) 计数器;

4) 操作指令;

5) 超时;

6) Cookie。

每一个表项包括匹配项与优先级,匹配项与优先级可以唯一地定义流表中的表项。若匹配项中所有项都是任意可取,则这样的表项的优先级永远是 0,并且这个表项被叫做失败匹配项。

数据包能否被匹配取决于数据包中的匹配项是否能够被流表项中的匹配项所匹配。如果表项中的匹配项中有值是“ANY”(忽略该项),那么数据包中该匹配项在匹配时会被忽略。如果交换机的特性支持精确匹配,那么交换机可以对输入流进行更精确的匹配(例如 IP 地址前缀查找匹配、MAC地址前缀查找匹配)。如果数据包可以被多个流表中的表项匹配,那么只有优先级别最高的表项可以被选择。当流表中的表项被匹配,对应表项的计数器会被更新,表项所对应的命令指令会被执行。如果有复数个优先级别相同的的表项被匹配, OpenFlow 对于这类操作是未定义的。在 OpenFlow Specification 1.3 中,定义了最新的 OpenFlow 匹配项的内容。这些匹配项一共有 40多个,不过交换机并不需要实现所有 40 多个匹配项的匹配功能。控制器可以通过查询交换机来得知交换机支持哪些匹配项目。

由上文可知,OpenFlow交换机的设计与传统二层交换机区别甚大,因此OpenFlow交换机的交换芯片需要重新进行设计。Specification 1.3中提出,由OpenFlow标准规定,流表中的字段可以自由组合进行流表查找。在现在的芯片设计中,能够实现这种需求的只有TCAM芯片。TCAM芯片是一种三态内容寻址存储器,其设计的目的是快速查找访问控制列表、路由表等表项。TCAM中每个比特位可以有三种状态:’0’、‘1’和‘don’t care’。第三种状态的存在使得TCAM既可以精确匹配也可以模糊查找。虽然TCAM有这么多的优点,但是TCAM的成本非常高,其存储空间的价格远远高于一般的SRAM,而且功耗也高于SRAM,占用芯片面积大。一条TCAM表项相当于五六条DRAM表项,几十千比特的流表至少需要20 Mbit的TCAM,远超目前市场上最大交换芯片的TCAM大小。

除了TCAM芯片,目前被用来作为OpenFlow交换机芯片的还有NetFPGA以及网络处理器NP。NetFPGA与NP一样,均是具有非常强大的可编程能力的芯片。这些芯片被用来作为OpenFlow交换机芯片的好处在于,设备商可以非常方便地对芯片的功能进行更改。Stanford大学在研究OpenFlow的初期,就是使用基于FPGA开发的NetFPGA可编程平台。在文献[2]中,使用NetFPGA实现的OpenFlow交换机,当包大小为64 bytes时,速度可以达到61 Kflows/s,在文献[4,9]中,使用NP实现的OpenFlow交换机也有不错的性能。然而,使用NP或者NetFPGA来实现OpenFlow交换机,在成本上与容量上都有着弊端。而且对于成品交换机来说,NP和NetFPGA的可编程性并没有特别大意义,即对于用户来说,内部芯片是否可编程不会影响到OpenFlow交换机的功能。因此,使用NP以及NetFPGA来设计OpenFlow交换机更多的意义在于实现OpenFlow交换机功能的原型,或者作为商业OpenFlow交换机的补充。

ONF组织(开放网络组织)意识到为OpenFlow交换机重新设计芯片是一件较为困难的事情。因此,ONF在2012年提出了一个叫作TTP(Table Typing Patterns)的方案。TTP的目的在于使用现有的交换机芯片处理逻辑来达到OpenFlow交换机的功能。TTP在2013年重新改名为NDM(Negotiable Data-plane Model)。在传统的商用交换机处理芯片中与OpenFlow逻辑类似的是ACL表,而NDM希望在保持与控制器接口不变的前提下,使用传统商用交换机中的路由表、VLAN表、MPLS表等相关表项来实现OpenFlow的功能。虽然无法完全实现OpenFlow的功能,但是在大多数应用下使用这些传统表项就可以满足了。在文献[5]中,作者就使用VLAN来实现部分OpenFlow的功能。

还有一种通过使用软件来实现OpenFlow交换机的功能,这类交换机有着最好的可调整性与扩展性。通过一台普通的PC机与一些网卡以及开源软件就可以搭建出一台具有OpenFlow功能的交换机。这种交换机在本质上还是一台PC机,没有专有的转发处理模块,基本上使用多核CPU来进行转发匹配操作。也有在GPU上进行流表匹配的相关研究[6-8],但是并没有相应的成品出现。一般使用的开源软件主要搭配是Linux+Open vSwitch,目前Open vSwitch已经将自身部分整合进入了Linux内核中。

2 通用宽带路由器及其系统架构

目前,得益于芯片制造工艺与性能的提升,通用宽带路由器的进入门槛变得越来越低。虽然市面上有着许多种通用宽带路由器,但是根据它们所使用的芯片方案可以简单地将其进行分类。目前,占据通用宽带路由器市场份额前几名的主要有Atheros、Braodcom以及Ralink等几家公司所设计的芯片组。

通用宽带路由器与商用网络交换机不同,商家根据市场需求,对商用网络交换机的功能从各个方面进行大幅度缩减,如表2所示。

表2 通用宽带路由器与商用网络交换机功能对比

由表2可知,通用宽带路由器功能比商用网络交换机少许多,但是在功耗上远低于商用网络交换机,并且在价格上也远比商用交换机便宜。因此,通用宽带路由器多采用集成度较高的芯片方案,一般将交换机数据处理芯片与交换机芯片集成在一起以减少成本。Artheros官方给出了一套成熟的解决方案:AR9XXX解决方案。这款芯片可以支持32 MB的RAM,并且支持至少4 MB的Flash ROM。AR9XXX系列也有不同的细分产品,如表3所示。

表3 AR9XXX系列路由器芯片

使用AR9XXX系列的设备有许多,常见的有TP-LINK制造的TL-WR941N、TL-WR941ND以及D-LINK的DIR-615和水星的MWR300T+等。同样,Artheros还给出了更为低端的AR7XXX系列,使用AR7XXX系列的设备主要有TP-LINK制造的TL-WR7XX、TL-WR8XX等许多通用宽带路由器。

Broadcom公司作为网络芯片设计的标杆也有许多通用宽带路由器芯片产品。著名的Cisco无线路由器Linksys WRT54G便使用了Broadcom的brcm47xx系列芯片。brcm47xx系列芯片也有不同细分的产品,如表4所示。

表4 brcm47xx系列路由器芯片

由此可见,brcm47xx系列与AR9XXX系列在不同细分下标准不太相同,brcm47xx通过改变CPU的时钟频率来改变芯片性能。

采用Broadcom解决方案的设备主要集中在较为高端的通用宽带路由器中,如曾经在Cisco旗下的Linksys推出的著名的WRT54G系统就采用了brcm47xx系列芯片。中国电信与中国联通为普及宽带向家庭用户赠送的上海贝尔RG100A-AA以及大亚DB120WG两款路由器均是采用bcm6358芯片,性能与扩展性都非常优秀。

还有其他路由器如华为HG255D、贝尔金 8235-4 V2采用了Ralink公司的芯片,D-Link的dir 615 rev.A 采用了 Marvell 88E6061。这些芯片在功能上与Atheros和Broadcom公司的芯片大同小异,但是在性能或者稳定性上不如以上两家公司的芯片,因此价格较为便宜,常用在低端通用宽带路由器中。

在软件上,通用宽带路由器普遍使用两种操作系统:Linux与VxWorks。由于通用宽带路由器的主控芯片多为MIPS或者ARM架构,采用开源Linux系统作为通用宽带路由占了大部分,Linksys的WRT54G早期版本即是使用开源Linux作为其操作系统。由于是开源软件,所以就有可能对通用宽带路由器进行系统上的修改以达到添加用户所需要的功能的目的。

OpenWrt是一个主要在通用宽带路由器上运行的开源Linux发行版。由于Linksys的WRT54G使用了开源的Linux操作系统,而Linux操作系统是遵守GPL协议的,所以Linksys公司被迫放出WRT54G系统的源代码,经过开源团体的维护形成了以OpenWrt为代表的在通用宽带路由器运行的开源Linux发行版。OpenWrt可以通过命令行以及Web页面的方式对其进行配置,到2015年6月为止,已经有超过3500个左右的软件包可供安装,提供了非常强大的可扩展性。OpenWrt支持超过50种不同的芯片,从上文所述的Broadcom、Atheros、Ralink到Intel的X86与X86-64都有支持。TP-LINK的TL-8XX系列、Linksys的WRT54G系列等均被成功移植OpenWrt系统。OpenWrt可以让通用宽带路由器扩展出更多功能,如文件服务器(FTP)、P2P下载服务器等功能。由于OpenWrt是一个开源的Linux发行版本,大部份Linux应用程序均可以工作在OpenWrt上,这为通用宽带路由器的功能扩展带来了无限的可能性。

3 通用宽带路由器中添加OpenFlow功能

如上文所述,大部分通用宽带路由器实质上是一个运行着Linux操作系统的嵌入式系统,因此移植本属于在PC机上运行的OpenFlow交换机软件——Open vSwitch到运行着OpenWrt系统的通用宽带路由器当中即可。

对于大部分通用宽带路由器来说,如图1所示, 有两类芯片控制着交换机的转发过程。

图1 通用宽带路由器中的控制芯片与交换芯片

其中控制芯片与转发芯片根据公司的不同会有不同的型号与封装形式。Linksys公司的WRT54G v2.0使用的是bcm4712(控制芯片)+bcm5325(交换芯片)的组合,TP-LINK公司的TL-WR1043ND使用的是AR9132(控制芯片)+RTL8366RB(交换芯片)组合。然而该公司的TL-WR841N v7.0则使用了一个将两者集成在一个芯片的型号AR7240,虽然两芯片的物理部分集成在一起,但逻辑部分仍然是分开的。

一般来说,控制芯片都是通用处理器,即可以由运行在其上的Linux操作系统直接进行控制。然而,交换机芯片则不同,根据不同的制造厂家,芯片的操作方式完全不同,这就需要在Linux操作系统上移植相应的交换芯片驱动程序以实现对交换芯片的配置。目前常用的交换芯片驱动都已被移植入OpenWrt操作系统,通过相应的程序可以直接对交换芯片进行功能的控制。有些芯片的驱动程序并不完善(一些功能没有被成功移植,例如VLAN等),因此还需要根据需求对驱动程序进行相应的修改才能正常工作。

Open vSwitch,有时也简称Ovs,是一个高质量的开源虚拟化交换机。Open vSwitch的目的在于提供一个仅使用普通PC硬件组成的网络交换机。Open vSwitch不仅仅能够满足现有交换机的功能,还能够组建兼容OpenFlow协议的OpenFlow交换机。Open vSwitch不仅可以像一个商用网络交换机提供不同设备之间的数据交换服务,还可以在单台计算机中为不同的虚拟机提供虚拟交换机的服务。

在计算机网络中,网桥的概念与交换机类似。网桥可以在一台计算机中连接几个不同的局域网设备,根据程序的设定来转发数据帧。一般来说,网桥会根据MAC地址来转发数据帧,这种行为与网络交换机十分类似。在Open vSwitch中,将需要组成交换机的端口加入Open vSwitch所控制的网桥后再将加入的端口配置成混杂模式即可。当Open vSwitch被配置成OpenFlow交换机模式后,加入该网桥的所有端口就成为了一台OpenFlow交换机。

然而,如图2所示,一般来说通用宽带路由器的控制芯片是无法分辨数据是从交换芯片的哪一个端口送出来的(交换芯片的每一个端口对应一个数据流,数据可能从1口传送到控制芯片也可能从4口传送到控制芯片,控制芯片无法分辨是从具体哪个端口传送的),也无法直接将数据包发送到特定的端口。这是因为在一般的设置下,交换机芯片只有一个端口与控制芯片进行通信,这就造成了控制芯片无法对通用宽带路由器具体端口进行控制。这是因为通用宽带路由器的设计目标是简单的数据交换,并不需要复杂的控制功能。若将通用宽带路由器添加OpenFlow功能则需要控制芯片可以识别来自不同端口的数据包。

图2 通用宽带路由器交换芯片与数据流示意图

如图3所示,为了达成这个目的,可以使用VLAN技术对经过不同端口的数据包加标签,使得控制芯片可以识别数据包是从哪一个端口进入的。VLAN中文名为“虚拟局域网”。VLAN可以将一个交换机中的网络从逻辑上划分为不同的几个网络,网络之间互相无干扰,好似一个交换机被分隔成了几个不同的交换机。VLAN的简单工作流程如图4所示。

图3 使用VLAN技术对数据包加标签

图4 VLAN的工作流程

由图4中可以看出,当数据包经过某个交换机端口时,如果这个端口属于某个VLAN,则该数据包就会被打上该VLAN的标签。同时也可以通过设置端口,使得数据包在流出端口时将标签取消。一般标签都是一个数字,控制芯片可以根据这个标签来判断该数据包属于哪一个VLAN。具有相同标签数据包会被交换机认为是一个网段数据包,可以被转发到属于该VLAN的端口或被控制芯片所接收,否则会被认为是其他网段的数据包而不予转发。

图5 控制芯片依据标签分辨数据据包进入端口

如图5所示,为使通用宽带路由器的控制芯片能够分辨数据包具体从哪一个端口进入,通过控制交换芯片给每一个端口都分配一个不同的VLAN。这样数据包在从端口进入的时候就会被打上标签,控制芯片就可以依据标签分辨数据包具体是从哪个端口进入。同时还可以通过不同的VLAN屏蔽交换芯片本来的交换功能,将端口的控制权上交给控制芯片。

对于OpenWrt系统来说,只要有相应的交换芯片驱动,swconfig命令便可以简单地对交换芯片进行控制。当通过swconfig或者其他方式对交换芯片配置好以后,原本在OpenWrt中仅有的两个端口扩充到了4个或5个端口(根据交换芯片的能力与通用宽带路由器的配置而定)。就像普通的局域网设备一样,OpenWrt对这些端口有着完全的控制权。再将这些端口一一加入Open vSwitch的网桥中,由Open vSwitch接管所有端口的控制权。OpenFlow交换机除了数据平面外还需要有控制平面。如图6所示, 将某一个端口设置为固定IP地址后,在Open vSwitch中设置该IP为该OpenFlow交换机的控制平面IP,再将该端口与OpenFlow控制器相连,OpenFlow控制器便可发现该OpenFlow交换机。

图6 设定的控制端口接受控制器的控制

4 性能测试与分析

4.1 实验环境

本实验由一台PC机作为控制器,移植了三台不同的通用宽带路由器成为OpenFlow交换机。

路由器硬件情况如表5所示。

表5 路由器硬件情况

路由器软件情况如表6所示。

表6 路由器软件情况

控制器配置如表7所示。

表7 控制器配置

4.2 关闭交换芯片的MAC地址学习功能

在移植过程中,OpenWrt的驱动不支持关闭某些交换芯片的MAC地址学习功能。主要表现在交换芯片将ARP请求私自处理,导致ARP包无法从端口进入Open vSwitch所构建的网桥。因此在向某些通用宽带路由器移植OpenFlow功能时,需要首先检查OpenWrt能否关闭芯片的MAC地址学习功能。如果无法打开混杂模式,则需要通过修改交换芯片的驱动以打开混杂模式。在实验过程中,水星公司的MW150R(控制芯片为AR9331)以及TP-LINK公司的WR841N(控制芯片为AR7240)所集成的交换芯片的驱动均不支持关闭交换芯片的MAC地址学习,导致Open vSwitch无法接收某些数据包。在修改交换芯片的驱动程序以后,该问题得到了解决。在实验过程中,其他型号的通用宽带路由器所带的交换芯片没有出现如上所述的问题。

4.3 实验结果与分析

本文对上文所述的三种路由器进行了性能测试。在控制器上运行L2_Learning_Switch,同时进行不同的上网应用,记录路由器以及控制器的CPU使用率。

从图7可以看出,CPU的频率与路由器的性能有着非常大的关联度。在日常上网的情况下,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左右,所以整体传输速度也较快。

5 结 语

本文介绍了现代网络交换机以及通用宽带路由器的内部硬件结构以及软件构成。在使用开源路由器操作系统的环境下,通过控制通用宽带路由器的交换芯片,通过VLAN技术将交换芯片的每个端口分割独立,使得路由器的控制芯片可以直接控制每个端口状态与输入输出;再由OpenFlow模式下的OpenVSwitch所创建的网桥控制每个端口,达到将通用宽带路由器变成OpenFlow交换机的目的。在移植的过程中,发现一些芯片方案需要通过修改驱动以关闭MAC地址学习功能才可正常接收数据包。使用通用宽带路由器改造的OpenFlow交换机可以大幅度降低使用OpenFlow交换机的成本,同时由于通用宽带路由器的小体积以及低功耗,在进行OpenFlow相关的科研工作中可以大量采购这种设备以更好地从事OpenFlow网络以及软件定义网络的相关研究。

本文还对这样的OpenFlow交换机进行了性能测试。测试结果表明在实验环境下,通用宽带路由器改造的OpenFlow交换机的性能可以达到正常实验应用的程度。

[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)。邱堃,硕士生,主研领域:未来网络。方钰权,本科生。陆伟,工程师。赵进,副教授。

TP3

A

10.3969/j.issn.1000-386x.2016.11.020

猜你喜欢

表项路由器交换机
买千兆路由器看接口参数
一种改进的TCAM路由表项管理算法及实现
维持生命
路由器每天都要关
路由器每天都要关
基于ARMA模型预测的交换机流表更新算法
修复损坏的交换机NOS
使用链路聚合进行交换机互联
SDN数据中心网络基于流表项转换的流表调度优化
PoE交换机雷击浪涌防护设计