Mechanism for selective retransmission

The selective retransmission mechanism addresses inefficiencies in high-performance transport protocols by using variables to optimize retransmissions, reducing unnecessary packet retransmissions and timeouts, thereby enhancing efficiency in multipath scenarios.

WO2026097584A1PCT designated stage Publication Date: 2026-05-15DOUYIN VISION CO LTD
View PDF 4 Cites 0 Cited by

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
DOUYIN VISION CO LTD
Filing Date
2024-11-11
Publication Date
2026-05-15

AI Technical Summary

Technical Problem

Existing high-performance transport protocols face inefficiencies in retransmission mechanisms, particularly in multipath transmission scenarios, where Go-Back-N retransmission leads to unnecessary packet retransmissions, and TCP-like selective retransmission is complex and ill-suited for hardware implementation, resulting in low overall transmit efficiency and long timeouts.

Method used

A selective retransmission mechanism that maintains two variables - one indicating the next position of the highest retransmitted sequence number and another tracking time information - to optimize retransmissions by avoiding redundant transmissions and reducing reliance on RTOs.

Benefits of technology

This approach enhances retransmission efficiency by minimizing unnecessary retransmissions and reducing the need for long timeouts, improving throughput in multipath transmission environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024131384_15052026_PF_FP_ABST
    Figure CN2024131384_15052026_PF_FP_ABST
Patent Text Reader

Abstract

There are proposed methods, devices, and computer program products for selective transmission. In the method, a first device transmits a packet to a second device. The first device updates, based on the transmission of the packet, a first variable indicating a next position of a highest retransmitted sequence number in a retransmission iteration. The first device updates, based on the update of the first variable, a second variable indicating time information when the first variable is updated. In this way, it can improve retransmission efficiency by avoiding unnecessary retransmissions. Further, it can also effectively support multiple fast retransmissions for each packet.
Need to check novelty before this filing date? Find Prior Art

Description

MECHANISM FOR SELECTIVE RETRANSMISSIONFIELD

[0001] The present disclosure generally relates to image processing, and more specifically, to methods, devices and computer program products for selective retransmission.BACKGROUND

[0002] Acknowledgment (ACK) mechanism is a fundamental part of transmission control protocol (TCP) . It is a signal sent from the receiver to the sender to indicate that certain data packets have been successfully received. Reliable network transport protocols need to retransmit the lost packets to guarantee reliability. Serval retransmission techniques have been proposed. For example, Go-Back-N retransmission requires retransmits all the packets from the point where a packet loss is detected. In addition, selective retransmission is a widely used technique in network transport protocols to improve the efficiency of retransmissions. Therefore, it is worth studying the retransmission mechanism.SUMMARY

[0003] In a first aspect of the present disclosure, there is provided a method implemented at a first device. The method includes transmitting a packet to a second device; updating, based on the transmission of the packet, a first variable indicating a next position of a highest retransmitted sequence number in a retransmission iteration; and updating, based on the update of the first variable, a second variable indicating time information when the first variable is updated.

[0004] In a second aspect of the present disclosure, there is provided an electronic device. The electronic device comprises: a computer processor coupled to a computer-readable memory unit, the memory unit comprising instructions that when executed by the computer processor implements a method according to the first aspect of the present disclosure.

[0005] In a third aspect of the present disclosure, there is provided a computer program product, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by an electronic device to cause the electronic device to perform a method according to the first aspect of the present disclosure.

[0006] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.

[0007] BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

[0008] Through the more detailed description of some implementations of the present disclosure in the accompanying drawings, the above and other objects, features and advantages of the present disclosure will become more apparent, wherein the same reference generally refers to the same components in the implementations of the present disclosure.

[0009] Fig. 1 illustrates an example communication environment in which example embodiments of the present disclosure can be implemented;

[0010] Fig. 2 illustrates an example diagram of Go-back-N retransmission;

[0011] Fig. 3 illustrates an example diagram of network re-ordering in a multipath transmission scenario;

[0012] Fig. 4 illustrates a schematic diagram of structures of acknowledgment (ACK) , non-acknowledgment (NAK) and selective acknowledgment (SACK) , respectively;

[0013] Fig. 5 illustrates a signaling flow of a retransmission mechanism;

[0014] Fig. 6 illustrates a signaling flow of selective retransmissions according to implementations of the present disclosure;

[0015] Figs. 7A and 7B illustrate signaling flows of selective retransmissions according to implementations of the present disclosure, respectively;

[0016] Fig. 8 illustrates an example flowchart of a method implemented at a first device according to implementations of the present disclosure;

[0017] Fig. 9 illustrates a schematic diagram of an apparatus according to implementations of the present disclosure; and

[0018] Fig. 10 illustrates a block diagram of a computing device in which various implementations of the present disclosure can be implemented.DETAILED DESCRIPTION

[0019] Principle of the present disclosure will now be described with reference to some implementations. It is to be understood that these implementations are described only for the purpose of illustration and help those skilled in the art to understand and implement the present disclosure, without suggesting any limitation as to the scope of the disclosure. The disclosure described herein can be implemented in various manners other than the ones described below.

[0020] In the following description and claims, unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skills in the art to which this disclosure belongs.

[0021] References in the present disclosure to “one implementation, ” “an implementation, ” “an example implementation, ” and the like indicate that the implementation described may include a particular feature, structure, or characteristic, but it is not necessary that every implementation includes the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same implementation. Further, when a particular feature, structure, or characteristic is described in connection with an example implementation, it is submitted that it is within the knowledge of one skilled in the art to affect such feature, structure, or characteristic in connection with other implementations whether or not explicitly described.

