CN105338003A - 一种应用于软件定义网络的防火墙实现方法 - Google Patents

一种应用于软件定义网络的防火墙实现方法 Download PDF

Info

Publication number
CN105338003A
CN105338003A CN201510905978.7A CN201510905978A CN105338003A CN 105338003 A CN105338003 A CN 105338003A CN 201510905978 A CN201510905978 A CN 201510905978A CN 105338003 A CN105338003 A CN 105338003A
Authority
CN
China
Prior art keywords
list item
stream
switch
sdn controller
rule
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
Application number
CN201510905978.7A
Other languages
English (en)
Other versions
CN105338003B (zh
Inventor
张平
许道峰
田少鹏
王鹏
顾宪锋
雷明涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 28 Research Institute
Original Assignee
CETC 28 Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CETC 28 Research Institute filed Critical CETC 28 Research Institute
Priority to CN201510905978.7A priority Critical patent/CN105338003B/zh
Publication of CN105338003A publication Critical patent/CN105338003A/zh
Application granted granted Critical
Publication of CN105338003B publication Critical patent/CN105338003B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0245Filtering by information in the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0263Rule management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种应用于软件定义网络的防火墙实现方法,包括:启动SDN控制器,SDN控制器与要注册到SDN控制器的交换机互发openflow协议报文,获取所有交换机的ID;SDN控制器启动已注册交换机的防火墙功能,防火墙的初始化模块写初始流表项到对应的交换机,丢弃所有经过交换机的报文;SDN控制器下发防火墙规则到某个已注册交换机,防火墙的报文过滤模块根据规则的类型下发不同的流表项到对应交换机来实现规则,SDN控制器删除某个已注册交换机的某条防火墙规则,防火墙的报文处理模块删除对应交换机的相应流表项。本方法适用于所有种类SDN交换机的防火墙实现,实现了防火墙规则的下发和删除,通用性强。

Description

一种应用于软件定义网络的防火墙实现方法
技术领域
本发明属于计算机网络领域,尤其涉及一种应用于软件定义网络的防火墙实现方法。
背景技术
软件定义网络(SoftwareDefinedNetwork,SDN)是一种新型网络创新架构,是网络虚拟化的一种实现方式。传统IT架构中的网络,根据业务需求部署上线以后,如果业务需求发生变动,重新修改相应网络设备(路由器、交换机)上的配置是一件非常繁琐的事情。在互联网/移动互联网瞬息万变的业务环境下,网络的高稳定与高性能还不足以满足业务需求,灵活性和敏捷性反而成为关键。SDN所做的事是将网络设备上的控制权分离出来,由集中的SDN控制器管理,无须依赖底层网络设备(路由器、交换机),屏蔽了来自底层网络设备的差异。而控制权是完全开放的,用户可以自定义任何想实现的防火墙规则,从而更加灵活和智能。
传统网络交换机主要通过访问控制列表(acesscontrollist)来实现防火墙功能,ACL是交换机实现的一种数据包过滤机制,通过允许和拒绝特定的数据包进出网络,交换机可以对网络访问进行控制,有效保证网络的安全运营。但是在未来网络应用中这种传统对交换机进行配置ACL的实现方法太过繁琐,需要专业人士才能操作,特别是网络中交换机设备数量过多后,调整网络的安全机制需要逐台下发防火墙配置是一个繁重的过程。软件定义网络技术的发展使得防火墙技术可以通过SDN控制器来统一规划和实现,SDN控制器北向接口API可以允许应用程序来对网络中交换机的防火墙规则进行配置和修改。
发明内容
本发明的目的是针对现有技术的不足,提出一种应用于软件定义网络的防火墙实现方法。
本发明公开了一种应用于软件定义网络的防火墙实现方法,所述防火墙包括初始化模块、报文过滤模块和报文处理模块;
本发明中,对于不支持openflow1.3及以上的版本的交换机,即不支持多级流表的交换机,采用单级流表实现防火墙功能,步骤如下:
步骤1-1,启动SDN控制器,SDN控制器与要注册到SDN控制器的交换机互发openflow协议报文,获取所有交换机的信息,交换机的信息包括交换机ID;
步骤1-2,SDN控制器启动已注册交换机的防火墙功能,防火墙的初始化模块写一条优先级最低,即优先级为0的流表项到相应交换机,作为查不到流表的默认匹配选项,该流表项的数据包匹配特征为全匹配,即匹配所有报文,动作为丢弃所有经过交换机的报文;
步骤1-3,SDN控制器下发防火墙规则到已注册交换机,防火墙的报文过滤模块和报文处理模块根据规则的类型进行相应的操作;
对于支持openflow1.3及以上的版本的交换机,即支持多级流表的交换机,采用两级流表实现防火墙功能,步骤如下:
步骤2-1,启动SDN控制器,SDN控制器与要注册到SDN控制器的交换机互发openflow协议报文,获取所有交换机的信息,交换机的信息包括交换机ID;
步骤2-2,SDN控制器启动已注册交换机的防火墙功能,防火墙的初始化模块写一条优先级最低,即优先级为0的流表项到相应交换机的第一个流表table0,作为查不到流表的默认匹配选项tablemiss,该流表项的数据包匹配特征为全匹配,即匹配所有报文,动作为丢弃所有报文,然后写一条优先级最低,即优先级为0的流表项到相应交换机的第二个流表table1,作为查不到流表的默认匹配选项tablemiss,该流表项的数据包匹配特征为全匹配,即匹配所有报文,动作为上送到SDN控制器;
步骤2-3,SDN控制器下发防火墙规则到已注册交换机,防火墙的报文过滤模块和报文处理模块根据规则的类型进行相应的操作。
步骤1-3中,当所述SDN控制器下发防火墙规则为允许转发时,进行如下操作:
步骤1-3-1,防火墙的报文过滤模块写一条上送SDN控制器的流表项到相应交换机,流表项优先级指定为(1,round(M/2)-1)的任意整数值,其中M表示交换机支持最大流表项数,round()表示取整;
步骤1-3-2,交换机收到匹配上送流表项的报文后,将报文上送到SDN控制器进行处理,处理过程为:SDN通过防火墙的报文处理模块对报文MAC地址进行学习和查找,然后生成转发流表项并将该转发流表项写入对应的交换机,后续报文匹配转发流表项进行转发,转发流表项的优先级写为round(M/2)(确保比上送流表项的优先级高),转发流表项的hard_timeout硬超时设为1s。
步骤1-3中,当所述SDN控制器下发防火墙规则为丢弃时,进行如下操作:
步骤2-3-1,防火墙的报文过滤模块写一条丢弃的流表项到相应交换机,该丢弃流表项的优先级指定为除了round(M/2)外的任意不定于零的整数值;
步骤2-3-2,若存在允许转发规则和该丢弃规则冲突,则判断二者优先级,若丢弃规则优先级更高,则报文匹配丢弃流表项后丢弃,步骤1-3-2中生成的转发流表项消失(假如允许转发规则先下发,则转发流表项已经生成,在1s的缓冲时间内报文还是匹配转发流表项进行转发而不会丢弃),因为报文不会匹配到上送的流表项上送处理,也就不会再生成转发流表项了。若丢弃规则优先级更低,则报文按照如下流程处理:
防火墙的报文过滤模块写一条上送SDN控制器的流表项到相应交换机,流表项优先级指定为(1,round(M/2)-1)的任意整数值,其中M表示交换机支持最大流表项数,round()表示取整;
交换机收到匹配上送流表项的报文后,将报文上送到SDN控制器进行处理,处理过程为:SDN控制器通过报文处理模块对报文MAC地址进行学习和查找,然后生成转发流表项并将该转发流表项写入对应的交换机,后续报文匹配转发流表项进行转发,转发流表项的优先级写为round(M/2),转发流表项的硬超时设为1s。
步骤1-3中,当所述SDN控制器下发防火墙规则为删除时,进行如下操作:
若删除的是丢弃规则,防火墙的报文过滤模块根据下发的规则信息到对应交换机上查询对应的丢弃流表项,查找到后删除该流表项,所述规则信息包括数据包匹配域、动作和交换机ID;
若删除的是允许转发规则,防火墙的报文过滤模块根据下发的规则信息到对应交换机上查询对应的上送流表项,查找到后删除该流表项,步骤1-3-2中生成的转发流表项1s后消失,且不会再生成(上送流表项已删除,报文不会再上送至SDN控制器)。
步骤2-3中,当所述SDN控制器下发防火墙规则为允许转发时,进行如下操作:
步骤4-3-1,防火墙的报文过滤模块写一条上送SDN控制器的流表项到相应交换机的第一个流表table0,该流表项跳转到相应交换机的第二个流表table1;
步骤4-3-2,交换机收到匹配上送流表项的报文后,将报文上送到SDN控制器进行处理,处理过程为:SDN控制器通过防火墙的报文处理模块对报文MAC地址进行学习和查找,然后生成转发流表项并将该转发流表项写入对应的交换机的第二个流表table1,后续报文匹配2级流表进行转发,即匹配对应的交换机的第一个流表table0的上送流表项和第二个流表table1的转发流表项(最终执行动作为从物理端口转发,因为table1和table0的被匹配流表项动作类型都为OFPAT_OUTPUT,那么table1的流表项就会覆盖原有table0的流表项动作),转发流表项的idle_timeout空闲超时设为1s。
步骤2-3中,当所述SDN控制器下发防火墙规则为丢弃时,进行如下操作:
步骤5-3-1,防火墙的报文处理模块写一条丢弃的流表项到相应交换机的第一个流表table0;
步骤5-3-2,若允许转发规则和该丢弃规则冲突,判断二者优先级,若丢弃规则优先级更高,则报文匹配相应交换机的第一个流表table0的丢弃流表项后丢弃,步骤4-3-2中生成的相应交换机的第二个流表table1的转发流表项消失;(假如“允许转发”规则先下发,则转发流表项已经生成,因为报文不会匹配到table0的上送的流表项,也无法goto到table1的转发流表项,1s后table1的转发流表项就会消失。)若丢弃规则优先级更低,则报文根据以下流程处理:
防火墙的报文处理模块写一条上送SDN控制器的流表项到相应交换机的第一个流表table0,该流表项跳转到相应交换机的第二个流表table1;
交换机收到匹配上送流表项的报文后,将报文上送到SDN控制器进行处理,处理过程为:SDN控制器通过报文处理模块对报文MAC地址进行学习和查找,然后生成转发流表项并将该转发流表项写入对应的交换机的第二个流表table1,后续报文匹配2级流表进行转发,即匹配对应的交换机的第一个流表table0的上送流表项和对应的交换机的第二个流表table1的转发流表项,转发流表项的空闲超时设为1s。
步骤2-3中,当所述SDN控制器下发防火墙规则为删除时,进行如下操作:
若删除的是丢弃规则,防火墙的报文过滤模块根据下发的规则信息到对应交换机的第一个流表table0上查询对应的丢弃流表项,查找到后删除该流表项;
若删除的是允许转发规则,防火墙的报文过滤模块根据下发的规则信息到对应交换机的第一个流表table0上查询对应的上送流表项,查找到后删除该流表项,步骤4-3-2生成的对应交换机的第二个流表table1转发流表项假如没有报文匹配1s后消失,且不会再生成(table0上送流表项已删除,报文不会再上送至SDN控制器)。
本发明中,防火墙实现主要由3个模块组成:初始化模块、报文过滤模块和报文处理模块。对于单级流表实现防火墙的情况下,初始化模块在防火墙启动时写一条优先级最低(优先级为0)的流表项到注册的交换机(作为tablemiss),该流表的数据包匹配特征为全匹配(即匹配所有报文),动作为丢弃所有报文。对于两级流表实现防火墙的情况下,初始化模块在防火墙启动时写一条优先级最低(优先级为0)的流表项到相应交换机的第一个流表table0(作为tablemiss),该流表项的数据包匹配特征为全匹配(即匹配所有报文),动作为丢弃所有报文,然后写一条优先级最低(优先级为0)的流表项到相应交换机的第二个流表table1(作为tablemiss),该流表项的数据包匹配特征为全匹配(即匹配所有报文),动作为上送到SDN控制器。
报文过滤模块根据北向接口下发的数据包匹配域、动作(允许或者丢弃)和交换机ID来下发流表项到相应交换机,当规则为允许时,流表项Type为OFPAT_OUTPUT的Action的port参数设为CONTROLLER,即该报文上送到SDN控制器进行处理。当规则为丢弃时Action设为空,即丢弃该报文。
报文处理模块主要对允许的防火墙规则写转发流表项,即对SDN控制器收到的packet_in报文进行处理,对报文的入端口in_port和源MAC地址smac进行学习(即记录in_port和smac的对应关系到软件表mac_table),然后在mac_table查询报文的目的MAC地址dmac,假如查询到将对应的in_port作为流表的Action的物理输出端口,dmac作为流表项的数据包匹配域,然后将该转发流表项写入对应的交换机。
有益效果:本发明可用于现有基于openflow-hybrid交换机和openflow-only交换机的SDN网络。现有防火墙实现一般只适用于openflow-hybrid交换机,即防火墙实现模块根据下发的数据包匹配域、动作(允许或者丢弃)和交换机ID来下发流表到相应交换机。当规则为允许时,流表Type为OFPAT_OUTPUT的Action的port参数设为NORMAL,即该报文按普通以太网交换机规则转发,报文查询相应action为NORMAL的流表进入普通二三层转发。本发明法适用于所有类型的SDN交换机(openflow-only交换机不支持port参数为NORMAL,本方法不使用NORMAL)。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为单级流表实现防火墙情况下防火墙规则下发流程图。
图2为两级流表实现防火墙情况下防火墙规则下发流程图。
图3防火墙实施组网图。
具体实施方式
本发明公开了一种应用于软件定义网络的防火墙实现方法,所述防火墙包括初始化模块、报文过滤模块和报文处理模块;
本发明中,对于不支持openflow1.3及以上的版本的交换机,即不支持多级流表的交换机,采用单级流表实现防火墙功能,步骤如下:
步骤1-1,启动SDN控制器,SDN控制器与要注册到SDN控制器的交换机互发openflow协议报文,获取所有交换机的信息,交换机的信息包括交换机ID;
步骤1-2,SDN控制器启动已注册交换机的防火墙功能,防火墙的初始化模块写一条优先级最低,即优先级为0的流表项到相应交换机,作为查不到流表的默认匹配选项,该流表项的数据包匹配特征为全匹配,即匹配所有报文,动作为丢弃所有经过交换机的报文;
步骤1-3,SDN控制器下发防火墙规则到已注册交换机,防火墙的报文过滤模块和报文处理模块根据规则的类型进行相应的操作;
对于支持openflow1.3及以上的版本的交换机,即支持多级流表的交换机,采用两级流表实现防火墙功能,步骤如下:
步骤2-1,启动SDN控制器,SDN控制器与要注册到SDN控制器的交换机互发openflow协议报文,获取所有交换机的信息,交换机的信息包括交换机ID;
步骤2-2,SDN控制器启动已注册交换机的防火墙功能,防火墙的初始化模块写一条优先级最低,即优先级为0的流表项到相应交换机的第一个流表table0,作为查不到流表的默认匹配选项tablemiss,该流表项的数据包匹配特征为全匹配,即匹配所有报文,动作为丢弃所有报文,然后写一条优先级最低,即优先级为0的流表项到相应交换机的第二个流表table1,作为查不到流表的默认匹配选项tablemiss,该流表项的数据包匹配特征为全匹配,即匹配所有报文,动作为上送到SDN控制器;
步骤2-3,SDN控制器下发防火墙规则到已注册交换机,防火墙的报文过滤模块和报文处理模块根据规则的类型进行相应的操作。
步骤1-3中,当所述SDN控制器下发防火墙规则为允许转发时,进行如下操作:
步骤1-3-1,防火墙的报文过滤模块写一条上送SDN控制器的流表项到相应交换机,流表项优先级指定为(1,round(M/2)-1)的任意整数值,其中M表示交换机支持最大流表项数,round()表示取整;
步骤1-3-2,交换机收到匹配上送流表项的报文后,将报文上送到SDN控制器进行处理,处理过程为:SDN通过防火墙的报文处理模块对报文MAC地址进行学习和查找,然后生成转发流表项并将该转发流表项写入对应的交换机,后续报文匹配转发流表项进行转发,转发流表项的优先级写为round(M/2)(确保比上送流表项的优先级高),转发流表项的hard_timeout硬超时设为1s。
步骤1-3中,当所述SDN控制器下发防火墙规则为丢弃时,进行如下操作:
步骤2-3-1,防火墙的报文过滤模块写一条丢弃的流表项到相应交换机,该丢弃流表项的优先级指定为除了round(M/2)外的任意不定于零的整数值;
步骤2-3-2,若存在允许转发规则和该丢弃规则冲突,则判断二者优先级,若丢弃规则优先级更高,则报文匹配丢弃流表项后丢弃,步骤1-3-2中生成的转发流表项消失(假如允许转发规则先下发,则转发流表项已经生成,在1s的缓冲时间内报文还是匹配转发流表项进行转发而不会丢弃),因为报文不会匹配到上送的流表项上送处理,也就不会再生成转发流表项了。若丢弃规则优先级更低,则报文按照如下流程处理:
防火墙的报文过滤模块写一条上送SDN控制器的流表项到相应交换机,流表项优先级指定为(1,round(M/2)-1)的任意整数值,其中M表示交换机支持最大流表项数,round()表示取整;
交换机收到匹配上送流表项的报文后,将报文上送到SDN控制器进行处理,处理过程为:SDN控制器通过报文处理模块对报文MAC地址进行学习和查找,然后生成转发流表项并将该转发流表项写入对应的交换机,后续报文匹配转发流表项进行转发,转发流表项的优先级写为round(M/2),转发流表项的硬超时设为1s。
步骤1-3中,当所述SDN控制器下发防火墙规则为删除时,进行如下操作:
若删除的是丢弃规则,防火墙的报文过滤模块根据下发的规则信息到对应交换机上查询对应的丢弃流表项,查找到后删除该流表项,所述规则信息包括数据包匹配域、动作和交换机ID;
若删除的是允许转发规则,防火墙的报文过滤模块根据下发的规则信息到对应交换机上查询对应的上送流表项,查找到后删除该流表项,步骤1-3-2中生成的转发流表项1s后消失,且不会再生成(上送流表项已删除,报文不会再上送至SDN控制器)。
步骤2-3中,当所述SDN控制器下发防火墙规则为允许转发时,进行如下操作:
步骤4-3-1,防火墙的报文过滤模块写一条上送SDN控制器的流表项到相应交换机的第一个流表table0,该流表项跳转到相应交换机的第二个流表table1;
步骤4-3-2,交换机收到匹配上送流表项的报文后,将报文上送到SDN控制器进行处理,处理过程为:SDN控制器通过防火墙的报文处理模块对报文MAC地址进行学习和查找,然后生成转发流表项并将该转发流表项写入对应的交换机的第二个流表table1,后续报文匹配2级流表进行转发,即匹配对应的交换机的第一个流表table0的上送流表项和第二个流表table1的转发流表项(最终执行动作为从物理端口转发,因为table1和table0的被匹配流表项动作类型都为OFPAT_OUTPUT,那么table1的流表项就会覆盖原有table0的流表项动作),转发流表项的idle_timeout空闲超时设为1s。
步骤2-3中,当所述SDN控制器下发防火墙规则为丢弃时,进行如下操作:
步骤5-3-1,防火墙的报文处理模块写一条丢弃的流表项到相应交换机的第一个流表table0;
步骤5-3-2,若允许转发规则和该丢弃规则冲突,判断二者优先级,若丢弃规则优先级更高,则报文匹配相应交换机的第一个流表table0的丢弃流表项后丢弃,步骤4-3-2中生成的相应交换机的第二个流表table1的转发流表项消失;(假如“允许转发”规则先下发,则转发流表项已经生成,因为报文不会匹配到table0的上送的流表项,也无法goto到table1的转发流表项,1s后table1的转发流表项就会消失。)若丢弃规则优先级更低,则报文根据以下流程处理:
防火墙的报文处理模块写一条上送SDN控制器的流表项到相应交换机的第一个流表table0,该流表项跳转到相应交换机的第二个流表table1;
交换机收到匹配上送流表项的报文后,将报文上送到SDN控制器进行处理,处理过程为:SDN控制器通过报文处理模块对报文MAC地址进行学习和查找,然后生成转发流表项并将该转发流表项写入对应的交换机的第二个流表table1,后续报文匹配2级流表进行转发,即匹配对应的交换机的第一个流表table0的上送流表项和对应的交换机的第二个流表table1的转发流表项,转发流表项的空闲超时设为1s。
步骤2-3中,当所述SDN控制器下发防火墙规则为删除时,进行如下操作:
若删除的是丢弃规则,防火墙的报文过滤模块根据下发的规则信息到对应交换机的第一个流表table0上查询对应的丢弃流表项,查找到后删除该流表项;
若删除的是允许转发规则,防火墙的报文过滤模块根据下发的规则信息到对应交换机的第一个流表table0上查询对应的上送流表项,查找到后删除该流表项,步骤4-3-2生成的对应交换机的第二个流表table1转发流表项假如没有报文匹配1s后消失,且不会再生成(table0上送流表项已删除,报文不会再上送至SDN控制器)。
本发明中,防火墙实现主要由3个模块组成:初始化模块、报文过滤模块和报文处理模块。对于单级流表实现防火墙的情况下,初始化模块在防火墙启动时写一条优先级最低(优先级为0)的流表项到注册的交换机(作为tablemiss),该流表的数据包匹配特征为全匹配(即匹配所有报文),动作为丢弃所有报文。对于两级流表实现防火墙的情况下,初始化模块在防火墙启动时写一条优先级最低(优先级为0)的流表项到相应交换机的第一个流表table0(作为tablemiss),该流表项的数据包匹配特征为全匹配(即匹配所有报文),动作为丢弃所有报文,然后写一条优先级最低(优先级为0)的流表项到相应交换机的第二个流表table1(作为tablemiss),该流表项的数据包匹配特征为全匹配(即匹配所有报文),动作为上送到SDN控制器。
报文过滤模块根据北向接口下发的数据包匹配域、动作(允许或者丢弃)和交换机ID来下发流表项到相应交换机,当规则为允许时,流表项Type为OFPAT_OUTPUT的Action的port参数设为CONTROLLER,即该报文上送到SDN控制器进行处理。当规则为丢弃时Action设为空,即丢弃该报文。
报文处理模块主要对允许的防火墙规则写转发流表项,即对SDN控制器收到的packet_in报文进行处理,对报文的入端口in_port和源MAC地址smac进行学习(即记录in_port和smac的对应关系到软件表mac_table),然后在mac_table查询报文的目的MAC地址dmac,假如查询到将对应的in_port作为流表的Action的物理输出端口,dmac作为流表项的数据包匹配域,然后将该转发流表项写入对应的交换机。
本发明的一个典型应用案例是SDN控制器给一个SDN交换机下发和删除防火墙规则,如图3所示,有2个pc机通过SDN交换机相连,2个pc机ip地址为10.0.0.0/24网段。
对于单级流表实现防火墙的情况,如图1所示,SDN控制器运行防火墙app后生成一条全匹配优先级为0的丢弃流表,此时h1pingh2不通,因为所有通过交换机的报文都被丢弃掉。假如该SDN交换机支持最大流表数目为1024条,这时SDN控制器通过北向接口下发一条防火墙规则,规则内容为{“nw_proto”:”ICMP”,”actions”:”ALLOW”,”priority”:”100”},即添加一条允许所有ICMP报文转发的防火墙规则。这时交换机会生成一条优先级为100的上送SDN控制器的流表,流表匹配域为ICMP。
h1pingh2,h1发出的ICMP报文到达交换机匹配优先级为100的流表上送到SDN控制器,SDN控制器防火墙报文处理模块对报文进行处理,具体处理见发明内容部分所示,h2回来的ICMP报文同样通过被上送到SDN控制器进行处理,这个过程会生成优先级为512的2条转发流表,h1能ping通h2。
这时SDN控制器通过北向接口下发一条防火墙规则,规则内容为{“nw_src”:”10.0.0.1”,”nw_dst”:”10.0.0.2”,”actions”:”DENY”,”priority”:”102”},即添加一条不允许10.0.0.1到10.0.0.2的ICMP报文转发的流表。这时交换机会生成一条优先级为102的丢弃流表,流表匹配域为{sip:10.0.0.1,dip:10.0.0.2,proto:ICMP}。然后h1pingh2,由于之前生成的2条转发流表每隔1s就会消失,所以h1过来的ICMP会优先匹配优先级102的丢弃流表,也就不会上送SDN控制器进入报文处理模块,h1pingh2不通。
这时SDN控制器通过北向接口删除防火墙规则{“nw_src”:”10.0.0.1”,”nw_dst”:”10.0.0.2”,”actions”:”DENY”,”priority”:”102”},这时交换机会删除优先级为102的丢弃流表,此时h1pingh2能ping通,具体过程见下发规则{“nw_proto”:”ICMP”,”actions”:”ALLOW”,”priority”:”100”}后处理流程。
这时SDN控制器通过北向接口下发一条防火墙规则,规则内容为{“nw_src”:”10.0.0.1”,”nw_dst”:”10.0.0.2”,”actions”:”DENY”,”priority”:”98”},即添加一条不允许10.0.0.1到10.0.0.2的ICMP报文转发的流表。这时交换机会生成一条优先级为98的丢弃流表,流表匹配域为{sip:10.0.0.1,dip:10.0.0.2,proto:ICMP}。然后h1pingh2,之前生成的2条转发流表每隔1s就会消失,但是h1过来的ICMP会优先匹配优先级100的上送流表,也会继续生成优先级为512的转发流表,h1能ping通h2。
对于两级流表实现防火墙的情况,如图2所示,SDN控制器运行防火墙app后生成2条作为table0和table1的tablemiss流表项,此时h1pingh2不通,因为所有通过交换机的报文都被table0的tablemiss流表项丢弃掉。假如该SDN交换机支持最大流表数目为1024条,这时SDN控制器通过北向接口下发一条防火墙规则,规则内容为{“nw_proto”:”ICMP”,”actions”:”ALLOW”,”priority”:”100”},即添加一条允许所有ICMP报文转发的防火墙规则。这时交换机table0会生成一条优先级为100的上送SDN控制器的流表项,流表匹配域为ICMP。
h1pingh2,h1发出的ICMP报文到达交换机匹配2级流表(table0优先级为100的流表项,table1优先级为0的tablemiss流表项)到SDN控制器,SDN控制器防火墙报文处理模块对报文进行处理,具体处理见发明内容部分所示。h2回来的ICMP报文同样通过被上送到SDN控制器进行处理,这个过程会生成table1的2条转发流表项,后续报文匹配2级流表(table0优先级为100的流表项,table1的转发流表项)进行转发,H1能ping通h2。
这时SDN控制器通过北向接口下发一条防火墙规则,规则内容为{“nw_src”:”10.0.0.1”,”nw_dst”:”10.0.0.2”,”actions”:”DENY”,”priority”:”102”},即添加一条不允许10.0.0.1到10.0.0.2的ICMP报文转发的流表项。这时交换机table0会生成一条优先级为102的丢弃流表,流表匹配域为{sip:10.0.0.1,dip:10.0.0.2,proto:ICMP}。然后h1pingh2,此时ICMP报文匹配该优先级为102的table0丢弃流表项后被丢弃,且之前生成的2条转发流表项空闲1s后会消失,h1pingh2不通。
这时SDN控制器通过北向接口删除防火墙规则{“nw_src”:”10.0.0.1”,”nw_dst”:”10.0.0.2”,”actions”:”DENY”,”priority”:”102”},这时交换机会删除table0优先级为102的丢弃流表项,此时h1pingh2能ping通,具体过程见下发规则{“nw_proto”:”ICMP”,”actions”:”ALLOW”,”priority”:”100”}后处理流程。
这时SDN控制器通过北向接口下发一条防火墙规则,规则内容为{“nw_src”:”10.0.0.1”,”nw_dst”:”10.0.0.2”,”actions”:”DENY”,”priority”:”98”},即添加一条不允许10.0.0.1到10.0.0.2的ICMP报文转发的流表项。这时交换机table0会生成一条优先级为98的丢弃流表,流表匹配域为{sip:10.0.0.1,dip:10.0.0.2,proto:ICMP}。然后h1pingh2,之前生成的table1的2条转发流表项假如空闲消失,但是h1过来的ICMP会优先匹配table0的优先级100的上送流表项,然后goto到table1的tablemiss流表项,最终上送到SDN控制器,也会继续生成table1的2条转发流表项,h1能ping通h2。
提供以上实例仅仅是为了描述本发明的可行性,并非要限制本发明的范围,本发明的范围由所附权利要求限定。
本发明提供了一种应用于软件定义网络的防火墙实现方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

Claims (7)

1.一种应用于软件定义网络的防火墙实现方法,其特征在于:所述防火墙包括初始化模块、报文过滤模块和报文处理模块;
对于不支持openflow1.3及以上的版本的交换机,即不支持多级流表的交换机,采用单级流表实现防火墙功能,步骤如下:
步骤1-1,启动SDN控制器,SDN控制器与要注册到SDN控制器的交换机互发openflow协议报文,获取所有交换机的信息,交换机的信息包括交换机ID;
步骤1-2,SDN控制器启动已注册交换机的防火墙功能,防火墙的初始化模块写一条优先级最低,即优先级为0的流表项到相应交换机,作为查不到流表的默认匹配选项tablemiss,该流表项的数据包匹配特征为全匹配,即匹配所有报文,动作为丢弃所有经过相应交换机的报文;
步骤1-3,SDN控制器下发防火墙规则到已注册交换机,防火墙的报文过滤模块和报文处理模块根据规则的类型进行相应的操作;
对于支持openflow1.3及以上的版本的交换机,即支持多级流表的交换机,采用两级流表实现防火墙功能,步骤如下:
步骤2-1,启动SDN控制器,SDN控制器与要注册到SDN控制器的交换机互发openflow协议报文,获取所有交换机的信息,交换机的信息包括交换机ID;
步骤2-2,SDN控制器启动已注册交换机的防火墙功能,防火墙的初始化模块写一条优先级最低,即优先级为0的流表项到相应交换机的第一个流表table0,作为查不到流表的默认匹配选项tablemiss,该流表项的数据包匹配特征为全匹配,即匹配所有报文,动作为丢弃所有报文,然后写一条优先级最低,即优先级为0的流表项到相应交换机的第二个流表table1,作为查不到流表的默认匹配选项tablemiss,该流表项的数据包匹配特征为全匹配,即匹配所有报文,动作为上送到SDN控制器;
步骤2-3,SDN控制器下发防火墙规则到已注册交换机,防火墙的报文过滤模块和报文处理模块根据规则的类型进行相应的操作。
2.根据权利要求1所述的一种应用于软件定义网络的防火墙实现方法,其特征在于,步骤1-3中,当所述SDN控制器下发防火墙规则为允许转发时,进行如下操作:
步骤1-3-1,防火墙的报文过滤模块写一条上送SDN控制器的流表项到相应交换机,流表项优先级指定为(1,round(M/2)-1)的任意整数值,其中M表示交换机支持最大流表项数,round()表示取整;
步骤1-3-2,交换机收到匹配上送流表项的报文后,将报文上送到SDN控制器进行处理,处理过程为:SDN控制器通过防火墙的报文处理模块对报文MAC地址进行学习和查找,然后生成转发流表项并将该转发流表项写入对应的交换机,后续报文匹配转发流表项进行转发,转发流表项的优先级写为round(M/2),转发流表项的硬超时设为1s。
3.根据权利要求2所述的一种应用于软件定义网络的防火墙实现方法,其特征在于,步骤1-3中,当所述SDN控制器下发防火墙规则为丢弃时,进行如下操作:
步骤2-3-1,防火墙的报文过滤模块写一条丢弃的流表项到相应交换机,该丢弃流表项的优先级指定为除了round(M/2)外的任意不定于零的整数值;
步骤2-3-2,若存在允许转发规则和该丢弃规则冲突,则判断二者优先级,若丢弃规则优先级更高,则报文匹配丢弃流表项后丢弃,若丢弃规则优先级更低,则报文按照如下流程处理:
防火墙的报文过滤模块写一条上送SDN控制器的流表项到相应交换机,流表项优先级指定为(1,round(M/2)-1)的任意整数值,其中M表示交换机支持最大流表项数,round()表示取整;
交换机收到匹配上送流表项的报文后,将报文上送到SDN控制器进行处理,处理过程为:SDN控制器通过防火墙的报文处理模块对报文MAC地址进行学习和查找,然后生成转发流表项并将该转发流表项写入对应的交换机,后续报文匹配转发流表项进行转发,转发流表项的优先级写为round(M/2),转发流表项的硬超时设为1s。
4.根据权利要求3所述的一种应用于软件定义网络的防火墙实现方法,其特征在于,步骤1-3中,当所述SDN控制器下发防火墙规则为删除时,进行如下操作:
若删除的是丢弃规则,防火墙的报文过滤模块根据下发的规则信息到对应交换机上查询对应的丢弃流表项,查找到后删除该流表项,所述规则信息包括数据包匹配域、动作和交换机ID;
若删除的是允许转发规则,防火墙的报文过滤模块根据下发的规则信息到对应交换机上查询对应的上送流表项,查找到后删除该流表项,步骤1-3-2中生成的转发流表项1s后消失,且不再生成。
5.根据权利要求1所述的一种应用于软件定义网络的防火墙实现方法,其特征在于,步骤2-3中,当所述SDN控制器下发防火墙规则为允许转发时,进行如下操作:
步骤4-3-1,防火墙的报文过滤模块写一条上送SDN控制器的流表项到相应交换机的第一个流表table0,该流表项跳转到相应交换机的第二个流表table1;
步骤4-3-2,交换机收到匹配上送流表项的报文后,将报文上送到SDN控制器进行处理,处理过程为:SDN控制器通过防火墙的报文处理模块对报文MAC地址进行学习和查找,然后生成转发流表项并将该转发流表项写入对应的交换机的第二个流表table1,后续报文匹配2级流表进行转发,即匹配对应的交换机的第一个流表table0的上送流表项和第二个流表table1的转发流表项,转发流表项的空闲超时设为1s。
6.根据权利要求5所述的一种应用于软件定义网络的防火墙实现方法,其特征在于,步骤2-3中,当所述SDN控制器下发防火墙规则为丢弃时,进行如下操作:
步骤5-3-1,防火墙的报文处理模块写一条丢弃的流表项到相应交换机的第一个流表table0;
步骤5-3-2,若允许转发规则和该丢弃规则冲突,判断二者优先级,若丢弃规则优先级更高,则报文匹配相应交换机的第一个流表table0的丢弃流表项后丢弃,步骤4-3-2中生成的相应交换机的第二个流表table1的转发流表项消失;
若丢弃规则优先级更低,则报文根据以下流程处理:
防火墙的报文处理模块写一条上送SDN控制器的流表项到相应交换机的第一个流表table0,该流表项跳转到相应交换机的第二个流表table1;
交换机收到匹配上送流表项的报文后,将报文上送到SDN控制器进行处理,处理过程为:SDN控制器通过防火墙应用程序的报文处理模块对报文MAC地址进行学习和查找,然后生成转发流表项并将该转发流表项写入对应的交换机的第二个流表table1,后续报文匹配2级流表进行转发,即匹配对应的交换机的第一个流表table0的上送流表项和对应的交换机的第二个流表table1的转发流表项,转发流表项的空闲超时设为1s。
7.根据权利要求6所述的一种应用于软件定义网络的防火墙实现方法,其特征在于,步骤2-3中,当所述SDN控制器下发防火墙规则为删除时,进行如下操作:
若删除的是丢弃规则,防火墙的报文过滤模块根据下发的规则信息到对应交换机的第一个流表table0上查询对应的丢弃流表项,查找到后删除该流表项;
若删除的是允许转发规则,防火墙的报文过滤模块根据下发的规则信息到对应交换机的第一个流表table0上查询对应的上送流表项,查找到后删除该流表项,步骤4-3-2生成的对应交换机的第二个流表table1转发流表项假如没有报文匹配1s后消失,且不再生成。
CN201510905978.7A 2015-12-09 2015-12-09 一种应用于软件定义网络的防火墙实现方法 Active CN105338003B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510905978.7A CN105338003B (zh) 2015-12-09 2015-12-09 一种应用于软件定义网络的防火墙实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510905978.7A CN105338003B (zh) 2015-12-09 2015-12-09 一种应用于软件定义网络的防火墙实现方法

Publications (2)

Publication Number Publication Date
CN105338003A true CN105338003A (zh) 2016-02-17
CN105338003B CN105338003B (zh) 2018-05-11

Family

ID=55288285

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510905978.7A Active CN105338003B (zh) 2015-12-09 2015-12-09 一种应用于软件定义网络的防火墙实现方法

Country Status (1)

Country Link
CN (1) CN105338003B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106850616A (zh) * 2017-01-24 2017-06-13 南京理工大学 利用sdn技术解决分布式防火墙网络一致更新的方法
CN107528737A (zh) * 2017-09-14 2017-12-29 广州西麦科技股份有限公司 一种基于OpenDaylight配置Firewall的方法及装置
CN107645479A (zh) * 2016-07-22 2018-01-30 平安科技(深圳)有限公司 一种实现防火墙多活高可用性的方法及终端
CN108768859A (zh) * 2018-05-17 2018-11-06 迈普通信技术股份有限公司 数据处理方法、装置及系统
CN109039948A (zh) * 2017-06-12 2018-12-18 刘昱 一种控制面信息生成方法、装置及计算机可读存储介质
CN109995725A (zh) * 2017-12-29 2019-07-09 中移(苏州)软件技术有限公司 一种云计算状态防火墙的实现方法及装置
CN111586026A (zh) * 2020-04-30 2020-08-25 广州市品高软件股份有限公司 一种基于sdn的软件定义边界实现方法及系统
CN111901060A (zh) * 2019-12-26 2020-11-06 长扬科技(北京)有限公司 一种让iptables规则支持本地时间的方法及终端
CN113645137A (zh) * 2021-08-02 2021-11-12 清华大学 一种软件定义网络多级流表压缩方法及系统
CN114338194A (zh) * 2021-12-30 2022-04-12 苏州浪潮智能科技有限公司 一种基于sdn网络的应用层报文防火墙方法、装置及介质
CN114760249A (zh) * 2021-01-08 2022-07-15 大唐移动通信设备有限公司 一种基于sdn网络的数据处理方法和装置及设备
CN114915539A (zh) * 2022-05-20 2022-08-16 电子科技大学 一种基于知识图谱的sdn流规则冲突故障检测方法
CN115842664A (zh) * 2022-11-23 2023-03-24 紫光云技术有限公司 一种公有云网络流量安全的实现方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090064305A1 (en) * 2007-09-05 2009-03-05 Electronic Data Systems Corporation System and method for secure service delivery
CN104935604A (zh) * 2015-06-29 2015-09-23 南京邮电大学 一种基于OpenFlow协议的SDN防火墙系统和方法
US20150326532A1 (en) * 2014-05-06 2015-11-12 At&T Intellectual Property I, L.P. Methods and apparatus to provide a distributed firewall in a network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090064305A1 (en) * 2007-09-05 2009-03-05 Electronic Data Systems Corporation System and method for secure service delivery
US20150326532A1 (en) * 2014-05-06 2015-11-12 At&T Intellectual Property I, L.P. Methods and apparatus to provide a distributed firewall in a network
CN104935604A (zh) * 2015-06-29 2015-09-23 南京邮电大学 一种基于OpenFlow协议的SDN防火墙系统和方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MICHELLE SUH;SAE HYONG PARK;BYUNGJOON LEE: "Building firewall over the software-defined network controller", 《 ADVANCED COMMUNICATION TECHNOLOGY (ICACT), 2014 16TH INTERNATIONAL CONFERENCE ON》 *
刘琦;陈云芳;张伟: "软件定义网络下状态防火墙的设计与实现", 《信息网络安全》 *

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107645479A (zh) * 2016-07-22 2018-01-30 平安科技(深圳)有限公司 一种实现防火墙多活高可用性的方法及终端
CN106850616A (zh) * 2017-01-24 2017-06-13 南京理工大学 利用sdn技术解决分布式防火墙网络一致更新的方法
CN106850616B (zh) * 2017-01-24 2019-10-18 南京理工大学 利用sdn技术解决分布式防火墙网络一致更新的方法
CN109039948B (zh) * 2017-06-12 2022-10-28 刘昱 一种控制面信息生成方法、装置及计算机可读存储介质
CN109039948A (zh) * 2017-06-12 2018-12-18 刘昱 一种控制面信息生成方法、装置及计算机可读存储介质
CN107528737A (zh) * 2017-09-14 2017-12-29 广州西麦科技股份有限公司 一种基于OpenDaylight配置Firewall的方法及装置
CN107528737B (zh) * 2017-09-14 2019-04-02 广州西麦科技股份有限公司 一种基于OpenDaylight配置Firewall的方法及装置
CN109995725A (zh) * 2017-12-29 2019-07-09 中移(苏州)软件技术有限公司 一种云计算状态防火墙的实现方法及装置
CN109995725B (zh) * 2017-12-29 2021-08-06 中移(苏州)软件技术有限公司 一种云计算状态防火墙的实现方法及装置
CN108768859B (zh) * 2018-05-17 2021-05-25 迈普通信技术股份有限公司 数据处理方法、装置及系统
CN108768859A (zh) * 2018-05-17 2018-11-06 迈普通信技术股份有限公司 数据处理方法、装置及系统
CN111901060B (zh) * 2019-12-26 2021-05-07 长扬科技(北京)有限公司 一种让iptables规则支持本地时间的方法及终端
CN111901060A (zh) * 2019-12-26 2020-11-06 长扬科技(北京)有限公司 一种让iptables规则支持本地时间的方法及终端
CN111586026A (zh) * 2020-04-30 2020-08-25 广州市品高软件股份有限公司 一种基于sdn的软件定义边界实现方法及系统
CN111586026B (zh) * 2020-04-30 2021-01-29 广州市品高软件股份有限公司 一种基于sdn的软件定义边界实现方法及系统
CN114760249A (zh) * 2021-01-08 2022-07-15 大唐移动通信设备有限公司 一种基于sdn网络的数据处理方法和装置及设备
CN114760249B (zh) * 2021-01-08 2023-08-04 大唐移动通信设备有限公司 一种基于sdn网络的数据处理方法和装置及设备
CN113645137A (zh) * 2021-08-02 2021-11-12 清华大学 一种软件定义网络多级流表压缩方法及系统
CN113645137B (zh) * 2021-08-02 2022-05-31 清华大学 一种软件定义网络多级流表压缩方法及系统
CN114338194A (zh) * 2021-12-30 2022-04-12 苏州浪潮智能科技有限公司 一种基于sdn网络的应用层报文防火墙方法、装置及介质
CN114338194B (zh) * 2021-12-30 2023-07-18 苏州浪潮智能科技有限公司 一种基于sdn网络的应用层报文防火墙方法、装置及介质
CN114915539A (zh) * 2022-05-20 2022-08-16 电子科技大学 一种基于知识图谱的sdn流规则冲突故障检测方法
CN114915539B (zh) * 2022-05-20 2023-07-28 电子科技大学 一种基于知识图谱的sdn流规则冲突故障检测方法
CN115842664A (zh) * 2022-11-23 2023-03-24 紫光云技术有限公司 一种公有云网络流量安全的实现方法

Also Published As

Publication number Publication date
CN105338003B (zh) 2018-05-11

Similar Documents

Publication Publication Date Title
CN105338003A (zh) 一种应用于软件定义网络的防火墙实现方法
US11689455B2 (en) Loop prevention in virtual layer 2 networks
US11876708B2 (en) Interface-based ACLs in a layer-2 network
US11757773B2 (en) Layer-2 networking storm control in a virtualized cloud environment
US9124536B2 (en) Managing data flows in overlay networks
WO2016150057A1 (zh) 访问控制列表acl的发送方法及装置
US10805390B2 (en) Automated mirroring and remote switch port analyzer (RSPAN) functions using fabric attach (FA) signaling
US9699063B2 (en) Transitioning a routing switch device between network protocols
WO2015014187A1 (zh) 一种支持多租户的数据转发方法和装置
WO2018149338A1 (zh) 基于sdn的远端流镜像控制方法、实现方法及相关设备
US20220417138A1 (en) Routing policies for graphical processing units
US20150055662A1 (en) Internet group management protocol (igmp) leave message processing synchronization
US20160352637A1 (en) Client-based port filter table
US20140204938A1 (en) Multicast route entry synchronization
CN110391919A (zh) 组播流量转发方法、装置、电子设备
WO2015074258A1 (zh) 一种控制业务数据在虚拟网络中转发的方法、装置及系统
CA3086536C (en) Isolating services across a single physical network interface
CN108966040B (zh) 一种视联网业务的处理方法和视联网终端
US11258720B2 (en) Flow-based isolation in a service network implemented over a software-defined network
KR102643981B1 (ko) 보안을 강화한 스마트 허브 장치 및 이를 포함하는 스마트 홈 네트워크 시스템
US20240160495A1 (en) Network locality in a gpu super-cluster
WO2022271990A1 (en) Routing policies for graphical processing units
CN105337751A (zh) 一种acl配置方法及装置

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