CN113608892B - 一种异步网络环境下的高并发无锁代理转发实现方法 - Google Patents
一种异步网络环境下的高并发无锁代理转发实现方法 Download PDFInfo
- Publication number
- CN113608892B CN113608892B CN202110834863.9A CN202110834863A CN113608892B CN 113608892 B CN113608892 B CN 113608892B CN 202110834863 A CN202110834863 A CN 202110834863A CN 113608892 B CN113608892 B CN 113608892B
- Authority
- CN
- China
- Prior art keywords
- session
- association
- pointer
- mark
- forwarding
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种异步网络环境下的高并发无锁代理转发实现方法,包括步骤:将网络操作和业务逻辑进行隔离,且彼此通过消息队列在工作线程池之间进行消息传递等;本发明精简了业务流程,适应在异步网络环境下的大规模用户并发访问,能够实现访问过程的业务数据代理转发完全无锁化,有效地提高网络业务并发处理能力和代理转发通信性能等。
Description
技术领域
本发明涉及网络通信领域,更为具体的,涉及一种异步网络环境下的高并发无锁代理转发实现方法。
背景技术
SOCKS 5代理是一种通用的代理服务,它遵循标准的SOCKS 5网络代理协议,与具体应用协议无关,其原理是应用客户端要访问应用服务器时,通过SOCKS 5代理客户端与SOCKS 5代理服务器建立网络连接,然后SOCKS 5代理服务器再建立到应用服务器的网络连接,后续应用访问数据就按照“应用客户端<--->SOCKS 5代理客户端<--->SOCKS 5代理服务器<--->应用服务端”流程进行代理转发。
SOCKS 5代理服务器能够屏蔽内部保护的应用服务器信息,所有访问应用服务器的应用终端实际访问的都是SOCKS 5代理服务器,再通过SOCKS 5代理服务器与应用服务器进行代理转发。应用终端的一个应用访问网络连接,对应着SOCKS 5代理服务器的两个网络连接。随着访问应用终端规模的增加,SOCKS 5代理服务器的并发服务能力面临挑战。特别是在骨干高速网络环境中,需要面对大规模应用终端的并发访问,对代理转发的性能要求较高,要避免SOCKS 5代理服务器成为网络瓶颈,影响用户业务。因此,业务数据的代理转发通信性能已经成为制约SOCKS 5代理服务器服务性能提升的一个关键要素,也将是SOCKS 5代理服务器的一个重要研究课题,影响着SOCKS 5代理服务器产品的竞争力。
目前,在SOCKS 5代理应用场景中,SOCKS 5代理服务器对应用终端访问应用服务器的业务数据进行代理转发,对应的业务流程为如图1所示。
SOCKS 5代理客户端部署在应用终端上,与SOCKS 5代理服务器配和完成应用业务访问。终端用户访问应用流程如下:
(1)应用软件发起到应用服务器的访问请求。
(2)SOCKS 5代理客户端拦截访问请求,并将访问数据进行封装,然后将封装后的访问请求数据转发给SOCKS 5代理服务器。
(3)SOCKS 5代理服务器收到SOCKS 5代理客户端转发的数据后,对数据进行解析处理,重新建立到应用服务器的网络连接,并将原始访问数据代理转发给应用服务器。
(4)SOCKS 5代理服务器接收应用服务器的响应数据后进行封装,然后将封装后的访问响应数据转发给SOCKS 5代理客户端。
(5)SOCKS 5代理客户端接收响应数据后,对数据进行解析处理,然后将原始响应数据转发给应用软件。
对于应用软件发起的每一个应用访问网络连接,SOCKS 5代理服务器都需要同步监听关联的两个网络连接,对一端网络连接收到的数据及时通过关联的对端网络连接发送出去,当一端网络连接关闭时,同步关闭另一端的网络连接。在异步网络环境中,为了避免双方失步,出现一边网络连接关闭而另外一边不知道而继续进行转发导致的异常情况,SOCKS 5代理服务器采用互斥锁机制,对关联网络连接进行数据收发和关闭前先进行加锁,待完成相关操作后再进行解锁。该方式虽然确保了业务数据的正常代理转发,但是在互斥操作的时候,同一时间仅能够处理一对网络连接的数据转发。特别是在高并发网络环境下,同一时刻存在着上万网络连接进行转发,进一步加剧了竞争,降低了产品的服务性能。
发明内容
本发明的目的在于克服现有技术的不足,提供一种异步网络环境下的高并发无锁代理转发实现方法,精简了业务流程,适应在异步网络环境下的大规模用户并发访问,能够实现访问过程的业务数据代理转发完全无锁化,有效地提高网络业务并发处理能力和代理转发通信性能等。
本发明的目的是通过以下方案实现的:
一种异步网络环境下的高并发无锁代理转发实现方法,将网络操作和业务逻辑进行隔离,且彼此通过消息队列在工作线程池之间进行消息传递。
进一步地,代理转发的两个session彼此通过parent_session或者child_session指针管理对端session信息,通过判断对端session指针是否为空确认关联session是否已经关闭;session表示网络会话,parent_session表示父会话,child_session表示子会话;对于服务端连接来说,客户端连接是自己的child_session;相应的,对应的服务端连接为客户端连接的parent_session;任意时刻,一个parent_session对应着唯一的一个child_session;当相应的单边session进行关闭时,同步关闭关联的另一端session。
进一步地,通过session的关联标记判断该session是否在进行关联操作,不允许在session获取关联标记失败时进行数据转发,以避免冲突,并将当前消息放入队列等待下一次轮询处理。同时,也不允许在session的关联操作期间关闭该session,否则可能操作已经失效的session并导致异常。
进一步地,当需要关闭session时,先通知关联session进行关闭,并在通知后设置关联session指针为空,这样能够避免重复通知。
进一步地,包括如下步骤:
S1,parent_session创建child_session时,彼此保存对端session指针;
S2,关联标记属性声明,指明session的关联操作状态;如果值为true表示关联操作进行中,如果值为false表示未进行关联操作,默认为false;
S3,单边session进行转发数据前第一次获取关联session指针,然后通过接口检查并设置关联session的关联标记是否为true;如果返回true表示关联标记设置成功,关联session进行后续数据转发处理;如果返回false表示关联标记设置失败,关联session在进行关联操作,此时将当前消息放入队列,等待下一次轮询时再处理;
S4,单边session进行转发数据前第二次获取关联session指针;如果关联session指针有效则进行后续的数据转发,并在转发完成后设置关联标记为false;如果关联session指针无效,说明关联session已经被关闭,本次数据转发无法进行,并设置关联标记为false;
S5,单边session准备关闭时,先设置自身关联标记为true;如果设置失败,说明关联session已经在关联操作当前session,则将当前消息放入队列,等待下一次轮询时再关闭;如果设置成功,则进行后续的关闭操作;
S6,单边session获取关联session指针,如果关联session指针为空说明关联session已经关闭,如果不为空则设置关联session的关联标记为true;如果设置关联标记不成功说明关联session正在进行关联操作,此时将当前消息放入队列,等待下一次轮询时再处理;如果设置关联标记成功,则再次获取关联session指针并判断是否为空;如果为空说明关联session已经关闭,如果不为空则通知关联session关闭并设置关联session指针为空,并设置关联session的关联标记为false;
S7,单边session完成关闭操作后,设置自身关联标记为false。
进一步地,在步骤S2中,关联标记属性声明为bool原子类型;在步骤S3中,所述接口包括compare_exchange_strong原子接口。
本发明的有益效果包括:
本发明提供了一种精简的无锁代理转发实现方法,适应在异步网络环境下的大规模用户并发访问,能够实现访问过程的业务数据代理转发完全无锁化,有效地提高网络业务并发处理能力和代理转发通信性能等。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为应用访问代理转发流程示意图;
图2为本发明实施例中业务数据代理转发过程的无锁化操作流程示意图;
图3为本发明实施例中session关闭过程的无锁化操作流程示意图。
具体实施方式
本说明书中所有实施例公开的所有特征,或隐含公开的所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以以任何方式组合和/或扩展、替换。
实施例1
在Proactor模型的异步网络环境中,任意网络操作(accept、connect、send、receive等)都是调用的异步I/O,在调用相关操作接口时只是向系统进行了操作注册,由系统进行实际的操作处理,待系统完成操作后再通过回调主动通知,实现后续的业务流程。为实现高效率处理,本实施例将网络操作和业务逻辑进行隔离,彼此通过消息队列在工作线程池之间进行消息传递,实现精简的无锁代理转发,适应在异步网络环境下的大规模用户并发访问,能够实现访问过程的业务数据代理转发完全无锁化,有效提高网络业务并发处理能力和代理转发通信性能。
实施例2
在实施例1的基础上,引入“session”(网络会话)概念来描述网络连接上下文,实现网络连接全生命期管理,一个session就是一个网络连接相关联所有数据的集合。本实施例把接收应用终端数据的网络连接称为服务端连接,把连接应用系统并转发数据的网络连接称为客户端连接。在代理转发过程中,客户端连接由服务端连接所创建。为此,本实施例还引入“child_session”(子会话)和“parent_session”(父会话)来描述代理转发过程中两个session之间的关联关系。对于服务端连接来说,客户端连接是自己的child_session。相应的,对应的服务端连接称为客户端连接的parent_session。任意时刻,一个parent_session对应着唯一的一个child_session,当相应的单边session进行关闭时,也需要同步关闭关联的另一端session。
服务端业务在接受新的网络连接,或者客户端业务在创建一个远程网络连接时,都需要分配一个新的session进行关联。但是在网络连接关闭时,考虑到资源频繁分配、销毁而引发的效率下降,仅对session进行关联数据的清理复位,而不进行实际销毁,便于后续的快速复用。
每一个session包含关联标记、parent_session指针和child_session指针等属性,组合实现代理转发过程中关联父会话或者子会话的有效性不被破坏,达到无锁化目标。
实施例3
在实施例2的基础上,如图2~3所示,执行如下步骤:
S1,parent_session创建child_session时,彼此保存对端session指针;
S2,关联标记属性声明为bool原子类型,指明session的关联操作状态;如果值为true表示关联操作进行中,如果值为false表示未进行关联操作,默认为false;
S3,单边session进行转发数据前第一次获取关联session指针,然后通过compare_exchange_strong原子接口检查并设置关联session的关联标记是否为true;如果返回true表示关联标记设置成功,关联session进行后续数据转发处理;如果返回false表示关联标记设置失败,关联session在进行关联操作,此时将当前消息放入队列,等待下一次轮询时再处理;
S4,单边session进行转发数据前第二次获取关联session指针,这样可以避免间隙时间内可能发生的关联会话被关闭;如果关联session指针有效则进行后续的数据转发,并在转发完成后设置关联标记为false;如果关联session指针无效,说明关联session已经被关闭,本次数据转发无法进行,并设置关联标记为false;
S5,单边session准备关闭时,先设置自身关联标记为true;如果设置失败,说明关联session已经在关联操作当前session,则将当前消息放入队列,等待下一次轮询时再关闭;如果设置成功,则进行后续的关闭操作;
S6,单边session获取关联session指针,如果关联session指针为空说明关联session已经关闭,如果不为空则设置关联session的关联标记为true;如果设置关联标记不成功说明关联session正在进行关联操作,此时将当前消息放入队列,等待下一次轮询时再处理;如果设置关联标记成功,则再次获取关联session指针并判断是否为空;如果为空说明关联session已经关闭,如果不为空则通知关联session关闭并设置关联session指针为空,并设置关联session的关联标记为false;
S7,单边session完成关闭操作后,设置自身关联标记为false。
本实施例依托于Proactor模型的异步网络机制,设计一种精简的高并发环境下的无锁代理转发网络通信方式,具有以下的有益效果和优点:1)大幅度提升了SOCKS 5代理服务器的代理转发性能,其转发速率与常规tcpperf通信方式的速率差异仅在5%左右。2)实现操作简单,可以快速应用于类似场景。3)实现操作兼容X86、PowerPC、Windows、Linux、国产化等跨平台软硬件环境,可以快速实现已有工作成果的重用。4)当前现有的软硬件平台采用本方案进行升级适配后,同等测试条件下,数据的网络通信性能得到较大提升。
本发明未涉及部分均与现有技术相同或可采用现有技术加以实现。
上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。
除以上实例以外,本领域技术人员根据上述公开内容获得启示或利用相关领域的知识或技术进行改动获得其他实施例,各个实施例的特征可以互换或替换,本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
本发明功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,在一台计算机设备(可以是个人计算机,服务器,或者网络设备等)以及相应的软件中执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、或者光盘等各种可以存储程序代码的介质,进行测试或者实际的数据在程序实现中存在于只读存储器(Random Access Memory,RAM)、随机存取存储器(Random Access Memory,RAM)等。
Claims (5)
1.一种异步网络环境下的高并发无锁代理转发实现方法,其特征在于,将网络操作和业务逻辑进行隔离,且彼此通过消息队列在工作线程池之间进行消息传递;
每一个session包含关联标记、parent_session指针和child_session指针,组合实现代理转发过程中关联父会话或者子会话的有效性不被破坏,达到无锁化目标;
S1,parent_session创建child_session时,彼此保存对端session指针;
S2,关联标记属性声明,指明session的关联操作状态;如果值为true表示关联操作进行中,如果值为false表示未进行关联操作,默认为false;
S3,单边session进行转发数据前第一次获取关联session指针,然后通过接口检查并设置关联session的关联标记是否为true;如果返回true表示关联标记设置成功,关联session进行后续数据转发处理;如果返回false表示关联标记设置失败,关联session在进行关联操作,此时将当前消息放入队列,等待下一次轮询时再处理;
S4,单边session进行转发数据前第二次获取关联session指针;如果关联session指针有效则进行后续的数据转发,并在转发完成后设置关联标记为false;如果关联session指针无效,说明关联session已经被关闭,本次数据转发无法进行,并设置关联标记为false;
S5,单边session准备关闭时,先设置自身关联标记为true;如果设置失败,说明关联session已经在关联操作当前session,则将当前消息放入队列,等待下一次轮询时再关闭;如果设置成功,则进行后续的关闭操作;
S6,单边session获取关联session指针,如果关联session指针为空说明关联session已经关闭,如果不为空则设置关联session的关联标记为true;如果设置关联标记不成功说明关联session正在进行关联操作,此时将当前消息放入队列,等待下一次轮询时再处理;如果设置关联标记成功,则再次获取关联session指针并判断是否为空;如果为空说明关联session已经关闭,如果不为空则通知关联session关闭并设置关联session指针为空,并设置关联session的关联标记为false;
S7,单边session完成关闭操作后,设置自身关联标记为false。
2.根据权利要求1所述的一种异步网络环境下的高并发无锁代理转发实现方法,其特征在于,代理转发的两个session彼此通过parent_session或者child_session指针管理对端session信息,通过判断对端session指针是否为空确认关联session是否已经关闭;session表示网络会话,parent_session表示父会话,child_session表示子会话;对于服务端连接来说,客户端连接是自己的child_session;相应的,对应的服务端连接为客户端连接的parent_session;任意时刻,一个parent_session对应着唯一的一个child_session;当相应的单边session进行关闭时,同步关闭关联的另一端session。
3.根据权利要求1或2任一所述的一种异步网络环境下的高并发无锁代理转发实现方法,其特征在于,通过session的关联标记判断该session是否在进行关联操作,不允许在session获取关联标记失败时进行数据转发,并将当前消息放入队列等待下一次轮询处理;同时,不允许在session的关联操作期间关闭该session。
4.根据权利要求3所述的一种异步网络环境下的高并发无锁代理转发实现方法,其特征在于,当需要关闭session时,先通知关联session进行关闭,并在通知后设置关联session指针为空。
5.根据权利要求1所述的一种异步网络环境下的高并发无锁代理转发实现方法,其特征在于,在步骤S2中,关联标记属性声明为bool原子类型;
在步骤S3中,所述接口包括compare_exchange_strong原子接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110834863.9A CN113608892B (zh) | 2021-07-23 | 2021-07-23 | 一种异步网络环境下的高并发无锁代理转发实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110834863.9A CN113608892B (zh) | 2021-07-23 | 2021-07-23 | 一种异步网络环境下的高并发无锁代理转发实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113608892A CN113608892A (zh) | 2021-11-05 |
CN113608892B true CN113608892B (zh) | 2023-07-04 |
Family
ID=78305234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110834863.9A Active CN113608892B (zh) | 2021-07-23 | 2021-07-23 | 一种异步网络环境下的高并发无锁代理转发实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113608892B (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6842906B1 (en) * | 1999-08-31 | 2005-01-11 | Accenture Llp | System and method for a refreshable proxy pool in a communication services patterns environment |
US7979508B1 (en) * | 1999-09-23 | 2011-07-12 | International Business Machines Corporation | System and method for improving gateway transparency |
US20040230695A1 (en) * | 2003-05-15 | 2004-11-18 | Anschutz Thomas Arnold | Methods, systems, and computer program products for processing traffic in a communication network based on registration of an access session and/or application flow and specifying a treatment for the access session and/or application flow traffic |
CN102255765B (zh) * | 2010-05-21 | 2014-07-30 | 华为技术有限公司 | 双向转发检测的方法和设备 |
CN103078833A (zh) * | 2011-10-26 | 2013-05-01 | 上海讯首软件有限公司 | 一种异步传输数据的方法 |
CN104967502B (zh) * | 2015-02-03 | 2017-06-27 | 深圳市腾讯计算机系统有限公司 | 数据发送方法和装置、数据接收方法和装置 |
US20210105338A1 (en) * | 2020-01-06 | 2021-04-08 | Intel Corporation | Quality of service (qos) management with network-based media processing (nbmp) |
CN112689012A (zh) * | 2020-12-24 | 2021-04-20 | 南京三眼精灵信息技术有限公司 | 跨网络的代理通讯方法及装置 |
-
2021
- 2021-07-23 CN CN202110834863.9A patent/CN113608892B/zh active Active
Non-Patent Citations (1)
Title |
---|
远程直接内存访问与检查点相结合的容器迁移;赵倩等;《计算机科学与探索》;第13卷(第12期);1995-2007 * |
Also Published As
Publication number | Publication date |
---|---|
CN113608892A (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10701177B2 (en) | Automatic data request recovery after session failure | |
CN110177118B (zh) | 一种基于rdma的rpc通信方法 | |
EP1696611B1 (en) | Server data queuing system and method | |
US10387228B2 (en) | Symmetric bridge component for communications between kernel mode and user mode | |
EP2552081B1 (en) | Interrupt management | |
US7519730B2 (en) | Copying chat data from a chat session already active | |
US7624112B2 (en) | Asynchronously storing transaction information from memory to a persistent storage | |
JP6336988B2 (ja) | 使用要求の小バッチ処理のためのシステムおよび方法 | |
US20210306211A1 (en) | Method and apparatus for detection of network function failure and restart in a network environment | |
WO2019154036A1 (zh) | QoS流处理方法、设备及系统 | |
US20230105343A1 (en) | NF SERVICE CONSUMER RESTART DETECTION USING DIRECT SIGNALING BETWEEN NFs | |
CN108063813B (zh) | 一种集群环境下密码服务网络并行化的方法与系统 | |
CN113660350A (zh) | 分布式锁协调方法、装置、设备及存储介质 | |
CN114237937A (zh) | 一种多线程的数据传输方法和装置 | |
WO2016107612A1 (zh) | 一种对虚拟卡片进行处理的方法和装置 | |
CN113608892B (zh) | 一种异步网络环境下的高并发无锁代理转发实现方法 | |
US7346690B1 (en) | Deferred piggybacked messaging mechanism for session reuse | |
CN113254166A (zh) | 一种处理io请求的方法、存储介质和虚拟化模拟器 | |
CN112417349B (zh) | 一种编程装置、网络状态监控方法 | |
EP4175207A1 (en) | Method, apparatus and device for supporting tcp dynamic migration, and storage medium | |
CN114911632A (zh) | 一种进程间通信的控制方法和系统 | |
CN111885169B (zh) | 一种云硬盘服务高可用的实现方法、系统及装置 | |
CN114371935A (zh) | 网关处理方法、网关、设备及介质 | |
WO2020220937A1 (zh) | 一种安全策略管理方法及装置 | |
JP7305898B2 (ja) | 操作応答方法、操作応答装置、電子機器及び記憶媒体 |
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 |