CN104104561A - 一种基于OpenFlow协议的SDN防火墙状态检测方法及系统 - Google Patents
一种基于OpenFlow协议的SDN防火墙状态检测方法及系统 Download PDFInfo
- Publication number
- CN104104561A CN104104561A CN201410393568.4A CN201410393568A CN104104561A CN 104104561 A CN104104561 A CN 104104561A CN 201410393568 A CN201410393568 A CN 201410393568A CN 104104561 A CN104104561 A CN 104104561A
- Authority
- CN
- China
- Prior art keywords
- state
- packet
- sdn
- openflow
- sdn controller
- 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.)
- Granted
Links
Abstract
本发明放开了一种基于OpenFlow协议的SDN防火墙状态检测方法及系统,通过在OpenFlow交换机中增加状态表和状态转换表,记录数据流的状态及其变化信息。同时,在SDN控制器中也同样建立和维护一张状态转换表,以便实现控制器与交换机数据流状态的同步。此外,本发明提出了对原有OpenFlow流表格式的修改,在其中添加了相关状态字段,同时也修改了OpenFlow协议,添加了新的消息State_In,以便处理控制器与交换机之前的状态操作消息,保持控制器和交换机中连接状态表保持一致。本发明可有效实现更细粒度的访问控制。同时,通过Openflow交换机和SDN控制器的协同工作,完成了状态检测防火墙的部署,为SDN网络提供更加安全有效的服务。
Description
技术领域
本发明属于互联网技术领域,主要针对现有OpenFlow协议的无状态性而导致的SDN防火墙无法进行状态检测问题,提出了一种基于OpenFlow协议的SDN防火墙状态检测方法及系统。
背景技术
软件定义网络(Software Defined Network, SDN ),是一种新型网络创新架构,其核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。控制层通过OpenFlow协议这个标准接口对OpenFlow交换机中的流表进行控制,从而实现对整个网络进行集中控制。
然而,相对于传统网络,SDN在给网络管理人员带了更多便捷,更多控制能力的同时,作为一种崭新的网络体系架构,其防火墙技术解决方案并不完善,存在着许多安全威胁。目前,部分SDN控制器具有防火墙应用模块,但是其功能只是简单的包过滤,根据一个网流的首个数据包进行安全处理,实现了简单的访问控制。然而,这种简单的访问控制,无法监测SDN数据流的状态。
目前,Shin S等人提出了一个在SDN架构上开发网络安全应用的开发环境FRESCO, FRESCO本身作为SDN应用层的一个应用,运行在上面所述的安全加固的控制层操作系统(增强的NOX)上,允许安全人员创建新的模块化库,整合和扩展安全功能,从而使用OpenFlow控制器和硬件进行控制和管理流量;Porrasy P等人也提出一种加固的控制平面操作系统FortNOX。FortNOX通过扩展开源的NOX操作系统的Send_Openflow_Command模块,增加了策略冲突消解功能;这些方法都一定程度地增强了防火墙的安全性,无论是在流量清洗与控制,策略冲突的消解。但是这些方法并未在应用层协议上实现更加细粒度的访问控制。Divjyot Sethi等人也提出了模型检测控制器的抽象概念,其论文中提到了学习型交换机,和一个简单状态防火墙的实现。该防火墙通过两个交换机协同工作,实现了阻止外网和内网主动通信的功能;但是这种方法并未将控制器的集中控制性体现出来,而且也并未抽取应用层协议的状态信息,虽然论文通过巧妙的设计思路实现了简单的内网与外网单向连接,然后这种设计思路并不是通过抽取状态信息实现的。
发明内容
为了解决上述技术问题,本发明从SDN架构特点出发,通过在SDN控制器和OpenFlow交换机中增加状态表和变换流表,提出了一种基于OpenFlow协议的SDN防火墙状态检测方法及系统。
本发明的方法所采用的技术方案是:一种基于OpenFlow协议的SDN防火墙状态检测方法,其特征在于:SDN防火墙模块分别部署在SDN控制器和OpenFlow交换机中,通过在SDN控制器中添加连接状态表,在OpenFlow交换机中添加连接状态表,并且修改原有OpenFlow流表格式,在其中添加相关状态字段,同时修改OpenFlow协议,添加新的消息State_In,保持SDN控制器和OpenFlow交换机中连接状态表保持一致,从而实现了SDN防火墙模块的部署。
本发明的系统所采用的技术方案是:一种基于OpenFlow协议的SDN防火墙状态检测系统,包括SDN控制器、OpenFlow交换机;其特征在于:还包括交换机中包头信息提取模块、状态表建立和更新模块、变换流表(shifted Flow Table)建立和更新模块、合法性检测模块和SDN控制器端命令下发及连接状态表同步模块;
所述的交换机中包头信息提取模块用于提取数据包头部中关键信息,所述的关键信息包括数据包的源地址,源端口,目的地址,目的端口,序列号,确认号以及TCP标志位;
所述的状态表建立和更新模块用于在所述的OpenFlow交换机中建立连接状态表,并同时将连接状态表的更新同步到所述的SDN控制器中,该模块的连接状态表的更新将由变换流表通过set_state指令控制;
所述的变换流表建立和更新模块用于在由所述的SDN控制器下发指令在所述的OpenFlow交换机中建立变换流表,负责状态转换过程以及数据包转发操作;
所述的合法性检测模块用于负责判别来到所述的OpenFlow交换机数据包属于哪一次连接;
所述的SDN控制器端命令下发及连接状态表同步模块用于在所述的SDN控制器端建立连接状态表,与所述的OpenFlow交换机中的状态表保持同步,同时当收到所述的OpenFlow交换机发送Packet_In消息时,该模块将会将包头信息和状态信息与连接状态表或者防火墙规则集进行对比,分配相应状态,同时下发变换流表到所述的OpenFlow交换机中。
作为优选,所述的连接状态表的建立首先定义两种消息结构让SDN控制器和OpenFlow交换机完成同步连接状态表的操作,当OpenFlow交换机处的连接状态表发生状态更新时,OpenFlow交换机给SDN控制器发送一个STATE_IN消息,通知SDN控制器对相应状态记录进行更新,而当SDN控制器处的连接状态表发生状态更新时,SDN控制器也向OpenFlow交换机发送一个OFP_STATE_MOD消息,命令OpenFlow交换机对相应状态记录进行更新;然后连接状态表用一个四元组组成(Match Field, State, Timeout, Packet_count), 其中Match Field 包括数据包的IP(源地址,目的地址,但是针对连接,本发明在匹配连接状态表的时候不区分)和协议类型(包括TCP/UDP, ICMP 等等), State表示连接状态,Timeout表示连接的超时时间,Packet_count 表示通过数据包的数目。
作为优选,为了实现连接状态表的更新、维护以及管理,使数据包转发过程中带上有状态的特征,本发明对OpenFlow协议定义的变换流表的基本结构添加了一个状态属性(State),以及该状态对应的下一个状态属性(Next_State),并重新定义了数据包与表项记录匹配的过程,使匹配不仅仅依赖与数据包包头的信息,同时也取决于它的状态(当数据包经过连接状态表的匹配后,会在其包头信息中添加该状态信息);匹配不成功则OpenFlow交换机将向SDN控制器发送一个Packet_IN请求消息,其中将会包含数据包包头的信息,也包含其状态信息,作为回应,SDN控制器会向OpenFlow交换机发送一个Flow_mod消息,向OpenFlow交换机添加相应记录;当匹配成功时,则执行一个的OFPIT_SET_STATE指令,该指令将连接状态表中状态赋值为变换流表中相应记录的下一个状态(Next_State),完成状态的转换;同时按照ACTION处理该数据包。
作为优选,当一个数据包来到OpenFlow交换机时,OpenFlow交换机的状态管理过程包括以下步骤:
步骤1-1:状态查询,这一查询是在连接状态表中进行的,把数据包的包头信息作为查询关键字,如果在连接状态表中没有关于该查询的记录,则在连接状态表中添加该项,将其状态置为DEFAULT;
步骤1-2:变换流表实现状态转换,当数据包经过连接状态表的匹配后,其数据包包头被加上状态信息,在查询变换流表的时,该状态信息也将作为一个关键字,如果找到记录,则执行数据包处理操作,同时将下一个状态信息写回到原来的连接状态表,对状态进行更新;
步骤1-3:状态更新,包含添加、删除和修改,通过OFPIT_SET_STATE指令完成状态更新,或使用State_mod指令完成状态更新。
作为优选,步骤1-1中所述的查询关键字为源IP地址。
作为优选,所述的SDN防火墙状态检测系统接收到数据包后的处理过程包括以下步骤:
步骤2-1:数据包头部信息通过关键信息提取模块,提取数据包包头关键信息;
步骤2-2:将包头关键信息与状态表进行匹配,如果状态表中没有关于该项的记录,则添加记录,并将其状态置为DEFAULT;
步骤2-3:将匹配域信息与该状态信息一并发送,与变换流表(Shifted Flow Table) 进行匹配,若变换流表中没有相应记录,则发送Packet_In消息到SDN控制器端,SDN控制器端匹配连接状态表或者规则集下发Flow_Mod到OpenFlow交换机;
步骤2-4:按照SDN控制器指令更新变换流表同时执行相应数据转发操作;
步骤2- 5:将变换流表中的下一个状态的信息写回到状态表;
步骤2-6:OpenFlow交换机向SDN控制器发送State_In消息对SDN控制器中的状态表进行更新。
本发明与Shin S等人的工作不同,通过在SDN控制器和OpenFlow交换机通过定义两种表(连接状态表和变换流表)来完成状态检测与转换流程。对OpenFlow交换机中定义的流表的结构进行修改,添加状态项,使得流表的转发和状态关联起来,并且完成了对状态表的维护和更新。采用OpenFlow交换机和SDN控制器协同工作的方式来实现对全局网络通信状态的检测,保证了SDN控制器的集中化控制,同时用SDN控制器与OpenFlow交换机之间较小的通信量实现了SDN控制器对全局网络通信状态的掌握与控制。此外,由于连接状态表建立在OpenFlow交换机和SDN控制器中,本发明修改了消息机制即时同步两表中的内容,使得两张表中关于相同连接的状态保持高度一致。
本发明的有益创新为:
1.提出并设计了一种SDN防火墙状态检测方法, SDN网络架构的防火墙大多都是传统的包过滤防火墙,没有状态检测功能。要在SDN架构下实现状态检测防火墙的方法是多种多样的,而本发明用交换机和控制器协同工作的方式来实现对全局网络通信状态的检测,这种设计方案是比较高效且不违背SDN架构设计宗旨和初衷的,本发明的设计和实现方法保证了控制器的控制集中化不受影响,同时用控制器与交换机之间较小的通信量实现了控制器对全局网络通信状态的掌握与控制。
2.现有OpenFlow流表是无状态的,因为无法完成对网络通信状态进行检测的功能,带来了很多安全威胁,如防御DDos攻击困难等。本发明对OpenFlow 协议中定义的流表的基本结构进行了修改,添加了相关状态项,使得数据流转发不再与状态无关, 完成了对状态表的维护与更新的功能。
附图说明
图1:是本发明实施例的系统架构示意图。
图2:是本发明实施例的系统收到数据包时处理的流程图。
图3:是本发明实施例的TCP数据包处理流程图。
图4:是本发明实施例的UDP对虚连接状态检测流程图。
图5:是本发明实施例的ICMP数据包处理流程图。
图6:是本发明实施例的TCP状态转换图。
图7:是本发明实施例的UDP状态转换图。
图8:是本发明实施例的ICMP状态转换图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
本发明的方法所采用的技术方案是:一种基于OpenFlow协议的SDN防火墙状态检测方法, SDN防火墙模块分别部署在SDN控制器和OpenFlow交换机中,通过在SDN控制器中添加连接状态表,在OpenFlow交换机中添加连接状态表,并且修改原有OpenFlow流表格式,在其中添加相关状态字段,同时修改OpenFlow协议,添加新的消息State_In,保持SDN控制器和OpenFlow交换机中连接状态表保持一致,从而实现了SDN防火墙模块的部署。
请见图1,本发明的系统所采用的技术方案是:一种基于OpenFlow协议的SDN防火墙状态检测系统,包括SDN控制器、OpenFlow交换机、交换机中包头信息提取模块、状态表建立和更新模块、变换流表建立和更新模块、合法性检测模块和SDN控制器端命令下发及连接状态表同步模块;交换机中包头信息提取模块用于提取数据包头部中关键信息,关键信息包括数据包的源地址,源端口,目的地址,目的端口,序列号,确认号以及TCP标志位;状态表建立和更新模块用于在OpenFlow交换机中建立连接状态表,并同时将连接状态表的更新同步到SDN控制器中,该模块的连接状态表的更新将由变换流表通过set_state指令控制;变换流表建立和更新模块用于在由SDN控制器下发指令在OpenFlow交换机中建立变换流表,负责状态转换过程以及数据包转发操作;合法性检测模块用于负责判别来到OpenFlow交换机数据包属于哪一次连接;SDN控制器端命令下发及连接状态表同步模块用于在SDN控制器端建立连接状态表,与OpenFlow交换机中的状态表保持同步,同时当收到OpenFlow交换机发送Packet_In消息时,该模块将会将包头信息和状态信息与连接状态表或者防火墙规则集进行对比,分配相应状态,同时下发变换流表到OpenFlow交换机中。
其中,连接状态表的建立首先定义两种消息结构让SDN控制器和OpenFlow交换机完成同步连接状态表的操作,当OpenFlow交换机处的连接状态表发生状态更新时,OpenFlow交换机给SDN控制器发送一个STATE_IN消息,通知SDN控制器对相应状态记录进行更新,而当SDN控制器处的连接状态表发生状态更新时,SDN控制器也向OpenFlow交换机发送一个OFP_STATE_MOD消息,命令OpenFlow交换机对相应状态记录进行更新;然后连接状态表用一个四元组组成(Match Field, State, Timeout, Packet_count), 其中Match Field 包括数据包的IP和协议类型, State表示连接状态,Timeout表示连接的超时时间,Packet_count 表示通过数据包的数目。
其中,变换流表的基本结构添加了一个状态属性(State),以及该状态对应的下一个状态属性(Next_State),并重新定义了数据包与表项记录匹配的过程,使匹配不仅仅依赖与数据包包头的信息,同时也取决于它的状态;匹配不成功则OpenFlow交换机将向SDN控制器发送一个Packet_IN请求消息,其中将会包含数据包包头的信息,也包含其状态信息,作为回应,SDN控制器会向OpenFlow交换机发送一个Flow_mod消息,向OpenFlow交换机添加相应记录;当匹配成功时,则执行一个的OFPIT_SET_STATE指令,该指令将连接状态表中状态赋值为变换流表中相应记录的下一个状态(Next_State),完成状态的转换;同时按照ACTION处理该数据包。
其中,当一个数据包来到OpenFlow交换机时,OpenFlow交换机的状态管理过程包括以下步骤:
步骤1-1:状态查询,这一查询是在连接状态表中进行的,把数据包的包头信息作为查询关键字(例如源IP地址),如果在连接状态表中没有关于该查询的记录,则在连接状态表中添加该项,将其状态置为DEFAULT;
步骤1-2:变换流表实现状态转换,当数据包经过连接状态表的匹配后,其数据包包头被加上状态信息,在查询变换流表的时,该状态信息也将作为一个关键字,如果找到记录,则执行数据包处理操作,同时将下一个状态信息写回到原来的连接状态表,对状态进行更新;
步骤1-3:状态更新,包含添加、删除和修改,通过OFPIT_SET_STATE指令完成状态更新。
请见图2,SDN防火墙状态检测系统接收到数据包后的处理过程包括以下步骤:
步骤2-1:数据包头部信息通过关键信息提取模块,提取数据包包头关键信息;
步骤2-2:将包头关键信息与状态表进行匹配,如果状态表中没有关于该项的记录,则添加记录,并将其状态置为DEFAULT;
步骤2-3:将匹配域信息与该状态信息一并发送,与变换流表进行匹配,若变换流表中没有相应记录,则发送Packet_In消息到SDN控制器端,SDN控制器端匹配连接状态表或者规则集下发Flow_Mod到OpenFlow交换机;
步骤2-4:按照SDN控制器指令更新变换流表同时执行相应数据转发操作;
步骤2- 5:将变换流表中的下一个状态的信息写回到状态表;
步骤2-6:OpenFlow交换机向SDN控制器发送State_In消息对SDN控制器中的状态表进行更新。
在SDN网络环境下,本发明定义数据包传送有两种方式:一种是流进状态检测防火墙的,比如TCP、UDP包等,还有一种是直接通过核心包过滤层进行通信的,比如ICMP包等。
当OpenFlow交换机(以下简称交换机)收到一个数据包的包头信息消息时,交换机将根据解析数据包包头信息得到原数据包包头信息中与匹配相关的关键信息,在变换流表(即shifted Flow Table)中没有该项记录的时候,交换机将数据包包头信息通过Packet_IN消息发给SDN控制器(以下简称控制器)。
(1)Packet_IN消息发送到控制器端后,如果判断数据包协议类型为UDP或者TCP,则该数据包将根据规则和状态表来判断是否允许被转发;如果允许,控制器即下发Flow_mod命令到交换机,添加相应表项,并执行Forward操作。通过交换机转发到目的主机。
(2)Packet_IN消息发送到控制器后,如果判断为ICMP的数据包,则该模块即根据其访问控制规则,对消息进行处理,决定是否允许数据包转发。
IP数据包是基于TCP、UDP、ICMP和IGMP四种协议,其中IGMP用来把一个UDP数据报多播到多个主机,系统不对此协议进行处理,IP数据包解析后得到分别基于TCP、UDP和ICMP协议的三种数据包信息。而这三种协议的工作原理和方式不尽相同,所以对不同的协议的数据包需要采用不同的方法进行处理。
下面分别介绍针对不同种类的数据包的检测流程。
请见图3,TCP数据包处理流程为:
TCP数据包状态检测模块的主要工作是创建一个TCP连接状态表,当数据包来到交换机时,该交换机的关键信息提取模块启动,根据交换机中的状态表(state Table) 和变换流表(Shifted Flow Table)的匹配情况,如果没有记录与之匹配,那么首先判断是否是SYN数据包,如果是SYN数据包,说明是新建连接,就与控制器中防火墙模块的规则集进行匹配,匹配成功后,向交换机中发送flow_mod消息,在变换流表中,添加记录,动作为forward, 分配下一个状态标志,交换机收到后,立即执行SET_STATE操作,即更新连接状态表(包括控制器中的连接状态表(state Table-C ,和交换机中的连接状态表(state Table-SW), 两者通过state-mod实现同步),进行合法性检测后,转发该数据包。
如果不是SYN 连接,说明可能是原有连接的一部分,不需要规则匹配,直接查询控制器连接状态表,如果存在,则下发Flow_mod消息,向交换机中变换流表添加记录,动作为forward, 分配下一个状态标志,交换机收到后,立即执行SET_STATE操作,即更新连接状态表(包括控制器中的连接状态表(state Table-C ,和交换机中的连接状态表(state Table-SW), 两者通过state-mod实现同步),进行合法性检测后,转发该数据包。
那么如果数据包可与交换机中状态表(state Table-SW) 和变换流表(Shifted Flow Table)都匹配,则数据包包头信息不发给控制器,直接由交换机处理。
请见图4,UDP数据包处理流程为:
UDP是一种面向无连接的协议,UDP数据包首部信息中不包含记录连接的相关标志位。通过UDP协议传输数据不需要实现建立连接,而是在网络路径中的每个中间节点对UDP数据包进行路由。
对于UDP 服务从状态防火墙动态打开端口并为其建立连接状态、交换数据到连接结束,关闭相应端口并删除其状态信息的这种完整的通信过程,本发明称之为一次虚连接。
当接收到一个UDP数据包时,根据从关键信息模块提取出来的关键信息是否存在于状态表(SW)中判断数据包的处理去向。若存在,就将状态表中对应的状态信息写入到数据包的包头信息;否则,将状态域设置为DEFAULT,并同步到控制器中的状态表。接下来查询是否匹配变换流表,若匹配,直接用SET_STATE操作改变状态表(state Table-SW)的状态值,同时控制器端状态表同步更新,转发数据包;否则,将包头信息发给控制器,查询控制器状态表,若不存在,发送DROP命令;否则,再查询规则集合,根据规则集合的要求执行ACTION。对虚连接状态检测流程如图4所示。
请见图5,ICMP数据包处理流程为:
与其他格式的数据包处理方式不同,当ICMP的第一个数据包发达到交换机中时,交换机的状态表的关于该数据包记录变为DEFAULT,接着其因为匹配不到交换机变换流表项,所以,包头信息被发到控制器,而控制器将查询到相关记录(因为交换机状态表与控制器的状态表同步),当该包不违反防火墙规则时,控制器即向交换机发送flow_mod 信息,在交换机变换流表中添加记录,将下一个状态标志置为NULL,转发该数据包的同时修改状态表关于该记录的状态,同步到控制器,控制器发现状态被置NULL后,即向交换机变换流表中添加STATE =NULL ,且Next_State =NULL的记录。当下一个数据包来到交换机的时候,可以匹配到状态表中相关项,其状态位为NULL,匹配交换机变换流表时,也可以匹配到相关项。本发明定义当60s内没有在这条连接记录上没有数据流动时,控制器即删掉相关项。
实例其中关键部分的具体实现说明如下:
1. TCP状态检测
对于如下所示的防火墙规则(内外网间的单向访问,TCP状态转换如图6所示)
规则序号 | 源地址 | 目的地址 | 协议类型 | 操作集合 |
0 | 10.0.0.1 | 10.0.0.3 | TCP | ALLOW |
1 | 10.0.0.3 | 10.0.0.1 | TCP | DENY |
当h1向h3发送SYN连接请求包时,控制器中连接状态表显示的是TCP“DEFAULT”状态,与规则进行匹配后,匹配成功即完成状态转换(转换为SEND_SYN状态),数据包通过;当h3 收到来自h1 的数据后发送SYN+ACK,控制器收到该包将状态表变为REC_SYN,同时转发该包;h1 收到h3 的SYN+ACK 后,给h3发送ACK的包,控制器检测到该包后,状态变为ESTABLISHED;此时通信连接建立,h1可以给h3发送数据,但反过来连接请求失败。
2. UDP状态检测(状态转换图如图7所示)
同样采用上例中的防火墙规则。当主机h1 向 h3 发送 SYN 连接请求包,由于在状态表中没有匹配项,故初始状态设置为DEFAULT;带有DEFAULT状态信息的数据包与防火墙规则进行匹配,若匹配成功即完成状态转换,允许数据包通过,状态转换为SHORT;当数据包数量到达20时,控制器将状态置为LONG , 表示这是一个长期连接;当网络中流量异常时,控制器将会下发变换流表项,把连接状态转换为TEMP状态,这是个临时状态,它会讲超时值设成20s,时间到了之后,就自动断开连接。
3. ICMP状态检测(状态转换图如图8所示)
访问控制规则定义仍与上例相同。首先主机h1 向 h3 发送 ICMP包,由于在状态表中没有匹配项,故在状态表中添加一条记录,并将初始状态设置为DEFAULT;接着携带者DEFAULT状态信息的数据包因匹配不到交换机中的变换流表项,所以包头信息被发到控制器,当该包不违反防火墙规则时,控制器即向交换机发送Flow_mod 信息,在交换机变换流表中添加记录,将下一个状态标志置为NULL,转发该数据包的同时修改状态表关于该记录的状态,同步到控制器。控制器发现状态被置NULL后,即向交换机变换流表中添加STATE =NULL ,且Next_State =NULL的记录;此时主机h1 向h2主机发送ICMP数据包,可以收到h3的回复,但反过来则显示超时。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
Claims (7)
1.一种基于OpenFlow协议的SDN防火墙状态检测方法,其特征在于:SDN防火墙模块分别部署在SDN控制器和OpenFlow交换机中,通过在SDN控制器中添加连接状态表,在OpenFlow交换机中添加连接状态表,并且修改原有OpenFlow流表格式,在其中添加相关状态字段,同时修改OpenFlow协议,添加新的消息State_In,保持SDN控制器和OpenFlow交换机中连接状态表保持一致,从而实现了SDN防火墙模块的部署。
2.一种利用权利要求1所述的基于OpenFlow协议的SDN防火墙状态检测方法进行SDN防火墙状态检测的系统,包括SDN控制器、OpenFlow交换机;其特征在于:还包括交换机中包头信息提取模块、状态表建立和更新模块、变换流表建立和更新模块、合法性检测模块和SDN控制器端命令下发连接状态表同步模块;
所述的交换机中包头信息提取模块用于提取数据包头部中关键信息,所述的关键信息包括数据包的源地址,源端口,目的地址,目的端口,序列号,确认号以及TCP标志位;
所述的状态表建立和更新模块用于在所述的OpenFlow交换机中建立连接状态表,并同时将连接状态表的更新同步到所述的SDN控制器中,该模块的连接状态表的更新将由变换流表通过set_state指令控制;
所述的变换流表建立和更新模块用于在由所述的SDN控制器下发指令在所述的OpenFlow交换机中建立变换流表,负责状态转换过程以及数据包转发操作;
所述的合法性检测模块用于负责判别来到所述的OpenFlow交换机数据包属于哪一次连接;
所述的SDN控制器端命令下发及连接状态表同步模块用于在所述的SDN控制器端建立连接状态表,与所述的OpenFlow交换机中的状态表保持同步,同时当收到所述的OpenFlow交换机发送Packet_In消息时,该模块将会将包头信息和状态信息与连接状态表或者防火墙规则集进行对比,分配相应状态,同时下发变换流表到所述的OpenFlow交换机中。
3.根据权利要求2所述的基于OpenFlow协议的SDN防火墙状态检测系统,其特征在于:所述的连接状态表的建立首先定义两种消息结构让SDN控制器和OpenFlow交换机完成同步连接状态表的操作,当OpenFlow交换机处的连接状态表发生状态更新时,OpenFlow交换机给SDN控制器发送一个STATE_IN消息,通知SDN控制器对相应状态记录进行更新;连接状态表用一个四元组组成(Match Field, State, Timeout, Packet_count), 其中Match Field 包括数据包的IP和协议类型, State表示连接状态,Timeout表示连接的超时时间,Packet_count 表示通过数据包的数目。
4.根据权利要求2所述的基于OpenFlow协议的SDN防火墙状态检测系统,其特征在于:所述的变换流表的基本结构添加了一个状态属性(State),以及该状态对应的下一个状态属性(Next_State),并重新定义了数据包与表项记录匹配的过程,使匹配不仅仅依赖与数据包包头的信息,同时也取决于它的状态;匹配不成功则OpenFlow交换机将向SDN控制器发送一个Packet_IN请求消息,其中将会包含数据包包头的信息,也包含其状态信息,作为回应,SDN控制器会向OpenFlow交换机发送一个Flow_mod消息,向OpenFlow交换机添加相应记录;当匹配成功时,则执行一个的OFPIT_SET_STATE指令,该指令将连接状态表中状态赋值为变换流表中相应记录的下一个状态(Next_State),完成状态的转换;同时按照ACTION处理该数据包。
5.根据权利要求2所述的基于OpenFlow协议的SDN防火墙状态检测系统,其特征在于:当一个数据包来到OpenFlow交换机时,OpenFlow交换机的状态管理过程包括以下步骤:
步骤1-1:状态查询,这一查询是在连接状态表中进行的,把数据包的包头信息作为查询关键字,如果在连接状态表中没有关于该查询的记录,则在连接状态表中添加该项,将其状态置为DEFAULT;
步骤1-2:变换流表实现状态转换,当数据包经过连接状态表的匹配后,其数据包包头被加上状态信息,在查询变换流表的时,该状态信息也将作为一个关键字,如果找到记录,则执行数据包处理操作,同时将下一个状态信息写回到原来的连接状态表,对状态进行更新;
步骤1-3:状态更新,包含添加、删除和修改,通过OFPIT_SET_STATE指令完成状态更新。
6.根据权利要求5所述的基于OpenFlow协议的SDN防火墙状态检测系统,其特征在于:步骤1-1中所述的查询关键字为源IP地址。
7.根据权利要求2、3、4或5所述的基于OpenFlow协议的SDN防火墙状态检测系统,其特征在于:所述的SDN防火墙状态检测系统接收到数据包后的处理过程包括以下步骤:
步骤2-1:数据包头部信息通过关键信息提取模块,提取数据包包头关键信息;
步骤2-2:将包头关键信息与状态表进行匹配,如果状态表中没有关于该项的记录,则添加记录,并将其状态置为DEFAULT;
步骤2-3:将匹配域信息与该状态信息一并发送,与变换流表进行匹配,若变换流表中没有相应记录,则发送Packet_In消息到SDN控制器端,SDN控制器端匹配连接状态表或者规则集下发Flow_Mod到OpenFlow交换机;
步骤2-4:按照SDN控制器指令更新变换流表同时执行相应数据转发操作;
步骤2- 5:将变换流表中的下一个状态的信息写回到状态表;
步骤2-6:OpenFlow交换机向SDN控制器发送State_In消息对SDN控制器中的状态表进行更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410393568.4A CN104104561B (zh) | 2014-08-11 | 2014-08-11 | 一种基于OpenFlow协议的SDN防火墙状态检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410393568.4A CN104104561B (zh) | 2014-08-11 | 2014-08-11 | 一种基于OpenFlow协议的SDN防火墙状态检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104104561A true CN104104561A (zh) | 2014-10-15 |
CN104104561B CN104104561B (zh) | 2017-09-22 |
Family
ID=51672381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410393568.4A Active CN104104561B (zh) | 2014-08-11 | 2014-08-11 | 一种基于OpenFlow协议的SDN防火墙状态检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104104561B (zh) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104580173A (zh) * | 2014-12-25 | 2015-04-29 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种sdn异常检测与阻截方法及系统 |
CN104836749A (zh) * | 2015-03-27 | 2015-08-12 | 清华大学 | 一种sdn数据平面带状态转发处理器 |
CN104836753A (zh) * | 2015-03-27 | 2015-08-12 | 清华大学 | Sdn数据平面带状态交换设备、系统及转发处理方法 |
CN104935604A (zh) * | 2015-06-29 | 2015-09-23 | 南京邮电大学 | 一种基于OpenFlow协议的SDN防火墙系统和方法 |
CN105224867A (zh) * | 2015-10-27 | 2016-01-06 | 成都卫士通信息产业股份有限公司 | 一种基于虚拟化环境下的主机安全加固方法 |
CN105306265A (zh) * | 2015-10-12 | 2016-02-03 | 烽火通信科技股份有限公司 | 一种针对交换机系统仿真验证的数据包追踪方法 |
CN105471907A (zh) * | 2015-12-31 | 2016-04-06 | 云南大学 | 一种基于Openflow的虚拟防火墙传输控制方法及系统 |
CN105656841A (zh) * | 2014-11-11 | 2016-06-08 | 杭州华三通信技术有限公司 | 一种软件定义网络中实现虚拟防火墙的方法和装置 |
CN105681305A (zh) * | 2016-01-15 | 2016-06-15 | 北京工业大学 | 一种sdn防火墙系统及实现方法 |
EP3076615A1 (fr) | 2015-04-01 | 2016-10-05 | B<>Com | Procédé de protection d'un réseau de communication, dispositif, équipement de controle et programme d'ordinateur associés |
CN106713307A (zh) * | 2016-12-20 | 2017-05-24 | 中国科学院信息工程研究所 | 一种检测sdn中流表一致性的方法和系统 |
CN106888165A (zh) * | 2015-12-15 | 2017-06-23 | 中国科学院沈阳自动化研究所 | 一种支持包头压缩的工业sdn网络数据传输方法与系统 |
CN107018084A (zh) * | 2017-04-12 | 2017-08-04 | 南京工程学院 | 基于sdn架构的ddos攻击防御网络安全系统和方法 |
WO2017152754A1 (zh) * | 2016-03-11 | 2017-09-14 | 中兴通讯股份有限公司 | 软件定义网路sdn安全通信的方法及装置 |
CN107579963A (zh) * | 2017-08-24 | 2018-01-12 | 南京南瑞集团公司 | 一种高性能的防火墙集群 |
CN107645479A (zh) * | 2016-07-22 | 2018-01-30 | 平安科技(深圳)有限公司 | 一种实现防火墙多活高可用性的方法及终端 |
WO2018095263A1 (zh) * | 2016-11-23 | 2018-05-31 | 中国银联股份有限公司 | 基于sdn网络的数据传输方法 |
CN108183917A (zh) * | 2018-01-16 | 2018-06-19 | 中国人民解放军国防科技大学 | 基于软件定义网络的DDoS攻击跨层协同检测方法 |
CN108282380A (zh) * | 2017-06-16 | 2018-07-13 | 新华三技术有限公司 | 一种合法性检测方法和装置 |
CN108494800A (zh) * | 2018-04-27 | 2018-09-04 | 广州西麦科技股份有限公司 | 一种数据包安全检测及处理方法、装置、p4交换机及介质 |
CN109347759A (zh) * | 2018-09-25 | 2019-02-15 | 中国电子科技集团公司第二十八研究所 | 基于sdn穿越内网的sip多媒体通信系统和方法 |
CN109525495A (zh) * | 2018-12-24 | 2019-03-26 | 广东浪潮大数据研究有限公司 | 一种数据处理装置、方法和fpga板卡 |
WO2019085923A1 (zh) * | 2017-10-31 | 2019-05-09 | 华为技术有限公司 | 数据处理方法、装置及计算机 |
CN109768931A (zh) * | 2017-11-09 | 2019-05-17 | 中国移动通信集团公司 | 处理数据包的方法、交换机、装置及计算机可读存储介质 |
CN110381025A (zh) * | 2019-06-14 | 2019-10-25 | 浙江大学 | 一种软件定义防火墙系统的实现方法 |
CN112769829A (zh) * | 2021-01-11 | 2021-05-07 | 科大讯飞股份有限公司 | 云物理机的部署方法、相关设备及可读存储介质 |
CN112968880A (zh) * | 2021-02-01 | 2021-06-15 | 浪潮思科网络科技有限公司 | 一种基于sdn架构的权限控制方法、系统 |
CN113259848A (zh) * | 2021-07-02 | 2021-08-13 | 之江实验室 | 一种基于sdn的地理标识网络构建方法 |
CN114827236A (zh) * | 2022-01-29 | 2022-07-29 | 中国银联股份有限公司 | 防火墙虚连接的处理方法、装置及计算机可读存储介质 |
CN115348065A (zh) * | 2022-07-29 | 2022-11-15 | 中国舰船研究设计中心 | 一种基于可编程数据平面的防火墙绕行冲突检测方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103346922A (zh) * | 2013-07-26 | 2013-10-09 | 电子科技大学 | 基于sdn的确定网络状态的控制器及其确定方法 |
CN103428771A (zh) * | 2013-09-05 | 2013-12-04 | 迈普通信技术股份有限公司 | 通信方法、软件定义网络sdn交换机及通信系统 |
US20140146674A1 (en) * | 2012-11-29 | 2014-05-29 | Futurewei Technologies, Inc. | Packet Prioritization in a Software-Defined Network Implementing OpenFlow |
US20140192646A1 (en) * | 2011-03-29 | 2014-07-10 | Nec Europe Ltd. | User traffic accountability under congestion in flow-based multi-layer switches |
-
2014
- 2014-08-11 CN CN201410393568.4A patent/CN104104561B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140192646A1 (en) * | 2011-03-29 | 2014-07-10 | Nec Europe Ltd. | User traffic accountability under congestion in flow-based multi-layer switches |
US20140146674A1 (en) * | 2012-11-29 | 2014-05-29 | Futurewei Technologies, Inc. | Packet Prioritization in a Software-Defined Network Implementing OpenFlow |
CN103346922A (zh) * | 2013-07-26 | 2013-10-09 | 电子科技大学 | 基于sdn的确定网络状态的控制器及其确定方法 |
CN103428771A (zh) * | 2013-09-05 | 2013-12-04 | 迈普通信技术股份有限公司 | 通信方法、软件定义网络sdn交换机及通信系统 |
Cited By (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105656841B (zh) * | 2014-11-11 | 2018-12-11 | 新华三技术有限公司 | 一种软件定义网络中实现虚拟防火墙的方法和装置 |
CN105656841A (zh) * | 2014-11-11 | 2016-06-08 | 杭州华三通信技术有限公司 | 一种软件定义网络中实现虚拟防火墙的方法和装置 |
CN104580173A (zh) * | 2014-12-25 | 2015-04-29 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种sdn异常检测与阻截方法及系统 |
CN104580173B (zh) * | 2014-12-25 | 2017-10-10 | 广东顺德中山大学卡内基梅隆大学国际联合研究院 | 一种sdn异常检测与阻截方法及系统 |
CN104836749A (zh) * | 2015-03-27 | 2015-08-12 | 清华大学 | 一种sdn数据平面带状态转发处理器 |
CN104836753A (zh) * | 2015-03-27 | 2015-08-12 | 清华大学 | Sdn数据平面带状态交换设备、系统及转发处理方法 |
CN104836753B (zh) * | 2015-03-27 | 2018-10-02 | 清华大学 | Sdn数据平面带状态交换设备、系统及转发处理方法 |
CN104836749B (zh) * | 2015-03-27 | 2018-10-30 | 清华大学 | 一种sdn数据平面带状态转发处理器 |
EP3076615A1 (fr) | 2015-04-01 | 2016-10-05 | B<>Com | Procédé de protection d'un réseau de communication, dispositif, équipement de controle et programme d'ordinateur associés |
CN104935604B (zh) * | 2015-06-29 | 2018-10-30 | 南京邮电大学 | 一种基于OpenFlow协议的SDN防火墙系统和方法 |
CN104935604A (zh) * | 2015-06-29 | 2015-09-23 | 南京邮电大学 | 一种基于OpenFlow协议的SDN防火墙系统和方法 |
CN105306265A (zh) * | 2015-10-12 | 2016-02-03 | 烽火通信科技股份有限公司 | 一种针对交换机系统仿真验证的数据包追踪方法 |
CN105306265B (zh) * | 2015-10-12 | 2019-01-04 | 烽火通信科技股份有限公司 | 一种针对交换机系统仿真验证的数据包追踪方法 |
CN105224867A (zh) * | 2015-10-27 | 2016-01-06 | 成都卫士通信息产业股份有限公司 | 一种基于虚拟化环境下的主机安全加固方法 |
CN106888165A (zh) * | 2015-12-15 | 2017-06-23 | 中国科学院沈阳自动化研究所 | 一种支持包头压缩的工业sdn网络数据传输方法与系统 |
CN105471907A (zh) * | 2015-12-31 | 2016-04-06 | 云南大学 | 一种基于Openflow的虚拟防火墙传输控制方法及系统 |
CN105471907B (zh) * | 2015-12-31 | 2018-09-18 | 云南大学 | 一种基于Openflow的虚拟防火墙传输控制方法及系统 |
CN105681305B (zh) * | 2016-01-15 | 2019-08-09 | 北京工业大学 | 一种sdn防火墙系统及实现方法 |
CN105681305A (zh) * | 2016-01-15 | 2016-06-15 | 北京工业大学 | 一种sdn防火墙系统及实现方法 |
WO2017152754A1 (zh) * | 2016-03-11 | 2017-09-14 | 中兴通讯股份有限公司 | 软件定义网路sdn安全通信的方法及装置 |
CN107181720A (zh) * | 2016-03-11 | 2017-09-19 | 中兴通讯股份有限公司 | 一种软件定义网路sdn安全通信的方法及装置 |
CN107645479A (zh) * | 2016-07-22 | 2018-01-30 | 平安科技(深圳)有限公司 | 一种实现防火墙多活高可用性的方法及终端 |
WO2018095263A1 (zh) * | 2016-11-23 | 2018-05-31 | 中国银联股份有限公司 | 基于sdn网络的数据传输方法 |
CN106713307A (zh) * | 2016-12-20 | 2017-05-24 | 中国科学院信息工程研究所 | 一种检测sdn中流表一致性的方法和系统 |
CN107018084A (zh) * | 2017-04-12 | 2017-08-04 | 南京工程学院 | 基于sdn架构的ddos攻击防御网络安全系统和方法 |
CN107018084B (zh) * | 2017-04-12 | 2020-10-27 | 南京工程学院 | 基于sdn架构的ddos攻击防御网络安全方法 |
CN108282380B (zh) * | 2017-06-16 | 2020-10-09 | 新华三技术有限公司 | 一种合法性检测方法和装置 |
CN108282380A (zh) * | 2017-06-16 | 2018-07-13 | 新华三技术有限公司 | 一种合法性检测方法和装置 |
CN107579963A (zh) * | 2017-08-24 | 2018-01-12 | 南京南瑞集团公司 | 一种高性能的防火墙集群 |
WO2019085923A1 (zh) * | 2017-10-31 | 2019-05-09 | 华为技术有限公司 | 数据处理方法、装置及计算机 |
US11509749B2 (en) | 2017-10-31 | 2022-11-22 | Huawei Technologies Co., Ltd. | Data processing method and apparatus, and computer |
CN109768931A (zh) * | 2017-11-09 | 2019-05-17 | 中国移动通信集团公司 | 处理数据包的方法、交换机、装置及计算机可读存储介质 |
CN109768931B (zh) * | 2017-11-09 | 2020-10-13 | 中国移动通信集团公司 | 处理数据包的方法、交换机、装置及计算机可读存储介质 |
CN108183917B (zh) * | 2018-01-16 | 2018-12-14 | 中国人民解放军国防科技大学 | 基于软件定义网络的DDoS攻击跨层协同检测方法 |
CN108183917A (zh) * | 2018-01-16 | 2018-06-19 | 中国人民解放军国防科技大学 | 基于软件定义网络的DDoS攻击跨层协同检测方法 |
CN108494800A (zh) * | 2018-04-27 | 2018-09-04 | 广州西麦科技股份有限公司 | 一种数据包安全检测及处理方法、装置、p4交换机及介质 |
CN109347759A (zh) * | 2018-09-25 | 2019-02-15 | 中国电子科技集团公司第二十八研究所 | 基于sdn穿越内网的sip多媒体通信系统和方法 |
CN109525495A (zh) * | 2018-12-24 | 2019-03-26 | 广东浪潮大数据研究有限公司 | 一种数据处理装置、方法和fpga板卡 |
CN109525495B (zh) * | 2018-12-24 | 2022-03-11 | 广东浪潮大数据研究有限公司 | 一种数据处理装置、方法和fpga板卡 |
CN110381025A (zh) * | 2019-06-14 | 2019-10-25 | 浙江大学 | 一种软件定义防火墙系统的实现方法 |
CN112769829B (zh) * | 2021-01-11 | 2022-10-04 | 科大讯飞股份有限公司 | 云物理机的部署方法、相关设备及可读存储介质 |
CN112769829A (zh) * | 2021-01-11 | 2021-05-07 | 科大讯飞股份有限公司 | 云物理机的部署方法、相关设备及可读存储介质 |
CN112968880A (zh) * | 2021-02-01 | 2021-06-15 | 浪潮思科网络科技有限公司 | 一种基于sdn架构的权限控制方法、系统 |
CN112968880B (zh) * | 2021-02-01 | 2022-07-12 | 浪潮思科网络科技有限公司 | 一种基于sdn架构的权限控制方法、系统 |
CN113259848A (zh) * | 2021-07-02 | 2021-08-13 | 之江实验室 | 一种基于sdn的地理标识网络构建方法 |
CN113259848B (zh) * | 2021-07-02 | 2021-10-29 | 之江实验室 | 一种基于sdn的地理标识网络构建方法 |
CN114827236A (zh) * | 2022-01-29 | 2022-07-29 | 中国银联股份有限公司 | 防火墙虚连接的处理方法、装置及计算机可读存储介质 |
CN114827236B (zh) * | 2022-01-29 | 2023-07-14 | 中国银联股份有限公司 | 防火墙虚连接的处理方法、装置及计算机可读存储介质 |
CN115348065A (zh) * | 2022-07-29 | 2022-11-15 | 中国舰船研究设计中心 | 一种基于可编程数据平面的防火墙绕行冲突检测方法 |
CN115348065B (zh) * | 2022-07-29 | 2024-04-12 | 中国舰船研究设计中心 | 一种基于可编程数据平面的防火墙绕行冲突检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104104561B (zh) | 2017-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104104561A (zh) | 一种基于OpenFlow协议的SDN防火墙状态检测方法及系统 | |
US9231868B2 (en) | Communication system, communication device, controller, and method and program for controlling forwarding path of packet flow | |
CN103621028B (zh) | 控制网络访问策略的计算机系统、控制器和方法 | |
CN101399749B (zh) | 一种报文过滤的方法、系统和设备 | |
CN101431449B (zh) | 一种网络流量清洗系统 | |
CN104506513B (zh) | 防火墙流表备份方法、防火墙及防火墙系统 | |
CN103532838B (zh) | 一种隔离网间实现数据交换的方法及系统 | |
CN106375384A (zh) | 一种虚拟网络环境中镜像网络流量的管理系统和控制方法 | |
CN100542171C (zh) | 一种移动IPv6数据穿越状态防火墙的方法 | |
CN102006307A (zh) | 一种基于应用代理的网管系统隔离控制装置 | |
CN101163088B (zh) | 组播数据的传输方法和设备 | |
CN103944828A (zh) | 一种协议报文的传输方法和设备 | |
CN105471907A (zh) | 一种基于Openflow的虚拟防火墙传输控制方法及系统 | |
CN101834783A (zh) | 一种报文转发方法、装置及网络设备 | |
CN102821099B (zh) | 报文转发方法、设备及系统 | |
CN106302371A (zh) | 一种基于用户业务系统的防火墙控制方法和系统 | |
CN102594834B (zh) | 网络攻击的防御方法及装置、网络设备 | |
CN104378657A (zh) | 一种基于代理与隔离的视频安全接入系统及其方法 | |
CN104993979A (zh) | 网络连接监测方法、终端设备及通信系统 | |
DE102011114272A1 (de) | Paketweiterleitungsfunktion eines Mobilitätsswitchs, der als Routed-SMLT-(RSMLT-)Knoten eingesetzt wird | |
WO2014129624A1 (ja) | 制御装置、通信システム、経路切替方法及びプログラム | |
CN106413127A (zh) | Relay设备连接远程网管服务器的方法、系统及Relay设备 | |
CN107888711B (zh) | 一种跨网段设备搜索及通讯方法 | |
CN101674235A (zh) | 数据传输方法和设备 | |
CN101753438B (zh) | 实现通道分离的路由器及其通道分离的传输方法 |
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 |