[0022] It shall be understood that although the terms “first” and “second” etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and similarly, a second element could be termed a first element, without departing from the scope of example  implementations. As used herein, the term “and / or” includes any and all combinations of one or more of the listed terms.

[0023] The terminology used herein is for the purpose of describing particular implementations only and is not intended to be limiting of example implementations. As used herein, the singular forms “a” , “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” , “comprising” , “has” , “having” , “includes” and / or “including” , when used herein, specify the presence of stated features, elements, and / or components etc., but do not preclude the presence or addition of one or more other features, elements, components and / or combinations thereof. As used herein, to better distinguish packets with payload (as well as RDMA Read Request packet) from signal packets, including ACK, SACK, congestion notification packet (CNP) and the like, packets with payload (as well as RDMA Read Request packet) may refer to as “semantic packets” . The term “retransmission iteration” used herein may refer to a round of retransmission triggered by a SACK.

[0024] Principle of the present disclosure will now be described with reference to some implementations. It is to be understood that these implementations are described only for the purpose of illustration and help those skilled in the art to understand and implement the present disclosure, without suggesting any limitation as to the scope of the disclosure. The disclosure described herein can be implemented in various manners other than the ones described below. In the following description and claims, unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skills in the art to which this disclosure belongs.

[0025] It may be understood that data involved in the present technical solution (including but not limited to the data itself, the acquisition or use of the data) should comply with requirements of corresponding laws and regulations and relevant rules.

[0026] It may be understood that, before using the technical solutions disclosed in various implementation of the present disclosure, the user should be informed of the type, scope of use, and use scenario of the personal information involved in the present disclosure in an appropriate manner in accordance with relevant laws and regulations, and the user’s authorization should be obtained.

[0027] For example, in response to receiving an active request from the user, prompt information is sent to the user to explicitly inform the user that the requested operation will need to acquire and use the user’s personal information. Therefore, the user may independently choose, according to the prompt information, whether to provide the personal information to software or hardware such as electronic devices, applications, servers, or storage media that perform operations of the technical solutions of the present disclosure.

[0028] As an optional but non-limiting implementation, in response to receiving an active request from the user, the way of sending prompt information to the user, for example, may include a pop-up window, and the prompt information may be presented in the form of text in the pop-up window. In addition, the pop-up window may also carry a selection control for the user to choose “agree” or “disagree” to provide the personal information to the electronic device.

[0029] It may be understood that the above process of notifying and obtaining the user authorization is only illustrative and does not limit the implementation of the present disclosure. Other methods that satisfy relevant laws and regulations are also applicable to the implementation of the present disclosure.

[0030] Fig. 1 illustrates an example communication environment 100 in which example embodiments of the present disclosure can be implemented. In the communication environment 100, two devices, including a first device 110, and a second device 120 can communicate with each other. In the example of Fig. 1, the first device 110 may act as a received, and the second device 120 may act as a sender.

[0031] It is to be understood that the number of apparatuses and their connections shown in Fig. 1 are only for the purpose of illustration without suggesting any limitation. The communication environment 100 may include any suitable number of apparatuses configured to implementing example embodiments of the present disclosure.

[0032] As mentioned above, reliable network transport protocols need to retransmit the lost packets to guarantee reliability. As of now, high-performance transport protocols like remote direct memory access (RDMA) over converged Ethernet version 2 (RoCEv2) adopt Go-Back-N retransmission, which retransmits all the packets from the point where a packet loss is detected, even though many retransmissions are not necessary. This algorithm is friendly to hardware implementation, but the retransmission efficiency is quite low. TCP improves the retransmission efficiency with a retransmission algorithm relying on the selective acknowledgements, but the algorithm is much too complicated for hardware offloading. Moreover, both Go-Back-N and TCP's selective retransmission are a kind of "fast retransmission". If such retransmitted packets are lost again, the transport will resort to Retransmission Time-Out (RTO) to retransmit again. RTOs are triggered by timers, but the timeout intervals are usually quite long, leading to very low overall transmit efficiency.

[0033] Today, high-performance transport protocols tend to employ multi-path transmission to balance the load on different paths, avoiding flow conflicts and thus improving the throughput of the entire network. Multi-path transmission inevitably causes packet out-of-order at the receiving side. In this scenario, Go-Back-N retransmission will incur too many unnecessary packet retransmissions, while TCP-like selective retransmission is ill-suited due to its complexity as high-performance transport protocols are usually implemented entirely in hardware.

[0034] Selective retransmission (SR) in TCP is achieved by leveraging the Selective Acknowledgment (SACK) . A TCP sender assigns each byte a sequence number, and the sequence number is used to determine if incoming packets are in order. A TCP receiver accepts out-of-order packets and put them in a receiving buffer. After receiving data segments that are out-of-order, the receiver returns a SACK packet instead of an ACK packet. Compared with the ACK packet, SACK contains an additional field that contains the starting and ending sequence numbers of the non-contiguous data in the receiving buffer, informing the sender about which data segments having been successfully received and the rest remaining undetermined. When receiving the SACK packet, the sender leverages the selective acknowledgements to figure out the data segments that are quite possibly lost, and then retransmits them. Note that these segments are not necessarily contiguous by the sequence number. The sender maintains the following variables: highACK: the highest sequence number up to which the data has been correctly received; highData: the highest sequence number of data that has been sent; highRxt: the highest sequence number the retransmitted data; RecoveryPoint: records the value of highData when the sender enters the fast recovery state; and scoreboard: a data structure that records the acknowledgement information extracted from SACK and ACK.

[0035] When the sender receives three duplicate ACKs or SACKs, it enters the fastRecovery state, which means setting RecoveryPoint to the current value of highData, and highRxt to the current value of HighACK. In this state, the sender may selectively retransmit the lost data segments in the range [highRxt, RecoveryPoint) . Whether a data segment starting from sequence number S is lost is determined using either of the two criteria: 1) If the size of the data, which has been acknowledged and has a sequence number greater than S, exceeds a certain threshold; 2) If the number of non-contiguous segments, which have been acknowledged and have a sequence number greater than S, exceeds a certain threshold. After retransmitting a segment, the sender updates highRxt. During the fastRecovery state, the sender also receives SACK and ACK packets and updates the scoreboard. After all lost data in the interval has been retransmitted, i.e., when HighACK exceeds RecoveryPoint, the sender exits the fastRecovery state.

[0036] RoCEv2 and Infiniband (IB) are the most widely used high-performance transport protocols. Both of them use Go-Back-N as their retransmission mechanism. Fig. 2 illustrates an example diagram of Go-back-N retransmission. As a sender 21 sends out packets, the sender 21 assigns each packet a packet sequence number (PSN) . The PSN increases monotonically as each packet is transmitted into the network. For example, after receiving the packet 200, the receiver 22 increases expected PSN (ePSN) to 1. The ePSN is updated to 2, after the packet 201 is received. The receiver 22 expects to receive packets in the order as they are transmitted and does not accept out-of-order packets. This is achieved by checking whether PSNs in the received packets are contiguous. If an incoming packet bears a sequence number that the receiver 22 expects to receive (expected PSN, ePSN) , the receiver 22 may accept the packet, and probably reply with an ACK packet to inform the sender 21 that packets up to this PSN point has been correctly received. If the PSN in the incoming packet is larger than the ePSN, it means that the expected packet is lost. The receiver 22 may discard the unexpected packet and reply with a NAK packet to the sender 21 immediately. For example, if the EPSN is 2 and the packet 203 is received, it can be inferred that the packet 202 is lost. In this case, the receiver 22 may reply with NAK to request a retransmission of the packet 202. Upon receiving the NAK packet, the sender 21 may retransmit all packets starting from the PSN in the NAK (for example, all packets from packet 202) . As shown in Fig. 2, though only packet 202 is lost during retransmission, packet 202 to packet 209 are all retransmitted. The retransmissions of packet 203 to packet 209 are not necessary.

[0037] In some cases, for transport protocols, fast retransmission is triggered only once for a specific packet. If the fast-retransmitted packets (incurred by Go-Back-N or Selective Retransmission) get lost again, the last resort is RTO retransmission. RTO retransmissions are much more inefficient as the timeout intervals are usually quite long (in hundreds of microseconds or milliseconds) . The sender needs to wait before the RTO timer fires. Moreover, congestion control algorithms will significantly lower the sending rate upon RTOs, causing low throughput.

[0038] Multipath transmission is an emerging technique in high-speed transport protocols. It involves distributing the packets of a connection across multiple network paths to balance the network load. This can lead to packets arriving out-of-order due to varying latencies on different paths. Fig. 3 demonstrates an example of network re-ordering in a multipath transmission scenario. For example, the sender may transmit packets 301, 302 and 303 in sequence. The packets 301, 302 and 303 are transmitted across different network  paths. Due to different latencies on different paths, the packets may arrive out-of-order. For example, the receiver may first receive the packet 302, then the packet 303 and the packet 301.

[0039] For high-performance transport protocols, Go-Back-N retransmission is simple but has low efficiency. And a scheme similar to TCP selective retransmission is complex, as it requires maintaining scoreboard, fast recovery state, etc. For example, the scoreboard requires complex data structures to describe non-contiguous sequence numbers for data in the receiving buffer, and the algorithm to scan and update the sequence number ranges is non-trivial. Such complexity imposes great challenges to hardware design and implementation. Meanwhile, RTO retransmissions may need to be avoided as much as possible. Moreover, high-performance transport protocols tend to employ multipath transmission to achieve better load-balancing and throughput. Packet out-of-order becomes quite normal at the receiver, which causes the dilemma of deciding whether a packet is lost or is just experiencing a long latency on a slow path. Therefore, in order to address at least part of the above problems, a low-complexity, efficient and hardware-friendly retransmission algorithm is required.

[0040] In Reliable Connection service, each semantic packet may be acknowledged. And ACK packets may get coalesced, which means a single ACK can serve as acknowledgment for one or more previous semantic packets. As shown in Fig. 4, an ACK may include a fundamental transport header (FTH) 401 and an ACK extended transport header (AETH) 402. When a receiver generates an ACK, its FTH. PSN field is populated with the receiver's ePSN. When a sender receives an ACK, it may advance its unaPSN to the ACK's FTH. PSN. Moreover, a SACK packet is used to selectively acknowledge the out-of-order semantic packets at the receiver. Instead of generating a SACK for each out-of-order packet, implementations of the present disclosure may employ a "lazy SACK"scheme: only when the out-of-order degree (OOOD) at the receiver side exceeds a threshold shall the receiver send out a SACK. This also means the receiver keeps returning ACKs when OOOD is below threshold. The OOOD is defined by the difference between the highest received PSN (hPSN) and the ePSN. The OOOD threshold for sending SACK packets can be considered as the maximum out-of-order degree caused by multipath. For example, as shown in Fig. 4, a SACK contains an AETH 422, and the fields of it are populated like an ACK packet. A SACK also contains a SACKETH 423, which includes a 128-bit bitmap. The SACKETH 423 may include a 128-bit map, standing for a PSN range from ePSN to ePSN+127. A SACK also includes an FTH 421. If a sender receives a SACK packet, the sender can presume the ePSN to be lost. In this case, a sender can determine to retransmit ePSN, as well as some of the un-received PSN indicated in the SACK's bitmap. The length of receiver receiving bitmap may be larger than 128-bit, depending on implementation. The receiver can optionally send more than 128-bit of receiving bitmap with multiple SACKs. Further, as shown in Fig. 4, a NAK may include an FTH 411 and an AETH 412.

[0041] Consecutive SACK packets may contain overlapping bitmaps, leading to unnecessary retransmissions. Fig. 5 illustrates a signaling flow of a retransmission mechanism. The values of PSN and ePSN may be initiated to 0. After receiving the packet from the sender 520, the receiver 510 may increase the ePSN by 1. As shown in Fig. 5, the packet with PSN=2 and the packet with PSN=6 are lost. The receiver 520 may transmit a first SACK with the bitmap {0, 1, 1, 1} which means that packet with PSN=2 is lost and packet with PSN=3, packet with PSN=4 and packet with PSN=5 are received. After receiving the first SACK, the sender 520 may retransmit the packet with PSN=2. Moreover, the receiver 520 may transmit a second SACK  with the bitmap {0, 1, 1, 1, 0, 1, 1} which means that packet with PSN=2 and packet with PSN=6 are lost and packet with PSN=3, packet with PSN=4, packet with PSN=5, packet with PSN=7 and packet with PSN=8 are received. In this case, after receiving the second SACK, the sender 520 may retransmit the packet with PSN=2 and the packet with PSN=6. Since the first retransmission of the packet with PSN=2 is successful, the receiver 520 may drop the second retransmission of the packet with PSN=2. In other words, the second retransmission of the packet with PSN=2 is not necessary.

[0042] According to implementations of the present disclosure, a new retransmission mechanism is proposed. Specifically, the sender maintains two variables where one of the variables indicates a next position of a highest retransmitted sequence number in a retransmission iteration and the other indicates indicating time information when the first variable is updated. In this way, it can significantly improve retransmission efficiency by avoiding redundant retransmission. Moreover, after the retransmitted packets are lost again, it can continue to retransmit them without waiting for the RTO retransmission.

[0043] Example implementations of the present disclosure will be described in detail below with reference to the accompanying drawings.

[0044] Reference is made to Fig. 6 which illustrates a signaling flow of retransmission mechanism. For the purpose of discussion, the signaling flow 600 will be discussed with reference to Fig. 1, for example, by using the first device 110 and the second device 120.

[0045] The first device 110 transmits (5005) a packet to the second device 120. That is, the second device 120 receives the packet from the first device 110. The packet includes a packet sequence number (PSN) of the packet. The first device 110 may assign each semantic packet a monotonically increasing PSN.

[0046] After the transmission (6005) of the packet, the first device 110 updates (6010) a first variable indicating a next position of the highest retransmitted sequence number in a retransmission iteration. For example, the first variable may be referred to as unRxtPSN, which means the next position of the highest retransmitted PSN in a retransmission iteration. In some other implementations, the first variable may indicate the PSN of a next retransmitted packet. In some implementations, the first variable is initialized to be an unacknowledged packet sequence number (unaPSN) . The first device 110 updates (6015) a second variable indicating time information when the first variable is updated. For example, the second variable may be referred to as unRxtPSN_TS which records the time when unRxtPSN is updated. In some implementations, the second variable may be initialized to be a time instant when the first variable is initialized. In this way, the variables can limit the retransmission PSN range when a SACK triggers packet retransmissions, thereby avoiding unnecessary retransmissions.

[0047] In some implementations, the second device 120 may accept out-of-order packets. For example, the second device 120 may determine the number of out-of-order packets in a plurality of received packets based on the PSN of the packet and an expected packet sequence number (ePSN) . The second device 120 may determine whether the number of out-of-order packets exceeds a threshold. In some implementations, the threshold may be configured to the first device 110. Alternatively, the first device 110 may determine the threshold. It is noted that the threshold can be any suitable number.

[0048] The second device 120 may transmit (6020)  / return a SACK when there are out-of-order packet arrivals. For example, if the number of out-of-order packets exceeds the threshold, the second device 120 may  transmit the SACK of the plurality of received packets to the first device 110. In some implementations, the SACK may include an acknowledgment extension header (AETH) that includes a syndrome field, a syndrome specific data field, and an expected received sequence number. The SACK may include a bitmap that indicates which packets have been correctly received by the second device 120. For example, the SACK further includes a selective acknowledgment extension header (SACKETH) indicates a bitmap indicating whether one or more packets starting from the expected packet sequence number are dropped or not. For example, the bitmap may be 128-bit long and stand for a PSN range from ePSN to ePSN+127. The rest of the SACK can be identical to an ACK. The ACK may include an ePSN (expected Packet Sequence Number) field. This field confirms in a cumulative manner that the destination has correctly received all semantic packets with PSNs smaller than this value. Alternatively, in some other implementations, the ePSN in ACK indicates that semantic packets with PSNs not larger than this PSN value have been correctly received. After receiving an ACK or SACK, the first device 110 may extract ePSN and assign (6025) the extracted ePSN to a variable named unaPSN. For example, the variable unaPSN may be updated based on the extracted ePSN.

[0049] In some implementations, the first device 110 may determine (6030) whether the first variable is smaller than the updated unaPSN in the SACK. In this case, if the first variable is smaller than the updated unaPSN, the first device 110 may update (6035) the first variable to be the updated unaPSN.

[0050] Alternatively, if the first variable is not smaller than the updated unaPSN, the first device 110 may determine (6040) a difference between current time and the second variable. For example, if the difference does not exceed a threshold, the first device 110 may retransmit (6050) one or more packets based on a bitmap in the SACK. For example, if the bitmaps indicates “11001” , the first device 110 may retransmit the third and fourth packets. In this way, it can improve retransmission efficiency by avoiding unnecessary retransmission.

[0051] In some implementations, if the difference exceeds a threshold, the first device 110 may revert (6045) the first variable to the unaPSN. For example, the threshold may be a round trip time (RTT) of the transmission between the first device 110 and the second device 120. It is noted that the threshold may be any suitable value. The first device 110 may retransmit (6050) one or more packets with a packet sequence number that is in a range from the first variable to a third variable. The third variable may be the first variable plus a first predetermined number. For example, the first device 110 may retransmit the unacknowledged packets in the PSN range [unRxtPSN, unaPSN+N) , where N is an integer. For example, the value of N may be dependent the number of valid bits in the bitmap in SACK. In some implementations, the value of N may be based on the OOOD threshold. In this way, after the retransmitted packets are lost again, it can continue to retransmit them without waiting for the RTO retransmission.

[0052] In some implementations, the first device 110 may update (6055) the first variable to the highest retransmitted packet sequence number of the one or more retransmitted packets plus a second predefined number. For example, the unRxtPSN may be updated to the highest retransmitted PSN in the retransmission (6050) plus one. The first device 110 may update (6060) the second variable to the current time. For example, NetxRxtPSN_TS may be updated to the current time.

[0053] According to implementations of the present disclosure, retransmissions are triggered by SACKs, not by RTOs, so they are all fast retransmissions. Further, the first variable (i.e., unRxtPSN) is utilized to avoid unnecessary retransmissions. According to implementations of the present disclosure, the variables and  operations that limit the retransmission PSN range when a SACK triggers packet retransmissions can avoid unnecessary retransmissions. The variables and operations that quickly identify that retransmitted packets are lost again, and retransmit those packets again very shortly, can effectively support multiple fast retransmissions for each packet. According to implementations of the present disclosure, the proportion of retransmitted packets is almost equal to the packet loss rate, and except for the loss of the tail packets, RTO retransmission is seldom triggered.

[0054] Figs. 7A and 7B illustrate signaling flows of selective retransmissions according to implementations of the present disclosure, respectively. The sender 720 may be implemented at the first device 110 and the receiver 710 may be implemented at the second device 120.

[0055] Fig. 7A depicts how unnecessary retransmissions are avoided by using unRxtPSN. As shown in Fig. 7A, after the sender 720 receives the first SACK that indicates EPSN=5 and includes the bitmap showing that packets 5, 6 and 8 are lost, the sender 720 may parse the bitmap and retransmit packets 5, 6, and 8. For example, as shown in Fig. 7A, the sender 720 may retransmit the packets with PSN being 5, 6, 8, respectively. The sender 720 may further update unRxtPSN to 9. The sender 720 may then receive a second SACK that includes the bitmap indicating that packets 5, 6, 8, 10, 11 have not been received. This can happen because when the receiver 710 sends out the second SACK, the retransmitted packets 5, 6, 8 are still in the network. With the help of unRxtPSN, the sender 720 only retransmits packets 10 and 11, which are greater than unRxtPSN.

[0056] Fig. 7B depicts that a packet can be retransmitted multiple times by the fast retransmission mechanism. If the retransmitted packet gets lost again, unaPSN may be unable to advance for a long time period. This algorithm can react to this scenario and resets unRxtPSN to unaPSN. Then the un-received packets in PSN range [unRxtPSN, unaPSN+N) may get retransmitted. Some of them are transmitted more than once. As shown in Fig. 7B, the first SACK triggers the retransmission of packets 5, 6, 8, but packets 5, 6 get lost again. The sender 720 may only retransmit the packets 10, 11 based on the second SACK, as unRxtPSN has advanced to 9. When the third SACK arrives, the sender 720 realizes that unRxtPSN has not been updated for a long time (e.g., exceeding an RTT) . In this case, the sender 720 resets unRxtPSN to unaPSN, i.e., 5, and retransmits packet 5, 6 for the second time. Afterwards, unRxtPSN advances to 7.

[0057] The above paragraphs have described details for the selective retransmission. According to implementations of the present disclosure, a method is provided for selective retransmission. Reference will be made to Fig. 8 for more details about the method, where Fig. 8 illustrates an example flowchart of a method 800 according to implementations of the present disclosure. At block 810, transmitting a packet to a second device. At block 820, updating, based on the transmission of the packet, a first variable indicating a next position of a highest retransmitted sequence number in a retransmission iteration. At block 830, updating, based on the update of the first variable, a second variable indicating time information when the first variable is updated.

[0058] In implementations of the present disclosure, the first variable is initialized to be an unacknowledged packet sequence number.

[0059] In implementations of the present disclosure, the second variable is initialized to be a time instant when the first variable is initialized.

[0060] In implementations of the present disclosure, the method 800 further includes receiving, from the second device, a selective acknowledgement (SACK) of a plurality of packets comprising the packet; and updating the unacknowledged packet sequence number by assigning a value of expected packet sequence number of SACK to the unacknowledged packet sequence number.

[0061] In implementations of the present disclosure, the method 800 further includes determining whether the first variable is smaller than the updated unacknowledged packet sequence number; and in accordance with a determination that the first variable is smaller than the updated unacknowledged packet sequence number, updating the first variable to be the updated unacknowledged packet sequence number.

[0062] In implementations of the present disclosure, the method 800 further includes determining whether the first variable is smaller than the updated unacknowledged packet sequence number; and in accordance with a determination that the first variable is not smaller than the updated unacknowledged packet sequence number, determining a difference between current time and the second variable.

[0063] In implementations of the present disclosure, the method 800 further includes in accordance with a determination that the difference does not exceed a threshold, retransmitting one or more packets based on a bitmap in the SACK.

[0064] In implementations of the present disclosure, the method 800 further includes in accordance with a determination that the difference exceeds a threshold, reverting the first variable to the updated unacknowledged packet sequence number.

[0065] In implementations of the present disclosure, the method 800 further includes retransmitting one or more packets with a packet sequence number that is in a range from the first variable to a third variable, wherein the third variable is the first variable plus a first predetermined number.

[0066] In implementations of the present disclosure, the method 800 further includes updating the first variable to a highest retransmitted packet sequence number of the one or more retransmitted packets plus a second predefined number.

[0067] In implementations of the present disclosure, the method 800 further includes updating the second variable to the current time.

[0068] According to implementations of the present disclosure, an apparatus 900 is provided for image processing. The apparatus comprises: a transmitting module 910 configured to transmit a packet to a second device; a first updating module 920 configured to update, based on the transmission of the packet, a first variable indicating a next position of a highest retransmitted sequence number in a retransmission iteration; a second updating module 930 configured to update, based on the update of the first variable, a second variable indicating time information when the first variable is updated. Further, the apparatus may comprise other modules for implementing other steps in the method 800.

[0069] According to implementations of the present disclosure, an electronic device is provided for implementing the method 800. The electronic device comprises: a computer processor coupled to a computer-readable memory unit, the memory unit comprising instructions that when executed by the computer processor implements a method. The method comprises: transmitting a packet to a second device; updating, based on the transmission of the packet, a first variable indicating a next position of a highest retransmitted  sequence number in a retransmission iteration; and updating, based on the update of the first variable, a second variable indicating time information when the first variable is updated.

[0070] In implementations of the present disclosure, the first variable is initialized to be an unacknowledged packet sequence number.

[0071] In implementations of the present disclosure, the second variable is initialized to be a time instant when the first variable is initialized.

[0072] In implementations of the present disclosure, the method further includes receiving, from the second device, a selective acknowledgement (SACK) of a plurality of packets comprising the packet; and updating the unacknowledged packet sequence number by assigning a value of expected packet sequence number of SACK to the unacknowledged packet sequence number.

[0073] In implementations of the present disclosure, the method further includes determining whether the first variable is smaller than the updated unacknowledged packet sequence number; and in accordance with a determination that the first variable is smaller than the updated unacknowledged packet sequence number, updating the first variable to be the updated unacknowledged packet sequence number.

[0074] In implementations of the present disclosure, the method further includes determining whether the first variable is smaller than the updated unacknowledged packet sequence number; and in accordance with a determination that the first variable is not smaller than the updated unacknowledged packet sequence number, determining a difference between current time and the second variable.

[0075] In implementations of the present disclosure, the method further includes in accordance with a determination that the difference does not exceed a threshold, retransmitting one or more packets based on a bitmap in the SACK.

[0076] In implementations of the present disclosure, the method further includes in accordance with a determination that the difference exceeds a threshold, reverting the first variable to the updated unacknowledged packet sequence number.

[0077] In implementations of the present disclosure, the method further includes retransmitting one or more packets with a packet sequence number that is in a range from the first variable to a third variable, wherein the third variable is the first variable plus a first predetermined number.

[0078] In implementations of the present disclosure, the method further includes updating the first variable to a highest retransmitted packet sequence number of the one or more retransmitted packets plus a second predefined number.

[0079] In implementations of the present disclosure, the method further includes updating the second variable to the current time.

[0080] According to implementations of the present disclosure, a computer program product, the computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by an electronic device to cause the electronic device to perform the method 800.

[0081] Fig. 10 illustrates a block diagram of a computing device 1000 in which various implementations of the present disclosure can be implemented. It would be appreciated that the computing device 1000 shown in Fig. 10 is merely for purpose of illustration, without suggesting any limitation to the functions and scopes of  the present disclosure in any manner. The computing device 1000 may be used to implement the above method 1000 in implementations of the present disclosure. As shown in Fig. 10, the computing device 1000 may be a general-purpose computing device. The computing device 1000 may at least comprise one or more processors or processing units 1010, a memory 1020, a storage unit 1030, one or more communication units 1040, one or more input devices 1050, and one or more output devices 1060.

[0082] The processing unit 1010 may be a physical or virtual processor and can implement various processes based on programs stored in the memory 1020. In a multi-processor system, multiple processing units execute computer executable instructions in parallel so as to improve the parallel processing capability of the computing device 1000. The processing unit 1010 may also be referred to as a central processing unit (CPU) , a microprocessor, a controller, or a microcontroller.

