一种sdn防火墙系统及实现方法_2

文档序号:9914453阅读:来源:国知局
来生成。数据包转发过程中会优先匹配pr1rity数值大的流表项,数值越大表明优先级越尚。
[0032]定时器(Timer)模块
[0033]如图3所示。每隔一段时间启动一次定时器Timer,定时器用来发送流表状态请求,执行以下步骤:
[0034]逐行遍历整个连接表,对每个连接表项,先比较当前连接表项的前次正向计数字段和当前正向计数字段,前次反向计数字段和当前反向计数字段,
[0035]如果两个比较有一个不等,则把当前正向计数字段复制到前次正向计数字段,当前反向计数字段复制到前次反向计数字段,继续遍历下一个连接表项。
[0036]如果两个比较都相等,说明一段时间内本连接没有命中数据包,删除该连接表项,继续遍历下一个连接表项。
【主权项】
1.一种SDN防火墙系统,该系统为一种基于OpenFlow协议1.3的SDN防火墙系统,本系统使用python语言在ubuntu系统上编写,在ubuntu系统上正常运行; 通过对数据包的解析,分析数据包的状态并结合数据包与规则表文件中填写的五元组进行比较,决定数据包由哪个端口转发出去,满足条件的数据包则从相应的端口转发出去或者packet-1n到控制器,不满足条件的数据包则丢掉,不允许通过控制器,其特征在于:该系统包括数据包分析模块、防火墙规则表(rule_table)模块、定时器(Timer)模块、防火墙连接表(conn_table)模块、防火墙MAC地址表模块、OpenF I ow控制器、OpenF low交换机;控制器模块通过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地址表中的填写的INP0RT_MAC和0UTP0RT_MAC获取到入出端口号,找到数据包是从哪个端口转发到哪个端口; 4)定时器模块在响应feature s消息时开始启动,并每隔一段时间启动一次定时器;定时器模块的作用是在一定时间内查看数据包计数字段是否改变,如果改变,说明这段时间有数据包通过OpenFlow交换机,连接存在;如果没有改变,则会删除对应此连接的两条双向流表项,并同时删掉对应的连接表项; 5)数据包分析模块对获取的数据包进行分析,数据包能够来自交换机、路由器,也能够来自主机和其他通信终端,符合packet-1n的数据包则会上传到控制器进行相应的操作; 6)OpenFLow控制器具有全局的拓扑,并控制转发路径,通过安全通道与OpenFlow交换机进行信息交互并完成连接,所有的信息必须按照OpenFlow协议规定的格式来执行; OpenFlow控制器收集OpenFlow交换机配置信息、通信链路信息,并负责控制交换机中的流表,包括对F1wEntry的添加、修改以及删除基本操作;流表由很多个Flow Entry组成,每个流表项就是一个转发规则;本系统中使用的是RYU控制器,OpenFlow交换机通过安全通道向OpenFlow控制器packet-1n数据包; 7)0penFloW交换机主要管理数据层的转发,当交换机接收到数据包后,首先在本地的流表上查找转发目标端口,如果流表中没有匹配条目,交换机会将数据包封装在packet-1n消息中发送给控制器处理,由控制层决定转发端口,如果找到匹配的流表项,则根据流表目标端口把数据包转发出去; 该核心库包括python中的time, os, struct, threading, csv库函数,这些库能够在所有支持python的控制器中运行。2.根据权利要求1所述的一种SDN防火墙系统,其特征在于:本系统是基于OpenFlow协议1.3的,它由数据包分析模块、防火墙规则(ruI e_tabI e)模块、定时器(Timer)模块、防火墙连接表(conn_table)模块、防火墙MAC地址表模块、OpenFlow控制器、OpenFlow交换机组成。3.依权利要求1所述的一种SDN防火墙系统,该系统的工作方法,其特征在于: OpenFlow控制器、OpenFlow交换机 不同的交换机的datapath不一样,交换机以此来作为标识,控制器根据datatpath来下发流表到交换机,数据包根据流表项进行转发,若数据包匹配流表项规则,则数据包进行转发,若数据包无法匹配流表项规则,则需要packet-1n控制器处理,控制器将数据包信息传递到防火墙模块,由防火墙模块进行相应操作; Flow-Mod消息用来添加、修改、删除OpenFlow交换机的流表信息,通过datapath,tab I e_id,command,idle_timeout,hard_timeout ,pr1rity,instruct1ns ,match 等字段来生成Flow-Mod消息,添加新的流表项时command为ADD类型,同时发送消息来下发流表;idle_timeout表示流表项的空闲超时时间,hard_timeout表示流表项的最大生存时间;防火墙MAC地址表模块 通过循环遍历eV.msg.body条目获得的hw_addr与MAC地址表中记录的mac地址进行比较,来获得数据包相应的入出端口,同时下发packet-1n到控制器的默认流表项; 防火墙conn_tab I e模块、ru I e_tab I e模块、数据包分析模块 数据包从INPORT_MAC或者0UTP0RT_MAC发送过来,通过get_protocol逐层取出数据包,解析数据包后把数据包与循环遍历取得的conn_table中每一条entry的五元组信息比较,如果数据包来自INPORT_MAC,则根据匹配结果和数据包的Flags来遍历rule_table或者直接丢弃;遍历rule_table时需要按照act动作为pass或者drop来选择新建连接表项同时更改COnn_table entry状态、从其他出端口转发数据包或者丢掉数据包,数据包转发前需要OpenFlow 控制器模块根据 datapath ,match field,instruct1ns ,pr1rity 等参数下发两条双向流表,操作结束时需要根据数据包的状态来删除流表项;如果数据包来0UTP0RT_MAC,则根据匹配结果来从其他端口转发数据包或者删除交换机FlowEntry和连接表项;match field由 src_ip,dst_ip,src_port,dst_port,in_port,eth_type,ip_proto来生成;数据包转发过程中会优先匹配pr1rity数值大的流表项,数值越大表明优先级越高;定时器(Timer)模块 每隔一段时间启动一次定时器Timer,定时器用来发送流表状态请求,执行以下步骤:逐行遍历整个连接表,对每个连接表项,先比较当前连接表项的前次正向计数字段和当前正向计数字段,前次反向计数字段和当前反向计数字段; 如果两个比较有一个不等,则把当前正向计数字段复制到前次正向计数字段,当前反向计数字段复制到前次反向计数字段,继续遍历下一个连接表项; 如果两个比较都相等,说明一段时间内本连接没有命中数据包,删除该连接表项,继续遍历下一个连接表项。
【专利摘要】一种SDN防火墙系统及实现方法,该系统及方法对防火墙的管控都集中在控制器,利用控制器对全网的统一管理,为SDN网络提供更加安全和便捷的服务。为了将内网和公网分开,检查出入防火墙的数据包,决定拦截或是放行哪些数据包。用户可以填写自己的访问策略决定是否允许访问某些网站。本项目防火墙模块运用二层转发。本系统为一种基于OpenFlow协议1.3的SDN防火墙系统,本系统使用python语言在ubuntu系统上编写,在ubuntu系统上正常运行;本系统及方法能够很好的实现跨平台移植,该系统具有非常重要的应用价值。
【IPC分类】H04L29/06
【公开号】CN105681305
【申请号】CN201610029674
【发明人】田雨, 刘静, 赖英旭
【申请人】北京工业大学
【公开日】2016年6月15日
【申请日】2016年1月15日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1