Mechanism for slow path detection

The method uses packet sequence numbers to identify slow paths in multipath transmission, addressing inefficiencies in existing protocols by reducing resource consumption and improving failure detection.

WO2026123168A1PCT designated stage Publication Date: 2026-06-18DOUYIN VISION CO LTD +1

Patent Information

Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
DOUYIN VISION CO LTD
Filing Date
2024-12-09
Publication Date
2026-06-18

AI Technical Summary

Technical Problem

Existing multipath transmission protocols face inefficiencies in detecting slow paths due to excessive resource consumption and inability to handle path failures, particularly in RTT probing mechanisms.

Method used

A method for detecting slow paths using packet sequence numbers to identify packets exceeding a threshold, allowing for reduced computational resources and improved detection of failed paths by marking paths as slow based on packet sequence number differences and negative acknowledgments.

🎯Benefits of technology

This approach reduces computational overhead and enhances the detection of slow paths, ensuring efficient resource utilization and robustness against path failures.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024137875_18062026_PF_FP_ABST
    Figure CN2024137875_18062026_PF_FP_ABST
Patent Text Reader

Abstract

There are proposed methods, devices, and computer program products for slow path detection. In the method, a first device receives a first packet comprising a packet sequence number of the first packet from a second device. The first device determines whether a difference between the packet sequence number of the first packet and a highest packet sequence number of received packets exceeds a threshold. If the difference exceeds the threshold, the first device transmits, to the second device, an indication indicating that the first packet is a slow packet. In this way, it can reduce the computation resource consumption of RTT probing and adds support for failed path detection.
Need to check novelty before this filing date? Find Prior Art

Description

MECHANISM FOR SLOW PATH DETECTIONFIELD

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

[0002] Multipath transmission is an emerging technique in reliable network transport protocols that involves distributing packets of a connection across multiple network paths to balance the network load. These network paths traverse different links within the network and may experience varying queuing latencies depending on congestion conditions. Consequently, packets may arrive out-of-order.SUMMARY

[0003] In a first aspect of the present disclosure, there is provided a method implemented at a first device. The method comprises: receiving, from a second device, a first packet comprising a packet sequence number of the first packet; determining whether a difference between the packet sequence number of the first packet and a highest packet sequence number of received packets exceeds a threshold; and in response to determining that the difference exceeds the threshold, transmitting, to the second device, an indication indicating that the first packet is a slow packet.

[0004] In a second aspect of the present disclosure, there is provided a method implemented at a second device. The method comprises: transmitting, to a first device, a first packet comprising a packet sequence number of the first packet; and receiving, from the first device an indication indicating that the first packet is a slow packet.

[0005] In a third 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 or second aspect of the present disclosure.

[0006] In a fourth 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 or second aspect of the present disclosure.

[0007] 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. 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 a multipath transmission scenario;

[0011] Fig. 3 illustrates an example diagram of round trip time (RTT) probing-based mechanism for detecting slow paths;

[0012] Fig. 4 illustrates a signaling flow of a slow path detection mechanism for multipath transport protocols according to implementations of the present disclosure;

[0013] Fig. 5 illustrates an example diagram of a multipath transmission according to implementations of the present disclosure;

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

[0015] Fig. 7 illustrates an example flowchart of a method implemented at a second device according to implementations of the present disclosure;

[0016] Fig. 8 illustrates a schematic diagram of an apparatus 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.

[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] As used herein, the term “Harbour” refers to a communication endpoint in Netbula scalable reliable transport (SRT) protocol, including a send queue (SQ) , a receive queue (RQ) , and an inbound read request queue (IRRQ) . SQ, RQ and IRRQ are always created as a triplet and remain that way throughout their lifetime. A Harbour is identified by its Harbour Number.

[0031] The term “requestor / requester” used herein may refer to a Harbour that initiates the RDMA Read, RDMA write and send operations. It sends out the request packets of RDMA read, RDMA write and send operations. It may more broadly represent the thread, process, network interface card (NIC) or the host that this Harbour belongs to. The term “responder” used herein may refer to a Harbour that accepts request packets of RDMA read, RDMA write and send operations, process the messages, and returns responses. It may more broadly represent the thread, process, NIC or the host that this Harbour belongs to. Requester and responder are usually used as a pair.

[0032] The term “request / request packet” used herein may refer to a packet that requires the receiving endpoint to process them (e.g., do direct memory accesses (DMAs) ) and generate response packets, generated by requesters and received by responders. Request packets include read Request, write Request, send Request. The term “response / response (packet) ” used herein may refer to a packet generated by a responder in response to the reception of request packets. Response packets include acknowledgement packets and read responses. Request and Response are usually used as a pair.

[0033] The term “semantic packet” used herein may refer to a packet that carries semantic meanings, including RDMA read request, RDMA read response, RDMA write request, and send request. The term “acknowledgement packet (ack_pkt) ” used herein may refer to a control packet used by a receiver to acknowledge (positively or negatively) the semantic packets, including acknowledgment (ACK) , negative acknowledgment (NAK) , and selective acknowledgment (SACK) packets. Semantic packet and acknowledgement packet are usually as a pair.

[0034] The term “sender” used herein may refer to the Harbour that sends semantic packets. It will receive acknowledgement packets to ascertain the delivery of semantic packets. Therefore, it is proper to use the phrase “a sender transmits a write request packet and then receives an ACK. ” The term “receiver” used herein may refer to the Harbour that receives semantic packets. It will transmit acknowledgement packets to inform the sender about the arrival of semantic packets. Therefore, it is proper to use the phrase “areceiver receives a write request packet and then transmits an ACK. ”

[0035] The term “ACK” may refer to a positive acknowledgement packet, used to ascertain the arrival of one or more in-order semantic packets (except read responses) , sent by receiver to sender. The term “SACK” used herein may refer to a selective acknowledgment packet, used to selectively ascertain the arrival of both in-order and out-of-order semantic packets (except read responses) . The term “NAK” used herein may refer to a negative acknowledgement packet, used to explicitly inform the sender that one semantic packet (except read responses) has been dropped, possibly dropped by a switch or a receiver (due to insufficient resource) .

[0036] The term “ACK_RRsp” used herein may refer to a positive acknowledgement packet, used to ascertain the arrival of one or more read response packets, sent by receiver to sender. The term “SACK_RRsp” used herein may refer to a selective acknowledgement packet for read responses. The term “NAK_RRsp” used herein may refer to a negative acknowledgement packet, used to explicitly inform the sender of read responses that one read response packet has been dropped, possibly dropped by a switch or a receiver (due to insufficient resource) .

[0037] The term “PSN” refers to packet sequence number, a monotonically increasing sequence number assigned to semantic packets by senders. The term “ePSN” stans for expected PSN, the PSN of the next in-order semantic packet that a receiver expects to receive, i.e., the PSN up to which (exclusive) all the previous packets have been received. This indicates that the packet of ePSN must not have been received, and PSN's larger than ePSN may have been received. The term “unaPSN” refers to unacknowledged PSN, the PSN maintained on the sender before which all packets have been cumulatively acknowledged.

[0038] The term “MSN” refers to message sequence number, a monotonically increasing sequence number assigned to messages. The assigner can be requester (for send, write and read request messages) or responder (for read response messages) . The term “eMSN” refers to expected MSN, the MSN associated with the ePSN, also means the MSN up to which (exclusive) all the previous messages have been received by a receiver. The term “unaMSN” refers to unacknowledged MSN, the MSN maintained on the sender before which all packets have been cumulatively acknowledged. The term “RQAMSN” refers to receive queue aligned message sequence number, a monotonically increasing sequence number assigned to messages that consume a receive WQE. The assigner is requester (for Send, Send-with-ImmDt and Write-with-ImmDt) . The term “eRQAMSN” refers to expected RQAMSN, which means the RQAMSN up to which (exclusive) all the previous RQE has been consumed. The term unaRQAMSN” refers to unacknowledged RQAMSN, the RQAMSN maintained on the sender before which all packets have been cumulatively acknowledged.

[0039] 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.

[0040] 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.

