一种SDN防火墙系统及实现方法技术方案

技术编号:14984132 阅读:72 留言:0更新日期:2017-04-03 15:15
一种SDN防火墙系统及实现方法,该系统及方法对防火墙的管控都集中在控制器,利用控制器对全网的统一管理,为SDN网络提供更加安全和便捷的服务。为了将内网和公网分开,检查出入防火墙的数据包,决定拦截或是放行哪些数据包。用户可以填写自己的访问策略决定是否允许访问某些网站。本项目防火墙模块运用二层转发。本系统为一种基于OpenFlow协议1.3的SDN防火墙系统,本系统使用python语言在ubuntu系统上编写,在ubuntu系统上正常运行;本系统及方法能够很好的实现跨平台移植,该系统具有非常重要的应用价值。

【技术实现步骤摘要】

本专利技术涉及一种SDN防火墙系统及实现方法,属于网络

技术介绍
近年来,随着计算机网络规模的急剧膨胀和应用类型的不断丰富,Internet的结构和功能正变得日趋复杂,管控能力正在日趋减弱。为了解决现有网络结构面临的诸多难题,我们需要在现有互联网环境下逐步地向下一代互联网迈进。基于OpenFlow的SDN技术分离了网络的控制平面和数据平面,为网络新应用的研发和互联网技术下一代提供了一种新的解决方案。该技术是一个开放式协议标准,提供了在真实网络环境中部署、测试创新的网络体系和协议的平台。SDN接口分北向和南向,北向接口提供了丰富的API可以供开发和设计应用。SDN南向接口用于在控制器与转发设备间建立连接,OpenFlow协议则是SDN中的南向接口协议,定义了一系列的标准。传统防火墙功能实现在网络设备中,但在SDN网络环境中控制层与数据层的分离使得防火墙的功能可以使用更简单的方式来实现,不需要更改底层的网络设备。
技术实现思路
本专利技术的目的是针对现有的SDN网络环境设计一种SDN网络防火墙系统,对防火墙的管控都集中在控制器,利用控制器对全网的统一管理,为SDN网络提供更加安全和便捷的服务。为了将内网和公网分开,检查出入防火墙的数据包,决定拦截或是放行哪些数据包。用户可以填写自己的访问策略决定是否允许访问某些网站。本项目防火墙模块运用二层转发。为达到以上专利技术目的,本专利技术采用的技术方案为一种基于OpenFlow协议1.3的SDN防火墙系统,本系统使用python语言在ubuntu系统上编写,在ubuntu系统上正常运行。通过对数据包的解析,分析数据包的状态并结合数据包与规则表文件中填写的五元组进行比较,决定数据包由哪个端口转发出去,满足条件的数据包则从相应的端口转发出去或者packet-in到控制器,不满足条件的数据包则丢掉,不允许通过控制器。一种SDN防火墙系统,该系统包括数据包分析模块、防火墙规则表(rule_table)模块、定时器(Timer)模块、防火墙连接表(conn_table)模块、防火墙MAC地址表模块、OpenFlow控制器、OpenFlow交换机。图1描述了系统的总体框架架构,控制器模块通过OpenFlow协议与交换机模块通信,启动控制器模块的同时运行防火墙模块,OpenFlow交换机连接了不同的终端,从一个终端发送数据包给另一个终端需要匹配流表,控制器结合防火墙模块来对交换机进行控制,从而确保数据包的转发与否。1)防火墙连接表模块中的防火墙规则表包括ip_src,ip_dst,src_port,dst_port,protocol(协议),act(动作)字段。ip_src和ip_dst都能够填写网段,这使得所有网段内的ip地址都满足条件。当ip_dst填写的是0.0.0.0/0时,表示源ip能够访问所有网段的网址。act动作分drop和pass,状态为drop时数据包不允许通过。2)防火墙连接表模块中的防火墙连接表包括src_ip,dst_ip,src_port,dst_port,state,org_count(正向数据包数量),rep_count(反向数据包数量),bk_rep_count,bk_org_count,proto。org_count统计的是正向数据包计数,rep_count统计的是反向数据包计数,bk_rep_count统计的是前一次正向数据包计数,bk_org_count统计的是前一次反向数据包计数。state记录了传来的数据包解析后的不同状态。3)根据MAC地址表中的填写的INPORT_MAC和OUTPORT_MAC获取到入出端口号,找到数据包是从哪个端口转发到哪个端口。4)定时器模块在响应features消息时开始启动,并每隔一段时间启动一次定时器。定时器模块的作用是在一定时间内查看数据包计数字段是否改变,如果改变,说明这段时间有数据包通过OpenFlow交换机,连接存在;如果没有改变,则会删除对应此连接的两条双向流表项,并同时删掉对应的连接表项。5)数据包分析模块对获取的数据包进行分析,数据包可以来自交换机、路由器,也可以来自主机和其他通信终端,符合packet-in的数据包则会上传到控制器进行相应的操作。6)OpenFLow控制器具有全局的拓扑,并控制转发路径,通过安全通道与OpenFlow交换机进行信息交互并完成连接,所有的信息必须按照OpenFlow协议规定的格式来执行。OpenFlow控制器收集OpenFlow交换机配置信息、通信链路信息,并负责控制交换机中的流表,包括对FlowEntry的添加、修改以及删除基本操作。流表由很多个FlowEntry组成,每个流表项就是一个转发规则。本系统中使用的是RYU控制器,OpenFlow交换机通过安全通道向OpenFlow控制器packet-in数据包。7)OpenFlow交换机主要管理数据层的转发,当交换机接收到数据包后,首先在本地的流表上查找转发目标端口,如果流表中没有匹配条目,交换机会将数据包封装在packet-in消息中发送给控制器处理,由控制层决定转发端口,如果找到匹配的流表项,则根据流表目标端口把数据包转发出去。该核心库包括python中的time,os,struct,threading,csv等库函数,这些库可以在所有支持python的控制器中运行,因此本项目很好的实现跨平台移植,该系统具有非常重要的应用价值。附图说明图1系统总体框架结构图。图2防火墙系统工作方法流程图。图3定时器模块流程图。具体实施方式系统总体框架架构图如图1所示。本系统是基于OpenFlow协议1.3的,它由数据包分析模块、防火墙规则(rule_table)模块、定时器(Timer)模块、防火墙连接表(conn_table)模块、防火墙MAC地址表模块、OpenFlow控制器、OpenFlow交换机组成。防火墙系统工作方法流程如图2所示。OpenFlow控制器、OpenFlow交换机不同的交换机的datapath不一样,交换机以此来作为标识,控制器根据datatpath来下发流表到交换机,数据包根据流表项进行转发,若数据包匹配流表项规则,则数据包进行转发,若数据包无法匹配流表项规则,则需要packet-in控制器处理,控制器将数据包信息传递到防火墙模块,由防火墙模块进行相应操作。Flow-Mod消息用来添加、修改、删除OpenFlow交换机的流表信息,通过datapath,table_id,command,idle_time本文档来自技高网...

