一种基于OPENFLOW协议的SDN防火墙状态检测方法及系统.pdf

上传人:32 文档编号:668873 上传时间:2018-03-02 格式:PDF 页数:17 大小:1.18MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410393568.4

申请日:

2014.08.11

公开号:

CN104104561A

公开日:

2014.10.15

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 12/26申请日:20140811|||公开

IPC分类号:

H04L12/26; H04L29/06

主分类号:

H04L12/26

申请人:

武汉大学

发明人:

王鹃; 王江; 陈诗雅; 焦虹阳; 康强龙

地址:

430072 湖北省武汉市武昌区珞珈山武汉大学

优先权:

专利代理机构:

武汉科皓知识产权代理事务所(特殊普通合伙) 42222

代理人:

薛玲

PDF下载: PDF下载
内容摘要

本发明放开了一种基于OpenFlow协议的SDN防火墙状态检测方法及系统,通过在OpenFlow交换机中增加状态表和状态转换表,记录数据流的状态及其变化信息。同时,在SDN控制器中也同样建立和维护一张状态转换表,以便实现控制器与交换机数据流状态的同步。此外,本发明提出了对原有OpenFlow流表格式的修改,在其中添加了相关状态字段,同时也修改了OpenFlow协议,添加了新的消息State_In,以便处理控制器与交换机之前的状态操作消息,保持控制器和交换机中连接状态表保持一致。本发明可有效实现更细粒度的访问控制。同时,通过Openflow交换机和SDN控制器的协同工作,完成了状态检测防火墙的部署,为SDN网络提供更加安全有效的服务。

权利要求书

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控制器中的状态表进行更新。

说明书

一种基于OpenFlow协议的SDN防火墙状态检测方法及系统
 
技术领域
本发明属于互联网技术领域,主要针对现有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所示)

规则序号源地址目的地址协议类型操作集合010.0.0.110.0.0.3TCPALLOW110.0.0.310.0.0.1TCPDENY

当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的回复,但反过来则显示超时。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

一种基于OPENFLOW协议的SDN防火墙状态检测方法及系统.pdf_第1页
第1页 / 共17页
一种基于OPENFLOW协议的SDN防火墙状态检测方法及系统.pdf_第2页
第2页 / 共17页
一种基于OPENFLOW协议的SDN防火墙状态检测方法及系统.pdf_第3页
第3页 / 共17页
点击查看更多>>
资源描述

