技术领域technical field
本发明总体上涉及计算机网络领域。更具体地说,本发明揭示用于重新产生通过聚合连接(aggregated connection)在第一通信路由器与第二通信路由器之间建立的数据会话的丢失数据包的方法和系统。The present invention relates generally to the field of computer networks. More specifically, the present invention discloses a method and system for regenerating lost data packets of a data session established between a first communications router and a second communications router over an aggregated connection.
背景技术Background technique
多广域网(WAN)站点到站点VPN路由器是支持集中多个互连(例如,用于访问一个或多个远程专用网络的WAN连接)的带宽的路由器。在一些实施方案中,每个TCP/IP会话仅路由到一个WAN。在此配置中,单个TCP文件传送会话仅能够利用每个终端上的一个WAN连接的带宽。例如,在基于会话的站点到站点虚拟专用网络(VPN)连接中,VPN流量被路由到两个站点(例如,站点A和B)之间的多个WAN连接。A multi-wide area network (WAN) site-to-site VPN router is a router that supports pooling the bandwidth of multiple interconnections (eg, WAN connections used to access one or more remote private networks). In some embodiments, each TCP/IP session is routed to only one WAN. In this configuration, a single TCP file transfer session can only utilize the bandwidth of one WAN connection on each endpoint. For example, in a session-based site-to-site virtual private network (VPN) connection, VPN traffic is routed to multiple WAN connections between two sites (eg, sites A and B).
在一个实施方案中,在WAN连接之间初始地形成M×N个隧道,其中M和N分别是站点A和站点B的WAN网络连接的数目。随后经由不同的隧道路由应用程序TCP/IP会话。然而,应注意,虽然基于会话的站点到站点VPN能够针对不同的会话利用不同的隧道,但是此类型的连接中的单个下载会话仅能够利用一个隧道。In one embodiment, M x N tunnels are initially formed between the WAN connections, where M and N are the number of WAN network connections for Site A and Site B, respectively. Application TCP/IP sessions are then routed via different tunnels. It should be noted, however, that while a session-based site-to-site VPN can utilize different tunnels for different sessions, a single download session in this type of connection can only utilize one tunnel.
当在两个路由器之间的数据会话中存在丢包或弃包时,可以存在用于恢复丢失包的不同方法。通常在接收路由器接收数据包并发送对应确认之前,发送器路由器重新发送丢弃或丢失的数据包。然而,这可以消耗带宽并且增加网络拥塞。更高网络拥塞可以引起更多弃包。因此,需要一种可以在发送装置不重新发送数据包的情况下恢复丢弃或丢失包的解决方案。When there is packet loss or packet discarding in a data session between two routers, there may be different methods for recovering the lost packets. The sender router resends dropped or lost packets, usually before the receiving router receives the packet and sends a corresponding acknowledgment. However, this can consume bandwidth and increase network congestion. Higher network congestion can cause more dropped packets. Therefore, there is a need for a solution that can recover dropped or lost packets without the sending device resending the packets.
发明内容Contents of the invention
本发明揭示用于重新产生通过聚合连接在第一通信路由器与第二通信路由器之间建立的数据会话的丢失数据包的方法和系统。当第一通信路由器通过聚合连接从第二通信路由器接收属于数据会话的数据包时,第一通信路由器将数据包传输到第一主机并且确定是否存在一个或多个丢失数据包。如果存在一个或多个丢失数据包,则第一通信路由器确定一个或多个丢失数据包的全局序列号(GSN)和每隧道序列号(PTSN)并且重新产生一个或多个丢失数据包的净负荷。随后将一个或多个新数据包传输到第一主机。一个或多个新数据包包括一个或多个丢失数据包的净负荷,并且分配有所述一个或多个丢失数据包的GSN和PTSN。The present invention discloses a method and system for regenerating lost data packets of a data session established between a first communications router and a second communications router over an aggregated connection. When the first communications router receives data packets belonging to a data session from the second communications router over the aggregation connection, the first communications router transmits the packets to the first host and determines whether there is one or more missing packets. If there are one or more missing packets, the first communication router determines the Global Sequence Number (GSN) and the Per Tunnel Sequence Number (PTSN) of the one or more missing packets and regenerates the net sequence number (PTSN) of the one or more missing packets. load. One or more new data packets are then transmitted to the first host. The one or more new data packets include the payload of the one or more missing data packets and are assigned the GSN and the PTSN of the one or more missing data packets.
根据本发明的一个实施例,基于同一数据会话的一个或多个前一数据包和/或同一数据会话的一个或多个下一数据包而重新产生一个或多个丢失数据包的净负荷。According to an embodiment of the invention, the payload of one or more lost data packets is regenerated based on one or more previous data packets of the same data session and/or one or more next data packets of the same data session.
根据本发明的一个实施例,通过计算一个或多个前一数据包和/或一个或多个下一数据包的净负荷的平均值来重新产生一个或多个丢失数据包的净负荷。According to one embodiment of the invention, the payload of the one or more missing data packets is regenerated by calculating an average of the payloads of one or more previous data packets and/or one or more next data packets.
根据本发明的一个实施例,至少部分基于一个或多个前一数据包和/或一个或多个下一数据包的净负荷的方差值和平均值来重新产生一个或多个丢失数据包的净负荷。使用一个或多个前一数据包和/或一个或多个下一数据包的净负荷的平均值和标准差的组合来计算丢失数据包的净负荷。According to one embodiment of the invention, the one or more lost data packets are regenerated based at least in part on the variance value and the average value of the payload of one or more previous data packets and/or one or more next data packets net load. The payload of the missing packet is calculated using a combination of the mean and standard deviation of the payload of the one or more previous packets and/or the one or more next packets.
根据本发明的一个实施例,通过执行音频数据库的查找来重新产生一个或多个丢失数据包的净负荷。或者,通过执行文本数据库的查找来重新产生一个或多个丢失数据包的净负荷。当对于丢失数据包的净负荷存在多于一个可能性时,第一通信路由器基于从历史数据产生的可能性而选择所述多于一个可能性中的一个。According to one embodiment of the invention, the payload of one or more lost data packets is regenerated by performing an audio database lookup. Alternatively, the payload of one or more lost packets may be regenerated by performing a text database lookup. When there is more than one possibility for the payload of the lost data packet, the first communication router selects one of the more than one possibilities based on the likelihood generated from historical data.
根据本发明的一个实施例,通过使用非线性插值、最近邻插值、双线性插值和双三次插值中的一个或多个来重新产生一个或多个丢失数据包的净负荷。According to one embodiment of the present invention, the payload of one or more lost data packets is regenerated by using one or more of non-linear interpolation, nearest neighbor interpolation, bilinear interpolation and bicubic interpolation.
根据本发明的一个实施例,计算一个或多个前一数据包和/或一个或多个下一数据包的变换系数的平均值。变换系数的平均值随后用作丢失数据包的第一变换系数。逆变换应用于第一变换系数,并且基于第一变换系数的逆变换而重新产生丢失数据包。According to one embodiment of the invention, an average value of the transform coefficients of one or more previous data packets and/or one or more next data packets is calculated. The average of the transform coefficients is then used as the first transform coefficient for the lost packet. An inverse transform is applied to the first transform coefficients, and lost packets are regenerated based on the inverse transform of the first transform coefficients.
根据本发明的一个实施例,使用一个或多个前一数据包和/或一个或多个下一数据包的净负荷创建回归分析模型,其中数据包的净负荷是因变量。随后根据回归分析模型确定近似函数。通过使用近似函数计算丢失数据包的净负荷来重新产生一个或多个丢失数据包的净负荷。回归分析模型的自变量可以是数据包的时间、GSN或数据包的时间和GSN的组合。According to one embodiment of the present invention, a regression analysis model is created using the payload of one or more previous data packets and/or one or more next data packets, wherein the payload of a data packet is the dependent variable. The approximation function is then determined based on the regression analysis model. Regenerates the payload of one or more lost packets by computing the payload of the lost packets using an approximation function. The independent variable of the regression analysis model can be the time of the data packet, the GSN or the combination of the time of the data packet and the GSN.
具体实施方式detailed description
以下说明仅提供优选的示例性实施例且并不意图限制本发明的范围、适用性或配置。实际上,优选的示例性实施例的以下说明将为本领域技术人员提供实施本发明的优选示例性实施例的有利描述。应理解,在不脱离如在所附权利要求书中阐述的本发明的精神和范围的情况下可以对元件的功能和布置进行各种改变。The following description provides preferred exemplary embodiments only and is not intended to limit the scope, applicability or configuration of the invention. Rather, the following description of the preferred exemplary embodiment will provide those skilled in the art with an enabling description for implementing the preferred exemplary embodiment of the invention. It being understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the invention as set forth in the appended claims.
在以下描述中给出具体细节以提供对实施例的透彻理解。然而,本领域技术人员应理解,可以在没有这些具体细节的情况下实践所述实施例。例如,可以框图示出电路以免以不必要的细节混淆实施例。在其它情况下,在没有不必要的细节的情况下示出熟知的电路、过程、算法、结构以及技术以便避免混淆实施例。In the following description specific details are given to provide a thorough understanding of the embodiments. However, it will be understood by those skilled in the art that the described embodiments may be practiced without these specific details. For example, circuits may be shown in block diagrams in order not to obscure the embodiments in unnecessary detail. In other instances, well-known circuits, procedures, algorithms, structures and techniques have been shown without unnecessary detail in order to avoid obscuring the embodiments.
同样,应注意,实施例可以描述为过程,过程描绘为流程图、流程图表、数据流图、结构图或方块图。尽管流程图可以将操作描述为连续过程,但许多操作可以并行或同时执行。另外,可以重新布置操作的顺序。当操作完成时,过程终止,但是过程可以具有不包含在图中的另外步骤。过程可以对应于方法、函数、程序、子例程、子程序等。当过程对应于函数时,其终止对应于函数返回到调用函数或主函数。Also, it should be noted that embodiments may be described as processes depicted as flowcharts, flow diagrams, data flow diagrams, structure diagrams, or block diagrams. Although a flowchart may describe operations as a sequential process, many operations can be performed in parallel or simultaneously. Additionally, the order of operations may be rearranged. The process terminates when the operations are complete, but the process may have additional steps not included in the figure. A procedure may correspond to a method, function, procedure, subroutine, subroutine, or the like. When a procedure corresponds to a function, its termination corresponds to the return of the function to the calling function or main function.
实施例或其各部分可以程序指令来实施,所述程序指令可在处理单元上操作以用于执行如本文中所描述的功能和操作。构成各种实施例的程序指令可以存储于存储媒体中。An embodiment, or portions thereof, may be implemented in program instructions operable on a processing unit for performing the functions and operations as described herein. Program instructions making up various embodiments may be stored in storage media.
构成各种实施例的程序指令可以存储于存储媒体中。此外,如本文所揭示,术语“存储媒体”可以表示用于存储数据的一个或多个装置,包含只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、随机存取存储器(RAM)、磁性RAM、磁芯存储器、软盘、软磁盘、硬盘、磁带、CD-ROM、快闪存储器装置、存储卡和/或用于存储信息的其它机器可读媒体。术语“机器可读媒体”包含,但不限于,便携式或固定存储装置、光学存储媒体、磁性媒体、存储器芯片或盒式磁盘、无线信道以及能够存储、容纳或载送指令和/或数据的各种其它媒体。机器可读媒体可以通过虚拟化来实现,且可以是虚拟机器可读媒体,包含在基于云的实例中的虚拟机器可读媒体。Program instructions making up various embodiments may be stored in storage media. Additionally, as disclosed herein, the term "storage medium" may refer to one or more devices for storing data, including read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), random access memory (RAM), magnetic RAM, magnetic core memory, floppy disk, floppy disk, hard disk, magnetic tape, CD-ROM, flash memory device, memory card, and/or other machine-readable media. The term "machine-readable medium" includes, but is not limited to, portable or fixed storage devices, optical storage media, magnetic media, memory chips or cartridges, wireless channels, and any other device capable of storing, containing, or carrying instructions and/or data. other media. The machine-readable medium can be implemented through virtualization and can be a virtual machine-readable medium, including a virtual machine-readable medium in a cloud-based instance.
如本文中所使用的术语“计算机可读媒体、主存储器或辅助存储装置”是指参与将指令提供到处理单元以用于执行的任何媒体。计算机可读媒体仅是机器可读媒体的一个实例,所述机器可读媒体可以载送指令以用于实施本文中所描述的方法和/或技术中的任一个。此媒体可以采用许多形式,包含但不限于非易失性媒体、易失性媒体和传输媒体。非易失性媒体包含例如光盘或磁盘。易失性媒体包含动态存储器。传输媒体包含同轴电缆、铜线以及光纤。传输媒体还可以采用声波或光波的形式,例如在无线电波和红外线数据通信期间产生的声波或光波。The term "computer-readable medium, main memory, or secondary storage" as used herein refers to any medium that participates in providing instructions to a processing unit for execution. A computer-readable medium is but one example of a machine-readable medium that may carry instructions for implementing any of the methods and/or techniques described herein. This medium may take many forms, including but not limited to non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical or magnetic disks. Volatile media includes dynamic memory. Transmission media include coaxial cables, copper wire, and fiber optics. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infrared data communications.
易失性存储装置可以用于在通过处理单元执行指令期间存储临时变量或其它中间信息。非易失性存储装置或静态存储装置可以用于存储用于处理器的静态信息和指令,以及各种系统配置参数。Volatile storage may be used to store temporary variables or other intermediate information during execution of instructions by the processing unit. Non-volatile storage or static storage can be used to store static information and instructions for the processor, as well as various system configuration parameters.
存储媒体可以包含多个软件模块,所述软件模块可以实施为通过处理单元使用任何合适的计算机指令类型来执行的软件代码。软件代码可以作为一系列指令或命令、或作为程序存储在存储媒体中。The storage medium may contain a number of software modules, which may be implemented as software code executed by a processing unit using any suitable type of computer instructions. The software codes may be stored in the storage medium as a series of instructions or commands, or as a program.
各种形式的计算机可读媒体可以涉及将一个或多个指令的一个或多个序列载送到处理器以供执行。例如,指令可以首先承载在远程计算机的磁盘上。Various forms of computer readable media may be involved in carrying one or more sequences of one or more instructions to a processor for execution. For example, the instructions may first be carried on a disk of the remote computer.
替代地,远程计算机可以将所述指令加载到其动态存储器中,且将指令发送到运行一个或多个指令的一个或多个序列的系统。Alternatively, the remote computer may load the instructions into its dynamic memory and send the instructions to a system that executes one or more sequences of one or more instructions.
处理单元可以是微处理器、微控制器、数字信号处理器(DSP)、那些装置的任何组合、或被配置成处理信息的任何其它电路。The processing unit may be a microprocessor, microcontroller, digital signal processor (DSP), any combination of those devices, or any other circuitry configured to process information.
处理单元执行程序指令或代码段以用于实施本发明的实施例。此外,实施例可以由硬件、软件、固件、中间件、微码、硬件描述语言或其任何组合来实施。当在软件、固件、中间件或微码中实施时,用于执行必要任务的程序指令可以存储于计算机可读存储媒体中。处理单元可以通过虚拟化来实现,且可以是虚拟处理单元,包含在基于云的实例中的虚拟处理单元。The processing unit executes program instructions or code segments for implementing embodiments of the present invention. Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program instructions to perform the necessary tasks may be stored in a computer readable storage medium. The processing unit may be implemented by virtualization and may be a virtual processing unit, including a virtual processing unit in a cloud-based instance.
本发明的实施例涉及使用计算机系统来实施本文所描述的技术。在实施例中,本发明的处理单元可以驻留在计算机平台等机器上。根据本发明的一个实施例,响应于处理单元执行易失性存储器中所包含的一个或多个指令的一个或多个序列,本文中所描述的技术由计算机系统执行。此类指令可以从另一计算机可读媒体读取到易失性存储器中。对易失性存储器中所包含的指令序列的执行使得处理单元执行本文中所描述的过程步骤。在替代实施例中,硬连线电路可以用于取代或结合软件指令来实施本发明。因此,本发明的实施例不限于硬件电路以及软件的任何具体组合。Embodiments of the invention involve the use of computer systems to implement the techniques described herein. In an embodiment, the processing unit of the present invention may reside on a machine such as a computer platform. According to one embodiment of the invention, the techniques described herein are performed by a computer system in response to a processing unit executing one or more sequences of one or more instructions contained in volatile memory. Such instructions can be read into volatile memory from another computer readable medium. Execution of the sequences of instructions contained in the volatile memory causes the processing unit to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
程序指令等代码段可以表示步骤、函数、子程序、程序、例程、子例程、模块、软件包、类或者指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容而耦合到另一代码段或硬件电路。信息、自变量、参数、数据等可以经由包含存储器共享、消息传递、令牌传递、网络传输等任何合适的方式传递、转发或传输。A code segment such as a program instruction may represent a step, function, subroutine, program, routine, subroutine, module, package, class, or any combination of instructions, data structures, or program statements. A code segment can be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission and the like.
替代地,硬接线电路可以用于取代或结合软件指令以实施符合本发明的原理的过程。因此,符合本发明的原理的实施方案不限于硬件电路和软件的任何特定组合。Alternatively, hard-wired circuitry may be used in place of or in combination with software instructions to carry out processes consistent with the principles of the invention. Thus, implementations consistent with the principles of the invention are not limited to any specific combination of hardware circuitry and software.
可以由节点提供的网络接口是以太网接口、帧中继接口、光纤接口、电缆接口、DSL接口、令牌环接口、串行总线接口、通用串行总线(USB)接口、火线接口、外围组件互连(PCI)接口等。Network interfaces that may be provided by a node are Ethernet interfaces, frame relay interfaces, fiber optic interfaces, cable interfaces, DSL interfaces, token ring interfaces, serial bus interfaces, universal serial bus (USB) interfaces, firewire interfaces, peripheral components Interconnect (PCI) interface, etc.
网络接口可以通过独立的电子组件实施或可以与其它电子组件整合。取决于配置,网络接口可以不具有网络连接或具有至少一个网络连接。网络接口可以是以太网接口、帧中继接口、光纤接口、电缆接口、数字订户线(DSL)接口、令牌环接口、串行总线接口、通用串行总线(USB)接口、火线接口、外围组件互连(PCI)接口、蜂窝网络接口等。The network interface can be implemented by a separate electronic component or can be integrated with other electronic components. Depending on the configuration, a network interface may have no network connections or at least one network connection. The network interface can be an Ethernet interface, a frame relay interface, a fiber optic interface, a cable interface, a digital subscriber line (DSL) interface, a token ring interface, a serial bus interface, a universal serial bus (USB) interface, a fire wire interface, a peripheral Component Interconnect (PCI) interfaces, cellular network interfaces, etc.
网络接口可以连接到有线或无线接入网络。接入网络可以载送一个或多个网络协议数据。有线接入网络可以使用以太网、光纤、电缆、DSL、帧中继、令牌环、串行总线、USB、火线、PCI或可以传递信息的任何材料来实施。无线接入网络可以使用红外线、高速包接入(HSPA)、HSPA+、长期演进(LTE)、WiMax、通用分组无线业务(GPRS)、全球移动通信系统(GSM)、GSM演进增强数据速率(EDGE)、码分多址(CDMA)、WiFi、CDMA2000、宽带CDMA(WCDMA)、时分CDMA(TD-SCDMA)、蓝牙、WiBRO、演进数据优化(EV-DO);数字增强型无绳通信(DECT);数字AMPS(IS-136/TDMA);集成数字增强型(iDEN)或任何其它无线技术来实施。例如,网络接口可以用作局域网(LAN)接口或广域网(WAN)接口。The network interface can be connected to a wired or wireless access network. The access network may carry one or more network protocol data. A wired access network can be implemented using Ethernet, fiber optics, cable, DSL, Frame Relay, Token Ring, serial bus, USB, Firewire, PCI, or any material that can convey information. Radio access networks can use infrared, High Speed Packet Access (HSPA), HSPA+, Long Term Evolution (LTE), WiMax, General Packet Radio Service (GPRS), Global System for Mobile Communications (GSM), Enhanced Data Rates for GSM Evolution (EDGE) , Code Division Multiple Access (CDMA), WiFi, CDMA2000, Wideband CDMA (WCDMA), Time Division CDMA (TD-SCDMA), Bluetooth, WiBRO, Evolution Data Optimized (EV-DO); Digital Enhanced Cordless Communications (DECT); Digital AMPS (IS-136/TDMA); Integrated Digital Enhanced (iDEN) or any other wireless technology to implement. For example, a network interface may function as a local area network (LAN) interface or a wide area network (WAN) interface.
实施例或其各部分可以计算机数据信号来实施,所述计算机数据信号可以采用用于经由传输媒体进行通信的任何合适形式,使得所述计算机数据信号是可读的以用于通过功能装置(例如,处理单元)来执行,从而执行本文中所描述的操作。计算机数据信号可以包含能够经由传输媒体传播的任何二进制数字电子信号,所述传输媒体例如电子网络信道、光纤、空气、电磁媒体、射频(RF)链路等,且因此数据信号可以采用电信号、光信号、射频或其它无线通信信号等形式。在某些实施例中,代码段可以经由计算机网络下载,所述计算机网络例如因特网、企业内部网、LAN、城域网(MAN)、广域网(WAN)、公共交换电话网络(PSTN)、卫星通信系统、电缆传输系统和/或其类似者。An embodiment or parts thereof may be implemented in a computer data signal which may take any suitable form for communication via a transmission medium such that the computer data signal is readable for use by a functional means such as , processing unit) to perform the operations described herein. A computer data signal may comprise any binary digital electronic signal capable of traveling through transmission media such as electronic network channels, fiber optics, air, electromagnetic media, radio frequency (RF) links, etc., and thus a data signal may take the form of an electrical signal, In the form of optical signals, radio frequency or other wireless communication signals. In some embodiments, the code segments may be downloaded via a computer network such as the Internet, Intranet, LAN, Metropolitan Area Network (MAN), Wide Area Network (WAN), Public Switched Telephone Network (PSTN), satellite communication systems, cable transmission systems and/or the like.
图1A说明根据实施例调适的系统100,所述系统被配置成通过调节在数据传送会话期间的隧道带宽加权模式来优化结合的多个可变带宽连接的吞吐量。系统100包含多个站点102和104,所述站点各自包括至少一个网络节点。网络节点可以称为通信路由器。然而,本发明的范围不限于通信路由器,使得可以在网关、路由器、服务器或任何其它类型的网络节点处执行本发明。为简单起见,图1A说明站点102和104分别包括通信路由器106和108。通信路由器106和108可以实施为支持集中多个因特网连接的带宽的多WAN路由器。通信路由器106和108通过网络110连接。网络110可以包括FAN、MAN、WAN、无线网络、PSTN、因特网、企业内部网、外联网等。FIG. 1A illustrates a system 100 adapted according to an embodiment, the system being configured to optimize the throughput of multiple variable bandwidth connections combined by adjusting tunnel bandwidth weighting patterns during a data transfer session. System 100 includes a plurality of sites 102 and 104, each of which includes at least one network node. A network node may be referred to as a communication router. However, the scope of the invention is not limited to communication routers, so that the invention may be implemented at a gateway, router, server or any other type of network node. For simplicity, FIG. 1A illustrates that sites 102 and 104 include communication routers 106 and 108, respectively. Communication routers 106 and 108 may be implemented as multi-WAN routers that support pooling the bandwidth of multiple Internet connections. Communication routers 106 and 108 are connected by network 110 . Network 110 may include a FAN, MAN, WAN, wireless network, PSTN, Internet, intranet, extranet, and the like.
站点102和路由器106可以包括M个连接112,且站点104和路由器108可以包括N个连接114。连接112和114是用于在站点102与104之间的网络110内传送信息的数据连接。在所说明的实施例中,M等于3且N等于2;然而,这些值可以根据所需的路由器和配置改变。连接112和114可以具有类似的或不同的带宽能力。此外,连接112和114可以包括不同类型的WAN连接,例如WiFi、电缆、DSL、T1、3G、4G、卫星连接等。还应注意,站点102和站点104可以被认为是发送器或接收器两者,并且关于任一站点的功能性的论述可以在另一站点上实施。换句话说,系统100可以实施为对称网络。Site 102 and router 106 may include M connections 112 and site 104 and router 108 may include N connections 114 . Connections 112 and 114 are data connections used to communicate information within network 110 between sites 102 and 104 . In the illustrated embodiment, M is equal to 3 and N is equal to 2; however, these values may vary depending on the desired router and configuration. Connections 112 and 114 may have similar or different bandwidth capabilities. Additionally, connections 112 and 114 may include different types of WAN connections, such as WiFi, cable, DSL, T1, 3G, 4G, satellite connections, and the like. It should also be noted that station 102 and station 104 may be considered both transmitters or receivers, and discussions regarding the functionality of either station may be implemented at the other station. In other words, system 100 may be implemented as a symmetric network.
图1B说明根据本发明的一个实施例的网络环境。在通信路由器106与通信路由器108之间建立隧道103A、103B和103C。可以结合隧道103A、103B和103C以形成聚合连接。Figure 1B illustrates a network environment according to one embodiment of the present invention. Tunnels 103A, 103B, and 103C are established between communication router 106 and communication router 108 . Tunnels 103A, 103B, and 103C may be combined to form an aggregated connection.
根据一个实施例,通信路由器106和108可以具有多个网络接口。通信路由器106经由其多个网络接口中的一个或多个与通信路由器108的一个或多个网络接口建立隧道103A、103B和103C。According to one embodiment, communications routers 106 and 108 may have multiple network interfaces. Communications router 106 establishes tunnels 103A, 103B, and 103C with one or more network interfaces of communications router 108 via one or more of its plurality of network interfaces.
通信装置106和108可以充当网关、路由器、交换器、接入点、集线器、网桥等。Communications devices 106 and 108 may act as gateways, routers, switches, access points, hubs, bridges, and the like.
图1C说明根据实施例调适的系统100,所述系统被配置成优化结合的多个可变带宽连接的吞吐量。系统100类似于系统101,除M×N个虚拟隧道116之外。当例如通过实施结合的站点到站点VPN连接在站点102与104之间建立结合的连接时,可以创建M×N个隧道116。隧道116对应于站点102的网络连接和站点104的网络连接的独特排列。可以在通信路由器106与108之间形成聚合连接。隧道116可以是虚拟隧道。Figure 1C illustrates a system 100 adapted in accordance with an embodiment, the system being configured to optimize the throughput of a combined plurality of variable bandwidth connections. System 100 is similar to system 101 except that there are M×N virtual tunnels 116 . M×N tunnels 116 may be created when a bonded connection is established between sites 102 and 104, eg, by implementing a bonded site-to-site VPN connection. Tunnel 116 corresponds to a unique arrangement of site 102's network connections and site 104's network connections. An aggregated connection may be formed between communications routers 106 and 108 . Tunnel 116 may be a virtual tunnel.
多个建立的隧道116可以集中、组合或结合在一起以形成一个聚合连接。本领域技术人员将了解,存在用于集中、组合或结合多个建立的隧道以形成一个集中式隧道的多种方法。使用聚合连接的会话或应用将所述聚合连接视为一个隧道。聚合连接可以是端到端连接、虚拟专用网络连接或面向无连接的连接。例如,聚合连接可以是TCP连接或UDP连接。在另一实例中,聚合连接是多个隧道的集中,并且每个隧道连接在通信路由器106与通信路由器108之间。在另一实例中,聚合连接可以是VPN隧道,包括多个建立的隧道,并且每个建立的隧道连接在通信路由器106与通信路由器108之间。Multiple established tunnels 116 may be pooled, combined, or bonded together to form an aggregated connection. Those skilled in the art will appreciate that there are various methods for centralizing, combining or joining multiple established tunnels to form one centralized tunnel. A session or application using an aggregated connection sees the aggregated connection as a tunnel. An aggregated connection can be a peer-to-peer connection, a virtual private network connection, or a connectionless-oriented connection. For example, the aggregate connection can be a TCP connection or a UDP connection. In another example, the aggregate connection is a collection of multiple tunnels, and each tunnel connects between communications router 106 and communications router 108 . In another example, the aggregated connection may be a VPN tunnel, including multiple established tunnels, and each established tunnel connection between communications router 106 and communications router 108 .
图2A示出系统100的操作的高级流程图,其描绘了用于增加结合的连接的吞吐量的方法200。应了解,图2中提供的具体功能、功能的顺序等意图是根据本发明的概念的示例性操作。因此,本文中的概念可以用与所说明的实施例的方式不同的方式来实施。FIG. 2A shows a high-level flowchart of the operation of system 100 depicting a method 200 for increasing the throughput of a bonded connection. It should be appreciated that the specific functions, order of functions, etc., presented in FIG. 2 are intended to be exemplary operations in accordance with the concepts of the invention. Thus, the concepts herein may be implemented otherwise than in the illustrated embodiments.
在所说明的实施例的块201处,当例如通过实施结合的站点到站点VPN连接而在路由器102与104之间建立结合的连接时,可以创建M×N个虚拟隧道116,如在图1C中所说明。虚拟隧道116对应于站点102的网络连接和站点104的网络连接的独特排列。At block 201 of the illustrated embodiment, when a bonded connection is established between routers 102 and 104, for example by implementing a bonded site-to-site VPN connection, M x N virtual tunnels 116 may be created, as shown in FIG. 1C described in. Virtual tunnel 116 corresponds to a unique arrangement of site 102's network connections and site 104's network connections.
在所说明的实施例的块202处,确定和/或分配隧道的默认权重。为了确定默认权重,实施例在站点102与104之间交换连接112和114的上行和下行带宽数据。使用此带宽数据,可以根据以下来计算默认权重:假设站点102的连接1至m的下行带宽是dl、d2、……dm,并且站点104的连接1至n的上行带宽是ur、U2、……Un;站点102的连接X与站点104的连接Y之间的隧道的默认权重可以定义为DW(x,y),其中DW(x,y)=dx.dy。At block 202 of the illustrated embodiment, a default weight for the tunnel is determined and/or assigned. To determine the default weights, an embodiment exchanges upstream and downstream bandwidth data for connections 112 and 114 between sites 102 and 104 . Using this bandwidth data, default weights can be calculated according to the following: Assume that the downstream bandwidths of connections 1 to m at site 102 are dl, d2, ... dm, and the upstream bandwidths of connections 1 to n at site 104 are ur, U2, ... ... Un; The default weight of a tunnel between connection X of site 102 and connection Y of site 104 may be defined as DW(x,y), where DW(x,y)=dx.dy.
使用以上方法来计算默认权重,如果连接112-1到112-3是具有10M/6M、8M/4M和6M/6M的相应上行带宽/下行带宽的多WAN路由器的WAN连接,且连接114-1到114-2是具有7M/5M和9M/3M的相应上行带宽/下行带宽的多WAN路由器的WAN连接,则每个隧道的相应默认权重将是如下:Using the above method to calculate the default weight, if connections 112-1 to 112-3 are WAN connections of multi-WAN routers with corresponding upstream/downstream bandwidths of 10M/6M, 8M/4M, and 6M/6M, and connection 114-1 To 114-2 is the WAN connection of a multi-WAN router with corresponding uplink bandwidth/downlink bandwidth of 7M/5M and 9M/3M, then the corresponding default weight of each tunnel will be as follows:
应注意,可构想计算默认权重的其它方式,并且上文仅是本发明的实施例的实施方案的实例。应注意,可以使用许多不同的加权模式来定义隧道的初始带宽。例如,可能希望仅使用接收站点的下行容量和发送站点的上行容量对一个方向上的隧道加权。用来表征在建立结合的连接时的隧道容量的任何加权方案可以用于本发明的目的。It should be noted that other ways of calculating default weights are contemplated, and the above are merely examples of implementations of embodiments of the invention. It should be noted that many different weighting schemes can be used to define the initial bandwidth of the tunnel. For example, it may be desirable to weight a tunnel in one direction using only the downlink capacity of the receiving site and the uplink capacity of the sending site. Any weighting scheme used to characterize the tunnel capacity when establishing a bonded connection can be used for the purpose of the present invention.
当根据实施例将包从站点102路由到站点104时,将以根据有效权重EW(x,y)的比率将包分布到隧道。初始地,实施例的有效权重设定成等于默认权重,EW(x,y)=DW(x,y),并且如果隧道116的带宽从初始设定保持不变,则所述有效权重对于包分布是最佳的。然而,如果用户在具有存在弃包情况的一个或多个隧道的TCP会话中正经由结合的网络连接下载文件,则所述会话的整体吞吐量将急剧地下降。这部分地是因为弃包将继续引起TCP重新传输,并且TCP的流量控制将保持较低吞吐量,即使无弃包的隧道未被全部占用。When routing packets from site 102 to site 104 according to an embodiment, the packets will be distributed to the tunnels at a rate according to the effective weight EW(x,y). Initially, the effective weight of an embodiment is set equal to the default weight, EW(x,y)=DW(x,y), and if the bandwidth of the tunnel 116 remains unchanged from the initial setting, the effective weight is distribution is optimal. However, if a user is downloading a file via a bonded network connection in a TCP session with one or more tunnels in which dropped packets exist, the overall throughput of the session will drop dramatically. This is in part because discards will continue to cause TCP retransmissions, and TCP's flow control will keep throughput low even if the discard-free tunnel is not fully occupied.
提高吞吐量的一种有效方式可以是避免此类弃包。为了这样做,在所说明的实施例的块203处,本发明的实施例对隧道正经历丢包率的提高或降低进行辨别。在块204处,实施例进一步用于修改正经历或已经经历丢包率变化的隧道的有效权重。可以连续地监控或基于特定时间周期监控丢包率信息。一旦确定隧道正经历不可接受的丢包率(块204-1),在块204-2处,所说明的实施例就减小隧道的有效权重。在一些实施例中,“不可接受的”可能意味着丢包率是非零数量,而其它实施例可以确定不可接受的比率是除预定义阈值以外的任何比率。实施例以逐步的方式、以连续的方式、以与丢包率的提高成一倍比例地降低等来实施这些降低。当以逐渐的方式进行降低时,实施例可以继续监控隧道以便优化所实施的降低的量。An effective way to improve throughput can be to avoid such discarded packets. To do so, at block 203 of the illustrated embodiment, an embodiment of the invention recognizes that the tunnel is experiencing an increase or decrease in packet loss. At block 204, an embodiment further operates to modify the effective weight of tunnels that are experiencing or have experienced a change in packet loss rate. Packet loss rate information may be monitored continuously or based on a specific time period. Upon determining that the tunnel is experiencing an unacceptable rate of packet loss (block 204-1), at block 204-2, the illustrated embodiment reduces the tunnel's effective weight. In some embodiments, "unacceptable" may mean that the packet loss rate is a non-zero number, while other embodiments may determine that the unacceptable rate is any rate other than a predefined threshold. Embodiments implement these reductions in a step-by-step manner, in a continuous manner, in a reduction proportional to the doubling of the increase in packet loss rate, and so on. When lowering is done in a gradual manner, an embodiment may continue to monitor the tunnel in order to optimize the amount of lowering implemented.
可以通过经由每个隧道从路由器106或路由器108发送心跳包来建立或监控隧道116。在一些实施例中,当接收终端在一段时间未能从隧道接收到心跳包时,所述接收终端将会将所述隧道看作下行并且所述隧道将不会用于路由流量。如果心跳包再次开始被接收,则所述隧道可以重新建立并连同其它隧道一起加权。由此,在所有包在隧道中被丢弃并且所述隧道的有效权重还原为零的情况下,实施例可以利用心跳包来监控并重新建立连接。Tunnels 116 may be established or monitored by sending heartbeat packets from router 106 or router 108 via each tunnel. In some embodiments, when a receiving terminal fails to receive a heartbeat packet from a tunnel for a period of time, the receiving terminal will regard the tunnel as downlink and the tunnel will not be used for routing traffic. If heartbeat packets start being received again, the tunnel can be re-established and weighted along with the other tunnels. Thus, embodiments may utilize heartbeat packets to monitor and re-establish a connection in the event that all packets are dropped in the tunnel and the tunnel's effective weight reverts to zero.
此外,当隧道恢复其相应带宽的全部或部分时,例如,确定丢包率降低(块204-3)时,所说明的实施例用于提高此类隧道的有效权重(块204-4),以便充分或更充分地利用所述带宽。一些实施例使用预定步长提高隧道的有效权重,直到恢复精确的有效权重。其它实施例与最新测量的带宽成比例地提高有效权重,最新测量的带宽可以对应于最新测量的丢包率。此外,实施例可以基于预定线性或指数比例提高隧道的有效权重。In addition, the illustrated embodiments provide for increasing the effective weight of such tunnels (block 204-4) when such tunnels restore all or part of their corresponding bandwidth, e.g., when the packet loss rate is determined to be reduced (block 204-3), In order to fully or more fully utilize the bandwidth. Some embodiments increase the effective weight of the tunnel using a predetermined step size until the exact effective weight is restored. Other embodiments increase the effective weight in proportion to the most recent measured bandwidth, which may correspond to the most recently measured packet loss rate. Furthermore, embodiments may increase the effective weight of a tunnel based on a predetermined linear or exponential ratio.
在调节隧道的有效权重之后,或在确定无需调节之后,在所说明的实施例的块205处更新系统的加权模式。此更新可以包括存储任何处理后的信息、在进一步处理中使用此类信息、使得系统采取措施等。例如,关于块205进行的处理可以用于在一段时间内对加权模式取平均值,以便减少与高度瞬态异常相关联的误差。此外,可以在系统100上使用更新后的信息以修改数据传送会话的包分布,如关于图2B所论述。系统100可以在整个数据传送会话中连续地或周期性地继续实施步骤203到205。After adjusting the effective weights of the tunnels, or after determining that adjustments are not needed, the weighting scheme of the system is updated at block 205 of the illustrated embodiment. This updating may include storing any processed information, using such information in further processing, causing the system to take action, etc. For example, processing performed with respect to block 205 may be used to average the weighting pattern over a period of time in order to reduce errors associated with highly transient anomalies. Furthermore, the updated information can be used on the system 100 to modify the packet distribution of the data transfer session, as discussed with respect to FIG. 2B. System 100 may continue to implement steps 203 through 205 continuously or periodically throughout the data transfer session.
图2B说明其中在实施加权方法200之后至少部分基于隧道的修改后权重分布包的实施例。具体来说,所说明的实施例的块206用于根据通过方法200的操作确定的加权方案在隧道上分布包。在一些实施例中,此分布将在整个数据传送会话中改变,并且因此图2B的步骤被示为重复的。一些实施例在每次在块205处更新系统时改变包分布。此外,块205可以使得响应于特定丢弃率变化阈值等而周期性地实施改变。应了解,通过方法200的操作确定加权以及在块206处将所确定加权应用到包分布可以具有不同的周期性。例如,方法200可用于使用相对较短的迭代循环来提供加权模式信息的更新,而包的分布使用较长的迭代循环基于此类加权模式信息而变化。FIG. 2B illustrates an embodiment in which modified weight distribution packets are based at least in part on tunneling after weighting method 200 is implemented. Specifically, block 206 of the illustrated embodiment serves to distribute packets over the tunnel according to a weighting scheme determined through the operations of method 200 . In some embodiments, this distribution will change throughout the data transfer session, and thus the steps of Figure 2B are shown as being repeated. Some embodiments change the package distribution each time the system is updated at block 205 . Furthermore, block 205 may cause changes to be implemented periodically in response to a certain drop rate change threshold or the like. It should be appreciated that the determination of weights by the operations of method 200 and the application of the determined weights to the packet distribution at block 206 may have different periodicities. For example, method 200 may be used to provide updates of weighted pattern information using relatively short iterative loops, while the distribution of packets is changed based on such weighted pattern information using longer iterative loops.
为了监控各个隧道116的带宽,本发明的一些实施例用各种信息封装每个所传输的IP包。图3说明示出可以封装在所传输IP包中的信息300的类型的实例实施例。版本字段302可以含有关于所利用的协议版本的信息且协议类型字段303可以含有净负荷包的协议类型。一般来说,此字段的值将对应于包的以太网协议类型。然而,另外的值可以在其它文档中定义。隧道ID字段304可以是32位字段并且可以含有用以识别IP包的当前隧道的标识符。高级加密标准(AES)初始化向量字段306可以是32位字段并且可以含有AES加密的初始化向量。全局序列号字段308可以是32位字段并且可以含有序列号,所述序列号用来在用于各个会话的包中的每个包已经从它们的相应隧道出现时将所述包重新排序为适当的顺序。每隧道序列号字段310可以是32位字段并且可以表示分配给被路由到具体隧道的每个包的序列号。AES加密后的净负荷字段312可以用于传送IP包的净负荷。AES加密可以适用于净负荷的较高安全性,以便防止第三方攻击。To monitor the bandwidth of each tunnel 116, some embodiments of the invention encapsulate each transmitted IP packet with various information. FIG. 3 illustrates an example embodiment showing the type of information 300 that may be encapsulated in transmitted IP packets. Version field 302 may contain information about the protocol version utilized and protocol type field 303 may contain the protocol type of the payload packet. Generally, the value of this field will correspond to the Ethernet protocol type of the packet. However, additional values may be defined in other documents. Tunnel ID field 304 may be a 32-bit field and may contain an identifier to identify the current tunnel of the IP packet. The Advanced Encryption Standard (AES) initialization vector field 306 may be a 32-bit field and may contain an AES encrypted initialization vector. The global sequence number field 308 may be a 32-bit field and may contain a sequence number that is used to reorder each of the packets for the various sessions as they have emerged from their respective tunnels to the appropriate Order. The per-tunnel sequence number field 310 may be a 32-bit field and may represent a sequence number assigned to each packet routed to a particular tunnel. The AES encrypted payload field 312 may be used to transmit the payload of the IP packet. AES encryption can be applied for higher security of the payload in order to prevent third-party attacks.
上文所论述的每隧道序列号可以用于监控隧道中的弃包。在一个实施例中,接收终端上的路由器通过监控接收到的包的每隧道序列号来计算每f秒每个隧道的丢包率DR(x,y)。DR(x,y)可以表征为在周期f内错过的序列号除以序列号增加量。周期f的长度可以改变,并且在一个实施例中,f等于5秒。The per-tunnel sequence numbers discussed above can be used to monitor discarded packets in the tunnel. In one embodiment, the router on the receiving terminal calculates the packet loss rate DR(x, y) of each tunnel per f seconds by monitoring the per-tunnel sequence numbers of received packets. DR(x,y) can be characterized as the sequence number missed in period f divided by the sequence number increment. The length of period f can vary, and in one embodiment f is equal to 5 seconds.
其它方法还可以用于监控弃包,例如:发送器可以周期性地通知接收终端其已发送的包的数目;发送器在每一恒定时间周期将心跳包发送到接收终端;以及通过监控心跳包的丢弃率通过从物理接口/装置/层等获取丢弃率图,接收终端可以估计总体丢弃率。Other methods can also be used to monitor discarded packets, for example: the sender can periodically notify the receiving terminal of the number of packets it has sent; the sender sends a heartbeat packet to the receiving terminal every constant time period; and by monitoring the heartbeat packet The drop rate By obtaining the drop rate map from the physical interface/device/layer etc., the receiving terminal can estimate the overall drop rate.
接收终端可以将特定隧道的丢弃率、有效权重或其它带宽指示反馈到发送路由器。当发送器接收到关于丢包的信息时,一些实施例将隧道的有效权重EW(x,y)减小EW(x,y)·DR(x,y)。可以使用其它度量来修改隧道的有效权重。在一些实施例中,发送器可以接收反馈,并且有效权重可以降低大于或小于丢包率的数目。可以根据通信系统的具体需要来配置此类变化。以上实例表示尝试将隧道的有效权重降低至防止进一步弃包,同时最大化隧道的可用带宽量的权重的度量。发现此平衡的任何度量可以是优选的。The receiving terminal may feed back to the sending router the drop rate, effective weight, or other bandwidth indication for a particular tunnel. When the sender receives information about packet loss, some embodiments reduce the tunnel's effective weight EW(x,y) by EW(x,y)·DR(x,y). Other metrics may be used to modify the effective weight of the tunnel. In some embodiments, the sender may receive feedback and the effective weight may be reduced by an amount greater or less than the packet loss rate. Such changes may be configured according to the specific needs of the communication system. The above example represents a metric that attempts to reduce the effective weight of the tunnel to a weight that prevents further packet drops, while maximizing the amount of available bandwidth for the tunnel. Any metric that finds this balance may be preferred.
图4A说明可以封装在反馈包中的信息400的类型的实例实施例,将所述反馈包发送到传输路由器,以便报告丢包率或在接收终端路由器处接收到的其它带宽相关数据。类型字段402可以包含关于将包含在数据-1字段404和数据-2字段406中的数据的类型的数据。数据-1字段404和数据-2字段406可以包含可以用于帮助路由器确定关于隧道数目、隧道带宽、隧道中的弃包数等的隧道信息的任何信息。在图4B的图表中示出数据字段404和406中的类型字段402的可能值的实例。FIG. 4A illustrates an example embodiment of the type of information 400 that may be encapsulated in a feedback packet sent to a transmitting router to report packet loss rates or other bandwidth-related data received at a receiving terminal router. Type field 402 may contain data regarding the type of data to be contained in data-1 field 404 and data-2 field 406 . Data-1 field 404 and Data-2 field 406 may contain any information that may be used to help the router determine tunnel information regarding the number of tunnels, tunnel bandwidth, number of dropped packets in the tunnel, and the like. An example of possible values for type field 402 in data fields 404 and 406 is shown in the diagram of FIG. 4B.
封装在例如图3和图4中所示的所传输IP包中的信息还可以用于包缓存和重新排序。因为每个隧道的时延可能不同,所以当同一TCP会话的两个连续包通过结合的VPN隧道发送到VPN对等装置时,所述两个连续包不按顺序到达,因为所述两个连续包经由两个不同隧道路由。如果TCP会话从VPN接收无序包,则TCP会话将由于TCP重新传输而减慢。因此,在较慢包到达之前或在已经过到期时间之前,接收终端应缓存太早出现的包。通过此缓存,在到期时间之前出现的迟延包将按顺序转发到目标装置。此缓存有助于优化端对端吞吐量。Information encapsulated in transmitted IP packets such as those shown in Figures 3 and 4 can also be used for packet caching and reordering. Because the latency of each tunnel may be different, when two consecutive packets of the same TCP session are sent to a VPN peer through a joined VPN tunnel, the two consecutive packets arrive out of order because the two consecutive Packets are routed via two different tunnels. If a TCP session receives out-of-order packets from a VPN, the TCP session will slow down due to TCP retransmissions. Therefore, the receiving terminal should buffer packets that occur too early until slower packets arrive or until the expiration time has passed. With this cache, deferred packets that occur before the expiration time are forwarded in order to the destination device. This cache helps optimize end-to-end throughput.
应注意,时常在VPN连接的上下文中论述本文中所描述的实施例。呈现这些论述,以便示出结合的连接的实例实施例。在本文的权利要求中描述的发明性概念不限于此连接。实际上,可以通过本发明的实施例来实施其中可以获得和交换足够数据,以便动态地监控多个通信路径的带宽的任何连接,所述带宽用于数据传送会话。It should be noted that the embodiments described herein are often discussed in the context of a VPN connection. These discussions are presented so as to illustrate example embodiments of combined connections. The inventive concepts described in the claims herein are not limited to this connection. Indeed, any connection in which sufficient data can be obtained and exchanged to dynamically monitor the bandwidth of multiple communication paths for a data transfer session can be implemented by embodiments of the present invention.
如上文所论述,每个包可以分配有两个不同序列号,即全局序列号(GSN)和每隧道序列号(PTSN)。这些数字可以用于有助于包缓存和重新排序操作。在将包传递到上层之后,接收终端可以更新下一预期的每隧道序列号(NE-PTSN)和下一预期的全局序列号(NE-GSN)。As discussed above, each packet may be assigned two different sequence numbers, a global sequence number (GSN) and a per-tunnel sequence number (PTSN). These numbers can be used to facilitate packet caching and reordering operations. After delivering the packet to the upper layer, the receiving terminal can update the next expected per-tunnel sequence number (NE-PTSN) and the next expected global sequence number (NE-GSN).
下文将描述在接收和解密包之后包可以如何进行缓存或转发到目标装置的一个方法。One method of how a packet may be buffered or forwarded to a target device after it has been received and decrypted is described below.
1.如果包的GSN等于零,则立即将包转发到目标装置。1. If the packet's GSN is equal to zero, immediately forward the packet to the target device.
2.检查包的PTSN是否等于NE-PTSN。如果不是,则按顺序将具有较小GSN的所有包出列(转发到目标装置)。保持包未处理。2. Check if the PTSN of the packet is equal to NE-PTSN. If not, all packets with smaller GSNs are dequeued (forwarded to the target device) in order. Leave the package unprocessed.
3.更新NE-PTSN(即,将NE-PTSN设定成PTSN+1)。3. Update NE-PTSN (ie, set NE-PTSN to PTSN+1).
4.如果GSN小于NE-GSN,则转发到目标装置。4. If GSN is less than NE-GSN, forward to target device.
5.如果包的GSN等于NE-GSN,则更新NE-GSN(即,将NEGSN设定成GSN+1)且转发到目标装置。重复更新NE-GSN,并且如果缓存头的GSN等于新的NE-GSN,则将缓存头从缓存器出列。5. If the packet's GSN is equal to NE-GSN, update NE-GSN (ie set NEGSN to GSN+1) and forward to target device. The NE-GSN is updated repeatedly, and if the cache header's GSN is equal to the new NE-GSN, the cache header is dequeued from the cache.
6.否则(GSN大于NE-GSN),按GSN的顺序将包入列。6. Otherwise (GSN is greater than NE-GSN), the packets are listed in the order of GSN.
7.如果包处于比固定时间量长的队列中,则将NEGSN设定成包的GSN+1且按顺序将包以及具有较小GSN的所有包出列。7. If the packet has been in the queue for longer than a fixed amount of time, set the NEGSN to the packet's GSN+1 and dequeue the packet and all packets with smaller GSNs in order.
因此,在图2和图3中论述的封装包信息可以包含通过响应于监控丢包率而帮助优化隧道带宽以及通过帮助有效地重新排序数据传送会话中所接收包两者来优化数据传输系统(例如,100)的总体吞吐量的信息。Thus, the encapsulated packet information discussed in FIGS. 2 and 3 may include optimizing the data transfer system both by helping to optimize tunnel bandwidth in response to monitoring packet loss rates and by helping to efficiently reorder received packets in a data transfer session ( For example, 100) of the overall throughput information.
图5说明根据某些实施例的可以用于实施系统、装置和方法的示例性基于处理器的系统500。基于处理器的系统500可以表示通信路由器106和108的架构。中央处理单元(CPU)501耦合到系统总线502。CPU 501可以是任何通用CPU,或可以是被设计成实施以上教示的专用CPU。只要CPU 501(和系统500的其它组件)支持如本文所描述的发明性操作,则本发明不受CPU 501(或示例性系统500的其它组件)的架构限制。CPU 501可以执行本文所描述的各种逻辑指令。例如,CPU 501可以根据上文结合图2描述的示例性操作流执行机器级指令。当执行表示图2中所说明的操作步骤的指令时,CPU 501变为具体来说被配置成根据本文所描述的教示的各种实施例操作的专用计算平台的专用处理器。FIG. 5 illustrates an exemplary processor-based system 500 that may be used to implement systems, apparatuses, and methods in accordance with certain embodiments. Processor-based system 500 may represent the architecture of communications routers 106 and 108 . Central processing unit (CPU) 501 is coupled to system bus 502 . CPU 501 may be any general purpose CPU, or may be a special purpose CPU designed to implement the above teachings. The present invention is not limited by the architecture of CPU 501 (or other components of exemplary system 500) so long as CPU 501 (and other components of system 500) support the inventive operations as described herein. CPU 501 can execute the various logic instructions described herein. For example, CPU 501 may execute machine-level instructions according to the exemplary operational flow described above in connection with FIG. 2 . When executing instructions representing the operational steps illustrated in FIG. 2, CPU 501 becomes, in particular, the special-purpose processor of a special-purpose computing platform configured to operate in accordance with various embodiments of the teachings described herein.
系统500还包含随机存取存储器(RAM)503,其可以是SRAM、DRAM、SDRAM等。RAM 503可以是存储可由CPU 501执行的程序指令的辅助存储装置。系统500包含只读存储器(ROM)504,其可以是PROM、EPROM、EEPROM等等。如在本领域中众所周知,RAM 503和ROM 504保存用户和系统数据以及程序。System 500 also includes random access memory (RAM) 503, which may be SRAM, DRAM, SDRAM, or the like. The RAM 503 may be an auxiliary storage device that stores program instructions executable by the CPU 501 . System 500 includes read-only memory (ROM) 504, which may be a PROM, EPROM, EEPROM, or the like. As is well known in the art, RAM 503 and ROM 504 hold user and system data and programs.
系统500还包含输入/输出(I/O)适配器505、通信适配器511、用户接口适配器508和显示适配器509。在某些实施例中,I/O适配器505、用户接口适配器508和/或通信适配器511可以使用户能够与系统500交互,以便输入信息。System 500 also includes input/output (I/O) adapter 505 , communications adapter 511 , user interface adapter 508 , and display adapter 509 . In some embodiments, I/O adapter 505, user interface adapter 508, and/or communication adapter 511 may enable a user to interact with system 500 to enter information.
I/O适配器505将例如硬盘驱动器、压缩光盘(CD)驱动器、软盘驱动器、磁带驱动器等中的一个或多个的存储装置506连接到系统500。除了RAM 503之外,存储装置用于执行以上实施例中所论述的操作的相关存储器需求。通信适配器511被调适成将系统500耦合到网络512,这可以使信息能够经由此网络512(例如,因特网或其它广域网、局域网、公共或私有交换电话网络、无线网络、上述项的任何组合)输入系统500和/或从系统500输出。通信适配器511可以被视为网络接口,并且系统500可以包括多个通信适配器511。用户接口适配器508将用户输入装置,例如键盘513、指向装置507和麦克风514和/或输出装置,例如扬声器515耦合到系统500。显示适配器509由CPU 501驱动以控制在显示装置510上的显示。显示适配器509传输用于变换或控制供显示装置510使用的各种数目个像素的状态的指令,以在视觉上向用户呈现所需信息。此类指令包含用于从开到关改变状态、设定特定的色彩、强度、持续时间等的指令。每个此种指令组成呈现指令以控制如何在显示装置510上显示以及在显示装置510上显示什么内容。I/O adapter 505 connects storage device 506 , such as one or more of a hard disk drive, compact disk (CD) drive, floppy disk drive, tape drive, etc., to system 500 . In addition to the RAM 503, storage is used to perform the associated memory requirements of the operations discussed in the above embodiments. Communications adapter 511 is adapted to couple system 500 to network 512, which may enable information to be imported via this network 512 (e.g., the Internet or other wide area network, local area network, public or private switched telephone network, wireless network, any combination of the foregoing) System 500 and/or output from system 500 . Communications adapter 511 may be considered a network interface, and system 500 may include multiple communications adapters 511 . User interface adapter 508 couples user input devices such as keyboard 513 , pointing device 507 , and microphone 514 and/or output devices such as speakers 515 to system 500 . The display adapter 509 is driven by the CPU 501 to control display on the display device 510 . Display adapter 509 transmits instructions for changing or controlling the state of various numbers of pixels used by display device 510 to visually present desired information to a user. Such instructions include instructions for changing state from on to off, setting a specific color, intensity, duration, etc. Each such instruction constitutes a rendering instruction to control how and what content is displayed on display device 510 .
图6说明基于图1A中所说明的网络环境的网络环境。通信路由器106的LAN接口中的一个连接到主机103,并且通信路由器108的LAN接口中的一个连接到主机105。主机103和105分别处于站点102和104中。可以通过网络110在通信路由器106与108之间建立多个隧道。通信路由器106可以通过通信路由器106的一个或多个WAN接口以及通信路由器108的一个或多个WAN接口与通信路由器108建立隧道。仅出于说明的目的,通信路由器108通过三个连接来连接到因特网110,而通信路由器106通过两个连接来连接到网络110。网络110可以是互连网络,例如因特网。FIG. 6 illustrates a network environment based on the network environment illustrated in FIG. 1A. One of the LAN interfaces of the communication router 106 is connected to the host 103 , and one of the LAN interfaces of the communication router 108 is connected to the host 105 . Hosts 103 and 105 are in sites 102 and 104, respectively. Multiple tunnels may be established between communications routers 106 and 108 over network 110 . Communications router 106 may establish a tunnel with communications router 108 through one or more WAN interfaces of communications router 106 and one or more WAN interfaces of communications router 108 . For purposes of illustration only, communications router 108 is connected to Internet 110 through three connections, while communications router 106 is connected to network 110 through two connections. Network 110 may be an interconnected network, such as the Internet.
当在通信路由器106与108之间建立的数据会话的数据包丢失或丢弃时,通信路由器108确定存在一个或多个丢失数据包。如果通过通信路由器106重新发送丢失数据包,则带宽消耗增加,这可以引起网络拥塞。本发明揭示通信路由器108可以如何估计丢失数据包的内容,使得通信路由器106不需要重新发送丢失数据包。When packets of a data session established between communications routers 106 and 108 are lost or dropped, communications router 108 determines that there is one or more missing packets. If lost packets are resent through communications router 106, bandwidth consumption increases, which can cause network congestion. The present invention discloses how communications router 108 can estimate the content of lost data packets so that communications router 106 does not need to resend the lost data packets.
图7是说明根据本发明的一个实施例的过程的流程图。结合图1A观察,例如,当主机103传输去往主机105的数据包时,通过通信路由器106、因特网110和通信路由器108将数据包从主机103传输到主机105。当数据包从主机103到达通信路由器106时,通信路由器106通过因特网110将数据包转发到通信路由器108。随后在通信路由器108处执行图2的过程。在步骤701中,通信路由器108通过聚合连接从通信路由器106接收数据包。如果数据包属于数据会话,则当通信路由器108接收数据包时,在步骤702中确定数据包属于的数据会话。在步骤703中,数据包随后可以用于产生数据会话的一个或多个前一和/或下一数据包。通信路由器108可以使用下文将更详细论述的不同技术来执行步骤703。Figure 7 is a flowchart illustrating a process according to one embodiment of the present invention. As seen in connection with FIG. 1A , for example, when host 103 transmits a packet destined for host 105 , the packet is transmitted from host 103 to host 105 through communications router 106 , Internet 110 , and communications router 108 . When a data packet arrives at communication router 106 from host computer 103 , communication router 106 forwards the data packet to communication router 108 via Internet 110 . The process of FIG. 2 is then performed at communications router 108 . In step 701, communications router 108 receives a data packet from communications router 106 over an aggregated connection. If the data packet belongs to a data session, when the communication router 108 receives the data packet, in step 702, the data session to which the data packet belongs is determined. In step 703, the data packet may then be used to generate one or more previous and/or next data packets of the data session. Communications router 108 may perform step 703 using different techniques that will be discussed in more detail below.
图8是说明根据本发明的一个实施例的过程的流程图。例如,在主机103与主机105之间建立数据会话。通过通信路由器106、通信路由器108和因特网110将属于数据会话的数据包从主机103传输到主机105。在步骤801中,通信路由器108接收数据会话的数据包。通信路由器108随后可以在步骤802中确定是否存在任何丢失数据包。如果存在丢失数据包并且在步骤803中确定丢失数据包在数据会话的顺序中不是第一或最后,则在步骤804中可以基于数据会话的前一数据包和下一数据包产生丢失数据包。如果丢失数据包在数据会话的顺序中是第一或最后,则通信路由器108在步骤805中将请求发送到通信路由器106以重新发送丢失数据包,因为基于仅一个或多个前一数据包或一个或多个下一数据包产生丢失数据包可能不可行。例如,如果通信路由器108被配置成通过计算一个或多个前一数据包的净负荷和一个或多个下一数据包的净负荷的平均值来产生丢失数据包,则通信路由器108不能够基于仅一个或多个前一数据包或仅一个或多个下一数据包产生丢失数据包。如果使用仅前一数据包或仅下一数据包,则产生的丢失数据包可能较不准确。在步骤806中,过程结束。Figure 8 is a flowchart illustrating a process according to one embodiment of the present invention. For example, a data session is established between host 103 and host 105 . Data packets belonging to a data session are transmitted from host 103 to host 105 via communication router 106 , communication router 108 and Internet 110 . In step 801, communications router 108 receives data packets for a data session. Communications router 108 may then determine in step 802 whether there are any lost packets. If there is a missing data packet and it is determined in step 803 that the missing data packet is not the first or last in the sequence of the data session, then in step 804 the missing data packet may be generated based on the previous data packet and the next data packet of the data session. If the lost data packet is first or last in the order of the data session, the communication router 108 sends a request to the communication router 106 in step 805 to resend the lost data packet because based on only one or more previous data packets or It may not be feasible for one or more of the next packets to generate missing packets. For example, if communications router 108 is configured to generate missing packets by averaging the payload of one or more previous packets and the payload of one or more next packets, communications router 108 cannot be based on Only one or more previous packets or only one or more next packets result in missing packets. If previous-only or next-only packets are used, the resulting missing packets may be less accurate. In step 806, the process ends.
根据一个实施例,通信路由器108计算一个或多个前一数据包和一个或多个下一数据包的净负荷值的方差和标准差。在一个变形例中,通过加上一个或多个前一数据包和/或一个或多个下一数据包的净负荷值的标准差值和平均值来产生丢失数据包的净负荷。在另一变形例中,通过从一个或多个前一数据包和/或一个或多个下一数据包的净负荷值的平均值中减去标准差值来产生丢失数据包的净负荷。本发明的范围不限于加上或减去标准差值和平均值,使得丢失数据包的净负荷可以通过使用平均值、方差值和标准差值的其它组合来计算,或者可以等于方差值或标准差值。According to one embodiment, communications router 108 calculates the variance and standard deviation of the payload values of one or more previous data packets and one or more next data packets. In a variant, the payload of the missing packet is generated by adding the standard deviation and the mean value of the payload values of one or more previous packets and/or one or more next packets. In another variant, the payload of the lost packet is generated by subtracting the standard deviation value from the average of the payload values of one or more previous packets and/or one or more next packets. The scope of the invention is not limited to adding or subtracting the standard deviation value and the mean value, so that the payload of lost packets can be calculated by using other combinations of the mean value, variance value and standard deviation value, or can be equal to the variance value or standard deviation.
在一个变形例中,通信路由器108通过检查数据包的全局序列号来确定是否存在丢失数据包。例如,当接收具有全局序列号0001、0002、0003、0004和0006的数据包时,通信路由器108可以确定具有全局序列号0005的数据包是丢失数据包。通信路由器108随后可以基于具有全局序列号0004的前一数据包以及具有全局序列号0006的下一数据包来产生具有全局序列号0005的丢失数据包。In one variation, communications router 108 determines whether there is a missing packet by examining the global sequence number of the packet. For example, when receiving packets with global sequence numbers 0001, 0002, 0003, 0004, and 0006, communications router 108 may determine that the packet with global sequence number 0005 is a lost packet. Communications router 108 may then generate the missing packet with global sequence number 0005 based on the previous packet with global sequence number 0004 and the next packet with global sequence number 0006 .
下文是通过分别计算三个前一数据包的净负荷P1、P2和P3的平均值来产生丢失数据包的净负荷P4的说明。例如:The following is an illustration of generating the payload P4 of the missing packet by calculating the average of the payloads P1, P2 and P3 of the three preceding packets, respectively. E.g:
Pl=0000 00 40 B8 50 A5 AC 00 07 53 02 17 D1 08 00 45 00Pl=0000 00 40 B8 50 A5 AC 00 07 53 02 17 D1 08 00 45 00
P2=0010 05 D4 58 B4 40 00 2B 06 F4 4A D8 5C 63 ID CO A8P2=0010 05 D4 58 B4 40 00 2B 06 F4 4A D8 5C 63 ID CO A8
P3=0020 01 02 00 50 0B F6 9E FC 46 4A AB DB A4 F8 50 10P3=0020 01 02 00 50 0B F6 9E FC 46 4A AB DB A4 F8 50 10
在一个变形例中,如下通过单独地加上净负荷的每个字节来计算净负荷的平均值:In a variant, the average payload is calculated by adding each byte of the payload individually as follows:
P4=(Pl+P2+P3)/3P4=(P1+P2+P3)/3
P4=(0030 06 116 110 154 F0 1A2 C9 109 18D 96 19A 208 10F 115 155B8)/3P4=10 02 5C 5A 71 50 8B 43 58 84 32 88 AD 5A 5C 71 3DP4=(0030 06 116 110 154 F0 1A2 C9 109 18D 96 19A 208 10F 115 155B8)/3P4=10 02 5C 5A 71 50 8B 43 58 84 32 88 AD 5A 5C 71 3D
在另一变形例中,如下通过将所有净负荷的字节加在一起来计算净负荷的平均值:In another variant, the average payload is calculated by adding together the bytes of all payloads as follows:
P4=(Pl+P2+P3)/3P4=(P1+P2+P3)/3
P4=(3007171154FlA200000000000000000000)/3P4=(3007171154FlA200000000000000000000)/3
P4=10025D05C6FB3600000000000000000000P4=10025D05C6FB36000000000000000000000
根据本发明的一个实施例,基于仅同一数据会话的一个或多个前一数据包而产生丢失数据包。例如,如果具有GSN 0005的数据包是丢失数据包,则基于具有GSN 0004的前一数据包产生丢失数据包。当在通信路由器108处重新产生丢失数据包作为新数据包时,新数据包分配有GSN 0005。随后按以下顺序将前一数据包和新数据包以及新数据包传输到主机105:具有GSN 0004的前一数据包、具有GSN 0005的新数据包和具有GSN 0006的下一数据包。当新数据包仅基于前一数据包时,新数据包的净负荷与前一数据包,即,具有GSN 0004的数据包的净负荷相同。According to one embodiment of the invention, lost data packets are generated based on only one or more previous data packets of the same data session. For example, if a packet with GSN 0005 is a lost packet, then a lost packet is generated based on the previous packet with GSN 0004. When the lost data packet is regenerated as a new data packet at the communication router 108, the new data packet is assigned GSN 0005. The previous data packet and the new data packet and the new data packet are then transmitted to the host 105 in the following order: previous data packet with GSN 0004, new data packet with GSN 0005 and next data packet with GSN 0006. When the new data packet is only based on the previous data packet, the new data packet has the same payload as the previous data packet, ie the data packet with GSN 0004.
在一个变形例中,将PTSN分配到新数据包。随机地分配新数据包的PTSN。由于新数据包在通信路由器108处产生并且未通过任何隧道接收,因此随机地分配PTSN。In a variant, the PTSN is assigned to the new data packet. The PTSN of new packets is randomly assigned. Since new data packets are generated at the communications router 108 and not received through any tunnels, the PTSNs are assigned randomly.
或者,确定丢失数据包的PTSN,并且分配到新数据包的PTSN与丢失数据包的PTSN相同。例如,通信路由器108通过隧道103A接收具有PTSN 0001A、0002A、0003A、0005A的数据包。所接收数据包的GSN分别是0001、0003、0004和0007。已通过隧道103B接收具有GSN 0002和0005的数据包。因此,通信路由器108确定具有GSN 0006和PTSN 0004A的数据包是丢失数据包。因此,新数据包分配有GSN 0006和PTSN 0004A。Alternatively, the PTSN of the lost data packet is determined, and the PTSN assigned to the new data packet is the same as the PTSN of the lost data packet. For example, communications router 108 receives packets with PTSNs 0001A, 0002A, 0003A, 0005A through tunnel 103A. The GSNs of the received packets are 0001, 0003, 0004 and 0007 respectively. Packets with GSN 0002 and 0005 have been received through tunnel 103B. Accordingly, communications router 108 determines that the packet with GSN 0006 and PTSN 0004A is a lost packet. Therefore, the new data packet is assigned GSN 0006 and PTSN 0004A.
在另一变形例中,通信路由器106将管理消息发送到通信路由器108。管理消息包括数据包的GSN以及数据包的对应PTSN的列表。因此,当已知丢失数据包的GSN时,可以确定丢失数据包的PTSN。In another variation, communications router 106 sends the management message to communications router 108 . The management message includes a list of the GSN of the data packet and the corresponding PTSN of the data packet. Therefore, when the GSN of the missing data packet is known, the PTSN of the missing data packet can be determined.
在一个变形例中,新数据包的净负荷是一个或多个前一数据包的净负荷的平均值。新数据包的标头含有与数据会话的其它数据包的标头相同的信息,不同之处在于GSN。新数据包的GSN不同于数据会话的其它数据包,因为GSN应该是唯一的。In a variant, the payload of the new packet is the average of the payloads of one or more previous packets. The header of the new data packet contains the same information as the headers of the other data packets of the data session, except for the GSN. The GSN of the new data packet is different from other data packets of the data session, because the GSN should be unique.
根据本发明的一个实施例,基于仅一个或多个下一数据包产生丢失数据包。例如,如果具有GSN 0005的数据包是丢失数据包,则基于具有GSN 0006的下一数据包产生丢失数据包。当在通信路由器108处产生丢失数据包作为新数据包时,新数据包分配有GSN 0005。当新数据包仅基于一个下一数据包时,新数据包的净负荷可以与下一数据包,即,具有GSN0006的数据包的净负荷相同。或者,当新数据包基于多于一个下一数据包时,新数据包的净负荷可以是一个或多个下一数据包的净负荷的平均值。According to one embodiment of the invention, the missing data packets are generated based on only one or more next data packets. For example, if a packet with GSN 0005 is a lost packet, then a lost packet is generated based on the next packet with GSN 0006. When a lost data packet is generated as a new data packet at the communication router 108, the new data packet is assigned the GSN 0005. When the new data packet is based on only one next data packet, the payload of the new data packet can be the same as the payload of the next data packet, ie the data packet with GSN0006. Alternatively, when the new data packet is based on more than one next data packet, the payload of the new data packet may be an average of the payloads of one or more next data packets.
根据本发明的一个实施例,通信路由器108具有音频处理功能。当在通信路由器108处接收音频包时,临时地保存音频包,使得通信路由器108的处理单元可以使用音频包的净负荷,以便创建音频数据库。当音频包含有语音时,这可能尤其有益。处理单元执行音频数据库的查找以重新产生丢失数据包的净负荷。例如,词语“苹果”出现于音频片段中。词语“苹果”可以包括在一个或多个数据包中,并且通信路由器108将对应于词语“苹果”的数据内容或净负荷存储于音频数据库中。出于说明的目的,词语“苹果”包括在两个数据包中,即,第一数据包和第二数据包。第一数据包和第二数据包是连续的数据包。如果由通信路由器108成功地接收第一数据包,但是未由通信路由器108接收第二数据包,则通信路由器108通过使用第一数据包的净负荷以及对应于音频数据库中的词语“苹果”的净负荷来产生新的第二数据包。根据第一数据包,通信路由器108估计词语是“苹果”,因为其净负荷含有与存储于音频数据库中的词语“苹果”对应的净负荷的至少一些部分。通信路由器108随后将第一数据包和新的第二数据包发送到主机105。According to one embodiment of the present invention, communication router 108 has audio processing functionality. When an audio packet is received at the communications router 108, the audio packet is temporarily saved so that a processing unit of the communications router 108 can use the payload of the audio packet in order to create an audio database. This can be especially beneficial when the audio contains speech. The processing unit performs a lookup of the audio database to regenerate the payload of the lost data packets. For example, the word "apple" appears in the audio segment. The word "apple" may be included in one or more data packets, and communications router 108 stores the data content or payload corresponding to the word "apple" in the audio database. For purposes of illustration, the word "apple" is included in two packets, a first packet and a second packet. The first data packet and the second data packet are consecutive data packets. If the first data packet is successfully received by the communication router 108, but the second data packet is not received by the communication router 108, the communication router 108 then uses the payload of the first data packet and the word corresponding to the word "apple" in the audio database. payload to generate a new second data packet. From the first data packet, communications router 108 estimates that the word is "apple" because its payload contains at least some portion of the payload corresponding to the word "apple" stored in the audio database. Communication router 108 then sends the first data packet and the new second data packet to host 105 .
根据本发明的一个实施例,当主机103将视频数据传输到主机105时,通信路由器108使用插值技术产生丢失数据包。例如,视频的每一帧封装在单独的数据包中。可以通过使用分别封装在一个或多个前一数据包中的一个或多个前一帧以及通过使用分别封装在一个或多个下一数据包中的一个或多个下一帧来产生封装在丢失数据包中的丢失帧。例如,非线性插值、最近邻插值、双线性插值、双三次插值等技术可以用于估计和重新产生丢失数据包的净负荷。According to one embodiment of the present invention, when host 103 transmits video data to host 105, communication router 108 uses an interpolation technique to generate missing data packets. For example, each frame of a video is encapsulated in a separate packet. The packets encapsulated in Lost frames in lost packets. For example, techniques such as nonlinear interpolation, nearest neighbor interpolation, bilinear interpolation, bicubic interpolation, etc. can be used to estimate and regenerate the payload of lost packets.
根据本发明的一个实施例,通信路由器108使用存储于其存储媒体中的文本数据库,以便产生丢失数据包。例如,主机103正通过通信路由器106和108将文本数据传输到主机105。配置通信路由器106,使得在单独数据包中传输每个字符,并且还通知通信路由器108每个数据包仅包括一个字符。通过主机103连续地传输第一、第二和第三数据包。通信路由器108成功地接收第一和第三数据包,但不接收第二数据包。由于第二数据包是丢失数据包,因此第一数据包是前一数据包并且第三数据包是下一数据包。出于说明的目的,第一数据包含有字符“a”,并且第三数据包含有字符“d”。通信路由器108确定第二数据包丢失,并且第一、第二和第三数据包的净负荷形成三字符词语。通信路由器108随后查找词典,以便确定词语。由于三字符词语的第一字符确定为“a”并且三字符词语的第三字符确定为“d”,因此通信路由器108可以将第二字符估计为“n”。According to one embodiment of the present invention, communications router 108 uses a text database stored in its storage medium in order to generate lost packets. For example, host 103 is transmitting text data to host 105 through communications routers 106 and 108 . Communications router 106 is configured such that each character is transmitted in a separate data packet, and communications router 108 is also informed that each data packet includes only one character. The first, second and third data packets are continuously transmitted by the host 103 . Communications router 108 successfully receives the first and third data packets, but does not receive the second data packet. Since the second data packet is a lost data packet, the first data packet is the previous data packet and the third data packet is the next data packet. For illustration purposes, the first data contains the character "a" and the third data contains the character "d". Communications router 108 determines that the second data packet is lost, and the payload of the first, second, and third data packets form a three-character word. Communications router 108 then looks up the dictionary to determine the term. Since the first character of the three-character term is determined to be "a" and the third character of the three-character term is determined to be "d," communication router 108 may estimate the second character to be "n."
然而,假定第一字符和第三字符的另一可能性是词语是“添加”。在一个变形例中,通信路由器108随机地从用于词语的不同可能性中选择词语。在另一变形例中,通信路由器108基于历史数据选择词语。例如,如果根据前一数据包,词语为“添加”的可能性高于词语为“和”的可能性,则通信路由器108选择“添加”。因此,产生的新数据包具有对应于字符“d”的净负荷。However, another possibility to assume the first and third characters is that the word is "addition". In one variation, the communications router 108 randomly selects words from different possibilities for the words. In another variation, communications router 108 selects terms based on historical data. For example, if the word "add" is more likely than the word "and" based on the previous data packet, communications router 108 selects "add". Therefore, a new data packet is generated with a payload corresponding to the character "d".
在一个变形例中,通信路由器108借助于“空间”字符或对应于标点符号的任何字符来确定词语是三字符词语。或者,对应于词语的第一个或最后一个字符的数据包包括指示数据包包括词语的第一个字符或最后一个字符的指示符。In one variation, communications router 108 determines that a word is a three-character word by means of a "space" character, or any character corresponding to a punctuation mark. Alternatively, the data packet corresponding to the first or last character of the word includes an indicator indicating that the data packet includes the first or last character of the word.
根据本发明的一个实施例,当主机103将多媒体数据传输到主机105时,可以实施不同插值技术来产生丢失数据包。例如,主机103实施用于音频数据包的变换编码并且随后将音频数据包传输到主机105。音频数据包因此包括变换系数。如果存在丢失音频数据包并且通信路由器108接收前一音频数据包和下一音频数据包,则通信路由器108能够使用前一和下一音频数据包的变换系数来产生丢失音频数据包。在一个变形例中,前一和下一音频数据包的变换系数的平均值可以计算且用作对应于丢失音频数据包的新变换系数。随后通过将逆变换应用于新变换系数来产生丢失音频数据包。在另一变形例中,将不同权重分配到前一和下一音频数据包的变换系数。随后添加加权变换系数,以提供对应于丢失音频数据包的新变换系数。According to an embodiment of the present invention, when the host 103 transmits multimedia data to the host 105, different interpolation techniques may be implemented to generate missing data packets. For example, host 103 implements transform coding for audio data packets and then transmits the audio data packets to host 105 . The audio data packets thus comprise transform coefficients. If there is a missing audio data packet and communication router 108 receives the previous audio data packet and the next audio data packet, communication router 108 can use the transform coefficients of the previous and next audio data packets to generate the missing audio data packet. In a variant, the average value of the transform coefficients of the previous and next audio data packet may be calculated and used as the new transform coefficient corresponding to the lost audio data packet. Lost audio data packets are then generated by applying the inverse transform to the new transform coefficients. In another variant, different weights are assigned to the transform coefficients of the previous and the next audio data packet. Weighted transform coefficients are then added to provide new transform coefficients corresponding to lost audio data packets.
应了解,在所有以上实例中,代替使用一个前一数据包和一个下一数据包,多个前一和下一数据包可以用于产生丢失数据包。It should be appreciated that in all of the above examples, instead of using one previous packet and one next packet, multiple previous and next packets could be used to generate missing packets.
根据本发明的一个实施例,当通信路由器108通过因特网110从主机103接收数据包时,通信路由器108在预定义时间周期内临时地存储数据包。数据包存储于通信路由器108的存储媒体中,使得数据包可以用于重新产生任何丢失数据包。当存在丢失数据包时,通信路由器108可以使用所存储数据包来重新产生丢失数据包。例如,具有GSN 0001、0002、0003和0004的数据包在通信路由器108处接收并且存储于存储媒体中。具有GSN 0005的数据包未接收到,并且因此是丢失数据包。通信路由器108随后计算具有GSN 0001、0002、0003和0004的数据包的净负荷的平均值。平均值随后用作所产生的新数据包的净负荷并且GSN0005被分配到新数据包。随后将新数据包传输到主机105。According to one embodiment of the present invention, when communication router 108 receives a data packet from host 103 via Internet 110, communication router 108 temporarily stores the data packet for a predefined period of time. The data packets are stored in the storage medium of the communications router 108 so that the data packets can be used to regenerate any lost data packets. When there are lost data packets, communications router 108 may use the stored data packets to regenerate the lost data packets. For example, data packets with GSNs 0001, 0002, 0003 and 0004 are received at communication router 108 and stored in the storage medium. The packet with GSN 0005 was not received and is therefore a lost packet. Communications router 108 then calculates an average of the payloads of packets with GSNs 0001, 0002, 0003, and 0004. The average value is then used as the payload of the new data packet generated and GSN0005 is assigned to the new data packet. The new data packet is then transmitted to the host 105 .
在一个变形例中,通过通信路由器108的用户和/或管理员设定预定义时间周期。在另一变形例中,基于由从通信路由器106发送到通信路由器108的数据包经历的总体时延而确定预定义时间周期。出于说明的目的,当通信路由器108被配置成使用至少四个数据包来产生丢失数据包时,设定预定义时间周期,使得至少四个数据包在给定时间存储于存储媒体中。因此,为了设定预定义时间周期,确定用于接收每个数据包所需的时间,即时延,并且基于所述时延计算预定义时间周期。In one variation, the predefined time period is set by a user and/or administrator of communications router 108 . In another variation, the predefined time period is determined based on the overall delay experienced by data packets sent from communications router 106 to communications router 108 . For purposes of illustration, when communications router 108 is configured to use at least four data packets to generate missing data packets, the predefined time period is set such that at least four data packets are stored in the storage medium at a given time. Therefore, in order to set the predefined time period, the time required for receiving each data packet, ie the delay, is determined, and the predefined time period is calculated based on said delay.
根据本发明的一个实施例,通过近似函数产生丢失数据包。近似函数使用多个前一数据包的净负荷的回归来确定丢失数据包的净负荷。例如,通过因变量和自变量创建回归分析模型。因变量是净负荷的值。在一个变形例中,自变量是GSN。或者,自变量是时间。使用回归分析估计丢失数据包的净负荷,并且因此丢失数据包重新产生且发送到主机105。According to one embodiment of the present invention, the lost data packets are generated by an approximation function. The approximation function uses a regression of the payloads of multiple previous packets to determine the payload of the missing packet. For example, create a regression analysis model with dependent and independent variables. The dependent variable is the value of the payload. In a variant, the independent variable is GSN. Alternatively, the independent variable is time. The payload of the lost data packets is estimated using regression analysis, and thus the lost data packets are regenerated and sent to the host 105 .
例如,在通信路由器108处接收具有GSN 0001、0002、0003、0004、0005、0006和0007、0008、0009、0010和0012的数据包。具有GSN 0011的数据包丢失。因此,通信路由器108通过创建所接收数据包的净负荷的回归分析模型而重新产生丢失数据包的净负荷。因变量(P)是数据包的净负荷值,并且自变量(X)是数据包的GSN。下文说明所接收包和回归分析模型的净负荷值(P1、P2、P3、P4、P5、P6、P7、P8、P9、P10、P12):For example, data packets with GSNs 0001 , 0002 , 0003 , 0004 , 0005 , 0006 and 0007 , 0008 , 0009 , 0010 and 0012 are received at communications router 108 . Packet loss with GSN 0011. Accordingly, communications router 108 regenerates the payload of lost packets by creating a regression analysis model of the payload of received packets. The dependent variable (P) is the payload value of the packet and the independent variable (X) is the GSN of the packet. The payload values (P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P12) of the received packets and the regression analysis model are described below:
Pl=97Pl=97
P2=98P2=98
P3=99P3=99
P4=100P4=100
P5=101P5=101
P6=102P6=102
P7=103P7=103
P8=104P8=104
P9=105P9=105
P10=106P10=106
P12=108P12=108
因此,当相对于对应GSN创建净负荷值的回归分析模型时,如下获得近似函数:Therefore, when creating a regression analysis model of the payload values with respect to the corresponding GSN, the approximation function is obtained as follows:
P=96+XP=96+X
使用此近似函数,如下计算具有GSN 0011的丢失数据包P11的净负荷:Using this approximate function, the payload of the lost packet P11 with GSN 0011 is calculated as follows:
P11=96+0011=107P11=96+0011=107
因此,通信路由器108通过等于107的净负荷值重新产生丢失数据包。Accordingly, communications router 108 regenerates the lost data packet with a payload value equal to 107.
应注意,为了更容易说明,上述实例中的净负荷值是示例性值。应了解,包的净负荷值通常可以较大并且数据包的尺寸较大。It should be noted that the payload values in the above examples are exemplary values for easier illustration. It should be appreciated that the payload value of the packet can generally be larger and the size of the data packet larger.
根据本发明的一个实施例,主机105被配置成执行估计并且重新产生丢失数据包。例如,软件、程序或应用程序可以安装在主机105处,以使用上述技术重新产生丢失数据包。According to one embodiment of the invention, the host 105 is configured to perform estimation and regenerate missing packets. For example, software, programs or applications may be installed at host 105 to regenerate lost packets using the techniques described above.
附图说明Description of drawings
图1A说明根据本发明的实施例的用于优化多个可变带宽连接的吞吐量的整个系统;FIG. 1A illustrates an overall system for optimizing the throughput of multiple variable bandwidth connections according to an embodiment of the present invention;
图1B说明根据本发明的各种实施例的网络环境;Figure 1B illustrates a network environment according to various embodiments of the invention;
图1C说明根据实施例调适的系统100,所述系统被配置成优化结合的多个可变带宽连接的吞吐量;Figure 1C illustrates a system 100 adapted in accordance with an embodiment, the system being configured to optimize the throughput of a combined plurality of variable bandwidth connections;
图2A说明根据本发明的实施例的描绘用于增加结合连接的吞吐量的方法的流程图;2A illustrates a flowchart depicting a method for increasing throughput of a bonded connection, according to an embodiment of the invention;
图2B说明根据本发明的实施例的描绘用于增加结合连接的吞吐量的方法的流程图;2B illustrates a flowchart depicting a method for increasing throughput of a bonded connection, according to an embodiment of the invention;
图3是说明根据本发明的实施例的可以封装在所传输IP包中的信息的类型的实例实施例;Figure 3 is an example embodiment illustrating the types of information that may be encapsulated in transmitted IP packets according to an embodiment of the invention;
图4A是说明根据本发明的实施例的可以封装在反馈包中的信息的类型的实例实施例;FIG. 4A is an example embodiment illustrating the type of information that may be encapsulated in a feedback packet according to an embodiment of the invention;
图4B是说明图4A的反馈包的字段的可能值的图表;FIG. 4B is a diagram illustrating possible values for fields of the feedback packet of FIG. 4A;
图5描绘被调适成实施本发明的处理系统的框图;Figure 5 depicts a block diagram of a processing system adapted to implement the present invention;
图6说明根据本发明的一个实施例的网络环境;Figure 6 illustrates a network environment according to one embodiment of the present invention;
图7是说明根据本发明的一个实施例的过程的流程图;Figure 7 is a flowchart illustrating a process according to one embodiment of the invention;
图8是说明根据本发明的一个实施例的过程的流程图。Figure 8 is a flowchart illustrating a process according to one embodiment of the present invention.
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/IB2015/052998WO2016170399A1 (en) | 2015-04-24 | 2015-04-24 | Methods and systems for estimating missing data |
| Publication Number | Publication Date |
|---|---|
| CN107078861Atrue CN107078861A (en) | 2017-08-18 |
| CN107078861B CN107078861B (en) | 2020-12-22 |
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201580055263.5AActiveCN107078861B (en) | 2015-04-24 | 2015-04-24 | Method and system for estimating missing data |
| Country | Link |
|---|---|
| CN (1) | CN107078861B (en) |
| GB (1) | GB2542219B (en) |
| WO (1) | WO2016170399A1 (en) |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109324757A (en)* | 2018-08-22 | 2019-02-12 | 深圳前海微众银行股份有限公司 | Blockchain data scaling method, device and storage medium |
| WO2024141776A1 (en)* | 2022-12-29 | 2024-07-04 | Pismo Labs Technology Limited | Methods for reducing packet loss during slow start of a session |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2023184200A1 (en)* | 2022-03-30 | 2023-10-05 | Intel Corporation | Conference call system with feedback |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040136564A1 (en)* | 2002-08-20 | 2004-07-15 | Helena Roeber | System and method for determining an input selected by a user through a virtual interface |
| US6810377B1 (en)* | 1998-06-19 | 2004-10-26 | Comsat Corporation | Lost frame recovery techniques for parametric, LPC-based speech coding systems |
| EP1086452B1 (en)* | 1999-04-19 | 2005-09-14 | AT & T Corp. | Method for performing packet loss concealment |
| US20060104366A1 (en)* | 2004-11-16 | 2006-05-18 | Ming-Yen Huang | MPEG-4 streaming system with adaptive error concealment |
| US20080228435A1 (en)* | 2007-03-14 | 2008-09-18 | Korea Advanced Institute Of Science And Technology | Measurement system for correcting overlay measurement error |
| US7586899B1 (en)* | 2000-08-18 | 2009-09-08 | Juniper Networks, Inc. | Methods and apparatus providing an overlay network for voice over internet protocol applications |
| US20090310485A1 (en)* | 2008-06-12 | 2009-12-17 | Talari Networks Incorporated | Flow-Based Adaptive Private Network with Multiple Wan-Paths |
| CN101902315A (en)* | 2009-06-01 | 2010-12-01 | 华为技术有限公司 | Retransmission method, device and communication system based on forward error correction |
| CN102045362A (en)* | 2010-12-21 | 2011-05-04 | 北京高森明晨信息科技有限公司 | Data transmission method and system based on UDP protocol |
| US20110191111A1 (en)* | 2010-01-29 | 2011-08-04 | Polycom, Inc. | Audio Packet Loss Concealment by Transform Interpolation |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040236855A1 (en)* | 2003-05-23 | 2004-11-25 | Amir Peles | Multi-link tunneling |
| US9531508B2 (en)* | 2009-12-23 | 2016-12-27 | Pismo Labs Technology Limited | Methods and systems for estimating missing data |
| CN103618678A (en)* | 2013-11-18 | 2014-03-05 | 北京星网锐捷网络技术有限公司 | Method, device and system for self-adaptation multiple-link aggregation |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6810377B1 (en)* | 1998-06-19 | 2004-10-26 | Comsat Corporation | Lost frame recovery techniques for parametric, LPC-based speech coding systems |
| EP1086452B1 (en)* | 1999-04-19 | 2005-09-14 | AT & T Corp. | Method for performing packet loss concealment |
| US7586899B1 (en)* | 2000-08-18 | 2009-09-08 | Juniper Networks, Inc. | Methods and apparatus providing an overlay network for voice over internet protocol applications |
| US20040136564A1 (en)* | 2002-08-20 | 2004-07-15 | Helena Roeber | System and method for determining an input selected by a user through a virtual interface |
| US20060104366A1 (en)* | 2004-11-16 | 2006-05-18 | Ming-Yen Huang | MPEG-4 streaming system with adaptive error concealment |
| US20080228435A1 (en)* | 2007-03-14 | 2008-09-18 | Korea Advanced Institute Of Science And Technology | Measurement system for correcting overlay measurement error |
| US20090310485A1 (en)* | 2008-06-12 | 2009-12-17 | Talari Networks Incorporated | Flow-Based Adaptive Private Network with Multiple Wan-Paths |
| CN101902315A (en)* | 2009-06-01 | 2010-12-01 | 华为技术有限公司 | Retransmission method, device and communication system based on forward error correction |
| US20110191111A1 (en)* | 2010-01-29 | 2011-08-04 | Polycom, Inc. | Audio Packet Loss Concealment by Transform Interpolation |
| CN102045362A (en)* | 2010-12-21 | 2011-05-04 | 北京高森明晨信息科技有限公司 | Data transmission method and system based on UDP protocol |
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109324757A (en)* | 2018-08-22 | 2019-02-12 | 深圳前海微众银行股份有限公司 | Blockchain data scaling method, device and storage medium |
| CN109324757B (en)* | 2018-08-22 | 2021-05-21 | 深圳前海微众银行股份有限公司 | Block chain data capacity reduction method and device and storage medium |
| WO2024141776A1 (en)* | 2022-12-29 | 2024-07-04 | Pismo Labs Technology Limited | Methods for reducing packet loss during slow start of a session |
| GB2630194A (en)* | 2022-12-29 | 2024-11-20 | Pismo Labs Technology Ltd | Methods for reducing packet loss during slow start of a session |
| Publication number | Publication date |
|---|---|
| GB2542219B (en) | 2021-07-21 |
| GB2542219A (en) | 2017-03-15 |
| CN107078861B (en) | 2020-12-22 |
| WO2016170399A1 (en) | 2016-10-27 |
| Publication | Publication Date | Title |
|---|---|---|
| US9736047B2 (en) | Methods and systems for reducing network congestion | |
| US10958469B2 (en) | Methods and systems for increasing wireless communication throughput of a bonded VPN tunnel | |
| CN110912798B (en) | Method and system for transmitting data through aggregated connections | |
| US10116591B2 (en) | Methods and systems for transmitting data through an aggregated connection | |
| US11943060B2 (en) | Methods and systems for transmitting packets | |
| JP7050094B2 (en) | Packet transmission method, proxy server, and computer readable storage medium | |
| US9473274B2 (en) | Methods and systems for transmitting data through an aggregated connection | |
| CN107078861B (en) | Method and system for estimating missing data | |
| US20160277943A1 (en) | Network system, control method of network system, communication device, and program | |
| CN106797281B (en) | Method and system for transmitting data over an aggregated connection | |
| CN113014512B (en) | Network connection accelerated forwarding method based on N: M connection dynamic mapping | |
| HK1237557A1 (en) | Methods and systems for estimating missing data | |
| HK1237557B (en) | Methods and systems for estimating missing data | |
| HK40026999A (en) | Methods and systems for managing error correction mode | |
| CN119096527A (en) | Method for reducing packet loss in session slow start stage | |
| HK40022674A (en) | Methods and systems for transmitting data through an aggregated connection | |
| HK1232353B (en) | Methods and systems for transmitting data through an aggregated connection |
| 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 | ||
| REG | Reference to a national code | Ref country code:HK Ref legal event code:DE Ref document number:1237557 Country of ref document:HK | |
| GR01 | Patent grant | ||
| GR01 | Patent grant | ||
| TR01 | Transfer of patent right | ||
| TR01 | Transfer of patent right | Effective date of registration:20250702 Address after:Hongkong, China Patentee after:Perth Intelligent System Co.,Ltd. Country or region after:Hongkong, China Address before:Unit A5, 5th Floor, Phase 6, Hong Kong Textile Factory Industrial Building, 481 Castle Peak Road, Cheung Sha Wan, Kowloon, Hong Kong, China Patentee before:PISMO LABS TECHNOLOGY Ltd. Country or region before:Hongkong, China |