APP下载

基于OpenStack的SDN相关技术研究

2016-06-12任晶晶戴锦友刘琼戴非武汉邮电科学研究院武汉40074武汉烽火网络有限责任公司武汉40074江西师范大学南昌0022

光通信研究 2016年1期
关键词:软件定义网络

任晶晶,戴锦友,刘琼,戴非(1.武汉邮电科学研究院,武汉 40074; 2.武汉烽火网络有限责任公司,武汉 40074; .江西师范大学,南昌 0022)



基于OpenStack的SDN相关技术研究

任晶晶1,2,戴锦友1,2,刘琼1,2,戴非3
(1.武汉邮电科学研究院,武汉 430074; 2.武汉烽火网络有限责任公司,武汉 430074; 3.江西师范大学,南昌 330022)

摘要:随着云计算平台的高速发展,传统的网络架构已经不能满足需求,基于SDN(软件定义网络)技术实现数据平面的集中控制已经成为当前网络技术的演进趋势。文章在简要介绍OpenFlow、OpenStack等技术的基础上,实现了OpenFlow交换机的设计;同时,建立了一个基于OpenStack的IaaS云管理平台,进一步融合了SDN和云计算的优势,提出了一种在云计算平台下模拟SDN的方法。该方法能模拟实际的SDN,并利用模拟的网络评估网络性能,从而优化设计,降低SDN规划和建设的投入。

关键词:OpenFlow协议;OpenStack软件;软件定义网络

0 引 言

随着互联网业务的蓬勃发展,基于IP的简洁网络架构日益臃肿且越来越无法满足高效、灵活的业务承载需求,为了增强网络的灵活配置和可编程能力,SDN(软件定义网络)应运而生。

SDN采用与传统网络截然不同的控制架构,将网络控制平面和转发平面分离,采用集中控制替代原有分布式控制,并通过开放和可编程接口实现“软件定义”。与传统的网络架构相比,采用SDN架构后,网络底层只负责数据转发,可以由廉价、通用的商用设备构成,上层负责集中的控制功能,由独立的软件系统构成,网络设备的种类与功能由上层软件决定,通过远程自助配置实现部署和运行,并提供所需的网络功能、参数以及业务。因此,SDN技术的引入势必会对传统电信网络的架构演进带来颠覆性的影响。

1 OpenFlow、OpenStack原理分析

1.1OpenFlow原理及架构

严格来说,Open Flow是SDN控制平面与数据平面之间的多种通信协议之一,但由于OpenFlow具有良好的灵活性和规范性,因此已被看作SDN事实上的标准[1]。

在传统的IP网络中,数据包是根据交换机、路由器中的转发表和路由表进行转发的。而在Open-Flow交换机中,转发功能是由流表实现的。交换机只需查询流表匹配流表项就可完成数据包的转发。流表项主要由匹配字段、优先级、计数器、指令、超时时间、Cookie和标志组成。匹配字段用于数据包的匹配,如果匹配,则需要执行流表项中包含的指令;优先级字段表示在流表冲突时,流表项的执行顺序,匹配字段和优先级字段共同定义了一个唯一的流表项;计数器用来统计数据流的基本数据[2]。Op e n-Flow交换机处理包的流程如图1所示。

图1 OpenFlow交换机基本工作流程

1.2OpenStack简介

OpenStack是由NASA(美国国家航空航天局) 和Rackspace合作研制的云计算管理软件,是一款完全开放源代码的项目和自由软件。OpenStack提供了关于IaaS(基础设施即服务)的解决方案,是一个可以管理整个数据中心里大量资源池的云操作系统,包括计算、存储及网络资源。管理员可以通过管理台管理整个系统,并可以通过Web(万维网)接口为用户划定资源[3]。

OpenStack云平台最初是由六大核心项目共同运行为用户提供服务,随着其功能的不断扩展,越来越多的不同服务组件添加与更新进该平台。Open-Stack中各组件的关系如图2所示。

图2 OpenStack中各组件的关系

由图可知,OpenStack中每个组件都要通过Keystone(认证)组件进行身份认证,Dashboard(控制面板)组件为云服务提供可视化的UI(用户接口)界面,Nova(计算)组件负责创建虚拟机,Glance(镜像)组件为虚拟机提供镜像功能,Cinder(块存储)组件和Swift(对象存储)组件分别为虚拟机提供块存储和对象存储功能,Neutron(网络)组件负责为虚拟机创建虚拟网络和虚拟端口。