[0083] The computing device 1000 typically includes various computer storage medium. Such medium can be any medium accessible by the computing device 1000, including, but not limited to, volatile and non-volatile medium, or detachable and non-detachable medium. The memory 1020 can be a volatile memory (for example, a register, cache, Random Access Memory (RAM) ) , a non-volatile memory (such as a Read-Only Memory (ROM) , Electrically Erasable Programmable Read-Only Memory (EEPROM) , or a flash memory) , or any combination thereof. The storage unit 1030 may be any detachable or non-detachable medium and may include a machine-readable medium such as a memory, flash memory drive, magnetic disk, or another other media, which can be used for storing information and / or data and can be accessed in the computing device 1000.

[0084] The computing device 1000 may further include additional detachable / non-detachable, volatile / non-volatile memory medium. Although not shown in Fig. 10, it is possible to provide a magnetic disk drive for reading from and / or writing into a detachable and non-volatile magnetic disk and an optical disk drive for reading from and / or writing into a detachable non-volatile optical disk. In such cases, each drive may be connected to a bus (not shown) via one or more data medium interfaces.

[0085] The communication unit 1040 communicates with a further computing device via the communication medium. In addition, the functions of the components in the computing device 1000 can be implemented by a single computing cluster or multiple computing machines that can communicate via communication connections. Therefore, the computing device 1000 can operate in a networked environment using a logical connection with one or more other servers, networked personal computers (PCs) or further general network nodes.

[0086] The input device 1050 may be one or more of a variety of input devices, such as a mouse, keyboard, tracking ball, voice-input device, and the like. The output device 1060 may be one or more of a variety of output devices, such as a display, loudspeaker, printer, and the like. By means of the communication unit 1040, the computing device 1000 can further communicate with one or more external devices (not shown) such as the storage devices and display device, with one or more devices enabling the user to interact with the computing device 1000, or any devices (such as a network card, a modem, and the like) enabling the computing device 1000 to communicate with one or more other computing devices, if required. Such communication can be performed via input / output (I / O) interfaces (not shown) .

[0087] In some implementations, instead of being integrated in a single device, some, or all components of the computing device 1000 may also be arranged in cloud computing architecture. In the cloud computing architecture, the components may be provided remotely and work together to implement the functionalities described in the present disclosure. In some implementations, cloud computing provides computing, software, data access and storage service, which will not require end users to be aware of the physical locations or configurations of the systems or hardware providing these services. In various implementations, the cloud computing provides the services via a wide area network (such as Internet) using suitable protocols. For example, a cloud computing provider provides applications over the wide area network, which can be accessed through a web browser or any other computing components. The software or components of the cloud computing architecture and corresponding data may be stored on a server at a remote position. The computing resources in the cloud computing environment may be merged or distributed at locations in a remote data center. Cloud computing infrastructures may provide the services through a shared data center, though they behave as a single access point for the users. Therefore, the cloud computing architectures may be used to provide the components and functionalities described herein from a service provider at a remote location. Alternatively, they may be provided from a conventional server or installed directly or otherwise on a client device.

[0088] The functionalities described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include Field-Programmable Gate Arrays (FPGAs) , Application-specific Integrated Circuits (ASICs) , Application-specific Standard Products (ASSPs) , System-on-a-chip systems (SOCs) , Complex Programmable Logic Devices (CPLDs) , and the like.

[0089] Program code for carrying out the methods of the subject matter described herein may be written in any combination of one or more programming languages. The program code may be provided to a processor or controller of a general-purpose computer, special purpose computer, or other programmable data processing apparatus such that the program code, when executed by the processor or controller, causes the functions / operations specified in the flowcharts and / or block diagrams to be implemented. The program code may be executed entirely or partly on a machine, executed as a stand-alone software package partly on the machine, partly on a remote machine, or entirely on the remote machine or server.

[0090] In the context of this disclosure, a machine-readable medium may be any tangible medium that may contain or store a program for use by or in connection with an instruction execution system, apparatus, or device. The machine-readable medium may be a machine-readable signal medium or a machine-readable storage medium. A machine-readable medium may include but not limited to an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples of the machine-readable storage medium would include an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random-access memory (RAM) , a read-only memory (ROM) , an erasable programmable read-only memory (EPROM or Flash memory) , an optical fiber, a portable compact disc read-only memory (CD-ROM) , an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.

[0091] Further, while operations are illustrated in a particular order, this should not be understood as requiring that such operations are performed in the particular order shown or in sequential order, or that all illustrated operations are performed to achieve the desired results. In certain circumstances, multitasking and parallel processing may be advantageous. Likewise, while several specific implementation details are contained in the above discussions, these should not be construed as limitations on the scope of the subject matter described herein, but rather as descriptions of features that may be specific to particular implementations. Certain features that are described in the context of separate implementations may also be implemented in combination in a single implementation. Rather, various features described in a single implementation may also be implemented in multiple implementations separately or in any suitable sub-combination.

[0092] Although the subject matter has been described in language specific to structural features and / or methodological acts, it is to be understood that the subject matter specified in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.

[0093] From the foregoing, it will be appreciated that specific implementations of the presently disclosed technology have been described herein for purposes of illustration, but that various modifications may be made without deviating from the scope of the disclosure. Accordingly, the presently disclosed technology is not limited except as by the appended claims.

[0094] Implementations of the subject matter and the functional operations described in the present disclosure can be implemented in various systems, digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a tangible and non-transitory computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them. The term “data processing unit” or “data processing apparatus” encompasses all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.

