2023年11月28日发(作者:)

基于OpenDaylight防火墙的研究与实现

费宁;刘春秋

【摘 要】随着网络规模的持续发展,传统的分布式网络已经不能满足网络配置和管

理的要求,软件定义网络作为一种全新的网络架构给网络安全研究提供了新的方向.

该架构将数据转发层和控制层相分离,并且在控制层之上开放了应用程序编程接口.

在深入分析软件定义网络的系统原理和架构设计的基础上,提出了基于

OpenDaylight平台的软件定义网络防火墙的实现方案FireClient,并借助软件项目

管理和依赖分析工具Maven和数据建模语言Yang,开发了上层应用调用模

.FireClient允许用户灵活修改策略,其在不同场景中的实际测试结果表明,使用基

于软件定义网络的防火墙可以更为灵活的布置策略和快速实施.相比传统网络的配

置和部署,软件定义网络使得第三方的快速应用开发成为可能,从而极大地推动了网

络新业务的部署和拓展.

【期刊名称】《计算机技术与发展》

【年(),期】2019(029)006

【总页数】4(P112-115)

【关键词】软件定义网络;OpenDaylight;防火墙;FireClient;Maven

【作 者】费宁;刘春秋

【作者单位】南京邮电大学计算机学院软件学院,江苏南京 210003;南京邮电大学

计算机学院软件学院,江苏南京 210003

【正文语种】

【中图分类】TP393.1

0

软件定义网络(software defined networkSDN)将网络控制与数据转发分离,

使用开放的、独立的应用层接口,使得通过软件集中配置和管理设备成为可能。软

件定义网络作为一种全新的网络架构给网络安全研究提供了新的方向,SDN在流

转发、深度包检查、流量重定向等方面具有优势,基于SDN的网络安全新技术和

新应用不断涌现[1-3]。不少学者提出了软件定义网络集中式架构下的安全技术框

架,尝试提供更为完善的威胁分析和防御方法[4-5]。文中在深入分析软件定义网

络和OpenFlow系统原理和架构设计的基础上,提出了基于OpenDaylight控制

器的防火墙,并搭建了实验平台。该软件定义网络有利于新的网络应用的快速部署

和实施,并且基于软件定义网络控制器的安全策略切实可行。

1 基于OpenDaylight的安全设计与实现

1.1 OpenDaylight的系统原理和架构设计

OpenDaylight的软件定义网络的架构特性,使其可以方便地实现路由路径优化,

大幅度降低网络维护成本,提高网络设备利用率,增加网络设备的可扩展性和稳定

性,并能够解决传统网络中的传输性能、流量控制、访问控制等问题。

OpenDaylight通过SAL(service abstraction layer)将底层接口提供的功能封装

成具体的服务提供给上层模块应用,屏蔽了多种南向协议之间的差异,为上层模块

提供一致的服务,包括数据包服务、拓扑服务、流表编程服务等。

在路由转发部分,模块首先要注册IListenData Packet服务,从SAL收到的数据

包呈队列格式存放,并且将数据包IP目的地址放入pendingPacket

Destinations集合中,run线程从此集合中取出对象IP。同时主机追踪模块解析

数据包的目的主机,获取相关信息后,对交换机进行遍历,得到整个网络的拓扑结

构图,再通过Dijkstra最短路径算法得到路由,将路径链路放到rulesDB中,接

着将流表规则下发至路径经过的每个交换机,利用

itData Packet()方法将数据包发送出去[6]

OpenDaylight提供了相应的应用层接口,应用程序向OpenDaylight发出调用

指令,OpenDaylight利用相应的接口与底层网络设备进行通信。同时,

OpenDaylight还向应用程序提供基础设施相关的功能接口,如流量监控、管理、

入侵防御等。

1.2 基于OpenDaylight开发的防火墙模块的应用架构设计

传统网络中,处于服务器及应用程序之下的底层位置的是相应的网络设备,软件定

义网络概念的提出,为集中式网络架构提供了可能性,内部网络功能也开始出现在

