CN105681305B - 一种sdn防火墙系统及实现方法 - Google Patents
一种sdn防火墙系统及实现方法 Download PDFInfo
- Publication number
- CN105681305B CN105681305B CN201610029674.3A CN201610029674A CN105681305B CN 105681305 B CN105681305 B CN 105681305B CN 201610029674 A CN201610029674 A CN 201610029674A CN 105681305 B CN105681305 B CN 105681305B
- Authority
- CN
- China
- Prior art keywords
- data packet
- openflow
- firewall
- module
- port
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0236—Filtering by address, protocol, port number or service, e.g. IP-address or URL
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种SDN防火墙系统及实现方法,该系统及方法对防火墙的管控都集中在控制器,利用控制器对全网的统一管理,为SDN网络提供更加安全和便捷的服务。为了将内网和公网分开,检查出入防火墙的数据包,决定拦截或是放行哪些数据包。用户可以填写自己的访问策略决定是否允许访问某些网站。本项目防火墙模块运用二层转发。本系统为一种基于OpenFlow协议1.3的SDN防火墙系统,本系统使用python语言在ubuntu系统上编写,在ubuntu系统上正常运行;本系统及方法能够很好的实现跨平台移植,该系统具有非常重要的应用价值。
Description
技术领域
本发明涉及一种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交换机配置信息、通信链路信息,并负责控制交换机中的流表,包括对Flow Entry的添加、修改以及删除基本操作。流表由很多个Flow Entry组成,每个流表项就是一个转发规则。本系统中使用的是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_timeout,hard_timeout,priority,instructions,match等字段来生成Flow-Mod消息,添加新的流表项时command为ADD类型,同时发送消息来下发流表。idle_timeout表示流表项的空闲超时时间,hard_timeout表示流表项的最大生存时间。
防火墙MAC地址表模块
通过循环遍历ev.msg.body条目获得的hw_addr与MAC地址表中记录的mac地址进行比较,来获得数据包相应的入出端口,同时下发packet-in到控制器的默认流表项。
防火墙conn_table模块、rule_table模块、数据包分析模块
数据包从INPORT_MAC或者OUTPORT_MAC发送过来,通过get_protocol逐层取出数据包,解析数据包后把数据包与循环遍历取得的conn_table中每一条entry的五元组信息比较,如果数据包来自INPORT_MAC,则根据匹配结果和数据包的Flags来遍历rule_table或者直接丢弃。遍历rule_table时需要按照act动作为pass或者drop来选择新建连接表项同时更改conn_table entry状态、从其他出端口转发数据包或者丢掉数据包,数据包转发前需要OpenFlow控制器模块根据datapath,match field,instructions,priority等参数下发两条双向流表,操作结束时需要根据数据包的状态来删除流表项。如果数据包来OUTPORT_MAC,则根据匹配结果来从其他端口转发数据包或者删除交换机Flow Entry和连接表项。
match field由src_ip,dst_ip,src_port,dst_port,in_port,eth_type,ip_proto来生成。数据包转发过程中会优先匹配priority数值大的流表项,数值越大表明优先级越高。
定时器(Timer)模块
如图3所示。每隔一段时间启动一次定时器Timer,定时器用来发送流表状态请求,执行以下步骤:
逐行遍历整个连接表,对每个连接表项,先比较当前连接表项的前次正向计数字段和当前正向计数字段,前次反向计数字段和当前反向计数字段,
如果两个比较有一个不等,则把当前正向计数字段复制到前次正向计数字段,当前反向计数字段复制到前次反向计数字段,继续遍历下一个连接表项。
如果两个比较都相等,说明一段时间内本连接没有命中数据包,删除该连接表项,继续遍历下一个连接表项。
Claims (2)
1.一种SDN防火墙系统,该系统为一种基于OpenFlow协议1.3的SDN防火墙系统,本系统使用python语言在ubuntu系统上编写,在ubuntu系统上正常运行;
通过对数据包的解析,分析数据包的状态并结合数据包与规则表文件中填写的五元组进行比较,决定数据包由哪个端口转发出去,满足规则表条件的数据包则从相应的端口转发出去或者packet-in到OpenFlow控制器,不满足规则表条件的数据包则丢掉,不允许通过OpenFlow控制器,其特征在于:该系统包括数据包分析模块、防火墙规则表rule_table模块、定时器Timer模块、防火墙连接表conn_table模块、防火墙MAC地址表模块、OpenFlow控制器、OpenFlow交换机;OpenFlow控制器通过OpenFlow协议与OpenFlow交换机通信,启动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)数据包分析模块对获取的数据包进行分析,数据包能够来自OpenFlow交换机、路由器,也能够来自主机和其他通信终端,符合packet-in的数据包则会上传到OpenFlow控制器进行相应的操作;
6)OpenFLow控制器具有全局的拓扑,并控制转发路径,通过安全通道与OpenFlow交换机进行信息交互并完成连接,所有的信息必须按照OpenFlow协议规定的格式来执行;
OpenFlow控制器收集OpenFlow交换机配置信息、通信链路信息,并负责控制OpenFlow交换机中的流表,包括对Flow Entry的添加、修改以及删除基本操作;流表由很多个FlowEntry组成,每个流表项就是一个转发规则;本系统中使用的是RYU控制器,OpenFlow交换机通过安全通道向OpenFlow控制器packet-in数据包;
7)OpenFlow交换机主要管理数据层的转发,当交换机接收到数据包后,首先在本地的流表上查找转发目标端口,如果流表中没有匹配条目,OpenFlow交换机会将数据包封装在packet-in消息中发送给OpenFlow控制器处理,由控制层决定转发端口,如果找到匹配的流表项,则根据流表目标端口把数据包转发出去;
该SDN防火墙系统的核心库包括python中的time,os,struct,threading,csv函数库,这些函数库能够在所有支持python的OpenFlow控制器中运行。
2.依权利要求1所述系统进行的一种SDN防火墙系统的实现方法,其特征在于:
OpenFlow控制器、OpenFlow交换机
不同的OpenFlow交换机的datapath不一样,OpenFlow交换机以此来作为标识,OpenFlow控制器根据datatpath来下发流表到OpenFlow交换机,数据包根据流表项进行转发,若数据包匹配流表项规则,则数据包进行转发,若数据包无法匹配流表项规则,则需要packet-in的OpenFlow控制器处理,OpenFlow控制器将数据包信息传递到防火墙模块,由防火墙模块进行相应操作;
Flow-Mod消息用来添加、修改、删除OpenFlow交换机的流表信息,通过datapath,table_id,command,idle_timeout,hard_timeout,priority,instructions,match字段来生成Flow-Mod消息,添加新的流表项时command为ADD类型,同时发送消息来下发流表;
idle_timeout表示流表项的空闲超时时间,hard_timeout表示流表项的最大生存时间;
防火墙MAC地址表模块
通过循环遍历ev.msg.body条目获得的hw_addr与MAC地址表中记录的mac地址进行比较,来获得数据包相应的入出端口,同时下发packet-in到OpenFlow控制器的默认流表项;
防火墙conn_table模块、rule_table模块、数据包分析模块
数据包从INPORT_MAC或者OUTPORT_MAC发送过来,通过get_protocol逐层取出数据包,解析数据包后把数据包与循环遍历取得的conn_table中每一条entry的五元组信息比较,如果数据包来自INPORT_MAC,则根据匹配结果和数据包的Flags来遍历rule_table或者直接丢弃;遍历rule_table时需要按照act动作为pass或者drop来选择新建连接表项同时更改conn_table entry状态、从其他出端口转发数据包或者丢掉数据包,数据包转发前需要OpenFlow控制器模块根据datapath,match field,instructions,priority参数下发两条双向流表,操作结束时需要根据数据包的状态来删除流表项;如果数据包来自OUTPORT_MAC,则根据匹配结果来从其他端口转发数据包或者删除交换机Flow Entry和连接表项;
match field由src_ip,dst_ip,src_port,dst_port,in_port,eth_type,ip_proto来生成;数据包转发过程中会优先匹配priority数值大的流表项,数值越大表明优先级越高;
定时器Timer模块
每隔一段时间启动一次定时器Timer,定时器用来发送流表状态请求,执行以下步骤:
逐行遍历整个连接表,对每个连接表项,先比较当前连接表项的前次正向计数字段和当前正向计数字段,前次反向计数字段和当前反向计数字段;
如果两个比较有一个不等,则把当前正向计数字段复制到前次正向计数字段,当前反向计数字段复制到前次反向计数字段,继续遍历下一个连接表项;
如果两个比较都相等,说明一段时间内本连接没有命中数据包,删除该连接表项,继续遍历下一个连接表项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610029674.3A CN105681305B (zh) | 2016-01-15 | 2016-01-15 | 一种sdn防火墙系统及实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610029674.3A CN105681305B (zh) | 2016-01-15 | 2016-01-15 | 一种sdn防火墙系统及实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105681305A CN105681305A (zh) | 2016-06-15 |
CN105681305B true CN105681305B (zh) | 2019-08-09 |
Family
ID=56301171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610029674.3A Active CN105681305B (zh) | 2016-01-15 | 2016-01-15 | 一种sdn防火墙系统及实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105681305B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105897611B (zh) * | 2016-06-24 | 2019-03-29 | 武汉绿色网络信息服务有限责任公司 | 一种基于sdn采用dpi技术实现业务识别和流量调度的系统和方法 |
CN106657015B (zh) * | 2016-11-23 | 2020-09-22 | 中国银联股份有限公司 | 基于sdn网络的数据传输方法 |
CN106685923A (zh) * | 2016-11-25 | 2017-05-17 | 合肥海亚信息科技有限公司 | 一种基于Linux网络防火墙的设计系统 |
CN107864062B (zh) * | 2016-12-14 | 2021-02-09 | 中国电子科技网络信息安全有限公司 | 一种容器防火墙系统部署方法 |
CN106533968B (zh) * | 2016-12-21 | 2019-09-10 | 重庆邮电大学 | 基于网络中间设备的软件定义移动网络安全策略配置方法 |
CN107579963A (zh) * | 2017-08-24 | 2018-01-12 | 南京南瑞集团公司 | 一种高性能的防火墙集群 |
CN107529694B (zh) * | 2017-09-14 | 2019-04-02 | 广州西麦科技股份有限公司 | 一种基于OpenDaylight配置Firewall的方法及装置 |
CN108111420B (zh) * | 2017-12-14 | 2021-05-18 | 迈普通信技术股份有限公司 | 一种流表项管理方法、装置、电子设备及存储介质 |
CN109995725B (zh) * | 2017-12-29 | 2021-08-06 | 中移(苏州)软件技术有限公司 | 一种云计算状态防火墙的实现方法及装置 |
CN108322467B (zh) * | 2018-02-02 | 2021-11-05 | 云宏信息科技股份有限公司 | 基于ovs的虚拟防火墙配置方法、电子设备及存储介质 |
CN108512766B (zh) * | 2018-03-26 | 2020-09-11 | 南京邮电大学 | 一种OpenFlow交换机流表调节方法 |
CN111327486B (zh) * | 2018-12-17 | 2021-10-15 | 中国电信股份有限公司 | 流表下发方法、装置、系统及计算机可读存储介质 |
CN113378205A (zh) * | 2021-07-07 | 2021-09-10 | 公安部第一研究所 | 一种数据跨安全域反向传输的方法 |
CN116074250B (zh) * | 2023-02-23 | 2023-08-22 | 阿里巴巴(中国)有限公司 | 流表处理方法、系统、设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104104561A (zh) * | 2014-08-11 | 2014-10-15 | 武汉大学 | 一种基于OpenFlow协议的SDN防火墙状态检测方法及系统 |
CN104935604A (zh) * | 2015-06-29 | 2015-09-23 | 南京邮电大学 | 一种基于OpenFlow协议的SDN防火墙系统和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2803168B1 (en) * | 2012-01-09 | 2015-10-21 | Telefonaktiebolaget LM Ericsson (PUBL) | Network device control in a software defined network |
US9461967B2 (en) * | 2013-07-18 | 2016-10-04 | Palo Alto Networks, Inc. | Packet classification for network routing |
-
2016
- 2016-01-15 CN CN201610029674.3A patent/CN105681305B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104104561A (zh) * | 2014-08-11 | 2014-10-15 | 武汉大学 | 一种基于OpenFlow协议的SDN防火墙状态检测方法及系统 |
CN104935604A (zh) * | 2015-06-29 | 2015-09-23 | 南京邮电大学 | 一种基于OpenFlow协议的SDN防火墙系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105681305A (zh) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105681305B (zh) | 一种sdn防火墙系统及实现方法 | |
CN108289104B (zh) | 一种工业SDN网络DDoS攻击检测与缓解方法 | |
US9306819B2 (en) | Controller driven OAM for split architecture network | |
US9491068B2 (en) | Method, apparatus, and system for flow measurement | |
CN104717101B (zh) | 深度包检测方法和系统 | |
Wang et al. | Transparent flow migration for NFV | |
US20190166008A1 (en) | Methods, systems, and computer readable media for network traffic statistics collection | |
CN108737272B (zh) | 一种云计算中高性能路由转发方法 | |
CN104012052A (zh) | 用于软件定义网络中的流管理的系统和方法 | |
CN104158745B (zh) | 一种实现数据包转发的方法及系统 | |
US20200028762A1 (en) | Network verification system | |
CN109547288B (zh) | 一种协议无关转发网络可编程流测量方法 | |
CN104509032A (zh) | 软件定义的网络中的操作、监管、以及管理(oam)功能 | |
US20160299958A1 (en) | Method and apparatus for visual logging in networking systems | |
CN105099916B (zh) | 开放流路由交换设备及其对数据报文的处理方法 | |
CN104883303B (zh) | 一种sdn架构中多流表网络路由追踪的方法 | |
CN104782087B (zh) | 交换设备、控制器、交换设备配置、报文处理方法及系统 | |
US10097422B2 (en) | Information processing apparatus, configuration method, communication system, and program | |
CN109194590B (zh) | 支持网内智能的网络交换系统 | |
CN109428782A (zh) | 网络监控的方法和设备 | |
CN106302021A (zh) | 一种网络流转发异常检测方法 | |
CN108881064B (zh) | 报文信息获取方法和发送方法 | |
CN105794156A (zh) | 通信系统、通信方法、网络信息组合装置以及网络信息组合程序 | |
US20190124184A1 (en) | Data Processing Method and Apparatus | |
CN108183864A (zh) | 基于ids反馈的软件定义网络流采样方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |