CN111181871A - 一种报文传输的方法及相关装置 - Google Patents

一种报文传输的方法及相关装置 Download PDF

Info

Publication number
CN111181871A
CN111181871A CN201910719768.7A CN201910719768A CN111181871A CN 111181871 A CN111181871 A CN 111181871A CN 201910719768 A CN201910719768 A CN 201910719768A CN 111181871 A CN111181871 A CN 111181871A
Authority
CN
China
Prior art keywords
kni
message
virtual device
virtual
queue
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
CN201910719768.7A
Other languages
English (en)
Other versions
CN111181871B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910719768.7A priority Critical patent/CN111181871B/zh
Publication of CN111181871A publication Critical patent/CN111181871A/zh
Application granted granted Critical
Publication of CN111181871B publication Critical patent/CN111181871B/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
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal
    • H04L49/9068Intermediate storage in different physical parts of a node or terminal in the network interface card
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/6295Queue scheduling characterised by scheduling criteria using multiple queues, one for each individual QoS, connection, flow or priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请实施例提供了一种基于中央处理器的报文发送方法及相关装置,能够有效分配多个内核网卡接口kni虚拟设备资源,提高中央处理器CPU的性能。其中,该方法应用于CPU,CPU包括kni虚拟设备,包括:若接收到第一报文,则根据第一报文从多个kni虚拟设备确定第一kni虚拟设备,其中,第一报文携带第一kni虚拟设备的关联信息;若接收到第二报文,则根据第二报文从多个kni虚拟设备确定第二kni虚拟设备,其中,第二报文携带第二kni虚拟设备的关联信息;通过第一kni虚拟设备向网卡的第一队列发送第一报文;通过第二kni虚拟设备向网卡的第二队列发送第二报文,其中,第二队列与第一队列属于网卡中不同的两个队列。

Description