新的层级中[7-8]OpenDaylight的作用就是将网络功能剥离硬件,重新放回到

控制器当中,并且为SDN制定一套通用型框架[9]。文中设计的基于

OpenDaylight平台的防火墙的整体流程包括:firewall模块功能逻辑;

FireClient应用界面开发、网络请求逻辑和返回结果的数据处理;测试脚本对

firewall模块请求接口的调用测试。整体设计流程如图1所示。

1 整体设计流程

2 防火墙应用的控制流程

设计的防火墙应用控制流程如图2所示。当网络设备向主机发送网络请求时,装

载于OpenDaylight平台上的防火墙应用会查询访问控制策略列表,如果请求访

问的设备IP在列表内,则拒绝访问,否则对访问请求做出处理或者向下层设备转

发。基于此,首先需要基于OpenDaylight平台开发出防火墙应用(firewall模块)

用于访问控制,还需要开发出上层应用(FireClient)对访问控制策略进行添加、删

除、查询等管理操作。

Firewall模块的调用流程则是:用户通过上层应用调用firewall模块提供的标准接

口,传入相应参数,firewall模块本身对用户请求和参数进行对应的处理,更新访

问控制列表,返回接口调用结果等。

FireClient的功能流程则是:FireClient应用提供发送请求、查询、增删策略功能,

每个功能调用对应的firewall模块提供的API,实现接口调用相关的网络请求发送,

返回结果的JSON数据处理和展示等。

模块是OpenDaylight的功能单元,各个模块之间相互独立又彼此协调,组合起

来构成了OpenDaylight对外提供的网络资源管理、数据分发等全部功能。比较

常用的模块有yangUIdluxl2switch等。本次研究中设计开发的防火墙就是基

OpenDaylight平台的模块,该模块可以在开发测试完成后用Maven打包,并

导入OpenDaylightrelease版中,与其他模块一起使用。

2 实验环境搭建和测试结果

2.1 基于OpenDaylight开发的防火墙模块的应用架构设计

Maven是基于项目对象模型(POM)的软件项目管理和依赖分析工具,可以通过描

述信息进行创建项目、编译项目、加载项目依赖等[10-11]。基于Maven简化构

建过程的思考,在本次项目开发中,将使用Maven构建firewall项目骨架,并且

使用Maven对开发好的firewall进行编译、打包。

Yang是一种数据建模语言[12-13],开发者通过对Yang模型的构建,指定标准

访问接口和数据类型,通过远程调用或消息通知的方式实现模型配置与数据的分发

处理。Yang模型的类型之一为Data,负责定义数据类型并用来进行数据存储,

分为两种:ConfigOperationalConfig为配置信息,是北向上层应用向南向

网络发送的配置数据信息,Operational为运行时信息,通常是OpenDaylight

记录的南向网络动态信息。

实验设计中开发的FireClient是基于Mac OS X系统的Cocoa框架,开发语言是

Swift,集成开发环境是Xcode[14]。主要步骤如下:

第一步创建项目;第二步开发用户界面,使用原生的AppKit框架[15],框架底层

采用OpenGL绘制,用到了对象的延迟加载及frame相对布局,界面效果如图3

所示;第三步调用REST APIfirewall模块提供的REST API有:发送请求

(request);查询访问控制IP列表(query);增加访问控制IP(add);删除访问控制

IP(delete)

3 FireClient用户界面

REST API调用代码,以query接口为例,执行步骤如下:

(1)构建HTTP请求头,请求头中包括OpenDaylightDlux界面的登录授权,

content-type等数据;

(2)构建HTTP请求体,请求体中包括向query接口发送的参数;

(3)申请并初始化NSURLRequest对象request,设定请求方式为POST,并指定

已构建好的HTTP请求头和HTTP请求体;

(4)获取URLSession的单例对象sessionsession异步调用dataTask方法,传

request参数;

(5)dataTask方法的block中对请求的响应结果的JSON数据进行解析,获取

