APP下载

OpenFlow 网络架构实现与仿真研究

2014-12-18李宁郝志安李艳

计算机与网络 2014年17期
关键词:流表表项封包

李宁 郝志安 李艳

(中国电子科技集团公司第五十四研究所河北石家庄 050081)

1 引言

随着云计算、大数据和物联网等新兴技术的发展,使得网络数据、流量和管理变得复杂化,将控制平面和数据转发平面紧耦合在网络设备上的传统网络,体系结构“僵化”,已经无法面对这些新技术对网络提出的更高要求[1]。为了解决当前互联网所面临的各种问题,人们进行了各种各样的探索和研究。其中,OpenFlow 网络就是提出的一种新型网络架构。

OpenFlow[2]技术最早由斯坦福大学提出,旨在基于现有TCP/IP 技术条件,以创新的网络互联理念解决当前网络面对新业务产生的种种瓶颈。OpenFlow 通过把原有封闭的体系架构解耦为数据平面和控制平面,大大降低了网络的复杂度,从而将革命性地改变现有的网络架构,为网络业务创新提供网络支持。

2 OpenFlow 技术原理

OpenFlow的核心思想是将原本完全由交换机/路由器控制的数据包转发过程[3],转化为由OpenFlow 交换机和控制器分别独立完成的过程。OpenFlow 网络架构如图1 所示。

图1 OpenFlow 网络架构

OpenFlow 网络由OpenFlow 交换机和控制器两部分组成[4]。OpenFlow 交换机只进行简单的数据转发;控制器是整个系统的大脑,负责对底层转发设备的集中控制,实现控制层的功能。

2.1 OpenFlow 交换机

OpenFlow 交换机由一个或多个流表、一个组表、安全通道和OpenFlow 协议四部分组成。其中,流表是控制交换机转发策略的核心数据结构。在OpenFlow 网络中,传统的FIB 表和MAC 表等都被OpenFlow 协议统一整合为流表;数据的转发是基于流的,集中的控制器通过对流表的管理,决定了数据在网络中的传输路径。流表由流表项组成,每个流表项的结构如图2 所示。

图2 OpenFlow 流表项结构

图中:①匹配域:包括了用于和交换机接收到的数据包进行匹配的15 个元组,涵盖了ISO 网络模型中第二至第四层的网络配置信息;②优先级:流表项的匹配顺序;③计数器:用于统计数据流的相关信息;④超时:最大时间计数或流有效时间;⑤指令:修改行动集或流水线处理;⑥Cookie:由控制器选择的不透明数据值。控制器用来过滤流统计数据、流改变和流删除。

OpenFlow 网络中,交换机维护一个或多个数据流表项,数据流表项的编号从0 开始,当有数据流进入交换机时,到达的数据流首先与流表项0的匹配域进行比较,如果匹配,计数器会增加,然后通过流表指令执行流表项中指定的行动;如果不匹配,那么就和下一个流表项进行比较。通过控制器对流表的控制,OpenFlow 可以精确地实现基于端到端的流管控。

2.2 控制器

OpenFlow 控制器将传统交换设备中分散的控制能力进行了集中化,是OpenFlow 网络的大脑,它负责对转发设备的统一控制。控制器和交换机之间通过OpenFlow 协议进行通信,控制器可以通过对事先规定好的TCP 接口(默认6633 端口)进行操作来控制OpenFlow 交换机中的流表,从而达到控制数据转发的目的。

3 OpenFlow 网络环境搭建方法

OpenFlow 网络环境首先就是要实现数据层和控制层的分离[5],其中底层交换机负责数据层的转发,而控制器实现控制层的功能。基于OpenFlow 网络的仿真研究至少应该包括3个方面要素:①底层网络设备:包括多个交换机;②控制器:完成对底层网络连接及数据流的控制;③仿真演示工具:包括抓包、拓扑显示等。

(1)OpenFlow 底层设备—Mininet