[0041] As mentioned above, multipath transmission is an emerging technique in high-speed transport protocols. It involves distributing 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. 2 demonstrates an example of network re-ordering in a multipath transmission scenario. For example, the sender may transmit packets 201, 202 and 203 in sequence. The packets 201, 202 and 203 are transmitted across different network paths (such as, network part 1, network part 2 and network path 3) . Due to different latencies on different paths, the packets may arrive out-of-order. For example, the receiver may first receive the packet 202, then the packet 203 and the packet 201.

[0042] Congestion conditions of a network path may deteriorate due to an increase in flows assigned to the path or hardware failures on one of its links. If a congestion on a path becomes severe, continuing to send packets on that path may lead to two significant problems: (1) the worsening congestion may result in packet drops for all connections sharing links of the path; and (2) packets assigned to the congested path may arrive at the receiver much later than other packets in the same message, causing delays in message completion. Therefore, the transport layer needs to detect slow paths and migrate packets to other paths.

[0043] Fig. 3 demonstrates an example of RTT probing-based mechanism for detecting slow paths. As shown in Fig. 3, the requestor 310 may transmit an RTT probe request packet to the responder 320 at a time point TX T1. After receiving the RTT probe request packet at a time point RX T1, the responder 320 may transmit an RTT probe response packet to the requestor 310 at a time point RX T2. In this case, the RRT between the requestor 310 and the responder 320 may be RX T2 –TX T1- (TX T2 –RX T1) . These protocols periodically probe the RTT of each path by sending RTT probing packets. If the RTT of a path exceeds a certain threshold, it is marked as a slow path. This mechanism relies on frequent RTT probes to ensure accurate detection of slow paths, and the number of probes increases linearly with the number of paths.

[0044] The RTT probing-based mechanism for detecting slow paths requires frequent RTT probes on all paths. This large number of probes consumes excessive packet processing power and is not suitable for resource-constrained hardware. Additionally, it is ineffective on failed paths, where one or more links are broken, as the RTT response packet may not be returned. Therefore, a complementary slow path detection mechanism that is lightweight and robust to path failures is needed.

[0045] According to implementations of the present disclosure, a slow path detection mechanism is proposed. Specifically, a first device determines whether a difference between a packet sequence number of a received packet and a highest packet sequence number exceeds a threshold. If the difference exceeds the threshold, the first device transmits a slow-packet signal to the second device. The second device then marks a path on which the packet is transmitted as a slow path. In this way, it can reduce the computation resource consumption of RTT probing and adds support for failed path detection.

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

[0047] Reference is made to Fig. 4 which illustrates a signaling flow of slow path detection mechanism for multipath transport protocols. For the purpose of discussion, the signaling flow 400 will be discussed with reference to Fig. 1, for example, by using the first device 110 and the second device 120.

[0048] For the ease of description, implementations of the present disclosure have the following assumptions for the transport protocol. The second device 120 assigns each semantic packet a monotonically increasing packet sequence number (PSN) . The first device 110 maintains the highest PSN (hPSN) counter that records the highest PSN of all received request packets. The multi-path transmission is achieved by sender spreading (sender changing packet unreliable datagram protocol (UDP) source port) . Therefore, the UDP source port value can be used to uniquely identify a path. A data packet dropped by the fabric can be detected by the first device 110. The first device 110 may generate a packet-drop-negative acknowledgement (NAK) immediately after detecting such packet drop, with its PSN field in the transport header and the UDP source port set to the dropped packet. Some operations in another transport protocol may be different, e.g., the path may be uniquely identified with a path identity (ID) field in the transport headers. Despite the differences, the present disclosure can also adapt to these transport protocols. It is possible that the quality of a path degrades, and it turns into a "slow path" . A slow path may be identified and the traffic sent over it needs to be migrated to other paths. The term “slow path” used herein may refer to a path with degraded quality (such as, congestion occurs on the path) . For example, a transmission speed / throughout of the slow path may be lower than a threshold. The term “slow packet” used herein may refer to a packet that is transmitted on a congested path. For example, the slow packet may be transmitted on a slow path. The packet with payload may refer to as “sematic packets” , to better distinguish packets with payload (as well as remote direct memory access (RDMA) read request packet) from signal packets that include acknowledgment (ACK) , selective ACK (SACK) , congestion notification packet (CNP) and the like.

