CN114422160A - 一种虚拟防火墙的设置方法、装置、电子设备和存储介质 - Google Patents

一种虚拟防火墙的设置方法、装置、电子设备和存储介质 Download PDF

Info

Publication number
CN114422160A
CN114422160A CN202011176720.5A CN202011176720A CN114422160A CN 114422160 A CN114422160 A CN 114422160A CN 202011176720 A CN202011176720 A CN 202011176720A CN 114422160 A CN114422160 A CN 114422160A
Authority
CN
China
Prior art keywords
firewall
data
ovn
virtual
request
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
CN202011176720.5A
Other languages
English (en)
Other versions
CN114422160B (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.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
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 China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202011176720.5A priority Critical patent/CN114422160B/zh
Publication of CN114422160A publication Critical patent/CN114422160A/zh
Application granted granted Critical
Publication of CN114422160B publication Critical patent/CN114422160B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/0263Rule management

Abstract

本发明提供一种虚拟防火墙的设置方法、装置、电子设备和计算机存储介质,所述方法包括:接收防火墙请求数据;使用防火墙插件对所述防火墙请求数据进行解析,得到防火墙请求参数;使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;通过软件定义网络控制器OVN获取所述防火墙规则数据,进行虚拟防火墙的设置;如此,对于虚拟防火墙的设置,使用防火墙插件和防火墙驱动器对防火墙请求数据进行处理并发送至OVN,OVN基于获取的数据进行虚拟防火墙的设置;该方法无需采用iptables进行虚拟防火墙的设置;进而,解决了因iptables数目多造成的网络拥塞问题,提升虚拟防火墙的性能。

Description

一种虚拟防火墙的设置方法、装置、电子设备和存储介质
技术领域
本发明涉及云计算技术领域,尤其涉及一种虚拟防火墙的设置方法、装置、电子设备和计算机存储介质。
背景技术
防火墙技术是通过结合各类、用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。
相关技术中,在云计算管理平台(例如,OpenStack等)的网络和地址管理组件(Neutron)中,Neutron主要提供网络服务。Neutron通过防火墙即服务(FireWall as aService,FWaaS),即,Neutron-FWaaS服务为用户提供虚拟防火墙服务,控制出入用户虚拟路由器上的流量,以维护用户私有网络的安全。Neutron-FWaaS通过l3-agent提供路由服务,在用户的路由器命名空间(namespace)中下发iptables,如下是一条在防火墙中的接受网络控制报文协议(Internet Control Message Protocol,ICMP)的规则:-A neutron-l3-agent-ov42ced2d9f-p icmp-j ACCEPT;根据该规则可实现虚拟防火墙对用户流量的过滤。
然而,通过下发iptables实现的虚拟防火墙在iptables数目过多的情况下,容易造成网络拥塞的问题,进而降低虚拟防火墙的性能。
发明内容
本发明提供一种虚拟防火墙的设置方法、装置、电子设备和计算机存储介质。
本发明的技术方案是这样实现的:
本发明提供了一种虚拟防火墙的设置方法,所述方法包括:
接收防火墙请求数据;
使用防火墙插件对所述防火墙请求数据进行解析,得到防火墙请求参数;
使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;
通过软件定义网络控制器(Open Virtual Network,OVN)获取所述防火墙规则数据,进行虚拟防火墙的设置。
在一些实施例中,所述使用防火墙插件对所述防火墙请求数据进行解析,得到防火墙请求参数,包括:
使用防火墙插件,并基于预先设定的业务场景需要对所述防火墙请求数据进行解析,得到防火墙请求参数。
在一些实施例中,所述方法还包括:
对所述防火墙请求数据创建通用唯一识别码,在OVN获取所述防火墙规则数据的同时得到所述通用唯一识别码;
按照预设时间周期性地将所述OVN的目标数据写入所述防火墙插件中;所述目标数据至少包括所述防火墙规则数据;
判断所述防火墙插件中所述目标数据中是否包含所述通用唯一识别码,得到判断结果;
在判断结果为否的情况下,对所述通用唯一识别码进行同步。
在一些实施例中,所述对通用唯一识别码进行同步,包括:
重新使用防火墙插件对所述防火墙请求数据进行解析,得到所述防火墙请求参数;
使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;
通过OVN再次获取防火墙规则数据和所述通用唯一识别码,对所述通用唯一识别码进行同步。
在一些实施例中,所述方法还包括:
基于开放虚拟交换机数据库(Open Virtual Switch Database,OVSDB)协议,将所述防火墙规则数据发送至OVN。
在一些实施例中,所述通过OVN获取所述防火墙规则数据,进行虚拟防火墙的设置,包括:
通过OVN获取所述防火墙规则数据;
将所述防火墙规则数据通过转换流表的方式下发到虚拟交换机(Open VirtualSwitch,OVS)中,进行虚拟防火墙的设置。
本发明提供一种虚拟防火墙的设置装置,所述装置包括:
接收模块,用于接收防火墙请求数据;
解析模块,用于使用防火墙插件对所述防火墙请求数据进行解析,得到解析后的防火墙请求数据;所述解析后的防火墙请求数据包括防火墙请求参数;
转换模块,用于使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;
设置模块,用于通过OVN获取所述防火墙规则数据,进行虚拟防火墙的设置。
在一些实施例中,所述解析模块,用于使用防火墙插件对所述防火墙请求数据进行解析,得到防火墙请求参数,包括:
使用防火墙插件,并基于预先设定的业务场景需要对所述防火墙请求数据进行解析,得到防火墙请求参数。
在一些实施例中,所述装置还包括判断模块,所述判断模块,用于:
对所述防火墙请求数据创建通用唯一识别码,在OVN获取所述防火墙规则数据的同时得到所述通用唯一识别码;
按照预设时间周期性地将所述OVN的目标数据写入所述防火墙插件中;所述目标数据至少包括所述防火墙规则数据;
判断所述防火墙插件中所述目标数据中是否包含所述通用唯一识别码,得到判断结果;
在判断结果为否的情况下,对所述通用唯一识别码进行同步。
在一些实施例中,所述判断模块,还用于:
重新使用防火墙插件对所述防火墙请求数据进行解析,得到所述防火墙请求参数;
使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;
通过OVN再次获取防火墙规则数据和所述通用唯一识别码,对所述通用唯一识别码进行同步。
在一些实施例中,所述转换模块,还用于:
基于OVSDB协议,将所述防火墙规则数据发送至OVN。
在一些实施例中,所述设置模块,用于通过OVN获取所述防火墙规则数据,进行虚拟防火墙的设置,包括:
通过OVN获取所述防火墙规则数据;
将所述防火墙规则数据通过转换流表的方式下发到OVS中,进行虚拟防火墙的设置。
本发明提供一种电子设备,所述设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述一个或多个技术方案提供的虚拟防火墙的设置方法。
第四方面,提供一种计算机存储介质,所述计算机存储介质存储有计算机程序;所述计算机程序被执行后能够实现前述一个或多个技术方案提供的虚拟防火墙的设置方法。
本发明提供一种虚拟防火墙的设置方法、装置、电子设备和计算机存储介质,所述方法包括:接收防火墙请求数据;使用防火墙插件对所述防火墙请求数据进行解析,得到防火墙请求参数;使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;通过OVN获取所述防火墙规则数据,进行虚拟防火墙的设置;如此,对于虚拟防火墙的设置,使用防火墙插件和防火墙驱动器对防火墙请求数据进行处理并发送至OVN,OVN基于获取的数据进行虚拟防火墙的设置;该方法无需采用iptables进行虚拟防火墙的设置;进而,解决了因iptables数目多造成的网络拥塞问题,提升虚拟防火墙的性能。
附图说明
图1为本发明的一种虚拟防火墙的设置方法的流程图;
图2为本发明的另一种虚拟防火墙的设置方法的流程示意图;
图3为本发明的虚拟防火墙的设置装置的组成结构示意图;
图4为本发明提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述。
OpenStack是一个实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面。其中,OpenStack包括多个不同服务类型的核心项目,比如计算、对象存储、镜像服务、身份服务、Neutron等。其中,Neutron提供云计算的网络虚拟化技术,为OpenStack其它服务提供网络连接服务,为用户提供接口。
OVS以其丰富的功能和相对优秀的性能,成为OpenStack中广泛使用的虚拟交换机。OVN是为OVS开发的软件定义网络(Software Defined Network,SDN)控制器;通过SDN控制器可以将网络设备的控制面与数据面分离开来,从而实现了网络流量的灵活控制;OVN同其它SDN产品相比,对OVS及OpenStack有更好的兼容性和性能。
相关技术中,通过下发iptables,实现虚拟防火墙对用户流量的过滤。然而,通过iptables实现的虚拟防火墙容易产生因iptables数目多造成的网络拥塞问题,进而,降低虚拟防火墙的性能;另外,在实现虚拟防火墙时,大多基于其自身的硬件防火墙、利用虚拟化技术(如虚拟机、容器),在硬件防火墙上虚拟出多个独立的虚拟空间,为用户提供数据包过滤功能;这种方式需要引入第三方的防火墙功能或设备共同实现虚拟防火墙的功能,具有一定的局限性。
针对上述技术问题,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本发明,并不用于限定本发明。另外,以下所提供的实施例是用于实施本发明的部分实施例,而非提供实施本发明的全部实施例,在不冲突的情况下,本发明记载的技术方案可以任意组合的方式实施。
需要说明的是,在本发明中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分处理器、部分程序或软件等等)。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
例如,本发明提供的虚拟防火墙的设置方法包含了一系列的步骤,但是本发明提供的虚拟防火墙的设置方法不限于所记载的步骤,同样地,本发明提供的虚拟防火墙的设置装置包括了一系列模块,但是本发明提供的虚拟防火墙的设置装置不限于包括所明确记载的模块,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的模块。
本发明可以基于电子设备实现,这里,电子设备可以是瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统,等等。
电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统可以在分布式云计算环境中实施,在分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
基于上述记载的应用场景,提出以下各实施例。
在本发明的一些实施例中,虚拟防火墙的设置方法可以利虚拟防火墙的设置装置中的处理器实现,上述处理器可以为特定用途集成电路(Application SpecificIntegrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(ProgrammableLogic Device,PLD)、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。
图1为本发明的虚拟防火墙的设置方法的流程图,如图1所示,该流程可以包括:
步骤100:接收防火墙请求数据。
在一种实施方式中,防火墙请求数据可以表示基于万维网(World Wide Web,Web)应用程序客户端的防火墙请求生成的数据包,该数据包可以是超文本传输协议(HyperText Transfer Protocol,HTTP)数据包,也可以是(Hyper Text Transfer Protocol overSecure Socket Layer,HTTPS)数据包;其中,HTTP和HTTPS用于表示应用层协议,定义了浏览器或其它应用程序与Web服务器之间通讯的过程以及数据交互的格式。
本发明实施例中,防火墙请求数据的接收可以基于OpenStack中的Neutron进行实现;这里,Neutron采用分布式架构,由Neutron-server、Neutron-plugin、Neutron-agent、network provider、Queue和Neutron-Database这些组件共同对外提供网络虚拟化技术。其中,Neutron-server组件运行于控制节点上,对外提供OpenStack网络的应用程序接口(Application Programming Interface,API),通过API接收防火墙请求数据;示例性地,Neutron-server可以通过建立Web服务器网关接口(Web Server Gateway Interface,WSGI)接收防火墙请求数据。
这里,通过Neutron提供的网络虚拟化技术可以将计算机底层设备、上层软件、数据和网络等应用进行隔离;简化基础设施、系统和软件等计算机资源的表示、访问和管理,进而,实现Neutron架构的动态化,并通过这些资源提供的标准化接口实现集中管理和动态使用这些资源的目的。
在一些实施例中,在Neutron-server接收防火墙请求数据后,对防火墙请求数据创建通用唯一识别码(Universally Unique Identifier,UUID);创建防火墙请求数据的UUID可以使得OpenStack中接收到的所有防火墙请求数据都具有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。
在一些实施例中,由于不同的UUID对应不同的防火墙请求数据;即,可以通过UUID查找到对应的防火墙请求数据,进而,可以对防火墙请求数据执行相关操作。例如,用字符A1表示当前时刻接收的防火墙请求数据的UUID,用字符A2表示下一时刻接收的防火墙请求数据的UUID;可见,通过查找字符A1和/或字符A2,便可对它们对应的防火墙请求数据执行相关操作。
这里,对防火墙请求数据创建通用唯一识别码的方式可以根据实际应用场景进行确定,本发明实施例不作限定。
步骤101:使用防火墙插件对所述防火墙请求数据进行解析,得到防火墙请求参数。
本发明实施例中,防火墙插件用于实现读写数据和下发参数给驱动器的功能;例如,防火墙插件可以将防火墙请求数据按照数据库对应的数据格式和业务类型进行写入,并将相应的防火墙请求参数发送给驱动器。
在Neutron-server接收防火墙请求数据后,将防火墙请求数据传递给防火墙插件,通过防火墙插件对防火墙请求数据进行解析处理,得到防火墙请求参数;将防火墙请求参数按照数据库对应的格式写入数据库进行存储。
在一些实施例中,可以采用序列化方式对防火墙请求参数进行存储;其中,通过序列化方式可以将防火墙请求参数转换成可以存储的数据流;也可以采用其它方式进行存储,本发明实施例对此不作限制。
在一种实施方式中,使用防火墙插件对所述防火墙请求数据进行解析,得到防火墙请求参数,可以包括:使用防火墙插件,并基于预先设定的业务场景需要对所述防火墙请求数据进行解析,得到防火墙请求参数。
本发明实施例中,设定的业务场景可以表示虚拟防火墙的业务场景;虚拟防火墙的业务场景可以包括从互联网到业务的访问、业务到互联网的主动外联访问、业务和业务间的访问等。
在一种实施方式中,可以根据设定的业务场景需要对防火墙请求参数进行解析处理,得到符合业务场景需要的防火墙请求参数;由于设定的业务场景可以表示虚拟防火墙的业务场景,因而,通过解析处理,可以提高虚拟防火墙的灵活性。
本发明实施例中,在防火墙请求参数与虚拟路由器关联的情况下,防火墙插件可以通过虚拟路由器的转发表将存储于数据库的防火墙请求参数传递给防火墙驱动器。
步骤102:使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据。
这里,防火墙驱动器用于实现将防火墙请求参数转换成对应防火墙规则的功能;防火墙规则数据可以用来表示访问控制的规则;即,通过防火墙规则数据可以控制进出用户网络的数据流量,保证用户网络的安全。
在一种实施方式中,防火墙规则数据可以是允许数据流量访问的规则,也可以是拒绝数据流量访问的规则;可以根据实际应用场景进行设置,本发明实施例对此不作限制。
在一些实施例中,当存在多个防火墙规则数据的情况下,可以根据多个防火墙规则数据对应的优先级确定多个防火墙规则数据的排列顺序,得到排序结果;根据排序结果,确定对数据流量的访问进行控制。
在一种实施方式中,假设存在防火墙规则数据R1、防火墙规则数据R2和防火墙规则数据R3这三条防火墙规则数据;按照优先级从大到小的顺序得到的排序结果依次为防火墙规则数据R1、防火墙规则数据R2、防火墙规则数据R3;则依次通过防火墙规则数据R1、防火墙规则数据R2和防火墙规则数据R3控制访问的数据流量。
本发明实施例中,在得到防火墙插件传递的防火墙请求参数后,防火墙驱动器对防火墙请求参数进行转换,将其转换成OVN基于策略的路由(Policy-Based Routing,PBR),即OVN PBR;其中OVN PBR表示将防火墙请求参数进行转换后的防火墙规则数据。
本发明实施例中,OVN PBR是一种在虚拟路由器上配置允许或拒绝策略、以及配置重新路由(reroute)策略的机制。允许或拒绝策略类似于OVN访问控制列表(AccessControl Lists,ACL),ACL是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许数据包通过或丢弃。
OVN PBR存在于逻辑路由器上,逻辑路由器的服务插入(service-insertion)和服务链接(service-chaining)需要reroute策略;为此,在逻辑路由器的入口管道(ingresspipeline)中引入新数据表(Logical_Router_Policy),该表对应的逻辑流表Policy(table8,用来设置防火墙策略、比如:拒绝或允许某个网段的数据流量)位于网际互连协议路由(Internet Protocol Routing,IP Routing)(table7,实现IP地址的路由)和地址解析协议(Address Resolution Protocol,ARP)/邻居发现(Neighbor discover,ND)解析(table 9,实现对ARP请求报文的解析和回复)之间。这样,OVN PBR可以覆盖路由决策、并提供不同的下一跳。
本发明实施例中,基于OVN PBR,可以保证Neutron中的防火墙请求参数进行正确转换,并将转换得到的防火墙规则数据传递给OVN;即,解决了Neutron中的虚拟防火墙和OVN的适配问题。
步骤103:通过OVN获取所述防火墙规则数据,进行虚拟防火墙的设置。
本发明实施例中,OVN在得到步骤102的防火墙规则数据后,使用防火墙规则数据进行虚拟防火墙的设置,进而,实现虚拟防火墙的功能。
在一种实施方式中,可以基于OVSDB协议,将防火墙规则数据发送至OVN。
这里,OVSDB协议主要管理的对象是OVSDB数据库,它提供了OVSDB的可编程性入口。OVSDB协议使用JS对象简谱(JavaScript Object Notation,JSON)作为数据格式和通信协议格式,并基于JSON-RPCV1.0版本进行数据调用。JSON是被用于结构化数据序列换的一种文本格式。
在一种实施方式中,使用OVSDB协议创建一个与OVN接口进行交互的应用;该应用为防火墙驱动器和OVN建立数据连接,并将防火墙规则数据发送给OVN;这里,通过创建应用实现Neutron与OVN交互的接口,可以保证防火墙驱动器发送的防火墙规则数据能够写入OVN接口。
在一种实施方式中,通过OVN获取所述防火墙规则数据,进行虚拟防火墙的设置,可以包括:通过OVN获取所述防火墙规则数据;将所述防火墙规则数据通过转换流表的方式下发到虚拟交换机OVS中,进行虚拟防火墙的设置。
本发明实施例中,通过OVN获取的防火墙规则数据记录在OVN PRB中,并转换流表下发到OVS中,形成防火墙策略;虚拟防火墙可以基于该防火墙策略真正实现的防火墙功能。
在一种实施方式中,可以对所述防火墙请求数据创建通用唯一识别码,在OVN获取所述防火墙规则数据的同时得到所述通用唯一识别码;按照预设时间周期性地将所述OVN的目标数据写入所述防火墙插件中;所述目标数据至少包括所述防火墙规则数据;判断所述防火墙插件中所述目标数据中是否包含所述通用唯一识别码,得到判断结果;在判断结果为否的情况下,对所述通用唯一识别码进行同步。
本发明实施例中,OVN的目标数据可表示根据不同时刻输入的防火墙请求数据对应的防火墙规则数据以及防火墙规则数据的UUID。
这里,预设时间可以根据实际应用场景进行设置,例如,可以是1s、3s等,本发明实施例对此不作限制。
在一些实施例中,UUID是在接收到防火墙请求数据的时候就创建完成的;这里,当前时刻接收的防火墙请求数据的UUID与解析得到的防火墙请求参数的UUID以及转换得到的防火墙规则数据的UUID相同;通过将OVN的目标数据写入防火墙插件中,再判断防火墙插件中目标数据中是否包含当前接收的防火墙请求参数的UUID,根据判断结果,可以确定Neutron防火墙请求参数和OVN中记录的防火墙规则数据是否对应一致。
在判断结果为是的情况下,说明Neutron防火墙请求参数和OVN中记录的防火墙规则数据对应一致;在判断结果为否的情况下,说明Neutron防火墙请求参数和OVN中记录的防火墙规则数据不一致,需要对UUID进行同步。
在一种实施方式中,对通用唯一识别码进行同步,可以包括:重新使用防火墙插件对所述防火墙请求数据进行解析,得到所述防火墙请求参数;使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;通过OVN再次获取防火墙规则数据和所述通用唯一识别码,对所述通用唯一识别码进行同步。
本发明实施例中,在基于UUID确定两者数据不一致的情况下,需要重新对当前时刻接收的防火墙请求数据进行解析、转换得到防火墙规则数据,并获取防火墙规则数据的UUID;即,重新执行上述步骤101到步骤103,并在步骤103中,同时获取防火墙规则数据和通用唯一识别码。进而,实现对UUID的同步。
本发明实施例中,在Neutron的防火墙插件中,设置了一个自动同步工具,用来将使用防火墙插件得到的防火墙请求参数同步到OVN。当OVN断联或者故障时,依据Neutron防火墙请求参数得到的防火墙规则数据会在OVN中丢失;通过定时检查Neutron防火墙请求参数和OVN中记录的防火墙规则数据是否对应一致,并对不一致的数据进行消除,保证了两者数据的一致性。
本发明提供一种虚拟防火墙的设置方法、装置、电子设备和计算机存储介质,所述方法包括:接收防火墙请求数据;使用防火墙插件对所述防火墙请求数据进行解析,得到防火墙请求参数;使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;通过OVN获取所述防火墙规则数据,进行虚拟防火墙的设置;如此,对于虚拟防火墙的设置,使用防火墙插件和防火墙驱动器对防火墙请求数据进行处理并发送至OVN,OVN基于获取的数据进行虚拟防火墙的设置;该方法无需采用iptables进行虚拟防火墙的设置;进而,解决了因iptables数目多造成的网络拥塞问题,提升虚拟防火墙的性能。
为了能够更加体现本发明的目的,在本发明上述实施例的基础上,进行进一步的举例说明。
图2为本发明的另一种虚拟防火墙的设置方法的流程示意图,如图2所示,主要包括第一软件模块、第二软件模块、第三软件模块、第四软件模块和第五软件模块。
其中,第一软件模块用于实现应用程序接口(Application ProgrammingInterface,API)功能,比如在实际应用中该第一软件模块可以为Neutron-server;第二软件模块用于实现读写neutron DB和下发参数给driver功能,比如在实际应用中该第二软件模块可以为firewall v1 plugin;第三软件模块用于实现将firewall rule进行转换并下发到OVN的功能,比如在实际应用中该第三软件模块可以为firewall v1 driver;第四软件模块用于使用OVSDB协议创建一个与ovnnb_nb交互的应用,比如在实际应用中该第四软件模块可以为ovsdbapp,这里,需要实现与OVN Router_Policy交互的接口,保证driver发送的Policy能够写入新增接口(NB);第五软件模块用于实现OVN PBR,比如在实际应用中该第五软件模块可以为OVN;第五软件模块可以通过在新数据表(Logical_Router_Policy)中新增external_ids字段;示例性地,基于该新增字段,OVN Router_Policy能够通过指定Policy UUID来删除Logical Router中指定的Policy。
为了便于理解,下面结合具体的应用场景对图2中虚拟防火墙的设置流程进行说明;这里,第一软件模块具体为Neutron-server、第二软件模块具体为firewall v1plugin、第三软件模块具体为firewall v1 driver、第四软件模块具体为ovsdbapp、第五软件模块具体为OVN;结合图2可以看出,本发明使用上述的五个软件模块进行虚拟防火墙的设置,包括以下步骤:
步骤20:第一软件模块(其具体为Neutron-server)接收防火墙请求数据。
在一种实施方式中,Neutron-server通过建立WSGI server,用于接收用户的防火墙请求数据,并传递给firewall v1 plugin。
步骤21:第二软件模块(其具体为Firewall v1 plugin)对防火墙请求数据进行解析处理。
在一种实施方式中,Firewall v1 plugin基于预先设定的业务场景需要对防火墙请求数据进行解析,得到防火墙请求参数;将防火墙请求参数按照数据库对应的格式写入数据库进行存储;当防火墙请求参数关联了虚拟路由器,相应的防火墙请求参数会传递给firewall v1 driver。
步骤22:第三软件模块(其具体为Firewall v1 driver)对Neutron的防火墙请求参数进行转换处理。
在一种实施方式中,对Firewall v1 plugin传递而来的防火墙参数进行转换处理,转换成OVN PBR,并借助ovsdbapp建立的连接发送给OVN。
步骤23:第四软件模块(其具体为ovsdbapp)为Neutron和第五软件模块(其具体为OVN)建立数据连接。
在一种实施方式中,ovsdbapp通过ovsdb-idl建立与OVN接口的连接,并将转换后的Neutron防火墙规则数据OVN PBR发送给OVN。
步骤24:OVN配置具体的防火墙规则。
在一种实施方式中,OVN PRB记录了由firewall v1 driver发送而来的防火墙规则数据,并通过转换流表的方式将具体的防火墙规则下发到OVS中,真正实现防火墙功能。
步骤25:防火墙请求数据到OVN的自动同步。
在一种实施方式中,在Neutron的firewall v1 plugin中,设置了一个自动同步工具,用来将Neutron防火墙请求数据同步到OVN。当OVN断联或者故障时,基于Neutron的防火墙请求数据得到的防火墙规则数据会在OVN中丢失;为了保证Neutron防火墙请求数据和OVN记录的防火墙规则数据一致,就需要定时的检查Neutron防火墙请求数据是否与OVN中的记录一致。如果一致,则向Neutron-server返回响应数据,该响应数据表明防火墙请求数据已经成功记录在OVN中,Neutron-server可以继续接收用户的防火墙请求数据。
本发明中,在Neutron+OVN场景下,在Neutron中新增Firewall v1 plugin、利用Firewall v1 driver得到OVN PBR,实现一种基于OVN的Neutron防火墙功能,为用户的虚拟私有网络提供安全保护。
在Neutron的软件架构中,一个功能的实现通常由Neutron-server+plugin+driver这样的模式来实现。在neutron firewall v1中,已经实现了plugin和driver,但由于之前的driver是通过iptables来实现防火墙功能;而本发明使用OVN Router_Policy来实现;通过对driver进行重新设计,使其能够操作OVN、下发Policy。
可以看出,本发明实施例中,将Neutron的防火墙参数进行转换并传递给OVN、来实现防火墙功能,一方面,解决了原生Neutron防火墙的性能受限,提升了Neutron防火墙的网络性能;另一方面,保证Neutron防火墙参数能够正确地解析、并操作OVN,解决了Neutron防火墙和OVN的适配问题;进一步地,通过软件的模块化,可以将控制面从数据面解耦,控制面通过规范的接口与转发面的设备进行通信,可以更精确地实现网络数据流的转发和控制,进行虚拟防火墙的实现。
图3为本发明的虚拟防火墙的设置装置的组成结构示意图,如图3所示,装置包括:接收模块300、解析模块301、转换模块302和设置模块303,其中:
接收模块300,用于接收防火墙请求数据;
解析模块301,用于使用防火墙插件对所述防火墙请求数据进行解析,得到解析后的防火墙请求数据;所述解析后的防火墙请求数据包括防火墙请求参数;
转换模块302,用于使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;
设置模块303,用于通过OVN获取所述防火墙规则数据,进行虚拟防火墙的设置。
在一些实施例中,所述解析模块301,用于使用防火墙插件对所述防火墙请求数据进行解析,得到防火墙请求参数,包括:
使用防火墙插件,并基于预先设定的业务场景需要对所述防火墙请求数据进行解析,得到防火墙请求参数。
在一些实施例中,所述装置还包括判断模块,所述判断模块,用于:
对所述防火墙请求数据创建通用唯一识别码,在OVN获取所述防火墙规则数据的同时得到所述通用唯一识别码;
按照预设时间周期性地将所述OVN的目标数据写入所述防火墙插件中;所述目标数据至少包括所述防火墙规则数据;
判断所述防火墙插件中所述目标数据中是否包含所述通用唯一识别码,得到判断结果;
在判断结果为否的情况下,对所述通用唯一识别码进行同步。
在一些实施例中,所述判断模块,还用于:
重新使用防火墙插件对所述防火墙请求数据进行解析,得到所述防火墙请求参数;
使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;
通过OVN再次获取防火墙规则数据和所述通用唯一识别码,对所述通用唯一识别码进行同步。
在一些实施例中,所述转换模块302,还用于:
基于OVSDB协议,将所述防火墙规则数据发送至OVN。
在一些实施例中,所述设置模块303,用于通过OVN获取所述防火墙规则数据,进行虚拟防火墙的设置,包括:
通过OVN获取所述防火墙规则数据;
将所述防火墙规则数据通过转换流表的方式下发到OVS中,进行虚拟防火墙的设置。
在实际应用中,上述接收模块300、解析模块301、转换模块302和设置模块303均可以由位于电子设备中的处理器实现,该处理器可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
具体来讲,本实施例中的一种虚拟防火墙的设置方法对应的计算机程序指令可以被存储在光盘、硬盘、U盘等存储介质上,当存储介质中的与一种虚拟防火墙的设置方法对应的计算机程序指令被一电子设备读取或被执行时,实现前述实施例的任意一种虚拟防火墙的设置方法。
基于前述实施例相同的技术构思,参见图4,其示出了本发明提供的电子设备400,可以包括:存储器401和处理器402;其中,
存储器401,用于存储计算机程序和数据;
处理器402,用于执行存储器中存储的计算机程序,以实现前述实施例的任意一种虚拟防火墙的设置方法。
在实际应用中,上述存储器401可以是易失性存储器(volatile memory),例如RAM;或者非易失性存储器(non-volatile memory),例如ROM、快闪存储器(flash memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,并向处理器402提供指令和数据。
上述处理器402可以为ASIC、DSP、DSPD、PLD、FPGA、CPU、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的增强现实云平台,用于实现上述处理器功能的电子器件还可以为其它,本发明实施例不作具体限定。
在一些实施例中,本发明实施例提供的装置具有的功能或包含的模块可以用于执行上文方法实施例描述的方法,其具体实现可以参照上文方法实施例的描述,为了简洁,这里不再赘述
上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述
本发明所提供的各方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本发明所提供的各产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本发明所提供的各方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (10)

1.一种虚拟防火墙的设置方法,其特征在于,所述方法包括:
接收防火墙请求数据;
使用防火墙插件对所述防火墙请求数据进行解析,得到防火墙请求参数;
使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;
通过软件定义网络控制器OVN获取所述防火墙规则数据,进行虚拟防火墙的设置。
2.根据权利要求1所述的方法,其特征在于,所述使用防火墙插件对所述防火墙请求数据进行解析,得到防火墙请求参数,包括:
使用防火墙插件,并基于预先设定的业务场景需要对所述防火墙请求数据进行解析,得到防火墙请求参数。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述防火墙请求数据创建通用唯一识别码,在OVN获取所述防火墙规则数据的同时得到所述通用唯一识别码;
按照预设时间周期性地将所述OVN的目标数据写入所述防火墙插件中;所述目标数据至少包括所述防火墙规则数据;
判断所述防火墙插件中所述目标数据中是否包含所述通用唯一识别码,得到判断结果;
在判断结果为否的情况下,对所述通用唯一识别码进行同步。
4.根据权利要求3所述的方法,其特征在于,所述对通用唯一识别码进行同步,包括:
重新使用防火墙插件对所述防火墙请求数据进行解析,得到所述防火墙请求参数;
使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;
通过OVN再次获取防火墙规则数据和所述通用唯一识别码,对所述通用唯一识别码进行同步。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于开放虚拟交换机数据库OVSDB协议,将所述防火墙规则数据发送至OVN。
6.根据权利要求1所述的方法,其特征在于,所述通过OVN获取所述防火墙规则数据,进行虚拟防火墙的设置,包括:
通过OVN获取所述防火墙规则数据;
将所述防火墙规则数据通过转换流表的方式下发到虚拟交换机OVS中,进行虚拟防火墙的设置。
7.一种虚拟防火墙的设置装置,其特征在于,所述装置包括:
接收模块,用于接收防火墙请求数据;
解析模块,用于使用防火墙插件对所述防火墙请求数据进行解析,得到解析后的防火墙请求数据;所述解析后的防火墙请求数据包括防火墙请求参数;
转换模块,用于使用防火墙驱动器对所述防火墙请求参数进行转换,得到防火墙规则数据;
设置模块,用于通过软件定义网络控制器OVN获取所述防火墙规则数据,进行虚拟防火墙的设置。
8.根据权利要求7所述的装置,其特征在于,所述解析模块,用于使用防火墙插件对所述防火墙请求数据进行解析,得到防火墙请求参数,包括:
使用防火墙插件,并基于预先设定的业务场景需要对所述防火墙请求数据进行解析,得到防火墙请求参数。
9.一种电子设备,其特征在于,所述设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现权利要求1至6任一项所述的方法。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6任一项所述的方法。
CN202011176720.5A 2020-10-28 2020-10-28 一种虚拟防火墙的设置方法、装置、电子设备和存储介质 Active CN114422160B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011176720.5A CN114422160B (zh) 2020-10-28 2020-10-28 一种虚拟防火墙的设置方法、装置、电子设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011176720.5A CN114422160B (zh) 2020-10-28 2020-10-28 一种虚拟防火墙的设置方法、装置、电子设备和存储介质

Publications (2)

Publication Number Publication Date
CN114422160A true CN114422160A (zh) 2022-04-29
CN114422160B CN114422160B (zh) 2024-01-30

Family

ID=81260349

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011176720.5A Active CN114422160B (zh) 2020-10-28 2020-10-28 一种虚拟防火墙的设置方法、装置、电子设备和存储介质

Country Status (1)

Country Link
CN (1) CN114422160B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115277043A (zh) * 2022-05-11 2022-11-01 北京中安星云软件技术有限公司 一种实现api审计防火墙的方法及系统
CN115412466A (zh) * 2022-08-26 2022-11-29 济南浪潮数据技术有限公司 一种流量监控方法、装置及其介质

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105530259A (zh) * 2015-12-22 2016-04-27 华为技术有限公司 报文过滤方法及设备
CN106126318A (zh) * 2016-07-05 2016-11-16 云南大学 一种Openstack云平台中虚拟机的动态迁移方法
CN107003860A (zh) * 2014-08-19 2017-08-01 华为技术有限公司 一种软件定义网络控制器及其创建方法
CN107357660A (zh) * 2017-07-06 2017-11-17 华为技术有限公司 一种虚拟资源的分配方法及装置
US20190052549A1 (en) * 2016-05-06 2019-02-14 Enterpriseweb Llc Systems and methods for domain-driven design and execution of metamodels
US20190079789A1 (en) * 2016-03-18 2019-03-14 Telefonaktiebolaget Lm Ericsson (Publ) Using nano-services to secure multi-tenant networking in datacenters
CN110377661A (zh) * 2019-06-27 2019-10-25 浪潮思科网络科技有限公司 一种OpenDaylight自动同步Firewall设备数据的方法
US10469317B1 (en) * 2017-03-29 2019-11-05 Juniper Networks, Inc. Virtualized network function descriptors for virtualized network function configuration
KR20200058816A (ko) * 2018-11-20 2020-05-28 광주과학기술원 에스디엔의 방화벽 전개 장치, 에스디엔의 방화벽 전개 방법, 및 이 장치 또는 방법이 적용되는 네트워크
CN111654493A (zh) * 2020-06-02 2020-09-11 山东汇贸电子口岸有限公司 Openstack中拦截指定流量的方法、系统、存储介质及电子设备
CN111740962A (zh) * 2020-05-27 2020-10-02 上海重盟信息技术有限公司 智能化网络安全监测系统

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107003860A (zh) * 2014-08-19 2017-08-01 华为技术有限公司 一种软件定义网络控制器及其创建方法
CN105530259A (zh) * 2015-12-22 2016-04-27 华为技术有限公司 报文过滤方法及设备
US20190079789A1 (en) * 2016-03-18 2019-03-14 Telefonaktiebolaget Lm Ericsson (Publ) Using nano-services to secure multi-tenant networking in datacenters
US20190052549A1 (en) * 2016-05-06 2019-02-14 Enterpriseweb Llc Systems and methods for domain-driven design and execution of metamodels
CN106126318A (zh) * 2016-07-05 2016-11-16 云南大学 一种Openstack云平台中虚拟机的动态迁移方法
US10469317B1 (en) * 2017-03-29 2019-11-05 Juniper Networks, Inc. Virtualized network function descriptors for virtualized network function configuration
CN107357660A (zh) * 2017-07-06 2017-11-17 华为技术有限公司 一种虚拟资源的分配方法及装置
KR20200058816A (ko) * 2018-11-20 2020-05-28 광주과학기술원 에스디엔의 방화벽 전개 장치, 에스디엔의 방화벽 전개 방법, 및 이 장치 또는 방법이 적용되는 네트워크
CN110377661A (zh) * 2019-06-27 2019-10-25 浪潮思科网络科技有限公司 一种OpenDaylight自动同步Firewall设备数据的方法
CN111740962A (zh) * 2020-05-27 2020-10-02 上海重盟信息技术有限公司 智能化网络安全监测系统
CN111654493A (zh) * 2020-06-02 2020-09-11 山东汇贸电子口岸有限公司 Openstack中拦截指定流量的方法、系统、存储介质及电子设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
YAO-YU YANG ETAL: "《Implementation of Network Traffic Monitor System with SDN》", 《IEEE》 *
祖立军;杜学凯;周雍恺;刘国宝;杨阳;吴杰;吴承荣;: "基于SDN的金融云试验平台虚拟网络研究", 计算机应用与软件, no. 06 *
黄志兰 等: "《云资源池集成虚拟防火墙方案及关键技术》", 《中国电信》, no. 5, pages 141 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115277043A (zh) * 2022-05-11 2022-11-01 北京中安星云软件技术有限公司 一种实现api审计防火墙的方法及系统
CN115412466A (zh) * 2022-08-26 2022-11-29 济南浪潮数据技术有限公司 一种流量监控方法、装置及其介质

Also Published As

Publication number Publication date
CN114422160B (zh) 2024-01-30

Similar Documents

Publication Publication Date Title
Alam et al. A survey of network virtualization techniques for Internet of Things using SDN and NFV
CN107409089B (zh) 一种在网络引擎中实施的方法及虚拟网络功能控制器
EP2880829B1 (en) Adaptive infrastructure for distributed virtual switch
US20160301603A1 (en) Integrated routing method based on software-defined network and system thereof
US20190268384A1 (en) Security-on-demand architecture
US11848981B2 (en) Secure multi-directional data pipeline for data distribution systems
CN112104754B (zh) 网络代理方法、系统、装置、设备及存储介质
CN109088820B (zh) 一种跨设备链路聚合方法、装置、计算装置和存储介质
US11645144B2 (en) Methods and systems securing an application based on auto-learning and auto-mapping of application services and APIs
CN105051688A (zh) 经扩展的标记联网
CN113472729B (zh) 基于角色的访问控制策略自动生成
CN112187491A (zh) 服务器的管理方法、装置和设备
EP3226516B1 (en) Unified data networking across heterogeneous networks
CN114422160B (zh) 一种虚拟防火墙的设置方法、装置、电子设备和存储介质
CN112385194B (zh) 远程网络之间的状态分组传输
KR102184114B1 (ko) 네트워크 보안 서비스를 제공하기 위한 방법 및 이를 위한 장치
CN110391922B (zh) 一种业务平台的版本提示方法和装置
CN113873041B (zh) 报文传输方法、装置、网络设备及计算机可读存储介质
KR101883712B1 (ko) 네트워크 기능 가상화 시스템을 운용하는 방법, 장치 및 컴퓨터 프로그램
CN114338496B (zh) 一种资源转发方法、装置、终端和计算机存储介质
JP7383145B2 (ja) ネットワークサービス処理方法、システム及びゲートウェイデバイス
US11422845B2 (en) Native cloud live traffic migration to counter suspected harmful traffic
CN115883509A (zh) 使用源标识符进行源标识的边缘设备
CN114930776A (zh) 混合网络环境中的流量镜像处理
Singh Implementing Cisco Networking Solutions: Configure, implement, and manage complex network designs

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant