CN112039783B - 通信数据输出方法、装置、计算机设备及存储介质 - Google Patents

通信数据输出方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN112039783B
CN112039783B CN202010838835.XA CN202010838835A CN112039783B CN 112039783 B CN112039783 B CN 112039783B CN 202010838835 A CN202010838835 A CN 202010838835A CN 112039783 B CN112039783 B CN 112039783B
Authority
CN
China
Prior art keywords
port
polling
port group
communication data
matched
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.)
Active
Application number
CN202010838835.XA
Other languages
English (en)
Other versions
CN112039783A (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.)
Eversec Beijing Technology Co Ltd
Original Assignee
Eversec Beijing 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 Eversec Beijing Technology Co Ltd filed Critical Eversec Beijing Technology Co Ltd
Priority to CN202010838835.XA priority Critical patent/CN112039783B/zh
Publication of CN112039783A publication Critical patent/CN112039783A/zh
Application granted granted Critical
Publication of CN112039783B publication Critical patent/CN112039783B/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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7453Address table lookup; Address filtering using hashing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了一种通信数据输出方法、装置、计算机设备及存储介质。所述方法包括:获取通信数据包;如果所述通信数据包命中预先配置的轮询条件,则根据所述轮询条件确定端口组和轮询类型,所述端口组的数量为至少一个。根据所述轮询类型,在每个所述端口组中确定目标输出端口,并将所述通信数据包通过各所述目标输出端口对外发送。本发明实施例可以合理配置网络流量,提高网络流量的利用率。

Description