[0049] The second device 120 may transmit (4005) one or more packets (i.e., sematic packets) to the first device 110 via a plurality of paths. For example, as shown in Fig. 5, packets 510, 511, 512, 513, 514, 515, 516, 517 and 518 may be transmitted from the second device 120 to the first device 110. The packets 510, 513 and 516 may be transmitted via the network path 501. The packets 511, 514 and 517 may be transmitted via the network path 502. The packets 512, 515 and 518 may be transmitted via the network path 503.

[0050] The second device 120 transmits (4010) a packet (referred to as “first packet” hereinafter) to the first device 110. That is, the first device 110 receives (4010) receives the first packet from the second device 120. The first packet includes its PSN.

[0051] The first device 110 determines (4015) whether a difference between the PSN of the first packet and a highest PSN of received packets exceeds a threshold. The threshold may be any suitable value. In some implementations of the present disclosure, if the PSN of the first packet is higher than the current highest PSN, the first device 110 may determine the PSN of the first packet as the highest PSN.

[0052] In some implementations of the present disclosure, if the difference does not exceed the threshold, the first device 110 may continue receiving packets from the second device 120. For example, as shown in Fig. 5, if the first packet is the packet 514 and the difference between the PSN of the packet 514 and the PSN of the packet 518 (i.e., the highest PSN) does not exceed the threshold, the first device 110 may continue receiving the packets.

[0053] In some implementations of the present disclosure, if the difference exceeds the threshold, the first device 110 may determine (4020) the first packet as a slow packet. For example, as shown in Fig. 5, if the first packet is the packet 510 and the difference between the PSN of the packet 510 and the PSN of the packet 518 exceeds the threshold, the first device 110 may consider the packet 510 to be a slow packet.

[0054] If the difference exceeds the threshold, the first device 110 transmits (4025) an indication indicating that the first packet is the slow packet to the second device 120. That is, the second device 120 receives (4025) the indication indicating that the first packet is the slow packet from the first device 110. For example, as shown in Fig. 5, if the first packet is the packet 510 and the difference between the PSN of the packet 510 and the PSN of the packet 518 exceeds the threshold, the indication may indicate that the packet 510 is the slow packet. In this way, the computation resources can be saved, compared with RTT probing.

[0055] In some implementations of the present disclosure, the indication may be a slow-packet signal. In some implementations of the present disclosure, the indication may include a slow path field. For example, the indication may be a congestion signal with slow path field set. In some implementations of the present disclosure, the indication may include a path ID of the path on which the first packet is transmitted. For example, as shown in Fig. 5, the indication may include a path ID of the network path 501 on which the packet 510 is transmitted. Alternatively, the indication may include a UDP source port value associated with the path on which the first packet is transmitted. For example, as shown in Fig. 5, the indication may include the UDP source port value associated with the network path 501. In some implementations of the present disclosure, the indication may include a field indicating whether the path is a slow path. For example, if the field is set to “1” , it means that the path is a slow path.

[0056] In some implementations of the present disclosure, the second device 120 may determine (4030) the path on which the first packet is transmitted as a slow path based on the reception (4025) of the indication. For example, as shown in Fig. 5, the network path 501 on which the packet 510 is transmitted may be marked as a slow path. In this way, it can reduce the computation resource for RTT probing and add support for failed path detection.

[0057] In some implementations of the present disclosure, the second device 120 may transmit (4035) another packet (referred to as “second packet” hereinafter) to the first device 110. That is, the first device 110 may receive (4035) the second packet from the second device 120. The second packet may include its PSN. The first packet and the second packet may be transmitted on the same path. For example, as shown in Fig. 5, the second packet may the packet 513 which is also transmitted on the network path 501.

[0058] The first device 110 may determine (4040) whether a difference between the PSN of the second packet and the highest PSN of received packets exceeds the threshold. In some implementations of the present disclosure, if the PSN of the second packet is higher than the current highest PSN, the first device 110 may determine the PSN of the second packet as the highest PSN.