《一种基于OPENFLOW协议的SDN防火墙状态检测方法及系统.pdf》由会员分享,可在线阅读,更多相关《一种基于OPENFLOW协议的SDN防火墙状态检测方法及系统.pdf(17页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104104561A43申请公布日20141015CN104104561A21申请号201410393568422申请日20140811H04L12/26200601H04L29/0620060171申请人武汉大学地址430072湖北省武汉市武昌区珞珈山武汉大学72发明人王鹃王江陈诗雅焦虹阳康强龙74专利代理机构武汉科皓知识产权代理事务所特殊普通合伙42222代理人薛玲54发明名称一种基于OPENFLOW协议的SDN防火墙状态检测方法及系统57摘要本发明放开了一种基于OPENFLOW协议的SDN防火墙状态检测方法及系统,通过在OPENFLOW交换机中增加状态表和状态转换表,记。

2、录数据流的状态及其变化信息。同时,在SDN控制器中也同样建立和维护一张状态转换表,以便实现控制器与交换机数据流状态的同步。此外,本发明提出了对原有OPENFLOW流表格式的修改,在其中添加了相关状态字段,同时也修改了OPENFLOW协议,添加了新的消息STATE_IN,以便处理控制器与交换机之前的状态操作消息,保持控制器和交换机中连接状态表保持一致。本发明可有效实现更细粒度的访问控制。同时,通过OPENFLOW交换机和SDN控制器的协同工作,完成了状态检测防火墙的部署,为SDN网络提供更加安全有效的服务。51INTCL权利要求书2页说明书8页附图6页19中华人民共和国国家知识产权局12发明专利。

3、申请权利要求书2页说明书8页附图6页10申请公布号CN104104561ACN104104561A1/2页21一种基于OPENFLOW协议的SDN防火墙状态检测方法,其特征在于SDN防火墙模块分别部署在SDN控制器和OPENFLOW交换机中,通过在SDN控制器中添加连接状态表,在OPENFLOW交换机中添加连接状态表,并且修改原有OPENFLOW流表格式,在其中添加相关状态字段,同时修改OPENFLOW协议,添加新的消息STATE_IN,保持SDN控制器和OPENFLOW交换机中连接状态表保持一致,从而实现了SDN防火墙模块的部署。2一种利用权利要求1所述的基于OPENFLOW协议的SDN防火。

4、墙状态检测方法进行SDN防火墙状态检测的系统,包括SDN控制器、OPENFLOW交换机;其特征在于还包括交换机中包头信息提取模块、状态表建立和更新模块、变换流表建立和更新模块、合法性检测模块和SDN控制器端命令下发连接状态表同步模块;所述的交换机中包头信息提取模块用于提取数据包头部中关键信息,所述的关键信息包括数据包的源地址,源端口,目的地址,目的端口,序列号,确认号以及TCP标志位;所述的状态表建立和更新模块用于在所述的OPENFLOW交换机中建立连接状态表,并同时将连接状态表的更新同步到所述的SDN控制器中,该模块的连接状态表的更新将由变换流表通过SET_STATE指令控制;所述的变换流表。

5、建立和更新模块用于在由所述的SDN控制器下发指令在所述的OPENFLOW交换机中建立变换流表,负责状态转换过程以及数据包转发操作;所述的合法性检测模块用于负责判别来到所述的OPENFLOW交换机数据包属于哪一次连接;所述的SDN控制器端命令下发及连接状态表同步模块用于在所述的SDN控制器端建立连接状态表,与所述的OPENFLOW交换机中的状态表保持同步,同时当收到所述的OPENFLOW交换机发送PACKET_IN消息时,该模块将会将包头信息和状态信息与连接状态表或者防火墙规则集进行对比,分配相应状态,同时下发变换流表到所述的OPENFLOW交换机中。3根据权利要求2所述的基于OPENFLOW协。

6、议的SDN防火墙状态检测系统,其特征在于所述的连接状态表的建立首先定义两种消息结构让SDN控制器和OPENFLOW交换机完成同步连接状态表的操作,当OPENFLOW交换机处的连接状态表发生状态更新时,OPENFLOW交换机给SDN控制器发送一个STATE_IN消息,通知SDN控制器对相应状态记录进行更新;连接状态表用一个四元组组成MATCHFIELD,STATE,TIMEOUT,PACKET_COUNT,其中MATCHFIELD包括数据包的IP和协议类型,STATE表示连接状态,TIMEOUT表示连接的超时时间,PACKET_COUNT表示通过数据包的数目。4根据权利要求2所述的基于OPENF。

7、LOW协议的SDN防火墙状态检测系统,其特征在于所述的变换流表的基本结构添加了一个状态属性STATE,以及该状态对应的下一个状态属性NEXT_STATE,并重新定义了数据包与表项记录匹配的过程,使匹配不仅仅依赖与数据包包头的信息,同时也取决于它的状态;匹配不成功则OPENFLOW交换机将向SDN控制器发送一个PACKET_IN请求消息,其中将会包含数据包包头的信息,也包含其状态信息,作为回应,SDN控制器会向OPENFLOW交换机发送一个FLOW_MOD消息,向OPENFLOW交换机添加相应记录;当匹配成功时,则执行一个的OFPIT_SET_STATE指令,该指令将连接状态表中状态赋值为变换流。

8、表中相应记录的下一个状态NEXT_STATE,完成状态的转换;同时按照ACTION处理该数据包。5根据权利要求2所述的基于OPENFLOW协议的SDN防火墙状态检测系统,其特征在权利要求书CN104104561A2/2页3于当一个数据包来到OPENFLOW交换机时,OPENFLOW交换机的状态管理过程包括以下步骤步骤11状态查询,这一查询是在连接状态表中进行的,把数据包的包头信息作为查询关键字,如果在连接状态表中没有关于该查询的记录,则在连接状态表中添加该项,将其状态置为DEFAULT;步骤12变换流表实现状态转换,当数据包经过连接状态表的匹配后,其数据包包头被加上状态信息,在查询变换流表的时。

9、,该状态信息也将作为一个关键字,如果找到记录,则执行数据包处理操作,同时将下一个状态信息写回到原来的连接状态表,对状态进行更新;步骤13状态更新,包含添加、删除和修改,通过OFPIT_SET_STATE指令完成状态更新。6根据权利要求5所述的基于OPENFLOW协议的SDN防火墙状态检测系统,其特征在于步骤11中所述的查询关键字为源IP地址。7根据权利要求2、3、4或5所述的基于OPENFLOW协议的SDN防火墙状态检测系统,其特征在于所述的SDN防火墙状态检测系统接收到数据包后的处理过程包括以下步骤步骤21数据包头部信息通过关键信息提取模块,提取数据包包头关键信息;步骤22将包头关键信息与状。

10、态表进行匹配,如果状态表中没有关于该项的记录,则添加记录,并将其状态置为DEFAULT;步骤23将匹配域信息与该状态信息一并发送,与变换流表进行匹配,若变换流表中没有相应记录,则发送PACKET_IN消息到SDN控制器端,SDN控制器端匹配连接状态表或者规则集下发FLOW_MOD到OPENFLOW交换机;步骤24按照SDN控制器指令更新变换流表同时执行相应数据转发操作;步骤25将变换流表中的下一个状态的信息写回到状态表;步骤26OPENFLOW交换机向SDN控制器发送STATE_IN消息对SDN控制器中的状态表进行更新。权利要求书CN104104561A1/8页4一种基于OPENFLOW协议的。

11、SDN防火墙状态检测方法及系统0001技术领域0002本发明属于互联网技术领域,主要针对现有OPENFLOW协议的无状态性而导致的SDN防火墙无法进行状态检测问题,提出了一种基于OPENFLOW协议的SDN防火墙状态检测方法及系统。0003背景技术0004软件定义网络(SOFTWAREDENEDNETWORK,SDN),是一种新型网络创新架构,其核心技术OPENFLOW通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,为核心网络及应用的创新提供了良好的平台。控制层通过OPENFLOW协议这个标准接口对OPENFLOW交换机中的流表进行控制,从而实现对整个网络进行集中控制。00。

12、05然而,相对于传统网络,SDN在给网络管理人员带了更多便捷,更多控制能力的同时,作为一种崭新的网络体系架构,其防火墙技术解决方案并不完善,存在着许多安全威胁。目前,部分SDN控制器具有防火墙应用模块,但是其功能只是简单的包过滤,根据一个网流的首个数据包进行安全处理,实现了简单的访问控制。然而,这种简单的访问控制,无法监测SDN数据流的状态。0006目前,SHINS等人提出了一个在SDN架构上开发网络安全应用的开发环境FRESCO,FRESCO本身作为SDN应用层的一个应用,运行在上面所述的安全加固的控制层操作系统增强的NOX上,允许安全人员创建新的模块化库,整合和扩展安全功能,从而使用OPE。

13、NFLOW控制器和硬件进行控制和管理流量;PORRASYP等人也提出一种加固的控制平面操作系统FORTNOX。FORTNOX通过扩展开源的NOX操作系统的SEND_OPENFLOW_COMMAND模块,增加了策略冲突消解功能;这些方法都一定程度地增强了防火墙的安全性,无论是在流量清洗与控制,策略冲突的消解。但是这些方法并未在应用层协议上实现更加细粒度的访问控制。DIVJYOTSETHI等人也提出了模型检测控制器的抽象概念,其论文中提到了学习型交换机,和一个简单状态防火墙的实现。该防火墙通过两个交换机协同工作,实现了阻止外网和内网主动通信的功能;但是这种方法并未将控制器的集中控制性体现出来,而且。

14、也并未抽取应用层协议的状态信息,虽然论文通过巧妙的设计思路实现了简单的内网与外网单向连接,然后这种设计思路并不是通过抽取状态信息实现的。0007发明内容0008为了解决上述技术问题,本发明从SDN架构特点出发,通过在SDN控制器和OPENFLOW交换机中增加状态表和变换流表,提出了一种基于OPENFLOW协议的SDN防火墙状态检测方法及系统。说明书CN104104561A2/8页50009本发明的方法所采用的技术方案是一种基于OPENFLOW协议的SDN防火墙状态检测方法,其特征在于SDN防火墙模块分别部署在SDN控制器和OPENFLOW交换机中,通过在SDN控制器中添加连接状态表,在OPEN。

15、FLOW交换机中添加连接状态表,并且修改原有OPENFLOW流表格式,在其中添加相关状态字段,同时修改OPENFLOW协议,添加新的消息STATE_IN,保持SDN控制器和OPENFLOW交换机中连接状态表保持一致,从而实现了SDN防火墙模块的部署。0010本发明的系统所采用的技术方案是一种基于OPENFLOW协议的SDN防火墙状态检测系统,包括SDN控制器、OPENFLOW交换机;其特征在于还包括交换机中包头信息提取模块、状态表建立和更新模块、变换流表(SHIFTEDFLOWTABLE)建立和更新模块、合法性检测模块和SDN控制器端命令下发及连接状态表同步模块;所述的交换机中包头信息提取模块。

16、用于提取数据包头部中关键信息,所述的关键信息包括数据包的源地址,源端口,目的地址,目的端口,序列号,确认号以及TCP标志位;所述的状态表建立和更新模块用于在所述的OPENFLOW交换机中建立连接状态表,并同时将连接状态表的更新同步到所述的SDN控制器中,该模块的连接状态表的更新将由变换流表通过SET_STATE指令控制;所述的变换流表建立和更新模块用于在由所述的SDN控制器下发指令在所述的OPENFLOW交换机中建立变换流表,负责状态转换过程以及数据包转发操作;所述的合法性检测模块用于负责判别来到所述的OPENFLOW交换机数据包属于哪一次连接;所述的SDN控制器端命令下发及连接状态表同步模块。

17、用于在所述的SDN控制器端建立连接状态表,与所述的OPENFLOW交换机中的状态表保持同步,同时当收到所述的OPENFLOW交换机发送PACKET_IN消息时,该模块将会将包头信息和状态信息与连接状态表或者防火墙规则集进行对比,分配相应状态,同时下发变换流表到所述的OPENFLOW交换机中。0011作为优选,所述的连接状态表的建立首先定义两种消息结构让SDN控制器和OPENFLOW交换机完成同步连接状态表的操作,当OPENFLOW交换机处的连接状态表发生状态更新时,OPENFLOW交换机给SDN控制器发送一个STATE_IN消息,通知SDN控制器对相应状态记录进行更新,而当SDN控制器处的连接。

18、状态表发生状态更新时,SDN控制器也向OPENFLOW交换机发送一个OFP_STATEMOD消息,命令OPENFLOW交换机对相应状态记录进行更新;然后连接状态表用一个四元组组成MATCHFIELD,STATE,TIMEOUT,PACKET_COUNT,其中MATCHFIELD包括数据包的IP源地址,目的地址,但是针对连接,本发明在匹配连接状态表的时候不区分和协议类型包括TCP/UDP,ICMP等等,STATE表示连接状态,TIMEOUT表示连接的超时时间,PACKET_COUNT表示通过数据包的数目。0012作为优选,为了实现连接状态表的更新、维护以及管理,使数据包转发过程中带上有状态的特征。

19、,本发明对OPENFLOW协议定义的变换流表的基本结构添加了一个状态属性STATE,以及该状态对应的下一个状态属性NEXT_STATE,并重新定义了数据包与表项记录匹配的过程,使匹配不仅仅依赖与数据包包头的信息,同时也取决于它的状态当数据包经过连接状态表的匹配后,会在其包头信息中添加该状态信息;匹配不成功则OPENFLOW交换机将向SDN控制器发送一个PACKET_IN请求消息,其中将会包含数据包包头的信息,也包含其状态信息,作为回应,SDN控制器会向OPENFLOW交换机发送一个FLOW_MOD说明书CN104104561A3/8页6消息,向OPENFLOW交换机添加相应记录;当匹配成功时,。

20、则执行一个的OFPIT_SET_STATE指令,该指令将连接状态表中状态赋值为变换流表中相应记录的下一个状态NEXT_STATE,完成状态的转换;同时按照ACTION处理该数据包。0013作为优选,当一个数据包来到OPENFLOW交换机时,OPENFLOW交换机的状态管理过程包括以下步骤步骤11状态查询,这一查询是在连接状态表中进行的,把数据包的包头信息作为查询关键字,如果在连接状态表中没有关于该查询的记录,则在连接状态表中添加该项,将其状态置为DEFAULT;步骤12变换流表实现状态转换,当数据包经过连接状态表的匹配后,其数据包包头被加上状态信息,在查询变换流表的时,该状态信息也将作为一个关。

21、键字,如果找到记录,则执行数据包处理操作,同时将下一个状态信息写回到原来的连接状态表,对状态进行更新;步骤13状态更新,包含添加、删除和修改,通过OFPIT_SET_STATE指令完成状态更新,或使用STATE_MOD指令完成状态更新。0014作为优选,步骤11中所述的查询关键字为源IP地址。0015作为优选,所述的SDN防火墙状态检测系统接收到数据包后的处理过程包括以下步骤步骤21数据包头部信息通过关键信息提取模块,提取数据包包头关键信息;步骤22将包头关键信息与状态表进行匹配,如果状态表中没有关于该项的记录,则添加记录,并将其状态置为DEFAULT;步骤23将匹配域信息与该状态信息一并发送。

22、,与变换流表SHIFTEDFLOWTABLE进行匹配,若变换流表中没有相应记录,则发送PACKET_IN消息到SDN控制器端,SDN控制器端匹配连接状态表或者规则集下发FLOW_MOD到OPENFLOW交换机;步骤24按照SDN控制器指令更新变换流表同时执行相应数据转发操作;步骤25将变换流表中的下一个状态的信息写回到状态表;步骤26OPENFLOW交换机向SDN控制器发送STATE_IN消息对SDN控制器中的状态表进行更新。0016本发明与SHINS等人的工作不同,通过在SDN控制器和OPENFLOW交换机通过定义两种表(连接状态表和变换流表)来完成状态检测与转换流程。对OPENFLOW交换。

23、机中定义的流表的结构进行修改,添加状态项,使得流表的转发和状态关联起来,并且完成了对状态表的维护和更新。采用OPENFLOW交换机和SDN控制器协同工作的方式来实现对全局网络通信状态的检测,保证了SDN控制器的集中化控制,同时用SDN控制器与OPENFLOW交换机之间较小的通信量实现了SDN控制器对全局网络通信状态的掌握与控制。此外,由于连接状态表建立在OPENFLOW交换机和SDN控制器中,本发明修改了消息机制即时同步两表中的内容,使得两张表中关于相同连接的状态保持高度一致。0017本发明的有益创新为1提出并设计了一种SDN防火墙状态检测方法,SDN网络架构的防火墙大多都是传统的包过滤防火墙。

24、,没有状态检测功能。要在SDN架构下实现状态检测防火墙的方法是多种多样的,而本发明用交换机和控制器协同工作的方式来实现对全局网络通信状态的检测,说明书CN104104561A4/8页7这种设计方案是比较高效且不违背SDN架构设计宗旨和初衷的,本发明的设计和实现方法保证了控制器的控制集中化不受影响,同时用控制器与交换机之间较小的通信量实现了控制器对全局网络通信状态的掌握与控制。00182现有OPENFLOW流表是无状态的,因为无法完成对网络通信状态进行检测的功能,带来了很多安全威胁,如防御DDOS攻击困难等。本发明对OPENFLOW协议中定义的流表的基本结构进行了修改,添加了相关状态项,使得数据。

25、流转发不再与状态无关,完成了对状态表的维护与更新的功能。0019附图说明0020图1是本发明实施例的系统架构示意图。0021图2是本发明实施例的系统收到数据包时处理的流程图。0022图3是本发明实施例的TCP数据包处理流程图。0023图4是本发明实施例的UDP对虚连接状态检测流程图。0024图5是本发明实施例的ICMP数据包处理流程图。0025图6是本发明实施例的TCP状态转换图。0026图7是本发明实施例的UDP状态转换图。0027图8是本发明实施例的ICMP状态转换图。0028具体实施方式0029为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应。

26、当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。0030本发明的方法所采用的技术方案是一种基于OPENFLOW协议的SDN防火墙状态检测方法,SDN防火墙模块分别部署在SDN控制器和OPENFLOW交换机中,通过在SDN控制器中添加连接状态表,在OPENFLOW交换机中添加连接状态表,并且修改原有OPENFLOW流表格式,在其中添加相关状态字段,同时修改OPENFLOW协议,添加新的消息STATE_IN,保持SDN控制器和OPENFLOW交换机中连接状态表保持一致,从而实现了SDN防火墙模块的部署。0031请见图1,本发明的系统所采用的技术方案是一种基于OPENFLOW。

27、协议的SDN防火墙状态检测系统,包括SDN控制器、OPENFLOW交换机、交换机中包头信息提取模块、状态表建立和更新模块、变换流表建立和更新模块、合法性检测模块和SDN控制器端命令下发及连接状态表同步模块;交换机中包头信息提取模块用于提取数据包头部中关键信息,关键信息包括数据包的源地址,源端口,目的地址,目的端口,序列号,确认号以及TCP标志位;状态表建立和更新模块用于在OPENFLOW交换机中建立连接状态表,并同时将连接状态表的更新同步到SDN控制器中,该模块的连接状态表的更新将由变换流表通过SET_STATE指令控制;变换流表建立和更新模块用于在由SDN控制器下发指令在OPENFLOW交换。

28、机中建立变换流表,负责状态转换过程以及数据包转发操作;合法性检测模块用于负责判别来到OPENFLOW交换机数据包属于哪一次连接;SDN控制器端命令下发及连接状态表同步模块用说明书CN104104561A5/8页8于在SDN控制器端建立连接状态表,与OPENFLOW交换机中的状态表保持同步,同时当收到OPENFLOW交换机发送PACKET_IN消息时,该模块将会将包头信息和状态信息与连接状态表或者防火墙规则集进行对比,分配相应状态,同时下发变换流表到OPENFLOW交换机中。0032其中,连接状态表的建立首先定义两种消息结构让SDN控制器和OPENFLOW交换机完成同步连接状态表的操作,当OPE。

29、NFLOW交换机处的连接状态表发生状态更新时,OPENFLOW交换机给SDN控制器发送一个STATE_IN消息,通知SDN控制器对相应状态记录进行更新,而当SDN控制器处的连接状态表发生状态更新时,SDN控制器也向OPENFLOW交换机发送一个OFP_STATEMOD消息,命令OPENFLOW交换机对相应状态记录进行更新;然后连接状态表用一个四元组组成MATCHFIELD,STATE,TIMEOUT,PACKET_COUNT,其中MATCHFIELD包括数据包的IP和协议类型,STATE表示连接状态,TIMEOUT表示连接的超时时间,PACKET_COUNT表示通过数据包的数目。0033其中,。

30、变换流表的基本结构添加了一个状态属性STATE,以及该状态对应的下一个状态属性NEXT_STATE,并重新定义了数据包与表项记录匹配的过程,使匹配不仅仅依赖与数据包包头的信息,同时也取决于它的状态;匹配不成功则OPENFLOW交换机将向SDN控制器发送一个PACKET_IN请求消息,其中将会包含数据包包头的信息,也包含其状态信息,作为回应,SDN控制器会向OPENFLOW交换机发送一个FLOW_MOD消息,向OPENFLOW交换机添加相应记录;当匹配成功时,则执行一个的OFPIT_SET_STATE指令,该指令将连接状态表中状态赋值为变换流表中相应记录的下一个状态NEXT_STATE,完成状态。

31、的转换;同时按照ACTION处理该数据包。0034其中,当一个数据包来到OPENFLOW交换机时,OPENFLOW交换机的状态管理过程包括以下步骤步骤11状态查询,这一查询是在连接状态表中进行的,把数据包的包头信息作为查询关键字(例如源IP地址),如果在连接状态表中没有关于该查询的记录,则在连接状态表中添加该项,将其状态置为DEFAULT;步骤12变换流表实现状态转换,当数据包经过连接状态表的匹配后,其数据包包头被加上状态信息,在查询变换流表的时,该状态信息也将作为一个关键字,如果找到记录,则执行数据包处理操作,同时将下一个状态信息写回到原来的连接状态表,对状态进行更新;步骤13状态更新,包含。

32、添加、删除和修改,通过OFPIT_SET_STATE指令完成状态更新。0035请见图2,SDN防火墙状态检测系统接收到数据包后的处理过程包括以下步骤步骤21数据包头部信息通过关键信息提取模块,提取数据包包头关键信息;步骤22将包头关键信息与状态表进行匹配,如果状态表中没有关于该项的记录,则添加记录,并将其状态置为DEFAULT;步骤23将匹配域信息与该状态信息一并发送,与变换流表进行匹配,若变换流表中没有相应记录,则发送PACKET_IN消息到SDN控制器端,SDN控制器端匹配连接状态表或者规则集下发FLOW_MOD到OPENFLOW交换机;步骤24按照SDN控制器指令更新变换流表同时执行相应。

33、数据转发操作;步骤25将变换流表中的下一个状态的信息写回到状态表;说明书CN104104561A6/8页9步骤26OPENFLOW交换机向SDN控制器发送STATE_IN消息对SDN控制器中的状态表进行更新。0036在SDN网络环境下,本发明定义数据包传送有两种方式一种是流进状态检测防火墙的,比如TCP、UDP包等,还有一种是直接通过核心包过滤层进行通信的,比如ICMP包等。0037当OPENFLOW交换机(以下简称交换机)收到一个数据包的包头信息消息时,交换机将根据解析数据包包头信息得到原数据包包头信息中与匹配相关的关键信息,在变换流表即SHIFTEDFLOWTABLE中没有该项记录的时候,。

34、交换机将数据包包头信息通过PACKET_IN消息发给SDN控制器(以下简称控制器)。0038(1)PACKET_IN消息发送到控制器端后,如果判断数据包协议类型为UDP或者TCP,则该数据包将根据规则和状态表来判断是否允许被转发;如果允许,控制器即下发FLOW_MOD命令到交换机,添加相应表项,并执行FORWARD操作。通过交换机转发到目的主机。0039(2)PACKET_IN消息发送到控制器后,如果判断为ICMP的数据包,则该模块即根据其访问控制规则,对消息进行处理,决定是否允许数据包转发。0040IP数据包是基于TCP、UDP、ICMP和IGMP四种协议,其中IGMP用来把一个UDP数据报。

35、多播到多个主机,系统不对此协议进行处理,IP数据包解析后得到分别基于TCP、UDP和ICMP协议的三种数据包信息。而这三种协议的工作原理和方式不尽相同,所以对不同的协议的数据包需要采用不同的方法进行处理。0041下面分别介绍针对不同种类的数据包的检测流程。0042请见图3,TCP数据包处理流程为TCP数据包状态检测模块的主要工作是创建一个TCP连接状态表,当数据包来到交换机时,该交换机的关键信息提取模块启动,根据交换机中的状态表STATETABLE和变换流表SHIFTEDFLOWTABLE的匹配情况,如果没有记录与之匹配,那么首先判断是否是SYN数据包,如果是SYN数据包,说明是新建连接,就与。

36、控制器中防火墙模块的规则集进行匹配,匹配成功后,向交换机中发送FLOW_MOD消息,在变换流表中,添加记录,动作为FORWARD,分配下一个状态标志,交换机收到后,立即执行SET_STATE操作,即更新连接状态表包括控制器中的连接状态表STATETABLEC,和交换机中的连接状态表STATETABLESW,两者通过STATEMOD实现同步,进行合法性检测后,转发该数据包。0043如果不是SYN连接,说明可能是原有连接的一部分,不需要规则匹配,直接查询控制器连接状态表,如果存在,则下发FLOW_MOD消息,向交换机中变换流表添加记录,动作为FORWARD,分配下一个状态标志,交换机收到后,立即执。

37、行SET_STATE操作,即更新连接状态表包括控制器中的连接状态表STATETABLEC,和交换机中的连接状态表STATETABLESW,两者通过STATEMOD实现同步,进行合法性检测后,转发该数据包。0044那么如果数据包可与交换机中状态表STATETABLESW和变换流表SHIFTEDFLOWTABLE都匹配,则数据包包头信息不发给控制器,直接由交换机处理。0045请见图4,UDP数据包处理流程为UDP是一种面向无连接的协议,UDP数据包首部信息中不包含记录连接的相关标志位。通过UDP协议传输数据不需要实现建立连接,而是在网络路径中的每个中间节点对UDP数据包进行路由。说明书CN1041。

38、04561A7/8页100046对于UDP服务从状态防火墙动态打开端口并为其建立连接状态、交换数据到连接结束,关闭相应端口并删除其状态信息的这种完整的通信过程,本发明称之为一次虚连接。0047当接收到一个UDP数据包时,根据从关键信息模块提取出来的关键信息是否存在于状态表(SW)中判断数据包的处理去向。若存在,就将状态表中对应的状态信息写入到数据包的包头信息;否则,将状态域设置为DEFAULT,并同步到控制器中的状态表。接下来查询是否匹配变换流表,若匹配,直接用SET_STATE操作改变状态表STATETABLESW的状态值,同时控制器端状态表同步更新,转发数据包;否则,将包头信息发给控制器,。

39、查询控制器状态表,若不存在,发送DROP命令;否则,再查询规则集合,根据规则集合的要求执行ACTION。对虚连接状态检测流程如图4所示。0048请见图5,ICMP数据包处理流程为与其他格式的数据包处理方式不同,当ICMP的第一个数据包发达到交换机中时,交换机的状态表的关于该数据包记录变为DEFAULT,接着其因为匹配不到交换机变换流表项,所以,包头信息被发到控制器,而控制器将查询到相关记录因为交换机状态表与控制器的状态表同步,当该包不违反防火墙规则时,控制器即向交换机发送FLOW_MOD信息,在交换机变换流表中添加记录,将下一个状态标志置为NULL,转发该数据包的同时修改状态表关于该记录的状态。

40、,同步到控制器,控制器发现状态被置NULL后,即向交换机变换流表中添加STATENULL,且NEXT_STATENULL的记录。当下一个数据包来到交换机的时候,可以匹配到状态表中相关项,其状态位为NULL,匹配交换机变换流表时,也可以匹配到相关项。本发明定义当60S内没有在这条连接记录上没有数据流动时,控制器即删掉相关项。0049实例其中关键部分的具体实现说明如下1TCP状态检测对于如下所示的防火墙规则(内外网间的单向访问,TCP状态转换如图6所示)规则序号源地址目的地址协议类型操作集合01000110003TCPALLOW11000310001TCPDENY当H1向H3发送SYN连接请求包时。

41、,控制器中连接状态表显示的是TCP“DEFAULT”状态,与规则进行匹配后,匹配成功即完成状态转换(转换为SEND_SYN状态),数据包通过;当H3收到来自H1的数据后发送SYNACK,控制器收到该包将状态表变为REC_SYN,同时转发该包;H1收到H3的SYNACK后,给H3发送ACK的包,控制器检测到该包后,状态变为ESTABLISHED;此时通信连接建立,H1可以给H3发送数据,但反过来连接请求失败。00502UDP状态检测(状态转换图如图7所示)同样采用上例中的防火墙规则。当主机H1向H3发送SYN连接请求包,由于在状态表中没有匹配项,故初始状态设置为DEFAULT;带有DEFAULT。

42、状态信息的数据包与防火墙规则进行匹配,若匹配成功即完成状态转换,允许数据包通过,状态转换为SHORT;当数据包数量到达20时,控制器将状态置为LONG,表示这是一个长期连接;当网络中流量异常时,控制器将会下发变换流表项,把连接状态转换为TEMP状态,这是个临时状态,它会讲超时值设成20S,时间到了之后,就自动断开连接。00513ICMP状态检测(状态转换图如图8所示)访问控制规则定义仍与上例相同。首先主机H1向H3发送ICMP包,由于在状态表中没有匹配项,故在状态表中添加一条记录,并将初始状态设置为DEFAULT;接着携带者说明书CN104104561A108/8页11DEFAULT状态信息的。

43、数据包因匹配不到交换机中的变换流表项,所以包头信息被发到控制器,当该包不违反防火墙规则时,控制器即向交换机发送FLOW_MOD信息,在交换机变换流表中添加记录,将下一个状态标志置为NULL,转发该数据包的同时修改状态表关于该记录的状态,同步到控制器。控制器发现状态被置NULL后,即向交换机变换流表中添加STATENULL,且NEXT_STATENULL的记录;此时主机H1向H2主机发送ICMP数据包,可以收到H3的回复,但反过来则显示超时。0052应当理解的是,本说明书未详细阐述的部分均属于现有技术。0053应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。说明书CN104104561A111/6页12图1图2说明书附图CN104104561A122/6页13图3说明书附图CN104104561A133/6页14图4说明书附图CN104104561A144/6页15图5说明书附图CN104104561A155/6页16图6图7说明书附图CN104104561A166/6页17图8说明书附图CN104104561A17。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1