一种基于OpenFlow协议的SDN防火墙状态检测方法及系统的制作方法

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

【技术领域】
[0002] 本发明属于互联网【技术领域】,主要针对现有OpenFlow协议的无状态性而导致的 SDN防火墙无法进行状态检测问题,提出了一种基于OpenFlow协议的SDN防火墙状态检测 方法及系统。
[0003]

【背景技术】
[0004] 软件定义网络(Software Defined Network, SDN ),是一种新型网络创新架构,其 核心技术OpenFlow通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵 活控制,为核心网络及应用的创新提供了良好的平台。控制层通过OpenFlow协议这个标准 接口对OpenFlow交换机中的流表进行控制,从而实现对整个网络进行集中控制。
[0005] 然而,相对于传统网络,SDN在给网络管理人员带了更多便捷,更多控制能力的同 时,作为一种崭新的网络体系架构,其防火墙技术解决方案并不完善,存在着许多安全威 胁。目前,部分SDN控制器具有防火墙应用模块,但是其功能只是简单的包过滤,根据一个 网流的首个数据包进行安全处理,实现了简单的访问控制。然而,这种简单的访问控制,无 法监测SDN数据流的状态。
[0006] 目前,Shin S等人提出了一个在SDN架构上开发网络安全应用的开发环境 FRESCO, FRESCO本身作为SDN应用层的一个应用,运行在上面所述的安全加固的控制层操 作系统(增强的Ν0Χ)上,允许安全人员创建新的模块化库,整合和扩展安全功能,从而使用 OpenFlow控制器和硬件进行控制和管理流量;Porrasy P等人也提出一种加固的控制平面 操作系统FortNOX。FortNOX通过扩展开源的Ν0Χ操作系统的Send_0penflow_Command模 块,增加了策略冲突消解功能;这些方法都一定程度地增强了防火墙的安全性,无论是在流 量清洗与控制,策略冲突的消解。但是这些方法并未在应用层协议上实现更加细粒度的访 问控制。Divjyot Sethi等人也提出了模型检测控制器的抽象概念,其论文中提到了学习型 交换机,和一个简单状态防火墙的实现。该防火墙通过两个交换机协同工作,实现了阻止外 网和内网主动通信的功能;但是这种方法并未将控制器的集中控制性体现出来,而且也并 未抽取应用层协议的状态信息,虽然论文通过巧妙的设计思路实现了简单的内网与外网单 向连接,然后这种设计思路并不是通过抽取状态信息实现的。
[0007]


【发明内容】