一种报文传输的方法及相关装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种报文传输的方法及相关装置。
背景技术
在某些高性能虚拟网络的场景下,通常中央处理器(Central Processing Unit,CPU)的内核设置有数据平面开发套件(Data Plane Development Kit,DPDK)的内核网卡接口(Kernel NIC Interface,kni)设备。
当CPU的内核接收到普通进程所产生的报文时,可以将报文发送至kni虚拟设备。kni虚拟设备将报文转发给至网卡,最后通过网卡发送出去。更进一步的,当网卡接收到反馈回来的报文时,可以通过kni虚拟设备将报文发送至相应的进程。
由于当前kni虚拟设备仅支持单队列,当多个进程需要发送报文或者网卡返回多个进程的报文时,多个报文只能通过一个kni虚拟设备进行转发,容易出现对该kni虚拟设备的资源争抢,影响CPU的性能。
发明内容
本申请实施例提供了一种报文传输的方法及相关装置,能够有效分配kni虚拟设备资源,提高CPU的性能。
本申请实施例第一方面提供一种报文传输的方法,所述方法应用于中央处理器CPU,所述CPU包括多个内核网卡接口kni虚拟设备,包括:
若接收到第一报文,则根据所述第一报文从所述多个kni虚拟设备确定第一kni虚拟设备,其中,所述第一报文携带所述第一kni虚拟设备的关联信息;
若接收到第二报文,则根据所述第二报文从所述多个kni虚拟设备确定第二kni虚拟设备,其中,所述第二报文携带所述第二kni虚拟设备的关联信息;
通过所述第一kni虚拟设备向网卡的第一队列发送所述第一报文;
通过所述第二kni虚拟设备向网卡的第二队列发送所述第二报文,其中,所述第二队列与所述第一队列属于所述网卡中不同的两个队列。
本申请实施例第二方面提供一种报文传输的方法,所述方法应用于中央处理器CPU,所述CPU包括多个内核网卡接口kni虚拟设备,包括:
若通过所述第一kni虚拟设备接收到网卡的第一队列发送的第一报文,则通过所述第一kni虚拟设备将所述第一报文发送至第一进程,其中,所述第一进程与所述第一报文具有相同的第一六元组;
若通过所述第二kni虚拟设备接收到网卡的第二队列发送的第二报文,则通过所述第二kni虚拟设备将所述第二报文发送至第二进程,其中,所述第二进程与所述第二报文具有相同的第二六元组,所述第二队列与所述第一队列属于所述网卡中不同的两个队列,第一kni虚拟设备与所述第二kni虚拟设备为所述多个kni虚拟设备中不同的两个设备。
基于第二方面,本申请实施例第二方面的第一种实现方式中,所述第一六元组或所述第二六元组包括:地址类型、协议、源地址、源端口、目的地址和目的端口。
本申请实施例第三方面提供一种报文传输的装置,所述装置包括多个内核网卡接口kni虚拟设备,所述装置还包括:
第一确定模块,用于若接收到第一报文,则根据所述第一报文从所述多个kni虚拟设备确定第一kni虚拟设备,其中,所述第一报文携带所述第一kni虚拟设备的关联信息;
第二确定模块,用于若接收到第二报文,则根据所述第二报文从所述多个kni虚拟设备确定第二kni虚拟设备,其中,所述第二报文携带所述第二kni虚拟设备的关联信息;
第一发送模块,用于通过所述第一kni虚拟设备向网卡的第一队列发送所述第一报文;
第二发送模块,用于通过所述第二kni虚拟设备向网卡的第二队列发送所述第二报文,其中,所述第二队列与所述第一队列属于所述网卡中不同的两个队列。
基于第三方面,本申请实施例第三方面的第一种实现方式中,所述第一确定模块具体用于:若接收到第一报文,则获取所述第一报文的第一六元组;
通过多路径路由算法根据所述第一六元组计算第一标识;
根据所述第一标识从所述多个kni虚拟设备确定第一kni虚拟设备,其中,所述第一标识为与所述第一kni虚拟设备对应的标识。
基于第三方面,本申请实施例第三方面的第二种实现方式中,所述第二确定模块具体用于:若接收到第二报文,则获取所述第二报文的第二六元组;
通过多路径路由算法根据所述第二六元组计算第二标识;
根据所述第二标识从所述多个kni虚拟设备确定第二kni虚拟设备,其中,所述第二标识为与所述第二kni虚拟设备对应的标识。
基于第三方面,本申请实施例第三方面的第三种实现方式中,所述第一六元组或所述第二六元组包括:地址类型、协议、源地址、源端口、目的地址和目的端口。
基于第三方面,本申请实施例第三方面的第四种实现方式中,所述报文传输的装置还包括:
获取模块,用于从数据平面开发套件DPDK中获取与所述kni虚拟设备对应的库函数;
创建模块,用于通过所述库函数在所述CPU中创建所述多个kni虚拟设备。
本申请实施例第四方面提供一种报文传输的装置,所述装置包括多个内核网卡接口kni虚拟设备,所述装置还包括:
第一发送模块,用于若通过所述第一kni虚拟设备接收到网卡的第一队列发送的第一报文,则通过所述第一kni虚拟设备将所述第一报文发送至第一进程,其中,所述第一进程与所述第一报文具有相同的第一六元组;
第二发送模块,用于若通过所述第二kni虚拟设备接收到网卡的第二队列发送的第二报文,则通过所述第二kni虚拟设备将所述第二报文发送至第二进程,其中,所述第二进程与所述第二报文具有相同的第二六元组,所述第二队列与所述第一队列属于所述网卡中不同的两个队列,第一kni虚拟设备与所述第二kni虚拟设备为所述多个kni虚拟设备中不同的两个设备。
基于第四方面,本申请实施例第四方面的第一种实现方式中,所述第一六元组或所述第二六元组包括:地址类型、协议、源地址、源端口、目的地址和目的端口。
本申请实施例第五方面提供一种终端设备,包括:存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器包括多个内核网卡接口kni虚拟设备,所述处理器用于执行所述存储器中的程序,包括如下步骤:
若接收到第一报文,则根据所述第一报文从所述多个kni虚拟设备确定第一kni虚拟设备,其中,所述第一报文携带所述第一kni虚拟设备的关联信息;
若接收到第二报文,则根据所述第二报文从所述多个kni虚拟设备确定第二kni虚拟设备,其中,所述第二报文携带所述第二kni虚拟设备的关联信息;
通过所述第一kni虚拟设备向网卡的第一队列发送所述第一报文;
通过所述第二kni虚拟设备向网卡的第二队列发送所述第二报文,其中,所述第二队列与所述第一队列属于所述网卡中不同的两个队列;
所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
本申请实施例第六方面提供一种终端设备,包括:存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器包括多个内核网卡接口kni虚拟设备,所述处理器用于执行所述存储器中的程序,包括如下步骤:
若通过所述第一kni虚拟设备接收到网卡的第一队列发送的第一报文,则通过所述第一kni虚拟设备将所述第一报文发送至第一进程,其中,所述第一进程与所述第一报文具有相同的第一六元组;
若通过所述第二kni虚拟设备接收到网卡的第二队列发送的第二报文,则通过所述第二kni虚拟设备将所述第二报文发送至第二进程,其中,所述第二进程与所述第二报文具有相同的第二六元组,所述第二队列与所述第一队列属于所述网卡中不同的两个队列,第一kni虚拟设备与所述第二kni虚拟设备为所述多个kni虚拟设备中不同的两个设备;
所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
本申请实施例第七方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
本申请实施例提供了一种基于中央处理器的报文发送方法及相关装置,该方法由CPU执行,其中,CPU包括多个TCP会话和多个kni虚拟设备,当CPU接收到多个进程所发送的报文时,可以根据每个报文确定相应的kni虚拟设备,进而通过多个kni虚拟设备将多个报文发送至网卡,以完成报文外发。在上述过程中,当CPU接收到多个报文时,可将多个报文分配至对应的多个kni虚拟设备中,使得每个kni虚拟设备将报文转发至网卡相应的队列中,以实现多队列报文外发,避免了过多报文争抢同一kni虚拟设备的情况,能够有效分配kni虚拟设备资源,提高CPU的性能。
附图说明
图1为本申请实施例中报文传输系统的一个架构示意图;
图2为本申请实施例中报文传输的方法的一个流程示意图;
图3为本申请实施例中报文传输的方法的一个应用例示意图;
图4为本申请实施例中报文传输的方法的另一个应用例示意图;
图5为本申请实施例中报文传输的装置的一个结构示意图;
图6为本申请实施例中报文传输的装置的另一个结构示意图;
图7为本申请实施例提供的一种终端设备结构示意图。
具体实施方式
本申请实施例提供了一种报文传输的方法及相关装置,能够有效分配kni虚拟设备资源,提高CPU的性能。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本申请应用于虚拟网络场景,具体地,本申请实施例中的虚拟网络场景通常指高性能虚拟网络场景,该场景中的CPU内核在接收到普通进程产生的报文后,需要通过DPDK的kni虚拟设备进行报文外发。同样的,当网卡向CPU返回与该进程对应的报文时,也需要通过kni虚拟设备将报文反馈至该进程。
本申请提出了一种报文传输的方法,该方法应用于图1所示的报文传输系统,请参阅图1,图1为本申请实施例中报文传输系统的一个架构示意图,该系统包括CPU和网卡。其中,CPU内核设置有多个kni虚拟设备,每一个kni虚拟设备对应连接着网卡的一对收发队列(以下简称一个队列)。
以下从报文外发的角度,对本申请实施例中报文传输的方法进行说明。图2为本申请实施例中报文传输的方法的一个流程示意图,请参阅图2,本申请实施例中报文传输的方法的一个实施例,该实施例应用于中央处理器CPU,CPU包括多个内核网卡接口kni虚拟设备,该实施例包括:
201、若接收到第一报文,则根据第一报文从多个kni虚拟设备确定第一kni虚拟设备,其中,第一报文携带第一kni虚拟设备的关联信息;
本实施例中,当CPU接收到某一进程产生的第一报文时,由于第一报文携带有第一kni虚拟设备的关联信息,基于该关联信息,CPU根据第一报文从多个kni虚拟设备确定第一kni虚拟设备。
202、若接收到第二报文,则根据第二报文从多个kni虚拟设备确定第二kni虚拟设备,其中,第二报文携带第二kni虚拟设备的关联信息;
当CPU接收到另一进程产生的第二报文时,由于第二报文携带有第二kni虚拟设备的关联信息,基于该关联信息,CPU根据第二报文从多个kni虚拟设备确定第二kni虚拟设备。
需要说明的是,本实施例中的步骤201和步骤202的执行顺序有多种方式,可同步进行也可异步进行,当两个步骤异步进行时,其先后顺序不做具体限定。
203、通过第一kni虚拟设备向网卡的第一队列发送第一报文;
本实施例中,CPU中的每一个kni虚拟设备连接着网卡的一个队列。当确定第一kni虚拟设备后,CPU通过第一kni虚拟设备向网卡的第一队列发送第一报文,以使得网卡能对外发送第一报文。
204、通过第二kni虚拟设备向网卡的第二队列发送第二报文,其中,第二队列与第一队列属于网卡中不同的两个队列。
当确定第二kni虚拟设备后,CPU通过第二kni虚拟设备向网卡的第二队列发送第二报文,以使得网卡能对外发送第二报文。
可选的,基于图2对应的实施例,本申请实施例中报文传输的方法的一个可选实施例中,根据第一报文从多个kni虚拟设备确定第一kni虚拟设备包括:
获取第一报文的第一六元组;
通过多路径路由算法根据第一六元组计算第一标识;
根据第一标识从多个kni虚拟设备确定第一kni虚拟设备,其中,第一标识为与第一kni虚拟设备对应的标识。
本实施例中,CPU中的每个kni虚拟设备均具有各自的标识。当CPU接收到第一报文后,先获取第一报文中的第一六元组,再通过多路径路由算法根据第一六元组计算第一标识,由于第一标识与第一kni虚拟设备相对应,故CPU可以根据第一标识从多个kni虚拟设备确定第一kni虚拟设备。
更进一步地,CPU通过多路径路由算法根据第一六元组计算第一标识的过程具体为:CPU在获取第一报文的第一六元组后,通过第一函数调用第二函数,其中,第一函数为用于调用第二函数的函数,如fib_multipath_hash函数,第二函数为用于根据六元组计算哈希值的函数,如jhash函数。得到第二函数后,CPU将第一六元组输入第二函数,通过第二函数根据第一六元组进行计算,得到第一标识。需要说明的是,第一标识为一个哈希值。
由于每个kni虚拟设备被预先分配有一个哈希值范围,因此,在CPU得到第一标识后,若CPU通过第三函数确定第一标识位于某个kni虚拟设备所对应的哈希值范围内时,则将该kni虚拟设备确定为第一kni虚拟设备。其中,第三函数用于根据哈希值所落入的哈希值范围确定相应的kni虚拟设备,例如,第三函数可以为fib_select_multipath函数。
可选的,基于图2对应的实施例,本申请实施例中报文传输的方法的一个可选实施例中,根据第二报文从多个kni虚拟设备确定第二kni虚拟设备包括:
获取第二报文的第二六元组;
通过多路径路由算法根据第二六元组计算第二标识;
根据第二标识从多个kni虚拟设备确定第二kni虚拟设备,其中,第二标识为与第二kni虚拟设备对应的标识。
本实施例中,CPU中的每个kni虚拟设备均具有各自的标识。当CPU接收到第二报文后,先获取第二报文中的第二六元组,再通过多路径路由算法根据第二六元组计算第二标识,由于第二标识与第二kni虚拟设备相对应,故CPU可以根据第二标识从多个kni虚拟设备确定第二kni虚拟设备。
需要说明的是,CPU通过多路径路由算法根据第二六元组计算第二标识的具体过程与上述CPU通过多路径路由算法根据第一六元组计算第一标识的具体过程类似,此处不再赘述。
可选的,基于图2对应的各个实施例,本申请实施例中报文传输的方法的一个可选实施例中,第一六元组或第二六元组包括:地址类型、协议、源地址、源端口、目的地址和目的端口。
本实施例中,六元组由地址类型、协议、源地址、源端口、目的地址和目的端口组成,可以理解的是,六元组的各个元素均以具体的数值体现,在报文外发的过程中,CPU可以调用第二函数基于六个元素值进行计算得到一个具体的数值(哈希值),该数值可以视为kni虚拟设备的标识,该标识用于在多个kni虚拟设备中选出一个相应的kni虚拟设备进行报文转发。
可选的,基于图2对应的各个实施例,本申请实施例中报文传输的方法的一个可选实施例中,若接收到第一报文,则根据第一报文从多个kni虚拟设备确定第一kni虚拟设备或若接收到第二报文,则根据第二报文从多个kni虚拟设备确定第二kni虚拟设备之前还包括:
从数据平面开发套件DPDK中获取与kni虚拟设备对应的库函数;
通过库函数在CPU中创建多个kni虚拟设备。
本实施例中,在CPU进行报文外发之前,CPU从DPDK中获取与kni虚拟设备对应的库函数,再通过库函数(如rte_kni_create()函数)在CPU中创建多个kni虚拟设备,以建立多个kni虚拟设备与网卡的多个队列之间的连接关系。需要说明的是,kni虚拟设备与网卡队列之间的对应关系可以为一个kni虚拟设备对应网卡的一个队列,也可以为一个kni虚拟设备对应网卡的多个队列,二者之间的对应关系可以根据实际操作进行变更,本实施例中不做限制。
更进一步地,CPU在创建多个kni虚拟设备后,可以通过第四函数(如fib_rebalance函数)为每个kni设备分配一个哈希值范围。当每个kni虚拟设备被配置有一个哈希值范围后,CPU可以根据报文的六元组计算一个具体的哈希值,进而根据该哈希值在多个kni设备中选择一个相应的kni虚拟设备进行报文转发。
本申请实施例中,当CPU接收到多个报文时,可将多个报文分配至对应的多个kni虚拟设备中,使得每个kni虚拟设备将报文转发至网卡相应的队列中,以实现多队列报文外发,避免了过多报文争抢同一kni虚拟设备的情况,能够有效分配kni虚拟设备资源,提高CPU的性能。
为了便于理解,以下结合图3对本申请实施例中报文传输的方法进行进一步的说明。图3为本申请实施例中报文传输的方法的一个应用例示意图,请参阅图3,该应用例中,。设CPU300包含两个kni虚拟设备,即kni虚拟设备301和kni虚拟设备302,kni虚拟设备301与网卡305的队列303对应,kni虚拟设备302与网卡305的队列304对应。
当CPU300接收到进程A和进程B分别发送的报文A和报文B时,通过多路径路由算法对报文A和报文B中的六元组进行计算,得到标识A和标识B。CPU300确定标识A与kni虚拟设备对应,且标识B与kni虚拟设备302对应后,则通过kni虚拟设备301将报文A发送至队列303,通过kni虚拟设备302将报文B发送队列304,以完成报文外发。
需要说明的是,当CPU包含3个或3个以上的kni虚拟设备时,其报文外发过程与上述应用例中的过程类似,此处不再赘述。
以下从报文回收的角度对本申请实施例中报文传输的方法进行说明。本申请实施例中报文传输的方法的另一个实施例,该实施例应用于中央处理器CPU,CPU包括多个内核网卡接口kni虚拟设备,该实施例包括:
S1、若通过第一kni虚拟设备接收到网卡的第一队列发送的第一报文,则通过第一kni虚拟设备将第一报文发送至第一进程,其中,第一进程与第一报文具有相同的第一六元组;
本实施例中,CPU通过第一kni虚拟设备接收到网卡的第一队列发送的第一报文,应理解,第一报文为反馈至第一进程的报文,即第一进程和第一报文具有相同的第一六元组。然后CPU通过第一kni虚拟设备获取第一报文中的第一六元组,根据第一六元组确定该第一报文需要发送至第一进程,则通过第一kni虚拟设备将第一报文发送至第一进程,完成报文回收。
S2、若通过第二kni虚拟设备接收到网卡的第二队列发送的第二报文,则通过第二kni虚拟设备将第二报文发送至第二进程,其中,第二进程与第二报文具有相同的第二六元组,第二队列与第一队列属于网卡中不同的两个队列,第一kni虚拟设备与第二kni虚拟设备为多个kni虚拟设备中不同的两个设备。
CPU通过第二kni虚拟设备接收到网卡的第二队列发送的第二报文,应理解,第二报文为反馈至第二进程的报文,即第二进程和第二报文具有相同的第二六元组。然后CPU通过第二kni虚拟设备获取第二报文中的第二六元组,根据第二六元组确定该第二报文需要发送至第二进程,则通过第二kni虚拟设备将第二报文发送至第二进程,完成报文回收。
其中,第二队列与第一队列属于网卡中不同的两个队列,第一kni虚拟设备与第二kni虚拟设备为多个kni虚拟设备中不同的两个设备。
需要说明的是,本实施例中的步骤S1和步骤S2的执行顺序有多种方式,可同步进行也可异步进行,当两个步骤异步进行时,其先后顺序不做具体限定。
可选的,基于上述实施例,本申请实施例中报文传输的方法的一个可选实施例中,第一六元组或第二六元组包括:地址类型、协议、源地址、源端口、目的地址和目的端口。需要说明的是,CPU在根据报文的六元组确定相应的进程时,可以通过判断报文与进程的六元组中的元素是否一致进行确定,如报文的源端口与进程的源端口是否一致,若一致,该进程则为该报文返回的进程。应理解,CPU在匹配六元组的元素时,前述例子仅以元素数量为一个进行示例性说明,并不对本实施例中元素的数量构成限制。
本申请实施例在报文回收的过程中,通过网卡多队列将多个报文分配至多个kni虚拟设备中,再通过多个kni虚拟设备将报文发送至相应的进程,能够有效分配kni虚拟设备资源,提高CPU的性能。
为了便于理解,以下结合图4对本申请实施例中报文传输的方法进行进一步的说明,图5为本申请实施例中报文传输的方法的另一个应用例示意图,请参阅图4,该应用例为报文回收的过程,设该报文回收的过程与图3中报文外发的过程对应。
当CPU400中的kni虚拟设备401接收到网卡405中的队列403发送的报文a时,通过kni虚拟设备401获取报文a的六元组,确定报文a需要返回至进程A,则通过kni虚拟设备401将报文a发送至进程A。
需要说明的是,kni虚拟设备401与图3中的kni虚拟设备301可以为同一台设备,也可以为不同的设备。本应用例中不做具体限制。
同理,关于进程B报文回收的过程也类似上述过程,此处不再赘述。
以上是对本申请实施例中报文传输的方法进行的详细说明,以下将对本申请实施例报文传输的装置的结构和连接关系进行介绍,图5为本申请实施例中报文传输的装置的一个结构示意图,请参阅图5,本申请实施例中报文传输的装置的一个实施例,该实施例包括多个内核网卡接口kni虚拟设备,该实施例还包括:
第一确定模块501,用于若接收到第一报文,则根据第一报文从多个kni虚拟设备确定第一kni虚拟设备,其中,第一报文携带第一kni虚拟设备的关联信息;
第二确定模块502,用于若接收到第二报文,则根据第二报文从多个kni虚拟设备确定第二kni虚拟设备,其中,第二报文携带第二kni虚拟设备的关联信息;
第一发送模块503,用于通过第一kni虚拟设备向网卡的第一队列发送第一报文;
第二发送模块504,用于通过第二kni虚拟设备向网卡的第二队列发送第二报文,其中,第二队列与第一队列属于网卡中不同的两个队列。
可选的,基于图5对应的实施例,本申请实施例中报文传输的装置的一个可选实施例中,第一确定模块具体用于:若接收到第一报文,则获取第一报文的第一六元组;
通过多路径路由算法根据第一六元组计算第一标识;
根据第一标识从多个kni虚拟设备确定第一kni虚拟设备,其中,第一标识为与第一kni虚拟设备对应的标识。
可选的,基于图5对应的实施例,本申请实施例中报文传输的装置的一个可选实施例中,第二确定模块具体用于:若接收到第二报文,则获取第二报文的第二六元组;
通过多路径路由算法根据第二六元组计算第二标识;
根据第二标识从多个kni虚拟设备确定第二kni虚拟设备,其中,第二标识为与第二kni虚拟设备对应的标识。
可选的,基于图5对应的实施例,本申请实施例中报文传输的装置的一个可选实施例中,第一六元组或第二六元组包括:地址类型、协议、源地址、源端口、目的地址和目的端口。
可选的,基于图5对应的实施例,本申请实施例中报文传输的装置的一个可选实施例中,该报文传输的装置还包括:
获取模块,用于从数据平面开发套件DPDK中获取与kni虚拟设备对应的库函数;
创建模块,用于通过库函数在CPU中创建多个kni虚拟设备。
本申请实施例还提供了一种报文传输的装置,图6为本申请实施例中报文传输的装置的另一个结构示意图,请参阅图6,本申请实施例中报文传输的装置的一个实施例,该实施例包括多个内核网卡接口kni虚拟设备,该实施例还包括:
第一发送模块601,用于若通过第一kni虚拟设备接收到网卡的第一队列发送的第一报文,则通过第一kni虚拟设备将第一报文发送至第一进程,其中,第一进程与第一报文具有相同的第一六元组;
第二发送模块602,用于若通过第二kni虚拟设备接收到网卡的第二队列发送的第二报文,则通过第二kni虚拟设备将第二报文发送至第二进程,其中,第二进程与第二报文具有相同的第二六元组,第二队列与第一队列属于网卡中不同的两个队列,第一kni虚拟设备与第二kni虚拟设备为多个kni虚拟设备中不同的两个设备。
可选的,基于图6对应的实施例,本申请实施例中报文传输的装置的一个可选实施例中,第一六元组或第二六元组包括:地址类型、协议、源地址、源端口、目的地址和目的端口。
本申请实施例还提供了另一种图像显示控制装置,如图7所示,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(personal digital assistant,PDA)、销售终端(point of sales,POS)、车载电脑等任意终端设备,以终端为手机为例:
图7示出的是与本申请实施例提供的终端相关的手机的部分结构的框图。参考图7,手机包括:射频(radio frequency,RF)电路710、存储器720、输入单元730、显示单元740、传感器750、音频电路760、无线保真(wireless fidelity,WiFi)模块770、处理器780、以及电源790等部件。本领域技术人员可以理解,图7中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图7对手机的各个构成部件进行具体的介绍:
RF电路710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器780处理;另外,将设计上行的数据发送给基站。通常,RF电路710包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noiseamplifier,LNA)、双工器等。此外,RF电路710还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystem of mobile communication,GSM)、通用分组无线服务(general packet radioservice,GPRS)、码分多址(code division multiple access,CDMA)、宽带码分多址(wideband code division multiple access,WCDMA)、长期演进(long term evolution,LTE)、电子邮件、短消息服务(short messaging service,SMS)等。
存储器720可用于存储软件程序以及模块,处理器780通过运行存储在存储器720的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元730可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元730可包括触控面板731以及其他输入设备732。触控面板731,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板731上或在触控面板731附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板731可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器780,并能接收处理器780发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板731。除了触控面板731,输入单元730还可以包括其他输入设备732。具体地,其他输入设备732可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元740可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元740可包括显示面板741,可选的,可以采用液晶显示器(liquid crystaldisplay,LCD)、有机发光二极管(organic light-emitting diode,OLED)等形式来配置显示面板741。进一步的,触控面板731可覆盖显示面板741,当触控面板731检测到在其上或附近的触摸操作后,传送给处理器780以确定触摸事件的类型,随后处理器780根据触摸事件的类型在显示面板741上提供相应的视觉输出。虽然在图7中,触控面板731与显示面板741是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板731与显示面板741集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器750,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板741的亮度,接近传感器可在手机移动到耳边时,关闭显示面板741和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路760、扬声器761,传声器762可提供用户与手机之间的音频接口。音频电路760可将接收到的音频数据转换后的电信号,传输到扬声器761,由扬声器761转换为声音信号输出;另一方面,传声器762将收集的声音信号转换为电信号,由音频电路760接收后转换为音频数据,再将音频数据输出处理器780处理后,经RF电路710以发送给比如另一手机,或者将音频数据输出至存储器720以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块770可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了WiFi模块770,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器780是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器780可包括一个或多个处理单元;可选的,处理器780可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器780中。
手机还包括给各个部件供电的电源790(比如电池),可选的,电源可以通过电源管理系统与处理器780逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该终端所包括的处理器780包括多个内核网卡接口kni虚拟设备,且处理器780还具有以下功能:
若接收到第一报文,则根据第一报文从多个kni虚拟设备确定第一kni虚拟设备,其中,第一报文携带第一kni虚拟设备的关联信息;
若接收到第二报文,则根据第二报文从多个kni虚拟设备确定第二kni虚拟设备,其中,第二报文携带第二kni虚拟设备的关联信息;
通过第一kni虚拟设备向网卡的第一队列发送第一报文;
通过第二kni虚拟设备向网卡的第二队列发送第二报文,其中,第二队列与第一队列属于网卡中不同的两个队列。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述报文传输的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种报文传输的方法,其特征在于,所述方法应用于中央处理器CPU,所述CPU包括多个内核网卡接口kni虚拟设备,包括:
若接收到第一报文,则根据所述第一报文从所述多个kni虚拟设备确定第一kni虚拟设备,其中,所述第一报文携带所述第一kni虚拟设备的关联信息;
若接收到第二报文,则根据所述第二报文从所述多个kni虚拟设备确定第二kni虚拟设备,其中,所述第二报文携带所述第二kni虚拟设备的关联信息;
通过所述第一kni虚拟设备向网卡的第一队列发送所述第一报文;
通过所述第二kni虚拟设备向网卡的第二队列发送所述第二报文,其中,所述第二队列与所述第一队列属于所述网卡中不同的两个队列。
2.根据权利要求1所述的报文传输的方法,其特征在于,所述根据所述第一报文从所述多个kni虚拟设备确定第一kni虚拟设备包括:
获取所述第一报文的第一六元组;
通过多路径路由算法根据所述第一六元组计算第一标识;
根据所述第一标识从所述多个kni虚拟设备确定第一kni虚拟设备,其中,所述第一标识为与所述第一kni虚拟设备对应的标识。
3.根据权利要求1所述的报文传输的方法,其特征在于,所述根据所述第二报文从所述多个kni虚拟设备确定第二kni虚拟设备包括:
获取所述第二报文的第二六元组;
通过多路径路由算法根据所述第二六元组计算第二标识;
根据所述第二标识从所述多个kni虚拟设备确定第二kni虚拟设备,其中,所述第二标识为与所述第二kni虚拟设备对应的标识。
4.根据权利要求2或3所述的报文传输的方法,其特征在于,所述第一六元组或所述第二六元组包括:地址类型、协议、源地址、源端口、目的地址和目的端口。
5.根据权利要求1至3任意一项所述的报文传输的方法,其特征在于,所述若接收到第一报文,则根据所述第一报文从所述多个kni虚拟设备确定第一kni虚拟设备或所述若接收到第二报文,则根据所述第二报文从所述多个kni虚拟设备确定第二kni虚拟设备之前还包括:
从数据平面开发套件DPDK中获取与所述kni虚拟设备对应的库函数;
通过所述库函数在所述CPU中创建所述多个kni虚拟设备。
6.一种报文传输的方法,其特征在于,所述方法应用于中央处理器CPU,所述CPU包括多个内核网卡接口kni虚拟设备,包括:
若通过所述第一kni虚拟设备接收到网卡的第一队列发送的第一报文,则通过所述第一kni虚拟设备将所述第一报文发送至第一进程,其中,所述第一进程与所述第一报文具有相同的第一六元组;
若通过所述第二kni虚拟设备接收到网卡的第二队列发送的第二报文,则通过所述第二kni虚拟设备将所述第二报文发送至第二进程,其中,所述第二进程与所述第二报文具有相同的第二六元组,所述第二队列与所述第一队列属于所述网卡中不同的两个队列,第一kni虚拟设备与所述第二kni虚拟设备为所述多个kni虚拟设备中不同的两个设备。
7.一种报文传输的装置,其特征在于,所述装置包括多个内核网卡接口kni虚拟设备,所述装置还包括:
第一确定模块,用于若接收到第一报文,则根据所述第一报文从所述多个kni虚拟设备确定第一kni虚拟设备,其中,所述第一报文携带所述第一kni虚拟设备的关联信息;
第二确定模块,用于若接收到第二报文,则根据所述第二报文从所述多个kni虚拟设备确定第二kni虚拟设备,其中,所述第二报文携带所述第二kni虚拟设备的关联信息;
第一发送模块,用于通过所述第一kni虚拟设备向网卡的第一队列发送所述第一报文;
第二发送模块,用于通过所述第二kni虚拟设备向网卡的第二队列发送所述第二报文,其中,所述第二队列与所述第一队列属于所述网卡中不同的两个队列。
8.一种报文传输的装置,其特征在于,所述装置包括多个内核网卡接口kni虚拟设备,所述装置还包括:
第一发送模块,用于若通过所述第一kni虚拟设备接收到网卡的第一队列发送的第一报文,则通过所述第一kni虚拟设备将所述第一报文发送至第一进程,其中,所述第一进程与所述第一报文具有相同的第一六元组;
第二发送模块,用于若通过所述第二kni虚拟设备接收到网卡的第二队列发送的第二报文,则通过所述第二kni虚拟设备将所述第二报文发送至第二进程,其中,所述第二进程与所述第二报文具有相同的第二六元组,所述第二队列与所述第一队列属于所述网卡中不同的两个队列,第一kni虚拟设备与所述第二kni虚拟设备为所述多个kni虚拟设备中不同的两个设备。
9.一种终端设备,其特征在于,包括:存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器包括多个内核网卡接口kni虚拟设备,所述处理器用于执行所述存储器中的程序,包括如下步骤:
若接收到第一报文,则根据所述第一报文从所述多个kni虚拟设备确定第一kni虚拟设备,其中,所述第一报文携带所述第一kni虚拟设备的关联信息;
若接收到第二报文,则根据所述第二报文从所述多个kni虚拟设备确定第二kni虚拟设备,其中,所述第二报文携带所述第二kni虚拟设备的关联信息;
通过所述第一kni虚拟设备向网卡的第一队列发送所述第一报文;
通过所述第二kni虚拟设备向网卡的第二队列发送所述第二报文,其中,所述第二队列与所述第一队列属于所述网卡中不同的两个队列;
所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
10.一种终端设备,其特征在于,包括:存储器、收发器、处理器以及总线系统;
其中,所述存储器用于存储程序;
所述处理器包括多个内核网卡接口kni虚拟设备,所述处理器用于执行所述存储器中的程序,包括如下步骤:
若通过所述第一kni虚拟设备接收到网卡的第一队列发送的第一报文,则通过所述第一kni虚拟设备将所述第一报文发送至第一进程,其中,所述第一进程与所述第一报文具有相同的第一六元组;
若通过所述第二kni虚拟设备接收到网卡的第二队列发送的第二报文,则通过所述第二kni虚拟设备将所述第二报文发送至第二进程,其中,所述第二进程与所述第二报文具有相同的第二六元组,所述第二队列与所述第一队列属于所述网卡中不同的两个队列,第一kni虚拟设备与所述第二kni虚拟设备为所述多个kni虚拟设备中不同的两个设备;
所述总线系统用于连接所述存储器以及所述处理器,以使所述存储器以及所述处理器进行通信。
CN201910719768.7A 2019-08-02 2019-08-02 一种报文传输的方法及相关装置 Active CN111181871B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910719768.7A CN111181871B (zh) 2019-08-02 2019-08-02 一种报文传输的方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910719768.7A CN111181871B (zh) 2019-08-02 2019-08-02 一种报文传输的方法及相关装置