【技术保护点】
一种SDN防火墙系统,该系统为一种基于OpenFlow协议1.3的SDN防火墙系统,本系统使用python语言在ubuntu系统上编写,在ubuntu系统上正常运行;通过对数据包的解析,分析数据包的状态并结合数据包与规则表文件中填写的五元组进行比较,决定数据包由哪个端口转发出去,满足条件的数据包则从相应的端口转发出去或者packet‑in到控制器,不满足条件的数据包则丢掉,不允许通过控制器,其特征在于:该系统包括数据包分析模块、防火墙规则表(rule_table)模块、定时器(Timer)模块、防火墙连接表(conn_table)模块、防火墙MAC地址表模块、OpenFlow控制器、OpenFlow交换机;控制器模块通过OpenFlow协议与交换机模块通信,启动控制器模块的同时运行防火墙模块,OpenFlow交换机连接了不同的终端,从一个终端发送数据包给另一个终端需要匹配流表,控制器结合防火墙模块来对交换机进行控制,从而确保数据包的转发与否;1)防火墙连接表模块中的防火墙规则表包括ip_src,ip_dst,src_port,dst_port,protocol(协议),act(动作)字段;ip_src和ip_dst都能够填写网段,这使得所有网段内的ip地址都满足条件;当ip_dst填写的是0.0.0.0/0时,表示源ip能够访问所有网段的网址;act动作分drop和pass,状态为drop时数据包不允许通过;2)防火墙连接表模块中的防火墙连接表包括src_ip,dst_ip,src_port,dst_port,state,org_count(正向数据包数量),rep_count(反向数据包数量),bk_rep_count,bk_org_count,proto;org_count统计的是正向数据包计数,rep_count统计的是反向数据包计数,bk_rep_count统计的是前一次正向数据包计数,bk_org_count统计的是前一次反向数据包计数;state记录了传来的数据包解析后的不同状态;3)根据MAC地址表中的填写的INPORT_MAC和OUTPORT_MAC获取到入出端口号,找到数据包是从哪个端口转发到哪个端口;4)定时器模块在响应features消息时开始启动,并每隔一段时间启动一次定时器;定时器模块的作用是在一定时间内查看数据包计数字段是否改变,如果改变,说明这段时间有数据包通过OpenFlow交换机,连接存在;如果没有改变,则会删除对应此连接的两条双向流表项,并同时删掉对应的连接表项;5)数据包分析模块对获取的数据包进行分析,数据包能够来自交换机、路由器,也能够来自主机和其他通信终端,符合packet‑in的数据包则会上传到控制器进行相应的操作;6)OpenFLow控制器具有全局的拓扑,并控制转发路径,通过安全通道与OpenFlow交换机进行信息交互并完成连接,所有的信息必须按照OpenFlow协议规定的格式来执行;OpenFlow控制器收集OpenFlow交换机配置信息、通信链路信息,并负责控制交换机中的流表,包括对FlowEntry的添加、修改以及删除基本操作;流表由很多个Flow Entry组成,每个流表项就是一个转发规则;本系统中使用的是RYU控制器,OpenFlow交换机通过安全通道向OpenFlow控制器packet‑in数据包;7)OpenFlow交换机主要管理数据层的转发,当交换机接收到数据包后,首先在本地的流表上查找转发目标端口,如果流表中没有匹配条目,交换机会将数据包封装在packet‑in消息中发送给控制器处理,由控制层决定转发端口,如果找到匹配的流表项,则根据流表目标端口把数据包转发出去;该核心库包括python中的time,os,struct,threading,csv库函数,这些库能够在所有支持python的控制器中运行。...