[0008] 为了解决上述技术问题,本发明从SDN架构特点出发,通过在SDN控制器和 OpenFlow交换机中增加状态表和变换流表,提出了一种基于OpenFlow协议的SDN防火墙状 态检测方法及系统。
[0009] 本发明的方法所采用的技术方案是:一种基于OpenFlow协议的SDN防火墙状态 检测方法,其特征在于:SDN防火墙模块分别部署在SDN控制器和OpenFlow交换机中,通 过在SDN控制器中添加连接状态表,在OpenFlow交换机中添加连接状态表,并且修改原 有OpenFlow流表格式,在其中添加相关状态字段,同时修改OpenFlow协议,添加新的消息 State_In,保持SDN控制器和OpenFlow交换机中连接状态表保持一致,从而实现了 SDN防 火墙模块的部署。
[0010] 本发明的系统所采用的技术方案是:一种基于OpenFlow协议的SDN防火墙状态检 测系统,包括SDN控制器、OpenFlow交换机;其特征在于:还包括交换机中包头信息提取模 块、状态表建立和更新模块、变换流表(shifted FIow Tab 1 e )建立和更新模块、合法性检测 模块和SDN控制器端命令下发及连接状态表同步模块; 所述的交换机中包头信息提取模块用于提取数据包头部中关键信息,所述的关键信息 包括数据包的源地址,源端口,目的地址,目的端口,序列号,确认号以及TCP标志位; 所述的状态表建立和更新模块用于在所述的OpenFlow交换机中建立连接状态表,并 同时将连接状态表的更新同步到所述的SDN控制器中,该模块的连接状态表的更新将由变 换流表通过set_state指令控制; 所述的变换流表建立和更新模块用于在由所述的SDN控制器下发指令在所述的 OpenFlow交换机中建立变换流表,负责状态转换过程以及数据包转发操作; 所述的合法性检测模块用于负责判别来到所述的OpenFlow交换机数据包属于哪一次 连接; 所述的SDN控制器端命令下发及连接状态表同步模块用于在所述的SDN控制器端建立 连接状态表,与所述的OpenFlow交换机中的状态表保持同步,同时当收到所述的OpenFlow 交换机发送Packet_In消息时,该模块将会将包头信息和状态信息与连接状态表或者防火 墙规则集进行对比,分配相应状态,同时下发变换流表到所述的OpenFlow交换机中。
[0011] 作为优选,所述的连接状态表的建立首先定义两种消息结构让SDN控制器和 OpenFlow交换机完成同步连接状态表的操作,当OpenFlow交换机处的连接状态表发生状 态更新时,OpenFlow交换机给SDN控制器发送一个STATE_IN消息,通知SDN控制器对相 应状态记录进行更新,而当SDN控制器处的连接状态表发生状态更新时,SDN控制器也向 OpenFlow交换机发送一个0FP_STATE _ MOD消息,命令OpenFlow交换机对相应状态记录 进行更新;然后连接状态表用一个四元组组成(Match Field, State, Timeout, Packet_ count),其中Match Field包括数据包的IP(源地址,目的地址,但是针对连接,本发明在 匹配连接状态表的时候不区分)和协议类型(包括TCP/UDP,ICMP等等),State表示连 接状态,Timeout表示连接的超时时间,Packet_count表示通过数据包的数目。
[0012] 作为优选,为了实现连接状态表的更新、维护以及管理,使数据包转发过程中带 上有状态的特征,本发明对OpenFlow协议定义的变换流表的基本结构添加了一个状态属 性(State),以及该状态对应的下一个状态属性(Next_State),并重新定义了数据包与表 项记录匹配的过程,使匹配不仅仅依赖与数据包包头的信息,同时也取决于它的状态(当 数据包经过连接状态表的匹配后,会在其包头信息中添加该状态信息);匹配不成功则 OpenFlow交换机将向SDN控制器发送一个Packet_IN请求消息,其中将会包含数据包包头 的信息,也包含其状态信息,作为回应,SDN控制器会向OpenFlow交换机发送一个Flowjnod 消息,向OpenFlow交换机添加相应记录;当匹配成功时,则执行一个的OFPIT_SET_STATE指 令,该指令将连接状态表中状态赋值为变换流表中相应记录的下一个状态(Next_State), 完成状态的转换;同时按照ACTION处理该数据包。
[0013] 作为优选,当一个数据包来到OpenFlow交换机时,OpenFlow交换机的状态管理过 程包括以下步骤: 步骤1-1:状态查询,这一查询是在连接状态表中进行的,把数据包的包头信息作为查 询关键字,如果在连接状态表中没有关于该查询的记录,则在连接状态表中添加该项,将其 状态置为DEFAULT ; 步骤1-2 :变换流表实现状态转换,当数据包经过连接状态表的匹配后,其数据包包头 被加上状态信息,在查询变换流表的时,该状态信息也将作为一个关键字,如果找到记录, 则执行数据包处理操作,同时将下一个状态信息写回到原来的连接状态表,对状态进行更 新; 步骤1-3 :状态更新,包含添加、删除和修改,通过OFPIT_SET_STATE指令完成状态更 新,或使用State_mod指令完成状态更新。
[0014] 作为优选,步骤1-1中所述的查询关键字为源IP地址。
[0015] 作为优选,所述的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 :0penFl〇W交换机向SDN控制器发送State_In消息对SDN控制器中的状态表 进行更新。
[0016] 本发明与Shin S等人的工作不同,通过在SDN控制器和OpenFlow交换机通过定 义两种表(连接状态表和变换流表)来完成状态检测与转换流程。对OpenFlow交换机中定 义的流表的结构进行修改,添加状态项,使得流表的转发和状态关联起来,并且完成了对状 态表的维护和更新。采用OpenFlow交换机和SDN控制器协同工作的方式来实现对全局网 络通信状态的检测,保证了 SDN控制器的集中化控制,同时用SDN控制器与OpenFlow交换 机之间较小的通信量实现了 SDN控制器对全局网络通信状态的掌握与控制。此外,由于连 接状态表建立在OpenFlow交换机和SDN控制器中,本发明修改了消息机制即时同步两表中 的内容,使得两张表中关于相同连接的状态保持高度一致。
[0017] 本发明的有益创新为: 1.提出并设计了一种SDN防火墙状态检测方法,SDN网络架构的防火墙大多都是传统 的包过滤防火墙,没有状态检测功能。要在SDN架构下实现状态检测防火墙的方法是多种 多样的,而本发明用交换机和控制器协同工作的方式来实现对全局网络通信状态的检测, 这种设计方案是比较高效且不违背SDN架构设计宗旨和初衷的,本发明的设计和实现方法 保证了控制器的控制集中化不受影响,同时用控制器与交换机之间较小的通信量实现了控 制器对全局网络通信状态的掌握与控制。
[0018] 2.现有OpenFlow流表是无状态的,因为无法完成对网络通信状态进行检测的功 能,带来了很多安全威胁,如防御DDos攻击困难等。本发明对OpenFlow协议中定义的流表 的基本结构进行了修改,添加了相关状态项,使得数据流转发不再与状态无关,完成了对 状态表的维护与更新的功能。
[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] 为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发 明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不 用于限定本发明。
[0030] 本发明的方法所采用的技术方案是:一种基于OpenFlow协议的SDN防火墙状态检 测方法,SDN防火墙模块分别部署在SDN控制器和OpenFlow交换机中,通过在SDN控制器 中添加连接状态表,在OpenFlow交换机中添加连接状态表,并且修改原有OpenFlow流表格 式,在其中添加相关状态字段,同时修改OpenFlow协议,添加新的消息State_In,保持SDN 控制器和OpenFlow交换机中连接状态表保持一致,从而实现了 SDN防火墙模块的部署。
[0031] 请见图1,本发明的系统所采用的技术方案是:一种基于OpenFlow协议的SDN防 火墙状态检测系统,包括SDN控制器、OpenFlow交换机、交换机中包头信息提取模块、状态 表建立和更新模块、变换流表建立和更新模块、合法性检测模块和SDN控制器端命令下发 及连接状态表同步模块;交换机中包头信息提取模块用于提取数据包头部中关键信息,关 键信息包括数据包的源地址,源端口,目的地址,目的端口,序列号,确认号以及TCP标志 位;状态表建立和更新模块用于在OpenFlow交换机中建立连接状态表,并同时将连接状态 表的更新同步到SDN控制器中,该模块的连接状态表的更新将由变换流表通过 Set_State 指令控制;变换流表建立和更新模块用于在由SDN控制器下发指令在OpenFlow交换机中建 立变换流表,负责状态转换过程以及数据包转发操作;合法性检测模块用于负责判别来到 OpenFlow交换机数据包属于哪一次连接;SDN控制器端命令下发及连接状态表同步模块用 于在SDN控制器端建立连接状态表,与OpenFlow交换机中的状态表保持同步,同时当收到 OpenFlow交换机发送Packet_In消息时,该模块将会将包头信息和状态信息与连接状态表 或者防火墙规则集进行对比,分配相应状态,同时下发变换流表到OpenFlow交换机中。
[0032] 其中,连接状态表的建立首先定义两种消息结构让SDN控制器和OpenFlow交 换机完成同步连接状态表的操作,当OpenFlow交换机处的连接状态表发生状态更新时, OpenFlow交换机给SDN控制器发送一个STATE_IN消息,通知SDN控制器对相应状态记录 进行更新,而当SDN控制器处的连接状态表发生状态更新时,SDN控制器也向OpenFlow交 换机发送一个〇FP_STATE _ MOD消息,命令OpenFlow交换机对相应状态记录进行更新;然 后连接状态表用一个四元组组成(Match Field, State, Timeout, Packet_count),其中 Match Field包括数据包的IP和协议类型,State表示连接状态,Timeout表示连接的超 时时间,Packet_count表示通过数据包的数目。
[0033] 其中,变换流表的基本结构添加了一个状态属性(State),以及该状态对应的下一 个状态属性(Next_State),并重新定义了数据包与表项记录匹配的过程,使匹配不仅仅依 赖与数据包包头的信息,同时也取决于它的状态;匹配不成功则OpenFlow交换机将向SDN 控制器发送一个Packet_IN请求消息,其中将会包含数据包包头的信息,也包含其状态信 息,作为回应,SDN控制器会向OpenFlow交换机发送一个Flow_mod消息,向OpenFlow交换 机添加相应记录;当匹配成功时,则执行一个的〇FPIT_SET_STATE指令,该指令将连接状态 表中状态赋值为变换流表中相应记录的下一个状态(Next_State),完成状态的转换;同时 按照ACTION处理该数据包。
[0034] 其中,当一个数据包来到OpenFlow交换机时,OpenFlow交换机的状态管理过程包 括以下步骤: 步骤1-1:状态查询,这一查询是在连接状态表中进行的,把数据包的包头信息作为查 询关键字(例如源IP地址),如果在连接状态表中没有关于该查询的记录,则在连接状态表 中添加该项,将其状态置为DEFAULT ; 步骤1-2 :变换流表实现状态转换,当数据包经过连接状态表的匹配后,其数据包包头 被加上状态信息,在查询变换流表的时,该状态信息也将作为一个关键字,如果找到记录, 则执行数据包处理操作,同时将下一个状态信息写回到原来的连接状态表,对状态进行更 新; 步骤1-3 :状态更新,包含添加、删除和修改,通过0FPIT_SET_STATE指令完成状态更 新。
[0035] 请见图2, SDN防火墙状态检测系统接收到数据包后的处理过程包括以下步骤: 步骤2-1 :数据包头部信息通过关键信息提取模块,提取数据包包头关键信息; 步骤2-2 :将包头关键信息与状态表进行匹配,如果状态表中没有关于该项的记录,则 添加记录,并将其状态置为DEFAULT ; 步骤2-3 :将匹配域信息与该状态信息一并发送,与变换流表进行匹配,若变换流表中 没有相应记录,则发送Packet_In消息到SDN控制器端,SDN控制器端匹配连接状态表或者 规则集下发Flow_Mod到OpenFlow交换机; 步骤2-4 :按照SDN控制器指令更新变换流表同时执行相应数据转发操作; 步骤2- 5 :将变换流表中的下一个状态的信息写回到状态表; 步骤2-6 :OpenFl〇W交换机向SDN控制器发送State_In消息对SDN控制器中的状态表 进行更新。
[0036] 在SDN网络环境下,本发明定义数据包传送有两种方式:一种是流进状态检测防 火墙的,比如TCP、UDP包等,还有一种是直接通过核心包过滤层进行通信的,比如ICMP包 等。
[0037] 当OpenFlow交换机(以下简称交换机)收到一个数据包的包头信息消息时,交换机 将根据解析数据包包头信息得到原数据包包头信息中与匹配相关的关键信息,在变换流表 (即shifted Flow Table)中没有该项记录的时候,交换机将数据包包头信息通过Packet_ IN消息发给SDN控制器(以下简称控制器)。
[0038] (1 )Packet_IN消息发送到控制器端后,如果判断数据包协议类型为UDP或者TCP, 则该数据包将根据规则和状态表来判断是否允许被转发;如果允许,控制器即下发Flow_ mod命令到交换机,添加相应表项,并执行Forward操作。通过交换机转发到目的主机。
[0039] (2)Packet_IN消息发送到控制器后,如果判断为ICMP的数据包,则该模块即根据 其访问控制规则,对消息进行处理,决定是否允许数据包转发。
[0040] IP数据包是基于TCP、UDP、ICMP和IGMP四种协议,其中IGMP用来把一个UDP数 据报多播到多个主机,系统不对此协议进行处理,IP数据包解析后得到分别基于TCP、UDP 和ICMP协议的三种数据包信息。而这三种协议的工作原理和方式不尽相同,所以对不同的 协议的数据包需要采用不同的方法进行处理。
[0041] 下面分别介绍针对不同种类的数据包的检测流程。
[0042] 请见图3, TCP数据包处理流程为: TCP数据包状态检测模块的主要工作是创建一个TCP连接状态表,当数据包来到交 换机时,该交换机的关键信息提取模块启动,根据交换机中的状态表(State Table)和变 换流表(Shifted Flow Table)的匹配情况,如果没有记录与之匹配,那么首先判断是否 是SYN数据包,如果是SYN数据包,说明是新建连接,就与控制器中防火墙模块的规则集 进行匹配,匹配成功后,向交换机中发送fl〇w_mod消息,在变换流表中,添加记录,动作为 forward,分配下一个状态标志,交换机收到后,立即执行SET_STATE操作,即更新连接状 态表(包括控制器中的连接状态表(state Table-C,和交换机中的连接状态表(state Table-SW),两者通过state-mod实现同步),进行合法性检测后,转发该数据包。
[0043] 如果不是SYN连接,说明可能是原有连接的一部分,不需要规则匹配,直接查询 控制器连接状态表,如果存在,则下发Flowjnod消息,向交换机中变换流表添加记录,动作 为forward,分配下一个状态标志,交换机收到后,立即执行SET_STATE操作,即更新连接 状态表(包括控制器中的连接状态表(state Table-C,和交换机中的连接状态表(state Table-SW),两者通过state-mod实现同步),进行合法性检测后,转发该数据包。
[0044] 那么如果数据包可与交换机中状态表(state Table-SW)和变换流表(Shifted Flow Table)都匹配,则数据包包头信息不发给控制器,直接由交换机处理。
[0045] 请见图4, UDP数据包处理流程为: UDP是一种面向无连接的协议,UDP数据包首部信息中不包含记录连接的相关标志位。 通过UDP协议传输数据不需要实现建立连接,而是在网络路径中的每个中间节点对UDP数 据包进行路由。
[0046] 对于UDP服务从状态防火墙动态打开端口并为其建立连接状态、交换数据到连接 结束,关闭相应端口并删除其状态信息的这种完整的通信过程,本发明称之为一次虚连接。
[0047] 当接收到一个UDP数据包时,根据从关键信息模块提取出来的关键信息是否存在 于状态表(SW)中判断数据包的处理去向。若存在,就将状态表中对应的状态信息写入到 数据包的包头信息;否则,将状态域设置为DEFAULT,并同步到控制器中的状态表。接下来 查询是否匹配变换流表,若匹配,直接用SET_STATE操作改变状态表(state Table-SW)的 状态值,同时控制器端状态表同步更新,转发数据包;否则,将包头信息发给控制器,查询控 制器状态表,若不存在,发送DROP命令;否则,再查询规则集合,根据规则集合的要求执行 ACTION。对虚连接状态检测流程如图4所示。
[0048] 请见图5, ICMP数据包处理流程为: 与其他格式的数据包处理方式不同,当ICMP的第一个数据包发达到交换机中时,交换 机的状态表的关于该数据包记录变为DEFAULT,接着其因为匹配不到交换机变换流表项,所 以,包头信息被发到控制器,而控制器将查询到相关记录(因为交换机状态表与控制器的 状态表同步),当该包不违反防火墙规则时,控制器即向交换机发送fl〇w_mod信息,在交 换机变换流表中添加记录,将下一个状态标志置为NULL,转发该数据包的同时修改状态表 关于该记录的状态,同步到控制器,控制器发现状态被置NULL后,即向交换机变换流表中 添加 STATE =NULL ,且Next_State =NULL的记录。当下一个数据包来到交换机的时候,可以 匹配到状态表中相关项,其状态位为NULL,匹配交换机变换流表时,也可以匹配到相关项。 本发明定义当60s内没有在这条连接记录上没有数据流动时,控制器即删掉相关项。
[0049] 实例其中关键部分的具体实现说明如下: 1. TCP状态检测 对于如下所示的防火墙规则(内外网间的单向访问,TCP状态转换如图6所示)

【权利要求】
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交换机 添加相应记录;当匹配成功时,则执行一个的〇FPIT_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 :0penFl〇W交换机向SDN控制器发送State_In消息对SDN控制器中的状态表 进行更新。
【文档编号】H04L29/06GK104104561SQ201410393568
【公开日】2014年10月15日 申请日期:2014年8月11日 优先权日:2014年8月11日
【发明者】王鹃, 王江, 陈诗雅, 焦虹阳, 康强龙 申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1