CN109691042A - 用于网络连接缓冲区大小确定的系统和方法 - Google Patents
用于网络连接缓冲区大小确定的系统和方法 Download PDFInfo
- Publication number
- CN109691042A CN109691042A CN201780052249.9A CN201780052249A CN109691042A CN 109691042 A CN109691042 A CN 109691042A CN 201780052249 A CN201780052249 A CN 201780052249A CN 109691042 A CN109691042 A CN 109691042A
- Authority
- CN
- China
- Prior art keywords
- network connection
- network
- server
- terminal device
- client terminal
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/52—Queue scheduling by attributing bandwidth to queues
- H04L47/522—Dynamic queue service slot or variable bandwidth allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9005—Buffering arrangements using dynamic buffer space allocation
-
- 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/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/101—Server selection for load balancing based on network conditions
-
- 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/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
-
- 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/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0894—Packet rate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
- H04L47/283—Flow control; Congestion control in relation to timing considerations in response to processing delays, e.g. caused by jitter or round trip time [RTT]
-
- 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/01—Protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明的实现涉及用于确定并实现网络连接所用的传输缓冲区大小的方法、系统和计算机程序存储装置。一种计算机实现的方法,包括:获得针对至少一个服务器和至少一个客户端装置之间的多个网络连接中的各网络连接的相应的带宽要求;确定针对各网络连接的相应的延迟;基于针对各网络连接的相应的带宽要求和相应的延迟,来计算针对该网络连接的期望传输缓冲区大小;将针对各网络连接的新的传输缓冲区大小设置为针对该网络连接的所述期望传输缓冲区大小;以及使用所述新的传输缓冲区大小来从所述至少一个服务器向所述至少一个客户端装置传输数据。
Description
相关申请的交叉引用
本申请要求2016年8月24日提交的美国专利申请15/245,718的优先权,其全部内容通过引用而被包含于此。
背景技术
本说明书涉及用于确定多个网络连接所用的传输缓冲区的大小的系统和方法。
通常,客户端装置和服务器系统之间的连接利用传输缓冲区来传输数据。例如,传输控制协议(TCP)可以在各所连接的装置的操作系统内核中使用发送缓冲区和接收缓冲区。这种传输缓冲区的不恰当大小调整可能导致包括延迟问题和/或内存压力的各种问题。例如,在传输缓冲区太小的情况下,服务器和客户端装置之间的过度握手可能导致延迟问题以及/或者妨碍连接保持期望的数据传送速率。同样,在传输缓冲区太大的情况下,特别是对于涉及数千个或数百万个连接的客户端-服务器系统而言,用于维持缓冲区的内存要求可能变得过大。需要便于恰当地确定服务器系统和客户端之间的连接所用的传输缓冲区的大小的系统和方法。
发明内容
本文所述的系统和方法的示例用于确定多个网络连接所用的传输缓冲区的大小。使用例如服务器上的操作系统内核和从该内核提取往返时间(RTT)的应用来针对各连接测量RTT或延迟。基于例如与在所连接的装置上运行的一个或多个应用相关联的要求数据传送速率来针对各连接确定带宽要求。在特定示例中,基于RTT和带宽要求来确定传输缓冲区大小,并且可以周期性地更新或调整传输缓冲区大小,以考虑连接性的变化。
本文所述的系统和方法对于具有数千个或数百万个连接的实时系统而言特别有利。这些系统和方法能够优化传输缓冲区大小以使延迟最小化并减少内存压力。这种缓冲区大小调整可以动态地(例如,在运行中和/或随时间的经过)进行,并且优先是特定于各连接的,其中缓冲区大小是针对各连接(例如,基于该连接的带宽要求和RTT)单独优化的。通过使内存使用保持到最低限度,使系统可以处理的连接数量以及这些连接的带宽最大化。
通常,本说明书的主题的一个方面涉及一种计算机实现的方法,所述方法包括:获得针对至少一个服务器和至少一个客户端装置之间的多个网络连接中的各网络连接的相应的带宽要求;确定针对各网络连接的相应的延迟;基于针对各网络连接的相应的带宽要求和相应的延迟,来计算针对该网络连接的期望传输缓冲区大小;将针对各网络连接的新的传输缓冲区大小设置为针对该网络连接的所述期望传输缓冲区大小;以及使用所述新的传输缓冲区大小来从所述至少一个服务器向所述至少一个客户端装置传输数据。
在特定示例中,获得针对所述多个网络连接中的各网络连接的相应的带宽要求包括:确定针对在与所述多个网络连接其中之一相关联的客户端装置上运行的应用的目标数据传送速率。获得针对所述多个网络连接中的各网络连接的相应的带宽要求包括:例如测量在一段时间内通过至少一个网络连接所传输的数据的量。在一些示例中,确定针对各网络连接的相应的延迟包括:确定针对至少一个网络连接的往返时间。针对所述至少一个网络连接的相应的延迟包括例如所述往返时间除以2。
在各种实现中,确定所述往返时间包括:从所述至少一个服务器获得所述往返时间。计算针对各网络连接的期望传输缓冲区大小包括:确定针对至少一个网络连接(例如TCP/IP连接或无连接传输模式连接)的相应的带宽要求和相应的延迟的乘积。在一些示例中,所述的方法包括:确定在稍后时刻的针对至少一个网络连接的相应的延迟;以及基于在所述稍后时刻的所述相应的延迟来计算针对所述至少一个网络连接的新的期望传输缓冲区大小。
在另一方面中,本说明书的主题涉及一种系统,包括:一个或多个计算机,其被编程为进行包括以下的操作:获得针对至少一个服务器和至少一个客户端装置之间的多个网络连接中的各网络连接的相应的带宽要求;确定针对各网络连接的相应的延迟;基于针对各网络连接的相应的带宽要求和相应的延迟,来计算针对该网络连接的期望传输缓冲区大小;将针对各网络连接的新的传输缓冲区大小设置为针对该网络连接的所述期望传输缓冲区大小;以及使用所述新的传输缓冲区大小来从所述至少一个服务器向所述至少一个客户端装置传输数据。
在特定示例中,获得针对所述多个网络连接中的各网络连接的相应的带宽要求包括:确定针对在与所述多个网络连接其中之一相关联的客户端装置上运行的应用的目标数据传送速率。获得针对所述多个网络连接中的各网络连接的相应的带宽要求包括:例如测量在一段时间内通过至少一个网络连接所传输的数据的量。在一些示例中,确定针对各网络连接的相应的延迟包括:确定针对至少一个网络连接的往返时间。针对所述至少一个网络连接的相应的延迟包括所述往返时间除以2。
在各种实现中,确定所述往返时间包括:从所述至少一个服务器获得所述往返时间。计算针对各网络连接的期望传输缓冲区大小包括:例如确定针对至少一个网络连接(例如,TCP/IP连接或无连接传输模式连接)的相应的带宽要求和相应的延迟的乘积。在一些示例中,所述操作包括:确定在稍后时刻的针对至少一个网络连接的相应的延迟;以及基于在所述稍后时刻的所述相应的延迟来计算针对所述至少一个网络连接的新的期望传输缓冲区大小。
在另一方面中,本说明书的主题涉及一种非暂时性计算机可读介质,其存储有指令,所述指令在由一个或多个计算机执行的情况下,使所述计算机进行包括以下的操作:获得针对至少一个服务器和至少一个客户端装置之间的多个网络连接中的各网络连接的相应的带宽要求;确定针对各网络连接的相应的延迟;基于针对各网络连接的相应的带宽要求和相应的延迟,来计算针对该网络连接的期望传输缓冲区大小;将针对各网络连接的新的传输缓冲区大小设置为针对该网络连接的所述期望传输缓冲区大小;以及使用所述新的传输缓冲区大小来从所述至少一个服务器向所述至少一个客户端装置传输数据。
针对本发明的给定方面所述的实施例或示例的元素可以用在本发明的另一方面的各种实施例或示例中,例如,设想从属于一个独立权利要求的从属权利要求的特征可以用在任何其它独立权利要求的设备、系统和/或方法中。
在附图和以下的描述中详细阐述了本说明书中所描述的主题的一个或多个实施例。根据说明书、附图和权利要求,本主题的其它特征、方面和优点将变得明显。
附图说明
图1是用于确定和调整多个网络连接所用的传输缓冲区大小的示例系统的示意图。
图2是用于确定和调整服务器系统和客户端装置之间的连接所用的传输缓冲区大小的示例系统的示意图。
图3是服务器系统和客户端装置之间的连接的示意数据流图。
图4是用于调整多个网络连接所用的传输缓冲区大小的示例方法。
具体实施方式
通常,本文所述的系统和方法用于确定用于在一个或多个服务器与多个客户端装置之间通过网络连接(例如,TCP/IP或用户数据报协议/IP连接)发送消息的传输缓冲区的大小。这些系统和方法的目标是确定传输缓冲区的大小,使得在针对各连接实现期望带宽的同时,使内存使用和延迟最小化。
图1示出用于优化多个网络连接所用的传输缓冲区大小的示例系统100。服务器系统112提供处理、数据存储和数据传输。服务器系统112可以包括可以部署在各种地理位置或数据中心处的一个或多个处理器114、软件组件和数据库。服务器系统112的软件组件可以包括服务器应用116、服务器内核118和服务器缓冲区大小确定模块120。这些软件组件可以包括可以在相同或不同的单独数据处理设备上执行的子组件。服务器系统112的数据库可以包括可以驻留在一个或多个物理存储系统中的服务器数据122。服务器数据122通常可以包括例如与以下中的一个或多个有关的信息:服务器系统112本身;服务器系统112所用的当前或先前的网络连接;当前或先前的带宽要求;安装或以其它方式用在服务器系统112或客户端装置上的软件;以及用户偏好。以下将进一步说明软件组件和数据库。尽管服务器应用116、服务器内核118和缓冲区大小确定模块120被示出为连接至数据库(例如,服务器数据122)或者与这些数据库进行通信,但服务器应用116、服务器内核118和/或缓冲区大小确定模块20不一定连接至这些数据库或者与这些数据库进行通信。
可以提供具有合适的图形用户界面的应用作为最终用户应用,以使得用户能够与服务器系统112交换信息或以其它方式交互。最终用户应用可以由客户端装置的用户经由网络113(例如,因特网和/或本地网络)访问。在所示的示例中,客户端装置包括用户客户端装置126、128、130、132和134。各客户端装置可以是例如个人计算机、智能电话、平板计算机或膝上型计算机。其它客户端装置也是可以的。
如针对客户端装置130所示,各客户端装置可以包括一个或多个处理器、软件组件和/或数据库。例如,客户端装置130的软件组件可以包括客户端应用136、客户端内核138和客户端缓冲区大小确定模块140。这些软件组件可以包括可以在相同或不同的单独数据处理设备上执行的子组件。客户端装置130的数据库可以包括可以驻留在一个或多个物理存储系统中的客户端数据142。客户端数据142通常可以包括例如与以下中的一个或多个有关的信息:客户端装置130本身;客户端装置130所用的当前或先前的网络连接;当前或先前的带宽要求;安装或以其它方式用在客户端装置130上的软件;以及用户偏好。客户端装置126、128、132和134优选包括相似的客户端应用、客户端内核、客户端缓冲区大小确定模块和/或客户端数据。
通常,服务器应用116和客户端应用136可以是分别在服务器系统112和客户端装置130上运行的软件程序。服务器应用116和客户端应用136可以分别支持在服务器系统112和客户端装置130上正在进行的一个或多个活动,并且可以与彼此交互和/或交换信息。例如,客户端装置130的用户可以使用客户端应用136来进行活动(例如,玩游戏、请求信息、浏览因特网、观看视频、发送图片、发送电子邮件等),并且客户端应用136可以周期性地向服务器应用116发送信息和/或从服务器应用116请求信息。例如,在多玩家在线游戏的特定情况下,用户可以通过与客户端装置130上的客户端应用136交互来玩游戏。客户端应用136可以将与用户的游戏活动有关的信息发送至服务器应用116,其中该服务器应用116可以处理用户的活动和其它游戏玩家的活动。服务器应用116可以将与游戏环境和玩家的活动有关的信息发送至客户端应用136和其它用户的客户端应用。同样,在用户浏览因特网的情况下,客户端应用136可以是web浏览器应用,并且服务器应用116可以是与网站相关联的应用。例如,在用户使用客户端应用136访问搜索引擎网站时,服务器应用116可以是用于对搜索请求作出响应并且安装在该网站所用的服务器上的应用。在用户提交搜索查询时,客户端应用136可以将该查询发送至服务器应用116,并且服务器应用116可以进行搜索并将搜索结果发送至客户端装置130。
通常,服务器内核118和客户端内核138可以是分别在服务器系统112和客户端装置130上运行的操作系统的一部分,其中服务器内核118和客户端内核138对在服务器系统112和客户端装置130上发生的活动和进程进行控制。在各种实现中,这两个内核分别控制服务器系统112和客户端装置130之间的数据的交换。这种交换可以例如使用传输控制协议/网际协议(TCP/IP)或者包括诸如用户数据报协议(UDP)等的无连接协议的其它数据传送协议而发生。各内核可以包括或利用针对各连接的一个或多个内存缓冲区以在服务器系统112和客户端装置130之间传送数据。例如,服务器内核118可以包括用于向客户端装置130发送数据的发送缓冲区和用于从客户端装置130接收数据的接收缓冲区。同样,客户端内核138可以包括或利用用于向服务器系统112发送数据的发送缓冲区和用于从服务器系统112接收数据的接收缓冲区。在各种示例中,发送缓冲区和/或接收缓冲区在本文中被称为“传输缓冲区”。
在特定实现中,服务器缓冲区大小确定模块120和客户端缓冲区大小确定模块140可用于优化服务器系统112和客户端装置130之间的连接。服务器缓冲区大小确定模块120和/或客户端缓冲区大小确定模块140可以确定用于通过连接传送数据的缓冲区的适当大小。如本文所述,这种缓冲区大小确定可以通过考虑例如连接所用的期望带宽和测量延迟来进行。
图2是示出服务器系统112和客户端装置130之间的连接202的示例系统200。连接202可以是例如TCP/IP连接,并且可以使用或包括网络113。在所示的示例中,服务器内核118可以包括或定义用于在给定连接上与客户端装置130交换信息的发送缓冲区204和接收缓冲区206。例如,服务器系统112或服务器内核118可以包括或有权访问可以是固定物理量的内存的服务器内存,并且服务器内核118可以从该服务器内存分配发送缓冲区204和/或接收缓冲区206的期望大小。如本文所述,服务器内核118可以随时间的经过而周期性地调整发送缓冲区204和/或接收缓冲区206的大小。同样,客户端内核138可以包括或定义用于在给定连接上与服务器系统112交换信息的发送缓冲区208和接收缓冲区210。例如,客户端装置130或客户端内核138可以包括或有权访问可以是固定物理量的内存的客户端内存,并且客户端内核138可以从该客户端内存分配发送缓冲区208和/或接收缓冲区210的期望大小。如本文所述,客户端内核138可以随时间的经过而周期性地调整发送缓冲区208和/或接收缓冲区210的大小。
在各种示例中,在从服务器应用116向客户端应用136传送数据时,可以将数据复制到发送缓冲区204。例如,服务器应用116可以使用套接字应用编程接口(API)来使服务器内核118知晓存在准备发送的数据。例如,在发送缓冲区204中放置有数据的情况下、在发送缓冲区204已满的情况下、或者在经过了指定时间量之后,可以将发送缓冲区204的内容通过连接202发送至接收缓冲区210。例如,在数据到达接收缓冲区210的情况下、在接收缓冲区210已满的情况下、或者在经过了指定时间量之后,客户端应用136使用API可以从接收缓冲区210提取数据。同样,在从客户端应用136向服务器应用116传送数据时,将数据复制到发送缓冲区208。例如,在发送缓冲区208中放置有数据的情况下、在发送缓冲区208已满的情况下、或者在经过了指定时间量之后,可以将发送缓冲区208的内容通过连接202发送至接收缓冲区206。例如,在数据到达接收缓冲区206的情况下、在接收缓冲区206已满的情况下、或者在经过了指定时间量之后,服务器应用116可以从接收缓冲区206提取数据。
图3是示出通过服务器系统112和客户端装置130之间的连接202的数据流的示例数据流图。在时刻t1,服务器系统112将数据302发送至客户端装置130。在时刻t2数据302到达客户端装置130。在客户端装置130接收到数据302时,客户端装置130将向服务器系统112通知接收到了数据的确认304发送至服务器系统112。在时刻t3在服务器系统112处接收确认304。服务器系统112将数据302发送至客户端装置130并接收从客户端装置130返回的确认304所需的时间(即,时刻t3-时刻t1)被称为通过连接202传送数据302所用的往返时间(RTT)。在时刻t4,客户端装置130将数据306发送至服务器系统112。在时刻t5服务器系统112接收到数据306时,服务器系统112将确认308发送至客户端装置130。在时刻t6,客户端装置130接收到确认308。时刻t6和时刻t4之间的差是通过连接202传送数据306所用的RTT。
在各种示例中,系统和方法可以记录通过连接发送和/或接收数据的时刻,并且可以使用所记录的时刻来确定RTT。例如,在服务器系统112将数据302发送至客户端装置130时,服务器内核118可以将初始时间戳(即,处于时刻t1处)添加到数据302。在客户端装置130发送确认304时,客户端内核138可以转发该初始时间戳并且可以添加确认时间戳(即,处于时刻t2处)。在时刻t3服务器系统112接收到确认304时,服务器内核118可以基于时刻t3与时刻t1处的初始时间戳之间的差(即,时刻t3-时刻t1)来确定RTT。可选地或附加地,服务器内核118或客户端内核138可以基于时刻t1处的初始时间戳与时刻t2处的确认时间戳之间的差(即,时刻t2-时刻t1)来确定将数据302从服务器系统112发送至客户端装置130所需的时间。服务器内核118可以基于时刻t3与时刻t2处的确认时间戳之间的差(即,时刻t3-时刻t2)来确定将确认304从客户端装置130发送至服务器系统112所需的时间。以这种方式,服务器内核118和/或客户端内核138可以计算、记录和/或监视与连接202相关联的RTT。
在特定示例中,本文所述的系统和方法可以确定与服务器系统112和客户端装置130之间的连接202相关联的带宽要求。可以基于系统规格(例如,要求刷新率和/或要求数据传送速率)以及/或者通过监视向着和来自一个或多个客户端装置上所安装的客户端应用的数据传送速率来确定带宽要求。带宽要求可以是例如客户端应用136正确地执行所需的数据传送速率(例如,客户端应用136的正确执行所需的最小数据传送速率)。通常,通过确定并实现带宽要求,可以减小服务器系统112以及/或者一个或多个客户端装置上的发送缓冲区和/或接收缓冲区的大小。这特别是在服务器系统112正在支持与客户端装置的多个连接(例如,数千个或数百万个连接)的情况下,可以极大地减少对服务器系统112的内存压力。换句话说,通过使涉及服务器系统112的连接所用的内存使用最小化,服务器系统112可以处理更多的连接以及/或者可以扩展到数千个连接以上。例如,由于在发送数据之前填充发送缓冲区可能需要较少的时间,因此较小的缓冲区大小还可以改善连接的延迟(例如,RTT或RTT/2)。
在一些示例中,带宽要求根据服务器系统112和客户端装置130之间的数据流的方向而不同。例如,针对从服务器系统112向客户端装置130的数据传送的带宽要求可以不同于针对从客户端装置130向服务器系统112的数据传送的带宽要求。在主要从服务器系统112向客户端装置130传送数据的情况下,对于该方向,带宽要求可能更高。例如,在客户端装置130正从服务器系统112流式传输视频时,可能出现这种情形。例如,在客户端装置130将视频流式传输到服务器系统112时,可能出现相反的情形。在那种情况下,对于从客户端装置130向服务器系统112的数据传送,与对于从服务器系统112向客户端装置130的数据传送相比,带宽要求可能更高。
在特定实例下,这些系统和方法可以确定或获得针对与客户端装置相关联的所有连接的带宽要求。例如,在特定客户端装置具有向服务器或多个服务器的多于一个的连接的情况下,可以组合针对这些连接的带宽要求以确定该客户端装置的聚合带宽。根据本文所述的技术,可以使用聚合带宽要求来确定与该特定客户端装置相关联的一个或多个连接所用的缓冲区大小。
在一些示例中,针对连接的带宽要求由服务器系统112和/或客户端装置130确定或被通信至服务器系统112和/或客户端装置130。例如,可以将带宽要求从服务器系统112通信至客户端装置130以及/或者从客户端装置130通信至服务器系统112。在一些实例中,服务器应用116和/或客户端应用136的提供者确定带宽要求并将该带宽要求提供至服务器系统112,该服务器系统112然后可以将带宽要求通信至客户端装置130。
在各种示例中,服务器缓冲区大小确定模块120可用于确定发送缓冲区204和/或接收缓冲区206的适当大小。服务器缓冲区大小确定模块120可以基于例如带宽要求和/或RTT来确定发送缓冲区204和/或接收缓冲区206的大小。服务器缓冲区大小确定模块120可以从服务器内核118提取RTT以及/或者可以随时间的经过而监视RTT。在各种实例下,可以如下确定发送缓冲区204和/或接收缓冲区206的大小:
缓冲区大小=RTT×带宽要求,
其中:RTT是连接202所用的往返时间。在确定发送缓冲区204的大小时,该等式中的带宽要求优选是针对从服务器系统112向客户端装置130的数据传送的带宽要求。在确定接收缓冲区206的大小时,该等式中的带宽要求优选是针对从客户端装置130向服务器系统112的数据传送的带宽要求。
同样,客户端缓冲区大小确定模块140可用于确定发送缓冲区208和/或接收缓冲区210的适当大小。客户端缓冲区大小确定模块140可以基于例如带宽要求和/或RTT来确定发送缓冲区208和/或接收缓冲区210的大小。客户端缓冲区大小确定模块140可以从客户端内核138提取RTT以及/或者可以随时间的经过而监视RTT。在各种实例下,可以如下确定发送缓冲区208和/或接收缓冲区210的大小:
缓冲区大小=RTT×带宽要求,
其中:RTT是连接202所用的往返时间。在确定发送缓冲区208的大小时,该等式中的带宽要求优选是针对从客户端装置130向服务器系统112的数据传送的带宽要求。在确定接收缓冲区210的大小时,该等式中的带宽要求优选是针对从服务器系统112向客户端装置130的数据传送的带宽要求。
缓冲区大小可以在首次建立连接时确定,并且如果需要,可以在连接的生命周期期间周期性地调整。例如,在首先建立服务器系统112和客户端装置130之间的连接202时,可以将发送缓冲区和接收缓冲区的大小设置为初始值或默认值。在初始通信已开始并且针对连接202测量了RTT之后,可以使用本文所述的方法来计算缓冲区大小。为了确保缓冲区大小保持为期望值,可以周期性地从服务器内核118和/或客户端内核138提取RTT,并且可以相应地(例如,每分钟、每两分钟或每10分钟)重新确定缓冲区的大小。这种周期性重新确定大小可以帮助补偿随时间的经过而对连接202发生的任何变化并且维持服务器系统112上的最佳内存使用。
一旦确定了期望的传输缓冲区大小,服务器缓冲区大小确定模块120和/或客户端缓冲区大小确定模块140可以实现任何期望的改变。例如,服务器缓冲区大小确定模块120和/或客户端缓冲区大小确定模块140可以将期望的传输缓冲区大小发送至相应的内核118和138,并且内核118和138可以实现期望的改变。可选地或附加地,内核118和138可以与连接所用的一个或多个网络驱动器(例如,TCP/IP网络驱动器)进行通信,并且指示这些网络驱动器改变缓冲区大小。
图4是用于确定多个连接所用的传输缓冲区的大小的示例方法400的流程图。传输缓冲区可以是或者包括例如发送缓冲区和/或接收缓冲区,并且传输缓冲区可以驻留在服务器和/或客户端装置上或者由服务器和/或客户端装置使用。该方法包括针对至少一个服务器和多个客户端装置之间的多个不同的网络连接中的各网络连接获得(步骤402)相应的带宽要求。针对各网络连接确定(步骤404)相应的延迟(例如,RTT或RTT/2)。基于针对各网络连接的相应带宽要求和相应延迟,来针对该网络连接确定(步骤406)至少一个传输缓冲区的期望大小。将针对各网络连接的新的传输缓冲区大小设置成(步骤408)等于针对该网络连接所用的期望的传输缓冲区大小。为了在服务器上设置新的传输缓冲区大小,例如,服务器上的内核可以分配或调整服务器上的发送缓冲区和/或接收缓冲区的大小。同样,为了在客户端上设置新的传输缓冲区大小,客户端上的内核可以分配或调整客户端上的发送缓冲区和/或接收缓冲区的大小。使用新的传输缓冲区大小来从至少一个服务器向多个客户端装置传输(步骤410)数据。
在各种示例中,本文所述的系统和方法通过识别和实现最小传输缓冲区大小来减少延迟。通常,在服务器上的应用正在向客户端装置发送数据时,该数据在发送缓冲区中驻留了与将发送缓冲区大小除以带宽相等的时间。通过使发送缓冲区大小最小化,数据在被发送至客户端装置之前在发送缓冲区中花费的时间较少,从而减少了延迟。使传输缓冲区大小最小化还降低了在服务器-客户端连接的数量为数千个或数百万个的情况下可能难以满足的存储要求。
在一些实现中,本文所述的系统和方法用于确定仅服务器系统112或客户端装置130上的传输缓冲区的大小。例如,在数据流主要是从服务器系统112向客户端装置130的情况下,可能不必或不希望调整客户端装置130上的传输缓冲区大小。在那种情况下,系统和方法可用于确定仅服务器系统112上的传输缓冲区的大小。另一方面,在数据流主要是从客户端装置130向服务器系统112的情况下,可能不必或不希望调整服务器系统112上的传输缓冲区大小,并且系统和方法可用于确定仅客户端装置130上的传输缓冲区的大小。在这两个方向上的数据流相似(例如,在10倍内)的情况下,系统和方法可用于调整客户端装置130和服务器系统112这两者上的传输缓冲区大小。
本说明书中所描述的主题和操作的实施例可以在数字电子电路中、或者在计算机软件、固件或硬件中实现,其中硬件包括本说明书中所公开的结构及其结构等同物、或者它们中的一个或多个的组合。本说明书中所描述的主题的实施例可以被实现为一个或多个计算机程序,即计算机程序指令的一个或多个模块,其编码在计算机存储介质上以供数据处理设备执行或用于控制数据处理设备的操作。可选地或附加地,程序指令可被编码在人工生成的传播信号(例如,机器生成的电、光或电磁信号)上,其中该信号被生成用于对信息进行编码,从而传输到适当的接收器设备以供数据处理设备执行。计算机存储介质可以是计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或装置、或者它们中的一个或多个的组合,或者被包括在其中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质可以是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是一个或多个单独的物理组件或介质(例如,多个CD、磁盘、或其它存储装置),或者被包括在其中。
本说明书中所描述的操作可以被实现为数据处理设备对一个或多个计算机可读存储装置上所存储的或者从其它源接收到的数据所进行的操作。
术语“数据处理设备”包含用于处理数据的所有种类的设备、装置和机器,举例而言包括可编程处理器、计算机、片上系统或者前述的多个或组合。设备可以包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除硬件以外,设备还可以包括为所考虑的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。设备和执行环境可以实现各种不同的计算模型基础架构,诸如web服务、分布式计算和网格计算基础架构。
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以以包括编译语言或解释语言、声明语言或过程语言的任何形式的编程语言来编写,并且其可以以任何形式进行部署,包括被部署为独立程序或者被部署为模块、组件、子例程、对象或者适合在计算环境中使用的其它单元。计算机程序可以但不必与文件系统中的文件相对应。程序可以被存储在用于保存其它程序或数据(例如,标记语言文档中所存储的一个或多个脚本)的文件的一部分中,被存储在专用于所考虑的程序的单个文件中,或者被存储在多个协同文件(例如,用于存储一个或多个模块、子程序或代码的一部分的文件)中。计算机程序可以被部署为在一个计算机上、或者在位于一个网站处或跨多个网站分布并且通过通信网络互连的多个计算机上执行。
本说明书中所描述的处理和逻辑流可以利用一个或多个可编程处理器来进行,其中这些一个或多个可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来进行动作。处理和逻辑流也可以利用专用逻辑电路来进行,并且设备也可以被实现为专用逻辑电路,其中该专用逻辑电路例如为FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
举例而言,适合执行计算机程序的处理器包括通用微处理器和专用微处理器两者、以及任何种类的数字计算机中的任意一个或多个处理器。一般地,处理器将会从只读存储器或随机存取存储器或这两者接收指令和数据。计算机的必要元件是用于根据指令进行动作的处理器以及用于存储指令和数据的一个或多个存储器装置。一般地,计算机还将包括用于存储数据的一个或多个大容量存储装置(例如,磁盘、磁光盘、光盘或固态驱动器等),或者可操作地连接以从一个或多个大容量存储装置接收数据或者向一个或多个大容量存储装置传输数据或者两者兼有。然而,计算机无需具有这种装置。此外,计算机可以嵌入在另一装置中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器或便携式存储装置(例如,通用串行总线(USB)闪存驱动器)等。适合存储计算机程序指令和数据的装置包括所有形式的非易失性存储器、介质和存储器装置,举例而言包括例如EPROM、EEPROM和闪存存储器装置等的半导体存储器装置、例如内部硬盘或可移动盘等的磁盘、磁光盘、以及CD-ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或者并入专用逻辑电路中。
为了提供与用户的交互,本说明书中所描述的主题的实施例可以在计算机上实现,其中该计算机具有用于向用户显示信息的例如CRT(阴极射线管)或LCD(液晶显示器)监视器等的显示装置、以及用户可以向计算机提供输入所经由的键盘和例如鼠标、触摸板或触控笔等的指示装置。其它种类的装置也可以用于提供与用户的交互;例如,被提供至用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任何形式接收,包括声音、语音或触觉输入。另外,计算机可以通过向用户所使用的装置发送文档并且从该装置接收文档来与用户进行交互;例如,通过响应于从用户的客户端装置上的web浏览器接收到的请求向该web浏览器发送web页面,来与用户进行交互。
本说明书中所描述的主题的实施例可以在计算系统中实现,其中该计算系统包括后端组件(例如数据服务器等),或者包括中间组件(例如应用服务器等),或者包括前端组件(例如,具有用户能够与本说明书中所描述的主题的实现进行交互所经由的图形用户界面或Web浏览器的客户端计算机)、或者包括一个或多个这样的前端组件、中间组件或后端组件的任意组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)而互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网(例如,因特网)、以及对等网络(例如,自组织对等网络等)。
计算系统可以包括客户端和服务器。客户端和服务器一般彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于运行在各个计算机上并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据(例如,HTML页面)发送至客户端装置(例如,为了向与客户端装置进行交互的用户显示数据并从该用户接收用户数据)。可以在服务器处从客户端装置接收该客户端装置处所生成的数据(例如,用户交互的结果)。
虽然本说明书包含许多特定实现细节,但这些细节不应被解释为对所要求保护的本发明的范围的限制,而应被解释为特定于特定发明的特定实施例的特征描述。本说明书在单独实施例的上下文中所描述的某些特征还可以在单个实施例中组合实现。相反,在单个实施例的上下文中所描述的各种特征还可以在多个实施例中单独实现或者以任何合适的子组合实现。此外,尽管以上可以将特征描述为以某些组合起作用并且甚至最初如此要求保护这些特征,但是在一些情况下可以从组合中消除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变形。
同样,虽然在附图中以特定顺序描绘了操作,但是这不应该被理解为要求以所示的特定顺序或者以序列顺序来进行这些操作、或者进行所有所示操作以实现期望结果。在某些情形中,多任务和并行处理可以是有利的。例如,并行处理可用于同时进行多个语言检测方法。此外,上述实施例中的各种系统组件的分离不应被理解为在所有实施例中都要求这种分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或者封装到多个软件产品中。
因此,已经描述了主题的特定实施例。其它实施例在所附权利要求书的范围内。在一些情况下,权利要求书中所列举的动作可以以不同的顺序进行,并且仍然实现期望结果。另外,附图中所描绘的处理并非必须需要所示的特定顺序或序列顺序来实现期望的结果。在某些实现中,多任务和并行处理可以是有利的。
Claims (20)
1.一种计算机实现的方法,所述方法包括:
获得针对至少一个服务器和至少一个客户端装置之间的多个网络连接中的各网络连接的相应的带宽要求;
确定针对各网络连接的相应的延迟;
基于针对各网络连接的相应的带宽要求和相应的延迟,来计算针对该网络连接的期望传输缓冲区大小;
将针对各网络连接的新的传输缓冲区大小设置为针对该网络连接的所述期望传输缓冲区大小;以及
使用所述新的传输缓冲区大小来从所述至少一个服务器向所述至少一个客户端装置传输数据。
2.根据权利要求1所述的方法,其中,获得针对所述多个网络连接中的各网络连接的相应的带宽要求包括:
确定针对在与所述多个网络连接其中之一相关联的客户端装置上运行的应用的目标数据传送速率。
3.根据权利要求1所述的方法,其中,获得针对所述多个网络连接中的各网络连接的相应的带宽要求包括:
测量在一段时间内通过至少一个网络连接所传输的数据的量。
4.根据权利要求1所述的方法,其中,确定针对各网络连接的相应的延迟包括:
确定针对至少一个网络连接的往返时间。
5.根据权利要求4所述的方法,其中,针对所述至少一个网络连接的相应的延迟包括所述往返时间除以2。
6.根据权利要求4所述的方法,其中,确定所述往返时间包括:
从所述至少一个服务器获得所述往返时间。
7.根据权利要求1所述的方法,其中,计算针对各网络连接的期望传输缓冲区大小包括:
确定针对至少一个网络连接的相应的带宽要求和相应的延迟的乘积。
8.根据权利要求1所述的方法,其中,至少一个网络连接包括TCP/IP连接。
9.根据权利要求1所述的方法,其中,至少一个网络连接是无连接传输模式。
10.根据权利要求1所述的方法,还包括:
确定在稍后时刻的针对至少一个网络连接的相应的延迟;以及
基于在所述稍后时刻的所述相应的延迟来计算针对所述至少一个网络连接的新的期望传输缓冲区大小。
11.一种系统,包括:
一个或多个计算机,其被编程为进行包括以下的操作:
获得针对至少一个服务器和至少一个客户端装置之间的多个网络连接中的各网络连接的相应的带宽要求;
确定针对各网络连接的相应的延迟;
基于针对各网络连接的相应的带宽要求和相应的延迟,来计算针对该网络连接的期望传输缓冲区大小;
将针对各网络连接的新的传输缓冲区大小设置为针对该网络连接的所述期望传输缓冲区大小;以及
使用所述新的传输缓冲区大小来从所述至少一个服务器向所述至少一个客户端装置传输数据。
12.根据权利要求11所述的系统,其中,获得针对所述多个网络连接中的各网络连接的相应的带宽要求包括:
确定针对在与所述多个网络连接其中之一相关联的客户端装置上运行的应用的目标数据传送速率。
13.根据权利要求11所述的系统,其中,获得针对所述多个网络连接中的各网络连接的相应的带宽要求包括:
测量在一段时间内通过至少一个网络连接所传输的数据的量。
14.根据权利要求11所述的系统,其中,确定针对各网络连接的相应的延迟包括:
确定针对至少一个网络连接的往返时间。
15.根据权利要求14所述的系统,其中,针对所述至少一个网络连接的相应的延迟包括所述往返时间除以2。
16.根据权利要求14所述的系统,其中,确定所述往返时间包括:
从所述至少一个服务器获得所述往返时间。
17.根据权利要求11所述的系统,其中,计算针对各网络连接的期望传输缓冲区大小包括:
确定针对至少一个网络连接的相应的带宽要求和相应的延迟的乘积。
18.根据权利要求11所述的系统,其中,至少一个网络连接包括TCP/IP连接。
19.根据权利要求11所述的系统,所述操作还包括:
确定在稍后时刻的针对至少一个网络连接的相应的延迟;以及
基于在所述稍后时刻的所述相应的延迟来计算针对所述至少一个网络连接的新的期望传输缓冲区大小。
20.一种制品,包括:
非暂时性计算机可读介质,其存储有指令,所述指令在由一个或多个计算机执行的情况下,使所述计算机进行包括以下的操作:
获得针对至少一个服务器和至少一个客户端装置之间的多个网络连接中的各网络连接的相应的带宽要求;
确定针对各网络连接的相应的延迟;
基于针对各网络连接的相应的带宽要求和相应的延迟,来计算针对该网络连接的期望传输缓冲区大小;
将针对各网络连接的新的传输缓冲区大小设置为针对该网络连接的所述期望传输缓冲区大小;以及
使用所述新的传输缓冲区大小来从所述至少一个服务器向所述至少一个客户端装置传输数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/245,718 US20180063013A1 (en) | 2016-08-24 | 2016-08-24 | Systems and methods for network connection buffer sizing |
US15/245,718 | 2016-08-24 | ||
PCT/US2017/036352 WO2018038790A2 (en) | 2016-08-24 | 2017-06-07 | Systems and methods for network connection buffer sizing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109691042A true CN109691042A (zh) | 2019-04-26 |
Family
ID=59071129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780052249.9A Pending CN109691042A (zh) | 2016-08-24 | 2017-06-07 | 用于网络连接缓冲区大小确定的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20180063013A1 (zh) |
EP (1) | EP3504852A2 (zh) |
JP (1) | JP2019525678A (zh) |
CN (1) | CN109691042A (zh) |
AU (1) | AU2017316186A1 (zh) |
WO (1) | WO2018038790A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111182041A (zh) * | 2019-12-19 | 2020-05-19 | 苏州浪潮智能科技有限公司 | 一种网络服务器共享缓存区的方法和设备 |
CN113796093A (zh) * | 2019-05-10 | 2021-12-14 | 六科股份有限公司 | 具有确定输入缓冲区切换延迟特征的内容修改系统 |
CN114980150A (zh) * | 2021-02-23 | 2022-08-30 | 深圳市万普拉斯科技有限公司 | 缓冲优化方法、装置、电子设备、通信系统和存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4011090A4 (en) * | 2019-08-08 | 2023-05-31 | Intel Corporation | LINK AND STREAMING MEDIA PERFORMANCE PREDICTION TECHNOLOGIES |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1756230A (zh) * | 2004-09-30 | 2006-04-05 | 华为技术有限公司 | 降低实时业务时延及时延抖动的方法 |
CN103533018A (zh) * | 2012-07-05 | 2014-01-22 | A10网络股份有限公司 | 基于动态网络条件为tcp代理会话分配缓冲区的方法 |
US20140140209A1 (en) * | 2011-03-20 | 2014-05-22 | King Abdullah University Of Science And Technology | Buffer sizing for multi-hop networks |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8626499B2 (en) * | 2009-07-21 | 2014-01-07 | Vivu, Inc. | Multimedia signal latency management by skipping |
DE102011080202A1 (de) * | 2011-08-01 | 2013-02-07 | Gebr. Schmid Gmbh | Vorrichtung und Verfahren zur Herstellung von dünnen Schichten |
US10063962B2 (en) * | 2015-06-30 | 2018-08-28 | Apple Inc. | Vented acoustic enclosures and related systems |
TWI526286B (zh) * | 2015-07-03 | 2016-03-21 | Tool post device |
-
2016
- 2016-08-24 US US15/245,718 patent/US20180063013A1/en not_active Abandoned
-
2017
- 2017-06-07 AU AU2017316186A patent/AU2017316186A1/en not_active Abandoned
- 2017-06-07 CN CN201780052249.9A patent/CN109691042A/zh active Pending
- 2017-06-07 WO PCT/US2017/036352 patent/WO2018038790A2/en unknown
- 2017-06-07 EP EP17731040.6A patent/EP3504852A2/en not_active Withdrawn
- 2017-06-07 JP JP2019510844A patent/JP2019525678A/ja active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1756230A (zh) * | 2004-09-30 | 2006-04-05 | 华为技术有限公司 | 降低实时业务时延及时延抖动的方法 |
US20140140209A1 (en) * | 2011-03-20 | 2014-05-22 | King Abdullah University Of Science And Technology | Buffer sizing for multi-hop networks |
CN103533018A (zh) * | 2012-07-05 | 2014-01-22 | A10网络股份有限公司 | 基于动态网络条件为tcp代理会话分配缓冲区的方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113796093A (zh) * | 2019-05-10 | 2021-12-14 | 六科股份有限公司 | 具有确定输入缓冲区切换延迟特征的内容修改系统 |
CN113796093B (zh) * | 2019-05-10 | 2023-09-29 | 六科股份有限公司 | 具有确定输入缓冲区切换延迟特征的内容修改系统 |
CN111182041A (zh) * | 2019-12-19 | 2020-05-19 | 苏州浪潮智能科技有限公司 | 一种网络服务器共享缓存区的方法和设备 |
CN114980150A (zh) * | 2021-02-23 | 2022-08-30 | 深圳市万普拉斯科技有限公司 | 缓冲优化方法、装置、电子设备、通信系统和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20180063013A1 (en) | 2018-03-01 |
WO2018038790A3 (en) | 2018-05-17 |
EP3504852A2 (en) | 2019-07-03 |
AU2017316186A1 (en) | 2019-02-28 |
WO2018038790A2 (en) | 2018-03-01 |
JP2019525678A (ja) | 2019-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240114064A1 (en) | Realtime kernel | |
Fox et al. | Architecture and measured characteristics of a cloud based internet of things | |
US8626836B2 (en) | Providing context for an automated agent to service multiple avatars within a virtual universe | |
CN109691042A (zh) | 用于网络连接缓冲区大小确定的系统和方法 | |
Kamburugamuve et al. | A framework for real time processing of sensor data in the cloud | |
US9052941B1 (en) | Automated testing of online functionality providers | |
US8819549B2 (en) | Method and system for mutidimensional virtual online support center | |
US9727579B2 (en) | Systems and methods for storing digital content | |
CN110383794A (zh) | 使用多个内容交付网络更新应用程序客户端的系统和方法 | |
CN106462577A (zh) | 用于移动设备和移动云服务的同步的基础设施 | |
US10110508B2 (en) | Queued workload service in a multi tenant environment | |
US8821296B1 (en) | Network gaming system and casino management system link | |
US10668374B2 (en) | System and method for binding global objects in a client-server architecture | |
US10868881B1 (en) | Loading web resources using remote resource pushing | |
CN113926185A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
Konstantoudakis et al. | Serverless streaming for emerging media: towards 5g network-driven cost optimization: A real-time adaptive streaming faas service for small-session-oriented immersive media | |
CN108234242A (zh) | 一种基于流的压力测试方法和装置 | |
CN116074323A (zh) | 边缘计算节点的选择方法、装置、计算机设备及介质 | |
JP5805321B2 (ja) | クライアントの物理的な位置の決定 | |
CN116795539A (zh) | 一种基于区块链的移动边缘计算中的资源分配方法 | |
US20190043114A1 (en) | Presentation of digital media assets based on assessed value | |
CN109074360B (zh) | 使用多个线程减少下载电子资源的延迟 | |
Tang et al. | Distributed haptic interactions with physically based 3d deformable models over lossy networks | |
CN112449202B (zh) | 视频直播方法 | |
Smith et al. | Overlay network resource allocation using a decentralized market-based approach |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190426 |