有效信息;

(6)获取主线程,在主线程中将有效信息展示在用户界面上;

(7)调用sessionresume()方法开始执行sessionHTTP请求。

2.2 测试结果及结果分析

模拟测试脚本用于模拟虚拟设备向firewall模块对外提供的REST API,脚本代码

如图4所示。

4 脚本代码

测试过程按照如下用例依次进行:

用例1:调用脚本向request发送请求,模拟IP192.168.2.1,预期结果:访

问成功。执行脚本./ "hello" "192.168.2.1",输出结果,如图5所示。

5 用例1测试结果

用例2:用FireClient添加访问策略,禁止IP192.168.2.1设备访问,预期结

果:访问拒绝。用FireClient增加访问策略,禁止IP192.168.2.1的设备访问,

点击“增加”按钮之后,则添加成功。执行脚本./ "hello"

"192.168.2.1",输出结果如图6所示:阻止了IP192.168.2.1的设备的访问。

测试结果和预期一样。

6 用例2测试结果

用例3:添加访问策略,禁止IP192.168.2.2的设备访问,用FireClient查询

访问控制策略列表,查询值为2,预期结果:返回两个禁止访问的IP地址。添加

访问策略,禁止IP192.168.2.2的设备访问,操作步骤与用例2相同。用

FireClient查询访问控制策略列表,查询值为2。查询结果显示了添加的访问控制

列表。

3 结束语

文中提出了一种基于OpenDaylight的防火墙设计与实现方案,并通过实验验证

了其可行性。实验结果表明,由于OpenDaylight已经提供了丰富的应用程序接

口, 使得快速进行网络应用的二次开发成为可能。

虽然该应用原型测试案例比较简单,但所有的防火墙策略都可以通过用户界面灵活

修改。下一步将对用户策略的抽象和定制以及平台跨操作系统的移植等进行研究。

参考文献:

【相关文献】

[1] 彬,王航远,徐 冠,等.SDN安全探讨:机遇与威胁并存[J].计算机应用研

,2014,31(8):2254-2262.

[2] 刘文懋,裘晓峰,陈鹏程,等.面向SDN环境的软件定义安全架构[J].计算机科学与探

,2015,9(1):63-70.

[3] MCKEOWN N, ANDERSON T, BALAKRISHNAN H,et ow:enabling innovation in

campus networks[J].ACM SIGCOMM Computer Communication Review,2008,38(2):69-74.

[4] 王淑玲,李济汉,张云勇,.SDN架构及安全性研究[J].电信科学,201329(3):117-122.

[5] GREENE 10: software-defined networking[N].MIT Technology Review,2011-10-07.

[6] 王雪梅.基于OpenDavlight架构的路由组件的研究与实现[D].北京:北京邮电大学,2016.

[7] RADDA e leads OpenFlow adoption to accelerate network virtualization and

cloud application development[N].Reuters,2011-11-29.

[8] 文旭韬.SDN安全控制器的优化设计与实现[D].北京:北京邮电大学,2015.

[9] 宁,陈春玲,毛燕琴.ASIC芯片OpenFlow交换机设计与实现[J].北京邮电大学学报,

2016,39(6):93-98.

[10] 许晓斌.Maven实战[M].北京:机械工业出版社,2010:67-78.

[11] 钱言佳.基于MavenCWAP框架基础单元层和基础服务层的设计与实现[D].南京:南京大

,2016.

[12] 常亚楠.基于YANG语言的NETCONF网络管理数据建模的研究与实现[D].武汉:华中师范大

,2009.

[13] 文俊浩,杨小义, .扩展UML活动图在工作流建模中的应用[J].计算机应用研

,2007,24(12):244-245.

[14] MANNING J,BUTTFIELD-ADDISON P,NUGENT development with Cocoa

developing for the Mac and iOS App stores[M].北京:人民邮电出版社,2015.

[15] DOVEY J,FURROW ive-C开发经典教程[M].北京:清华大学出版社,2014.