Method and system for transmitting data packets between network devices
By dynamically adjusting the error correction mode and redundancy level, FEC technology solves the problems of resource waste and computational complexity in traditional FEC technology, improves the reliability of data transmission and system efficiency, and adapts to channel quality fluctuations.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- PISMO LABS TECH
- Filing Date
- 2024-12-06
- Publication Date
- 2026-05-19
AI Technical Summary
When traditional FEC technology is applied in multiple connections, although it improves the reliability of data transmission, it leads to resource waste and increased computational complexity due to fixed error correction overhead. This is especially true when the packet loss rate is low or fluctuating, which reduces the efficiency of available bandwidth utilization and system performance.
By dynamically adjusting the error correction mode and redundancy level, the error correction mode can be enabled or disabled on each connection based on real-time channel conditions. Error correction packets are transmitted only for specific connections when needed, and the ratio of error correction packets to original data packets is dynamically adjusted to compensate for packet loss.
While maintaining data transmission reliability, it reduces resource waste and computational complexity, and improves system efficiency and performance, especially in environments with fluctuating channel quality.
Smart Images

Figure CN122069005A_ABST
Abstract
Description
Technical Field
[0001] This invention generally relates to the field of computer networks. More specifically, this invention discloses a method and system for handling packet loss when transmitting data packets from a first network device to a second network device via multiple connections. Background Technology
[0002] Wireless communication is susceptible to unpredictable packet transmission quality, typically resulting in packet loss and fluctuating packet drop rates. To ensure reliable data transmission and overall packet quality in real-time wireless communication, various techniques are employed to reduce packet loss, including retransmitting lost packets and applying forward error correction (FEC). FEC involves adding redundancy to the transmitted data, allowing receiving network devices to detect and correct errors / losses without retransmission.
[0003] Traditional FEC (Error Correction) techniques involve transmitting error correction packets over multiple connections to recover lost data at the receiving device. This approach improves the reliability of data transmission, especially in noisy and unreliable channels such as satellite communications. Common FEC codes, such as Hamming codes, Reed-Solomon codes, and turbine codes, each have varying degrees of complexity and error correction capabilities.
[0004] However, even if some connections do not experience packet loss, applying traditional FEC techniques across all connections in a multi-connection network can be wasteful of resources. For example, the overall packet transmission rate may be reduced due to FEC overhead, as redundant data for error correction is added to each packet transmitted through multiple connections, regardless of whether a particular connection requires it. This results in inefficient use of available bandwidth, especially when packet loss rates are low or fluctuate between different connections in a multi-connection network. Furthermore, the computational complexity associated with FEC encoding and decoding can increase power consumption and latency, further degrading overall system performance.
[0005] This invention introduces a novel FEC (Error Correction and Control) technique, whose various embodiments achieve a balance between error correction capability and system efficiency. Unlike traditional FEC techniques that apply fixed error correction overhead to all data packets, the proposed FEC... EC dynamically adjusts the redundancy level based on real-time channel conditions. This new approach promises to significantly improve data transmission reliability while reducing overhead and computational costs, especially in environments with fluctuating channel quality. Summary of the Invention
[0006] This invention discloses a method and system for transmitting data packets between a first network device and a second network device. The first network device can enable error correction mode on each of multiple connections to compensate for lost packets.
[0007] The first network device can determine whether error correction mode is enabled. When error correction mode is enabled, the first network device can transmit a second plurality of data packets to the second network device to request first information, the first information being about packet loss in multiple connections. In response, the second network device can transmit a third plurality of data packets including the first information to the first network device through multiple connections. If packet loss occurs in at least one of the end-to-end connections, the first network device can transmit a fourth plurality of data packets, the fourth plurality of data packets being a combination of the original data packets and error correction packets.
[0008] According to an embodiment of the present invention, before transmitting a fourth plurality of data packets, the first network device determines a second value for each of at least one connection. The second value reflects the severity of packet loss in at least one of the end-to-end connections.
[0009] According to an embodiment of the present invention, the ratio between the number of error correction packets and the number of original data packets being transmitted is based on a first value.
[0010] According to an embodiment of the present invention, a first network device may assign a first value to a specific connection to reflect the number of packets lost in that specific connection. If any end-to-end connection meets a first criterion, the first network device may update the first value, wherein the first criterion is a condition associated with a second value.
[0011] According to an embodiment of the present invention, if the second criterion is met, the first network device may disable the error correction mode. Attached Figure Description
[0012] Figure 1A This is a schematic block diagram of a network environment according to an embodiment of the present invention.
[0013] Figure 1B This is a block diagram illustrating multiple connections established between two network devices according to an embodiment of the present invention.
[0014] Figure 2A This is a schematic block diagram of a first network device according to an embodiment of the present invention.
[0015] Figure 2B This is a schematic block diagram of a second network device according to an embodiment of the present invention.
[0016] Figure 3 This is a schematic diagram illustrating the differences in packet structure between the original data packet and the error correction packet according to an embodiment of the present invention.
[0017] Figure 4 This is a schematic diagram illustrating a method for a first network device to handle packet loss according to an embodiment of the present invention.
[0018] Figure 5This is a schematic diagram illustrating a method for a second network device to handle packet loss according to an embodiment of the present invention.
[0019] Figure 6 This is a schematic diagram illustrating how to determine a first value for a specific connection from the packet loss rate corresponding to that specific connection, and how to update that first value, according to an embodiment of the present invention.
[0020] Figure 7 This is an example of transmitting data packets between network devices via a specific connection according to an embodiment of the present invention. Detailed Implementation
[0021] This invention effectively addresses the shortcomings of traditional FEC (Functional Encryption) technology. It discloses a system and method for transmitting data packets between network devices, enhancing network performance by adaptively adjusting resources used to compensate for packet loss to maintain overall data packet transmission quality.
[0022] The following description discusses only preferred and exemplary embodiments and is not intended to limit the scope, applicability, or configuration of the invention. Rather, the subsequent description of preferred and exemplary embodiments will provide those skilled in the art with a feasible description of how to implement the (preferred) exemplary embodiments of the invention. It should be understood that various changes can be made to the function and arrangement of the elements without departing from the intent and scope of the invention.
[0023] The terminology used in this specification is for the purpose of describing particular embodiments only and is not intended to limit the exemplary embodiments of the invention. In this specification, unless clearly stated otherwise, the singular forms "a," "an," and "the" also mean to include the plural forms. In this specification, "and / or" and "at least one" are also used. This includes any and all combinations of one or more related listed items. Expressions such as "at least one," if appearing before the list of components, modify the entire list of components but not the individual components within it. In this specification, "including" and "comprising" specify the presence of the stated features, integrals, steps, operations, elements, and / or components, but do not preclude the presence or addition of one or more other features, integrals, steps, operations, elements, components, and / or combinations thereof. Furthermore, the term "exemplary" is intended to refer to an example or illustration.
[0024] While the approximate descriptions of the processes, steps, methods, algorithms, etc., described in this specification may be sequential, such processes, steps, methods, and algorithms can be configured to be performed in other orders. In other words, any sequence or order of steps described in this specification is not necessarily equivalent to the steps having to be performed in that order. The steps of the described process can be performed in any practically feasible order.
[0025] When an element is referred to as being "on," "connected to," "coupled to," or "adjacent to" another element, the element may be directly connected to or coupled to the other element, but there may be other elements between them. On the other hand, when an element is referred to as being "directly connected" or "directly coupled" to another element, there are no other elements between them.
[0026] As used herein, the terms "computer-readable storage medium," "main memory," "secondary memory," "machine-readable medium," or "other storage medium" refer to any medium that participates in providing instructions to a processing unit for execution, including but not limited to 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, flexible disk, hard disk, solid-state drive, magnetic tape, CD-ROM, flash memory device, memory card, and / or other machine-readable media for storing information. The aforementioned storage media can be virtualized and may be virtual storage media, including virtual storage media in cloud-based instances. The processing unit reads data written to the main storage medium and writes the data to the secondary storage medium. Therefore, even if data written to the main storage medium is lost due to factors such as a momentary power outage, the data can still be recovered by transferring the data stored in the secondary storage medium to the main storage medium. A computer-readable medium is merely one example of a machine-readable medium, which may carry instructions for implementing any of the methods and / or techniques described herein. Various forms of computer-readable media may involve transmitting one or more sequences of one or more instructions to a processor for execution, including but not limited to non-volatile media, volatile media, and transmission media. For example, the instructions may initially be carried on a disk from a remote computer. Alternatively, the remote computer may load the instructions into its dynamic memory and send them to a system that executes one or more sequences of one or more instructions. Transmission media include coaxial cables, copper wires, and optical fibers. Transmission media may also take the form of sound waves or light waves, such as those generated during radio wave and infrared data communication.
[0027] Volatile memory devices can be used to store temporary variables or other intermediate information during instruction execution by the processing unit. Non-volatile memory devices or static memory devices can be used to store static information and instructions of the processing unit, as well as various system configuration parameters.
[0028] The storage medium may contain multiple software modules, which may be implemented as software code that can be executed by a processing unit using any suitable type of computer instruction. The software code may be stored in the storage medium as a series of instructions or commands, or as a program.
[0029] The processing unit may be a microprocessor, microcontroller, digital signal processor (DSP), any combination of the foregoing, or any other circuitry configured to process information. The processing unit executes program instructions or code segments to implement embodiments of the invention. Furthermore, embodiments may be implemented using hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When embodiments are implemented using software, firmware, middleware, or microcode, program instructions for performing necessary tasks may be stored in a computer-readable storage medium. The processing unit may be implemented via virtualization and may be a virtual processing unit, including virtual processing units contained in cloud-based instances.
[0030] The terminal device in this invention can be a computing device, mobile phone, smartphone, personal digital assistant (PDA), desktop computer, server computer, laptop computer, tablet computer, or other fixed and mobile electronic device capable of sending and receiving data packets.
[0031] The techniques described in this specification can be used in various wireless communication networks, such as Code Division Multiple Access (CDMA), Time Division Multiple Access (TDMA), Frequency Division Multiple Access (FDMA), Orthogonal Frequency Division Multiple Access (OFDMA), Single Carrier Frequency Division Multiple Access (SC-FDMA), and others. The terms "network" and "system" are often used interchangeably. CDMA networks can implement radio technologies such as Universal Terrestrial Radio Access (UTRA) and CDMA2000. UTRA includes Wideband CDMA (WCDMA or W-CDMA) and other variations of CDMA. CDMA2000 encompasses the IS-2000, IS-95, and IS-856 standards. TDMA networks can implement radio technologies such as the Global System for Mobile Communications (GSM). OFDMA networks can implement radio technologies such as evolved UTRA (E-UTRA), Ultra Mobile Broadband (UMB), IEEE 802.11 (Wi-Fi), IEEE 802.16 (WiMAX), IEEE 802.20, and Flash-OFDM. UTRA and E-UTRA are part of the Universal Mobile Telecommunication System (UMTS). 3GPP Long Term Evolution (LTE) is a UMTS using E-UTRA, employing OFDMA on the downlink and SC-FDMA on the uplink. UTRA, E-UTRA, UMTS, LTE, 5G, and GSM are described in the documents of the 3GPP organization. CDMA 2000 and UMB are described in the documents of the 3GPP2 organization.
[0032] In this specification, "aggregated connection" or "tunnel" refers to a communication channel between two network devices that transmits data via Internet Protocol (IP) packets encapsulated according to any suitable encrypted tunneling protocol. Network devices can be any electronic device, client, server, peer, service, application, or other object capable of sending, receiving, or forwarding information through a communication channel in a network. Encrypted tunneling protocols may include (but are not limited to) Internet Protocol security (IPsec), Secure Socket Layer / Transport Layer Security (SSL / TLS), Datagram Transport Layer Security (DTLS), Microsoft Point-to-Point Encryption (MPPE), and Secure Shell (SSH).
[0033] The end-to-end connection referred to in this specification can be a connection-oriented protocol, such as Transmission Control Protocol (TCP), or a connectionless protocol, such as User Datagram Protocol (UDP), to transmit data packets. Well-known protocols used to deploy end-to-end connections include Layer 2 Tunneling Protocol (L2TP), SSH, Multiprotocol Label Switching (MPLS), and Microsoft's Point-to-Point Tunneling Protocol (PPTP).
[0034] A network interface can be any of several types, including Local Area Network (LAN) interfaces, Wide Area Network (WAN) interfaces, Wi-Fi interfaces, fiber optic interfaces, VPN interfaces, USB interfaces, PoE interfaces, etc. A network interface can also be a virtual network interface, including virtual network interfaces in cloud-based instances.
[0035] The interconnection network disclosed in this specification can be any of a variety of interconnection networks, such as LAN, metropolitan area network (MAN), WAN, public switched telephone network (PSTN), Internet, intranet, extranet, access network, virtual private network (VPN), enterprise private network (EPN), or similar networks.
[0036] Figure 1AA network environment according to an embodiment of the present invention is illustrated. The network environment includes at least a first network device 101 and a second network device 102, which are interconnected via an interconnection network (e.g., interconnection network 100). For illustrative purposes, the first network device 101 may include three network interfaces capable of connecting to three access networks 111a, 111b, and 111c (collectively referred to as "access network 111") to further access the interconnection network 100; and the second network device 102 may include two network interfaces capable of connecting to two access networks 112a and 112b (collectively referred to as "access network 112") to further access the interconnection network 100. The network interfaces described herein can be any network interface capable of performing WAN interface functions, such as a LAN interface.
[0037] Each of the first network device 101 and the second network device 102 may provide at least one network interface, enabling different terminal devices to connect to the first network device 101 and the second network device 102. For example... Figure 1A As illustrated, laptop 103 is locally connected to first network device 101 via connection 105, while laptop 104 is locally connected to second network device 102 via connection 106. Each of connections 105 and 106 can be wired or wireless.
[0038] The network environment can vary depending on the required network devices and configurations. There is no limit to the number of network interfaces in the first network device 101 and the second network device 102. There is also no limit to the number of terminal devices connected to the first network device 101 or the second network device 102. The configuration of only laptop 103 connected to the first network device 101 and only laptop 104 connected to the second network device 102 is for illustrative purposes only. Access networks 111 and 112 may include the same or different connection types and have similar or different latency and bandwidth capacities.
[0039] Figure 1BAccording to an embodiment of the present invention, multiple connections established between two network devices are illustrated. Each of the multiple connections may be an end-to-end connection established between a network interface of a first network device 101 and a network interface of a second network device 102. For illustrative purposes, three network interfaces of the first network device 101 can be connected to three access networks 111, while two network interfaces of the second network device 102 can be connected to two access networks 112. Therefore, six end-to-end connections 120a-120f can be established through any one of access networks 111 and 112. For illustrative purposes, end-to-end connections 120a-120f are established through access networks 111a and 112a, 111a and 112b, 111b and 112a, 111b and 112b, 111c and 112a, and 111c and 112b.
[0040] According to an embodiment of the present invention, a first network device 101 can transmit data packets received from a laptop 103 to a second network device 102 via end-to-end connections 120a-120f, and further to a laptop 104. The first network device 101 can receive at least one confirmation of successful data packet transmission.
[0041] For example, packets within a session can be distributed from the first network device 101 and transmitted to the second network device 102 in any order via end-to-end connections 120a, 120d, and 120f.
[0042] In one variation, at least one of the end-to-end connections 120a-120f can be aggregated into one or more aggregated connections for transmitting data packets.
[0043] In one example, end-to-end connections 120a-120f are aggregated into a single aggregated connection for transmitting data packets.
[0044] In another example, each end-to-end connection 120a-120f is aggregated into an aggregate connection, thus establishing six aggregate connections for transmitting data packets.
[0045] Figure 2A This is a schematic block diagram of a first network device according to an embodiment of the present invention, which is similar to... Figure 1A and 1BThe first network device 101 is illustrated in the figure. The first network device (e.g., first network device 200) includes at least one processing unit (e.g., processing unit 201), a system bus 202, main memory 203, auxiliary memory 204, device interface 205, and at least one network interface (e.g., network interfaces 206a-206c). Network interfaces 206a-206c can each be a LAN interface or a WAN interface. The processing unit 201 is connected to the auxiliary memory 204, device interface 205, and network interfaces 206a-206c via the system bus 202. The system bus 202 can be any of a variety of bus structures, including memory buses, peripheral buses, and local buses using any type of bus architecture. The main memory 203 is directly connected to the processing unit 201 and can store program instructions for execution by the processing unit 201.
[0046] The device interface described in this article can be any interface that provides connection to other external components, such as a power interface, USB interface, reset button, antenna connector, SIM card slot, etc.
[0047] The first network device 200 is not limited to having three network interfaces and one device interface. For example, the first network device 200 may not include a device interface and may have more or fewer than three network interfaces.
[0048] Figure 2B This is a schematic block diagram of a second network device according to an embodiment of the present invention, which is similar to... Figure 1A and 1B The second network device 102 is illustrated in the figure. The second network device (e.g., second network device 210) includes at least one processing unit (e.g., processing unit 211), a system bus 212, main memory 213, auxiliary memory 214, a device interface 215, and network interfaces 216a and 216b. Network interfaces 216a and 216b can each be either LAN interfaces or WAN interfaces. The processing unit 211 is connected to the auxiliary memory 214, device interface 215, and network interfaces 216a and 216b via the system bus 212. The system bus 212 can be any of a variety of bus architectures, including memory buses, peripheral buses, and local buses using any type of bus architecture. The main memory 213 is directly connected to the processing unit 201 and can store program instructions for execution by the processing unit 211.
[0049] The device interface described in this article can be any interface that provides connection to other external components, such as a power interface, USB interface, reset button, antenna connector, SIM card slot, etc.
[0050] The second network device 210 is not limited to having two network interfaces and one device interface. For example, the network device 210 may not include a device interface and may have more or fewer than two network interfaces.
[0051] Figure 3 This is a schematic diagram illustrating the differences in packet structure between the original data packet and the error correction packet in an embodiment of the present invention.
[0052] like Figure 3 As shown, the original data packet includes a header 301 and a payload 302, while the corresponding error correction packet includes a header 303 and a payload 304.
[0053] In one embodiment, the header 301 of the original data packet and the header 303 of the error correction packet are identical, both including the source address 311, the designated address 312, and tunnel information 313. However, the payload 302 of the original data packet differs from the payload 304 of the error correction packet. The payload 304 is not the payload of the original data packet, but rather includes error correction feedback information for compensating for lost packets.
[0054] More specifically, the error correction feedback information described herein may include, but is not limited to, one or more of the following data or information: current packet loss rate, current packet drop rate, latency, RTT, feedback information sequence number, forward error correction control flags, and any network performance parameters related to the end-to-end connection used to transmit data packets. The current packet loss rate is the current packet loss rate of the network or connection.
[0055] Feedback information sequence numbers are used to identify error correction feedback information based on packet loss rate. Different groups of error correction feedback information with the same packet loss rate share the same feedback information sequence number. Forward error correction control flags are used to instruct the peer to perform forward error correction coding, for example, to enable or disable forward error correction coding at the peer. If the second network device detects that the packet loss rate of media data packets received from the first network device is very low or essentially zero, it can include forward error correction control flags in the error correction feedback information sent to the first network device to enable or disable error correction.
[0056] In one variation, error correction feedback information may be included in the header instead of the payload. Therefore, the original data packet and the error correction packet may have the same payload but different headers. Consequently, the tunneling information in header 301 may differ from the tunneling information in header 303.
[0057] When data packets are transmitted from a first network device to a second network device via end-to-end connections 120a-120f, packet loss may occur in each end-to-end connection 120a-120f. Figure 4This is a schematic diagram illustrating a method for handling packet loss in a first network device according to an embodiment of the present invention, and should be combined with... Figure 1A Check.
[0058] In step 401, the first network device 101 may determine whether error correction mode is enabled. When error correction mode is disabled, the first network device 101 may perform step 402 for each end-to-end connection 120a-120f. Otherwise, step 403 is performed.
[0059] There are no restrictions on how error correction mode can be enabled. Error correction mode can be enabled by default, or it can be enabled by the user or administrator of the first network device 101, or it can be enabled by the first network device 101 when the packet loss threshold is exceeded.
[0060] In one example, if error correction mode is enabled by default, step 403 can be performed after the first network device 101 is powered on or an end-to-end connection 120a-120f is established.
[0061] In another example, if the error correction mode is enabled by the user or administrator of the first network device 101, they can enable the error correction mode based on network conditions.
[0062] In another example, when a packet loss threshold is exceeded, the first network device 101 dynamically enables error correction mode. The packet loss threshold may be related to any parameter related to packet loss and / or latency in at least one of the end-to-end connections 120a-120f.
[0063] In step 402, when error correction mode is not enabled, the first network device 101 can transmit a first plurality of data packets to the second network device 102 via end-to-end connections 120a-120f. The first plurality of data packets can be received from at least one local device (e.g., laptop 103).
[0064] In step 403, when error correction mode is enabled, the first network device 101 can transmit a second plurality of data packets to the second network device 102 via end-to-end connections 120a-120f.
[0065] In one embodiment, the payload of the first plurality of data packets and the payload of the second plurality of data packets are the same, but the second plurality of data packets also include a first request for first information from the second network device 102.
[0066] In another embodiment, the first request is in the payload rather than in the header, so the headers of the first plurality of packets are the same as the headers of the second plurality of packets.
[0067] The first information described herein may include, but is not limited to, one or more of the following data or information: packet loss, packet drop rate, latency, RTT, checksum, logs, and any network performance parameters related to a specific connection of the end-to-end 120a-120f connection.
[0068] In one embodiment, the first request is stored in the header of at least one of the second plurality of data packets.
[0069] In another embodiment, the first request is stored in the payload of at least one of the second plurality of data packets.
[0070] In one variation, the first information may be data or information related to end-to-end connections 120a-120f, rather than data or information related to a specific connection of end-to-end connections 120a-120f. The first network device 101 may determine the data or information after receiving data or information corresponding to a specific connection.
[0071] In step 404, the first network device 101 may receive a third plurality of data packets from the second network device 102 via end-to-end connections 120a-120f. At least one of the third plurality of data packets may include first information requested by the first network device 101.
[0072] In one variation, an acknowledgment is received in step 404, instead of a third or subsequent data packet. The acknowledgment may include the first information requested by the first network device 101.
[0073] In step 405, the first network device 101 may retrieve the first information from the third plurality of data packets.
[0074] In one embodiment, the first information may be stored in each of the third plurality of data packets transmitted via end-to-end connections 120a-120f. For example, each of the third plurality of data packets contains the same first information in its header.
[0075] In another embodiment, the first information may be stored only in the first data packet transmitted through each of the end-to-end connections 120a-120f.
[0076] There are no restrictions on how the first piece of information is stored in the third or subsequent data packets. The above embodiments are for illustrative purposes only.
[0077] In step 406, the first network device 101 can determine, based on the first information, whether at least one of the end-to-end connections 120a-120f has experienced packet loss. If at least one of the end-to-end connections 120a-120f has experienced packet loss, then step 407 can be further executed. Otherwise, step 407 will be skipped.
[0078] For example, if, based on the first information, packet loss exists only in end-to-end connection 120a, then step 407 will be performed only on end-to-end connection 120a.
[0079] In step 407, the first network device 101 may determine a second value for each of at least one of the end-to-end connections 120a-120f based on the first information.
[0080] The second value reflects the severity of packet loss in error correction mode for at least one of the end-to-end connections 120a-120f, and is determined by referring to the number of packets lost in each of the at least one of the end-to-end connections 120a-120f.
[0081] In one embodiment, the second value is the number of packets lost per connection in at least one of the end-to-end connections 120a-120f.
[0082] In another embodiment, the second value is the number of packets lost per connection in at least one of the end-to-end connections 120a-120f, plus a reservation number. The reservation number represents redundant reserved positions in the packet block during data transmission. Therefore, the reservation number can be any positive integer, small enough to maintain successful packet transmission in different scenarios. When any error correction packet transmission fails, the first network device 101 can use the reserved positions to recover lost data, thereby avoiding the accumulation of error correction packets waiting to be transmitted and thus preventing latency and network performance degradation caused by the ping-pong effect.
[0083] In one example, if the reservation number is 1, the second value is the packet loss count for each of at least one of the end-to-end connections 120a-120f plus one. When the packet loss counts for end-to-end connections 120a, 120b, and 120c are 3, 0, and 0, the first network device can determine the second value only for end-to-end connection 120a, and the second value for end-to-end connection 120a is 4. In another example, if the reservation number is 2, and the packet loss counts for end-to-end connections 120a, 120b, and 120c are 5, 2, and 1, then the second values for end-to-end connections 120a, 120b, and 120c should be 7, 4, and 3, respectively.
[0084] In another embodiment, the first network device may determine a second value for all end-to-end connections 120a, 120b, and 120c, even if some of these end-to-end connections have no packet loss. For example, when the number of packet losses in end-to-end connections 120a, 120b, and 120c are 3, 0, and 0, respectively, the first network device may determine second values 4, 1, and 1 for end-to-end connections 120a, 120b, and 120c, respectively, where the value "1" indicates that no packet loss occurred.
[0085] Those skilled in the art will understand that error correction packets are typically transmitted to the second network device 102 along with the original data packets. Therefore, regardless of whether the number of data packets transmitted remains constant, the first network device 101 can dynamically change the ratio between the number of error correction packets and the number of original data packets transmitted between each end-to-end connection 120a-120f.
[0086] In step 408, the first network device 101 can transmit a fourth plurality of data packets to the second network device 102 via end-to-end connections 120a-120f. The fourth plurality of data packets can be a combination of original data packets and error correction packets.
[0087] The ratio between the number of error-correcting packets transmitted and the number of original data packets is based on a first value, which is related to the number of packets lost in a particular connection. The assignment of this first value will be explained below. Figure 6 This will be discussed further below. Figure 6 The text explains how to determine the ratio by updating the first value with reference to the second value.
[0088] Each error correction packet can also be a forward error correction packet, an ARQ packet, or a parity packet. An error correction packet may include at least one second piece of information selected from one or more of the following: codeword, sequence number, checksum, metadata, and parity bit.
[0089] In one embodiment, the second value is the ratio between the number of original data packets and the number of error correction packets to be transmitted. For example, if the second value is 0.25, the ratio between the number of error correction packets and the number of original data packets is 2:8.
[0090] In another embodiment, the second value is the number of error correction packets in the fourth plurality of data packets. For example, if the second value is 2, then the number of error correction packets is 2.
[0091] In another embodiment, the second value plus the reservation number determines the number of error correction packets for the fourth plurality of data packets. In one example, if the second value is 5 and the reservation number is 0, then the number of error correction packets for the fourth plurality of data packets is 5.
[0092] In a variation, after executing step 405, if the first network device 101 can adjust the first value of the end-to-end connections 120a-120f accordingly, without requiring a second value for each end-to-end connection 120a-120f, then step 408 can be executed directly without executing steps 406 and 407.
[0093] Figure 5 This is a schematic diagram illustrating a method for handling packet loss in a second network device according to an embodiment of the present invention.
[0094] In step 501, the second network device 102 may receive at least one data packet from the first network device 101. The at least one data packet may be one of the first plurality of data packets or the second plurality of data packets discussed in steps 402 or 403.
[0095] In step 502, the second network device 102 may determine whether at least one data packet includes the first request. If the received at least one data packet is at least one of a second plurality of data packets, then the first request is received, and step 503 may be further executed.
[0096] In step 503, the second network device 102 may retrieve a first request from at least one data packet and generate first information based on the first request. The first information may be data or information including at least packet loss information.
[0097] There is no limit to how the second network device 102 determines the number of packet losses for each end-to-end connection 120a-120f. Any method capable of identifying packet loss can be applied to the second network device 102, such as identifying local sequence numbers and / or detecting received expected heartbeat messages. The heartbeat message should be small enough that the overall throughput is not affected.
[0098] In step 504, the second network device 102 can transmit a third plurality of data packets to the first network device 101 via end-to-end connections 120a-120f, and the third plurality of data packets include at least the first information.
[0099] In one variation, instead of transmitting a third or more data packets, the second network device 102 may transmit an acknowledgment to the first network device 101 in step 504. The acknowledgment may include first information requested by the first network device 101.
[0100] In step 505, the second network device 102 may receive error correction packets. Based on the received error correction packets, the second network device 102 may compensate for lost data packets or generate new packets that are equivalent to or similar to the lost data packets.
[0101] Figure 6 This is a schematic diagram illustrating how a first network device allocates or updates a first value for a specific connection, which should be combined with... Figure 4 Let's take a look together. The specific connection is an end-to-end connection of 120a-120f.
[0102] In step 601, once error correction mode is enabled, the first network device 101 can assign a first value to a specific connection. The first value is a value that reflects the number of packets lost in the specific connection, and its adoption method is the same as that of the second value.
[0103] In a preferred embodiment, the first value is the number of packets lost in a particular connection plus the number of packets retained.
[0104] In another embodiment, the first value is the number of packets lost in a particular connection.
[0105] In a variation, the first value could be a value proportional to the number of packets lost in a particular connection, rather than the number of packets lost in a particular connection.
[0106] In one embodiment, if no packets are lost in a particular connection, the first network device 101 may assign 0 as the first value for that particular connection. In another embodiment, if no packets are lost in a particular connection, the first network device 101 may assign any number as the first value for that particular connection, the number representing that no error correction packets will be transmitted.
[0107] In one variation, step 601 can be performed at any time before receiving the first information from the second network device 102, for example, during the execution of Figure 4 Before step 407 shown in the diagram.
[0108] The first value can then be updated based on and with reference to the second value. After initialization, the first network device 101 can determine whether there is packet loss in a specific connection based on the first information received from the second network device 102, and further determine the second value.
[0109] In step 602, the first network device 101 may determine whether a first criterion is met for a particular connection. If the first criterion is met, the first network device 101 may further execute step 604. The first criterion is a condition associated with a second value.
[0110] In a variation, the first network device 101 may directly execute step 602 without executing step 601.
[0111] In one embodiment, the first criterion is satisfied when the next N second values are the same but different from the first value, where N is a positive integer. For example, when N is 4 and the first value is 2, the first criterion is satisfied when the next four second values are all 6.
[0112] In another embodiment, the first criterion is met when there are N consecutive changes in the second value. For example, if N is 3 and the first value is 2, the first criterion is met when the next three second values are 4, 6, and 5, because three consecutive changes (from 2 to 4, from 4 to 6, and from 6 to 5) are detected.
[0113] In another embodiment, the first criterion is satisfied when the average of the next N determined second values differs from the first value. For example, if N is 2 and the first value is 3, when the next two second values are 3 and 5, the first criterion is satisfied because the average of the next two second values is 4, which is different from the first value. The statistical measures described herein are for illustrative purposes only. Other statistical measures, such as mode, median, maximum, and minimum, may also be applied.
[0114] In other variations, the first network device 101 may also set the first standard in any way so that the first value can be updated to meet networking requirements. The two embodiments listed above are for illustrative purposes only.
[0115] If the first criterion is not met, in step 603, the first network device 101 may transmit a fourth plurality of data packets according to the first value. Then, step 606 may be further executed to determine whether the second criterion is met.
[0116] If the first criterion is met, then in step 604, the first network device 101 may update the first value for a specific connection. There are no restrictions on how the first value is updated. The first value can be updated in any way to reflect changes in the number of packet losses over a period of time.
[0117] In one embodiment, the updated first value corresponds to the average of the next N second values used to determine the first criterion in step 602. For example, if N is 3, the updated first value would be 4 when the next three second values are 5, 3, and 4. Similarly, the statistical measures described herein are for illustrative purposes only. Other statistical measures, such as mode, median, maximum, and minimum, may also be applied.
[0118] In another embodiment, the updated first value is proportional to the average of the next N second values used to determine the first criterion in step 602. For example, if N is 3, when the next 3 second values are 2, 3, and 4, the updated first value should be the average of the next N second values multiplied by k (i.e., 3 × k), where k is a constant value fixed for a particular connection when error correction mode is enabled.
[0119] The value of N can be configured by the manufacturer of the first network device 101, but it can also be adjusted by the user or administrator of the first network device 101 to adapt to different network environments.
[0120] In step 605, the first network device 101 may transmit a fourth plurality of data packets according to the updated first value.
[0121] In a variation, the first network device 101 may perform step 605, and then perform step 604.
[0122] In step 606, the first network device 101 may determine whether a second criterion for a particular connection is met. If the second criterion is met, the first network device 101 may further execute step 607. Otherwise, the first network device 101 may again execute step 602 to determine whether a first criterion for a particular connection is met.
[0123] In one embodiment, a second criterion is met when the next M second values indicate that a particular connection has no packet loss or very little packet loss, where M is a positive integer. For example, if M is 10 and the first value is 2, then the second criterion is met when the next 10 second values are 1, indicating that the particular connection has no packet loss, and step 607 can be further performed to disable the error correction mode at the first network device.
[0124] In another embodiment, the second criterion is satisfied when the next M second values indicate that the network environment worsens when the error correction mode is applied.
[0125] There are no restrictions on how M is determined. For example, a counter can be applied to the first network device 101 to determine M.
[0126] If the second criterion is met, in step 607, the first network device 101 may disable the error correction mode and transmit data packets without error correction packets after a time threshold.
[0127] In one embodiment, the time threshold is 0 milliseconds, so that once the second criterion is met, the first network device 101 can disable the error correction mode.
[0128] In another embodiment, the time threshold is any positive value, such as 10 milliseconds, to avoid potential conflicts with other system steps.
[0129] In a variant, steps 606 and 607 are optional, such that the error correction mode of the first network device 101 remains enabled.
[0130] In another variation, the first network device 101 may determine the second standard before determining the first standard. Therefore, the first network device 101 may perform step 606 and then step 602.
[0131] In another variation, the first network device 101 can simultaneously determine the second standard and the first standard. If the second standard is met, the first network device 101 can disable error correction mode and transmit data packets without error correction packets, and even if the first standard is met, step 607 can be omitted.
[0132] Figure 7This is a table illustrating an example of data packets being transmitted from a first network device 101 to a second network device 102 via a specific connection according to an embodiment of the present invention. Each row of the table represents a data packet block transmitted from the first network device 101 to the second network device 102 via an end-to-end connection 120a, and the maximum number of data packets that can be transmitted in each data packet block via the end-to-end connection 120a is 7. For illustrative purposes, six data packet blocks are transmitted and are named "Block 1", "FEC Block 1", "FEC Block 2", "FEC Block 3", "FEC Block 4", and "Block 2".
[0133] As illustrated in the first row, "Square 1," without error correction mode enabled, seven raw data packets (sequence numbers 0-6) are transmitted from the first network device 101 to the second network device 102 via end-to-end connection 120a. However, the raw data packet with underlined sequence number 4 is lost during transmission. Therefore, when transmitting the next square, error correction mode can be enabled and the method disclosed in this invention can be applied.
[0134] Assume the first value is the number of packets lost in the end-to-end connection 120a plus the reservation number. If we assume the reservation number is 1, since the number of packets lost in block 1 is 1, the first value becomes 2 when transmitting "FEC block 1". Therefore, when transmitting "FEC block 1", only the original data packets with sequence numbers 7-11 and the error correction packet "FE C1" are transmitted, as shown in the second row, with the last position reserved due to the reservation number. The error correction packet "FEC1" may include at least one piece of second information associated with the original data packet with sequence number 4.
[0135] During the transmission of "FEC block 1", the original data packet with sequence number 11 and the underlined error correction packet "FEC1" were lost. Therefore, the error correction packet corresponding to the original data packet with sequence numbers 4 and 11 can be scheduled to be transmitted in a future block. For illustrative purposes, the transmission of two error correction packets corresponding to the original data packet with sequence numbers 4 and 11 is scheduled in the next block.
[0136] In the third line, during the transmission of “FEC block 2”, in addition to transmitting the original data packets with sequence numbers 12-16 and one of the error correction packets (e.g., “FEC2”), the first network device 101 may also transmit another error correction packet “FEC3” using a reserved location. Error correction packets “FEC2” and “FEC3” may include at least one second piece of information associated with the original data packets with sequence numbers 4 and 11.
[0137] In a variation, if the reserved space is occupied for other purposes, the first network device 101 may transmit “FEC2” instead of “FEC block 2” in the next block.
[0138] Similarly, during the transmission of block "FEC Block 2", the original data packet with underlined sequence number 16 was lost. Therefore, an error correction packet corresponding to the original data packet with sequence number 16 will be transmitted in the next block.
[0139] In the fourth line, the first network device 101 can transmit the original data packets numbered 17-21 and the error correction data packets "FEC4" in "FEC block 3" without packet loss during block transmission. The method disclosed in this invention can be executed from time to time during the transmission of each block, thus allowing the determination of a first standard and a second standard. If, after transmitting FEC block 4, the second standard is not met, the error correction mode is maintained to transmit the next block.
[0140] In the fifth line, “FEC block 4” includes the original data packets with sequence numbers 22-26, without any error-correcting data packets being transmitted. Similarly, no packets are lost during the transmission of the block. Assuming the second criterion is met here, error correction mode can be disabled by performing step 607 at the first network device 101.
[0141] In a variation, if the second value is the number of packets lost in each of at least one of the end-to-end connections 120a-120f plus the number of packets reserved, then the number of original packets transmitted in each block should be adjusted by taking into account the number of packets reserved.
[0142] Therefore, in line 6, only the raw data packets are being transmitted until error correction mode is re-enabled. Thus, in "square 2," only the raw data packets with sequence numbers 27-33 are transmitted.
[0143] There is no limit to the maximum number of packets that can be transmitted in each packet block for any end-to-end connection; the seven packets are for illustrative purposes only.
[0144] As illustrated, by applying adaptive error correction mode, network devices can improve packet transmission by balancing network resources and compensating for packet loss. If error correction mode is enabled without adaptive changes, some packets may be occupied, and the network performance of the connection may be lower than expected, even if no packet loss compensation is needed. By applying the method disclosed in this invention, each end-to-end connection 120a-120f can adaptively use error correction mode to transmit data packets and improve overall performance by compensating for packet loss.
Claims
1. A method for transmitting data packets from a first network device to a second network device, comprising: When error correction mode is enabled: i. Transmitting a first plurality of data packets to the second network device via an end-to-end connection; ii. Receive a second plurality of data packets from the second network device via the end-to-end connection; iii. Determine a first value for each of at least one end-to-end connection based on first information; and iv. Transmit a third plurality of data packets to the second network device via the end-to-end connection; The third plurality of data packets includes raw data packets and error correction packets; and The first information is stored in at least one second or more data packets.
2. The method of claim 1, wherein the first value of each of the at least one end-to-end connection is the number of packets lost corresponding to the connection of the end-to-end connection.
3. The method according to claim 1, further comprising: Determine a second value for each of at least one of the end-to-end connections.
4. The method of claim 1, wherein if the first criterion is met, the first value is updated.
5. The method of claim 1, wherein the error correction mode is disabled if the second criterion is met.
6. The method of claim 4, wherein the first criterion is satisfied when N consecutive changes in the second value are detected.
7. The method of claim 5, wherein the second criterion is satisfied when the next M second values indicate that no packets have been lost.
8. The method of claim 1, wherein the first plurality of data packets includes a first request for requesting the first information.
9. The method of claim 1, wherein the end-to-end connections are aggregated into aggregate connections.
10. The method of claim 1, wherein the first value may further include a retention number.
11. A first network device, comprising: Multiple network interfaces; At least one processing unit; At least one non-transitory local storage medium storing program instructions executed by the at least one processing unit for recreating lost data packets from a data session established between a first and second communication routers via an aggregated connection, including: When at least one end-to-end connection experiences packet loss: i. Transmitting a first plurality of data packets to a second network device via an end-to-end connection; ii. Receive a second plurality of data packets from the second network device via the end-to-end connection; iii. Determine a first value for each of the at least one end-to-end connection based on the first information; and iv. Transmit a third plurality of data packets to the second network device via the end-to-end connection; The third plurality of data packets includes raw data packets and error correction packets; and The first information is stored in at least one second or more data packets.
12. The first network device of claim 11, wherein the first value for each of at least one connection in the end-to-end connection is the number of packet losses corresponding to one connection in the end-to-end connection plus one.
13. The first network device according to claim 11, further comprising: Determine if error correction mode is enabled.
14. The first network device of claim 11, wherein the first value is updated if the first criterion is satisfied.
15. The first network device of claim 13, wherein error correction mode is disabled if the second criterion is met.
16. The first network device of claim 14, wherein the first criterion is satisfied when N consecutive changes in the second value are detected.
17. The first network device of claim 15, wherein the second criterion is satisfied when the next M second values indicate that no packets have been lost.
18. The first network device of claim 11, wherein the first plurality of data packets includes a first request for requesting the first information.
19. The first network device of claim 11, wherein the end-to-end connection is aggregated into an aggregated connection.
20. The first network device according to claim 11, wherein the third plurality of data packets includes the error correction packet.