[0059] In some implementations of the present disclosure, if the difference between the PSN of the second packet and the highest PSN exceeds the threshold, the first device 110 may determine (4045) the second packet as a slow packet. For example, as shown in Fig. 5, if the second packet is the packet 513 and the PSN of the packet 518 exceeds the threshold, the first device 110 may consider the packet 513 to be a slow packet. In some implementations of the present disclosure, the first device 110 transmits (4050) a further indication indicating that the second packet is the slow packet to the second device 120. That is, the second device 120 may receive (4050) the further indication indicating that the second packet is the slow packet from the first device 110. For example, as shown in Fig. 5, if the second packet is the packet 513 and the difference between the PSN of the packet 513 and the PSN of the packet 518 exceeds the threshold, the indication may indicate that the packet 513 is the slow packet.

[0060] In some implementations of the present disclosure, if the second device 120 receives a plurality of slow-packet signals for a give path during a time interval, the path may be marked as a slow path. The time interval may be any suitable interval. For example, after receiving (4050) the further indication, the second device 120 may determine (4055) whether the number of indications for the path exceeds a threshold number. In this case, if the number of indications exceeds the threshold number, the second device 120 may determine (4060) the path on which the first and second packets are transmitted as a slow path. For example, the second device 120 may mark the network path 501 on which the packets 510 and 513 are transmitted as the slow path.

[0061] In some implementations of the present disclosure, if a RTT of a path exceeds a configured threshold for several times during a time interval, the path may be marked as a slow path. For example, if the RTT of the network path 501 exceeds the configured threshold for 3 times during the time interval, the path 501 may be marked as a slow path. In some implementations of the present disclosure, the serval times may be any suitable number of times.

[0062] In some other implementations of the present disclosure, the first device 110 may transmit a packet-drop-negative acknowledgement (NAK) packet that contains the source port of a dropped packet to the second device 120. If a plurality of packet drops happens on a path during an interval, the path may be marked as a slow path.

[0063] According to implementations described with reference to Fig. 4, a slow path detection mechanism is proposed, which permits the receiver to detect slow paths with the packet sequence number and packet-drop-NAKs. In this way, it can avoid unnecessary resources consumption.

[0064] According to implementations of the present disclosure, a method is provided for slow path mechanism. Reference will be made to Fig. 6 for more details about the method, where Fig. 6 illustrates an example flowchart of a method 600 according to implementations of the present disclosure. At block 610, the first device receives a first packet comprising a packet sequence number of the first packet from a second device. At block 620, the first device determines whether a difference between the packet sequence number of the first packet and a highest packet sequence number of received packets exceeds a threshold. At block 630, in response to determining that the difference exceeds the threshold, the first device transmits, to the second device, an indication indicating that the first packet is a slow packet.

[0065] In some implementations of the present disclosure, the method 600 further includes in response to determining that the difference exceeds the threshold, determining the first packet as the slow packet.

[0066] In some implementations of the present disclosure, the indication comprises a slow path field.

[0067] In some implementations of the present disclosure, the method 600 further includes receiving, from the second device, a second packet comprising a packet sequence number of the second packet, wherein the first packet and the second packet are received via a same path; determining whether a further difference between the packet sequence number of the second packet and the highest packet sequence number exceeds the threshold; and in response to determining that the further difference exceeds the threshold, transmitting, to the second device, a further indication indicating that the second packet is a slow packet.

[0068] In some implementations of the present disclosure, the indication is a slow-packet signal.

[0069] Reference will be made to Fig. 7 for more details about the method, where Fig. 7 illustrates an example flowchart of a method 700 according to implementations of the present disclosure. At block 710, the second device transmits, to a first device, a first packet comprising a packet sequence number of the first packet. At block 720, the second device receives, from the first device an indication indicating that the first packet is a slow packet.

[0070] In some implementations of the present disclosure, the method 700 further includes determining a path on which the first packet is transmitted as a slow path based on the reception of the indication.