Publications (2)

Publication Number Publication Date
CN111181871A true CN111181871A (zh) 2020-05-19
CN111181871B CN111181871B (zh) 2022-03-25

Family

ID=70657030

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910719768.7A Active CN111181871B (zh) 2019-08-02 2019-08-02 一种报文传输的方法及相关装置

Country Status (1)

Country Link
CN (1) CN111181871B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102135903A (zh) * 2011-03-09 2011-07-27 上海交通大学 基于硬件虚拟化的Xen实时性增强系统及其方法
CN104243348A (zh) * 2014-09-22 2014-12-24 曙光信息产业(北京)有限公司 一种数据处理方法和装置
US20150355934A1 (en) * 2013-02-18 2015-12-10 Huawei Technologies Co., Ltd. Method for generating configuration information, and network control unit
CN108804211A (zh) * 2018-04-27 2018-11-13 西安华为技术有限公司 线程调度方法、装置、电子设备及存储介质
US20190207870A1 (en) * 2015-01-30 2019-07-04 Nicira, Inc. Edge datapath using user-kernel transports

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102135903A (zh) * 2011-03-09 2011-07-27 上海交通大学 基于硬件虚拟化的Xen实时性增强系统及其方法
US20150355934A1 (en) * 2013-02-18 2015-12-10 Huawei Technologies Co., Ltd. Method for generating configuration information, and network control unit
CN104243348A (zh) * 2014-09-22 2014-12-24 曙光信息产业(北京)有限公司 一种数据处理方法和装置
US20190207870A1 (en) * 2015-01-30 2019-07-04 Nicira, Inc. Edge datapath using user-kernel transports
CN108804211A (zh) * 2018-04-27 2018-11-13 西安华为技术有限公司 线程调度方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
M. SAID SEDDIKI 等: ""Queuing analysis of dynamic resource allocation for virtual routers"", 《2013 IEEE SYMPOSIUM ON COMPUTERS AND COMMUNICATIONS (ISCC)》 *
刘浩远: ""基于端到端网络的多径传输协议建模与研究"", 《中国优秀硕士学位论文全文数据库·信息科技辑》 *

