CN108683553A - 故障注入的方法和装置 - Google Patents
故障注入的方法和装置 Download PDFInfo
- Publication number
- CN108683553A CN108683553A CN201810294045.2A CN201810294045A CN108683553A CN 108683553 A CN108683553 A CN 108683553A CN 201810294045 A CN201810294045 A CN 201810294045A CN 108683553 A CN108683553 A CN 108683553A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- message
- nodal operation
- notification information
- kernel module
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请提供了一种故障注入的方法和装置,该方法应用于云化网络中,该云化网络包括一个或多个虚拟机,其中,每个虚拟机包括内核模块和节点操作代理,该方法包括:该一个或多个虚拟机中的第一虚拟机的内核模块从第一虚拟机的节点操作代理获取报文特征信息;第一虚拟机的内核模块对该第一虚拟机的网络报文进行监控;在第一虚拟机的内核模块监控到与报文特征信息匹配的第一报文时,对第一报文执行延迟操作,并向该一虚拟机的节点操作代理发送第一通知信息;第一虚拟机的节点操作代理根据第一通知信息,执行第一对象的故障注入操作,其中,第一对象用于承载第一报文对应的业务,能够在有效对象的有效时机注入故障,有助于提升云化网络的可靠性。
Description
技术领域
本申请涉及计算机技术领域,并且更具体地,涉及一种故障注入的方法和装置。
背景技术
目前,越来越多的运营商开始发展云化网络。云化网络的技术核心是广义的软件定义网络。相关软件是运行在云化基础设施上的。运营商任务电信级可靠性是云化网络商用部署成功的关键。因此能否在云化基础设施上构筑可靠性水平较高的网络,是帮助运营商云化网络商业成功的关键。验证云化网络可靠性最主要的手段就是故障演练。
在现有技术中,故障演练方案是通过随机注入故障的方式测试网络的可靠性。但是这种方式随机性较强,问题可复现性差,导致的最直接的问题是需要增加测试次数才能找到低概率发生的潜在问题,比较浪费时间、人力和物力。因此,亟需提出一种故障注入的方案提高云化网络的可靠性。
发明内容
本申请提供一种故障注入的方法和装置,能够实现故障注入的时机精准和对象精准,有助于提高云化网络的可靠性。
第一方面,提供了一种故障注入的方法,所述方法应用于云化网络中,所述云化网络包括一个或多个虚拟机,其中,每个虚拟机包括内核模块和节点操作代理,所述方法包括:
所述一个或多个虚拟机中的第一虚拟机的内核模块从所述第一虚拟机的节点操作代理获取报文特征信息;
所述第一虚拟机的内核模块对所述第一虚拟机的网络报文进行监控;
在所述第一虚拟机的内核模块监控到与所述报文特征信息匹配的第一报文时,对所述第一报文执行延迟操作,并向所述第一虚拟机的节点操作代理发送第一通知信息,所述第一通知信息用于指示所述第一虚拟机的内核模块已监控到与所述报文特征信息匹配的第一报文;
所述第一虚拟机的节点操作代理根据所述第一通知信息,执行第一对象的故障注入操作,其中,所述第一对象用于承载所述第一报文对应的业务。
在本申请实施例中,第一虚拟机的内核模块通过对所述第一虚拟机的网络报文进行监控,并在监控到与报文特征信息匹配的第一报文时,对第一报文执行延迟操作,使得所述第一虚拟机的节点操作代理根据所述第一通知信息,执行第一对象的故障注入操作,能够实现故障注入的时机精准和实例精准,有助于提高云化网络的可靠性。
可选地,第一对象可以是进程或实例。
在一种可能的实现方式中,所述第一对象是所述第一虚拟机中的对象,其中,所述第一虚拟机的节点操作代理根据所述第一通知信息,执行所述第一对象的故障注入操作,包括:
所述第一虚拟机的节点操作代理根据所述第一通知信息,查询所述第一对象对应的故障信息;
所述第一虚拟机的节点操作代理根据所述第一对象对应的故障信息,在所述第一对象注入故障。
因此,若第一对象在第一虚拟机中,则所述第一虚拟机的节点操作代理可以对第一对象执行故障注入操作。
可选地,所述方法还包括:
所述第一虚拟机的节点操作代理向所述第一虚拟机的内核模块发送第二通知信息,所述第二通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
所述第一虚拟机的内核模块在收到所述第二通知信息后,发送所述第一报文。
因此,若第一对象在第一虚拟机中,在所述第一虚拟机的节点操作代理对第一对象执行故障注入操作后,所述第一虚拟机的内核模块可以放行延迟的第一报文。
在另一种可能的实现方式中,所述云化网络包括多个虚拟机,所述第一对象是所述多个虚拟机中的第二虚拟机中的对象,其中,所述第一虚拟机的节点操作代理根据所述第一通知信息,执行所述第一对象的故障注入操作,包括:
所述第一虚拟机的节点操作代理向所述第二虚拟机的节点操作代理发送第三通知信息,所述第三通知信息用于指示所述第二虚拟机的节点操作代理在所述第一对象注入故障。
因此,若第一对象在第二虚拟机中,则所述第一虚拟机的节点操作代理可以通知第二节点操作代理对第一对象执行故障注入操作,从而实现故障注入的实例精准。
可选地,所述方法还包括:
所述第一虚拟机的节点操作代理接收所述第二虚拟机的节点操作代理发送的故障注入成功消息,所述故障注入成功消息表示所述第二虚拟机的节点操作代理已在所述第一对象中注入故障;
在所述第一虚拟机的节点操作代理接收到所述故障注入成功消息后,所述第一虚拟机的节点操作代理向所述第一虚拟机的内核模块发送第四通知信息,所述第四通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
所述第一虚拟机的内核模块在收到所述第四通知信息后,发送所述第一报文。
因此,若第一对象在第二虚拟机中,在所述第二虚拟机的节点操作代理对第一对象执行故障注入操作后,所述第二虚拟机的内核模块可以放行延迟的第一报文。
可选地,所述云化网络还包括控制台,所述方法还包括:
所述第一虚拟机的节点操作代理接收所述控制台发送的所述报文特征信息。
因此,第一虚拟机的节点操作代理可以将控制台下发的所述报文特征信息,告知给第一虚拟机的内核模块。
可选地,所述方法还包括:
所述第一虚拟机的节点操作代理接收所述控制台发送的第一信息,所述第一信息用于指示所述第一对象所在的虚拟机。
因此,所述第一虚拟机的节点操作代理可以基于控制台下发的第一信息,得到第一对象所在的虚拟机。
第二方面,提供了一种虚拟机,所述虚拟机应用于云化网络中,所述云化网络包括一个或多个虚拟机,其中,每个虚拟机包括内核模块和节点操作代理,所述虚拟机是所述一个或多个虚拟机中的第一虚拟机,所述虚拟机包括:
所述第一虚拟机的内核模块,用于从所述第一虚拟机的节点操作代理获取报文特征信息;还用于对所述第一虚拟机的网络报文进行监控;在所述第一虚拟机的内核模块监控到与所述报文特征信息匹配的第一报文时,对所述第一报文执行延迟操作,并向所述第一虚拟机的节点操作代理发送第一通知信息,所述第一通知信息用于指示所述第一虚拟机的内核模块已监控到与所述报文特征信息匹配的第一报文;
所述第一虚拟机的节点操作代理,用于根据所述第一通知信息,执行第一对象的故障注入操作,其中,所述第一对象用于承载所述第一报文对应的业务。
在本申请实施例中,第一虚拟机的内核模块通过对所述第一虚拟机的网络报文进行监控,并在监控到与报文特征信息匹配的第一报文时,对第一报文执行延迟操作,使得所述第一虚拟机的节点操作代理根据所述第一通知信息,执行第一对象的故障注入操作,能够实现故障注入的时机精准和实例精准,有助于提高云化网络的可靠性。
可选地,第一对象可以是进程或实例。
在一种可能的实现方式中,所述第一对象是所述第一虚拟机中的对象,其中,所述第一虚拟机的节点操作代理根据所述第一通知信息,执行第一对象的故障注入操作,具体包括:
根据所述第一通知信息,查询所述第一对象对应的故障信息;
根据所述第一对象对应的故障信息,在所述第一对象注入故障。
因此,若第一对象在第一虚拟机中,则所述第一虚拟机的节点操作代理可以对第一对象执行故障注入操作。
可选地,所述第一虚拟机的节点操作代理还用于:
向所述第一虚拟机的内核模块发送第二通知信息,所述第二通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
对应的,所述第一虚拟机的内核模块用于:在收到所述第二通知信息后,发送所述第一报文。
因此,若第一对象在第一虚拟机中,在所述第一虚拟机的节点操作代理对第一对象执行故障注入操作后,所述第一虚拟机的内核模块可以放行延迟的第一报文。
在另一种可能的实现方式中,所述云化网络包括多个虚拟机,所述第一对象是所述多个虚拟机中的第二虚拟机中的对象,其中,所述第一虚拟机的节点操作代理根据所述第一通知信息,执行所述第一对象的故障注入操作,具体包括:
向所述第二虚拟机的节点操作代理发送第三通知信息,所述第三通知信息用于指示所述第二虚拟机的节点操作代理在所述第一对象注入故障。
因此,若第一对象在第二虚拟机中,则所述第一虚拟机的节点操作代理可以通知第二节点操作代理对第一对象执行故障注入操作,从而实现故障注入的实例精准。
可选地,所述第一虚拟机的节点操作代理还用于:接收所述第二虚拟机的节点操作代理发送的故障注入成功消息,所述故障注入成功消息表示所述第二虚拟机的节点操作代理已在所述第一对象中注入故障;
在所述第一虚拟机的节点操作代理接收到所述故障注入成功消息后,向所述第一虚拟机的内核模块发送第四通知信息,所述第四通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
对应的,所述第一虚拟机的内核模块用于:在收到所述第四通知信息后,发送所述第一报文。
因此,若第一对象在第二虚拟机中,在所述第二虚拟机的节点操作代理对第一对象执行故障注入操作后,所述第二虚拟机的内核模块可以放行延迟的第一报文。
可选地,所述云化网络还包括控制台,所述第一虚拟机的节点操作代理还用于:接收所述控制台发送的所述报文特征信息。因此,第一虚拟机的节点操作代理可以将控制台下发的所述报文特征信息,告知给第一虚拟机的内核模块。
可选地,所述第一虚拟机的节点操作代理还用于:接收所述控制台发送的第一信息,所述第一信息用于指示所述第一对象所在的虚拟机。因此,所述第一虚拟机的节点操作代理可以基于控制台下发的第一信息,得到第一对象所在的虚拟机。
第三方面,提供了一种云化网络,包括:第一虚拟机,所述第一虚拟机是所述云化网络中的一个或多个虚拟机中的第一虚拟机,其中,所述第一虚拟机包括内核模块和节点操作代理;
所述第一虚拟机的内核模块,用于从所述第一虚拟机的节点操作代理获取报文特征信息;还用于对所述第一虚拟机的网络报文进行监控;在所述第一虚拟机的内核模块监控到与所述报文特征信息匹配的第一报文时,对所述第一报文执行延迟操作,并向所述第一虚拟机的节点操作代理发送第一通知信息,所述第一通知信息用于指示所述第一虚拟机的内核模块已监控到与所述报文特征信息匹配的第一报文;
所述第一虚拟机的节点操作代理,用于根据所述第一通知信息,执行第一对象的故障注入操作,其中,所述第一对象用于承载所述第一报文对应的业务。
在本申请实施例中,第一虚拟机的内核模块通过对所述第一虚拟机的网络报文进行监控,并在监控到与报文特征信息匹配的第一报文时,对第一报文执行延迟操作,使得所述第一虚拟机的节点操作代理根据所述第一通知信息,执行第一对象的故障注入操作,能够实现故障注入的时机精准和实例精准,有助于提高云化网络的可靠性。
可选地,第一对象可以是进程或实例。
在一种可能的实现方式中,所述第一对象是所述第一虚拟机中的对象,其中,所述第一虚拟机的节点操作代理根据所述第一通知信息,执行第一对象的故障注入操作,具体包括:
根据所述第一通知信息,查询所述第一对象对应的故障信息;
根据所述第一对象对应的故障信息,在所述第一对象注入故障。
因此,若第一对象在第一虚拟机中,则所述第一虚拟机的节点操作代理可以对第一对象执行故障注入操作。
可选地,所述第一虚拟机的节点操作代理还用于:
向所述第一虚拟机的内核模块发送第二通知信息,所述第二通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
对应的,所述第一虚拟机的内核模块用于:在收到所述第二通知信息后,发送所述第一报文。
因此,若第一对象在第一虚拟机中,在所述第一虚拟机的节点操作代理对第一对象执行故障注入操作后,所述第一虚拟机的内核模块可以放行延迟的第一报文。
在另一种可能的实现方式中,所述云化网络还包括第二虚拟机,所述第一对象是所述第二虚拟机中的对象,其中,所述第一虚拟机的节点操作代理根据所述第一通知信息,执行所述第一对象的故障注入操作,具体包括:
向所述第二虚拟机的节点操作代理发送第三通知信息,所述第三通知信息用于指示所述第二虚拟机的节点操作代理在所述第一对象注入故障。
因此,若第一对象在第二虚拟机中,则所述第一虚拟机的节点操作代理可以通知第二节点操作代理对第一对象执行故障注入操作,从而实现故障注入的实例精准。
可选地,所述第一虚拟机的节点操作代理还用于:接收所述第二虚拟机的节点操作代理发送的故障注入成功消息,所述故障注入成功消息表示所述第二虚拟机的节点操作代理已在所述第一对象中注入故障;
在所述第一虚拟机的节点操作代理接收到所述故障注入成功消息后,向所述第一虚拟机的内核模块发送第四通知信息,所述第四通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
对应的,所述第一虚拟机的内核模块用于:在收到所述第四通知信息后,发送所述第一报文。
因此,若第一对象在第二虚拟机中,在所述第二虚拟机的节点操作代理对第一对象执行故障注入操作后,所述第二虚拟机的内核模块可以放行延迟的第一报文。
可选地,所述云化网络还包括控制台,所述第一虚拟机的节点操作代理还用于:接收所述控制台发送的所述报文特征信息。因此,第一虚拟机的节点操作代理可以将控制台下发的所述报文特征信息,告知给第一虚拟机的内核模块。
可选地,所述第一虚拟机的节点操作代理还用于:接收所述控制台发送的第一信息,所述第一信息用于指示所述第一对象所在的虚拟机。因此,所述第一虚拟机的节点操作代理可以基于控制台下发的第一信息,得到第一对象所在的虚拟机。
第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序,该程序使得虚拟机或云化网络产品执行上述任一方面,及其各种实现方式中的任一种故障注入的方法。
第五方面,本申请还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面中的故障注入的方法。
第六方面,提供了一种故障注入的装置,该装置包括处理器、存储器和收发器。处理器与存储器和收发器连接。存储器用于存储指令,处理器用于执行该指令,收发器用于在处理器的控制下与其他网元进行通信。该处理器执行该存储器存储的指令时,该执行使得该处理器执行上述各方面中的故障注入的方法。
附图说明
图1是应用本申请实施例的一个云化网络的组件示意图。
图2是根据本申请实施例的故障注入的方法的示意性流程图。
图3是根据本申请实施例的内核模块的一个例子的示意性框图。
图4是根据本申请实施例的IP报文过滤器的示意性流程图。
图5是根据本申请实施例的IP报文业务跟踪学习的一个例子的流程图。
图6是根据本申请实施例的网络故障注入特有实现的一个例子的流程图。
图7是根据本申请实施例的跨节点故障注入的一个例子的示意图。
图8是根据本申请实例的一个例子的示意性交互图。
图9是根据本申请实例的另一个例子的示意性交互图。
图10是根据本申请实施例的虚拟机的示意性框图。
图11是根据本申请实施例的云化网络的示意性框图。
图12是根据本申请实施例的故障注入的装置的结构框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例的技术方案应用于基于Linux系统的云化网络产品,比如,运行于Linux系统的虚拟机。进一步地,本申请实施例的技术方案也可以应用于在包括例如,CPU、存储器管理单元(Memory Management Unit,MMU)、内存(也称为存储器)的硬件设备上,该硬件设备所运行的操作系统可以是各种通过线程或进程(包括多个线程)实现业务处理的计算机操作系统,例如,Linux系统、Unux系统等。
图1是应用本申请实施例的一个云化网络100的组件示意图。如图1所示,该云化网络100包括控制台(也可称作总控制台或控制器)和虚拟机(图1中以三个虚拟机为例,即虚拟机1,虚拟机2和虚拟机3,每个虚拟机存在对应的Linux系统),每个虚拟机包括节点操作代理和内核模块。其中,控制台可部署在所有节点操作代理可以连通的任意操作终端上;节点操作代理和内核模块可以部署在云化软件所属的Linux虚拟机上。故障注入的决策由控制台下发;节点操作代理负责执行故障注入的动作,内核模块能够监控业务操作的各个阶段。可选地,控制台通过通信接口与各个虚拟机连接。控制台可以获取每个虚拟机的实例或进程信息。
在本申请实施例中,内核模块包括以下三个功能:(1)解析Linux虚拟机收到和发送的网络报文,发现网络报文与指定特征相匹配时,上报节点操作代理;(2)抓取由节点操作代理指定特征的网络报文,可以指定如:网卡、网络协议(Internet Protocol,IP)、端口等特征的报文;(3)实现部分网络报文相关的故障模式。比如:当使用Linux Netfilter(网络过滤器)机制实现时,通过向Netfilter注册的回调函数的返回值控制是否放行、丢弃网络报文,配合回调函数的其它逻辑,可以实现网络丢包、网络延迟等现网常见故障。
节点操作代理包括以下四个功能:(1)与内核模块通信,向其它模块提供操作内核功能的接口,具体包括:抓取网络报文操作的接口、下发和取消内核实现的故障模式的接口、下发和取消报文特征匹配的接口;(2)抓取网络报文,以使得控制台搜集所有节点操作代理抓取的网络报文后,能够分析报文特征,从而得到用于实现时机精准所需的网络报文特征;(3)收集对象(比如实例)信息,包括:组件角色、进程、CPU、磁盘等信息,以使得控制台搜集所有节点操作代理搜集的信息后,能够分析承载业务的实例在哪个节点上,用于实现实例精准;(4)故障注入,具体即:节点操作代理在监控到内核模块上报的“已监控到指定报文特征”信息后,在节点操作代理或其它节点操作代理上注入所需故障。
控制台包括以下八个功能:(1)与节点操作代理通信;(2)设置测试环境组网,用于部署节点操作代理和内核模块;(3)搜集所有节点操作代理抓取的网络报文,用于分析业务的报文特征;(4)搜集所有节点操作代理抓取的信息,用于分析承载业务的实例在那个节点上;(5)选择承载业务的实例在哪个节点;(6)分析业务的报文特征;(7)提供不同节点操作代理所支持的故障模式;(8)故障分发模块,用于向操作节点下发要注入的故障模式。
图2示出了根据本申请实施例的故障注入的方法200的示意性流程图。所述方法200应用于云化网络中,所述云化网络包括一个或多个虚拟机,每个虚拟机包括内核模块和节点操作代理。如图2所示,所述方法200包括:
S210,所述一个或多个虚拟机中的第一虚拟机的内核模块从所述第一虚拟机的节点操作代理获取报文特征信息。
其中,所述报文特征信息用于内核模块对监控到的报文进行匹配,以得到与报文特征信息相匹配的报文。具体地,报文特征信息可以包括报文五元组信息,具体比如:源IP地址、目的IP地址、协议类型、源端口、目的端口、报文长度等。
可选地,所述报文特征信息可以是控制台下发给第一虚拟机的节点操作代理的。
应理解,这里只是以第一虚拟机为例进行说明,并不对本申请实施例构成限定。
可选地,所述控制台获取所述第一虚拟机的节点操作代理抓取的网络报文;所述控制台根据所述第一虚拟机的节点操作代理抓取的网络报文,向所述第一虚拟机的节点操作代理发送报文特征信息。也就是说,控制台搜集第一虚拟机的节点操作代理抓取的网络报文,分析报文的特征,然后向第一虚拟机的节点操作代理发送报文特征信息。
S220,所述第一虚拟机的内核模块对所述第一虚拟机的网络报文进行监控。
具体地,第一虚拟机的内核模块可以对第一虚拟机的接收和发送的IP报文进行监控,并解析报文的N元组(包括源IP地址、源端口、协议类型、目的IP地址、目的端口、报文长度等),然后与报文特征信息指示的特征进行匹配。如果匹配到了指定特征的IP报文,则立即缓存第一虚拟机中与指定特征的IP报文相关的IP报文,其中,与指定特征的IP报文相关的IP报文具体包括:与指定特征的IP报文的源IP地址、源端口、目的IP地址、目的端口同向或逆向的IP报文。
在具体实现时,内核模块可以使用linux内核提供的Netfilter机制实现。Netfilter机制可以参见现有技术中的描述。Netfilter机制提供的监控网络报文的5个函数挂载点,分别是:PRE_ROUTING、FORWARD、LOCAL_IN、LOCAL_OUT、POST_ROUTING。每个挂载点的函数都可以对通过的网络报文做的操作包括:丢弃、放行、暂存等操作,可用于实现本申请实施中所需的功能。具体地,本申请实施例的内核模块在PRE_ROUTING和POST_ROUTING上挂载同一个网络报文处理函数,同时处理输入和输出的网络报文。在回调函数内实现了网络报文特征分析功能、抓取网络报文功能、时机精准功能和部分网络故障模式。具体而言,对于IPV4报文,回调函数可以是Ipv4FilterPacket;对于IPV6报文,回调函数可以是Ipv6FilterPacket。应理解,本申请实施例对第一报文的类型不作限定,可以是业界常用的报文格式或类型,对此不作具体限定。
在本申请实施例中,图3示出了根据申请实施例的内核模块的一个例子的示意性框图。如图3所示,内核模块(可以通过linux内核提供的Netfilter机制实现)主要包括五个部分:用户态程序与内核模块通信(用于与用户态程序通信),IP报文过滤器,IP报文业务跟踪学习,内核态故障注入公共实现,网络故障注入特有实现。这五个部分的运行上下文都处于上文所说的挂载在PRE_ROUTING和POST_ROUTING的回调函数中。
具体地,“IP报文过滤器”使用Linux内核的Netfilter机制提供的回调函数注册功能,在内核中网络报文传输的路径的关键点PRE_ROUTING和POST_ROUTING上监听或过滤报文实现时机精准的功能。“IP报文过滤器”对Netfilter框架进行封装,以回调函数的方式向上为“IP报文业务跟踪学习”和“网络故障注入特有实现”提供服务。
“IP报文过滤器”专注于将上层模块与Netfilter和Linux中报文的具体表现形式尽最大可能(注重效率的前提下)解耦。这里,如果有回调函数,则通过回调函数的返回值决定Netfilter框架如何处理当前的报文;如果没有回调函数,则不做任何处理。也就是说,在Netfilter提供的注册框架下,回调函数可有可无。图4是根据本申请实施例的IP报文过滤器的示意性流程图。如图4所示,IP报文过滤器通过Netfilter机制截获输入或输出的IP报文。然后,判断IP报文是否来自已设定的网卡,如果是,则进一步判断是否有报文处理回调函数,如果不是,则向Netfilter框架返回报文该如何被处理。接着,如果判断有报文处理回调函数,则使用报文处理回调函数处理报文,并继续判断是否有报文后处理回调函数;如果判断没有报文处理回调函数,则判断是否有报文后处理回调函数。继而,在判断是否有报文后处理回调函数时,如果有报文后处理回调函数,则使用报文后处理回调函数处理报文,并向Netfilter框架返回报文该如何被处理;如果没有报文后处理回调函数,则向Netfilter框架返回报文该如何被处理则结束。其中,报文后处理回调函数用于IP报文业务跟踪学习,具体可以参见下文图5的描述。
“IP报文过滤器”实现了:网络报文解析、网络报文抓取参数设置。网络报文解析会从IP报文中提取报文长度、源IP地址、目的IP地址、封装内容的协议类型等信息,常用的IPv4和IPv6的报文格式可以参考现有技术。网络报文解析会根据IP报文封装内容的协议类型,中提取报文长度、源IP地址、目的IP地址等信息。通常被IP报文封装的协议有传输控制协议(Transmission Control Protocol,TCP)、用户数据报协议(User DatagramProtocol,UDP)、Internet控制报文协议(Internet Control Message Protocol,ICMP)、Internet组管理协议(Internet Group Management Protocol,IGMP)等,相关报文格式请参阅一系列以编号排定的文件(Request For Comments,RFC)文档。需要说明的是,对于更精确的报文匹配,可以通过上述基本的协议分析后到特定协议的报文,再对其载荷进行具体的协议分析。比如,Pcep报文是承载在TCP报文里的,首先会分析TCP报文的头部信息,整个Pcep报文就封装在TCP报文的报文体(也就是载荷)里,若需要进一步分析Pcep报文,则需要对TCP报文载荷进行解析。
“IP报文业务跟踪学习”以回调函数的方式实现,使用了“IP报文过滤器”的“报文后处理回调函数”。“IP报文业务跟踪学习”专注于IP报文记录逻辑。具体而言,图5示出了根据本申请实施例的IP报文业务跟踪学习的一个例子的流程图。如图5所示,在IP报文业务跟踪学习的流程中,IP报文业务跟踪学习使用报文后处理回调函数,并判断IP报文(可以是监控的网络报文)与IP报文记录规则是否匹配,如果匹配,则以环形缓冲区的方式记录IP报文的全部或必要信息;如果不匹配,则结束。
“网络故障注入特有实现”以回调函数的方式实现,使用了“IP报文过滤器”的“报文处理回调函数”。“网络故障注入特有实现”使用“内核态故障注入公共实现”中的基础功能,专注于实现不同类型的“网络故障”,如“IP报文时延故障”,“IP报文丢包故障”,“网络链路断链故障”等。其中,“IP报文时延故障”是本申请实施例实现时机精准的关键。当内核模块匹配到指定特征的报文后,对特征报文所属的IP间的所有报文执行延迟操作,并立刻通知上层应用“已经匹配到了指定特征的报文”,待上层应用完成故障注入后,立刻发送已经延迟的报文。为了便于本领域技术人员理解,这里结合图6中的流程图描述“网络故障注入特有实现”的具体实现过程。如图6所示,“网络故障注入特有实现”使用报文处理回调函数进行网络故障注入的主要步骤包括:步骤510、遍历触发器,触发网络故障;步骤520、遍历执行器,执行网络故障;步骤530、根据执行器返回的参数,决定报文如何被Netfilter框架处理;步骤540、结束。其中,对于上述步骤510,具体的流程包括:501判断是否已遍历完触发器中已注册的故障信息,如果是,则结束,如果不是,则执行502;502判断故障信息是否在待触发状态,如果是,则执行503,如果不是,则转至501;503,判断当前IP报文特征信息与故障信息的触发条件是否匹配,如果匹配,则执行504,如果不匹配,则转至501;504,将故障信息设置为已触发状态。对于上述步骤520,具体的流程包括:511,判断是否已遍历完执行器中已注册的故障信息,如果是,则结束,如果不是,则执行512;512,判断故障信息是否在执行状态,如果是,则执行513,如果不是,则转至511;513,判断当前IP报文特征信息与故障信息的执行条件是否匹配,如果是,则执行514,如果不是,则转至511;514,执行网络故障。应理解,图6中的故障注入属于内核态的故障注入操作,节点操作代理执行的故障注入操作是用户态的故障注入操作,本申请实施例的故障注入形式可以采用内核态,也可以采用用户态,对此不作限定。
“用户态程序与内核模块通信”用于实现应用层与内核模块通信功能。“用户态程序与内核模块通信”可以设计为形式上的半双工的工作方式。应用层通过通信机制下发指令及其数据后,通过通信机制获取对应的反馈信息。目前使用sys文件接口实现通信,具体即:通过write()函数下发指令,通过read()函数读取结果。其中,write()函数和read()函数的具体实现可以参见现有技术。
S230,在所述第一虚拟机的内核模块监控到与所述报文特征信息匹配的第一报文时,对所述第一报文执行延迟操作,并向所述第一虚拟机的节点操作代理发送第一通知信息,所述第一通知信息用于指示所述第一虚拟机的内核模块已监控到与所述报文特征信息匹配的第一报文。这里,对第一报文执行延迟操作的目的在于:使得上层应用的故障注入操作达到精准,这是因为如果直接放行第一报文,再去通知上层应用执行故障注入,那么第一报文的时机已经过了。
具体地,第一虚拟机的内核模块在得到与报文特征信息匹配的报文后,通知第一虚拟机的节点操作代理,使得第一虚拟机的节点操作代理可以执行故障注入操作。故障注入操作的具体技术可以参考现有技术。可选地,故障注入的操作可以是是向系统注入网络类、实例类、存储类、CPU、内存等故障模式,具体使用哪种故障模式可以由用户选择。可选地,故障模式包括以下中的一项或多项:网络断链、错包、报文延时、重复包、报文乱序、网卡关闭、进程退出、进程死循环、僵尸进程状态、进程挂起状态、磁盘满、磁盘丢失、磁盘读写慢、文件句柄耗尽、CPU过载、内存低、物理机掉电等。
S240,所述第一虚拟机的节点操作代理根据所述第一通知信息,执行第一对象的故障注入操作,其中,所述第一对象用于承载所述第一报文对应的业务。
具体地,第一虚拟机的节点操作代理在收到第一通知信息后,执行第一对象的故障注入操作。可选地,第一对象可以是承载业务的进程或实例,即在业务运行过程中会访问该进程或实例。第一虚拟机的节点操作代理需要知道第一报文对应的业务交互是在哪个虚拟机(或节点)上,也需要知道承载业务的实例在哪个虚拟机,然后在能够造成业务影响的虚拟机上注入故障。
相比于现有技术中随机注入故障的方法,本申请实施例的故障注入方法可以将故障模式注入在业务操作的特定阶段,能够测试每个业务阶段的可靠性,避免了将问题遗漏到现网,可以节省宝贵的商业时间,可复现性强,提高了云化网络的可靠性。
这里,第一对象所在的虚拟机可能就是第一虚拟机,也可能是其他虚拟机。控制台可以获知第一对象所在的虚拟机。可选地,所述方法200还包括:
所述控制台获取每个虚拟机的节点操作代理对应的实例信息;
所述控制台根据所述每个虚拟机的节点操作代理对应的实例信息,确定所述第一对象所在的虚拟机;
所述控制台向所述第一虚拟机发送所述第一信息,所述第一信息用于指示所述第一对象所在的虚拟机。
对应地,所述第一虚拟机的节点操作代理接收所述第一信息,从而可以根据第一信息得知第一对象所在的虚拟机。
具体而言,控制台通过通信接口向所有节点操作代理搜集实例信息,涉及的内容包括:业务交互、组件角色、进程、CPU、磁盘等信息等足够用于判断发生业务交互的节点、实例信息和判断承载业务的节点、用于承载业务的对象、实例、进程等信息,然后确定出第一对象所在的虚拟机,并向第一虚拟机通知第一对象所在的虚拟机。第一虚拟机根据第一信息,可以获知第一对象所属的虚拟机。比如,第一对象是第一虚拟机中的对象;或者,第一对象是其他虚拟机中的对象。
情况一,对于第一对象是所述第一虚拟机中的对象,S240包括:
所述第一虚拟机的节点操作代理根据所述第一通知信息,查询所述第一对象对应的故障信息;
所述第一虚拟机的节点操作代理根据所述第一对象对应的故障信息,在所述第一对象注入故障。
具体而言,第一虚拟机的节点操作代理可以在本地的故障管理模块查询第一对象相关的故障信息,如果可以查到,则将故障状态更新为已触发状态,使得该第一对象的故障生效,并更新故障的状态为“执行中”。
进一步地,情况一还可以包括:
所述第一虚拟机的节点操作代理向所述第一虚拟机的内核模块发送第二通知信息,所述第二通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
所述第一虚拟机的内核模块在收到所述第二通知信息后,发送所述第一报文。
也就是说,第一虚拟机的节点操作代理在第一对象注入故障后,可以向第一虚拟机的内核模块通知已完成故障注入操作,使得第一虚拟机的内核模块能够放行第一报文。
情况二,所述云化网络包括多个虚拟机,所述第一对象是所述多个虚拟机中的第二虚拟机中的对象,S240包括:
所述第一虚拟机的节点操作代理向所述第二虚拟机的节点操作代理发送第三通知信息,所述第三通知信息用于指示所述第二虚拟机的节点操作代理在所述第一对象注入故障。
可选地,情况二还包括:
所述第一虚拟机的节点操作代理接收所述第二虚拟机的节点操作代理发送的故障注入成功消息,所述故障注入成功消息表示所述第二虚拟机的节点操作代理已在所述第一对象中注入故障;
在所述第一虚拟机的节点操作代理接收到所述故障注入成功消息后,所述第一虚拟机的节点操作代理向所述第一虚拟机的内核模块发送第四通知信息,所述第四通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
所述第一虚拟机的内核模块在收到所述第四通知信息后,发送所述第一报文。
具体而言,第一虚拟机的节点操作代理在得知第一对象是第二虚拟机的节点操作代理时,向第二虚拟机的节点操作代理发送第二通知信息,使得第二虚拟机的节点操作代理完成第一对象的故障注入操作。然后,第一虚拟机的节点操作代理在收到第二虚拟机的节点操作代理发送的故障注入成功消息后,通知所述第一虚拟机的内核模块放行所述第一报文。
也就是说,当监控业务阶段的虚拟机与需要注入故障的虚拟机不是同一虚拟机的情况下,即第一对象不是第一虚拟机的有效对象,控制台需要支持跨虚拟机或跨节点注入故障。
这里以第一对象在分布式数据库主节点为例进行说明。图7是根据本申请实施例的跨节点故障注入的一个例子的示意图。如图7所示,控制台从各节点操作代理(包括节点操作代理1,节点操作代理2和节点操作代理3)获取每个宿主Linux上运行的实例(或进程)的信息。其中,节点操作代理1对应虚拟机1;节点操作代理2对应虚拟机2;操作代理3对应虚拟机3。其中,虚拟机2是主数据库所在的虚拟机;虚拟机3是备数据库所在的虚拟机,虚拟机1负责监控业务交互的虚拟机。控制台通过分析并找到第一对象所属的主数据库在节点操作代理2的宿主Linux虚拟机上,向虚拟机1的节点操作代理下发通知,以便于通知节点操作代理2进行故障注入操作。虚拟机1的内核模块在监控到指定特征的报文后,通知节点操作代理2执行故障注入操作。最后,节点操作代理2注入杀死主数据库的故障操作。
为了便于本领域技术人员理解本申请实施例的技术方案,下面将结合图8和图9中的例子描述本申请实施例。具体地,节点操作代理可以包括故障注入模块和故障管理模块。如图8所示,该例是以需要注入故障的实例在虚拟机1中为例进行说明的,具体地:
701,虚拟机1的内核模块负责监控IP报文。
可选地,上述内核模块可以部署在软件定义网络(Software Defined Network,SDN)控制器所属的虚拟机上的报文监控模块,用于对本虚拟机接收和发送的IP报文进行监控。
702,虚拟机1的内核模块在监控到与报文特征信息匹配的报文后,延迟符合报文特征的报文。
703,虚拟机1的内核模块向虚拟机1的节点操作代理的故障注入模块发送通知注入时机。也就是说,通知注入时机用于告诉虚拟机1的节点操作代理的故障注入模块注入故障的时机或时刻已经到了。
704,虚拟机1的节点操作代理的故障注入模块基于通知注入时机,向虚拟机1的节点操作代理的故障管理模块查询与该注入时机相关的故障信息。比如,该故障信息可以为实例类故障。
可选地,虚拟机1的节点操作代理的故障管理模块可以给虚拟机1的节点操作代理的故障注入模块返回故障信息。
705,虚拟机1的节点操作代理的故障注入模块执行故障注入操作。
具体地,虚拟机1的节点操作代理的故障注入模块可以更新故障状态为“已触发”,并使得该实例类故障生效,将故障状态更新为“执行中”。
706,虚拟机1的节点操作代理的故障注入模块向虚拟机1的内核模块通知注入时机处理完成。
当注入时机处理完成的消息超时后,虚拟机1的内核模块要立即放行暂时拦截的报文。
707,虚拟机1的内核模块放行该报文。
可选地,在虚拟机1的内核模块放行该报文时,虚拟机1的节点操作代理的故障注入模块已将故障状态更新为“已完成”。
在图8中的例子中,负责监控报文的业务阶段的虚拟机与需要注入故障的实例所在的虚拟机,是同一个虚拟机。通过上述方法,可以实现时机精准的故障注入,有助于提高云化网络的可靠性。
如图9中的例子所示,该例是以需要注入故障的实例在虚拟机2中为例进行说明的,虚拟机1用于监控报文的业务阶段,具体地:
801,虚拟机1的内核模块负责监控IP报文。
可选地,上述内核模块可以说部署在SDN控制器所属的虚拟机上的报文监控模块,用于对本虚拟机接收和发送的IP报文进行监控。
802,虚拟机1的内核模块在监控到与报文特征信息匹配的报文后,延迟符合报文特征的报文。
803,虚拟机1的内核模块向虚拟机1的节点操作代理的故障注入模块发送通知注入时机。也就是说,通知注入时机用于告诉虚拟机1的节点操作代理的故障注入模块注入故障的时机或时刻已经到了。
804,虚拟机1的节点操作代理的故障注入模块向虚拟机2的节点操作代理的故障注入模块通知注入故障操作。
此时,需要故障注入的实例是在虚拟机2上,因此,虚拟机1的节点操作代理需要通知虚拟机2的节点操作代理执行故障注入操作。具体地,虚拟机1的节点操作代理可以调用节点操作代理2的表现层状态转化RESTful API接口,通知虚拟机2的节点操作代理执行故障注入操作。
805,虚拟机2的节点操作代理的故障注入模块向虚拟机2的节点操作代理的故障管理模块查询与该注入时机相关的故障信息。比如,该故障信息可以为实例类故障。
可选地,虚拟机2的节点操作代理的故障管理模块可以获取该实例类故障的唯一标识,使用uuid()标识故障,并在故障表中关联该实例类故障和uuid()。可选地,虚拟机2的节点操作代理的故障管理模块可以给虚拟机2的节点操作代理的故障注入模块返回故障信息。
806,虚拟机2的节点操作代理的故障注入模块执行故障注入操作。
具体地,虚拟机1的节点操作代理的故障注入模块可以更新故障状态为“已触发”,并使得该实例类故障生效,将故障状态更新为“执行中”。
807,虚拟机2的节点操作代理的故障注入模块向虚拟机1的节点操作代理的故障注入模块通知故障注入成功消息。可选地,故障注入成功消息中可以携带虚拟机2的节点操作代理的故障管理模块生成的uuid()。
808,虚拟机1的节点操作代理的故障注入模块向虚拟机1的内核模块通知故障注入时机处理完成。
当用于通知故障注入时机处理完成的消息超时后,虚拟机1的内核模块要立即放行暂时拦截的报文。
809,虚拟机1的内核模块放行该报文。
在图9中的例子中,负责监控报文的业务阶段的虚拟机与需要注入故障的实例所在的虚拟机,不是同一个虚拟机,即需要故障注入的实例所在的虚拟机是虚拟机2,负责监控业务阶段的虚拟机是虚拟机1。通过上述方法,可以实现时机精准的故障注入,有助于提高云化网络的可靠性。
应理解,图3至图9中的例子仅仅是为了便于本领域技术人员理解本申请实施例,并非要将本申请实施例限于例示的具体场景。本领域技术人员根据图3至图9的例子,显然可以进行各种等价的修改或变化,这样的修改或变化也落入本申请实施例的范围内。
上文结合图1至图9详细描述了根据本申请实施例的故障注入方法。下面将结合图10至图12描述根据本申请实施例的装置。应理解,方法实施例所描述的技术特征同样适用于以下装置实施例。
图10示出了根据本申请实施例的虚拟机800的示意性框图。如图10所示,所述虚拟机800应用于云化网络中,所述云化网络包括一个或多个虚拟机,其中,每个虚拟机包括内核模块和节点操作代理,所述虚拟机800是所述一个或多个虚拟机中的第一虚拟机,该虚拟机800包括:
所述第一虚拟机的内核模块810,用于从所述第一虚拟机的节点操作代理获取报文特征信息;还用于对所述第一虚拟机的网络报文进行监控;在所述第一虚拟机的内核模块监控到与所述报文特征信息匹配的第一报文时,用于对所述第一报文执行延迟操作,并向所述第一虚拟机的节点操作代理发送第一通知信息,所述第一通知信息用于指示所述第一虚拟机的内核模块已监控到与所述报文特征信息匹配的第一报文;
所述第一虚拟机的节点操作代理820,用于根据所述第一通知信息,执行第一对象的故障注入操作,其中,所述第一对象用于承载所述第一报文对应的业务。
在一种可能的实现方式中,所述第一对象是所述第一虚拟机中的对象,其中,所述第一虚拟机的节点操作代理820根据所述第一通知信息,执行第一对象的故障注入操作,具体包括:
根据所述第一通知信息,查询所述第一对象对应的故障信息;
根据所述第一对象对应的故障信息,在所述第一对象注入故障。
可选地,所述第一虚拟机的节点操作代理820还用于:
向所述第一虚拟机的内核模块810发送第二通知信息,所述第二通知信息用于向所述第一虚拟机的内核模块810通知已在所述第一对象中注入故障;
对应的,所述第一虚拟机的内核模块810用于:在收到所述第二通知信息后,发送所述第一报文。
在另一种可能的实现方式中,所述云化网络包括多个虚拟机,所述第一对象是所述多个虚拟机中的第二虚拟机中的对象,其中,所述第一虚拟机的节点操作代理820根据所述第一通知信息,执行所述第一对象的故障注入操作,具体包括:
向所述第二虚拟机的节点操作代理发送第三通知信息,所述第三通知信息用于指示所述第二虚拟机的节点操作代理在所述第一对象注入故障。
可选地,所述第一虚拟机的节点操作代理820还用于:接收所述第二虚拟机的节点操作代理发送的故障注入成功消息,所述故障注入成功消息表示所述第二虚拟机的节点操作代理已在所述第一对象中注入故障;
在所述第一虚拟机的节点操作代理820接收到所述故障注入成功消息后,向所述第一虚拟机的内核模块810发送第四通知信息,所述第四通知信息用于向所述第一虚拟机的内核模块810通知已在所述第一对象中注入故障;
对应的,所述第一虚拟机的内核模块810用于:在收到所述第四通知信息后,发送所述第一报文。
可选地,所述云化网络还包括控制台,所述第一虚拟机的节点操作代理820还用于:接收所述控制台发送的所述报文特征信息。
可选地,所述第一虚拟机的节点操作代理820还用于:接收所述控制台发送的第一信息,所述第一信息用于指示所述第一对象所在的虚拟机。
应理解,根据本申请实施例的虚拟机800可对应于前述方法实施例中虚拟机的方法,并且虚拟机800中的各个模块的上述和其它管理操作和/或功能分别为了实现前述各个方法的相应步骤,因此也可以实现前述方法实施例中的有益效果,为了简洁,这里不作赘述。
还应理解,上述内核模块和节点操作代理可以是软件和/或硬件实现。
图11示出了根据本申请实施例的云化网络900的示意性框图。如图11所示,该云化网络900包括:
第一虚拟机910,所述第一虚拟机910是所述云化网络900中的一个或多个虚拟机中的第一虚拟机,其中,所述第一虚拟机910包括内核模块911和节点操作代理912;
所述第一虚拟机的内核模块911,用于从所述第一虚拟机的节点操作代理912获取报文特征信息;还用于对所述第一虚拟机的网络报文进行监控;在所述第一虚拟机的内核模块监控911到与所述报文特征信息匹配的第一报文时,对所述第一报文执行延迟操作,并向所述第一虚拟机的节点操作代理发送第一通知信息,所述第一通知信息用于指示所述第一虚拟机的内核模块911已监控到与所述报文特征信息匹配的第一报文;
所述第一虚拟机的节点操作代理912,用于根据所述第一通知信息,执行第一对象的故障注入操作,其中,所述第一对象用于承载所述第一报文对应的业务。
在一种可能的实现方式中,所述第一对象是所述第一虚拟机中的对象,其中,所述第一虚拟机的节点操作代理912根据所述第一通知信息,执行第一对象的故障注入操作,具体包括:
根据所述第一通知信息,查询所述第一对象对应的故障信息;
根据所述第一对象对应的故障信息,在所述第一对象注入故障。
可选地,所述第一虚拟机的节点操作代理912还用于:
向所述第一虚拟机的内核模块911发送第二通知信息,所述第二通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
对应的,所述第一虚拟机的内核模块911用于:在收到所述第二通知信息后,发送所述第一报文。
在另一种可能的实现方式中,所述云化网络900还包括第二虚拟机(图中未示出,应理解,云化网络900中可以包括多个虚拟机,对此不作限定),所述第一对象是所述第二虚拟机中的对象,其中,所述第一虚拟机的节点操作代理912根据所述第一通知信息,执行所述第一对象的故障注入操作,具体包括:
向所述第二虚拟机的节点操作代理发送第三通知信息,所述第三通知信息用于指示所述第二虚拟机的节点操作代理在所述第一对象注入故障。
可选地,所述第一虚拟机的节点操作代理912还用于:接收所述第二虚拟机的节点操作代理发送的故障注入成功消息,所述故障注入成功消息表示所述第二虚拟机的节点操作代理已在所述第一对象中注入故障;
在所述第一虚拟机的节点操作代理912接收到所述故障注入成功消息后,向所述第一虚拟机的内核模块911发送第四通知信息,所述第四通知信息用于向所述第一虚拟机的内核模块911通知已在所述第一对象中注入故障;
对应的,所述第一虚拟机的内核模块911用于:在收到所述第四通知信息后,发送所述第一报文。
可选地,所述云化网络900还包括控制台920,所述控制台920用于:向所述所述第一虚拟机的节点操作代理912发送报文特征信息;对应的,所述第一虚拟机的节点操作代理912还用于:接收所述控制台920发送的所述报文特征信息。
可选地,所述控制台920还用于收集各个虚拟机的实例或对象信息,并向所述第一虚拟机的节点操作代理912发送第一信息,使得所述第一虚拟机的节点操作代理912得知上述第一对象所属的虚拟机。
可选地,所述第一虚拟机的节点操作代理912还用于:接收所述控制台920发送的第一信息,所述第一信息用于指示所述第一对象所在的虚拟机。
应理解,根据本申请实施例的云化网络900可对应于前述方法实施例的故障注入的方法,并且云化网络900中的各个模块的上述和其它管理操作和/或功能分别为了实现前述各个方法的相应步骤,因此也可以实现前述方法实施例中的有益效果,为了简洁,这里不作赘述。
还应理解,上述内核模块、节点操作代理和控制台可以是软件和/或硬件实现。
图12示出了根据本申请实施例的故障注入的装置1000的示意性框图。如图12所示,该故障注入的装置1000包括:处理器1001、存储器1002和收发器1003。
处理器1001、存储器1002和收发器1003之间通过内部连接通路互相通信,传递控制和/或数据信号。在一个可能的设计中,处理器1001、存储器1002和收发器1003可以通过芯片实现。该存储器1002可以存储程序代码,处理器1001调用存储器1002存储的程序代码,以实现该装置1000的相应功能。
可选地,故障注入的装置1000可执行前述方法实施例的故障注入的方法,也可以实现前述方法实施例中的有益效果,为了简洁,这里不作赘述。
上述本申请实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,还可以是系统芯片(system on chip,SoC),还可以是中央处理器(CentralProcessor Unit,CPU),还可以是网络处理器(Network Processor,NP),还可以是数字信号处理电路(Digital Signal Processor,DSP),还可以是微控制器(Micro ControllerUnit,MCU),还可以是可编程控制器(Programmable Logic Device,PLD)或其他集成芯片。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (23)
1.一种故障注入的方法,其特征在于,所述方法应用于云化网络中,所述云化网络包括一个或多个虚拟机,其中,每个虚拟机包括内核模块和节点操作代理,所述方法包括:
所述一个或多个虚拟机中的第一虚拟机的内核模块从所述第一虚拟机的节点操作代理获取报文特征信息;
所述第一虚拟机的内核模块对所述第一虚拟机的网络报文进行监控;
在所述第一虚拟机的内核模块监控到与所述报文特征信息匹配的第一报文时,对所述第一报文执行延迟操作,并向所述第一虚拟机的节点操作代理发送第一通知信息,所述第一通知信息用于指示所述第一虚拟机的内核模块已监控到与所述报文特征信息匹配的第一报文;
所述第一虚拟机的节点操作代理根据所述第一通知信息,执行第一对象的故障注入操作,其中,所述第一对象用于承载所述第一报文对应的业务。
2.根据权利要求1所述的方法,其特征在于,所述第一对象是所述第一虚拟机中的对象,其中,所述第一虚拟机的节点操作代理根据所述第一通知信息,执行所述第一对象的故障注入操作,包括:
所述第一虚拟机的节点操作代理根据所述第一通知信息,查询所述第一对象对应的故障信息;
所述第一虚拟机的节点操作代理根据所述第一对象对应的故障信息,在所述第一对象注入故障。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述第一虚拟机的节点操作代理向所述第一虚拟机的内核模块发送第二通知信息,所述第二通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
所述第一虚拟机的内核模块在收到所述第二通知信息后,发送所述第一报文。
4.根据权利要求1所述的方法,其特征在于,所述云化网络包括多个虚拟机,所述第一对象是所述多个虚拟机中的第二虚拟机中的对象,其中,所述第一虚拟机的节点操作代理根据所述第一通知信息,执行所述第一对象的故障注入操作,包括:
所述第一虚拟机的节点操作代理向所述第二虚拟机的节点操作代理发送第三通知信息,所述第三通知信息用于指示所述第二虚拟机的节点操作代理在所述第一对象注入故障。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
所述第一虚拟机的节点操作代理接收所述第二虚拟机的节点操作代理发送的故障注入成功消息,所述故障注入成功消息表示所述第二虚拟机的节点操作代理已在所述第一对象中注入故障;
在所述第一虚拟机的节点操作代理接收到所述故障注入成功消息后,所述第一虚拟机的节点操作代理向所述第一虚拟机的内核模块发送第四通知信息,所述第四通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
所述第一虚拟机的内核模块在收到所述第四通知信息后,发送所述第一报文。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述云化网络还包括控制台,所述方法还包括:
所述第一虚拟机的节点操作代理接收所述控制台发送的所述报文特征信息。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
所述第一虚拟机的节点操作代理接收所述控制台发送的第一信息,所述第一信息用于指示所述第一对象所在的虚拟机。
8.一种虚拟机,其特征在于,所述虚拟机应用于云化网络中,所述云化网络包括一个或多个虚拟机,其中,每个虚拟机包括内核模块和节点操作代理,所述虚拟机是所述一个或多个虚拟机中的第一虚拟机,所述第一虚拟机包括:
所述第一虚拟机的内核模块,用于从所述第一虚拟机的节点操作代理获取报文特征信息;还用于对所述第一虚拟机的网络报文进行监控;在所述第一虚拟机的内核模块监控到与所述报文特征信息匹配的第一报文时,用于对所述第一报文执行延迟操作,并向所述第一虚拟机的节点操作代理发送第一通知信息,所述第一通知信息用于指示所述第一虚拟机的内核模块已监控到与所述报文特征信息匹配的第一报文;
所述第一虚拟机的节点操作代理,用于根据所述第一通知信息,执行第一对象的故障注入操作,其中,所述第一对象用于承载所述第一报文对应的业务。
9.根据权利要求8所述的虚拟机,其特征在于,所述第一对象是所述第一虚拟机中的对象,其中,所述第一虚拟机的节点操作代理用于根据所述第一通知信息,执行第一对象的故障注入操作,具体包括:
根据所述第一通知信息,查询所述第一对象对应的故障信息;
根据所述第一对象对应的故障信息,在所述第一对象注入故障。
10.根据权利要求9所述的虚拟机,其特征在于,所述第一虚拟机的节点操作代理还用于:
向所述第一虚拟机的内核模块发送第二通知信息,所述第二通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
对应的,所述第一虚拟机的内核模块用于:在收到所述第二通知信息后,发送所述第一报文。
11.根据权利要求8所述的虚拟机,其特征在于,所述云化网络包括多个虚拟机,所述第一对象是所述多个虚拟机中的第二虚拟机中的对象,其中,所述第一虚拟机的节点操作代理用于根据所述第一通知信息,执行所述第一对象的故障注入操作,具体包括:
向所述第二虚拟机的节点操作代理发送第三通知信息,所述第三通知信息用于指示所述第二虚拟机的节点操作代理在所述第一对象注入故障。
12.根据权利要求11所述的虚拟机,其特征在于,所述第一虚拟机的节点操作代理还用于:接收所述第二虚拟机的节点操作代理发送的故障注入成功消息,所述故障注入成功消息表示所述第二虚拟机的节点操作代理已在所述第一对象中注入故障;
在所述第一虚拟机的节点操作代理接收到所述故障注入成功消息后,向所述第一虚拟机的内核模块发送第四通知信息,所述第四通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
对应的,所述第一虚拟机的内核模块用于:在收到所述第四通知信息后,发送所述第一报文。
13.根据权利要求8至12中任一项所述的虚拟机,其特征在于,所述云化网络还包括控制台,所述第一虚拟机的节点操作代理还用于:接收所述控制台发送的所述报文特征信息。
14.根据权利要求13所述的虚拟机,其特征在于,所述第一虚拟机的节点操作代理还用于:接收所述控制台发送的第一信息,所述第一信息用于指示所述第一对象所在的虚拟机。
15.一种云化网络,其特征在于,包括:
第一虚拟机,所述第一虚拟机是所述云化网络中的一个或多个虚拟机中的第一虚拟机,其中,所述第一虚拟机包括内核模块和节点操作代理;
所述第一虚拟机的内核模块,用于从所述第一虚拟机的节点操作代理获取报文特征信息;还用于对所述第一虚拟机的网络报文进行监控;在所述第一虚拟机的内核模块监控到与所述报文特征信息匹配的第一报文时,对所述第一报文执行延迟操作,并向所述第一虚拟机的节点操作代理发送第一通知信息,所述第一通知信息用于指示所述第一虚拟机的内核模块已监控到与所述报文特征信息匹配的第一报文;
所述第一虚拟机的节点操作代理,用于根据所述第一通知信息,执行第一对象的故障注入操作,其中,所述第一对象用于承载所述第一报文对应的业务。
16.根据权利要求15所述的云化网络,其特征在于,所述第一对象是所述第一虚拟机中的对象,其中,所述第一虚拟机的节点操作代理用于根据所述第一通知信息,执行第一对象的故障注入操作,具体包括:
根据所述第一通知信息,查询所述第一对象对应的故障信息;
根据所述第一对象对应的故障信息,在所述第一对象注入故障。
17.根据权利要求16所述的云化网络,其特征在于,所述第一虚拟机的节点操作代理还用于:
向所述第一虚拟机的内核模块发送第二通知信息,所述第二通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
对应的,所述第一虚拟机的内核模块用于:在收到所述第二通知信息后,发送所述第一报文。
18.根据权利要求15所述的云化网络,其特征在于,所述云化网络还包括第二虚拟机,所述第一对象是所述第二虚拟机中的对象,其中,所述第一虚拟机的节点操作代理用于根据所述第一通知信息,执行所述第一对象的故障注入操作,具体包括:
向所述第二虚拟机的节点操作代理发送第三通知信息,所述第三通知信息用于指示所述第二虚拟机的节点操作代理在所述第一对象注入故障。
19.根据权利要求18所述的云化网络,其特征在于,所述第一虚拟机的节点操作代理还用于:接收所述第二虚拟机的节点操作代理发送的故障注入成功消息,所述故障注入成功消息表示所述第二虚拟机的节点操作代理已在所述第一对象中注入故障;
在所述第一虚拟机的节点操作代理接收到所述故障注入成功消息后,向所述第一虚拟机的内核模块发送第四通知信息,所述第四通知信息用于向所述第一虚拟机的内核模块通知已在所述第一对象中注入故障;
对应的,所述第一虚拟机的内核模块用于:在收到所述第四通知信息后,发送所述第一报文。
20.根据权利要求15至19中任一项所述的云化网络,其特征在于,所述云化网络还包括控制台,所述第一虚拟机的节点操作代理还用于:接收所述控制台发送的所述报文特征信息。
21.根据权利要求20所述的云化网络,其特征在于,所述第一虚拟机的节点操作代理还用于:接收所述控制台发送的第一信息,所述第一信息用于指示所述第一对象所在的虚拟机。
22.一种计算机程序存储介质,其特征在于,所述计算机程序存储介质具有程序指令,当所述程序指令被直接或者间接执行时,使得如权利要求1-7中任一所述的方法在虚拟机或云化网络中得以实现。
23.一种故障注入装置,其特征在于,所述故障注入装置包括:至少一个处理器和通信接口,所述通信接口用于所述故障注入装置与其他设备进行信息交互,当程序指令在所述至少一个处理器中执行时,使得所述故障注入装置实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810294045.2A CN108683553B (zh) | 2018-03-30 | 2018-03-30 | 故障注入的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810294045.2A CN108683553B (zh) | 2018-03-30 | 2018-03-30 | 故障注入的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108683553A true CN108683553A (zh) | 2018-10-19 |
CN108683553B CN108683553B (zh) | 2020-07-28 |
Family
ID=63800191
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810294045.2A Active CN108683553B (zh) | 2018-03-30 | 2018-03-30 | 故障注入的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108683553B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783291A (zh) * | 2019-01-10 | 2019-05-21 | 深圳忆联信息系统有限公司 | 基于sata协议故障注入的ssd测试方法、装置和系统 |
CN110213074A (zh) * | 2019-03-07 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 分布式协议的异常构造方法、系统和装置 |
CN112350897A (zh) * | 2020-11-06 | 2021-02-09 | 中国人民解放军国防科技大学 | 基于动态连接端到端可靠传输协议的网络测试装置 |
CN112769609A (zh) * | 2020-12-30 | 2021-05-07 | 中国工商银行股份有限公司 | 控制故障模拟和模拟故障的方法、系统、介质和产品 |
CN113326159A (zh) * | 2020-02-29 | 2021-08-31 | 华为技术有限公司 | 用于故障注入的方法、装置、系统及计算机可读存储介质 |
CN113535532A (zh) * | 2020-04-14 | 2021-10-22 | 中国移动通信集团浙江有限公司 | 故障注入系统、方法和装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220100599A1 (en) * | 2020-09-29 | 2022-03-31 | Amazon Technologies, Inc. | Automated testing of systems and applications |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872323A (zh) * | 2009-04-22 | 2010-10-27 | 曾凡平 | 一种基于虚拟机的故障注入测试方法 |
CN102594589A (zh) * | 2012-02-01 | 2012-07-18 | 北京经纬恒润科技有限公司 | 一种以太网故障注入方法、装置及其系统 |
CN103419707A (zh) * | 2013-09-03 | 2013-12-04 | 江苏新瑞峰信息科技有限公司 | 一种基于lin总线的汽车车灯控制系统 |
CN105656684A (zh) * | 2016-02-05 | 2016-06-08 | 北京润科通用技术有限公司 | 故障模拟方法及装置 |
WO2016209713A1 (en) * | 2015-06-22 | 2016-12-29 | Microsoft Technology Licensing, Llc | Resilience as a service |
CN106326044A (zh) * | 2015-06-30 | 2017-01-11 | 华为技术有限公司 | 一种网卡故障注入方法及装置 |
CN106556769A (zh) * | 2016-11-22 | 2017-04-05 | 北京润科通用技术有限公司 | 故障注入电路、方法及装置 |
US9628339B1 (en) * | 2013-05-31 | 2017-04-18 | Sandia Corporation | Network testbed creation and validation |
-
2018
- 2018-03-30 CN CN201810294045.2A patent/CN108683553B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101872323A (zh) * | 2009-04-22 | 2010-10-27 | 曾凡平 | 一种基于虚拟机的故障注入测试方法 |
CN102594589A (zh) * | 2012-02-01 | 2012-07-18 | 北京经纬恒润科技有限公司 | 一种以太网故障注入方法、装置及其系统 |
US9628339B1 (en) * | 2013-05-31 | 2017-04-18 | Sandia Corporation | Network testbed creation and validation |
CN103419707A (zh) * | 2013-09-03 | 2013-12-04 | 江苏新瑞峰信息科技有限公司 | 一种基于lin总线的汽车车灯控制系统 |
WO2016209713A1 (en) * | 2015-06-22 | 2016-12-29 | Microsoft Technology Licensing, Llc | Resilience as a service |
CN106326044A (zh) * | 2015-06-30 | 2017-01-11 | 华为技术有限公司 | 一种网卡故障注入方法及装置 |
CN105656684A (zh) * | 2016-02-05 | 2016-06-08 | 北京润科通用技术有限公司 | 故障模拟方法及装置 |
CN106556769A (zh) * | 2016-11-22 | 2017-04-05 | 北京润科通用技术有限公司 | 故障注入电路、方法及装置 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109783291A (zh) * | 2019-01-10 | 2019-05-21 | 深圳忆联信息系统有限公司 | 基于sata协议故障注入的ssd测试方法、装置和系统 |
CN110213074A (zh) * | 2019-03-07 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 分布式协议的异常构造方法、系统和装置 |
CN110213074B (zh) * | 2019-03-07 | 2022-03-11 | 腾讯科技(深圳)有限公司 | 分布式协议的异常构造方法、系统和装置 |
CN113326159A (zh) * | 2020-02-29 | 2021-08-31 | 华为技术有限公司 | 用于故障注入的方法、装置、系统及计算机可读存储介质 |
CN113326159B (zh) * | 2020-02-29 | 2023-02-03 | 华为技术有限公司 | 用于故障注入的方法、装置、系统及计算机可读存储介质 |
CN113535532A (zh) * | 2020-04-14 | 2021-10-22 | 中国移动通信集团浙江有限公司 | 故障注入系统、方法和装置 |
CN113535532B (zh) * | 2020-04-14 | 2023-11-10 | 中国移动通信集团浙江有限公司 | 故障注入系统、方法和装置 |
CN112350897A (zh) * | 2020-11-06 | 2021-02-09 | 中国人民解放军国防科技大学 | 基于动态连接端到端可靠传输协议的网络测试装置 |
CN112350897B (zh) * | 2020-11-06 | 2022-08-12 | 中国人民解放军国防科技大学 | 基于动态连接端到端可靠传输协议的网络测试装置 |
CN112769609A (zh) * | 2020-12-30 | 2021-05-07 | 中国工商银行股份有限公司 | 控制故障模拟和模拟故障的方法、系统、介质和产品 |
CN112769609B (zh) * | 2020-12-30 | 2023-04-07 | 中国工商银行股份有限公司 | 控制故障模拟和模拟故障的方法、系统、介质和产品 |
Also Published As
Publication number | Publication date |
---|---|
CN108683553B (zh) | 2020-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108683553A (zh) | 故障注入的方法和装置 | |
CN104639374B (zh) | 一种应用程序部署管理系统 | |
US7299278B2 (en) | Managing network faults | |
CN104219327B (zh) | 一种分布式缓存系统 | |
US6950845B2 (en) | Data collection system and method for reducing latency | |
CN103546343B (zh) | 网络流量分析系统的网络流量展示方法和系统 | |
CN106797328A (zh) | 收集和分析所选择的网络流量 | |
CN106452925A (zh) | 在nfv系统中检测故障的方法、装置和系统 | |
CN106161533B (zh) | 一种保障动物园管理员系统快速完成领导者选举的方法,装置及系统 | |
CN108900640A (zh) | 节点调用链路生成方法、装置、计算机设备及存储介质 | |
CN112350854B (zh) | 一种流量故障定位方法、装置、设备及存储介质 | |
CN112202635B (zh) | 链路的监控方法、装置、存储介质以及电子装置 | |
CN108123820A (zh) | 一种网络设备信息采集方法和装置 | |
CN109074280A (zh) | 网络功能虚拟化 | |
CN104113598A (zh) | 一种数据库三层审计的方法 | |
CN106067879B (zh) | 信息的检测方法及装置 | |
CN109547288A (zh) | 一种协议无关转发网络可编程流测量方法 | |
CN105099733A (zh) | 安全管控平台中设备安全管理的方法和系统 | |
CN106130897A (zh) | 基于路由模拟的性能优化方法 | |
US8224933B2 (en) | Method and apparatus for case-based service composition | |
US20130305090A1 (en) | Test configuration resource manager | |
CN103957119A (zh) | 一种采用mib文件对网络设备进行管理的方法及浏览器 | |
CN116627706A (zh) | 资源池故障诊断方法、装置及电子设备 | |
US20140301222A1 (en) | Network analyzing system, as well as network analyzing apparatus and network analyzing program, as well as data processing module and data processing program | |
CN101453454A (zh) | 网络攻击检测内部追踪方法 |
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 |