HK40113402A - Methods for reducing packet loss during slow start stage of a session - Google Patents
Methods for reducing packet loss during slow start stage of a session Download PDFInfo
- Publication number
- HK40113402A HK40113402A HK62024101156.3A HK62024101156A HK40113402A HK 40113402 A HK40113402 A HK 40113402A HK 62024101156 A HK62024101156 A HK 62024101156A HK 40113402 A HK40113402 A HK 40113402A
- Authority
- HK
- Hong Kong
- Prior art keywords
- network device
- connection
- network
- slow start
- congestion
- Prior art date
Links
Description
技术领域Technical Field
本发明一般涉及移动无线网络,具体涉及使用移动无线网络信息修改网络协议性能的系统和方法。This invention generally relates to mobile wireless networks, and more specifically to systems and methods for modifying network protocol performance using mobile wireless network information.
背景技术Background Technology
无线连接的连通性不可预测,丢包问题时有发生。传输控制协议(TCP)设计认为丢包是网络拥塞的结果。为了防止网络拥塞,引入了一系列拥塞控制算法,包括慢启动阶段和拥塞避免阶段。根据算法,在所述慢启动阶段,所述拥塞窗口将以指数方式增加。当出现丢包时,所述拥塞控制过程将进入所述拥塞避免阶段,所述拥塞窗口将以线性方式增加,而不是指数方式增加。为了进行TCP加速,本发明采用利用多个隧道的方案,在建立TCP会话之初增加数据成功传输的概率,这可以通过使用重复数据包来实现。Wireless connectivity is unpredictable, and packet loss is a frequent occurrence. The Transmission Control Protocol (TCP) is designed to assume that packet loss is a result of network congestion. To prevent network congestion, a series of congestion control algorithms are introduced, including a slow start phase and a congestion avoidance phase. According to the algorithms, in the slow start phase, the congestion window increases exponentially. When packet loss occurs, the congestion control process enters the congestion avoidance phase, where the congestion window increases linearly, rather than exponentially. To accelerate TCP, this invention employs a scheme utilizing multiple tunnels to increase the probability of successful data transmission at the beginning of a TCP session. This can be achieved by using duplicate data packets.
由此,可以避免大量丢包,并最大化所述指数增加的持续时间。This avoids significant packet loss and maximizes the duration of the exponential increase.
发明概要Invention Summary
本发明公开了在网络设备上传输数据包的方法和系统。根据本发明的公开内容,所述网络设备确定所述接收的数据包是否属于新会话。当所述数据包属于新会话时,所述网络设备根据第一选择策略选择第一连接,并根据第二选择策略选择至少一个第二连接。之后,所述网络设备通过所述第一连接传输原始封装包(OEP)。所述网络设备还通过至少一个第二连接传输与每个OEP相对应的至少一个重复封装包(DEP),直到达到特定时间段。当达到所述特定时间段时,通过第三连接传输每个OEP,并停止至少一个DEP的所述传输。This invention discloses a method and system for transmitting data packets on a network device. According to the disclosure of this invention, the network device determines whether a received data packet belongs to a new session. When the data packet belongs to a new session, the network device selects a first connection according to a first selection strategy and selects at least one second connection according to a second selection strategy. Then, the network device transmits an Original Encapsulated Packet (OEP) through the first connection. The network device also transmits at least one Duplicate Encapsulated Packet (DEP) corresponding to each OEP through at least one second connection until a specific time period is reached. When the specific time period is reached, each OEP is transmitted through a third connection, and the transmission of at least one DEP is stopped.
本发明的网络设备接收的所述数据包可以最初来源于与所述网络设备连接的主机。在本发明的一个实现中,所述特定时间段可以是TCP数据会话建立阶段的慢启动阶段内的时间段。The data packets received by the network device of the present invention may initially originate from a host connected to the network device. In one implementation of the present invention, the specific time period may be a time period within the slow start phase of the TCP data session establishment phase.
对于每个所述OEP,传输的DEP数量没有限制。同样,对于所述网络设备用于传输DEP的所述连接数量也没有限制。在一个变体中,所述OEP和所述DEP通过聚合连接进行传输。There is no limit to the number of DEPs transmitted for each OEP. Similarly, there is no limit to the number of connections used by the network device to transmit DEPs. In one variant, the OEP and the DEP are transmitted via aggregated connections.
附图简要说明Brief description of the attached figures
图1是根据本发明的实施例的示例性网络设备100的示意框图。Figure 1 is a schematic block diagram of an exemplary network device 100 according to an embodiment of the present invention.
图2是根据本发明的各种实施例的网络图。Figure 2 is a network diagram according to various embodiments of the present invention.
图3是示出根据本发明的各种实施例的网络设备之间建立的隧道的网络图。Figure 3 is a network diagram illustrating tunnels established between network devices according to various embodiments of the present invention.
图4是示出根据本发明的实施例在所述慢启动阶段在所述网络设备处执行的过程的流程图。Figure 4 is a flowchart illustrating the process performed at the network device during the slow start phase according to an embodiment of the present invention.
图5A示出了根据常规拥塞控制过程实现的所述拥塞窗口大小与TCP会话的传输数据包的时间之间的关系。Figure 5A illustrates the relationship between the congestion window size and the time it takes for a TCP session to transmit data packets, as implemented according to a conventional congestion control process.
图5B示出了根据本拥塞控制过程实现TCP会话的所述拥塞窗口大小与传输数据包的时间之间的关系。Figure 5B illustrates the relationship between the congestion window size and the time to transmit data packets in implementing a TCP session according to this congestion control procedure.
图6A示出了根据本发明的各种实施例的OEP的结构。Figure 6A illustrates the structure of an OEP according to various embodiments of the present invention.
图6B示出了根据本发明的各种实施例的DEP的结构。Figure 6B illustrates the structure of a DEP according to various embodiments of the present invention.
具体实施例Specific Implementation
本发明提供了所述用于在慢启动阶段减少丢包以提高网络性能的系统和方法,这有利于解决上述需求。The present invention provides a system and method for reducing packet loss during the slow start phase to improve network performance, which helps to address the above-mentioned needs.
以下描述仅提供优选示例性实施例和示例性实施例,并非旨在限制本发明的范围、适用性或配置。相反,以下对优选示例性实施例和示例性实施例的描述将为本领域技术人员提供实施本发明优选示例性实施例的可行描述。可以理解,在不脱离附加权利要求中所述的本发明的精神和范围的情况下,可以对元件的功能和布置进行各种改变。The following description provides only preferred and exemplary embodiments and is not intended to limit the scope, applicability, or configuration of the invention. Rather, the following description of preferred and exemplary embodiments will provide those skilled in the art with a description of feasible implementation of the preferred exemplary embodiments of the invention. It will be understood that various changes can be made to the function and arrangement of the elements without departing from the spirit and scope of the invention as set forth in the appended claims.
处理单元执行用于实施本发明实施例的程序指令或代码段。此外,实施例可以通过硬件、软件、固件、中间件、微代码、硬件描述语言,或它们的任何组合来实现。当实施例要通过软件、固件、中间件或微代码来实现时,执行必要任务的程序指令可以存储在计算机可读存储介质中。处理单元可以通过虚拟化来实现,且可以是虚拟处理单元,包括基于云的实例中的虚拟处理单元。The processing unit executes program instructions or code segments for implementing embodiments of the present invention. Furthermore, embodiments can be implemented using hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When embodiments are to be implemented using software, firmware, middleware, or microcode, program instructions for performing necessary tasks can be stored in a computer-readable storage medium. The processing unit can be implemented via virtualization and can be a virtual processing unit, including virtual processing units in cloud-based instances.
构成各种实施例的程序指令可以存储在存储介质中。此外,如本文所公开的,术语“计算机可读存储介质”可以表示用于存储数据的一个或多个设备,包括只读存储器(ROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、随机存取存储器(RAM)、磁性RAM、核心存储器、软盘、柔性盘、硬盘、磁带、CD-ROM、闪存设备、存储卡和/或用于存储信息的其他机器可读介质。所述术语“计算机可读存储介质”还可以包括但不限于便携式或固定式存储设备、光存储介质、磁性介质、存储芯片或盒式磁带、无线信道以及能够存储、包含或承载指令和/或数据的各种其他介质。计算机可读存储介质可以通过虚拟化实现,并且可能是虚拟的计算机可读存储介质,包括基于云的实例中的虚拟计算机可读存储介质。The program instructions constituting various embodiments may be stored in a storage medium. Furthermore, as disclosed herein, the term "computer-readable storage medium" can 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, core memory, floppy disk, flexible disk, hard disk, magnetic tape, CD-ROM, flash memory device, memory card, and/or other machine-readable media for storing information. The term "computer-readable storage medium" may also include, but is not limited to, portable or fixed storage devices, optical storage media, magnetic media, memory chips or magnetic tape cassettes, wireless channels, and various other media capable of storing, containing, or carrying instructions and/or data. Computer-readable storage media can be implemented through virtualization and may be virtual computer-readable storage media, including virtual computer-readable storage media in cloud-based instances.
本发明的实施例涉及使用计算机系统来实现本文所述的技术。在一个实施例中,本发明的处理单元可以驻留在诸如计算机平台之类的机器上。根据本发明的一个实施例,本文所述的技术由计算机系统响应于所述处理单元执行所述易失性存储器中包含的一个或多个指令的一个或多个序列而执行。此类指令可以从另一个计算机可读介质读入易失性存储器。所述易失性存储器中包含的所述指令序列的执行导致所述处理单元执行本文所述的处理步骤。在替代实施例中,可以使用硬连线电路代替或与软件指令结合来实施本发明。因此,本发明的实施例不限于硬件电路和软件的任何特定组合。Embodiments of the present invention relate to implementing the techniques described herein using a computer system. In one embodiment, the processing unit of the present invention may reside on a machine such as a computer platform. According to one embodiment of the present invention, the techniques described herein are executed by a computer system in response to the processing unit executing one or more sequences of one or more instructions contained in the volatile memory. Such instructions may be read into the volatile memory from another computer-readable medium. Execution of the sequence of instructions contained in the volatile memory causes the processing unit to perform the processing steps described herein. In alternative embodiments, the present invention may be implemented using hardwired circuitry instead of or in combination with software instructions. Therefore, embodiments of the present invention are not limited to any particular combination of hardware circuitry and software.
此外,值得注意的是,所述实施例可以描述为流程图、数据流程图、结构图或框图所示的过程。尽管流程图可以将所述操作描述为顺序过程,但许多所述操作可以并行或同时执行。此外,所述操作的顺序可以重新排列。当操作完成时,进程终止,但可能具有所述图中未包括的附加步骤。进程可以对应于方法、函数、过程、子例程、子程序等。当进程对应于函数时,其终止对应于所述函数返回到所述调用函数或所述主函数。Furthermore, it is worth noting that the embodiments described can be depicted as processes shown in flowcharts, data flow diagrams, structure diagrams, or block diagrams. Although a flowchart may describe the operations as a sequential process, many of the operations can be executed in parallel or simultaneously. Moreover, the order of the operations can be rearranged. When an operation is completed, the process terminates, but may have additional steps not included in the diagram. A process can correspond to a method, function, procedure, subroutine, subroutine, etc. When a process corresponds to a function, its termination corresponds to the function returning to the calling function or the main function.
此外,如本文所公开的,术语“辅助存储器”和“主存储器”可以表示用于存储数据的一个或多个设备,包括ROM、RAM、磁性RAM、核心存储器、磁盘存储介质、光学存储介质、闪存设备和/或用于存储信息的其他机器可读介质。术语“机器可读介质”包括但不限于便携式或固定存储设备、光学存储设备、无线信道和能够存储、包含或携带指令和/或数据的各种其他介质。机器可读介质可以通过虚拟化实现,并且可以是虚拟机器可读介质,包括基于云的实例中的虚拟机器可读介质。Furthermore, as disclosed herein, the terms "auxiliary storage" and "main storage" can refer to one or more devices used for storing data, including ROM, RAM, magnetic RAM, core memory, disk storage media, optical storage media, flash memory devices, and/or other machine-readable media used for storing information. The term "machine-readable media" includes, but is not limited to, portable or fixed storage devices, optical storage devices, wireless channels, and various other media capable of storing, containing, or carrying instructions and/or data. Machine-readable media can be implemented through virtualization and can be virtual machine-readable media, including virtual machine-readable media in cloud-based instances.
此外,实施例可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或它们的任何组合来实现。当以软件、固件、中间件或微代码来实现时,用于执行所述必要任务的所述程序代码或代码段可以存储在机器可读介质中,例如存储介质。处理单元可以执行所述必要的任务。处理单元可以是CPU、ASIC半导体芯片、半导体芯片、逻辑单元、数字处理器、模拟处理器、FPGA或能够执行逻辑和算术功能的任何处理器。代码段可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类或指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、参数、参数或内存内容而耦合到另一代码段或硬件电路。信息、论据、参数、数据等可以通过任何合适的方式传递、转发或传输,包括内存共享、消息传递、令牌传递、网络传输等。处理单元可以通过虚拟化实现,可以是虚拟处理单元,包括基于云的实例中的虚拟处理单元。Furthermore, embodiments can be implemented using hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented as software, firmware, middleware, or microcode, the program code or code segments used to perform the necessary tasks can be stored in a machine-readable medium, such as a storage medium. The processing unit can perform the necessary tasks. The processing unit can be a CPU, ASIC semiconductor chip, semiconductor chip, logic unit, digital processor, analog processor, FPGA, or any processor capable of performing logic and arithmetic functions. Code segments can represent any combination of procedures, functions, subroutines, programs, routines, subroutines, modules, software packages, classes, or instructions, data structures, or program statements. Code segments can be coupled to another code segment or hardware circuitry by passing and/or receiving information, data, parameters, arguments, or memory contents. Information, arguments, parameters, data, etc., can be passed, forwarded, or transmitted in any suitable manner, including memory sharing, message passing, token passing, network transmission, etc. The processing unit can be implemented via virtualization and can be a virtual processing unit, including virtual processing units in cloud-based instances.
端到端连接可以使用面向连接的协议,例如TCP,或无连接的协议,例如用户数据报协议(UDP)来传输数据包。部署端到端连接的著名协议包括第2层隧道协议(L2TP)、安全外壳(SSH)协议、多协议标签交换(MPLS)和微软的点对点隧道协议(PPTP)。连接到网络接口的连接采用光纤、以太网、ATM、帧中继、T1/E1、IPv4、IPv6、无线技术、Wi-Fi、WiMax、高速分组接入(HSPA)技术、3GPP、长期演进(LTE)等形式。End-to-end connections can use connection-oriented protocols, such as TCP, or connectionless protocols, such as User Datagram Protocol (UDP), to transmit data packets. Well-known protocols for deploying end-to-end connections include Layer 2 Tunneling Protocol (L2TP), Secure Shell (SSH), Multiprotocol Label Switching (MPLS), and Microsoft's Point-to-Point Tunneling Protocol (PPTP). Connections to network interfaces can take the form of fiber optics, Ethernet, ATM, Frame Relay, T1/E1, IPv4, IPv6, wireless technologies, Wi-Fi, WiMax, High-Speed Packet Access (HSPA), 3GPP, and Long Term Evolution (LTE).
图1是根据本发明实施例的示例性网络设备100的示意框图。网络设备100包括至少一个存储单元101、至少一个I/O接口102、至少一个存储器103、至少一个处理单元104和多个网络接口105。存储单元101可以包含可由处理单元104执行的计算机程序指令,以实现本公开的一个或多个方面。处理单元104和存储器103直接相互连接。系统总线106将处理单元104直接或间接地连接到至少一个存储单元101、至少一个I/O接口102和多个网络接口105。Figure 1 is a schematic block diagram of an exemplary network device 100 according to an embodiment of the present invention. The network device 100 includes at least one storage unit 101, at least one I/O interface 102, at least one memory 103, at least one processing unit 104, and a plurality of network interfaces 105. The storage unit 101 may contain computer program instructions executable by the processing unit 104 to implement one or more aspects of the present disclosure. The processing unit 104 and the memory 103 are directly interconnected. A system bus 106 directly or indirectly connects the processing unit 104 to at least one storage unit 101, at least one I/O interface 102, and the plurality of network interfaces 105.
在另一实施例中,网络设备100还可以包括至少一个SIM接口107和至少一个带有至少一个天线109的无线通信模块(WCM)108。SIM或电子SIM能够容纳在至少一个SIM接口107的SIM接口中或耦合到该SIM接口,并通过至少一个带有至少一个天线109的WCM 108建立广域网(WAN)连接。In another embodiment, the network device 100 may further include at least one SIM interface 107 and at least one wireless communication module (WCM) 108 with at least one antenna 109. A SIM or electronic SIM can be housed in or coupled to the SIM interface of at least one SIM interface 107, and establish a wide area network (WAN) connection through at least one WCM 108 with at least one antenna 109.
网络设备100可以通过至少一个网络接口105连接到有线或无线接入网。所述有线或无线接入网可以承载一个或多个网络协议数据。所述有线接入网可以使用以太网、光纤、电缆、DSL、帧中继、令牌环、串行总线、USB、火线、PCI或任何可以传递信息的材料来实现。所述无线接入网可以使用红外、LTE、5G、低地球轨道(LEO)卫星、HSPA、HSPA+、WiMax、GPRS、EDGE、GSM、CDMA、Wi-Fi、CDMA2000、WCDMA、TD-SCDMA、蓝牙、WiBRO、演进数据优化(EV-DO);数字增强型无绳电信(DECT);数字AMPS(IS-136/TDMA);集成数字增强(iDEN)或任何其他无线技术来实现。可以在接入网上建立WAN连接以连接两个网络。Network device 100 can be connected to a wired or wireless access network via at least one network interface 105. The wired or wireless access network can carry one or more network protocol data. The wired access network can be implemented using Ethernet, fiber optic cable, cable, DSL, Frame Relay, Token Ring, serial bus, USB, FireWire, PCI, or any material capable of transmitting information. The wireless access network can be implemented using infrared, LTE, 5G, Low Earth Orbit (LEO) satellite, HSPA, HSPA+, WiMax, GPRS, EDGE, GSM, CDMA, Wi-Fi, CDMA2000, WCDMA, TD-SCDMA, Bluetooth, WiBRO, Evolved Data Optimized (EV-DO); Digital Enhanced Cordless Telecommunications (DECT); Digital AMPS (IS-136/TDMA); Integrated Digital Enhancement (iDEN); or any other wireless technology. A WAN connection can be established on the access network to connect two networks.
图2是根据本发明的各种实施例的网络图。网络设备200和网络设备202类似于图1中所示的网络设备100。网络设备200和网络设备202分别位于站点205和站点206。网络设备200和202可以体现为支持聚合多个WAN间(WAN-to-WAN)连接的带宽的多WAN网络设备。网络设备200和202通过互连网络204连接。互连网络204是互连网络,其可以包括局域网(LAN),例如公司内部网、城域网(MAN),或WAN,例如互联网或万维网。Figure 2 is a network diagram according to various embodiments of the present invention. Network devices 200 and 202 are similar to network device 100 shown in Figure 1. Network devices 200 and 202 are located at sites 205 and 206, respectively. Network devices 200 and 202 may be embodied as multi-WAN network devices supporting the aggregation of bandwidth for multiple WAN-to-WAN connections. Network devices 200 and 202 are connected via interconnection network 204. Interconnection network 204 is an interconnection network that may include a local area network (LAN), such as a corporate intranet, a metropolitan area network (MAN), or a WAN, such as the Internet or the World Wide Web.
在站点205,笔记本电脑201a和台式电脑201b通过网络设备200的第一网络接口连接到网络设备200。在站点206,服务器203通过网络设备202的第一网络接口连接到网络设备202。At site 205, laptop computer 201a and desktop computer 201b are connected to network device 200 via the first network interface of network device 200. At site 206, server 203 is connected to network device 202 via the first network interface of network device 202.
在一个实施例中,站点205和站点206位于同一地区或国家,例如美国。In one embodiment, site 205 and site 206 are located in the same region or country, such as the United States.
在另一个实施例中,站点205和站点206位于不同的地区或国家,例如分别位于美国和新加坡。In another embodiment, site 205 and site 206 are located in different regions or countries, such as the United States and Singapore, respectively.
网络设备200包括至少一个能够连接到接入网的网络接口,网络设备202包括至少一个能够连接到接入网的网络接口。接入网是可以实现对互连网络204的访问的网络。笔记本电脑201a和台式机201b可通过网络设备200的所述第一网络接口连接到网络设备200。类似地,服务器203可通过网络设备202的所述第一网络接口连接到网络设备202。服务器203可位于网络设备202的所述LAN中。Network device 200 includes at least one network interface capable of connecting to an access network, and network device 202 includes at least one network interface capable of connecting to an access network. The access network is a network that enables access to the interconnected network 204. Laptop 201a and desktop 201b can be connected to network device 200 via the first network interface of network device 200. Similarly, server 203 can be connected to network device 202 via the first network interface of network device 202. Server 203 may be located within the LAN of network device 202.
在一个实施例中,网络设备200的所述至少一个网络接口中的每个和网络设备202的所述至少一个网络接口中的每个可以是WAN接口。在一个实施例中,所述WAN接口可使用WCM和天线来实现,其能够与所述互联网服务提供商的基站连接。In one embodiment, each of the at least one network interface of network device 200 and each of the at least one network interface of network device 202 may be a WAN interface. In one embodiment, the WAN interface may be implemented using a WCM and an antenna, which enables connection to the base station of the Internet service provider.
在一个变体中,天线是用于LEO卫星的非全向天线。In one variant, the antenna is a non-omnidirectional antenna used for LEO satellites.
在另一个实施例中,网络设备200的所述至少一个网络接口中的每个和网络设备202的所述至少一个网络接口中的每个可以是LAN接口。网络设备200和202中的每个都能够通过将LAN接口配置为WAN接口而通过所述LAN接口连接到所述互连网络。In another embodiment, each of the at least one network interface of network device 200 and each of the at least one network interface of network device 202 may be a LAN interface. Each of network devices 200 and 202 is capable of connecting to the interconnected network via the LAN interface by configuring the LAN interface as a WAN interface.
网络设备200可以包括能够连接到三个接入网207a-c的三个网络接口,而网络设备202可以包括能够连接到两个接入网208a-b的两个网络接口。因此,可以通过接入网207a-c和208a-b创建六个连接。但是,这些配置可能根据所述所需的网络设备和配置而变化。对网络设备200和202的网络接口数量没有限制,所述指定网络设备200的三个网络接口和网络设备202的两个网络接口仅用于说明目的。如图3所示,在网络设备200和网络设备202之间建立所述连接。Network device 200 may include three network interfaces capable of connecting to three access networks 207a-c, while network device 202 may include two network interfaces capable of connecting to two access networks 208a-b. Therefore, six connections can be created through access networks 207a-c and 208a-b. However, these configurations may vary depending on the required network devices and configurations. There is no limitation on the number of network interfaces for network devices 200 and 202; the specified three network interfaces for network device 200 and two network interfaces for network device 202 are for illustrative purposes only. As shown in Figure 3, the connection is established between network device 200 and network device 202.
图3示出了根据本发明的示例性实施例在两个网络设备之间建立的所述连接。为了便于说明,应结合图2来查看图3。通过网络设备200和202之间建立的至少一个连接,可以在网络设备200的同一LAN内的主机和网络设备202的同一LAN内的主机之间建立至少一个端到端连接。每个连接都可以通过网络设备200的网络接口和网络设备202的网络接口建立。如果网络设备200包括M个网络接口,网络设备202包括N个网络接口,则在网络设备200和202之间建立M*N个连接。Figure 3 illustrates the connection established between two network devices according to an exemplary embodiment of the present invention. For clarity, Figure 3 should be viewed in conjunction with Figure 2. At least one end-to-end connection can be established between hosts within the same LAN of network device 200 and hosts within the same LAN of network device 202 through at least one connection established between network devices 200 and 202. Each connection can be established through the network interfaces of network device 200 and network device 202. If network device 200 includes M network interfaces and network device 202 includes N network interfaces, then M*N connections are established between network devices 200 and 202.
例如,如果网络设备200包括三个网络接口,网络设备202包括两个网络接口,则在网络设备200和202的网络接口之间建立连接时,可以创建六个连接209a-f,如图3所示。笔记本电脑201a和服务器203之间建立的所述至少一个端到端连接可以通过六个连接中的至少一个建立。For example, if network device 200 includes three network interfaces and network device 202 includes two network interfaces, then when establishing a connection between the network interfaces of network devices 200 and 202, six connections 209a-f can be created, as shown in Figure 3. The at least one end-to-end connection established between laptop 201a and server 203 can be established through at least one of these six connections.
所述M和N的值可以根据所需设备和配置而变化。所述M和N的数量没有限制,M和N可以是任何正整数,使得M和N的总和等于或大于三。在另一个示例中,M等于一,N等于二,从而创建两个连接。The values of M and N can vary depending on the required device and configuration. There is no limit to the number of M and N; M and N can be any positive integer such that the sum of M and N is equal to or greater than three. In another example, M equals one and N equals two, thus creating two connections.
网络设备200和202的接入网络是用于在站点205和206之间的互连网络204内传递信息的接入连接。The access networks of network devices 200 and 202 are access connections used to transmit information within the interconnection network 204 between sites 205 and 206.
连接209a-f可以具有相似或不同的带宽能力。此外,网络设备200和202的接入网络可以包括不同类型的WAN连接,例如Wi-Fi、电缆、DSL、3G、4G、LTE、5G、卫星连接等。还要注意的是,站点205和206可以被视为所述发送方和所述接收方,并且关于任一站点的所述功能的讨论可以在所述另一个站点上实现。连接209a-f对应于站点205的接入网络和站点206的接入网络的唯一排列。Connections 209a-f can have similar or different bandwidth capabilities. Furthermore, the access networks of network devices 200 and 202 can include different types of WAN connections, such as Wi-Fi, cable, DSL, 3G, 4G, LTE, 5G, satellite connections, etc. It should also be noted that sites 205 and 206 can be considered as the sender and the receiver, and discussions regarding the functionality of either site can be implemented at the other site. Connections 209a-f correspond to a unique arrangement of the access networks of site 205 and site 206.
在一个实施例中,在网络设备200和202之间形成聚合连接。所述多个连接可以聚合、组合或绑定在一起以形成一个聚合连接。本领域技术人员将理解,有无数种方法可以聚合、组合或绑定多个连接以形成一个聚合连接。聚合连接被使用它的会话或应用程序视为一个连接。聚合连接可以被视为隧道、虚拟专用网络(VPN)连接或面向连接的连接。In one embodiment, an aggregated connection is formed between network devices 200 and 202. The multiple connections may be aggregated, combined, or bound together to form a single aggregated connection. Those skilled in the art will understand that there are numerous ways to aggregate, combine, or bind multiple connections to form a single aggregated connection. The aggregated connection is treated as a single connection by the session or application using it. An aggregated connection may be considered a tunnel, a Virtual Private Network (VPN) connection, or a connection-oriented connection.
例如,所述聚合连接是网络设备200和202之间建立的多个连接(例如连接209a-f)的聚合。可以在创建TCP会话时创建所述聚合连接。例如,当笔记本电脑201a尝试与服务器203连接时,通过网络设备200和202在笔记本电脑201a和服务器203之间建立所述聚合连接。For example, the aggregated connection is an aggregation of multiple connections (e.g., connections 209a-f) established between network devices 200 and 202. The aggregated connection can be created when a TCP session is created. For example, when laptop 201a attempts to connect to server 203, the aggregated connection is established between laptop 201a and server 203 via network devices 200 and 202.
在另一个示例中,所述聚合连接是VPN隧道,包括多个隧道,每个隧道建立在网络设备200和202的网络接口之间。In another example, the aggregated connection is a VPN tunnel, comprising multiple tunnels, each established between the network interfaces of network devices 200 and 202.
在一个示例中,所述聚合连接是TCP连接。In one example, the aggregated connection is a TCP connection.
在另一个示例中,所述聚合连接是UDP连接。In another example, the aggregated connection is a UDP connection.
为了便于说明,当笔记本电脑201a尝试通过网络设备200和202与服务器203建立连接时,会创建TCP会话。当创建所述TCP会话后,网络设备200可以通过网络设备200的所述网络接口和网络设备202的所述网络接口通过连接传输数据包。此时,所述拥塞控制过程开始。For ease of explanation, when laptop 201a attempts to establish a connection with server 203 through network devices 200 and 202, a TCP session is created. After the TCP session is created, network device 200 can transmit data packets through the network interface of network device 200 and the network interface of network device 202. At this point, the congestion control process begins.
在一个实施例中,根据分配给所述聚合连接的每个连接的权重,通过所述聚合连接中的连接传输数据包,并为所述聚合连接的每个连接确定默认权重。在对所述连接的权重的任何修改或更改之前,默认初始为每个连接分配所述默认权重。In one embodiment, data packets are transmitted through connections in the aggregated connection according to the weights assigned to each connection, and a default weight is determined for each connection in the aggregated connection. The default weights are initially assigned to each connection by default before any modification or change to the weights of the connections.
在一个示例中,根据每个所述接入网络的所述交换的上行链路和下行链路带宽数据为每个所述接入网络确定和/或分配默认权重。In one example, a default weight is determined and/or assigned to each access network based on the uplink and downlink bandwidth data of the exchange for each access network.
在另一个示例中,根据可能影响所述接入网络所述性能的标准,为每个所述接入网络确定和/或分配默认权重。In another example, default weights are determined and/or assigned to each access network based on criteria that may affect the performance of the access network.
假设站点205的接入网络1至a的下行链路带宽为d1、d2、...、dm,站点206的接入网络1至b的上行链路带宽为u1、u2、...、un;站点205的接入网络x和站点104的接入网络y之间的连接的默认权重可以定义为DW(x,y),其中DW(x,y)=dx·uy。Assume that the downlink bandwidth of access network 1 to a of site 205 is d1, d2, ..., dm, and the uplink bandwidth of access network 1 to b of site 206 is u1, u2, ..., un; the default weight of the connection between access network x of site 205 and access network y of site 104 can be defined as DW(x,y), where DW(x,y) = dx·uy.
可以使用上述方法计算所述默认权重。若网络设备200的所述三个接入网络上/下行带宽分别为10M/6M、8M/4M、6M/6M,网络设备202的两个接入网络上/下行带宽分别为7M/5M、9M/3M,则每个连接的所述默认权重为:The default weights can be calculated using the method described above. If the uplink/downlink bandwidths of the three access networks of network device 200 are 10M/6M, 8M/4M, and 6M/6M respectively, and the uplink/downlink bandwidths of the two access networks of network device 202 are 7M/5M and 9M/3M respectively, then the default weight for each connection is:
计算所述默认权重的方法有很多种,上述方法仅用于说明目的。There are many ways to calculate the default weights; the methods described above are for illustrative purposes only.
在另一个实施例中,数据包通过所述聚合连接的一组连接传输。所述聚合连接的每个连接被分类为不同的连接组,并且至少部分地基于所述连接被分类到的组通过所述连接传输数据。连接被分类到的组的数量没有限制,根据所述每个连接组的标准,连接可以被分类到多个连接组。In another embodiment, data packets are transmitted through a group of connections of the aggregated connection. Each connection of the aggregated connection is classified into a different connection group, and data is transmitted through the connection at least in part based on the group to which the connection is classified. There is no limit to the number of groups to which a connection is classified, and a connection can be classified into multiple connection groups according to the criteria of each connection group.
主要使用两个参数来控制已建立连接的拥塞,即所述拥塞窗口大小(cwnd)和慢启动阈值(ssthresh)。所述已建立的连接由所述网络设备通过在拥塞控制过程的四个阶段中控制所述连接的所述数据包传输速率来控制,即:Two main parameters are used to control congestion in established connections: the congestion window size (cwnd) and the slow start threshold (ssthresh). The established connections are controlled by the network device through four phases of the congestion control process, specifically by controlling the packet transmission rate of the connection.
(i)慢启动阶段,(ii)拥塞避免阶段,(iii)快速重传阶段,和(iv)快速恢复阶段。(i) Slow start phase, (ii) Congestion avoidance phase, (iii) Fast retransmit phase, and (iv) Fast recovery phase.
在一个优选实施例中,会话建立后,所述拥塞控制过程在三次握手之前开始。In a preferred embodiment, the congestion control process begins after the session is established, prior to the three-way handshake.
在另一个实施例中,会话建立后,所述拥塞控制过程在三次握手之后开始。In another embodiment, the congestion control process begins after a three-way handshake, once the session is established.
当网络设备200从笔记本电脑201a接收到要传输到服务器203的第一个数据包时,服务器203通过LAN本地连接到网络设备202。网络设备200可以通过所述建立的聚合连接将所述数据包发送到网络设备202。此时,所述拥塞窗口的大小变为1。本领域技术人员将理解,在接收到所述第一个数据包后,网络设备200可以接收到更多的数据包。如果网络设备200从笔记本电脑201a接收到更多发往服务器203的数据包,则网络设备200可以根据所述拥塞窗口的大小在接收到所述前一个数据包的所述确认后发出所述后续数据包。When network device 200 receives the first data packet destined for server 203 from laptop 201a, server 203 is locally connected to network device 202 via LAN. Network device 200 can then send the data packet to network device 202 through the established aggregated connection. At this time, the congestion window size becomes 1. Those skilled in the art will understand that after receiving the first data packet, network device 200 can receive more data packets. If network device 200 receives more data packets destined for server 203 from laptop 201a, network device 200 can send subsequent data packets after receiving the acknowledgment of the previous data packet, depending on the congestion window size.
当服务器203成功接收到所述第一个数据包时,网络设备200随后可通过网络设备202从服务器203接收所述第一个数据包的确认,并且所述拥塞窗口的大小增加,直到达到所述慢启动阈值。为了便于说明,在接收到确认后,通过将所述原始大小加倍(新cwnd=cwnd*2)来增加所述拥塞窗口的大小。When server 203 successfully receives the first data packet, network device 200 can then receive an acknowledgment of the first data packet from server 203 via network device 202, and the size of the congestion window increases until the slow start threshold is reached. For ease of explanation, after receiving the acknowledgment, the size of the congestion window is increased by doubling the original size (new cwnd = cwnd * 2).
当网络设备200通过网络设备202从服务器203成功接收到所述第一个数据包的所述确认时,网络设备200可尝试通过网络设备202向服务器203传输第二个和第三个数据包,并且所述拥塞窗口的大小变为2。所述第二个和第三个数据包是从笔记本电脑201a接收的。当网络设备200通过网络设备202从服务器203成功接收到所述第二个和第三个数据包的所述确认时,网络设备200可尝试通过网络设备202向服务器203传输第四个、第五个、第六个和第七个数据包,并且所述拥塞窗口的大小变为4,因此所述拥塞窗口的大小呈指数增加,直到达到所述慢启动阈值(即cwnd=ssthresh)。When network device 200 successfully receives the acknowledgment of the first data packet from server 203 via network device 202, network device 200 may attempt to transmit the second and third data packets to server 203 via network device 202, and the size of the congestion window becomes 2. The second and third data packets are received from laptop 201a. When network device 200 successfully receives the acknowledgment of the second and third data packets from server 203 via network device 202, network device 200 may attempt to transmit the fourth, fifth, sixth, and seventh data packets to server 203 via network device 202, and the size of the congestion window becomes 4. Therefore, the size of the congestion window increases exponentially until the slow start threshold (i.e., cwnd = ssthresh) is reached.
所述拥塞窗口大小并不一定要按指数方式增加,可以应用任何其他合适的增加所述拥塞窗口大小的算法。又例如,在接收到确认后,将所述拥塞窗口大小增加2(新cwnd=cwnd+2)。The congestion window size does not necessarily have to increase exponentially; any other suitable algorithm for increasing the congestion window size can be applied. For example, upon receiving an acknowledgment, the congestion window size can be increased by 2 (new cwnd = cwnd + 2).
当拥所述塞窗口大小达到所述慢启动阈值时,所述数据包传输从所述慢启动阶段进入所述拥塞避免阶段,以修复网络崩溃。在所述拥塞避免阶段,所述拥塞窗口大小不再按上述指数方式增加,而是线性增加。一段时间后,所述TCP传输速率超过所述网络连接容量,从而导致丢包。但是,在所述拥塞避免阶段之前,即在所述慢启动阶段,可能会发生丢包或超时。When the congestion window size reaches the slow start threshold, packet transmission transitions from the slow start phase to the congestion avoidance phase to repair network failure. During the congestion avoidance phase, the congestion window size no longer increases exponentially but linearly. After a period of time, the TCP transmission rate exceeds the network connection capacity, leading to packet loss. However, packet loss or timeouts may occur before the congestion avoidance phase, i.e., during the slow start phase.
图4是根据本发明的一个实施例示出在所述慢启动阶段期间在所述网络设备处执行的过程的流程图。Figure 4 is a flowchart illustrating a process performed at the network device during the slow start phase according to an embodiment of the present invention.
当所述网络设备从主机,例如笔记本电脑201a,接收数据包时,将针对每个接收到的数据包开始该过程。When the network device receives data packets from a host, such as a laptop 201a, the process will begin for each received data packet.
在过程401中,网络设备200可以确定是否建立了新会话。所述会话可以是TCP会话或UDP会话。In process 401, network device 200 can determine whether a new session has been established. The session can be a TCP session or a UDP session.
在一个实施例中,所述网络设备通过识别接收到的数据包是否属于新会话来确定是否建立了新会话。例如,为了确定接收到的数据包是否是新会话的第一个数据包,网络设备200的处理单元可以读取所述接收到的数据包的所述报头中包含的以下一个或多个信息:源地址、源端口、目标地址、目标端口和协议。In one embodiment, the network device determines whether a new session has been established by identifying whether the received data packet belongs to a new session. For example, to determine whether the received data packet is the first data packet of a new session, the processing unit of the network device 200 may read one or more of the following information contained in the header of the received data packet: source address, source port, destination address, destination port, and protocol.
当接收的数据包不是新会话的第一个数据包时,所述网络设备将通过预选连接路由所述接收的数据包,并继续对下一个接收的数据包应用确定过程401。当确定了所述接收的数据包所属的所述数据会话的第一个数据包时,可以开始选择所述预选连接。在一个变体中,当所述接收的数据包不是新会话的第一个数据包时,所述网络设备确定所述接收的数据包是否是现有会话的最后一个数据包。如果所述接收的数据包是所述现有会话的最后一个数据包,则显然下一个要接收的数据包将是新会话的第一个数据包。因此,所述网络设备可以在接收新会话的第一个数据包之前提前执行过程402和403。因此,当接收到所述下一个数据包时,所述网络设备将不需要执行过程401-403,而是可以跳到过程404。这将显著地促进本发明加速数据会话的建立并减少新数据会话建立阶段的处理负荷。所述接收的数据包是否是所述现用会话的最后一个数据包可以基于所述接收数据包的源地址、源端口、目的地址、目的端口和/或协议中的一个或多个来确定。When the received data packet is not the first data packet of a new session, the network device routes the received data packet through a pre-selected connection and continues to apply determination process 401 to the next received data packet. Once the first data packet of the data session to which the received data packet belongs is determined, the pre-selected connection can be selected. In one variant, when the received data packet is not the first data packet of a new session, the network device determines whether the received data packet is the last data packet of the existing session. If the received data packet is the last data packet of the existing session, then obviously the next data packet to be received will be the first data packet of the new session. Therefore, the network device can perform processes 402 and 403 in advance before receiving the first data packet of the new session. Therefore, when the next data packet is received, the network device will not need to perform processes 401-403, but can skip to process 404. This will significantly facilitate the present invention by accelerating the establishment of data sessions and reducing the processing load during the new data session establishment phase. Whether the received data packet is the last data packet of the existing session can be determined based on one or more of the source address, source port, destination address, destination port, and/or protocol of the received data packet.
另一方面,当所述数据包是新会话的第一个数据包时,所述网络设备可以执行过程402和后续过程。On the other hand, when the data packet is the first data packet of a new session, the network device can execute process 402 and subsequent processes.
在一个变体中,网络设备200可以确定所述接收的数据包是否是新会话的第二个数据包或第三个数据包,而不是第一个数据包。当所述接收的数据包是新会话的第二个或第三个数据包时,所述网络设备可以执行过程402和后续过程。In one variant, network device 200 may determine whether the received data packet is the second or third data packet of a new session, rather than the first data packet. When the received data packet is the second or third data packet of a new session, the network device may execute process 402 and subsequent processes.
在过程402中,网络设备200可以选择第一连接来传输属于新会话的数据包。所述第一连接是网络设备200的网络接口与网络设备202的网络接口之间建立的连接。所述第一连接根据第一选择策略进行选择。In process 402, network device 200 may select a first connection to transmit data packets belonging to a new session. The first connection is a connection established between the network interfaces of network device 200 and network device 202. The first connection is selected according to a first selection strategy.
在过程403中,网络设备200可以根据第二选择策略选择至少一个第二连接。所述至少一个第二连接是网络设备200的所述网络接口与网络设备202的所述网络接口之间建立的除所述第一连接之外的至少一个连接。In process 403, network device 200 may select at least one second connection according to a second selection strategy. The at least one second connection is at least one connection other than the first connection established between the network interface of network device 200 and the network interface of network device 202.
所述第一选择和所述第二选择策略从以下一个或多个中选择:权重平衡、最少使用、最低延迟和优先级。因此,可以以能够降低所述慢启动期间丢包可能性的方式传输数据包。The first and second selection strategies are chosen from one or more of the following: weight balancing, least usage, lowest latency, and priority. Therefore, data packets can be transmitted in a manner that reduces the likelihood of packet loss during the slow start period.
在一个实施例中,所述第一选择策略与所述第二选择策略相同。In one embodiment, the first selection strategy is the same as the second selection strategy.
在另一个实施例中,所述第一选择策略与所述第二选择策略不同。In another embodiment, the first selection strategy is different from the second selection strategy.
在一个示例中,如果在网络设备200处应用“权重平衡”来选择所述连接,则根据所述聚合连接中每个连接的所述权重来分配要通过连接传输的数据包。所述权重可以是如上所述为每个连接计算的所述默认权重。为了说明目的,所述聚合连接中每个连接的所述权重与带宽有关,并且所述默认权重是根据每个连接的所述带宽计算的。在从网络设备200到网络设备202通过多个连接传输数据包期间,所述多个连接中每个连接的所述带宽可能不同,因此所述权重也可能不同。所述网络设备可以根据所述多个连接中每个连接的所述权重的变化通过各种连接传输数据包。In one example, if "weight balancing" is applied at network device 200 to select the connection, the data packets to be transmitted through the connection are allocated according to the weight of each connection in the aggregated connection. The weights may be the default weights calculated for each connection as described above. For illustrative purposes, the weights of each connection in the aggregated connection are related to bandwidth, and the default weights are calculated based on the bandwidth of each connection. During the transmission of data packets through multiple connections from network device 200 to network device 202, the bandwidth of each of the multiple connections may be different, and therefore the weights may also be different. The network device can transmit data packets through various connections based on the changes in the weights of each of the multiple connections.
在另一个示例中,如果在网络设备200处应用“最少使用”来选择所述连接,则根据所述聚合连接中每个连接的所述流量来分配要通过所述连接传输的数据包。如果有多个可用连接,则优先选择所述聚合连接中流量最小的所述连接传输更多的数据包。In another example, if "least used" is applied at network device 200 to select the connection, then the data packets to be transmitted through the connection are allocated based on the traffic of each connection in the aggregated connections. If multiple connections are available, the connection with the lowest traffic in the aggregated connections is preferentially selected to transmit more data packets.
在另一个示例中,如果在网络设备200处使用“延迟”来选择所述连接,则根据所述聚合连接中每个连接的所述延迟来分配要通过所述连接传输的数据包。如果有两个可用连接,所述延迟分别为100ms和40ms,则优先选择具有40ms延迟的所述连接,即延迟较低的所述连接传输更多的数据包。In another example, if "latency" is used to select the connection at network device 200, then the data packets to be transmitted through the connection are allocated according to the latency of each connection in the aggregated connection. If two connections are available with latencies of 100ms and 40ms respectively, the connection with the 40ms latency is preferred, meaning the connection with the lower latency transmits more data packets.
在另一个示例中,如果在网络设备200处使用“优先级”来选择所述连接,则根据所述聚合连接中每个连接的所述优先级来分配要通过所述连接传输的数据包。所述优先级可以由用户或管理员根据要求或实际需要来分配。在所述通过所述多个连接从网络设备200向网络设备202传输数据包期间,优先选择具有最高优先级的所述连接传输数据包。如果在某一时刻最高优先级的所述连接不可用,则优先选择次高优先级的所述连接。In another example, if a "priority" is used to select the connection at network device 200, then data packets to be transmitted through the connection are allocated according to the priority of each connection in the aggregated connections. The priorities can be assigned by a user or administrator as required or as needed. During the transmission of data packets from network device 200 to network device 202 through the plurality of connections, the connection with the highest priority is preferentially selected for data packet transmission. If the highest priority connection is unavailable at any given time, the next highest priority connection is preferentially selected.
所述用户或管理员可以通过Web界面、应用程序编程接口(API)、命令行界面或控制台本地或远程发送配置来配置网络设备200的所述第一选择策略和所述第二选择策略。The user or administrator can configure the first selection policy and the second selection policy of the network device 200 locally or remotely by sending configurations through a web interface, application programming interface (API), command line interface or console.
在一个变体中,可以同时提供多个第一选择策略和/或多个第二选择策略。例如,当所述数据包被传输到特定目标端口时,应用优先级来选择连接,而当所述数据包从另一特定目标端口传输时,应用权重平衡。所述用户或管理员能够配置所述要应用的策略的优先级,使得所述应用的策略之间没有冲突。In one variant, multiple first selection strategies and/or multiple second selection strategies can be provided simultaneously. For example, when the packet is transmitted to a specific destination port, priority is applied to select the connection, while when the packet is transmitted from another specific destination port, weight balancing is applied. The user or administrator can configure the priority of the strategies to be applied so that there are no conflicts between the applied strategies.
在过程404中,网络设备200可以通过所述第一连接传输原始封装包(OEP)。所述OEP封装了所述数据包,并且每个所述OEP都具有原始封装包全局序列号(OEP-GSN)。In process 404, network device 200 can transmit Original Encapsulated Packets (OEPs) through the first connection. Each OEP encapsulates the data packet and has an Original Encapsulated Packet Global Sequence Number (OEP-GSN).
在过程405中,网络设备200可以在特定时间段内通过至少一个第二连接传输至少一个重复封装包(DEP)。所述至少一个DEP封装了至少一个所述数据包。每个DEP具有重复封装包全局序列号(DEP-GSN),其存储在所述DEP的报头中。下文将讨论所述OEP和所述DEP的细节。In process 405, network device 200 may transmit at least one duplicate encapsulation packet (DEP) via at least one second connection within a specific time period. The at least one DEP encapsulates at least one of the data packets. Each DEP has a DEP Global Sequence Number (DEP-GSN), which is stored in the header of the DEP. Details of the OEP and the DEP will be discussed below.
本领域技术人员将知道,在无线通信中,数据包传输的质量可能不可预测,并且在某些情况下延迟可能很高。所述丢包率也可能很高。传输DEP会增加所述数据被网络设备202接收的机会,以防所述OEP丢失。然而,所述DEP的传输可能会显著增加带宽使用率。因此,所述数据包只会在特定时间段内被复制和传输。Those skilled in the art will understand that in wireless communication, the quality of data packet transmission can be unpredictable, and latency can be high in some cases. The packet loss rate can also be high. Transmitting a DEP increases the chances of the data being received by network device 202 in case the OEP is lost. However, transmitting the DEP can significantly increase bandwidth utilization. Therefore, the data packets will only be copied and transmitted within a specific time period.
在过程406中,在特定时间段之后,网络设备200可以继续通过第三连接传输所述OEP,但不再通过所述至少一个第二连接传输所述至少一个DEP。In process 406, after a specific time period, network device 200 may continue to transmit the OEP through the third connection, but no longer transmit the at least one DEP through the at least one second connection.
通常,过程404和过程405是在所述慢启动阶段开始之后执行的。在所述慢启动阶段,通过连接传输的数据包所述数量呈指数增加。通过在所述慢启动阶段通过所述聚合连接的所述连接传输所述数据包,可以减少丢包和延迟发生的可能性,并且可以最大化通过在网络设备200和202之间建立的所述聚合连接传输数据包的速率。Typically, processes 404 and 405 are executed after the slow start phase begins. During the slow start phase, the number of data packets transmitted through the connection increases exponentially. By transmitting the data packets through the aggregated connection during the slow start phase, the likelihood of packet loss and latency can be reduced, and the rate of data packet transmission through the aggregated connection established between network devices 200 and 202 can be maximized.
但是,如果在所述慢启动阶段发生丢包,则可以在特定时间段内中断传输的数据包所述数量的所述指数增加,并且所述拥塞控制过程移动到所述拥塞避免阶段,如图5B所示。However, if packet loss occurs during the slow start phase, the number of packets that can be interrupted during a specific time period increases exponentially, and the congestion control process moves to the congestion avoidance phase, as shown in Figure 5B.
从所述慢启动阶段开始计算经过一段特定时间后,不再采用所述第一选择策略和/或所述第二选择策略通过网络设备200和网络设备202之间建立的所述一个或多个连接传输所述数据包,而是通过网络设备200和网络设备202之间建立的第三连接传输数据包。After a specific period of time has elapsed since the start of the slow start phase, the data packets will no longer be transmitted through the one or more connections established between network device 200 and network device 202 using the first selection strategy and/or the second selection strategy. Instead, the data packets will be transmitted through the third connection established between network device 200 and network device 202.
在一个实施例中,所述第三连接与步骤402中选择的所述第一连接相同。In one embodiment, the third connection is the same as the first connection selected in step 402.
在另一实施例中,所述第三连接与步骤402中选择的所述第一连接不同。网络设备200可以通过任何方式选择另一连接传输所述数据包,例如所述第二选择策略。In another embodiment, the third connection is different from the first connection selected in step 402. The network device 200 can select another connection to transmit the data packets in any way, such as the second selection strategy.
确定所述特定时间段的因素包括以下一个或多个:慢启动阶段的持续时间、带宽、延迟以及可能影响数据传输的任何因素。对于如何确定所述特定时间段没有限制。所述特定时间段可以是所述慢启动阶段开始和结束之间的任何时间。Factors determining the specific time period include one or more of the following: the duration of the slow start phase, bandwidth, latency, and any factors that may affect data transmission. There are no restrictions on how the specific time period is determined. The specific time period can be any time between the start and end of the slow start phase.
在一个示例中,所述特定时间段是从所述慢启动阶段开始计算的2秒至4秒。In one example, the specific time period is 2 to 4 seconds from the start of the slow start phase.
在另一个示例中,所述特定时间段是从所述慢启动阶段开始计算的3秒。In another example, the specific time period is 3 seconds, calculated from the start of the slow start phase.
图5A示出了根据常规拥塞控制过程实现的所述拥塞窗口大小与TCP会话的传输数据包的时间之间的关系。所述数据包通过网络设备200和202之间建立的所述多个连接中的连接进行传输。没有应用策略来控制通过所述聚合连接的所述数据包传输,所述数据包可以通过所述聚合连接的连接进行传输。如前文所述,所述拥塞控制过程包括四个阶段,但为了说明本发明的实施例,图5A仅示出了慢启动阶段501a和拥塞避免阶段502a。Figure 5A illustrates the relationship between the congestion window size and the transmission time of data packets in a TCP session, implemented according to a conventional congestion control process. The data packets are transmitted through connections among the plurality of connections established between network devices 200 and 202. No policy is applied to control the transmission of data packets through the aggregated connections; the data packets can be transmitted through the aggregated connections. As previously described, the congestion control process comprises four phases, but for the purpose of illustrating an embodiment of the invention, Figure 5A only shows the slow start phase 501a and the congestion avoidance phase 502a.
在慢启动阶段501a期间,所述拥塞窗口的所述大小从所述拥塞窗口的所述初始大小继续呈指数增长。为了便于说明,当TCP会话的所述数据包传输时间达到505a时,所述拥塞窗口的所述大小继续从拥塞窗口503a的所述初始大小呈指数增长到慢启动阈值504a。但是,在所述慢启动阶段可能会发生丢包。During the slow start phase 501a, the size of the congestion window continues to grow exponentially from its initial size. For clarity, when the packet transmission time of the TCP session reaches 505a, the size of the congestion window continues to grow exponentially from its initial size of congestion window 503a to the slow start threshold 504a. However, packet loss may occur during this slow start phase.
当在所述慢启动阶段发生丢包时,由于检测到拥塞,所述拥塞控制过程从慢启动阶段501a移动到拥塞避免阶段502a,即使所述拥塞窗口大小未达到慢启动阈值504a。例如,当在507a发生丢包时,所述拥塞控制过程从慢启动阶段501a移动到拥塞避免阶段502a,即使所述拥塞窗口大小仅达到508a而不是504a。When packet loss occurs during the slow start phase, the congestion control process moves from the slow start phase 501a to the congestion avoidance phase 502a due to detected congestion, even if the congestion window size has not reached the slow start threshold 504a. For example, when packet loss occurs at 507a, the congestion control process moves from the slow start phase 501a to the congestion avoidance phase 502a, even if the congestion window size only reaches 508a instead of 504a.
在拥塞避免阶段502a期间,所述拥塞窗口大小只能线性增加,直到有迹象表明已收到重复确认(ACK)。在一个实施例中,可以应用拥塞避免算法来控制所述拥塞。During congestion avoidance phase 502a, the congestion window size can only increase linearly until there is indication that duplicate acknowledgments (ACKs) have been received. In one embodiment, a congestion avoidance algorithm can be applied to control the congestion.
因此,网络设备200可以基于所述所应用的拥塞避免算法发出后续数据包。所述拥塞避免算法可以从以下一个或多个中选择:TCP Reno、TCP Vegas、TCP-Fast、CompoundTCP、TCP Veno、TCP Westwood、TCP Cubic和TCP BIC。Therefore, network device 200 can send subsequent data packets based on the applied congestion avoidance algorithm. The congestion avoidance algorithm can be selected from one or more of the following: TCP Reno, TCP Vegas, TCP-Fast, CompoundTCP, TCP Veno, TCP Westwood, TCP Cubic, and TCP BIC.
对于用于控制所述拥塞的所述拥塞避免算法没有限制,可以应用包括加法增加/乘法减少(AIMD)方案的各个方面的任何拥塞避免算法。There are no restrictions on the congestion avoidance algorithm used to control the congestion; any congestion avoidance algorithm, including various aspects of the additive increase/multiplicative decrease (AIMD) scheme, can be applied.
为了便于说明,在506a处,网络设备200已接收到重复的ACK。因此,拥塞窗口的所述大小被重置为拥塞窗口503a的所述初始大小,并且再次开始所述增加拥塞窗口大小的过程(例如,所述拥塞窗口的大小被重置为1),并且所述慢启动阈值被减小(例如,ssthresh=当前cwnd/2)。重置后所述拥塞窗口的所述大小没有限制,其可能根据所应用的所述拥塞避免算法而变化。For clarity, at 506a, network device 200 has received a duplicate ACK. Therefore, the size of the congestion window is reset to the initial size of congestion window 503a, and the process of increasing the congestion window size restarts (e.g., the congestion window size is reset to 1), and the slow start threshold is reduced (e.g., ssthresh = current cwnd/2). The size of the congestion window after the reset is not limited and may vary depending on the applied congestion avoidance algorithm.
为了减少图5A中所示的慢启动阶段期间的丢包,根据本发明实施例,在所述所述慢启动阶段期间应用本发明中提出的所述方法。因此,图5B中所示的拥塞窗口大小与TCP会话的所述数据包传输时间之间的所述关系与图5A中所示的不同。To reduce packet loss during the slow start phase shown in Figure 5A, according to an embodiment of the invention, the method proposed in this invention is applied during the slow start phase. Therefore, the relationship between the congestion window size and the packet transmission time of the TCP session shown in Figure 5B differs from that shown in Figure 5A.
图5B示出了在所述慢启动阶段发生丢包的情况下,根据所述本拥塞控制流程实现的所述拥塞窗口大小与TCP会话的数据包传输时间之间的所述关系。图5B应结合图2查看并与图5A进行比较。所述数据包通过网络设备200和202之间建立的所述多个连接进行传输。与图5A类似,图5B中仅示出了慢启动阶段501b和拥塞避免阶段502b,以说明本发明的实施例。Figure 5B illustrates the relationship between the congestion window size and the packet transmission time of the TCP session, implemented according to the congestion control process, in the event of packet loss during the slow start phase. Figure 5B should be viewed in conjunction with Figure 2 and compared with Figure 5A. The packets are transmitted through the multiple connections established between network devices 200 and 202. Similar to Figure 5A, Figure 5B only shows the slow start phase 501b and the congestion avoidance phase 502b to illustrate embodiments of the invention.
在一个变体中,所述多个连接被聚合为一个聚合连接。In one variant, the multiple connections are aggregated into a single aggregate connection.
当开始传输会话的数据包时,所述拥塞控制过程开始并进入慢启动阶段501b。一旦确定了所述会话的第一个数据包,网络设备200就可以通过网络设备200和202之间建立的所述多个连接传输所述OEP和所述DEP。When the transmission of a session's data packets begins, the congestion control process starts and enters the slow start phase 501b. Once the first data packet of the session is determined, network device 200 can transmit the OEP and the DEP through the multiple connections established between network devices 200 and 202.
在慢启动阶段501b期间,所述拥塞窗口的所述大小继续从所述拥塞窗口的所述初始大小呈指数增长,类似于图5A中所示的慢启动阶段501a。During the slow start phase 501b, the size of the congestion window continues to grow exponentially from the initial size of the congestion window, similar to the slow start phase 501a shown in FIG5A.
为了便于说明,当传输TCP会话的数据包的时间达到505b时,所述拥塞窗口的所述大小继续从所述拥塞窗口的初始大小503b呈指数增长到慢启动阈值504b。然而,在所述慢启动阶段可能会发生丢包。For clarity, when the time for transmitting TCP session packets reaches 505b, the size of the congestion window continues to grow exponentially from the initial size of 503b to the slow start threshold of 504b. However, packet loss may occur during the slow start phase.
由于图4所示的方法是通过网络设备200和202之间建立的所述多个连接来应用的,因此可以减少丢包。例如,当数据包通过网络设备200处的所述多个连接传输时,数据包分别被封装为OEP和至少一个DEP。网络设备200可以在特定时间段内通过所述第一连接传输所述OEP,并通过所述至少一个第二连接传输所述至少一个DEP。因此,通过所述多个连接同时传输OEP和DEP,可以增加数据被网络设备202接收的机会。Because the method shown in Figure 4 is applied through the multiple connections established between network devices 200 and 202, packet loss can be reduced. For example, when data packets are transmitted through the multiple connections at network device 200, the data packets are encapsulated as an OEP and at least one DEP, respectively. Network device 200 can transmit the OEP through the first connection and the at least one DEP through the at least one second connection within a specific time period. Therefore, transmitting OEP and DEP simultaneously through the multiple connections increases the chances of data being received by network device 202.
例如,通过连接209a传输OEP,通过连接209c传输DEP,将数据包从笔记本电脑201a传输到服务器203,当通过连接209a传输所述OEP时可能会发生丢包。通过连接209c传输DEP,网络设备202有可能成功接收所述DEP。因此,通过网络设备202从服务器203接收到所述数据包的确认。结果,所述拥塞窗口的所述大小将继续呈指数增长,并且所述拥塞控制过程不会从慢启动阶段501b切换到拥塞避免阶段502b。这将延长慢启动阶段501b的时间。For example, data packets are transmitted from laptop 201a to server 203 via connection 209a for OEP and via connection 209c for DEP. Packet loss may occur when transmitting the OEP via connection 209a. When transmitting the DEP via connection 209c, network device 202 may successfully receive the DEP. Therefore, network device 202 receives an acknowledgment of the data packet from server 203. As a result, the size of the congestion window will continue to grow exponentially, and the congestion control process will not switch from slow start phase 501b to congestion avoidance phase 502b. This will prolong the duration of slow start phase 501b.
因此,与图5A中公开的所述传统技术相比,根据图5B中公开的技术,所述拥塞避免阶段将以更高的拥塞窗口大小开始。在慢启动阶段实现更高的拥塞窗口大小将增加拥塞窗口大小达到所述慢启动阈值的概率;而根据图5A中所示的所述传统技术,拥塞控制过程可能在达到所述慢启动阈值之前触发拥塞避免阶段。Therefore, compared to the conventional technique disclosed in Figure 5A, the congestion avoidance phase will begin with a higher congestion window size according to the technique disclosed in Figure 5B. Achieving a higher congestion window size during the slow start phase increases the probability that the congestion window size will reach the slow start threshold; whereas according to the conventional technique shown in Figure 5A, the congestion control process may trigger the congestion avoidance phase before reaching the slow start threshold.
当所述拥塞窗口大小达到慢启动阈值504b时,所述拥塞控制过程从慢启动阶段501b切换到拥塞避免阶段502b。由于根据本发明可以达到更高的拥塞窗口大小,因此慢启动阈值504b也可以设置在更高的水平。这将有助于非常快速地增加所述数据传输带宽。When the congestion window size reaches the slow start threshold 504b, the congestion control process switches from the slow start phase 501b to the congestion avoidance phase 502b. Since a higher congestion window size can be achieved according to the present invention, the slow start threshold 504b can also be set at a higher level. This will help to increase the data transmission bandwidth very quickly.
在拥塞避免阶段502b期间,所述拥塞窗口大小线性增加,直到有迹象表明已收到重复的ACK。与图5A相比,在所述拥塞避免阶段可以传输更多的数据包。During congestion avoidance phase 502b, the congestion window size increases linearly until there is indication that a duplicate ACK has been received. Compared to Figure 5A, more data packets can be transmitted during this congestion avoidance phase.
为了监视各种连接209a-f的带宽,本发明的一些实施例将每个传输的IP数据包与各种信息封装在一起。In order to monitor the bandwidth of various connections 209a-f, some embodiments of the present invention encapsulate each transmitted IP packet with various information.
图6A示出了根据各种实施例的OEP的结构。OEP 600是封装包,其将封装的数据包与各种信息封装在一起,以用于数据包传输。OEP 600包括IP报头601、OEP-GSN 602、每个隧道序列号603、其他信息604和封装数据包605。OEP-GSN 602保存OEP 600的OEP-GSN。Figure 6A illustrates the structure of an OEP according to various embodiments. OEP 600 is an encapsulation packet that encapsulates data packets along with various information for packet transmission. OEP 600 includes an IP header 601, an OEP-GSN 602, a tunnel sequence number 603, other information 604, and an encapsulated data packet 605. OEP-GSN 602 stores the OEP-GSN of OEP 600.
每个隧道序列号603可以是32位字段,表示分配给路由到特定隧道的每个数据包的序列号。可以使用高级加密标准(AES)加密有效载荷字段来传送IP数据包的所述有效载荷。可以应用AES加密以提高所述有效载荷的安全性,以防止第三方的攻击。Each tunnel sequence number 603 can be a 32-bit field representing the sequence number assigned to each packet routed to a specific tunnel. The payload field of the IP packet can be encrypted using the Advanced Encryption Standard (AES) to transmit the payload. AES encryption can be applied to enhance the security of the payload and prevent attacks from third parties.
IP报头601可以包括以下一个或多个:版本字段、协议类型字段、隧道ID字段和全局序列号字段。其他信息604可以包括AES初始化向量字段和隧道ID字段。The IP header 601 may include one or more of the following: version field, protocol type field, tunnel ID field, and global sequence number field. Other information 604 may include an AES initialization vector field and a tunnel ID field.
所述版本字段可以包含有关正在使用的所述协议版本的信息,而所述协议类型字段可以包含所述有效载荷数据包的所述协议类型。通常,此字段的所述值将对应于数据包的所述以太网协议类型。但是,其他文档中可以定义其他值。所述隧道ID字段可以是32位字段,并且可以包含用于标识所述IP数据包的所述当前隧道的标识符。The version field may contain information about the protocol version being used, while the protocol type field may contain the protocol type of the payload packet. Typically, the value of this field will correspond to the Ethernet protocol type of the packet. However, other values may be defined in other documents. The tunnel ID field may be a 32-bit field and may contain an identifier for identifying the current tunnel of the IP packet.
所述AES初始化向量字段可以是32位字段,并且可以包含用于AES加密的初始化向量。所述全局序列号字段可以是32位字段,并且可以包含用于在各个会话的每个所述数据包从其各自的隧道中出现时将其重新排序为所述正确顺序的序列号。The AES initialization vector field may be a 32-bit field and may contain an initialization vector for AES encryption. The global sequence number field may be a 32-bit field and may contain a sequence number for reordering each packet of each session to the correct order as it emerges from its respective tunnel.
在一个变体中,每个隧道序列号603和所述隧道ID字段可用于比较隧道性能并根据所述隧道性能重新分配数据包。In one variant, each tunnel sequence number 603 and the tunnel ID field can be used to compare tunnel performance and reallocate packets based on the tunnel performance.
在另一变体中,每个隧道序列号603可以是会话号或流号。In another variant, each tunnel sequence number 603 can be a session number or a stream number.
在另一变体中,每个隧道序列号603可以是可选的。当不包括每个隧道序列号603和所述隧道ID字段时,可能需要维护数据库以存储有关哪个隧道用于传输哪个GSN的封装数据包的信息。通过在所述数据库中执行查找,可以比较隧道性能。因此,在所述OEP中包含每个隧道序列号603和所述隧道ID字段可以有助于确定延迟,而无需维护和查找所有GSN的数据库。In another variant, each tunnel sequence number 603 can be optional. When each tunnel sequence number 603 and the tunnel ID field are not included, it may be necessary to maintain a database to store information about which tunnel is used to transmit encapsulated packets for which GSN. Tunnel performance can be compared by performing a lookup in that database. Therefore, including each tunnel sequence number 603 and the tunnel ID field in the OEP can help determine latency without maintaining and looking up a database for all GSNs.
在一个变体中,OEP-GSN 602、每个隧道序列号603和其他信息604包含在IP报头601的选项字段中,封装数据包605包含在所述AES加密有效载荷字段中。在IP报头601的所述选项字段中包含OEP-GSN 602、每个隧道序列号603和其他信息604的好处是,无需解封装OEP 600即可检索这些字段中包含的所述信息,这可以显著减少所述处理时间。然而,当OEP600通过所述隧道、路由器和设备传输时,IP报头601可能会发生变化,因此如果这些字段中的信息包含在IP报头601的所述选项字段中,则它们可能会丢失。因此,另一种选项是,OEP-GSN 602、每个隧道序列号603、其他信息604和封装数据包605都可以包含在AES加密的有效载荷字段612中,以便当OEP 600经过可能改变IP报头601的路由器和设备时,所述信息得以保留。In one variant, OEP-GSN 602, each tunnel sequence number 603, and other information 604 are included in the options field of the IP header 601, and the encapsulated packet 605 is included in the AES-encrypted payload field. The advantage of including OEP-GSN 602, each tunnel sequence number 603, and other information 604 in the options field of the IP header 601 is that the information contained in these fields can be retrieved without decapsulating the OEP 600, which can significantly reduce processing time. However, the IP header 601 may change as the OEP 600 is transmitted through the tunnels, routers, and devices, so the information in these fields may be lost if it is included in the options field of the IP header 601. Therefore, another option is that OEP-GSN 602, each tunnel sequence number 603, other information 604, and encapsulated packet 605 can all be included in the AES-encrypted payload field 612 so that the information is preserved when the OEP 600 passes through routers and devices that may alter the IP header 601.
图6B示出了根据各种实施例的DEP的结构。DEP 610是封装数据包,其将封装的数据包与各种信息封装在一起,以进行数据包传输。与OEP 600类似,DEP 610包括IP头611、DEP-GSN 612、每个隧道序列号613、其他信息614和封装数据包615。Figure 6B illustrates the structure of a DEP according to various embodiments. DEP 610 is an encapsulated data packet that encapsulates data packets together with various information for data packet transmission. Similar to OEP 600, DEP 610 includes an IP header 611, a DEP-GSN 612, a tunnel sequence number 613, other information 614, and an encapsulated data packet 615.
OEP-GSN 602和DEP-GSN 612可以相同。封装数据包605和615可以相同,使得OEP600和DEP 610封装相同的数据包,其分别成为封装数据包605和615。当网络设备200生成至少一个DEP 610进行传输时,所述有效载荷,即所述封装数据包,与所述OEP 600的有效载荷相同。由于OEP 600和DEP 610具有相同的内容,因此它们的全局序列号也相同。由于DEP610包含与OEP 600相同的封装数据包,因此,如果OEP 600在传输过程中丢失、丢弃或延迟,并且DEP 610在接收到OEP 600之前被接收到,则可以使用DEP 610来重新创建OEP 600中的所述信息。OEP-GSN 602 and DEP-GSN 612 can be identical. Encapsulated data packets 605 and 615 can also be identical, such that OEP 600 and DEP 610 encapsulate the same data packets, which become encapsulated data packets 605 and 615, respectively. When network device 200 generates at least one DEP 610 for transmission, the payload, i.e., the encapsulated data packet, is the same as the payload of OEP 600. Since OEP 600 and DEP 610 have the same content, their global sequence numbers are also the same. Because DEP 610 contains the same encapsulated data packet as OEP 600, if OEP 600 is lost, dropped, or delayed during transmission, and DEP 610 is received before OEP 600 is received, the information in OEP 600 can be recreated using DEP 610.
Publications (1)
| Publication Number | Publication Date |
|---|---|
| HK40113402A true HK40113402A (en) | 2025-02-14 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11799686B2 (en) | Methods and systems for transmitting information packets through tunnel groups at a network node | |
| US12232196B2 (en) | Modified methods and system of transmitting and receiving transmission control protocol segments over internet protocol packets | |
| US12255808B2 (en) | Methods and systems for sending packets through a plurality of tunnels | |
| US20130311614A1 (en) | Method for retrieving content and wireless communication device for performing same | |
| US20170111250A1 (en) | Methods and systems for reducing network congestion | |
| CN109792404B (en) | Method and system for transmitting packets through a group of tunnels at a network node | |
| US10116466B2 (en) | Transport protocol task offload emulation to detect offload segments for communication with a private network | |
| US10944590B2 (en) | Transport protocol task offload emulation to detect chunks of data for communication with a private network | |
| US20250211543A1 (en) | Methods for reducing packet loss during slow start stage of a session | |
| HK40113402A (en) | Methods for reducing packet loss during slow start stage of a session | |
| CN107078861B (en) | Method and system for estimating missing data | |
| US20260081872A1 (en) | Methods and systems for enhancing the performance of connection at an apparatus | |
| CN114424599B (en) | Method and system for transmitting session-based packets | |
| HK40095864A (en) | Method and system for transmitting session-based packets | |
| HK40072592A (en) | Methods and systems for transmitting session-based packets | |
| HK40072592B (en) | Methods and systems for transmitting session-based packets | |
| HK40052679A (en) | Modified methods and system of transmitting and receiving transmission control protocol segments over internet protocol packets | |
| HK40014808A (en) | Methods and systems for transmitting and receiving packets | |
| HK40042249A (en) | Methods and systems for sending packets through a plurality of tunnels | |
| HK40010630A (en) | Methods and systems for transmitting information packets through tunnel groups at a network node |