CN114145008A - 传输控制协议的行程时间估计 - Google Patents
传输控制协议的行程时间估计 Download PDFInfo
- Publication number
- CN114145008A CN114145008A CN201980098629.5A CN201980098629A CN114145008A CN 114145008 A CN114145008 A CN 114145008A CN 201980098629 A CN201980098629 A CN 201980098629A CN 114145008 A CN114145008 A CN 114145008A
- Authority
- CN
- China
- Prior art keywords
- packet
- packets
- middlebox
- sampled
- endpoint
- 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
- 230000005540 biological transmission Effects 0.000 title claims abstract description 24
- 238000000034 method Methods 0.000 claims abstract description 70
- 238000005070 sampling Methods 0.000 claims abstract description 50
- 238000012545 processing Methods 0.000 claims description 67
- 230000015654 memory Effects 0.000 claims description 36
- 238000004891 communication Methods 0.000 claims description 32
- 238000012546 transfer Methods 0.000 claims description 8
- 230000009897 systematic effect Effects 0.000 claims description 6
- 230000006870 function Effects 0.000 description 38
- 238000010586 diagram Methods 0.000 description 9
- 239000004576 sand Substances 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 238000012790 confirmation Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 235000008694 Humulus lupulus Nutrition 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000002265 prevention Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000000691 measurement method Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000029305 taxis Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/02—Capturing of monitoring data
- H04L43/022—Capturing of monitoring data by sampling
-
- 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
- H04L43/0864—Round trip 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/10—Active monitoring, e.g. heartbeat, ping or trace-route
- H04L43/106—Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps
-
- 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/20—Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
-
- 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/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- 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]
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Environmental & Geological Engineering (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种方法(300),该方法包括在中间盒(160)处从通过中间盒的源端点(190)和目的地端点之间的传输控制协议(TCP)连接(180)稀疏地采样多个包(170)。对于采样的多个包中的每个包,该方法包括生成当该包被采样时的时间戳(212),以及记录相应的包的序列号(172)和确认号(174)。当确认号对于相应的包存在时,记录确认号。该方法还包括基于来自采样的多个包中的一个或多个包的相应时间戳、相应序列号或相应确认号中的至少两个,生成该段时间内通过中间盒的源端点和目的地端点之间的TCP连接的估计的性能特性(202)。
Description
技术领域
本公开涉及传输控制协议的行程时间估计(trip time estimation)。
背景技术
通常,在节点上运行的进程可以帮助理解节点(或端点)之间的传输控制协议(transport control protocol,TCP)连接的性能。例如,通过测量由节点发送包(packet)时的开始时间和由节点接收确认时的确认时间,可以部署系统来捕获包的往返时间(roundtrip time,RTT)。然而,随着中间盒(middlebox)的使用增加了更常规端点之间的中介节点(intermediary node)的实现,在端点处测量TCP性能必须考虑新的性能测量技术以促进TCP连接优化。
发明内容
本公开的一个方面提供了一种用于估计传输控制协议的性能特性的方法。所述方法包括,在中间盒的数据处理硬件处,从一段时间内通过所述中间盒的一个或多个源端点和一个或多个目的地端点之间的一个或多个传输控制协议(TCP)连接稀疏地采样多个包。对于采样的所述多个包中的每个包,所述方法包括,由所述数据处理硬件生成当所述包被采样时的时间戳,以及由所述数据处理硬件记录相应的所述包的序列号和确认号。所述方法进一步包括,由所述数据处理硬件基于来自采样的所述多个包中的一个或多个包的相应的时间戳、相应的序列号或相应的确认号中的至少两个,生成所述一段时间内通过所述中间盒的所述一个或多个源端点和所述一个或多个目的地端点之间的所述一个或多个TCP连接的估计的性能特性。
在一些实施方式中,所述方法包括,由所述数据处理硬件识别为在所述中间盒和所述目的地端点之间被传送的采样的所述多个包中的第一包记录的第一序列号。这里,所述方法还包括,由所述数据处理硬件确定为所述第一包记录的所述第一序列号是否与为在所述目的地端点和所述中间盒之间被传送的采样的所述多个包记录的所述确认号中的任何一个确认号匹配。在该实施方式中,当所述第一序列号与为采样的所述多个包中的第二包记录的所述确认号匹配时,所述方法包括,由所述数据处理硬件基于所述第一包和所述第二包的相应的所述时间戳之间的差来确定所述中间盒和所述目的地端点之间的第一行程时间。在该实施方式中,当所述第一序列号与为采样的所述多个包记录的记录的所述确认号中的任何一个确认号不匹配时,所述方法包括,通过对为采样的所述多个包记录的所述确认号插值,由所述数据处理硬件估计来自所述TCP连接的第一未采样包的相应的时间戳。这里,所述第一未采样包与匹配所述第一序列号的对应确认号相关联。该实施方式进一步包括,由所述数据处理硬件基于为所述第一包生成的第一时间戳和为所述第一未采样包估计的相应的所述时间戳之间的差来确定所述中间盒和所述目的地端点之间的所述第一行程时间。
在一些示例中,所述方法包括,由所述数据处理硬件识别为采样的所述多个包中的第三包记录的第二序列号,所述第三包在所述中间盒和所述源端点之间被传送。这里,所述方法还包括,由所述数据处理硬件确定为所述第三包记录的所述第二序列号是否与为在所述源端点和所述中间盒之间被传送的采样的所述多个包记录的任何确认号匹配。在该示例中,当所述第二序列号与为采样的所述多个包中的第四包记录的所述确认号匹配时,所述方法包括,由所述数据处理硬件基于为所述第三包和所述第四包生成的相应的所述时间戳之间的差来确定所述中间盒和所述源端点之间的第二行程时间。在该示例中,当所述第二序列号与为采样的所述多个包记录的所述确认号中的任何一个确认号不匹配时,所述方法包括,通过对为采样的所述多个包记录的所述确认号插值,由所述数据处理硬件估计来自所述TCP连接的第二未采样包的相应的时间戳,所述第二未采样包与匹配所述第二序列号的对应确认号相关联,以及基于为所述第三包生成的第三时间戳和为所述第二未采样包估计的相应的所述时间戳之间的差来确定所述中间盒和所述目的地端点之间的所述第二行程时间。生成所述TCP连接的所述估计的性能特性还可以包括,通过对所述中间盒和所述目的地端点之间的所述第一行程时间以及所述中间盒和所述源端点之间的所述第二行程时间求和,计算通过所述中间盒的所述源端点和所述目的地端点之间的往返时间。
在其它配置中,所述方法包括,基于采样的所述多个包的记录的所述确认号的插值来估计未记录的确认号的相应的时间。所述方法可以包括,基于采样的所述多个包的记录的所述序列号的插值来估计未记录的序列号的相应的时间。
在一些实施方式中,生成所述TCP连接的所述估计的性能特征包括,由所述数据处理硬件基于为通过所述中间盒从所述目的地端点被传送到所述源端点的采样的所述多个包记录的所述确认号,确定所述一段时间内的确认号的斜率,以及基于确认号的所述斜率来生成吞吐量,其中,所述吞吐量与通过所述中间盒从所述源端点到所述目的地端点的包传送速率对应。在其它实施方式中,生成所述TCP连接的所述估计的性能特征包括,基于为通过所述中间盒从所述源端点被传送到所述目的地端点的采样的所述多个包记录的所述确认号,确定确认号随时间的斜率,以及基于所述确认号的所述斜率来生成吞吐量,其中,所述吞吐量与通过所述中间盒从所述目的地端点到所述源端点的包传送速率对应。
在一些示例中,所述方法包括,在给定时刻,在所述数据处理硬件处,从所述源端点接收通过所述TCP连接通信的第一包,所述第一包包括第一序列号和第一确认号,以及从所述目的地端点接收通过所述TCP连接通信的第二包,所述第二包包括第二序列号和第二确认号。这里,所述方法还包括,通过确定与所述第一包相关联的所述第一序列号和与所述第二包相关联的所述第二确认号之间的差,由所述数据处理硬件估计所述源端点的相应的窗口大小。在这些示例中,所述方法可以进一步包括,通过确定与所述第二包相关联的所述第二序列号和与所述第一包相关联的所述第一确认号之间的差,由所述数据处理硬件估计所述目的地端点的相应的窗口大小。
在一些实施方式中,稀疏地采样所述多个包包括,从所述源端点和所述目的地端点之间的所述TCP连接采样小于所有的包。稀疏地采样所述多个包可以包括,以无状态和系统的方式从所述TCP连接均匀地采样包。所述源端点可以是与远程分布式网络进行通信的用户设备(UE),并且所述目的地端点对应于与所述远程分布式网络进行通信的服务器。
本公开的另一方面提供了一种用于估计传输控制协议的性能特性的系统。所述系统包括数据处理硬件以及与所述数据处理硬件进行通信的存储器硬件。所述存储器硬件存储指令,当在所述数据处理硬件上执行所述指令时,所述指令使得所述数据处理硬件进行操作。所述操作包括,在中间盒处,从一段时间内通过所述中间盒的一个或多个源端点和一个或多个目的地端点之间的一个或多个传输控制协议(TCP)连接稀疏地采样多个包。对于采样的所述多个包中的每个包,所述操作包括,生成当所述包被采样时的时间戳,以及记录相应的所述包的序列号和确认号。所述操作进一步包括,基于来自采样的所述多个包中的一个或多个包的相应的时间戳、相应的序列号或相应的确认号中的至少两个,生成所述一段时间内通过所述中间盒的所述一个或多个源端点和所述一个或多个目的地端点之间的所述一个或多个TCP连接的估计的性能特性。
在一些实施方式中,所述操作包括,识别为在所述中间盒和所述目的地端点之间被传送的采样的所述多个包中的第一包记录的第一序列号。这里,所述操作还包括,确定为所述第一包记录的所述第一序列号是否与为在所述目的地端点和所述中间盒之间被传送的采样的所述多个包记录的所述确认号中的任何一个确认号匹配。在该实施方式中,当所述第一序列号与为采样的所述多个包中的第二包记录的所述确认号匹配时,所述操作包括,基于所述第一包和所述第二包的相应的所述时间戳之间的差来确定所述中间盒和所述目的地端点之间的第一行程时间。在该实施方式中,当所述第一序列号与为采样的所述多个包记录的记录的所述确认号中的任何一个确认号不匹配时,所述操作包括,通过对为采样的所述多个包记录的所述确认号插值,估计来自所述TCP连接的第一未采样包的相应的时间戳。这里,所述第一未采样包与匹配所述第一序列号的对应确认号相关联。该实施方式进一步包括,基于为所述第一包生成的第一时间戳和为所述第一未采样包估计的相应的所述时间戳之间的差来确定所述中间盒和所述目的地端点之间的所述第一行程时间。
在一些示例中,所述操作包括,识别为采样的所述多个包中的第三包记录的第二序列号,所述第三包在所述中间盒和所述源端点之间被传送。这里,所述操作还包括,确定为所述第三包记录的所述第二序列号是否与为在所述源端点和所述中间盒之间被传送的采样的所述多个包记录的任何确认号匹配。在该示例中,当所述第二序列号与为采样的所述多个包中的第四包记录的所述确认号匹配时,所述方法包括,由所述数据处理硬件基于为所述第三包和所述第四包生成的相应的所述时间戳之间的差来确定所述中间盒和所述源端点之间的第二行程时间。在该示例中,当所述第二序列号与为采样的所述多个包记录的所述确认号中的任何一个确认号不匹配时,所述操作包括,通过对为采样的所述多个包记录的所述确认号插值,估计来自所述TCP连接的第二未采样包的相应的时间戳,所述第二未采样包与匹配所述第二序列号的对应确认号相关联,以及基于为所述第三包生成的第三时间戳和为所述第二未采样包估计的相应的所述时间戳之间的差来确定所述中间盒和所述目的地端点之间的所述第二行程时间。生成所述TCP连接的所述估计的性能特性还可以包括,通过对所述中间盒和所述目的地端点之间的所述第一行程时间以及所述中间盒和所述源端点之间的所述第二行程时间求和,计算通过所述中间盒的所述源端点和所述目的地端点之间的往返时间。
在其它配置中,所述操作包括,基于采样的所述多个包的记录的所述确认号的插值来估计未记录的确认号的相应的时间。所述操作可以包括,基于采样的所述多个包的记录的所述序列号的插值来估计未记录的序列号的相应的时间。
在一些实施方式中,生成所述TCP连接的所述估计的性能特征包括,基于为通过所述中间盒从所述目的地端点被传送到所述源端点的采样的所述多个包记录的所述确认号,确定所述一段时间内的确认号的斜率,以及基于确认号的所述斜率来生成吞吐量,其中,所述吞吐量与通过所述中间盒从所述源端点到所述目的地端点的包传送速率对应。在其它实施方式中,生成所述TCP连接的所述估计的性能特征包括,基于为通过所述中间盒从所述源端点被传送到所述目的地端点的采样的所述多个包记录的所述确认号,确定确认号随时间的斜率,以及基于所述确认号的所述斜率来生成吞吐量,其中,所述吞吐量与通过所述中间盒从所述目的地端点到所述源端点的包传送速率对应。
在一些示例中,所述操作包括,在给定时刻,从所述源端点接收通过所述TCP连接通信的第一包,所述第一包包括第一序列号和第一确认号,以及从所述目的地端点接收通过所述TCP连接通信的第二包,所述第二包包括第二序列号和第二确认号。这里,所述操作还包括,通过确定与所述第一包相关联的所述第一序列号和与所述第二包相关联的所述第二确认号之间的差,估计所述源端点的相应的窗口大小。在这些示例中,所述操作可以进一步包括,通过确定与所述第二包相关联的所述第二序列号和与所述第一包相关联的所述第一确认号之间的差,估计所述目的地端点的相应的窗口大小。
在一些实施方式中,稀疏地采样所述多个包包括,从所述源端点和所述目的地端点之间的所述TCP连接采样小于所有的包。另外地或替代地,稀疏地采样所述多个包可以包括,以无状态和系统的方式从所述TCP连接均匀地采样包。所述源端点可以是与远程分布式网络进行通信的用户设备(UE),并且所述目的地端点对应于与所述远程分布式网络进行通信的服务器。
本公开的另一方面提供了一种传输控制协议的行程时间估计的方法。所述方法包括,在中间盒的数据处理硬件处,从一段时间内通过所述中间盒通信的端点之间的一个或多个传输控制协议(TCP)连接稀疏地采样多个包。对于采样的所述多个包中的每个包,所述方法包括,由所述数据处理硬件生成当所述包被采样时的时间戳。所述方法包括,由所述数据处理硬件确定在所述中间盒和相应的端点之间被传送的采样的所述多个包中的第一采样包的第一序列号与采样的所述多个包的任何确认号不匹配。所述方法还包括,由所述数据处理硬件基于采样的所述多个包的多个确认号的插值来估计与所述第一序列号匹配的确认号的相应的时间。所述方法进一步包括,通过与所述第一包相关联的第一时间戳和估计的相应的所述时间之间的差,由所述数据处理硬件确定所述中间盒和相应的所述端点之间的行程时间。
该方面可以包括以下可选特征中的一个或多个。在一些示例中,稀疏地采样所述多个包包括,从通过所述中间盒的所述端点之间的所述TCP连接采样小于所有的包。可选地,稀疏地采样所述多个包可以包括,以无状态和系统的方式从所述TCP连接均匀地采样包。所述端点可以包括与远程分布式网络进行通信作为源端点的用户设备(UE)和与所述远程分布式网络进行通信作为目的地端点的服务器。
在下面的附图和说明书中阐述了本公开的一个或多个实施方式的细节。根据说明书和附图,以及根据权利要求书,其它方面、特征和优势将是显而易见的。
附图说明
图1A-1C是实施传输控制协议(TCP)连接的示例通信网络的示意图。
图1D是通信网络的端点之间的示例TCP连接的示意图。
图2A-2E是通信网络的中间盒的性能评估器的示例的示意图。
图3是估计TCP性能的方法的操作的示例布置的流程图。
图4是估计TCP性能的方法的操作的示例布置的流程图。
图5是用于实施迁移虚拟网络功能的系统和方法的示例计算设备的示意图。
各个附图中相同的附图标记指示相同的元素。
具体实施方式
传输控制协议/因特网协议(TCP/IP)套件(suit)主要用于网络通信。TCP/IP协议套件最初是基于端到端通信设计的。例如,源端点(诸如用户)与目的地端点(诸如服务器)进行通信。该端到端设计通常假设被配置为在两个单独的网络之间进行通信的网关节点(即,路由器)将TCP/IP包流的数据包转发到目的地端点(例如,直接或通过中介目的地之间的跳)。基于该假设,路由器将不需要在包传输期间修改包(例如,通过修改报头或有效载荷)。然而,如今,随着网络通信的发展,网络内的节点和/或网络之间的连接已经变得更加复杂。换句话说,网络将硬件和/或软件部署为网络环境内的节点,以进行除了路由包之外的网络功能(即,网络服务)。例如,这些网络功能包括用于网络保护的防火墙、网络地址转换(network address translation,NAT)、负载平衡、虚拟专用网(virtual privatenetwork,VPN)隧道等。为了进行这些网络功能,网络管理员和/或网络提供商已经实现了中间盒。
不幸的是,中间盒可能破坏使用TCP传输(即,由TCP连接传输)的包的通常端到端设计。例如,一些中间盒被配置为检查和/或修改包以进行网络功能。此外,中间盒通常从通过中间盒复用的许多TCP连接接收包,并且通常在因特网协议(IP)层操作。通过在IP层上操作,中间盒不采用TCP流标记,诸如例如流标记或确认的开始或结束。换句话说,中间盒活动无法提供与TCP流(例如,端到端TCP连接)相同或相似的包流性能的指示符。在没有包流性能的指示符的情况下,网络管理员或网络服务难以评估和/或改进网络通信。
当帮助配置、改进和/或优化网络环境中的通信时,确定TCP连接的连接特性(诸如往返时间、吞吐量、窗口大小等)是重要和有用的。换句话说,TCP连接的性能可能影响实体可以如何有效地彼此进行通信以及是否可以跨TCP连接实际提供某些服务(例如,以目标质量水平流式传输音频/视频)。在一些情况下,在TCP连接的一端或两端处(即,在诸如源端点和目的地端点的一个流端点或两个流端点处)确定或估计连接特性。然而,这通常要求在那些流端点处的定制功能,其中,定制功能可能不总是可能的,诸如当端点具有最小的处理功能时。例如,某些物联网(internet-of-things,IOT)设备(诸如家庭/家用电器)具有低功率或低处理能力。在一些示例中,确定和/或估计连接(例如,经由中间盒进行通信的两个端点的连接)的性能进一步加重了连接本身的负担。换句话说,重要的是系统在没有不利地影响连接的情况下确定连接特性。否则,不仅确定/估计的连接特性不能指示或准确测量应该实现的实际连接特性(从而导致不知情的系统配置),而且在确定连接特性的同时加重连接负担的系统可能减少吞吐量和/或对通信涉及的所有各方造成损害。
为了解决这些问题,本公开的实施方式指向一种系统,该系统在与TCP连接相关联的中间盒处生成TCP连接特性或TCP连接特性的估计,以对连接本身以及连接中涉及的实体的影响最小。此外,因为中间盒仅采样TCP包/段(例如,经由TCP连接通信的TCP包/段的一小部分)以便生成估计,所以中间盒的处理开销相对较小,同时对TCP连接的性能具有最小的(或不易察觉的)影响。因此,由中间盒管理的其它网络连接的性能保持不受影响。
参考图1A和1B,在一些实施方式中,联网环境100是具有松散耦接的计算资源110,110a-n的分布式系统(例如,诸如云环境的远程网络)。计算资源110也可以被称为服务器110。这些计算资源110可以包括一个或多个客户端120,120a-n可访问的数据处理硬件112(例如,如图1B和1C中所示的一个或多个中央处理单元(CPU))和/或存储器硬件114(例如,如图1B和1C中所示的闪存、随机存取存储器(RAM)、相变存储器(PCM)和/或盘)。例如,计算资源110被示为多个服务器。客户端120可以通过网络130与物理网络层102上托管的计算资源110进行通信。例如,客户端120和服务器110表示形成物理网络的端点的机器(例如,主机)的集合。
可以存在许多不同类型的网络130,范围从专用网络和企业网络到公共网络。网络的一些更具体的示例包括个人区域网(PAN)、局域网(LAN)、无线局域网(WLAN)、广域网(WAN)、存储/系统区域网(SAN)、无源光网络(PON)、企业专用网(EPN)、虚拟专用网(VPN)、无线电接入网(RAN)、包核心网等。在一些配置中,客户端120和端主机(即,计算资源110的主机)可以经由诸如网络接口控制器(network interface controller,NIC)(也被熟知为网络接口卡、网络适配器或LAN适配器)或同步传输模块(synchronous transport module,STM)(在光网络的情况下)的硬件来访问(即,连接到)网络130。例如,图1A描述了具有至少一个NIC 122,122a-n的每个客户端120以及具有至少一个NIC 116,116a-n的每个服务器110。
参考图1A,在一些示例中,网络130包括物理网络层102和虚拟网络层104,该虚拟网络层104可以被覆盖在物理网络层102上,以形成具有其自己的因特网协议(IP)地址空间的虚拟网络(也被熟知为覆盖网络)。虚拟网络层104使得网络130能够以可以将网络功能与硬件电器(例如,专有硬件电器)解耦的方式被管理(例如,由网络管理员)、设计和/或部署。换句话说,虚拟网络层104允许虚拟网络功能(也被称为网络功能虚拟化),使得网络服务可以由软件操作,以允许在具有专用硬件的传统网络上的适应性和可扩展性。例如,虚拟网络的软件定义联网(software-defined networking,SDN)从网络硬件中移除控制平面,并且代替地以软件实施控制平面。在一些实施方式中,网络130的虚拟网络层104经由软件虚拟地进行一些网络功能,同时以混合虚拟化方法用专用硬件来进行其它网络功能。虚拟和/或混合方法可以允许网络提供商或网络管理员在网络空间、功率、大小、可伸缩性、部署时间和/或修复和维护方面的灵活性和/或优化。例如,虚拟网络层104被动态地配置为允许在不破坏网络服务的情况下对物理网络层102进行底层改变。
虚拟网络层104可以被配置为进行各种网络功能和/或镜像物理网络的传统网络功能。这些网络功能的一些示例包括路由、网络地址转换(NAT)、负载平衡(loadbalancing,LB)、安全性(例如,防火墙和入侵检测/预防系统)、协议转换、广域网优化、代理、缓存等。换句话说,虚拟网络功能可以适用于网络130内的任何数据平面处理或控制平面功能。此外,图1A以虚线示出了物理网络层102和虚拟网络层104,以指示这些层102,104的一些或全部功能可以是物理的和/或虚拟的。例如,在虚拟网络层104内示出的组件,诸如客户端虚拟机140、中间盒160和/或后端虚拟机150可以被实施为专用物理硬件(即,物理层),而不是在虚拟网络层104上操作。取决于网络130和/或由网络130提供的服务,对于不同类型的物理层和虚拟层配置可以存在各种优点。
继续参考图1A和1B,网络环境100包括各种端点。这些端点可以指的是物理端点(例如,存在于物理网络层102上的物理端点)或虚拟端点(例如,存在于虚拟网络层104上的虚拟端点)。例如,如由图1A-1C所示,客户端110和/或服务器120可以是通过网络地址的方式在彼此之间进行通信的物理端点。换句话说,客户端110可以是源端点,而服务器120是目的地端点(反之亦然)。包形式的数据170(也被称为数据包170或包170)可以基于分配的网络地址在端点之间被通信。
在一些示例中,网络环境100包括虚拟网络端点。这里,图1A将虚拟网络端点描述为虚拟机(virtual machine,VM),诸如客户端虚拟机(客户端VM)140,140a-n和后端虚拟机(后端VM)150,150a-n。虚拟机(VM)通常指的是一个或多个主机计算机系统的仿真或映像,该仿真或映像使得用户能够体验主机计算机系统的功能而没有干扰对应主机计算机系统的底层操作系统的能力。VM可以被创建为在一个或多个主机环境内进行专用的任务。在一些示例中,虚拟网络层104允许多个VM同时存在于主机计算机系统内。为了允许多个VM同时操作,VM通常从主机计算机系统的关键操作系统资源被沙盒化(sandboxed)。VM对于虚拟网络层104是有利的,因为它们可以被设计为经由后端VM150映射到(例如,访问)物理网络层102的一个或多个计算资源110。例如,一个或多个客户端VM 140映射到一个或多个后端VM150,其中,每个后端VM 150是与物理网络层102(例如,分布式系统)的计算资源110相关联的VM。通过映射到特定计算资源110,客户端VM 140结合后端VM 150可以被设计用于特定网络服务(例如,网络应用)。在一些配置中,后端VM 150操作为基于主机的VM,其中,数据可以被包含在物理网络层102的服务器上,并且由各种远程客户端120可访问或被分配到各种远程客户端120。例如,具有VM的虚拟网络层104允许集中管理的网络结构。虽然网络虚拟化通常是相对于VM来描述的,但是网络虚拟化(例如,具有虚拟网络层104)可以被概括为连接其它类型的网络端点,包括虚拟专用网(VPN)、裸金属服务器、代理等。例如,联网环境100支持VPN网关作为转发来自客户处所的请求的客户端。因此,在一些示例中,VM更通常地是网络端点,以适应其它类型的网络连接。
在一些实施方式中,为了进行网络功能,网络环境100包括至少一个中间盒160。如图1A中所示,中间盒160可以包括对应的数据处理硬件502和存储器硬件504,该存储器硬件504存储在数据处理硬件502上可执行的用于进行操作(例如,执行图3和4的方法300,400)的指令。中间盒160可以是物理硬件(例如,物理网络层102上的专用电器)或被配置为进行网络功能的软件(例如,如图1A中所示)。中间盒160通常指的是在源端点/主机(例如,经由客户端VM 140的客户端)和目的地端点/主机(例如,经由后端VM 150的物理网络层102的服务器)之间的数据报路径上进行除了因特网协议(IP)路由器的正常、标准功能之外的功能的任何中介设备。换句话说,中间盒160通常负责除了包路由之外的网络功能(例如,网络地址转换(NAT)、网络地址端口转换(network address port translation,NAPT)、负载平衡(LB)、防火墙、入侵检测/预防系统、协议转换、代理等)。虽然中间盒160通常负责除了路由之外的网络功能,但是中间盒160可以是也处理路由的设备的一部分,使得联网环境100包括支持路由和中间盒功能的单个设备。
在联网环境100内,中间盒160从一个或多个客户端120接收网络流以进行网络功能。可以基于来自客户端120的连接请求来建立与中间盒160的网络连接。换句话说,可以在客户端120和后端(即,服务器110)之间协商连接,使得中间盒160位于中间,处理并且潜在地修改属于连接的包。一旦已经与中间盒160建立了连接(例如,在客户端VM 140和后端VM150之间形成虚拟连接),中间盒160基于中间盒160的配置的网络功能来接收网络流量(例如,数据的包170)。
在一些示例中,中间盒160对客户端120和后端(例如,后端VM)之间的包进行NAT或NAPT。在NAPT的情况下,中间盒160跟踪每个连接和被分配到每个连接的端口映射。在其它示例中,中间盒160是4层负载平衡器(layer-4load balancer)中间盒,该中间盒在客户端120和后端之间转发包,同时还潜在地跟踪连接以确保属于连接的未来包继续连接到相同后端。替代地,中间盒160可以是7层(即,应用层)负载平衡器(layer-7 load balancer),其中,客户端120与中间盒160建立传输控制协议(TCP),并且中间盒160与后端(即,代表客户端120)建立单独的连接。对于7层负载平衡器,传输协议状态(例如,TCP序列号和窗口大小)将从中间盒160传送到相应的端主机。
如先前所述,在一些实施方式中,不要求诸如虚拟网络层104的覆盖网络来进行中间盒功能。例如,在诸如物理以太网的网络中,在端主机上运行的软件可以通过将目的地中间访问控制(medial access control,MAC)地址设置为与中间盒160对应的MAC地址,将连接引导到中间盒160。这里,为了卸载连接,主机会将MAC地址设置为目的地的地址(或到达目的地的适当网关的地址)。换句话说,中间盒160可以与物理机而不是VM进行通信。例如,在负载平衡中,客户端120和服务器110不必是虚拟网络层104上的VM,而是物理机之间的连接。
中间盒160可以在中间盒160通常进行有状态网络功能的方面与路由器不同。更具体地,有状态网络功能指的是跟踪与网络功能相关联的网络连接的操作状态和/或特性的网络功能。例如,中间盒160跟踪连接,使得中间盒160知道连接、检查包情境(例如,周期性地检查有效载荷)和/或将新连接与现有连接相关联。通过进行有状态功能,中间盒160包括更大程度的数据粒度,以识别和/或调用与客户端120或VM的先前会话相关联的连接事件或连接数据。这些有状态功能可以提供层102,104的安全性和性能益处,这可以帮助稳定网络服务。
参考图1B,在一些实施方式中,网络环境100包括彼此进行通信的多于一个类型的网络130,130a-c。这里,客户端120被描述为与RAN 130,130a相关联的用户设备(userequipment,UE)。RAN 130a包括与基站(例如,演进型节点B(evolved Node B,eNB))进行通信的三个UE 120a-c。在该示例中,eNB与包括中间盒160的演进型包核心(evolved packetcore,EPC)网络130,130b接合。EPC 130b又可以与外部网络(诸如远程网络130,130c(例如,分布式系统或云环境))进行通信。远程网络130c包括服务器110a-n,该服务器110a-n被配置为存储数据的包170并且跨网络130a-c将数据的包170通信到客户端120a-c或从客户端120a-c通信数据的包170。
图1C示出了简化的网络环境100,以示出两个端点190之间的网络连接180。网络连接180穿过中间盒160,使得包170从源端点190s流到中间盒160(例如,被示为包170,170sx1-6),并且从中间盒160流到目的地端点190d(例如,被示为包170,170xd1-6)。用网络连接180,包170也可以以相反的方向从目的地端点190d(例如,被示为服务器110)流到源端点190s(例如,被示为客户端120)。例如,图1C描绘了从目的地端点190d流到中间盒160的包(例如,被示为包170,170dx1-6)以及从中间盒160流到源端点190s的包(例如,被示为包170,170xs1-6)。这里,包170的下标识别包170的行进方向。“D”指的是目的地端点190d。“X”指的是中间盒160。“S”指的是源端点190s。换句话说,“DX”对应于从目的地端点190d行进到中间盒160的包170,并且“XS”对应于从中间盒160行进到源端点190s的包170。
为了在源端点190s到目的地端点190d之间传输包170,连接180使用传输控制协议(TCP)。例如,连接180被称为TCP连接180。TCP是用于包交换通信网络130的主机到主机协议。TCP通常在用户或应用进程与因特网协议(IP)之间接合。TCP被配置为通过将一些数量的字节打包到段(也被熟知为包170)中以供传输,在端点190(例如,源和目的地)之间传送字节的连续流(即,八位字节)。当存在TCP连接180时,TCP被配置为在每个方向(例如,(1)从源端点190s到目的地端点190d,以及(2)从目的地端点190d到源端点190s)上传输两个字节流(或包流)。
TCP还包括用于给定包170的特定结构(例如,如图1C中所示)。包170的结构可以确保数据(即,包170的有效载荷)的可靠性,并且还通信关于TCP连接180的特性。为了确保被损坏、丢失、复制或无序递送的数据的可靠性,TCP将序列号172分配到传输的每个字节,并且要求来自目的地端口(例如,端点190中的一个,取决于正在传输包170的方向)的肯定确认(acknowledgement,ACK)。在一些示例中,ACK是其自己的包170,而在其它示例中,确认以确认号174的形式发生。在其它示例中,当确认端点(例如,由目的地端口指定)向原始源端点190s(例如,由源端口指定)传输数据时,ACK包括其自己的ACK包170以及确认号174。当在超时间隔内没有接收到ACK时,TCP将重新传输数据(例如,包170)。目的地(例如,端点190中的一个,取决于正在传输包170的方向)可以使用序列号172来重新排序包170,或者当必要时消除重复。除了可靠性之外,TCP允许目的地规定可以接收的流量。在一些示例中,目的地与每个ACK通信窗口178,以指示在接收方愿意接收的最后成功接收的包170之后的可接受序列号172的范围。窗口178指的是在任何一个时间传送到目的地的可接受数据带宽(即,字节)。
为了在源端点190s和目的地端点190d之间建立TCP连接180,端点190最初经历三次握手。在三次握手的第一步骤中,源端点190s(例如,被示为客户端120)想要建立与目的地端点190d(例如,被示为服务器110)的连接180。这里,源端点190s发送具有同步序列号(synchronized sequence number,SYN)的包170,以通知目的地端点190d源端点190s打算开始与目的地端点190d的通信以及源端点190s打算从哪个序列号开始。在三次握手的步骤二,目的地端点190d(例如,服务器110)用SYN和ACK来响应。目的地端点190d使用ACK来确认从源端点190s发送的包170,并且使用SYN来通知源端点190d它可能以什么序列号172开始包传输。在步骤三,源端点190s确认目的地端点190d的响应。此时,在源端点190s和目的地端点190d之间建立TCP连接180。
虽然三次握手在端点190之间建立TCP连接180,但是作为这些端点190之间的中介设备的中间盒160的功能破坏了监视这些连接的端点190之间的TCP性能的传统手段。如先前所述,一些中间盒160检查和/或修改包170以进行网络功能。当包170被修改时,监视TCP性能的传统技术可能不能够依赖于标准包结构的字段/属性。另外地或替代地,中间盒160通常从通过中间盒复用的许多TCP连接180接收包,并且通常在因特网协议(IP)层操作。通过在IP层上操作,中间盒不采用TCP流标记,诸如例如流标记或确认的开始或结束。换句话说,中间盒活动无法提供与TCP流(例如,端到端TCP连接)相同或相似的包流性能的指示符。在没有包流性能的指示符的情况下,网络管理员或网络服务难以评估和/或改进网络通信。
继续参考图1A-1C,网络环境100进一步包括在中间盒160处或耦接到中间盒160的性能评估器200。性能评估器200被配置为估计端点190之间的TCP连接180的性能特性202(图1C)。例如,图1C示出了性能评估器200评估客户端120和服务器110之间的TCP连接180的一个或多个性能特性202,202a-c。性能特性202的一些示例包括行程时间202a(例如,往返时间RTT)、吞吐量202b和估计的窗口大小202c。如图1C中所示,性能评估器200通过从TCP连接180采样包170来估计性能特性202。例如,在图1C中,性能评估器200接收从中间盒160行进到源端点190s的两个包170xs2,6,从源端点190s行进到中间盒160的两个包170sx3,4,从目的地端点190d行进到中间盒160的一个包170dx1,以及从中间盒160行进到目的地端点190d的一个包170xd4。这说明因为性能评估器200被定位和/或能够在中间盒160处监视包170和/或包活动,所以性能评估器200可以监视端点190之间的双向TCP连接180的每个段。
在一些实施方式中,一旦已经建立了TCP连接180,每个端点190(例如,源端点190s或目的地端点190d)就将数据的字节作为包170传送。因为TCP连接180允许每个端点190传送数据,所以每个端点190具有其自己的相对于发送的包170的序列号172的时间线(例如,在图1D中的每个端点下面被示出)。换句话说,源端点190s将以初始序列号(initialsequence number,ISN)172开始,对于源端点190s向目的地端点190d传输的数据的每个字节,该ISN 172将递增。类似地,目的地端点190d将开始于其自己的初始序列号(ISN)172(例如,最可能不同于源端点190s的ISN 172),并且对于目的地端点190d向源端点190s通信的数据的每个字节,递增其自己的初始序列号172。将彼此独立地管理这些序列号172中的每个序列号,使得从源端点190s传送的字节将不递增从目的地端点190d传送的包170的序列号(反之亦然)。
参考图1D,源端点190s的ISN 172在序列号172等于1024(在包170sd1中被示出)处被初始化,而目的地端点190d的ISN 172在序列号172等于4000(在包170sd1中被示出)处开始。当源端点190s将32字节的数据传送到目的地端点190d时,其1024的序列号递增32字节到1056(例如,从第一包170sd1到第二包170sd2被示出),而目的地端点190d的序列号172保持在4000(例如,即使已经用TCP连接180将32字节从源端点190s传送),直到目的地端点190d传送其自己的数据(即,字节)。例如,目的地端点190d将328字节传输到源端点190s,将其序列号172从4000递增到4328(例如,从第一包170ds1到第二包170ds2被示出),而源端点190s的序列号172保持在1056。递增的序列号172将作为由端点190发送的后续包170中的序列号172而可见。例如,包括由源端点190s发送的32字节数据的第一包170sd1将具有等于1024的ISN172,并且由于由源端点190s先前在第一包170sd1中发送的32字节数据,由源端点190s发送的第二包170sd2将具有等于1056的随后递增的序列号172。目的地端点190d对于每个数据包170的序列号172遵循相同的递增(例如,参见第一包170ds1和第二包170ds2)。包170的有效载荷176通常指的是被包括在包170中的字节。例如,由源端点190s发送的第一包170sd1包括等于32字节的对应有效载荷176,而由目的地端点190d发送的第一包170ds1包括等于328字节的对应有效载荷186。在一些示例中,TCP包170具有为TCP打包的最大字节数。在其它示例中,由于连接180的限制/约束,端点190之间的连接本身进一步限制有效载荷176的最大字节数。
如由图1C和1D中的包结构所示,除了具有序列号172之外,包170还可以包括确认(ACK)号174。包170内的ACK号174指示包170的发送方已经在ACK号174之前接收到序列号172(例如,来自相对端点190),并且预期接收下一序列号172。例如,虽然在端点190之间可能存在一些延迟(例如,TCP连接180内的其它中介跳或延迟),但是当目的地端点190d从源端点190s接收具有32字节的第一包170sd1时,通过包括来自源端点190s的第一包170sd1的序列号172(即,1024的序列号172)的ACK号174递增1字节以指示目的地端点190d打算从源端点190s接收的下一预期字节,由目的地端点190d向源端点190s发送的下一包170ds1确认接收到32字节。换句话说,当目的地端点190d从序列号172等于1024的第一包170sd1接收32字节时,从目的地端点190d通信的下一个即时包170ds1的ACK号174将等于1025(即,序列号1024已经被接收,并且目的地端点190d打算下一个接收1025)。
参考图2A-2D,性能评估器200包括采样器210和估计器220。采样器210被配置为从端点190(例如,源端点190s和目的地端点190d)之间的TCP连接180采样多个包170。例如,图1C描绘了采样器210用馈入性能评估器200的虚线框采样的包170。这里,通过从TCP连接180的包流采样,性能评估器200可以减少中间盒160或TCP连接180上的负担(例如,处理器和/或资源成本)。例如,对于给定的TCP连接180,性能评估器200可以评估流过中间盒160的每个包170或基本上大多数的包170。该方法将是准确的,但是仍然对中间盒160的资源征收重税(例如,通过测量在中间盒160处为每个流(即,连接180)建立完整的TCP代理)。换句话说,该方法将尝试在中间盒160处为每个流重新创建TCP端点。此外,除了对中间盒160的资源征税之外,由于代理处的窗口大小,该方法将为客户端120引入额外的等待时间。任何额外的等待时间可能导致用户体验的减少,特别是当这些TCP连接180影响媒体传输(例如,实时通信中的音频、视频或两者)时。随着客户端和/或主机的数量增加以及中间盒160按比例地接收网络流和连接的增加,这需要更大的编程资源来编程和/或管理中间盒160处的活动,特别是在由中间盒160进行的具有状态跟踪(例如,连接表)的功能中,该采样可能变得越来越重要。例如,可能存在数百万个包流过中间盒160。在这些情况下,作为中介设备的中间盒160可能为端点190之间的网络功能增加等待时间、瓶颈以及额外的跳。
在一些示例中,对于采样器210采样的每个包170,当在中间盒160处采样包170时,采样器210为采样的包170生成时间戳212。换句话说,时间戳212对应于中间盒160遇到包170时的时间t。在一些实施方式中,采样器210记录每个采样的包170的序列号172和/或确认号174以及时间戳212。采样器210还可以被配置为记录和/或存储包170的其它字段或属性(例如,包报头信息、有效载荷大小、标志、校验和等)。当采样的包170无法包括采样器210被配置为记录的属性时,采样器210可以标记该发生和/或继续处理包170(例如,记录其它包属性和/或生成时间戳212)。例如,包170无法包括确认号174。采样器210可以被配置为记录和/或存储序列号172、确认号174、时间戳212以及采样的包170的任何其它包属性的记录。另外地或替代地,采样器210在其相应的时间戳212处为每个记录的序列号172和/或确认号174生成曲线214或趋势线。换句话说,采样器210可以相对于时间绘制这些号172,174。通过生成曲线214或趋势线,采样器210可以由性能评估器200流线化地估计性能特性202,或者允许各种网络实体(诸如网络用户、网络管理员等)具有关于TCP连接180随时间的性能的可见性。如图2A中所示,采样器210可以将这些记录的号172,174一起绘制在相同的曲线214中或单独地绘制(未示出)。图2A描绘了具有号172,174相对于时间t的曲线214的采样器210,以说明采样器210的生成和/或记录功能,即使性能评估器200不要求采样器210生成曲线214来估计一个或多个性能特性202。
具体地参考图2A,采样器210被示为接收(即,采样)两个包1703,9。这里,采样器210生成第一采样包1703的第一时间戳2123和第二采样包1709的第二时间戳2129。在图2A中,采样器210生成曲线214作为记录和/或存储与两个包1703,9相关联的号172,174的一个可能的手段。例如,序列号172和确认号174被示为连接在各个趋势线上的点。在一些示例中,趋势线表示已知数据点(例如,记录的号172,174和时间戳212)的插值。插值通常用于数据采样以生成表示采样的数据点的函数(例如,图2A的趋势线的斜率),使得该函数可以近似或估计未知数据点(例如,未采样的数据点)的值。在一些示例中,基于来自采样的包170的信息(例如,包属性)的插值,性能评估器200(例如,在估计器220处)估计性能特性202。作为示例,通过使用序列号174的趋势线,性能评估器200估计两个包1703,9之间的包1706可能发生在与两个包1703,9的序列号172之间的中点相关联的时间戳212处。
在一些实施方式中,采样器210从TCP连接180稀疏地采样多个包170。稀疏地采样而不是评估所有的包170可以帮助保证中间盒160的最小资源被消耗。在通常意义上,从TCP连接180稀疏地采样包170意味着采样TCP连接180的包流内通信的小于所有的包170。在一些示例中,稀疏地采样指的是不采样TCP连接180的包流内通信的大部分的包170。在一些实施方式中,采样器210被配置为通过采样TCP连接180的百分之一到百分之十(1%到10%)之间的包170来稀疏地采样TCP连接180的包170。在其它实施方式中,采样器210被配置为通过采样TCP连接180的小于百分之一(例如,0.1%)的包170来稀疏地采样TCP连接180的包170。不管采样的稀疏性如何,采样都可以以系统采样频率发生。采样可以随机地或均匀地(例如,以一些不同的间隔系统地)发生。这里,采样器210的采样可以以无状态的方式发生。例如,采样器210在采样期间不考虑TCP连接180的操作状态和/或特性。
在一些配置中,估计器220被配置为基于来自采样的多个包170中的一个或多个包的相应时间戳212、相应序列号172或相应确认号174中的至少两个,生成一段时间内通过中间盒160的源端点190s和目的地端点190d之间的TCP连接180的估计的性能特性202。估计器220的功能可以取决于估计器220正在估计的TCP连接180的性能特性202的类型而变化。图2B示出了确定与RTT 202a(或行程时间222)对应的性能特性202的估计器220。图2C示出了确定与吞吐量202b对应的性能特性202的估计器2220。图2D和2E描绘了确定分别与目的地端点190d和源端点190s的估计的窗口大小202c对应的性能特性202的估计器220。
参考图2B,在一些示例中,为了估计往返时间(RTT)202a,估计器220分析端点190之间的TCP连接180的段。换句话说,RTT 202a包括:(i)源端点190s和中间盒160之间的TCP连接段的第一行程时间222,222a(例如,设备/客户端侧行程时间);以及(ii)目的地端点190d和中间盒160之间的TCP连接段的第二行程时间222,222b(例如,服务器/服务侧行程时间)。为了进行RTT 202a的精确估计,估计器220可以进行第一行程时间222a和第二行程时间222b的求和。虽然这可能不太精确,但是估计器220可以基于任一TCP连接段的行程时间222来估计RTT 202a,并且将该行程时间222加倍以形成通过中间盒160的端点190之间的RTT 202a的估计。
在一些示例中,对于行程时间222(例如,第一行程时间222a或第二行程时间222b),估计器220从由TCP连接180在给定的TCP连接段内传送的采样的包170中识别序列号172。例如,图2B由下标“sx/xs”示出了来自源端点190s和中间盒160之间的TCP连接段的至少一个采样的包170sx/xs,并且由下标“dx/xd”示出了来自目的地端点190d和中间盒160之间的TCP连接段的至少一个采样的包170dx/xd。基于来自采样器210的生成的时间戳212sx/xs,212dx/xd以及相关联的记录的号172,174,估计器220确定在该TC连接段中(例如,在源端点190s和中间盒160之间)何时将接收到与序列号172匹配的确认号174。换句话说,当在TCP连接段内通信序列号172时(例如,当性能评估器200记录序列号172时的时间戳212)和当在相同TCP连接段内确认识别该序列号172的确认号174时(例如,当性能评估器记录与序列号172匹配的确认号174时的时间戳212)之间的时间差,对应于该TCP连接段的行程时间222。不管TCP连接段如何,这都是正确的。
估计器220可以尝试匹配已经由采样器210记录的已知序列号172或者基于由采样器210记录的两个或更多个已知序列号172的插值的估计序列号172。因为采样210不采样端点190之间的TCP连接180中通信的所有的包170,所以估计器220可能没接收到与序列号172匹配的记录的确认号174。当记录的确认号174与由估计器220识别的用于确定行程时间222的序列号172不匹配时,估计器220被配置为基于由采样器210采样的包170的记录的确认号174的插值来估计当对应的确认号174将与识别的序列号172匹配时的相应的时间。例如,通过确认趋势线上的开放点而不是确认趋势线上的填充点,图2B示出了与来自采样器210的记录的序列号172匹配的确认号174是未知的。这里这里,估计器220确定与序列号172匹配的确认号174的相应的时间,以便确定两个行程时间222a-b。第一行程时间222a被示为估计的匹配确认时间t3和记录的序列号172的相应的时间戳212,t1之间的差。类似地,第二行程时间222a被示为估计的匹配确认时间t4和记录的序列号172的相应的时间戳212,t2之间的差。在一些配置中,估计器220假定采样器210没有记录匹配的确认号174(例如,由于不频繁或稀疏采样)。换句话说,估计器220甚至可以不被配置为尝试识别与序列号172匹配的记录的确认号174。
参考图2C,估计器220可以确定端点190之间的TCP连接180的任一方向(例如,从源端点190s到目的地端点190d或从目的地端点190d到源端点190s)的吞吐量202b。在任一方向上,估计器220基于记录的确认号174来确定一段时间t内的确认号174的斜率“m”。因为确认号174确认通过序列号172从包170接收到的数据的序列,所以确认号174的斜率m与包170正在被传送或已经被传送到通信确认号174的端点190的速率对应。换句话说,当目的地端点190d正在通信确认号174时,斜率m与源端点190s正在向目的地端点190d传送包170的速率对应。相反,当源端点190s正在通信确认号174时,这些确认号174的斜率m与目的地端点190d正在向源端点190s传送包170的速率对应。
在一些示例中,诸如图2D,代替一次发送单个包170并且等待响应(例如,确认包170),TCP连接180的每个端点190向另一端点190发送一组包170(被叫做窗口)。每一侧维持其相应的窗口。每个端点190可以确认包170或包170的窗口,以最小化由于确认而引起的等待时间。因为窗口的大小可能影响TCP连接180,所以性能评估器200被配置为生成每个端点190的估计的窗口大小202c,以帮助优化端点190之间的通信。在一些示例中,通过选择已经由采样器210采样的包170,估计器220生成估计的窗口大小202c。基于采样的包170,估计器220确定在相同的时间戳212处的记录的序列号172和确认号174(例如,记录的确认号174或估计的确认号174)之间的差。当确认号174由目的地端点190d通信(例如,与由目的地端点190d发送的包170相关联)时,例如在图2D中,由估计器220估计的窗口大小202c将是目的地端点190d的估计的窗口大小202c。相反,当确认号174由源端点190s通信(例如,与由源端点190s发送的包170相关联)时,例如在图2E中,由估计器220估计的窗口大小202c将是源端点190s的估计的窗口大小。不管估计的窗口大小202c对应于哪个端点190,估计器220都基于记录的序列号172和确认号174之间的确定的差来生成估计的窗口大小202c。换句话说,估计器220通过在相同的时间戳212处的号172,174的差来确定估计的窗口大小202c。例如,图2D描绘了在相同的时刻围绕号172,174的框,以说明估计的窗口大小202c。在一些实施方式中,每次采样器210进行TCP包流的采样时,采样器210被配置为在每个TCP流方向上采样包170(例如,在相同的时间戳212处的一对包),使得估计器220更有效地生成估计的窗口大小202c。在其它实施方式中,采样器210仅从任一TCP流方向采样一个包170,使得估计器220对采样的包170插值以生成估计的窗口大小202c。
图2D和2E描绘了采样器210和/或估计器220可以生成的不同的曲线214以确定估计的窗口大小202c。在图2D中,采样器210和/或估计器220生成曲线214,该曲线214描绘来自源端点190s的序列号172(例如,被示为图2D中的趋势线上的参考172s)连同来自目的地端点190d的确认号174(例如,被示为图2D中的趋势线上的参考174d)。在图2E中,采样器210和/或估计器220生成曲线214,该曲线214描绘来自目的地端点190d的序列号172(例如,被示为图2E中的趋势线上的参考172d)连同来自源端点190s的确认号174(例如,被示为图2E中的趋势线上的参考174s)。对于任一曲线214,估计的窗口大小202c等于在相同的时间t处的序列号172趋势线上的点和确认号174趋势线上的点之间的距离。
图3是估计TCP性能特性202的方法300的操作的示例布置的流程图。在操作302,方法300从一段时间t内通过中间盒160的源端点190s和目的地端点190d之间的TCP连接180稀疏地采样多个包170。在操作304,方法400对采样的多个包170中的每个采样的包170进行操作304a-b。在操作304a,对于每个采样的包170,方法300生成当相应的包170被采样时的时间戳212。在操作304b,对于每个采样的包170,方法300记录相应的包170的序列号172和确认号174。这里,对于相应的包170,确认包174可能不存在。在操作306,方法300基于来自采样的多个包170中的一个或多个包的相应时间戳212、相应序列号172或相应确认号174中的至少两个,生成该段时间t内通过中间盒160的源端点190s和目的地端点190d之间的TCP连接180的估计的性能特性202。
图4是估计TCP连接180的行程时间的方法400的操作的示例布置的流程图。在操作402,方法400在中间盒160处从一段时间t内通过中间盒160通信的端点190之间的TCP连接180稀疏地采样多个包170。对于采样的多个包170中的每个采样的包170,在操作404,方法400生成当相应的包170被采样时的时间戳212。在操作406,方法400确定在中间盒160和相应的端点190之间被传送的采样的多个包170中的第一采样包170的第一序列号172与采样的多个包170的任何确认号174不匹配。在操作408,方法400基于采样的多个包170的多个确认号174的插值来估计与第一序列号172匹配的确认号174的相应的时间t。在操作410,方法400通过与第一包170相关联的第一时间戳212和估计的相应的时间之间的差,确定中间盒160和相应的端点190之间的行程时间。
图5是可以用于实施本文档中描述的系统(例如,性能评估器200)和方法(例如,方法300,400)的示例计算设备500的示意图。计算设备500旨在表示各种形式的数字计算机,诸如是膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机和其它适当的计算机。本文示出的组件,它们的连接和关系以及它们的功能仅意味着是示例性的,并不意味着限制本文档中描述和/或要求保护的发明的实施方式。
计算设备500包括处理器510(例如,数据处理硬件)、存储器520(例如,存储器硬件)、存储设备530、连接到存储器520和高速扩展端口550的高速接口/控制器540、以及连接到低速总线570和存储设备530的低速接口/控制器560。组件510,520,530,540,550和560中的每一个使用各种总线来互连,并且可以被安装在通用主板上或以其它适当的方式来安装。处理器510可以处理用于在计算设备500内执行的指令,包括在存储器520中或存储设备530上存储的指令,以在外部输入/输出设备上显示图形用户界面(GUI)的图形信息,该外部输入/输出设备诸如是被耦接到高速接口540的显示器580。在其它实施方式中,多个处理器和/或多个总线可以适当地与多个存储器和存储器类型一起被使用。而且,可以连接多个计算设备500,其中,每个设备提供必要操作的部分(例如,作为服务器阵列(server bank)、一组刀片服务器、或多处理器系统)。
存储器520在计算设备500内非暂时性地存储信息。存储器520可以是计算机可读介质、易失性存储器单元或非易失性存储器单元。非暂时性存储器520可以是用于临时或永久地存储程序(例如,指令的序列)或数据(例如,程序状态信息)以由计算设备500使用的物理设备。非易失性存储器的示例包括但不限于闪存和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器(EEPROM)(例如,通常用于固件,诸如引导程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、相变存储器(PCM)以及盘或带。
存储设备530能够为计算设备500提供大容量存储。在一些实施方式中,存储设备530是计算机可读介质。在各种不同的实施方式中,存储设备530可以是软盘设备、硬盘设备、光盘设备或带设备,闪存或其它类似的固态存储器设备,或设备的阵列,包括在存储区域网络或其它配置中的设备。在附加的实施方式中,计算机程序产品被有形地体现在信息载体中。计算机程序产品包含指令,当该指令被执行时,进行一个或多个方法,诸如是上述那些方法。信息载体是计算机或机器可读介质,诸如存储器520、存储设备530、或处理器510上的存储器。
高速控制器540管理计算设备500的带宽密集操作,而低速控制器560管理较低的带宽密集操作。这样的职责的分配仅是示例性的。在一些实施方式中,高速控制器540被耦接到存储器520、显示器580(例如,通过图形处理器或加速器)以及高速扩展端口550,该高速扩展端口550可以接受各种扩展卡(未示出)。在一些实施方式中,低速控制器560被耦接到存储设备530和低速扩展端口590。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口590可以例如通过网络适配器被耦接到一个或多个输入/输出设备,该一个或多个输入/输出设备诸如是键盘、指示设备、扫描仪或者诸如交换机或路由器的网络设备。
如图中示出的,计算设备500可以以数个不同的形式来实施。例如,它可以被实施为标准服务器500a或以一组这样的服务器500a被多次实施、被实施为膝上型计算机500b、或者被实施为机架服务器系统500c的一部分。
可以以数字电子和/或光电路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合来实现本文中描述的系统和技术的各种实施方式。这些各种实施方式可以包括一个或多个计算机程序中的实施方式,该一个或多个计算机程序可以在包括至少一个可编程处理器的可编程系统上执行和/或解释,该至少一个可编程处理器可以是专用的或通用的,被耦接为从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令并且向存储系统、至少一个输入设备和至少一个输出设备传送数据和指令。
这些计算机程序(也被已知为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级的面向过程和/或面向对象的编程语言、和/或以汇编/机器语言来实施。如本文中使用的,术语“机器可读介质”和“计算机可读介质”指的是用于向可编程处理器提供机器指令和/或数据的任何计算机程序产品、非暂时性计算机可读介质、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(PLD)),该可编程处理器包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”指的是用于向可编程处理器提供机器指令和/或数据的任何信号。
本说明书中描述的进程和逻辑流可以由执行一个或多个计算机程序的一个或多个可编程处理器来进行,以通过对输入数据进行操作并且生成输出来进行功能。进程和逻辑流也可以由专用逻辑电路进行,该专用逻辑电路例如是FPGA(现场可编程门阵列)或ASIC(专用集成电路)。例如,适用于执行计算机程序的处理器包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或这两者接收指令和数据。计算机的基本元件是用于进行指令的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,或者可操作地被耦接为从该大容量存储设备接收数据或向该大容量存储设备传输数据,或者这两者,该大容量存储设备例如是磁盘、磁光盘或光盘。然而,计算机不必具有这样的设备。适用于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如,EPROM、EEPROM和闪存设备;磁盘,例如,内部硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以由专用逻辑电路补充或者被并入专用逻辑电路中。
为了提供与用户的交互,本公开的一个或多个方面可以被实施在具有显示设备并且可选地具有键盘和指示设备的计算机上,该显示设备例如是CRT(阴极射线管)监视器、LCD(液晶显示器)监视器或用于向用户显示信息的触摸屏,该指示设备例如是鼠标或轨迹球,用户可以通过该键盘和指示设备向计算机提供输入。其它种类的设备也可以用于提供与用户的交互;例如,向用户提供的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机可以通过向由用户使用的设备发送文档以及从由用户使用的设备接收文档来与用户进行交互;例如,通过响应于从用户的客户端设备上的网页浏览器接收的请求而向网页浏览器发送网页。
已经描述了数个实施方式。然而,应该理解的是,在不脱离本公开的精神和范围的情况下,可以进行各种修改。因此,其它实施方式在以下权利要求的范围内。
Claims (30)
1.一种方法(300),其特征在于,包括:
在中间盒(160)的数据处理硬件(502)处,从一段时间内通过所述中间盒(160)的源端点(190)和目的地端点(190)之间的传输控制协议(TCP)连接(180)稀疏地采样多个包(170);
对于采样的所述多个包(170)中的每个包(170):
由所述数据处理硬件(502)生成当所述包(170)被采样时的时间戳(212);以及
由所述数据处理硬件(502)记录所述包(170)的序列号(172)和确认号(174);以及
由所述数据处理硬件(502)基于来自采样的所述多个包(170)中的一个或多个包(170)的相应的时间戳(212)、相应的序列号(172)或相应的确认号(174)中的至少两个,生成所述一段时间内通过所述中间盒(160)的所述源端点(190)和所述目的地端点(190)之间的所述TCP连接(180)的估计的性能特性(202)。
2.根据权利要求1所述的方法(300),其特征在于,进一步包括:
由所述数据处理硬件(502)识别为在所述中间盒(160)和所述目的地端点(190)之间被传送的采样的所述多个包(170)中的第一包(170)记录的第一序列号(172);
由所述数据处理硬件(502)确定为所述第一包(170)记录的所述第一序列号(172)是否与为在所述目的地端点(190)和所述中间盒(160)之间被传送的采样的所述多个包(170)记录的所述确认号(174)中的任何一个确认号(174)匹配;
当所述第一序列号(172)与为采样的所述多个包(170)中的第二包(170)记录的所述确认号(174)匹配时,由所述数据处理硬件(502)基于为所述第一包(170)和所述第二包(170)生成的相应的所述时间戳(212)之间的差来确定所述中间盒(160)和所述目的地端点(190)之间的第一行程时间(222);以及
当所述第一序列号(172)与为采样的所述多个包(170)记录的所述确认号(174)中的任何一个确认号(174)不匹配时:
通过对为采样的所述多个包(170)记录的所述确认号(174)插值,由所述数据处理硬件(502)估计来自所述TCP连接(180)的第一未采样包(170)的相应的时间戳(212),所述第一未采样包(170)与匹配所述第一序列号(172)的对应确认号(174)相关联;以及
由所述数据处理硬件(502)基于为所述第一包(170)生成的第一时间戳(212)和为所述第一未采样包(170)估计的相应的所述时间戳(212)之间的差来确定所述中间盒(160)和所述目的地端点(190)之间的所述第一行程时间(222)。
3.根据权利要求2所述的方法(300),其特征在于,进一步包括:
由所述数据处理硬件(502)识别为采样的所述多个包(170)中的第三包(170)记录的第二序列号(172),所述第三包(170)在所述中间盒(160)和所述源端点(190)之间被传送;
由所述数据处理硬件(502)确定为所述第三包(170)记录的所述第二序列号(172)是否与为在所述源端点(190)和所述中间盒(160)之间被传送的采样的所述多个包(170)记录的所述确认号(174)中的任何一个确认号(174)匹配;
当所述第二序列号(172)与为采样的所述多个包(170)中的第四包(170)记录的所述确认号(174)匹配时,由所述数据处理硬件(502)基于为所述第三包(170)和所述第四包(170)生成的相应的所述时间戳(212)之间的差来确定所述中间盒(160)和所述源端点(190)之间的第二行程时间(222);以及
当所述第二序列号(172)与为采样的所述多个包(170)记录的所述确认号(174)中的任何一个确认号(174)不匹配时:
通过对为采样的所述多个包(170)记录的所述确认号(174)插值,由所述数据处理硬件(502)估计来自所述TCP连接(180)的第二未采样包(170)的相应的时间戳(212),所述第二未采样包(170)与匹配所述第二序列号(172)的对应确认号(174)相关联;以及
由所述数据处理硬件(502)基于为所述第三包(170)生成的第三时间戳(212)和为所述第二未采样包(170)估计的相应的所述时间戳(212)之间的差来确定所述中间盒(160)和所述源端点(190)之间的所述第二行程时间(222)。
4.根据权利要求3所述的方法(300),其特征在于,生成所述TCP连接(180)的所述估计的性能特性(202)包括,通过对所述中间盒(160)和所述目的地端点(190)之间的所述第一行程时间(222)以及所述中间盒(160)和所述源端点(190)之间的所述第二行程时间(222)求和,计算通过所述中间盒(160)的所述源端点(190)和所述目的地端点(190)之间的往返时间(222)。
5.根据权利要求1-4中任一项所述的方法(300),其特征在于,进一步包括,通过对为采样的所述多个包(170)记录的所述确认号(174)插值,由所述数据处理硬件(502)估计来自所述TCP连接(180)的未采样包(170)的相应的时间戳(212)。
6.根据权利要求1-5中任一项所述的方法(300),其特征在于,进一步包括,通过对为采样的所述多个包(170)记录的所述序列号(172)插值,由所述数据处理硬件(502)估计来自所述TCP连接(180)的未采样包(170)的相应的时间戳(212)。
7.根据权利要求1-6中任一项所述的方法(300),其特征在于,生成所述TCP连接(180)的所述估计的性能特性(202)包括:
基于为通过所述中间盒(160)从所述目的地端点(190)被传送到所述源端点(190)的采样的所述多个包(170)记录的所述确认号(174),确定所述一段时间内的确认号(174)的斜率;以及
基于确认号(174)的所述斜率来生成吞吐量,所述吞吐量与通过所述中间盒(160)从所述源端点(190)到所述目的地端点(190)的包(170)传送速率对应。
8.根据权利要求1-7中任一项所述的方法(300),其特征在于,生成所述TCP连接(180)的所述估计的性能特性(202)包括:
基于为通过所述中间盒(160)从所述源端点(190)被传送到所述目的地端点(190)的采样的所述多个包(170)记录的所述确认号(174),确定确认号(174)随时间的斜率;以及
基于所述确认号(174)的所述斜率来生成吞吐量,所述吞吐量与通过所述中间盒(160)从所述目的地端点(190)到所述源端点(190)的包(170)传送速率对应。
9.根据权利要求1-8中任一项所述的方法(300),其特征在于,进一步包括,在给定时刻:
在所述数据处理硬件(502)处,从所述源端点(190)接收通过所述TCP连接(180)通信的第一包(170),所述第一包(170)包括第一序列号(172)和第一确认号(174);
在所述数据处理硬件(502)处,从所述目的地端点(190)接收通过所述TCP连接(180)通信的第二包(170),所述第二包(170)包括第二序列号(172)和第二确认号(174);以及
通过确定与所述第一包(170)相关联的所述第一序列号(172)和与所述第二包(170)相关联的所述第二确认号(174)之间的差,由所述数据处理硬件(502)估计所述源端点(190)的相应的窗口大小。
10.根据权利要求9所述的方法(300),其特征在于,进一步包括,通过确定与所述第二包(170)相关联的所述第二序列号(172)和与所述第一包(170)相关联的所述第一确认号(174)之间的差,由所述数据处理硬件(502)估计所述目的地端点(190)的相应的窗口大小。
11.根据权利要求1-10中任一项所述的方法(300),其特征在于,稀疏地采样所述多个包(170)包括,从所述源端点(190)和所述目的地端点(190)之间的所述TCP连接(180)采样小于所有的包(170)。
12.根据权利要求1-11中任一项所述的方法(300),其特征在于,稀疏地采样所述多个包(170)包括,以无状态和系统的方式从所述TCP连接(180)均匀地采样包(170)。
13.根据权利要求1-12中任一项所述的方法(300),其特征在于,所述源端点(190)是与远程分布式网络(130)进行通信的用户设备(UE),并且所述目的地端点(190)对应于与所述远程分布式网络(130)进行通信的服务器(110)。
14.一种系统(100),其特征在于,包括:
数据处理硬件(502);以及
与所述数据处理硬件(502)进行通信的存储器硬件(504),所述存储器硬件(504)存储指令,当在所述数据处理硬件(502)上执行所述指令时,所述指令使得所述数据处理硬件(502)进行操作,所述操作包括:
从一段时间内通过中间盒(160)的源端点(190)和目的地端点(190)之间的传输控制协议(TCP)连接(180)稀疏地采样多个包(170);
对于采样的所述多个包(170)中的每个包(170):
生成当所述包(170)被采样时的时间戳(212);以及
记录所述包(170)的序列号(172)和确认号(174);以及
基于来自采样的所述多个包(170)中的一个或多个包(170)的相应的时间戳(212)、相应的序列号(172)或相应的确认号(174)中的至少两个,生成所述一段时间内通过所述中间盒(160)的所述源端点(190)和所述目的地端点(190)之间的所述TCP连接(180)的估计的性能特性(202)。
15.根据权利要求14所述的系统(100),其特征在于,所述操作进一步包括:
识别为在所述中间盒(160)和所述目的地端点(190)之间被传送的采样的所述多个包(170)中的第一包(170)记录的第一序列号(172);
确定为所述第一包(170)记录的所述第一序列号(172)是否与为在所述目的地端点(190)和所述中间盒(160)之间被传送的采样的所述多个包(170)记录的所述确认号(174)中的任何一个确认号(174)匹配;
当所述第一序列号(172)与为采样的所述多个包(170)中的第二包(170)记录的所述确认号(174)匹配时,基于所述第一包(170)和所述第二包(170)的相应的所述时间戳(212)之间的差来确定所述中间盒(160)和所述目的地端点(190)之间的第一行程时间(222);以及
当所述第一序列号(172)与为采样的所述多个包(170)记录的所述确认号(174)中的任何一个确认号(174)不匹配时:
通过对为采样的所述多个包(170)记录的所述确认号(174)插值,估计来自所述TCP连接(180)的第一未采样包(170)的相应的时间戳(212),所述第一未采样包(170)与匹配所述第一序列号(172)的对应确认号(174)相关联;以及
基于为所述第一包(170)生成的第一时间戳(212)和为所述第一未采样包(170)估计的相应的所述时间戳(212)之间的差来确定所述中间盒(160)和所述目的地端点(190)之间的所述第一行程时间(222)。
16.根据权利要求15所述的系统(100),其特征在于,所述操作进一步包括:
识别为采样的所述多个包(170)中的第三包(170)记录的第二序列号(172),所述第三包(170)在所述中间盒(160)和所述源端点(190)之间被传送;
确定为所述第三包(170)记录的所述第二序列号(172)是否与为在所述源端点(190)和所述中间盒(160)之间被传送的采样的所述多个包(170)记录的所述确认号(174)中的任何一个确认号(174)匹配;
当所述第二序列号(172)与为采样的所述多个包(170)中的第四包(170)记录的所述确认号(174)匹配时,基于为所述第三包(170)和所述第四包(170)生成的相应的所述时间戳(212)之间的差来确定所述中间盒(160)和所述源端点(190)之间的第二行程时间(222);以及
当所述第二序列号(172)与为采样的所述多个包(170)记录的所述确认号(174)中的任何一个确认号(174)不匹配时:
通过对为采样的所述多个包(170)记录的所述确认号(174)插值,估计来自所述TCP连接(180)的第二未采样包(170)的相应的时间戳(212),所述第二未采样包(170)与匹配所述第二序列号(172)的对应确认号(174)相关联;以及
基于为所述第三包(170)生成的第三时间戳(212)和为所述第二未采样包(170)估计的相应的所述时间戳(212)之间的差来确定所述中间盒(160)和所述源端点(190)之间的所述第二行程时间(222)。
17.根据权利要求16所述的系统(100),其特征在于,生成所述TCP连接(180)的所述估计的性能特性(202)包括,通过对所述中间盒(160)和所述目的地端点(190)之间的所述第一行程时间(222)以及所述中间盒(160)和所述源端点(190)之间的所述第二行程时间(222)求和,计算通过所述中间盒(160)的所述源端点(190)和所述目的地端点(190)之间的往返时间(222)。
18.根据权利要求14-17中任一项所述的系统(100),其特征在于,所述操作进一步包括,基于采样的所述多个包(170)的记录的所述确认号(174)的插值来估计未记录的确认号(174)的相应的时间。
19.根据权利要求14-18中任一项所述的系统(100),其特征在于,所述操作进一步包括,基于采样的所述多个包(170)的记录的所述序列号(172)的插值来估计未记录的序列号(172)的相应的时间。
20.根据权利要求14-19中任一项所述的系统(100),其特征在于,生成所述TCP连接(180)的所述估计的性能特性(202)包括:
基于为通过所述中间盒(160)从所述目的地端点(190)被传送到所述源端点(190)的采样的所述多个包(170)记录的所述确认号(174),确定所述一段时间内的确认号(174)的斜率;以及
基于确认号(174)的所述斜率来生成吞吐量,所述吞吐量与通过所述中间盒(160)从所述源端点(190)到所述目的地端点(190)的包(170)传送速率对应。
21.根据权利要求14-20中任一项所述的系统(100),其特征在于,生成所述TCP连接(180)的所述估计的性能特性(202)包括:
基于为通过所述中间盒(160)从所述源端点(190)被传送到所述目的地端点(190)的采样的所述多个包(170)记录的所述确认号(174),确定确认号(174)随时间的斜率;以及
基于所述确认(174)的所述斜率来生成吞吐量,所述吞吐量与通过所述中间盒(160)从所述目的地端点(190)到所述源端点(190)的包(170)传送速率对应。
22.根据权利要求14-21中任一项所述的系统(100),其特征在于,所述操作进一步包括,在给定时刻:
从所述源端点(190)接收通过所述TCP连接(180)通信的第一包(170),所述第一包(170)包括第一序列号(172)和第一确认号(174);
从所述目的地端点(190)接收通过所述TCP连接(180)通信的第二包(170),所述第二包(170)包括第二序列号(172)和第二确认号(174);以及
通过确定与所述第一包(170)相关联的所述第一序列号(172)和与所述第二包(170)相关联的所述第二确认号(174)之间的差,估计所述源端点(190)的相应的窗口大小。
23.根据权利要求14-22中任一项所述的系统(100),其特征在于,所述操作进一步包括,通过确定与所述第二包(170)相关联的所述第二序列号(172)和与所述第一包(170)相关联的所述第一确认号(174)之间的差,估计所述目的地端点(190)的相应的窗口大小。
24.根据权利要求14-23中任一项所述的系统(100),其特征在于,稀疏地采样所述多个包(170)包括,从所述源端点(190)和所述目的地端点(190)之间的所述TCP连接(180)采样小于所有的包(170)。
25.根据权利要求14-24中任一项所述的系统(100),其特征在于,稀疏地采样所述多个包(170)包括,以无状态和系统的方式从所述TCP连接(180)均匀地采样包(170)。
26.根据权利要求14-25中任一项所述的系统(100),其特征在于,所述源端点(190)包括与远程分布式网络(130)进行通信的用户设备(UE),并且所述目的地端点(190)包括与所述远程分布式网络(130)进行通信的服务器(110)。
27.一种方法(400),其特征在于,包括:
在中间盒(160)的数据处理硬件(502)处,从一段时间内通过所述中间盒(160)通信的端点(190)之间的传输控制协议(TCP)连接(180)稀疏地采样多个包(170);
对于采样的所述多个包(170)中的每个包(170),由所述数据处理硬件(502)生成当所述包(170)被采样时的时间戳(212);
由所述数据处理硬件(502)确定在所述中间盒(160)和相应的端点(190)之间被传送的采样的所述多个包(170)中的第一采样包(170)的第一序列号(172)与采样的所述多个包(170)的任何确认号(174)不匹配;
由所述数据处理硬件(502)基于采样的所述多个包(170)的多个确认号(174)的插值来估计与所述第一序列号(172)匹配的确认号(174)的相应的时间;以及
通过与所述第一包(170)相关联的第一时间戳(212)和估计的相应的所述时间之间的差,由所述数据处理硬件(502)确定所述中间盒(160)和相应的所述端点(190)之间的行程时间(222)。
28.根据权利要求27所述的方法(400),其特征在于,稀疏地采样所述多个包(170)包括,从通过所述中间盒(160)的所述端点(190)之间的所述TCP连接(180)采样小于所有的包(170)。
29.根据权利要求27或28所述的方法(400),其特征在于,稀疏地采样所述多个包(170)包括,以无状态和系统的方式从所述TCP连接(180)均匀地采样包(170)。
30.根据权利要求27-29中任一项所述的方法(400),其特征在于,所述端点(190)包括与远程分布式网络(130)进行通信作为源端点(190)的用户设备(UE)和与所述远程分布式网络(130)进行通信作为目的地端点(190)的服务器(110)。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/416,626 US10887432B2 (en) | 2019-05-20 | 2019-05-20 | Trip time estimation for transport control protocol |
US16/416,626 | 2019-05-20 | ||
PCT/US2019/062683 WO2020236217A1 (en) | 2019-05-20 | 2019-11-21 | Trip time estimation for transport control protocol |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114145008A true CN114145008A (zh) | 2022-03-04 |
Family
ID=68919769
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980098629.5A Pending CN114145008A (zh) | 2019-05-20 | 2019-11-21 | 传输控制协议的行程时间估计 |
Country Status (6)
Country | Link |
---|---|
US (3) | US10887432B2 (zh) |
EP (1) | EP3973670A1 (zh) |
JP (2) | JP7326478B2 (zh) |
KR (2) | KR102489541B1 (zh) |
CN (1) | CN114145008A (zh) |
WO (1) | WO2020236217A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10887432B2 (en) * | 2019-05-20 | 2021-01-05 | Google Llc | Trip time estimation for transport control protocol |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004088858A2 (en) * | 2003-03-29 | 2004-10-14 | Regents Of University Of California | Method and apparatus for improved data transmission |
US20080168177A1 (en) * | 2007-01-04 | 2008-07-10 | Yahoo! Inc. | Estimation of web client response time |
CN101971590A (zh) * | 2006-12-20 | 2011-02-09 | 汤姆森许可贸易公司 | 通过管理tcp ack来提高lan中的吞吐量 |
CN102711172A (zh) * | 2012-05-25 | 2012-10-03 | 浙江工业大学 | 一种无线网络中改进的tcpw拥塞控制方法 |
CN108259475A (zh) * | 2016-12-29 | 2018-07-06 | 西普霍特公司 | 处理传输控制协议会话中的分组的系统和方法 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7304951B2 (en) * | 2000-11-21 | 2007-12-04 | North Carolina State University | Methods and systems for rate-based flow control between a sender and a receiver |
US7636321B1 (en) * | 2003-05-12 | 2009-12-22 | Sprint Communications Company L.P. | Method and system for measuring round-trip time of packets in a communications network |
US8004981B2 (en) * | 2003-06-17 | 2011-08-23 | Cisco Technology, Inc. | Methods and devices for the coordination of flow control between a TCP/IP network and other networks |
SE528374C2 (sv) * | 2004-09-22 | 2006-10-31 | Prosilient Technologies Ab | Metod, en dataprogramprodukt samt en bärare för att ange envägslatens i ett datanätverk |
JP4793652B2 (ja) | 2004-10-21 | 2011-10-12 | 日本電気株式会社 | 通信品質計測装置及びその計測方法 |
KR101210341B1 (ko) * | 2006-02-11 | 2012-12-10 | 삼성전자주식회사 | 패킷 네트워크에서 노드간 전파 지연 및 거리를 정확하고안전하게 측정하는 방법 및 상기 방법을 수행하는 패킷네트워크 노드 |
US7957295B2 (en) * | 2007-11-02 | 2011-06-07 | Cisco Technology, Inc. | Ethernet performance monitoring |
US7991881B2 (en) * | 2008-02-29 | 2011-08-02 | Microsoft Corporation | Monitoring network performance to identify sources of network performance degradation |
US9380091B2 (en) * | 2012-06-12 | 2016-06-28 | Wi-Lan Labs, Inc. | Systems and methods for using client-side video buffer occupancy for enhanced quality of experience in a communication network |
ATE540529T1 (de) * | 2009-11-03 | 2012-01-15 | Tektronix Int Sales Gmbh | Verfahren und vorrichtung zum messen der verzögerung innerhalb eines komprimierten digitalen stroms |
JP4927181B2 (ja) * | 2010-01-06 | 2012-05-09 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | ユーザ待ち時間推定装置、ユーザ待ち時間推定方法、及びプログラム |
JP5180247B2 (ja) | 2010-02-24 | 2013-04-10 | 日本電信電話株式会社 | パケットサンプリング装置と方法およびプログラム |
KR20120025378A (ko) * | 2010-09-07 | 2012-03-15 | 한국전자통신연구원 | 무선 랜 기반 왕복 시간 측정 시스템 및 방법 |
WO2013052653A1 (en) * | 2011-10-04 | 2013-04-11 | North Carolina State University | Methods, systems, and computer readable media for reducing wi-fi scanning using cellular network to wi-fi access point mapping information |
US20140281018A1 (en) * | 2013-03-13 | 2014-09-18 | Futurewei Technologies, Inc. | Dynamic Optimization of TCP Connections |
KR102049594B1 (ko) * | 2013-10-04 | 2019-11-27 | 에스케이 텔레콤주식회사 | 패킷 왕복 시간을 이용한 테더링 서비스 제어장치 및 방법 |
US20150359016A1 (en) * | 2014-06-09 | 2015-12-10 | Qualcomm Incorporated | Apparatus and method to estimate round trip time via transport control protocol signals |
WO2016077396A1 (en) * | 2014-11-10 | 2016-05-19 | APS Technology 1 LLC | Improving network throughput |
JP6553196B2 (ja) | 2015-01-27 | 2019-07-31 | ノキア ソリューションズ アンド ネットワークス オサケユキチュア | トラフィックフローの監視 |
US10536357B2 (en) | 2015-06-05 | 2020-01-14 | Cisco Technology, Inc. | Late data detection in data center |
US10554571B2 (en) * | 2015-08-18 | 2020-02-04 | Avago Technologies International Sales Pte. Limited | Packet-to-packet timing reconstruction for channel bonding |
KR102496060B1 (ko) * | 2015-09-14 | 2023-02-07 | 삼성전자 주식회사 | 전자 장치 및 그의 전송 제어 프로토콜(transmission control protocol: TCP) 제어 방법 |
JP6407133B2 (ja) | 2015-12-02 | 2018-10-17 | 日本電信電話株式会社 | 通信品質劣化検出システム、通信品質劣化検出方法、及びプログラム |
JP2017184044A (ja) | 2016-03-30 | 2017-10-05 | 富士通株式会社 | プログラム、情報処理装置及び情報処理方法 |
US10218596B2 (en) * | 2017-02-10 | 2019-02-26 | Cisco Technology, Inc. | Passive monitoring and measurement of network round trip time delay |
US11290686B2 (en) * | 2017-09-11 | 2022-03-29 | Michael H Peters | Architecture for scalable video conference management |
US10887432B2 (en) * | 2019-05-20 | 2021-01-05 | Google Llc | Trip time estimation for transport control protocol |
US20220385587A1 (en) * | 2021-05-25 | 2022-12-01 | Google Llc | Acknowledgement Coalescing Module Utilized In Content Addressable Memory (CAM) Based Hardware Architecture For Data Center Networking |
-
2019
- 2019-05-20 US US16/416,626 patent/US10887432B2/en active Active
- 2019-11-21 KR KR1020217041183A patent/KR102489541B1/ko active IP Right Grant
- 2019-11-21 KR KR1020237001426A patent/KR102663105B1/ko active IP Right Grant
- 2019-11-21 CN CN201980098629.5A patent/CN114145008A/zh active Pending
- 2019-11-21 JP JP2021569197A patent/JP7326478B2/ja active Active
- 2019-11-21 WO PCT/US2019/062683 patent/WO2020236217A1/en unknown
- 2019-11-21 EP EP19821460.3A patent/EP3973670A1/en active Pending
-
2020
- 2020-12-18 US US17/126,176 patent/US11297169B2/en active Active
-
2022
- 2022-03-02 US US17/653,243 patent/US11849012B2/en active Active
-
2023
- 2023-08-02 JP JP2023126290A patent/JP2023159146A/ja active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004088858A2 (en) * | 2003-03-29 | 2004-10-14 | Regents Of University Of California | Method and apparatus for improved data transmission |
CN101971590A (zh) * | 2006-12-20 | 2011-02-09 | 汤姆森许可贸易公司 | 通过管理tcp ack来提高lan中的吞吐量 |
US20080168177A1 (en) * | 2007-01-04 | 2008-07-10 | Yahoo! Inc. | Estimation of web client response time |
CN102711172A (zh) * | 2012-05-25 | 2012-10-03 | 浙江工业大学 | 一种无线网络中改进的tcpw拥塞控制方法 |
CN108259475A (zh) * | 2016-12-29 | 2018-07-06 | 西普霍特公司 | 处理传输控制协议会话中的分组的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210105344A1 (en) | 2021-04-08 |
EP3973670A1 (en) | 2022-03-30 |
JP2023159146A (ja) | 2023-10-31 |
US20220191307A1 (en) | 2022-06-16 |
KR20230014860A (ko) | 2023-01-30 |
JP7326478B2 (ja) | 2023-08-15 |
WO2020236217A1 (en) | 2020-11-26 |
KR20220002678A (ko) | 2022-01-06 |
US11297169B2 (en) | 2022-04-05 |
KR102489541B1 (ko) | 2023-01-17 |
KR102663105B1 (ko) | 2024-05-07 |
US20200374374A1 (en) | 2020-11-26 |
US10887432B2 (en) | 2021-01-05 |
US11849012B2 (en) | 2023-12-19 |
JP2022533737A (ja) | 2022-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10862732B2 (en) | Enhanced network virtualization using metadata in encapsulation header | |
US10200264B2 (en) | Link status monitoring based on packet loss detection | |
US20210036953A1 (en) | Flow modification including shared context | |
CN107005584B (zh) | 用于内联服务交换机的方法、设备和存储介质 | |
US10257061B2 (en) | Detecting source network address translation in a communication system | |
US8938553B2 (en) | Cooperative proxy auto-discovery and connection interception through network address translation | |
US7318100B2 (en) | Cooperative proxy auto-discovery and connection interception | |
US20120179796A1 (en) | Routing and service performance management in an application acceleration environment | |
US10091099B2 (en) | Session continuity in the presence of network address translation | |
Albkerat et al. | Analysis of IPv6 transition technologies | |
JP2023159146A (ja) | トランスポート制御プロトコルのトリップタイムの推定 | |
Lange et al. | Transparent network services via a virtual traffic layer for virtual machines | |
Sharma et al. | QUIC protocol based monitoring probes for network devices monitor and alerts | |
US11956145B1 (en) | Method and apparatus to recover flow using an error message in a tunnel-less SDWAN | |
Jain | Analyzing Layer 4 Traffic | |
Vengatesh et al. | NETWORK EXECUTION ASSESSMENT OF IPV4 & IPV6 ARRANGED PASSAGE AND V6 TO V4 CHANGE INSTRUMENTS ON WINDOWS SERVER WORKING FRAMEWORKS | |
Sirisutthidecha et al. | High-availability virtual communication for cloud access | |
BONAM | Multipath TCP and Measuring end-to-end TCP Throughput: Multipath TCP Descriptions and Ways to Improve TCP Performance |
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 |