[0071] In some implementations of the present disclosure, the method 700 further includes transmitting, to the first device, a second packet comprising a packet sequence number of the second packet, wherein the first packet and the second packet are transmitted via a same path; receiving, from the first device, a further indication indicating that the second packet is a slow packet; determining whether the number of indications for the path exceeds a threshold number; and in response to the number of indications exceeding the threshold number, determining the path on which the first and second packets are transmitted as a slow path.

[0072] In some implementations of the present disclosure, the indication comprises a slow path field.

[0073] In some implementations of the present disclosure, the indication is a slow-packet signal.

[0074] According to implementations of the present disclosure, an apparatus 800 is provided for slow path detection. The apparatus comprises: a receiving module 810 configured to receive, from a second device, a first packet comprising a packet sequence number of the first packet; a determining module 820 configured to whether a difference between the packet sequence number of the first packet and a highest packet sequence number of received packets exceeds a threshold; and a transmitting module 830 configured to in response to determining that the difference exceeds the threshold, transmit, to the second device, an indication indicating that the first packet is a slow packet. Further, the apparatus may comprise other modules for implementing other steps in the method 600.

[0075] According to implementations of the present disclosure, an apparatus 900 is provided for slow path detection. The apparatus comprises: a transmitting module 910 configured to transmit, to a first device, a first packet comprising a packet sequence number of the first packet; and a receiving module 920 configured to receive, from the first device an indication indicating that the first packet is a slow packet. Further, the apparatus may comprise other modules for implementing other steps in the method 700.

[0076] According to implementations of the present disclosure, an electronic device is provided for implementing the method 600. 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: receiving, from a second device, a first packet comprising a packet sequence number of the first packet; determining whether a difference between the packet sequence number of the first packet and a highest packet sequence number of received packets exceeds a threshold; and in response to determining that the difference exceeds the threshold, transmitting, to the second device, an indication indicating that the first packet is a slow packet.

[0077] In some implementations of the present disclosure, the method further includes in response to determining that the difference exceeds the threshold, determining the first packet as the slow packet.

[0078] In some implementations of the present disclosure, the indication comprises a slow path field.

[0079] In some implementations of the present disclosure, the method further includes receiving, from the second device, a second packet comprising a packet sequence number of the second packet, wherein the first packet and the second packet are received via a same path; determining whether a further difference between the packet sequence number of the second packet and the highest packet sequence number exceeds the threshold; and in response to determining that the further difference exceeds the threshold, transmitting, to the second device, a further indication indicating that the second packet is a slow packet.

[0080] In some implementations of the present disclosure, the indication is a slow-packet signal.

[0081] According to implementations of the present disclosure, an electronic device is provided for implementing the method 700. 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, to a first device, a first packet comprising a packet sequence number of the first packet; and receiving, from the first device an indication indicating that the first packet is a slow packet.

[0082] In some implementations of the present disclosure, the method further includes determining a path on which the first packet is transmitted as a slow path based on the reception of the indication.

[0083] In some implementations of the present disclosure, the method further includes transmitting, to the first device, a second packet comprising a packet sequence number of the second packet, wherein the first packet and the second packet are transmitted via a same path; receiving, from the first device, a further indication indicating that the second packet is a slow packet; determining whether the number of indications for the path exceeds a threshold number; and in response to the number of indications exceeding the threshold number, determining the path on which the first and second packets are transmitted as a slow path.

[0084] In some implementations of the present disclosure, the indication comprises a slow path field.

[0085] In some implementations of the present disclosure, the indication is a slow-packet signal.

[0086] 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 600 or 700.

[0087] 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.

[0088] The processing unit 1010 may be a physical or virtual processor and can implement various processes based on programs 1025 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.

[0089] 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.

[0090] 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.

[0091] 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.

[0092] 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) .

[0093] In some implementations of the present disclosure, 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 of the present disclosure, 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.

[0094] 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.

[0095] 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.

[0096] 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.

[0097] 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.

[0098] 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.

[0099] 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.

[0100] 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.

[0101] 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.

[0102] 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.

[0103] 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.

[0104] 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.

