基于OpenDaylight控制器的环境搭建与协议分析
2018-03-08夏婷徐伟尧
夏婷,徐伟尧
(枣庄学院 光电工程学院,山东 枣庄 277160)
0 引言
SDN(Software Defined Networking,软件定义网络)是一种新型的网络架构技术[1],2009年入选美国MIT主办的《技术评论》十大新兴技术之一,其核心理念是数据转发和控制层面的分离[1],并且提供开放的编程接口,为网络提供灵活的可编程能力[2].目前已在网络虚拟化、数据中心网络、无线局域网和云计算等领域得到应用[3].OpenFlow网络可看作SDN思想的一种具体实现[4],目前已经成为SDN的主流技术之一[5].
OpenFlow网络主要由控制器、交换机和标准协议三部分组成,在传统的IP网络架构中,路由器和交换机分布完成了路由计算和网络管理等工作,然而在OpenFlow网络架构中,控制器就可以完成网络当中所有的管理功能[5],一个控制器可以与多个OpenFlow交换机相连接.在SDN数据平面与控制平面相分离的体系结构中,控制器是连接底层交换设备与上层应用之间的桥梁[6],在整个网络当中具有举足轻重的地位,是整个网络的大脑,其直接影响了整个网络的运行效率.目前常用的开源OpenFlow控制器有POX、FloodLight、OpenDaylight、RYU和OpenContrial等.IBM、Cisco、微软、NEC、Juniper等多家IT巨头于2013年4月合作启动了OpenDaylight(ODL)项目[7],该项目采用的是JAVA语言开发,是一套开源的SDN框架.
ODL控制器相较于其它控制器,设计上更加灵活,扩展性更好,此外,ODL支持更多的协议,具备更为完备的服务功能[8],因而得到如此多公司的支持,更有可能广泛应用到实际当中.ODL控制器提供了一个模块化的开放SDN控制器,它提供了开放的北向API,同时南向支持多种包括OpenFlow(OF)在内的SDN协议[9].
1 OpenDaylight架构
ODL项目中与OpenFlow相关的协议有controller、openflowjava和openflowplugin,目前controller仅支持openflow1.0,openflowjava和openflowplugin项目的目标是支持openflow1.3及以上的协议.
ODL的目标是打造一个网络操作系统,是一个基于SDN开发的模块化、可扩展、可升级、支持多协议的控制器框架,引入SAL屏蔽不同协议的差异性,支持多种南向协议插件,北向接口可扩展性强,采用了OSGI框架,实现了模块化和可扩展化,为OSGI模块和服务提供了版本和周期性管理.
其框架大体分为三部分,网络APP和业务流程层、控制器平台层以及物理和虚拟网络设备层,并且用北向接口与南向接口将三者连接,控制器向应用层提供北向接口,应用使用控制器收集信息,利用控制器做分析,部署新的网络规则等,南向接口可支持多种协议,openflow1.0、openflow1.3、BGP-LS等,这些协议插件动态地连接在SAL上.
2 SDN环境搭建及源码分析
若要构成完整的SDN网络,仅有ODL控制器是不够的.虽然当前硬件SDN交换机非常少,但可以采用Mininet推出的模拟的交换机[7].其工作原理是,在一台Linux主机内构造并模拟出多台SDN交换机和终端,同时使用Python脚本还能配置较为复杂的SDN网络拓扑结构[7],此外,Mininet还配备了wireshark抓包软件,更加方便SDN爱好者进行相关研究.
2.1 安装OpenDayLight控制器
在OpenDayLight的官网上共享了版本、安装向导、用户向导、开发者向导等,可进行下载学习,通过安装向导,安装完成后进入ODL启动目录,执行karaf文件,出现图1则界面表示安装成功.
图1 ODL启动界面
用浏览器打开OpenDayLight,地址为:http://127.0.0.1:8181/index.html,登录界面如图2所示.
图2 ODL网页登录界面
2.2 安装Mininet环境
使用Mininet可以通过一条命令在一台主机上(虚拟机、云或者本地)快速地创建一个虚拟网络,并在上面运行真正的内核、交换机和应用程序代码[10],它采用轻量级的虚拟化技术使得系统可以和真实的网络相媲美.
本文在测试中使用的网络拓扑结构如图3所示,由以下部分组成,1台ODL控制器、2台交换机(SW)和4台主机(Host),其中每台SW分别与2台Host相连,这些主机分属于2个不同的网段,交换机与控制器之间采用OF协议[7],测试网络的拓扑结构可以由Python脚本生成.
图3 网络拓扑结构图
2.3 SDN数据通信源码分析
ODL控制器包含多个小项目,每个小项目是一个bundle(组件),每个组件可以为其它组件提供服务.OF1.0插件属于其南向各种plugin的一个.OF插件包含两个文件夹core和internal,其中,core是OF1.0的核心代码,internal 是OF1.0插件上层的服务.下面分析一下几个重要的文件:
ControllerIO.java是一个Java的线程文件,每五秒检测一次,是否有新的连接请求进来,有则进行处理.
利用handlerNewConnection给一个新的交换机生成一个SwitchHandler,SwitchHandler的handleMessages()函数用来处理各类消息,因此,一个交换机对应一个SwitchHandler.
3 SDN协议分析
3.1 使用wireshark抓包并分析OF协议
使用网络分析软件wireshark抓取到的数据包不仅可以来源于本机网卡,还可以来源于远程主机网卡,利用该软件还可以抓取到ICMP、TCP和UDP等不同类型的数据包[11],网络管理员便可以对这些不同来源、不同类型的数据包进行分析,从而可以有效获得当前的网络状况[12],而且有助于分析员加深对计算机网络和不同网络协议的认识及理解.通过wireshark的抓包分析,可以直观地看到ODL控制器与交换机之间的通信过程.
通过图4可以看出,ODL与Mininet之间应用的协议是OpenFlow1.0版本协议.此外,
图4 抓包分析
通过wireshark抓包软件可以很详细地分析ODL控制器与交换机之间的各个流程协议,如建立连接、stats状态信息、packet_in、packet_out消息等等,如图5所示.
图5 协议分析
3.2 基于OpenDayLight的端到端流表分析
网络开发者通常使用restclient来创建和测试http网络请求,restclient是一个基于浏览器的测试工具[13],本文使用的是虚拟机中Firefox浏览器中的restclient组件来测试交换机下发流表过程,如图6所示.在result中可以看到流表下发成功,如图7所示.
图6 流表下发
图7 流表测试
3.3 特殊网络结构下SDN的转发能力分析
传统以太网是不能存在环路的,即使有环路也通过生成树协议解决,ODL控制器在其算法中也能避免环路的产生.在下面的测试中构建了5台交换机和5台主机,连成环形拓扑网络结构.
图8 环路网络拓扑及流表测试
通过测试表明,主机之间流量转发正常,并没有广播风暴和环路出现,查看各交换机的流表,均显示到目的地址采用的是最短路径.
4 结论
本文分析了ODL这款网络控制器的实现机制,同时搭建了一个基于ODL的SDN实验环境,可以方便的使用抓包工具进行抓包分析和流表分析.基于整个系统的网络拓扑结构,ODL 控制器通过对各个主机之间、各主机与网关之间的ARP报文进行分析,来获取每一台主机的位置,计算到达目的主机的流表采用的算法是最短路径优先算法[7],然后将该流表下发至网络中的各个交换机上.下一步的工作将重点研究ODL各控制器的协调工作流程、方法,以及ODL其它相对重要的扩展功能实现原理.
[1] 穆琙博,郭晨,马军锋.基于OpenFlow的SDN测试技术的研究[J].电信网技术, 2015(4):10-14.
[2] 殷波,张云勇,王志军,等. 基于SDN的数据中心网络技术研究[J].信息通信技术, 2015(1): 29-33.
[3] Mijumbi R, Serrat J, Gorricho J, et al. Network function virtualization: State-of-the-Art and research challenges[J]. IEEE Communications Surveys Tutorials, 2016,18(1):239-262.
[4] McKeown N, Anderson T, Balakrishnan H. OpenFlow: Enabling Innovation in Campus Networks[J]. ACM SIGCOMM Computer Communication Review, 2008, 38 (2) :69-74.
[5] 朱超. 基于OpenFlow的软件定义网络路由技术研究[D]. 合肥:中国科学技术大学, 2014.
[6] 姜腊林,彭霞,熊兵.基于混合制排队模型的SDN控制器性能评估研究[J].计算机工程与科学,2017, 39(1):86-91.
[7] 胡晓宇.SDN网络转发机制研究和应用场景分析[J].电子技术,2015(5): 52-54.
[8] 许名广,刘亚萍,邓文平. 网络控制器OpenDaylight的研究与分析[J]. 计算机科学, 2015, 42(S1):249-252.
[9] hNicholas. Openstack Neutron 集成 SDN控制器[EB/OL]. (2017-04-28) [2017-08-30]. http://blog.csdn.net/zhongbeida_xue/article/details/70932800.
[10] 刘颖.基于SDN的数据库型防火墙研究与实现[D].上海:华东理工大学, 2015.
[11] 王浩, 司凤山, 周丰杰. Packet Tracer软件在计算机网络实验教学中的应用研究[J].枣庄学院学报, 2011(5):41-46.
[12] hdjay. WireShark——一个功能非常强大的网络数据包分析软件[EB/OL]. (2014-06-04) [ 2017-08-30]. http://blog.sina.com.cn/s/blog_963453200101mud3.html.
[13] 司凤山,李东江. 基于网络入侵检测系统的技术改进[J].枣庄学院学报, 2006(2):65-69.