除了上述核心组件,还有完成组件间通信任务的数据库服务和消息队列服务。数据库服务为各个组件提供了信息存储服务,消息队列服务为各个Nova组件之间的消息分发提供依据。

OpenStack的每个模块之间是无关联的,它们既可以组合在一起联合工作,提供完整的云基础架构服务,又可以独立工作,分别提供虚拟化、云存储和镜像服务。此外,模块化的设计使开发者更容易对OpenStack进行二次开发。

2 SDN集成环境设计

2.1OpenStack部署

本实验采用Virtualbox作为虚拟化平台,操作系统采用Linux发行版Cent OS 6.5 x86_64,Open-Stack版本为Icehouse。

为了更好地展现OpenStack分布式部署的特点,本实验采用多节点分开部署的模式。如图3所示,整个私有云平台由控制节点、计算节点和网络节点组成,其中,控制节点是整个系统的核心环节,主要负责监控、协调和管理整个系统,用户可以通过在控制节点部署各个组件来进行各种命令操作;计算节点主要负责具体的计算运行工作;网络节点通过选择合适的插件完成虚拟网络、虚拟端口的创建。

图3 OpenStack部署架构

实验中,云平台的各个节点均位于同一局域网内,所以局域网内任何一台物理机均可以直接访问或使用OpenStack系统所提供的云计算资源。另外,为了使云平台更加安全,Nova提供了一种使虚拟化实例和外网隔离的网络方案,为虚拟化实例构建一个与外网隔离的私有网络,即192.168.4.0/24这个网段,此网段只提供虚拟化实例间的互相访问,虚拟化实例通过一个内网交换机来通信。同时,为了方便虚拟化实例与外网的通信,还准备了一个浮动IP地址段(172.16.0.0/24)。因此每个虚拟化实例都会得到两个IP地址,一个是供虚拟网络内部通信的私有IP地址,另一个是虚拟化实例与外网通信的浮动IP地址。

2.2OpenFlow交换机程序的实现

Open Flow交换机与控制器通信的流程图如图4所示。首先交换机需要与控制器建立OpenFlow信道,以确保二者之间的可靠连接。建立Open-Flow信道时需要经过一系列的消息交互,出错则需要关闭Socket,重新建立连接。Open Flow信道建立完毕后,交换机程序就进入了状态机的切换,状态机是为了更好地管理Open Flow信道,在任何一个状态机下出错都会关闭Socket并重新建立连接,程序的结束只能通过在command界面输入“quit”命令来实现。

图4 OpenFlow交换机工作流程

流表是Open Flow协议中一个非常重要的数据结构,数据转发的匹配规则和转发指令都包含在流表当中,因此流表的设计是OpenFlow交换机代码编译的一个重点。相比于Open Flow 1.0版本而言,OpenFlow 1.3中流表从最初的单表结构变为多表结构,匹配字段也从最初的十元组扩展到现在的40个匹配字段,这样无疑扩展了SDN平面的转发功能和灵活性,但同时也加大了流表表项设计的难度[4]。流表表项的实现程序如下:

按照标准的OpenFlow 1.3协议,表项中匹配字段和指令这两项是不定长的。但程序将这两个字段设计成定长,虽然会浪费一定的存储空间,但提高了程序的执行效率。由于本实验规模不大,所以这样的设计是可行的。OpenFlow 1.3规定了40个匹配字段,所以表项结构中定义了一个64比特的match_flags和match_mask_flags来标识每个匹配字段是否存在以及每个匹配字段是否使用了掩码。

2.3OpenStack云计算平台下的SDN架构

OpenStack通过Neutron组件提供虚拟网络功能。如图5所示,网络服务器进程用来提供暴露的API(应用程序编程接口),供Neutron Plugin(网络插件)调用,完成特定功能。Plugin(插件)是为了屏蔽底层网络而实现的一层封装,它需要用一个数据库来存储当前逻辑网络的配置信息以及逻辑网络与物理网络的对应关系[4]。目前有很多方式来实现Neutron的Plugin,但使用最多的还是Open vS-witch(虚拟交换机)。

图5 OpenStack云计算平台下的SDN架构

通过OpenStack创建若干虚拟机,一部分虚拟机可作为SDN控制器,另一部分虚拟机可作为SDN转发设备,这样就在OpenStack的架构下模拟了SDN。通过评估网络的功能和性能,优化设计,可降低SDN前期规划和建设的投入。