Also Published As

Publication number Publication date
CN111181871B (zh) 2022-03-25

Similar Documents

Publication Publication Date Title
CN106911848B (zh) 输出提示消息的方法与终端设备
CN107734586B (zh) 天线的切换方法及移动终端
CN110224719B (zh) 通信控制方法及相关产品
CN107800585B (zh) 网络通信的方法和装置、推送消息的方法和装置
CN110569078A (zh) 一种网页级程序的预加载方法和装置
CN110705497A (zh) 图像帧处理方法、装置、终端设备及计算机可读存储介质
CN110428782B (zh) 亮度调节方法及相关产品
CN107317828B (zh) 文件下载方法及装置
CN112691363A (zh) 一种云游戏跨终端切换的方法和相关装置
CN106470234B (zh) 一种设备发现的方法及装置
US10176123B2 (en) Communication method and mobile terminal
CN110602766B (zh) 一种个人热点识别方法和终端之间关联关系的确定方法
CN106851784B (zh) 网络扫描方法与终端设备
CN112235082A (zh) 通信信息的传输方法、装置、设备及存储介质
CN112634885A (zh) 一种跨局域网的语音唤醒方法和装置
CN111617472A (zh) 一种虚拟场景中模型管理的方法以及相关装置
CN115794654A (zh) 一种测试案例分发处理方法、系统、设备及存储介质
CN105528220B (zh) 加载动态共享对象的方法和装置
CN108304709B (zh) 人脸解锁方法及相关产品
CN111181871B (zh) 一种报文传输的方法及相关装置
CN110865743A (zh) 任务管理方法和终端设备
CN116596202A (zh) 工单处理方法、相关装置及存储介质
CN111314900B (zh) 无线连接方法、无线连接装置及移动终端
CN112214699B (zh) 一种页面处理的方法及相关装置
CN110890950B (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