【技术特征摘要】
1.一种SDN防火墙系统,该系统为一种基于OpenFlow协议1.3的SDN防火墙系统,
本系统使用python语言在ubuntu系统上编写,在ubuntu系统上正常运行;
通过对数据包的解析,分析数据包的状态并结合数据包与规则表文件中填写的五元组进
行比较,决定数据包由哪个端口转发出去,满足条件的数据包则从相应的端口转发出去或者
packet-in到控制器,不满足条件的数据包则丢掉,不允许通过控制器,其特征在于:该系统
包括数据包分析模块、防火墙规则表(rule_table)模块、定时器(Timer)模块、防火墙连接表
(conn_table)模块、防火墙MAC地址表模块、OpenFlow控制器、OpenFlow交换机;控制器
模块通过OpenFlow协议与交换机模块通信,启动控制器模块的同时运行防火墙模块,
OpenFlow交换机连接了不同的终端,从一个终端发送数据包给另一个终端需要匹配流表,控
制器结合防火墙模块来对交换机进行控制,从而确保数据包的转发与否;
1)防火墙连接表模块中的防火墙规则表包括ip_src,ip_dst,src_port,dst_port,protocol(协
议),act(动作)字段;ip_src和ip_dst都能够填写网段,这使得所有网段内的ip地址都满足条
件;当ip_dst填写的是0.0.0.0/0时,表示源ip能够访问所有网段的网址;act动作分drop和
pass,状态为drop时数据包不允许通过;
2)防火墙连接表模块中的防火墙连接表包括src_ip,dst_ip,src_port,dst_port,state,
org_count(正向数据包数量),rep_count(反向数据包数量),bk_rep_count,bk_org_count,proto;
org_count统计的是正向数据包计数,rep_count统计的是反向数据包计数,bk_rep_count统计
的是前一次正向数据包计数,bk_org_count统计的是前一次反向数据包计数;state记录了传
来的数据包解析后的不同状态;
3)根据MAC地址表中的填写的INPORT_MAC和OUTPORT_MAC获取到入出端口号,
找到数据包是从哪个端口转发到哪个端口;
4)定时器模块在响应features消息时开始启动,并每隔一段时间启动一次定时器;定时
器模块的作用是在一定时间内查看数据包计数字段是否改变,如果改变,说明这段时间有数
据包通过OpenFlow交换机,连接存在;如果没有改变,则会删除对应此连接的两条双向流
表项,并同时删掉对应的连接表项;
5)数据包分析模块对获取的数据包进行分析,数据包能够来自交换机、路由器,也能够
来自主机和其他通信终端,符合packet-in的数据包则会上传到控制器进行相应的操作;
6)OpenFLow控制器具有全局的拓扑,并控制转发路径,通过安全通道与OpenFlow交换
机进行信息交互并完成连接,所有的信息必须按照OpenFlow协议规定的格式来执行;
OpenFlow控制器收集OpenFlow交换机配置信息、通信链路信息,并负责控制交换机中的流
表,包括对FlowEntry的添加、修改以及删除基本操作;流表由很多个FlowEntry组成,每
个流表项就是一个转发规则;本系统中使用的是RYU控制器,OpenFlow交换机通过安全通

\t道向OpenFlow控制器packet-in数据包;
7)OpenFlow交换机主要管理数据层的转发,当交换机接收到数据包后,首先在本地的流
表上查找转发目标端口,如果流表中没有匹配条目,交换机会将数据包封装在packet-in消息
中发送给控制器处理,由控制层决定转发端口,如果找到匹配的流表项,则根据流表目标端
口把数...

【专利技术属性】
技术研发人员:田雨刘静赖英旭
申请(专利权)人:北京工业大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1