[0105] 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:receiving, from a second device, a first packet comprising a packet sequence number of the first packet;determining whether a difference between the packet sequence number of the first packet and a highest packet sequence number of received packets exceeds a threshold; andin response to determining that the difference exceeds the threshold, transmitting, to the second device, an indication indicating that the first packet is a slow packet.2.The method of claim 1, further comprising:in response to determining that the difference exceeds the threshold, determining the first packet as the slow packet.3.The method of claim 1, wherein the indication comprises a slow path field.4.The method of claim 1, further comprising:receiving, from the second device, a second packet comprising a packet sequence number of the second packet, wherein the first packet and the second packet are received via a same path;determining whether a further difference between the packet sequence number of the second packet and the highest packet sequence number exceeds the threshold; andin response to determining that the further difference exceeds the threshold, transmitting, to the second device, a further indication indicating that the second packet is a slow packet.5.The method of claim 1, wherein the indication is a slow-packet signal.6.A method implemented at a second device, comprising:transmitting, to a first device, a first packet comprising a packet sequence number of the first packet; andreceiving, from the first device an indication indicating that the first packet is a slow packet.7.The method of claim 6, further comprising:determining a path on which the first packet is transmitted as a slow path based on the reception of the indication.8.The method of claim 6, further comprising:transmitting, to the first device, a second packet comprising a packet sequence number of the second packet, wherein the first packet and the second packet are transmitted via a same path;receiving, from the first device, a further indication indicating that the second packet is a slow packet;determining whether the number of indications for the path exceeds a threshold number; andin response to the number of indications exceeding the threshold number, determining the path on which the first and second packets are transmitted as a slow path.9.The method of claim 6, wherein the indication comprises a slow path field.10.The method of claim 6, wherein the indication is a slow-packet signal.11.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:receiving, from a second device, a first packet comprising a packet sequence number of the first packet;determining whether a difference between the packet sequence number of the first packet and a highest packet sequence number of received packets exceeds a threshold; andin response to determining that the difference exceeds the threshold, transmitting, to the second device, an indication indicating that the first packet is a slow packet.12.The electronic device of claim 11, wherein the method further comprises:in response to determining that the difference exceeds the threshold, determining the first packet as the slow packet.13.The electronic device of claim 11, wherein the indication comprises a slow path field.14.The electronic device of claim 11, wherein the method further comprises:receiving, from the second device, a second packet comprising a packet sequence number of the second packet, wherein the first packet and the second packet are received via a same path;determining whether a further difference between the packet sequence number of the second packet and the highest packet sequence number exceeds the threshold; andin response to determining that the further difference exceeds the threshold, transmitting, to the second device, a further indication indicating that the second packet is a slow packet.15.The electronic device of claim 11, wherein the indication is a slow-packet signal.16.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, to a first device, a first packet comprising a packet sequence number of the first packet; andreceiving, from the first device an indication indicating that the first packet is a slow packet.17.The electronic device of claim 16, wherein the method further comprises:determining a path on which the first packet is transmitted as a slow path based on the reception of the indication.18.The electronic device of claim 16, wherein the method further comprises:transmitting, to the first device, a second packet comprising a packet sequence number of the second packet, wherein the first packet and the second packet are transmitted via a same path;receiving, from the first device, a further indication indicating that the second packet is a slow packet;determining whether the number of indications for the path exceeds a threshold number; andin response to the number of indications exceeding the threshold number, determining the path on which the first and second packets are transmitted as a slow path.19.The electronic device of claim 16, wherein the indication comprises a slow path field.20.The electronic device of claim 16, wherein the indication is a slow-packet signal.21.A first device, comprising:a receiving module configured to receive, from a second device, a first packet comprising a packet sequence number of the first packet;a determining module configured to determine whether a difference between the packet sequence number of the first packet and a highest packet sequence number of received packets exceeds a threshold; anda transmitting module configured to in response to determining that the difference exceeds the threshold, transmit, to the second device, an indication indicating that the first packet is a slow packet.22.A second device, comprising:a transmitting module configured to transmit, to a first device, a first packet comprising a packet sequence number of the first packet; anda receiving module configured to receive, from the first device an indication indicating that the first packet is a slow packet.23.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-5 or any of claims 6-10.