通信数据输出方法、装置、计算机设备及存储介质
技术领域
本发明实施例涉及数据处理领域,尤其涉及一种通信数据输出方法、装置、计算机设备及存储介质。
背景技术
目前,可以通过汇聚分流器实现通信数据的汇聚分流。
基于服务器资源的合理配置需求,可以将多个输出端口进行分组,并在汇聚分流器接收流量之后,可以将流量发往某个输出端口组中,或者复制到多个输出端口组中输出,通常每个输出端口组中包括多个端口,一个端口对应一台接收端设备,每个端口对应不同的接收端设备。
在确定输出端口组之后,通常通过哈希方式进行负载均衡,会将同一个会话的网络流量从输出端口组中的同一个输出端口输出,从而集中输入到同一台接收端设备上,也即通信数据集中输出到该输出端口组的某个端口上,导致网络流量配置不合理,浪费网络流量,同时集中输出,会导致接收端设备带宽超负荷运行,从而导致负载失衡。
发明内容
本发明实施例提供了一种通信数据输出方法、装置、计算机设备及存储介质,可以合理配置网络流量,提高网络流量的利用率。
第一方面,本发明实施例提供了一种通信数据输出方法,包括:
获取通信数据包;
如果所述通信数据包命中预先配置的轮询条件,则根据所述轮询条件确定端口组和轮询类型,所述端口组的数量为至少一个。
根据所述轮询类型,在每个所述端口组中确定目标输出端口,并将所述通信数据包通过各所述目标输出端口对外发送。
第二方面,本发明实施例提供了一种通信数据输出装置,包括:
通信数据包获取模块,用于获取通信数据包;
轮询类型确定模块,用于如果所述通信数据包命中预先配置的轮询条件,则根据所述轮询条件确定端口组和轮询类型,所述端口组的数量为至少一个;
端口输出模块,用于根据所述轮询类型,在每个所述端口组中确定目标输出端口,并将所述通信数据包通过各所述目标输出端口对外发送。
第三方面,本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序所述处理器执行所述程序时实现如本发明实施例中任一所述的通信数据输出方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例中任一所述的通信数据输出方法。
本发明实施例通过在通信数据包命中轮询类型时,可以获取匹配的至少一个端口组,并针对各端口组,采用与轮询类型匹配的轮询方式确定目标输出端口,实现轮询输出端口输出通信数据包,避免在一个端口组中集中在某个输出端口输出通信数据包,解决了现有技术中网络流量集中输出到一个节点,导致网络流量不合理的问题,实现合理配置通信数据输出,提高网络流量的利用率。
附图说明
图1是本发明实施例一中的一种通信数据输出方法的流程图;
图2a是本发明实施例二中的一种通信数据输出方法的流程图;
图2b是本发明实施例二中的一种单播方式下的通信数据输出方法的流程图;
图2c是本发明实施例二中的一种单播方式下的通信数据输出方法的流程图;
图3a是本发明实施例三中的一种通信数据输出方法的流程图;
图3b是本发明实施例三中的一种多播方式下的通信数据输出方法的流程图;
图4是本发明实施例四中的一种通信数据输出装置的结构示意图;
图5是本发明实施例五中的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一中的一种通信数据输出方法的流程图,本实施例可适用于在对接收到的通信数据进行分流的情况,该方法可以由本发明实施例提供的通信数据输出装置来执行,该装置可采用软件和/或硬件的方式实现,并一般可集成计算机设备中,例如,网络汇聚分流器或交换机等。如图1所示,本实施例的方法具体包括:
S110,获取通信数据包。
通常,汇聚分流过程可以包括:接收通信数据包,并根据访问控制列表(AccessControl Lists,ACL)对通信数据包进行过滤,过滤后的通信数据包发送至指定输出端口,以输出至与输出端口匹配的设备。其中,ACL是路由器和交换机接口的指令列表,用来控制端口进出的数据包。
通信数据包可以是指网络传输数据形成的包。在网络中,传输的数据通常以包为单位进行传输。通信数据包用于在网络中传输数据。通信数据包可以是报文。
S120,如果所述通信数据包命中预先配置的轮询条件,则根据所述轮询条件确定端口组和轮询类型,所述端口组的数量为至少一个。
轮询条件用于判断通信数据包的轮询方式。通信数据包命中预先配置的轮询条件,表明可以采用与轮询条件匹配的轮询方式确定目标输出端口输出该通信数据包。具体的,命中方式可以是:根据通信数据包的网际协议(Internet Protocol,IP)元组信息判断通信数据包是否命中轮询条件,以及命中哪一个轮询条件。具体的,IP元组信息可以包括下述至少一项:源IP地址,源端口,目的IP地址,目的端口,和传输层协议等。
端口组包括至少两个输出端口。端口组的数量有多个。实际上,在选择输出端口输出通信数据包时,可以根据用户输入的配置信息对输出端口进行分组,形成的端口组即为负载均衡组。轮询类型用于确定输出端口的轮询方式。用户预先为每个轮询条件配置轮询类型和至少一个端口组,即建立轮询条件与端口组标识信息的对应关系,以及建立轮询条件与轮询类型的对应关系。可以根据轮询条件与端口组标识信息的对应关系,确定轮询条件匹配的端口组。
可选的,所述轮询类型包括单播轮询类型或多播轮询类型,所述单播轮询类型匹配的端口组的数量为一个,所述多播轮询类型匹配的端口组的数量为至少两个。
轮询类型可以由用户配置。端口组的数量与轮询类型匹配,通常单播轮询类型匹配的端口组的数量为一个;多播轮询类型匹配的端口组的数量为至少两个。
单播轮询类型用于对一个端口组中的输出端口进行轮询,多播轮询类型用于在各端口组中的输出端口进行轮询,具体的,从各端口组中分别选择一个端口输出通信数据包。具体的,单播可以是指在汇聚分流过程中,通信数据包从一个端口组输出。多播可以是指在汇聚分流过程中,通信数据包复制为多个,并分别转发到多个端口组中进行输出。
通过配置轮询类型,并相应获取匹配数量的端口组,可以按照需求选择相应的轮询方式,提高端口轮询的灵活性,合理选择输出端口,从而实现合理配置网络流量资源。
需要说明的是,本发明实施例汇聚分流器或者交换机中的芯片可以采用barefoot的tofino芯片,由于现有的传统芯片不具备轮询输出功能,采用前述芯片可以通过可编程方式配置轮询类型,以及相应的轮询方式。具体的,芯片处理通信数据包的功能模块可以分为六个模块:入口解析模块(IngressParser)、入口模块(Ingress)、入口逆解析模块(IngressDeparser)、出口解析模块(EgressParser)、出口模块(Egress)和出口逆解析模块(EgressDeparser)。本发明实施例采用的通信数据输出方法是在Ingress模块利用p4语言设计三张表格实现在单播方式下的输出端口的轮询,对于多播方式,在现有的哈希(hash)负载均衡方式下,利用有状态的存储器(register)计算哈希值来完成对输出端口的轮询。
S130,根据所述轮询类型,在每个所述端口组中确定目标输出端口,并将所述通信数据包通过各所述目标输出端口对外发送。
每个端口组确定一个目标输出端口。目标输出端口用于对外输出通信数据包。目标输出端口的确定方式可以是:根据与轮询类型匹配的轮询方式,从多个输出端口筛选出目标输出端口。通常不同轮询类型匹配的轮询方式不同。本发明实施例中轮询方式是在不关注同源同宿的情况下使用。通过使用轮询方式负载均衡可以使流量负载更均匀。
本发明实施例通过在通信数据包命中轮询条件时,可以获取匹配的轮询类型和至少一个端口组,并针对各端口组,采用与轮询类型匹配的轮询方式确定目标输出端口,实现轮询输出端口输出通信数据包,避免在一个端口组中集中在某个输出端口输出通信数据包,解决了现有技术中网络流量集中输出到一个节点,导致网络流量不合理的问题,实现合理配置通信数据输出,提高网络流量的利用率。
实施例二
图2a为本发明实施例二中的一种通信数据输出方法的流程图,本实施例以上述实施例为基础进行优化,将轮询类型具体为单播轮询类型。本实施例的方法具体包括:
S210,获取通信数据包。
本实施例中未详尽的描述可以参考上述实施例的描述。
S220,如果所述通信数据包命中预先配置的轮询条件,则根据所述轮询条件确定端口组和轮询类型,所述轮询类型为单播轮询类型,所述端口组的数量为一个。
存在多个端口组,与单播轮询类型匹配的端口组的数量为一个。针对单播轮询类型,需要从中选择一个端口组,作为轮询输出端口的对象。获取端口组可以是获取端口组的标识信息。端口组的标识信息用于标识端口组,也即用于确定端口组。例如,端口组的标识信息可以是端口组A或端口组B等。
可以预先配置轮询条件与端口组标识信息的对应关系。具体的,用户可以通过应用程序配置表格,以配置轮询条件与端口组标识信息的对应关系。
例如,用户可以配置如表1所示的访问控制列表,实际是配置在单播轮询方式下的轮询条件,该轮询条件指定端口组标识信息和轮询类型。
表1
Figure BDA0002640684290000071
具体的,可以通过端口组标识获取模块查询访问控制列表获取端口组的标识信息和轮询类型。在访问控制列表查表操作中,配置了转发到一个端口组的操作,即确定轮询类型为单播轮询类型,执行该操作可以获取数据,获取的数据是端口组的标识信息,该端口组的标识信息可以由用户来配置,即用户可以确定在哪一个端口组中进行端口轮询。具体的,通过端口组标识获取模块,以通信数据包的IP元组信息为索引,在多个访问控制列表中进行查询,当前确定通信数据包的IP元组信息命中某个访问控制列表中的关键,则获取该访问控制列表中的数据,即用户配置的端口组的标识信息。
S230,获取所述端口组匹配的当前轮询次序信息,所述当前轮询次序信息通过累计所述端口组输出包的数量确定。
实际上,端口组中每个输出端口按照设定顺序轮流输出通信数据包,每个输出端口输出的通信数据包不同。在一个轮询周期内,每个输出端口输出通信数据包的次数为一次,直至全部输出端口均输出一次通信数据包,进入下一轮询周期,重复前述步骤。
单播轮询类型匹配的端口组只有一个,从而仅需获取一个端口组匹配的当前轮询次序。当前轮询次序信息用于确定端口组中在当前轮次输出通信数据包的输出端口。当前轮询次序可以与目标输出端口的标识信息匹配。具体的,可以预先建立轮询次序与输出端口的标识信息的对应关系,从而可以根据当前轮询次序信息,确定与当前轮序次序信息匹配的标识信息,并根据该标识信息确定目标输出端口。
当前轮询次序可以通过register累计端口组输出包的数量确定。端口组输出包的数量可以是该端口组对外发送的通信数据包的数量。register可以进行累加操作,示例性的,累加操作可以是在原有累计数值上加1。
每当该端口组的任意一个端口输出一个通信数据包,register可以在端口组匹配的输出包累计数量上进行累加操作,例如累加1,从而该输出包累计数量可以表征轮询到的输出端口,从而可以使端口组中的每个输出端口有均等机会输出通信数据包,避免集中在一个输出端口输出通信数据包,导致网络流量分配不均。
在一个具体的例子中,端口组包括3个输出端口,分别编号为:0、1和2。输出包累计数量初始值为0,当端口组接收到通信数据包时,选择编号为0的输出端口输出该通信数据包;register累加1,此时输出包累计数量为1,当端口组再次接收到的通信数据包时,选择编号为1的输出端口输出该通信数据包,以此类推。
可选的,获取所述端口组匹配的当前轮询次序信息,包括:如果当前轮询次序信息与所述端口组的端口总数匹配,则将当前轮询次序信息置为初始值;对所述当前轮询次序信息进行累加设定数量操作。
端口组的端口总数可以是端口组包括的输出端口的数量。端口总数用于确定轮询次序信息是否需要复位,更具体的,端口总数用于判断是否进入下一轮询周期,以确定当前轮询次序信息。设定数量可以是1,还可以是其他数值例如2,可以根据需要进行设定,对此发明实施例不作具体限制。
当前轮询次序信息与所述端口组的端口总数匹配,例如当前轮询次序信息对应的数值大于或等于所述端口组的端口总数,表明端口组中的输出端口均输出一次通信数据包,可以进行下一轮询周期的输出端口的轮询。将轮询次序信息置为初始值,并作为当前轮询次序信息,实际上是对轮询次序信息进行复位,重新开始新一轮询周期的输出端口的轮询,可以避免同一轮询周期内重复选择同一输出端口输出通信数据包。示例性的,如果轮询次序信息的初始值为0,则置为初始值的操作实际为置零操作。
轮询次序信息对应的数值小于所述端口组的端口总数,表明端口组中存在至少一个输出端口未输出过通信数据包,则继续当前轮询周期的输出端口的轮询。
在一个具体的例子中,如前例,在一个端口组中,输出包累计数量为2,此时选择编号为1的输出端口输出该通信数据包,同时确定输出包累计数量小于输出端口总数3,register累加1,此时输出包累计数量为3;当端口组再次接收到的通信数据包时,选择编号为2的输出端口输出该通信数据包,同时确定输出包累计数量等于输出端口总数3,register置为初始值0,以此类推。
通过register累加操作,对轮询次序信息进行累加计算,同时将轮询次序信息与端口总数进行比较,可以实现轮询次序信息循环取值,从而保证端口组的输出端口轮询,实现合理配置通信数据输出,提高网络流量的利用率。
具体的,可以通过端口总数获取模块获取端口组的端口总数。
例如,用户可以配置如表2所示的端口总数获取表,获取端口组的端口总数。
表2
Figure BDA0002640684290000091
可以通过端口总数获取模块查询端口总数获取表,获取端口组的端口总数。在端口总数获取表中,端口组的标识信息为索引项,port_num为端口组的端口总数,该数值由用户配置。通过端口组标识获取模块,根据通信数据包的IP元组信息查询ACL表,可以获取端口组的标识信息,再通过端口总数获取模块根据端口组的标识信息查询端口总数获取表,以获取端口总数。g_num为全局变量,将用户配置的port_num数值负值给g_num。
具体的,可以通过轮询次序信息累加模块,实现累加设定数量操作。例如,用户可以配置如表3所示的轮询次序信息累加表,以执行register累加设定数量操作。
表3
Figure BDA0002640684290000101
通过轮询次序信息累加模块,指示register执行累加设定数量操作,具体的,以端口组的标识信息为索引,对命中的端口组匹配的轮询次序信息进行累加操作。当累加后的轮询次序信息等于端口组的端口总数时,轮询次序信息置为初始值,计数重新开始,这样就完成了新一轮询周期的轮询。此外,通过轮询次序信息累加模块还可以获取当前轮询次序信息。实际上,每个端口组都有对应的register执行累加计数操作,端口组的标识信息作为索引值来区分对应的register计数。
S240,根据所述当前轮询次序信息,在所述端口组中确定目标输出端口,并将所述通信数据包通过所述目标输出端口对外发送。
当前轮询次序信息用于确定端口组中的目标输出端口。根据当前轮询次序信息,可以在一个端口组中确定一个输出端口,由此,可以准确确定目标输出端口,并通过输出端口对通信数据包进行输出。实际上,根据当前轮询次序信息,单播轮询类型,以及单播轮询类型匹配的端口组,在该匹配的端口组中确定目标输出端口,并进行输出。
具体的,可以通过端口匹配模块,指定目标输出端口。例如,用户可以配置如表4所示的目标输出端口匹配表,以指定目标输出端口。
表4
Figure BDA0002640684290000111
通过端口匹配模块,将N端口指定为目标输出端口,具体的,以端口组的标识信息和当前轮询次序信息为索引,获取命中的目标输出端口匹配表中的N端口,并指定为目标输出端口,其中,N端口为物理端口,由用户配置。实际上,通过端口匹配模块,查询与端口组的标识信息和当前轮询次序信息对应的N端口,将通信数据包通过N端口输出。
在一个具体的例子中,如图2b-图2c所示,所述通信数据输出方法可以包括:
S271,配置表格。
用户可以通过应用程序配置单播方式下的轮询方式依赖的多个表格,如访问控制列表、端口组总数获取表、轮询次序信息累加表和目标输出端口匹配表。
具体的,sai层调用控制面函数将配置的表格数据下发到芯片底层,芯片底层通过p4层的前述端口组标识获取模块、端口总数获取模块、轮询次序信息累加模块和端口匹配模块等模块来完成对单播方式下的轮询输出。
S272,接收通信数据包。
S273,判断是否命中单播轮询类型匹配的访问控制列表,如果是,则执行S275;否则执行S274。
单播轮询类型匹配的访问控制列表,用于单播到端口组,具体可以参考前述表1。
S274,执行其他转发流程。
其他转发流程可以是多播轮询类型匹配的转发流程,或者不进行轮询的转发流程。
S275,获取访问控制列表中的端口组的标识信息。
S276,判断是否命中端口组总数获取表,如果是,则执行S277;否则结束。
S277,获取所述端口组总数获取表中的端口组的端口总数。
S278,判断是否命中轮询次序信息累加表,如果是,则执行S279;否则结束。
S279,对所述端口组匹配的轮询次序信息进行累加设定数量操作。
获取端口组匹配的轮询次序信息,并存放在register中。
S280,判断累加后的轮询次序信息与所述端口组的端口总数是否相同,如果是,则执行S282;否则执行S281。
S281,将所述累加后的轮询次序信息作为当前轮询次序信息。
S282,将累加后的轮询次序信息置为初始值,并作为当前轮询次序信息。
S283,获取所述端口组匹配的当前轮询次序信息。
将register中的轮询次序信息赋值给全局变量,由此,芯片可以通过获取全局变量以获取当前轮询次序信息。
S284,判断是否命中目标输出端口匹配表。
S285,获取目标输出端口匹配表中的目标输出端口。
本发明实施例通过在单播通信过程中,筛选出一个端口组,并通过register累计端口组输出包的数量确定轮询次序信息,以及根据端口组和轮询次序信息确定该端口组的目标输出端口,也即通过register简单的累加操作实现单播方式下的轮询输出端口,可以简化输出端口的轮询操作,降低轮询输出端口的复杂度和成本,提高输出端口的轮询效率。
实施例三
图3a为本发明实施例三中的一种通信数据输出方法的流程图,本实施例以上述实施例为基础进行优化,将轮询类型具体为多播轮询类型。本实施例的方法具体包括:
S310,获取通信数据包。
本实施例中未详尽的描述可以参考上述实施例的描述。
S320,如果所述通信数据包命中预先配置的轮询条件,则根据所述轮询条件确定端口组和轮询类型,所述轮询类型为多播轮询类型,所述端口组的数量为至少两个。
多播轮询类型匹配的端口组的数量为至少两个。
S330,获取各所述端口组匹配的当前轮询次序信息。
多播轮询类型匹配的端口组的数量为至少两个。针对每个端口组均配置有轮询次序信息,从而,需要获取各个端口组匹配的当前轮询次序信息。
S340,根据各所述端口组匹配的当前轮询次序信息,确定所述端口组匹配的哈希值。
其中,所述当前轮询次序信息通过register累计所述端口组输出包的数量确定。根据当前轮询次序信息,确定端口组匹配的哈希值,可以是将当前轮询次序信息作为端口组匹配的哈希值,或者根据当前轮询次序信息计算哈希值。
可选的,所述通信数据输出方法,还包括:确定所述通信数据包命中初始哈希输出条件,则采用预设哈希算法计算各所述端口组匹配的哈希值。
初始哈希输出条件用于判断通信数据包是否通过多播哈希筛选端口方式选择输出端口进行输出。初始哈希输出条件可以包括通信数据包不命中轮询条件,且输出方式为多播方式。
多播哈希筛选端口方式是在多播方式下,计算哈希值,并将哈希值对各端口组的端口数进行模除计算,得到的计算结果对应的输出端口即为各端口组对应的输出端口,其中,多播哈希筛选端口方式是现有的端口选择方式。
实际上,对于多播传输方式,在选择多个端口组进行输出时,芯片底层会记录用户配置的多个端口组,以及每个端口组的至少一个端口,通常会根据这些端口做哈希计算,并根据哈希值确定输出通信数据包的端口。
预设哈希算法可以由用户配置。哈希算法可以是任意长度的二进制值映射为较短的固定长度的二进制值的算法,具体用于将端口标识信息映射为指定长度的数值。具体的,可以将IP元组信息映射为指定长度的数值。
实际上,多播轮询是在现有哈希算法筛选端口的基础上,可以将直接根据现有的哈希算法计算得到哈希值,替换为根据当前轮序次序信息确定哈希值,以根据哈希值进行端口筛选,可以简化多播方式下的轮询输出端口的操作,减少多播方式下的轮询输出端口的操作量。
具体的,可以通过哈希计算模块执行哈希计算操作。
例如,用户可以配置如表5所示的访问控制列表,实际配置多播方式的条件,该访问控制列表指定需要进行多播的端口组标识信息和轮询标识参数。轮询标识参数用于判断是否采用轮询方式确定输出端口,同时轮询标识参数用于确定轮询类型。如果通信数据包命中该表5所述的访问控制列表,则从表5中获取端口组的标识信息和轮询标识参数。
表5
Figure BDA0002640684290000151
具体的,可以通过端口组标识获取模块实现获取多播的多个端口组的标识信息和轮询标识参数。其中,轮询标识参数可以是boll类型的变量round_robin_value,变量的数值包括真或假,该值由用户配置。如果端口组需要做轮询输出,则用户需要将此变量round_robin_value配置为true;如果端口组不需要做轮询输出,则用户需要将此变量round_robin_value配置为false。如果通信数据包命中多播方式的条件,且轮询标识参数与多播轮询类型匹配,则确定通信数据包命中多播方式下的轮询条件;如果通信数据包命中多播方式的条件,且轮询标识参数与多播轮询类型不匹配,则确定通信数据包命中多播方式下的轮询条件
S350,根据各所述端口组匹配的哈希值确定各所述端口组匹配的目标输出端口,并将所述通信数据包通过各所述目标输出端口对外发送。
可以预先建立哈希值与端口组的目标输出端口之间的对应关系,根据哈希值,在端口组包括的多个输出端口中查询目标输出端口。实际上,根据当前轮询次序信息,多播轮询类型,以及多播轮询类型匹配的各端口组,在每个匹配的端口组中确定多个目标输出端口,并分别进行输出。
可选的,所述根据各所述端口组匹配的哈希值,确定各所述端口组匹配的目标输出端口,包括:计算各所述端口组匹配的哈希值分别除以各所述端口组的端口总数的余数;根据各所述余数,在所述端口组中确定所述端口组匹配的目标输出端口。
端口组匹配的余数用于确定该端口组中的目标输出端口。哈希值除以端口组的端口总数的余数,用于对每个哈希值进行归一化,将不同算法计算得到的哈希值映射到同一范围的数值,从而可以采用余数与输出端口的对应关系,根据余数确定每个端口组中的目标输出端口。
示例性的,根据余数可以在预先确定的端口组中确定目标输出端口的方式,可以与在单播方式下根据当前轮询次序信息确定在一个端口组中目标输出端口的方式相同。
具体的,可以通过多播模除模块执行哈希值除以端口组的端口总数的余数的计算操作。
通过计算哈希值与端口总数的余数,作为确定目标输出端口的依据,实现对不同哈希算法计算得到的哈希值进行取模,可以将哈希值映射为输出组的端口序号,从而在端口组中准确确定输出端口,提高目标输出端口确定的准确率。
在一个具体的例子中,如图3b所示,所述通信数据输出方法可以包括:
S371,配置表格。
用户可以通过应用程序配置多播方式下的轮询方式依赖的表格,如访问控制列表。后续的哈希筛选端口操作可以采用现有的多播哈希筛选端口方式执行。
具体的,sai层调用控制面函数将配置的表格数据下发到芯片底层,芯片底层可以通过重新计算哈希值来完成对多播方式下的轮询输出。
S372,接收通信数据包。
S373,判断是否命中多播方式下的访问控制列表,如果是,则执行S375;否则执行S374。
访问控制列表,用于多播到至少一个端口组,具体可以参考前述表5。
S374,执行其他转发流程。
其他转发流程可以是单播轮询类型匹配的转发流程,或者不进行轮询的单播转发流程。
S375,获取访问控制列表中的端口组的标识信息和轮询标识参数。
S376,判断轮询标识参数是否为真,如果是,则执行S277;否则执行S278。
轮询标识参数用于判断在多播方式下,是否进行端口轮询输出。
S377,根据各所述端口组匹配的当前轮询次序信息,确定各所述端口组匹配的哈希值。
S378,采用预设哈希算法计算各所述端口组匹配的哈希值。
S379,根据各所述哈希值,在各所述端口组中确定各所述端口组匹配的目标输出端口。
根据哈希值对端口组的端口总数做模除,得到的余数,并在端口组中确定目标输出端口。
本发明实施例通过在多播方式中,筛选出至少两个端口组,并通过register累计端口组输出包的数量确定轮询次序信息,作为哈希值,并根据端口组和哈希值确定该端口组的目标输出端口,也即通过register简单的累加操作实现多播方式下的轮询输出端口,可以简化输出端口的轮询操作,降低轮询输出端口的复杂度和成本,提高输出端口的轮询效率。
实施例四
图4为本发明实施例四中的一种通信数据输出装置的示意图。实施例三是实现本发明上述实施例提供的通信数据输出方法的相应装置,该装置可采用软件和/或硬件的方式实现,并一般可集成计算机设备中,例如,网络汇聚分流器或交换机等。
相应的,本实施例的装置可以包括:
通信数据包获取模块410,用于获取通信数据包;
轮询类型确定模块420,用于如果所述通信数据包命中预先配置的轮询条件,则根据所述轮询条件确定端口组和轮询类型,所述端口组的数量为至少一个;
端口输出模块430,用于根据所述轮询类型,在每个所述端口组中确定目标输出端口,并将所述通信数据包通过各所述目标输出端口对外发送。
本发明实施例通过在通信数据包命中轮询类型时,可以获取匹配的至少一个端口组,并针对各端口组,采用与轮询类型匹配的轮询方式确定目标输出端口,实现轮询输出端口输出通信数据包,避免在一个端口组中集中在某个输出端口输出通信数据包,解决了现有技术中网络流量集中输出到一个节点,导致网络流量不合理的问题,实现合理配置通信数据输出,提高网络流量的利用率。
进一步的,所述轮询类型包括单播轮询类型或多播轮询类型,所述单播轮询类型匹配的端口组的数量为一个,所述多播轮询类型匹配的端口组的数量为至少两个。
进一步的,所述端口输出模块430,包括:单播目标输出端口确定单元,用于获取所述端口组匹配的当前轮询次序信息,所述当前轮询次序信息累计所述端口组输出包的数量确定,所述轮询类型为单播轮询类型;根据所述当前轮询次序信息,在所述端口组中确定目标输出端口。
进一步的,所述通信数据输出装置,还包括:端口轮询次序复位模块,用于在获取所述端口组匹配的当前轮询次序信息之后,如果当前轮询次序信息与所述端口组的端口总数匹配,则将当前轮询次序信息置为初始值;对所述当前轮询次序信息进行累加设定数量操作。
进一步的,所述端口输出模块430,包括:多播目标输出端口确定单元,用于获取各所述端口组匹配的当前轮询次序信息,所述轮询类型为多播轮询类型;根据各所述端口组匹配的当前轮询次序信息,确定所述端口组匹配的哈希值;根据各所述端口组匹配的哈希值,确定各所述端口组匹配的目标输出端口。
进一步的,所述通信数据输出装置,还包括:哈希值计算模块,用于如果确定所述通信数据包命中初始哈希输出条件,则采用预设哈希算法计算各所述端口组匹配的哈希值。
进一步的,所述多播目标输出端口确定单元,包括:余数计算子单元,用于计算各所述端口组匹配的哈希值分别除以各所述端口组的端口总数的余数;根据各所述余数,在所述端口组中确定所述端口组匹配的目标输出端口。
需要说明的是,本实施例中的模块划分还可以是其他方式,例如,前述实施例中的端口组标识获取模块、端口总数获取模块、轮询次序信息累加模块、端口匹配模块、哈希计算模块和多播模除模块等模块的划分,可以根据需要选择合适的模块划分。
上述通信数据输出装置可执行本发明实施例一所提供的通信数据输出方法,具备执行的通信数据输出方法相应的功能模块和有益效果。
实施例五
图5为本发明实施例五提供的一种计算机设备的结构示意图。图5示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图5显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。计算机设备12可以是服务器或客户端。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。
计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM),数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。系统存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如系统存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(Input/Output,I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local AreaNetwork,LAN),广域网(Wide Area Network,WAN)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图5中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、(Redundant Arrays of Inexpensive Disks,RAID)系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明任意实施例所提供的一种通信数据输出方法。
实施例六
本发明实施例六提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请所有发明实施例提供的通信数据输出方法:
也即,该程序被处理器执行时实现:获取通信数据包;如果所述通信数据包命中预先配置的轮询条件,则根据所述轮询条件确定端口组和轮询类型,所述端口组的数量为至少一个;根据所述轮询类型,在每个所述端口组中确定目标输出端口,并将所述通信数据包通过各所述目标输出端口对外发送。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、RAM、只读存储器(Read OnlyMemory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式CD-ROM、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、无线电频率(RadioFrequency,RF)等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括LAN或WAN——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (6)

1.一种通信数据输出方法,其特征在于,包括:
获取通信数据包;
如果所述通信数据包命中预先配置的轮询条件,则根据所述轮询条件确定端口组和轮询类型,所述端口组的数量为至少一个;
根据所述轮询类型,在每个所述端口组中确定目标输出端口,并将所述通信数据包通过各所述目标输出端口对外发送;
所述根据所述轮询类型,在每个所述端口组中确定目标输出端口,包括:
获取所述端口组匹配的当前轮询次序信息,所述当前轮询次序信息通过累计所述端口组输出包的数量确定,所述轮询类型为单播轮询类型;
根据所述当前轮询次序信息,在所述端口组中确定目标输出端口;
在获取所述端口组匹配的当前轮询次序信息之后,还包括:
如果当前轮询次序信息与所述端口组的端口总数匹配,则将当前轮询次序信息置为初始值;
对所述当前轮询次序信息进行累加设定数量操作;
还包括:
获取各所述端口组匹配的当前轮询次序信息,所述轮询类型为多播轮询类型;
根据各所述端口组匹配的当前轮询次序信息,确定所述端口组匹配的哈希值;
根据各所述端口组匹配的哈希值,确定各所述端口组匹配的目标输出端口;
所述根据各所述端口组匹配的哈希值,确定各所述端口组匹配的目标输出端口,包括:
计算各所述端口组匹配的哈希值分别除以各所述端口组的端口总数的余数;
根据各所述余数,在所述端口组中确定所述端口组匹配的目标输出端口。
2.根据权利要求1所述的方法,其特征在于,所述轮询类型包括单播轮询类型或多播轮询类型,所述单播轮询类型匹配的端口组的数量为一个,所述多播轮询类型匹配的端口组的数量为至少两个。
3.根据权利要求1所述的方法,其特征在于,还包括:
如果确定所述通信数据包命中初始哈希输出条件,则采用预设哈希算法计算各所述端口组匹配的哈希值。
4.一种通信数据输出装置,其特征在于,包括:
通信数据包获取模块,用于获取通信数据包;
轮询类型确定模块,用于如果所述通信数据包命中预先配置的轮询条件,则根据所述轮询条件确定端口组和轮询类型,所述端口组的数量为至少一个;
端口输出模块,用于根据所述轮询类型,在每个所述端口组中确定目标输出端口,并将所述通信数据包通过各所述目标输出端口对外发送;
所述端口输出模块,包括:单播目标输出端口确定单元,用于获取所述端口组匹配的当前轮询次序信息,所述当前轮询次序信息累计所述端口组输出包的数量确定,所述轮询类型为单播轮询类型;根据所述当前轮询次序信息,在所述端口组中确定目标输出端口;
多播目标输出端口确定单元,用于获取各所述端口组匹配的当前轮询次序信息,所述轮询类型为多播轮询类型;根据各所述端口组匹配的当前轮询次序信息,确定所述端口组匹配的哈希值;根据各所述端口组匹配的哈希值,确定各所述端口组匹配的目标输出端口;
所述通信数据输出装置,还包括:端口轮询次序复位模块,用于在获取所述端口组匹配的当前轮询次序信息之后,如果当前轮询次序信息与所述端口组的端口总数匹配,则将当前轮询次序信息置为初始值;对所述当前轮询次序信息进行累加设定数量操作;
所述多播目标输出端口确定单元,包括:余数计算子单元,用于计算各所述端口组匹配的哈希值分别除以各所述端口组的端口总数的余数;根据各所述余数,在所述端口组中确定所述端口组匹配的目标输出端口。
5.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-3中任一所述的通信数据输出方法。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-3中任一所述的通信数据输出方法。
CN202010838835.XA 2020-08-19 2020-08-19 通信数据输出方法、装置、计算机设备及存储介质 Active CN112039783B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010838835.XA CN112039783B (zh) 2020-08-19 2020-08-19 通信数据输出方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010838835.XA CN112039783B (zh) 2020-08-19 2020-08-19 通信数据输出方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN112039783A CN112039783A (zh) 2020-12-04
CN112039783B true CN112039783B (zh) 2022-08-09

Family

ID=73577014

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010838835.XA Active CN112039783B (zh) 2020-08-19 2020-08-19 通信数据输出方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN112039783B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115134284B (zh) * 2021-03-24 2023-07-14 中国电信股份有限公司 通过多个分流器实现同源同宿分流的方法、装置和介质
CN113542370B (zh) * 2021-06-29 2023-11-03 北京达佳互联信息技术有限公司 活动播报信息处理方法、装置、电子设备及存储介质
CN114465924B (zh) * 2021-12-24 2023-12-22 阿里巴巴(中国)有限公司 网络设备测试方法、数据包发生方法和交换芯片

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102238072A (zh) * 2010-05-06 2011-11-09 中兴通讯股份有限公司 一种动态选择路由的方法及clos交换网系统
CN103401781A (zh) * 2013-07-18 2013-11-20 杭州华三通信技术有限公司 应用于多链路透明互联网络的接入方法和设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101404619B (zh) * 2008-11-17 2011-06-08 杭州华三通信技术有限公司 一种实现服务器负载均衡的方法和一种三层交换机
CN102065014B (zh) * 2010-12-29 2014-12-31 中兴通讯股份有限公司 数据信元处理方法和装置
CN102932270A (zh) * 2012-11-27 2013-02-13 无锡城市云计算中心有限公司 支持网络安全业务的负载均衡方法和设备
CN104486236B (zh) * 2014-11-28 2018-02-06 华为技术有限公司 负载分担的方法和路由设备
CN106572025A (zh) * 2016-10-19 2017-04-19 盛科网络(苏州)有限公司 一种实现网络流量负载均衡的方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102238072A (zh) * 2010-05-06 2011-11-09 中兴通讯股份有限公司 一种动态选择路由的方法及clos交换网系统
CN103401781A (zh) * 2013-07-18 2013-11-20 杭州华三通信技术有限公司 应用于多链路透明互联网络的接入方法和设备

Also Published As

Publication number Publication date
CN112039783A (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
CN112039783B (zh) 通信数据输出方法、装置、计算机设备及存储介质
US20200344189A1 (en) Communication method and communication apparatus
US8248928B1 (en) Monitoring server load balancing
KR20160099473A (ko) 모듈식 포워딩 테이블 확장성을 위한 기술
CN104468401A (zh) 一种报文处理方法和装置
CN113422731A (zh) 一种负载均衡输出方法、装置、汇聚分流设备和介质
US20180367431A1 (en) Heavy network flow detection method and software-defined networking switch
JP2022549055A (ja) ノードの速度制限方法、装置、電子デバイス及び記憶媒体
WO2016175768A1 (en) Map tables for hardware tables
CN108848204A (zh) 一种nat业务快速处理方法及装置
CN114302429B (zh) Nwdaf网元的确定方法、装置、设备及存储介质
US20240259344A1 (en) Node Isolation Method, Switching Device, and Ethernet Storage System
CN113794788A (zh) 网关导流方法、系统、装置、设备、存储介质及产品
CN114079634B (zh) 一种报文转发方法、装置及计算机可读存储介质
US20190182356A1 (en) Data networking method in data-centric network system and apparatus implementing same
CN113766047A (zh) 一种任务分组方法、装置、计算机设备及存储介质
CN113316212A (zh) 一种基站前传数据流的传输方法及装置
CN106411545A (zh) 一种业务属性的计数方法及装置
CN115865802B (zh) 虚拟实例的流量镜像方法、装置、虚拟机平台及存储介质
WO2023173993A1 (zh) 一种基于动态网关的通讯系统及方法
US9590897B1 (en) Methods and systems for network devices and associated network transmissions
EP4404527A1 (en) Service scheduling method and apparatus, device and computer readable storage medium
CN112637285B (zh) 边缘云通信方法、管理系统、计算机设备及存储介质
CN114726796A (zh) 流量控制方法、网关及交换机
CN109981302B (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