Mininet 是由stanford 大学Nick McKeown 研究小组基于Linux Container 架构研究开发完成的一个轻量级软件定义网络研发和测试平台,操作简单,一行命令可以启动一个简单的测试网络。

(2)OpenFlow 控制器—Floodlight[6]

Floodlight 是一个支持Apache 协议的企业级OpenFlow 控制器。Floodlight 作为一个软件模块部署在PC Server 上。

(3)仿真演示工具—Wireshark

Wireshark 是一个网络封包分析软件,功能是抓取网络封包,并尽可能显示出网络封包信息。

控制器通过OpenFlow 协议标准接口对底层交换机中的流表进行控制,从而实现数据包的转发和对整个网络的集中控制。控制器与交换机的一次典型交互过程如图3 所示。首先是交换机和控制器之间的say hello 过程,双方建立连接;接下来控制器通过Features_Request 消息来查询交换机的能力,交换机返回Features_Reply 消息应答自身支持的功能;然后控制器向交换机发送Set_Config 消息对交换机进行配置;配置完成后,控制器和交换机之间通过Stats_Request 和Stats_Reply 进行交换机当前状态的查询与应答。

图3 控制器与交换机的一次典型交互过程

4 仿真研究

4.1 仿真建模

通过Mininet 命令行搭建一个底层网络拓扑,包括2 台交换机,每台交换机连接2 个终端;Floodlight 控制器与交换机相连,可以对底层网络拓扑进行发现和管理,如图4 所示。

图4 Mininet 网络建模及Floodlight 捕获的拓扑

Floodlight 通过向底层交换机下发流表,实现数据包的转发和对整个网络的集中控制。通过Wireshark 获取网络封包,可以看到控制器与交换机的交互过程及封包信息。

4.2 仿真结果

通过Mininet 命令实现如图4 所示的网络拓扑,基于该网络执行h2 ping h4 操作,由于2 个客户端之间无数据通路,ping 操作无法得到响应,如图5 所示。

图5 流表下发之前,终端之间无法ping 通

由控制器Floodlight 向底层交换机下发流表,增加h2 到h4 之间的双向数据通路,从而实现2 个客户端之间的互通,此时h2 可以ping 通h4,如图6 所示。

图6 流表下发及之后h2 和h4 之间可以ping 通

上述控制器和交换机的交互过程可以通过wireshark 软件过滤到的OpenFlow 协议包进行验证,该抓包结果与图3 所示的典型交互过程一致,如图7 所示。

图7 wireshark 抓包

5 结束语

本文在介绍OpenFlow 技术原理和OpenFlow 网络环境搭建方法的基础上,利用Mininet 和Floodlight 软件搭建并研究了OpenFlow 网络环境。OpenFlow 网络环境实现了控制与转发的分离,控制器通过标准的OpenFlow 协议对底层交换机进行配置、流表下发和状态管理,从而实现对整个网络进行集中控制,本文为基于OpenFlow 网络的研究提供了良好的平台支撑。

[1]黄宝座,赵喜求.OpenFlow 技术及应用优势分析[J].电脑知识与技术,2012,8(25):59-85.

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

[3]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.

[4]韦世红,卢 威.基于OpenFlow的未来互联网试验网[J].计算机应用系统.2013,22(5):21-23.

[5]王丽君,刘永强,张 健.基于OpenFlow的未来互联网试验技术研究[J].电信网技术,2011,8(6):1-4.

[6]侯长逸.OpenFlow 网络软件路由研究[J].兰州大学学报,2013,49(2):262.

猜你喜欢

流表表项封包
基于匹配动作表模型的可编程数据平面流表归并
一种改进的TCAM路由表项管理算法及实现
中药封包在急诊老年急性胃肠炎患者中的临床应用
基于时序与集合的SDN流表更新策略
基于ARMA模型预测的交换机流表更新算法
护肤 巧用保鲜膜
无冲突规则校园网络安全系统的设计
简析yangUI流表控制
软件定义网络中一种两步式多级流表构建算法
SDN数据中心网络基于流表项转换的流表调度优化