3 验证与测试

3.1OpenStack组件安装和虚拟机创建实例

参照OpenStack官方安装手册,依次安装了Keystone、Glance、Nova、Neutron和Dashboard等组件。在浏览器中输入10.20.0.10/dashboard可以进入Dashboard登陆界面。以一般用户的身份登陆,创建虚拟机实例,为虚拟机实例创建网络、接口和映像,创建路由器使其与外网连接。图6所示为OpenStack创建的虚拟网络拓扑。

图6 虚拟网络拓扑

3.2OpenFlow交换机与Floodlight建立连接

在交换机端输入控制器IP和端口号之后,与控制器建立Socket连接,交换了若干消息之后,控制器会向交换机中的每个流表中增加一个缺省的流表项,在控制器端可以看到交换机流表和端口等资源。

3.3交换机添加流表项

采用curl工具可以通过命令行的方式配置交换机中的流表项。下面测试向交换机中添加流表项的功能。

在命令提示符中输入添加流表项命令:

在控制器端或者在交换机的command里输入tables命令都可以查询交换机流表状态。

4 结束语

SDN技术是一项全局性、颠覆性的网络变革技术,它采用IT技术的模式来改造传统的“封闭”网络,为网络发展带来新的机遇。本文在分析Open-Flow原理及架构的基础上,完成了OpenFlow交换机代码的编写,并在此基础上提出了一种在Open-Stack搭建的云计算平台下模拟SDN的方案。该方案能模拟实际的SDN,并利用OpenStack技术灵活配置网络架构,从而优化设计,降低SDN前期部署的投入。

参考文献:

[1] OPEN NETWORKING FOUNDATION.OpenFlow Switch Specification. Version 1.3.3 [DB/OL]. (2013-09-27)[2015-06-08].https://www.opennetworking.org/technical-communities/areas/specification.

[2] 赵少卡,李立耀,凌晓,等.基于OpenStack的清华云平台构建与调度方案设计[J].计算机应用,2013, (12):3335-3338,3349.

[3] 李小宁,李磊,金莲文,等.基于OpenStack构建私有云计算平台[J].电信科学,2012,28(09):1-8.

[4] 左青云,陈鸣,赵广松,等.基于OpenFlow的SDN技术研究[J].软件学报,2013,24(05):1078-1097.

光纤光缆技术与应用

Research on OpenStack-Based SDN-Related Technologies

REN Jing-jing1,2,DAI Jin-you1,2,LIU Qiong1,2,DAI Fei3

(1.Wuhan Research Institute of Post and Telecommunications,Wuhan 430074,China
2.Wuhan Fiber Home Networks Co.,Ltd.,Wuhan 430074,China;
3.Jiangxi Normal University,Nanchang 330022,China)

Abstract:With the rapid development of cloud computing platform,the traditional network architecture can not meet our demands.The centralized control of data planes realized by the Software Defined Network(SDN)-based technology has become the evolution trend of the current network technologies.This paper first briefly introduces the design of the OpenFlow switch on the basis of such technologies as OpenFlow and OpenStack and the building of an OpenStack-based IaaS cloud management platform which further converges the advantages of SDN and cloud computing.Then,it presents a method of SDN simulation on the cloud computing platform,which can simulate the actual SDN and use the simulated network toevaluate the network performance,thus optimizing the design and reducing the input for SDN planning and construction.

Key words:OpenFlow protocol;OpenStack software;SDN

中图分类号:TN919.2

文献标志码:A

文章编号:1005-8788(2016)01-0011-04

收稿日期:2015-07-02

作者简介:任晶晶(1992-),女,湖北武汉人。硕士研究生,主要研究方向为通信与信息系统。

doi:10.13756/j.gtxyj.2016.01.004

猜你喜欢

软件定义网络
面向未来的传输综合网管系统演进研究
基于队列树的SDN控制器高效消息处理机制
中国联通SDN的思考和应用实例
业务功能链技术及其应用探析
针对大规模软件定义网络的子域划分及控制器部署方法
一种新的SDN架构下端到端网络主动测量机制
超高吞吐率Wi—Fi融合应用新技术分析
SDN在传送网络的引入与应用分析
SDN/NFV技术接入网应用
3SNetworking:面向业务、安全增强的软件定义网络