[0095] A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document) , in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code) . A  computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.

[0096] Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Computer readable media suitable for storing computer program instructions and data include all forms of nonvolatile memory, media, and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

[0097] It is intended that the specification, together with the drawings, be considered exemplary only, where exemplary means an example. As used herein, the use of “or” is intended to include “and / or” , unless the context clearly indicates otherwise.

[0098] While the present disclosure contains many specifics, these should not be construed as limitations on the scope of any disclosure or of what may be claimed, but rather as descriptions of features that may be specific to particular implementations of particular disclosures. Certain features that are described in the present disclosure in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable sub-combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination.

[0099] Similarly, while operations are illustrated in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. Moreover, the separation of various system components in the implementations described in the present disclosure should not be understood as requiring such separation in all implementations. Only a few implementations and examples are described and other implementations, enhancements and variations can be made based on what is described and illustrated in the present disclosure.

Claims

1.A method implemented at a first device, comprising:transmitting a packet to a second device;updating, based on the transmission of the packet, a first variable indicating a next position of a highest retransmitted sequence number in a retransmission iteration; andupdating, based on the update of the first variable, a second variable indicating time information when the first variable is updated.2.The method of claim 1, wherein the first variable is initialized to be an unacknowledged packet sequence number.3.The method of claim 1 or 2, wherein the second variable is initialized to be a time instant when the first variable is initialized.4.The method of any of claims 1-3, further comprising:receiving, from the second device, a selective acknowledgement (SACK) of a plurality of packets comprising the packet; andupdating the unacknowledged packet sequence number by assigning a value of expected packet sequence number of SACK to the unacknowledged packet sequence number.5.The method of any of claims 1-4, further comprising:determining whether the first variable is smaller than the updated unacknowledged packet sequence number; andin accordance with a determination that the first variable is smaller than the updated unacknowledged packet sequence number, updating the first variable to be the updated unacknowledged packet sequence number.6.The method of any of claims 1-4, further comprising:determining whether the first variable is smaller than the updated unacknowledged packet sequence number; andin accordance with a determination that the first variable is not smaller than the updated unacknowledged packet sequence number, determining a difference between current time and the second variable.7.The method of claim 6, further comprising:in accordance with a determination that the difference does not exceed a threshold, retransmitting one or more packets based on a bitmap in the SACK.8.The method of claim 6, further comprising:in accordance with a determination that the difference exceeds a threshold, reverting the first variable to the updated unacknowledged packet sequence number.9.The method of claim 8, further comprising:retransmitting one or more packets with a packet sequence number that is in a range from the first variable to a third variable, wherein the third variable is the first variable plus a first predetermined number.10.The method of claim 9, further comprising:updating the first variable to a highest retransmitted packet sequence number of the one or more retransmitted packets plus a second predefined number.11.The method of claim 9, further comprising:updating the second variable to the current time.12.An electronic device, comprising a computer processor coupled to a computer-readable memory unit, the memory unit comprising instructions that when executed by the computer processor implements a method, the method comprising:transmitting a packet to a second device;updating, based on the transmission of the packet, a first variable indicating a next position of a highest retransmitted sequence number in a retransmission iteration; andupdating, based on the update of the first variable, a second variable indicating time information when the first variable is updated.13.The electronic device of claim 12, wherein the first variable is initialized to be an unacknowledged packet sequence number.14.The electronic device of claim 12 or 13, wherein the second variable is initialized to be a time instant when the first variable is initialized.15.The electronic device of any of claims 12-14, wherein the method further comprises:receiving, from the second device, a selective acknowledgement (SACK) of a plurality of packets comprising the packet; andupdating the unacknowledged packet sequence number by assigning a value of expected packet sequence number of SACK to the unacknowledged packet sequence number.16.The electronic device of any of claims 12-15, wherein the method further comprises:determining whether the first variable is smaller than the updated unacknowledged packet sequence number; andin accordance with a determination that the first variable is smaller than the updated unacknowledged packet sequence number, updating the first variable to be the updated unacknowledged packet sequence number.17.The electronic device of any of claims 12-15, wherein the method further comprises:determining whether the first variable is smaller than the updated unacknowledged packet sequence number; andin accordance with a determination that the first variable is not smaller than the updated unacknowledged packet sequence number, determining a difference between current time and the second variable.18.The electronic device of claim 17, wherein the method further comprises:in accordance with a determination that the difference does not exceed a threshold, retransmitting one or more packets based on a bitmap in the SACK.19.The electronic device of claim 17, wherein the method further comprises:in accordance with a determination that the difference exceeds a threshold, reverting the first variable to the updated unacknowledged packet sequence number.20.The electronic device of claim 19, wherein the method further comprises:retransmitting one or more packets with a packet sequence number that is in a range from the first variable to a third variable, wherein the third variable is the first variable plus a first predetermined number.21.The electronic device of claim 20, wherein the method further comprises:updating the first variable to a highest retransmitted packet sequence number of the one or more retransmitted packets plus a second predefined number.22.The electronic device of claim 20, wherein the method further comprises:updating the second variable to the current time.23.A first device, comprising:a transmitting module configured to transmit a packet to a second device;a first updating module configure to update, based on the transmission of the packet, a first variable indicating a next position of a highest retransmitted sequence number in a retransmission iteration; anda second updating module configure to update, based on the update of the first variable, a second variable indicating time information when the first variable is updated.24.A non-transitory computer program product, the non-transitory computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by an electronic device to cause the electronic device to perform a method of any of claims 1-11.