Apparatus and method for transmitting an acknowledgment in a network transport protocol

By introducing dynamic polling and status message mechanisms in modern data centers, adjusting the rate and conditions of polling messages, the existing protocols are solved inefficient in networks with variable latency and indirect packet transmission, and achieving more efficient data reliability and lower network burden.

CN119324766BActive Publication Date: 2025-07-18HUAWEI TECH CO LTD
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
CN202411124866.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2020-06-05
Publication Date
2025-07-18
Estimated Expiration
2040-06-05

AI Technical Summary

Technical Problem

The existing data reliability protocol is mainly applicable to Layer 2 networks. Assuming that data packets are transmitted in sequence and the delay is constant, it is difficult to efficiently implement selective repeat protocols in modern data centers such as variable latency and irregular data packets.

Method used

A dynamic polling and status message mechanism is introduced, and by adjusting the rate and sending conditions of polling messages, combining probability and deterministic algorithms, the data packet retransmission strategy is optimized, which is suitable for the network environment of modern data centers.

Benefits of technology

It improves the reliability and efficiency of data transmission, reduces unnecessary retransmission, reduces network burden and bandwidth overhead, and adapts to the complex network environment of modern data centers.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119324766B_ABST
    Figure CN119324766B_ABST
Patent Text Reader

Abstract

Aspects of the disclosed embodiments relate to protocols for ensuring data reliability in a communication network. To this end, a first network device is proposed, which is configured to: send data packets and polling messages to a second network device; in response to each polling message, receive from the second network device at least one status message indicating which of the data packets sent before the polling message have been correctly received and / or have been lost at the second network device. Specifically, the first network device is configured to adjust the rate of sending the polling messages based on a set of parameters. In addition, a second network device is proposed, which is configured to: receive data packets from a first network device; and under certain conditions, send at least one proactive status message to the first network device.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application is a divisional application. The application number of the original application is 202080101619.5, and the original application date is June 5, 2020. The entire content of the original application is incorporated herein by reference. Technical Field

[0002] The present invention relates to a communication network, and more particularly to data reliability in data transmission of a communication network. The present invention proposes an apparatus and method for adaptively requesting and transmitting response information in a dynamic manner. Background Art

[0003] In a data network, when two computers communicate with each other, it is usually necessary to ensure data reliability. To this end, the sender attaches a sequence number to each data packet, and the receiver notifies the sender which data packets have been received and which data packets are lost. The sender must retransmit the lost data packets until the receiver receives all the data packets.

[0004] Protocols for ensuring data reliability can be divided into three main categories: stop-and-wait, Go-Back-N, and selective repeat.

[0005] In stop-and-wait, the sender sends a data packet and waits for an acknowledgment (ACK) of the data packet. Once the ACK arrives at the sender, the sender sends the next data packet. If the ACK is not received, the sender will retransmit the previous data packet again.

[0006] In Go-Back-N, the receiver that has received all the data packets before data packet N is only willing to accept data packet N+1. If data packet N+1 is not received, but a data packet with a higher sequence number, such as N+2, is received, the receiver discards this out-of-order data packet. When the sender is informed that data packet N+1 is lost, the sender knows that not only this data packet but also all subsequent data packets must be retransmitted. Stop-and-wait is actually a special case of Go-Back-N with N = 1.

[0007] In selective repeat, the receiver is willing to accept out-of-order received data packets. The receiver places these data packets in a reordering buffer. Then, the receiver only notifies the sender of the lost data packets, and the sender only retransmits the lost data packets.

[0008] However, existing solutions are only applicable to a layer-2 network, in which the latency is constant and data packets are transmitted in order. Summary of the Invention

[0009] In view of the above limitations, aspects of the disclosed embodiments are intended to introduce a dynamic solution for ensuring data reliability. Specifically, the goal is to provide a general protocol to ensure data reliability and make it applicable to larger networks. One goal is to enable the protocol to be used efficiently in modern data centers.

[0010] The above object is achieved by the embodiments provided in the appended independent claims. Advantageous implementations of the embodiments are further defined in the dependent claims.

[0011] The present invention makes contributions in two main aspects. Specifically, an aspect of the disclosed embodiments presents a dynamic method for sending polling messages. In addition, an aspect of the disclosed embodiments also presents a dynamic method for sending status messages.

[0012] A first aspect of the disclosed embodiments provides a first network device, the first network device being configured to: send data packets to a second network device; send polling messages to the second network device; in response to each polling message, receive at least one status message from the second network device, the at least one status message indicating which of the data packets sent before the polling message have been correctly received and / or lost at the second network device; wherein, the first network device is configured to adjust the rate of sending the polling messages based on a set of parameters.

[0013] The first network device (sender) provides a dynamic solution for ensuring data reliability by adjusting the rate of sending polling messages. Specifically, this solution guarantees data reliability and is applicable to larger networks.

[0014] In an implementation of the first aspect, the first network device is configured to adjust the rate of sending the polling messages by performing a deterministic algorithm and / or a probabilistic algorithm based on the set of parameters.

[0015] This is in sharp contrast to the algorithms used in the prior art, which are usually deterministic. The first network device uses deterministic or probabilistic considerations. In the probabilistic algorithm, the first network device can use probabilistic considerations to decide whether to send a polling message.

[0016] In an implementation of the first aspect, the first network device is configured to decide whether to send a polling message after a given data packet is sent based on the set of parameters.

[0017] Optionally, the first network device can use probabilistic considerations to decide whether to send a polling message, especially after a certain data packet.

[0018] In an implementation of the first aspect, the set of parameters includes a probability parameter.

[0019] For example, the probabilistic algorithm can be to send a polling message after each data packet with a probability p.

[0020] In an implementation manner of the first aspect, the parameter set includes a congestion parameter indicating network congestion.

[0021] It should be noted that in modern data centers, almost all lost packet events are attributed to network congestion. Therefore, the relationship between the rate of sending polling messages and network congestion can also be considered.

[0022] In an implementation manner of the first aspect, the parameter set includes the round trip time (RTT) between the first network device and the second network device.

[0023] It should be noted that RTT is the length of time required to send a signal plus the length of time required to receive the ACK of that signal.

[0024] In an implementation manner of the first aspect, the first network device is configured to: if the congestion parameter indicates high network congestion, increase the rate of sending the polling message; and / or, if the congestion parameter indicates low network congestion, decrease the rate of sending the polling message.

[0025] It can be seen that when the congestion is high, there are more lost packets. Therefore, the first network device can increase the rate of sending polling messages. On the other hand, when the congestion is low, the first network device can decrease the rate of sending polling messages.

[0026] In an implementation manner of the first aspect, the first network device is configured to adjust the rate of sending the polling message in proportion to the network congestion along the transmission path between the first network device and the second network device.

[0027] In an implementation manner of the first aspect, the parameter set includes a first proximity parameter, and the first proximity parameter indicates the proximity of the sent packet to the end of the transaction, where the transaction includes a plurality of packets.

[0028] It should be noted that it may be more important for the first network device to be aware of lost packets when approaching the end of the transaction compared to when far from the end of the transaction. Preferably, this information should also be considered when adjusting the rate of sending polling messages.

[0029] In an implementation manner of the first aspect, the first network device is configured to, if the first proximity parameter indicates that the packet is sent when approaching the end of the transaction, increase the rate of sending the polling message.

[0030] This enhances the perception of lost packets when approaching the end of the transaction, and the polling message can be sent at a higher rate.

[0031] In one implementation of the first aspect, the parameter set includes a second proximity parameter, and the second proximity parameter indicates the proximity of the transmitted data packet to the end of the transmission window of the first network device.

[0032] In one implementation of the first aspect, the first network device is configured to increase the rate of sending the polling message if the second proximity parameter indicates that the data packet is sent close to the end of the transmission window.

[0033] That is to say, when the first network device is closer to the end of its window, more polling messages will be sent.

[0034] In one implementation of the first aspect, the polling message is sent to the second network device by being attached to the data packet.

[0035] Optionally, the polling message does not have to be a separate message, but can be attached to the data packet.

[0036] A second aspect of the disclosed embodiments provides a second network device, and the second network device is configured to: receive a data packet from a first network device; and send at least one Unsolicited Status (USTAT) message to the first network device under one or more of the following conditions: the second network device identifies a new congestion control event, the second network device does not receive a polling message within a determined amount of time, the second network device receives all data packets of a transaction.

[0037] The second network device (the receiver) can use the USTAT message to convey important information to the first sending device (the sender), specifically not only when detecting a new sequence number gap, but also in other cases.

[0038] In one implementation of the second aspect, the second network device is further configured to send at least one USTAT message to the first network device if it detects that one or more data packets have not been received.

[0039] In one implementation of the second aspect, the congestion control event includes network congestion along the transmission path between the first network device and the second network device.

[0040] For example, even if the second network device correctly receives the data packet, but the data packet indicates congestion of a switch along the path, this information can be provided to the first network device.

[0041] In one implementation of the second aspect, if the second network device does not receive a polling message within the determined amount of time, the second network device is used to include the maximum sequence number of the in-order received data packets in the at least one USTAT message.

[0042] In one implementation of the second aspect, if the second network device does not receive a polling message within the determined amount of time, the second network device is used to include packet acceptance information in the at least one USTAT message, and the packet acceptance information indicates the status of one or more received data packets and / or one or more non-received data packets.

[0043] Optionally, the USTAT message can not only report the maximum sequence number of the in-order received data packets, but also send packet acceptance information, and the packet acceptance information indicates the status of which data packets have been received and which data packets are lost. For example, the packet acceptance information can include a bitmap, a table, or any other possible way, and these ways can indicate whether each data packet is received.

[0044] The third aspect of the disclosed embodiments provides a method performed by a first network device, and the method includes: sending a data packet to a second network device;

[0045] sending a polling message to the second network device; in response to each polling message, receiving at least one status message from the second network device, and the at least one status message indicates which data packets in the data packets sent before the polling message have been correctly received and / or have been lost at the second network device; wherein, the first network device is used to adjust the rate of sending the polling message based on a parameter set.

[0046] The implementation of the method in the third aspect can correspond to the implementation of the first network device in the first aspect. The method in the third aspect and its implementation achieve the same advantages and effects as the first network device in the first aspect and its implementation described above.

[0047] The fourth aspect of the disclosed embodiments provides a method performed by a second network device, and the method includes: receiving a data packet from a first network device;

[0048] sending at least one USTAT message to the first network device under one or more of the following conditions: the second network device identifies a new congestion control event, the second network device does not receive a polling message within a determined amount of time, the second network device receives all data packets of a transaction.

[0049] The implementation manner of the method in the fourth aspect may correspond to the implementation manner of the second network device in the second aspect. The method described in the fourth aspect and its implementation manner achieves the same advantages and effects as the second network device described in the second aspect and its implementation manner.

[0050] A fifth aspect of the disclosed embodiments provides a computer program product, which includes program code for executing the method according to the third aspect and any implementation manner of the third aspect, or the fourth aspect and any implementation manner of the fourth aspect when implemented on a processor.

[0051] It should be noted that all devices, elements, units, and modules described in this application can be implemented in software or hardware elements or any combination thereof. All steps performed by the various entities described in this application and the functions to be performed by the various entities described are intended to mean that the corresponding entities are used to perform the corresponding steps and functions. Although in the description of the following specific embodiments, the specific functions or steps performed by external entities are not reflected in the description of the specific detailed elements of the entities performing the specific steps or functions, those skilled in the art should clearly understand that these methods and functions can be implemented by the corresponding hardware or software elements or any combination thereof. BRIEF DESCRIPTION OF THE DRAWINGS

[0052] In combination with the accompanying drawings, the following description of specific embodiments elaborates on the aspects and implementation manners of the above-disclosed embodiments.

[0053] Figure 1 An example of the return N method is shown;

[0054] Figure 2 An example of the selective repeat method is shown;

[0055] Figure 3 The ambiguity problem of the selective repeat method is shown;

[0056] Figure 4 An example of the selective repeat method is shown;

[0057] Figure 5 An example of the selective repeat method is shown;

[0058] Figure 6 An example of the checkpoint mode method is shown;

[0059] Figure 7 The first network device provided by the embodiment is shown;

[0060] Figure 8 The second network device provided by the embodiment is shown;

[0061] Figure 9Shows the method provided by the embodiment;

[0062] Figure 10 Shows the method provided by the embodiment. Detailed implementation

[0063] Described with reference to the accompanying drawings are illustrative embodiments of methods, devices, and program products for efficient data packet transmission in a communication system. Although this description provides detailed examples of possible implementations, it should be noted that these details are intended to be exemplary and do not limit the scope of the present application.

[0064] Furthermore, one embodiment / example may refer to multiple other embodiments / examples. For example, any description mentioned in one embodiment / example, including but not limited to terms, elements, processes, explanations, and / or technical advantages, applies to multiple other embodiments / examples.

[0065] As is well known, protocols for ensuring data reliability can be divided into three major categories: stop-and-wait, go-back-N, and selective repeat.

[0066] For example, the sender sends data packets 1 to 5, and only data packet 3 is lost. In the go-back-N scenario, the sender will retransmit data packets 3 to 5, while in the selective repeat scenario, the sender will only retransmit data packet 3.

[0067] Figure 1 Shows a situation in go-back-N where the sender sends 103 data packets before being notified by NACK that data packet 2 is lost. Therefore, it has to retransmit not only data packet 2 but also data packets 3 to 103. Only after that can the sender continue to send new data packets (104 and above).

[0068] Figure 2 The example described in [reference] shows a similar situation using selective repeat. Here, when the sender is informed that data packet 2 is lost, it only retransmits this data packet (i.e., data packet 2), and then it can continue to send new data packets.

[0069] It should be noted that selective repeat is a more efficient protocol because only the data packets that fail to reach the receiver are retransmitted. However, the implementation of selective repeat is more difficult than that of go-back-N, mainly for two reasons. First, selective repeat requires the receiver to store out-of-order data packets in a special buffer until the lost data packet is received (it cannot deliver out-of-order data packets to the application). Second, in an asynchronous and unreliable network, notifying the sender which data packets have been received and which data packets are lost is a difficult task. Specifically, the receiver may notify the sender that a data packet is lost, while the (re)transmission of that data packet will soon reach the receiver. Therefore, it is always difficult for the selective repeat sender to decide whether to comply with the retransmission request.

[0070] For example, the situation is as Figure 3 shown. Specifically, after receiving data packet 4, the receiver understands that data packet 3 is lost because if it was not lost, it should have been received before data packet 4. The receiver needs to notify the sender. It can send a negative ACK (NACK). Optionally, the receiver can notify the sender of all the data packets that have been received and the data packets that have not been received yet. This message can be named ACK / NACK.

[0071] When the sender receives this ACK / NACK message, it will retransmit data packet 3. But after some time, it receives another ACK / NACK, which indicates that data packets 5 and 6 are also lost. This ACK / NACK also notifies that data packet 3 is (still) lost. When the sender receives this ACK / NACK, it does not know the status of the retransmitted copy of data packet 3. On the one hand, if it ignores the fact that this ACK / NACK indicates that data packet 3 is (still) lost, it will never know that the retransmitted copy of data packet 3 is lost. On the other hand, if it retransmits data packet 3 again, but the previous retransmission was received by the receiver, the second retransmission is a waste of resources.

[0072] One way to solve the above "ACK / NACK" ambiguity is that each ACK / NACK only reports each lost data packet once and indicates which data packets have been correctly received by the receiver. Figure 4 The situation where the sender only sends a NACK for a new gap is shown. It should be noted that gaps occur when data packets are not consecutive.

[0073] In addition, the sender needs to know whether the retransmission of the data packet previously NACKed (i.e., the data packet indicated in the NACK) is also lost. A promising way to achieve this goal is to associate a logical timer with each retransmission. That is, if a specific retransmission is not ACKed (i.e., the data packet indicated in the ACK) within the timeout period, the retransmission will be repeated. Figure 5 An example is shown. It should be noted that Figure 5 not all ACK messages that have been sent or can be sent are shown. The sender usually sends a NACK when it detects a new gap in the sequence number. The sender can send an ACK when it receives a data packet.

[0074] However, the above method has two problems. First, it requires many logical timers. The operation of these timers is difficult, especially when implementing the protocol on hardware. Second, the protocol needs to adjust the timeout, which is a very difficult task. This is especially because the RTT may often change in practice. An incorrect estimation of the RTT may lead to unnecessary retransmissions (if the timeout is too short), or additional delays (if the timeout is too long).

[0075] Checkpoint mode (CPM) is a different way to implement selective repeat. Specifically, CPM uses three types of control messages: (1) Poll messages sent periodically by the sender; (2) Status (STAT) messages sent by the receiver as a response to receiving a poll message; (3) Unsolicited status (USTAT) messages sent by the receiver whenever a new gap is detected in the sequence numbers of the received packets.

[0076] Typically, the sender maintains two sequence number counters. The first counter is used for the sequence numbers assigned to the packets. It is called the message sequence number (MSN). The second counter is used for the sequence numbers assigned to the poll messages. Thus, it is called the poll message sequence number (PMSN).

[0077] When the sender sends a new packet, it attaches the new MSN to the new packet and increments the MSN counter. If the receiver detects a new gap in the received packet, it sends a USTAT message and tells the sender what the detected gap is. Then, the sender resends the missing packet or packets using its original MSN. The sender creates new poll messages from time to time and sends the new poll messages to the receiver. The poll message is assigned a PMSN that is equal to the PMSN of the last poll message + 1. The poll message also contains a Max-MSN field, which is the MSN of the last transmitted packet.

[0078] When the sender sends a packet for the first time or as a retransmission, it associates the PMSN of the last sent poll message with the MSN of that packet. This association can be stored in the sender's memory.

[0079] When the receiver receives a poll message, it responds with a STAT message. The purpose of the STAT message is to inform the sender which of the data packets sent before the poll message have been correctly received and which have been lost. Typically, the STAT message has three fields: (a) PMSN, copied from the poll message to which the STAT response pertains; (b) Max-MSN value, also copied from the poll message; (c) a list of data packets whose sequence numbers are less than Max-MSN and have not been received by the receiver.

[0080] Some of the retransmission rules of the protocol are as follows. First, every USTAT message is always obeyed by the sender, i.e., the sender retransmits the data packets reported as lost by the USTAT message. This is to ensure that for each of these retransmitted data packets received by the receiver, this will be the first time the receiver has received that data packet. Second, when a STAT message is received, for each data packet reported as lost, the sender retransmits that data packet if and only if the PMSN associated with that data packet is less than the PMSN associated with the poll / STAT handshake.

[0081] The above protocol was developed as a layer 2 protocol and it assumes that data packets are received in order. Under this assumption, the above retransmission rules ensure that all data packets are eventually received by the receiver and that the sender does not retransmit data packets unnecessarily.

[0082] Figure 6 An example of the CPM method is shown. In this example, the USTAT message is used not only to report new gaps but also to report data packets that have been correctly accepted. For example, data packet 3 is lost and when the receiver receives data packet 4, it sends a USTAT message reporting this loss. When the USTAT message is received, the sender immediately retransmits data packet 3. On the other hand, the USTAT messages reporting the loss of data packets 5 and 6 are lost, so these data packets will only be retransmitted after the next successful poll / STAT handshake.

[0083] The first poll message receives PMSN = 1 and requests the receiver to report lost data packets up to sequence number 7. When the sender receives the STAT message in response to that poll message, the sender is waiting for ACKs for data packets 1 to 8. All of these data packets are associated with PMSN = 1 at the sender, except for 3 and 8 with PMSN = 2 because their last transmission occurred after the first poll message was sent. Table 1 shows this.

[0084] Table 1: Status of the sender's window

[0085] Data Packet Number (MSN) 1 2 3 4 5 6 7 8 PMSN 1 1 2 1 1 1 1 2

[0086] When the sender receives a STAT message in response to the first-round polling message, the STAT message reports the loss of data packets 3, 5, and 6. By comparing the PMSN of this STAT message (i.e., PMSN = 1) with the PMSNs associated with data packets 3, 5, and 6 (i.e., 2, 1, and 1 respectively), the sender learns that the last transmission of data packet 3 occurred after the transmission of the polling message to which this STAT message responds. This means that this STAT message does not truly indicate whether the last transmission of 3 was successful. Therefore, the sender ignores the retransmission request for data packet 3 (in fact, there is no need to retransmit this data packet because the last transmission was correctly received), but it obeys the retransmission requests for data packets 5 and 6.

[0087] The retransmission of data packet 6 is lost. However, no USTAT is sent after this loss because USTAT is only sent at the first transmission of each data packet. Then, the sender continues to send new data packets (e.g., data packet 9). When the maximum MSN is 9, a second STAT message is sent. The responding STAT message indicates that data packet 6 is still lost. By comparing the PMSN of the second STAT message (i.e., PMSN = 2) with the PMSN associated with data packet 6 when the STAT message was received (i.e., PMSN = 1), the sender learns that the last transmission has been lost and transmits this data packet for the third time.

[0088] It can be seen that when implementing the CPM method, an important issue is when the sender should send polling messages. There is a clear trade-off here: if the polling messages are sent too frequently, the processing burdens on both the sender and the receiver will increase due to the additional polling and STAT messages. In addition, the bandwidth overhead will also increase. On the other hand, if the polling messages are sent relatively infrequently, it will take the sender a long time to know which data packets must be retransmitted. This may significantly increase the time required to complete the file transfer.

[0089] In the prior art, two methods of sending polling messages have been proposed: sending a polling message after N data packets; and sending a polling message every T time units. However, both of these methods are static.

[0090] Figure 7Shows a first network device 700 provided by the disclosed embodiments. The first network device 700 may include processing circuitry (not shown) for performing, conducting, or initiating the various operations of the first network device 700 described herein. The processing circuitry may include hardware and software. The hardware may include analog circuitry or digital circuitry, or both analog and digital circuitry. The digital circuitry may include components such as an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA), a digital signal processor (DSP), or a multi-purpose processor. The first network device 700 may also include a memory circuit that stores one or more instructions that may be executed (specifically, under the control of software) by a processor or the processing circuitry. For example, the memory circuit may include a non-transitory storage medium storing executable software code that, when executed by the processor or the processing circuitry, causes the first network device 700 to perform various operations. In one embodiment, the processing circuitry includes one or more processors and a non-transitory memory coupled to the one or more processors. The non-transitory memory may carry executable program code that, when executed by the one or more processors, causes the first network device 700 to perform, conduct, or initiate the operations or methods described herein.

[0091] To address the above limitations and drawbacks, aspects of the disclosed embodiments present a dynamic method for sending polling messages, which enables efficient use of CPM in modern data centers, particularly for remote direct memory access (RDMA). In addition, aspects of the disclosed embodiments also present a dynamic method for sending USTAT messages, particularly not only when the recipient identifies a new gap in the sequence number space.

[0092] Specifically, the first network device 700 is used to send data packet 701 to the second network device 800. Therefore, the first network device 700 can be referred to as the "sender", and the second network device 800 can be referred to as the "receiver", especially compared with the sender and receiver shown in the previous figures. The first network device 700 is also used to send a polling message 702 to the second network device 800. Then, the first network device 700 is used to receive at least one status message 703 from the second network device 800 in response to each polling message 702, and the at least one status message 703 indicates which data packets in the data packet 701 sent before the polling message 702 have been correctly received and / or have been lost at the second network device 800. In addition, the first network device 700 is specifically used to adjust the rate of sending the polling message 702 based on a parameter set.

[0093] Aspects of the disclosed embodiments provide designs and rules on how to send the polling message 702. Specifically, it is recommended that the algorithm of the sender will use deterministic considerations or probabilistic considerations. According to one aspect of the disclosed embodiments, as Figure 7 shown, the first network device 700 can be used to adjust the rate of sending the polling message 702 by performing a deterministic algorithm and / or a probabilistic algorithm based on a parameter set. This is in sharp contrast to the deterministic algorithms used in the past.

[0094] Optionally, the first network device 700 can be used to decide whether to send the polling message 702 after a given data packet is sent based on a parameter set. Specifically, the parameter set can include a probability parameter.

[0095] In the probabilistic algorithm, the first network device 700 can use probabilistic considerations to decide whether to send the polling message 702 after a certain data packet 701. The simplest probabilistic algorithm is to send the polling message 702 after each data packet with probability p, or to send the polling message 702 after every T time units with probability p. However, the probabilistic algorithm can consider more factors, such as the relationship between the polling rate (the rate of sending the polling message 702) and congestion, the relationship between the polling rate and the proximity of the sender to the end of the transaction, and the relationship between the polling rate and the proximity of the sender to the end of its congestion control and / or traffic control window.

[0096] As mentioned above, the main role of the polling message 702 is to request the receiver to report the lost data packets 701. In modern data centers, almost all lost data packet 701 events are attributed to network congestion. Therefore, when the congestion is high and more data packets are lost, the first network device 700 can increase the rate of sending the polling message 702. On the other hand, when the congestion is low, it may be desirable for the first network device 700 to reduce the rate of sending the polling message 702.

[0097] In a modern data center, for each connection, the first network device 700 or any other sending node can be informed of the congestion along the transmission path of its outgoing data packet 701. This can be done by being informed of lost data packets 701, or by being informed of early congestion using special control messages.

[0098] In one aspect of the disclosed embodiments, the proposed algorithm can be that the first network device 700 will increase the rate of sending polling messages 702 at high congestion and decrease the rate of sending polling messages 702 at low congestion. According to one aspect of the disclosed embodiments, the parameter set can include a congestion parameter indicating network congestion. It is possible that the parameter set can include the RTT between the first network device 700 and the second network device 800.

[0099] Optionally, according to one embodiment, the first network device 700 can be used to increase the rate of sending polling messages 702 if the congestion parameter indicates high network congestion. Optionally or additionally, the first network device 700 can be used to decrease the rate of sending polling messages 702 if the congestion parameter indicates low network congestion.

[0100] It is possible that in this algorithm, the rate of sending polling messages 702 along the transmission path between the sender (the first network device 700) and the receiver (the second network device 800) is proportional to the congestion. That is, according to one aspect of the disclosed embodiments, the first network device 700 can also be used to adjust the rate of sending polling messages 702 in proportion to the network congestion along the transmission path between the first network device 700 and the second network device 800.

[0101] Another way to define this algorithm is that the number of polling messages 702 is proportional to the percentage of packet loss. A third way is to say that the number of polling messages 702 is proportional to the probability that a data packet 701 will be lost.

[0102] Generally, the transmission performed by the first network device 700 can be regarded as the transmission of a series of transactions. For example, this is the case in RDMA, where the sender can perform a series of write operations, and each operation can be regarded as a transaction (also called a "message").

[0103] In many cases, the second network device 800 cannot process the first data packet of transaction i until it has received all the data packets of transaction i - 1. This is because in these cases, all previous transactions must be successfully completed before the next transaction can start. Additionally, sometimes the receiver will have to discard all the data packets of transaction i received before any data packet of transaction i - 1. This can lead to serious packet loss because the receiver has to discard good data packets, similar to Go-Back-N.

[0104] In these cases, it may be beneficial for the first network device 700 to be aware of lost data packets closer to the end of a transaction than further away from the end of the transaction. This is because when the first network device 700 is closer to the end of a transaction, a lost data packet 701 may delay the transaction completion time.

[0105] According to one aspect of the disclosed embodiments, the parameter set may include a first proximity parameter that indicates the proximity of the transmission of data packet 701 to the end of the transaction, where the transaction includes a plurality of data packets. Accordingly, the first network device 700 may be used to increase the rate of transmission of polling messages 702 if the first proximity parameter indicates that data packet 701 is transmitted closer to the end of the transaction.

[0106] As proposed by the present invention, such an algorithm may be that the polling rate is inversely proportional to the fraction of data packets 701 remaining before the end of the transaction. For example, the first network device 700 transmits a polling message 702 with a probability equal to (1 - (N - i) / N)*α, where α < 1, for transmitting a polling message after the i-th data packet in a transaction consisting of N data packets 701.

[0107] In addition, considering the first network device 700 that transmits data packets 1...N, at a certain moment, the first network device 700 receives ACKs for data packets 1 to 3 and N. At this time, the sender waits for ACKs for data packets 4...N - 1, but the "sender window" contains data packets [4...N], that is, all data packets 701, from the earliest data packet that has not received an ACK to the latest data packet, regardless of whether an ACK has been received. In this case, the width of the sender (first network device) window is N - 3.

[0108] The width of such a sender window is often used for flow control and congestion control. In these cases, the width of the sender's window is not allowed to be greater than a certain threshold. For example, if the maximum window width is N, in the above scenario, the sender is allowed to transmit data packets N + 1, N + 2, and N + 3, but not allowed to transmit any additional data packets.

[0109] According to one aspect of the disclosed embodiments, the parameter set may include a second proximity parameter that indicates the proximity of the transmission of data packet 701 to the end of the transmission window of the first network device 700. Accordingly, the first network device 700 may be used to increase the rate of transmission of polling messages 702 if the second proximity parameter indicates that data packet 701 is transmitted closer to the end of the transmission window.

[0110] This algorithm for the window width of the first network device 700 can be that when the first network device 700 is closer to the end of its window, more polling messages 702 are sent. For example, the first network device 700 sends a polling message 702 with a probability equal to (1 - (N - i) / N)*α, where α < 1, for sending a polling message after i packets in a window with a maximum width of N.

[0111] In one example, the rate of sending polling messages 702 is adaptively updated according to the equation: P = Max{α*(β / W)*(p*β), C}, where p = packet loss rate, β = bandwidth-delay product, p*β = average number of packets 701 lost during RTT, α = "aggressiveness" parameter, W = minimum value between the length of the sender window (of the first network device 700) and the length of the receiver window (of the second network device 800), C = minimum number (constant) of polling messages 702 per RTT, i.e., the polling rate when there is no packet loss, and P = number of polling messages sent per RTT.

[0112] It can be illustrated that the number P of polling messages 702 sent during RTT is proportional to the expected number of packets lost during RTT. The proportionality constant is equal to α*R, where R is the ratio between the total number of packets (i.e., β) that the sender can send during RTT and the actual length of the sender window. β is a fixed number or dynamically changes according to congestion control information.

[0113] When the above ratio R is less than 1, even if packets 701 are lost, the sender window is long enough to utilize the available bandwidth, so it cannot be removed from the window. Therefore, polling messages 702 do not need to be sent too frequently. When the ratio R is greater than 1, the sender window is short compared to the available bandwidth. This means that if the lost packets 701 are not recovered early enough, the first network device 700 will have to stop sending new packets 701, and the bandwidth cannot be utilized efficiently.

[0114] The aggressiveness parameter α is usually between 0.1 and 10, with a default value of 1. Its value depends on the importance of the connection (according to the expectation of minimizing its latency), and the proximity to the end of the connection. When the connection is more important, when the sender is close to the end of the application layer data ("end of the file"), the value of α increases above 1, and vice versa.

[0115] Figure 8Figure 800 of a second network device provided by one aspect of the disclosed embodiments is shown. Specifically, the second network device 800 is configured to receive data packet 701 from the first network device 700. Thus, the second network device 800 may be referred to as the "receiver", and the first network device 700 may be referred to as the "sender", especially in comparison with the sender and receiver shown in the previous figures. In addition, the second network device 800 is configured to send at least one USTAT message 801 to the first network device 700 under one or more of the following conditions: the second network device 800 identifies a new congestion control event, the second network device 800 has not received a polling message within a determined amount of time, the second network device 800 has received all data packets of a transaction. It is possible that the network device 700 is Figure 7 the first network device shown in

[0116] Aspects of the disclosed embodiments also propose using the USTAT message 801 to convey other important information to the first network device 700, and not only when a new sequence number gap is detected, but also in at least one of the following events.

[0117] When the receiver wishes to notify the first network device 700 of a new congestion control event, the second network device 800 may decide to send a USTAT message 801 to the sender (i.e., the first network device 700). For example, if the second network device 800 correctly receives the data packet 701, but the data packet indicates congestion of a switch along the path.

[0118] It is possible that, according to one aspect of the disclosed embodiments, the congestion control event includes network congestion along the transmission path between the first network device 700 and the second network device 800.

[0119] When the receiver has not received a polling message 702 for a relatively long time, the receiver (i.e., the second network device 800) may send a USTAT message 801 and inform the first network device 700 of the maximum sequence number of the in-sequence received data packets 701. For example, the second network device 800 receives data packets 1, 2, 3, and 5. After the CPM receives the data packet 5, it requests the receiver to send a USTAT message to notify the sender that the data packet 4 is lost. Subsequently, if the second network device 800 does not receive a polling message for a long time (e.g., exceeding the timeout), it sends a USTAT message 801 to inform the first network device 700 that the maximum sequence number of the in-sequence received data packets 701 is 3.

[0120] Optionally, if the second network device 800 has not received a polling message within a determined amount of time, the second network device 800 is configured to include the maximum sequence number of the in-sequence received data packets in at least one USTAT message 801.

[0121] As described above, in many cases, the transmission of the first network device 700 can be regarded as the transmission of a series of transactions. In these cases, it is beneficial for the first network device 700 to know that the second network device 800 has received all the data packets 701 of the transaction. One option is to send a poll message 702 after the last data packet 701 of the considered transaction, but the poll message 702 may be lost. Therefore, the second network device 800 can send a USTAT message 801 after receiving all the data packets 701 of the transaction.

[0122] Optionally, according to one aspect of the disclosed embodiments, the second network device 800 can also be used to send at least one USTAT message 801 to the first network device 700 if it detects that one or more data packets have not been received. It should be noted that this refers to the traditional way of sending USTAT messages.

[0123] Optionally, according to one aspect of the disclosed embodiments, if the second network device 800 does not receive a poll message 702 within a determined amount of time, the second network device 800 can be used to include packet acceptance information, such as a bitmap, a table, or any other means, and the packet acceptance information can indicate the status of one or more received data packets 701 and / or one or more non - received data packets 701 in at least one USTAT message 801.

[0124] It should be noted that for poll messages, in the existing solutions, the sender polls the peer endpoint in a static manner. This property is due to the fact that the existing solutions are applied to a layer - two network, where the latency is constant and the data packets are transmitted in order.

[0125] One aspect of the disclosed embodiments provides a solution for the first network device 700 to adaptively poll the peer endpoint according to the system behavior. It should be noted that this difference generalizes the protocol and makes it applicable to larger networks, where the latency is variable and the data packets are not necessarily transmitted in order.

[0126] Regarding USTAT messages, in the existing solutions, the receiver sends these messages only to report new gaps in the sequence number or to notify flow - control events. According to the present invention, the USTAT message 801 can also be used for other events.

[0127] The method described in one aspect of the disclosed embodiments uses poll messages 702, STAT, and USTAT messages 801. Alternatively, these messages can be attached to the data packets 701 and do not have to be separate messages. In addition, a subset of these messages can be used instead of using all three types of messages (for example, poll messages 702 and STAT messages can be used without using USTAT message 801).

[0128] It should be noted that the traffic is two-way, so each endpoint is both a sender and a receiver. It is possible that Figure 7 The first network device 700 shown can be Figure 8 the second network device 800 shown.

[0129] Figure 9 The method 900 provided by one aspect of the disclosed embodiments is shown. In a specific aspect of the disclosed embodiments, the method 900 is executed by Figure 7 the first network device 700 shown. The method 900 includes: step 901, sending a data packet 701 to the second network device 800; step 902, sending a polling message 702 to the second network device 800; step 903, in response to each polling message 702, receiving at least one status message 703 from the second network device 800, the at least one status message 703 indicating which of the data packets in the data packet 701 sent before the polling message 702 have been correctly received and / or have been lost at the second network device 800; wherein, the first network device 700 is used to adjust the rate of sending the polling message 702 based on a parameter set. It is possible that the second network device 800 is Figure 7 or Figure 8 the second network device shown.

[0130] Figure 10 The method 1000 provided by one aspect of the disclosed embodiments is shown. In a specific aspect of the disclosed embodiments, the method 1000 is executed by Figure 8 the second network device 800 shown. The method 1000 includes: step 1001, receiving a data packet 701 from the first network device 700; step 1002, sending at least one USTAT message 801 to the first network device 700 under one or more of the following conditions: the second network device 800 identifies a new congestion control event, the second network device 800 does not receive a polling message within a determined amount of time, the second network device 800 receives all the data packets of a transaction. It is possible that the first network device 700 is Figure 7 or Figure 8 the first network device shown.

[0131] The present invention has been described in connection with various embodiments and implementations taken as examples. However, upon study of the drawings, the present invention, and the independent claims, those skilled in the art will be able to understand and implement other variations when practicing the claimed invention. In the claims as well as in the description, the word "comprising" does not exclude other elements or steps, and "a" does not exclude a plurality. A single element or other unit may fulfill the functions of several entities or items described in the claims. The fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used effectively.

[0132] In addition, any method provided by aspects of the disclosed embodiments can be implemented in a computer program having an encoding / decoding module, which, when run by a processing module, causes the processing module to execute the method steps. The computer program is included in a computer-readable medium of a computer program product. The computer-readable medium can basically include any memory, such as a read-only memory (ROM), a programmable read-only memory (PROM), an erasable PROM (EPROM), a flash memory, an electrically erasable EPROM (EEPROM), or a hard disk drive.

[0133] Furthermore, those skilled in the art recognize that embodiments of the first network device 700 and the second network device 800 respectively include the necessary communication capabilities in the form of functions, modules, units, elements, etc. for implementing the solution. Examples of other such modules, units, elements, and functions are: processors, memories, buffers, control logic, encoders, decoders, rate matchers, de-rate matchers, mapping units, multipliers, decision units, selection units, switches, interleavers, de-interleavers, modulators, demodulators, input terminals, output terminals, antennas, amplifiers, receiving units, transmitting units, DSPs, trellis-coded modulation (TCM) encoders, TCM decoders, power supply units, power supply feeders, communication interfaces, communication protocols, etc., which are appropriately arranged together to implement the solution.

[0134] Specifically, one or more processors of the first network device 700 and the second network device 800 may include, for example, one or more instances of a central processing unit (CPU), a processing unit, a processing circuit, a processor, an application specific integrated circuit (ASIC), a microprocessor, or other processing logic that can interpret and execute instructions. The expression "processor" may thus represent a processing circuit that includes multiple processing circuits, such as any, some, or all of the items listed above. The processing circuitry may also perform data processing functions for input, output, and processing of data, including data buffering and device control functions, such as call processing control, user interface control, and the like.

Claims

1. A first network device (700), characterized in that, For: Sending a data packet (701) to a second network device (800); After sending the data packet (701), sending a polling message (702) to the second network device (800); In response to each polling message (702), receiving at least one status message (703) from the second network device (800), the at least one status message (703) indicating which of the data packets in the data packet (701) sent before the polling message (702) have been correctly received at the second network device (800), and which of the data packets in the data packet (701) sent before the polling message (702) have been lost; Wherein, the first network device (700) is used to adjust the rate of sending the polling message (702) based on a parameter set, the parameter set including: the minimum value between the length of the sender window of the first network device (700) and the length of the receiver window of the second network device (800), the rate of sending the polling message (702) when there is no data packet loss, the packet loss rate, and the bandwidth-delay product.

2. The first network device (700) according to claim 1, wherein: The first network device (700) is used to adjust the rate of sending the polling message (702) by performing a deterministic algorithm and / or a probability algorithm based on the parameter set.

3. The first network device (700) according to claim 1 or 2, characterized in that, The first network device (700) is used for: Based on the parameter set, determining whether to send a polling message (702) after a given data packet is sent.

4. The first network device (700) according to claim 1 or 2, wherein: The parameter set includes a probability parameter.

5. The first network device (700) according to claim 1 or 2, wherein: The parameter set includes a congestion parameter indicating network congestion.

6. The first network device (700) according to claim 1 or 2, wherein: The parameter set includes the round-trip time between the first network device (700) and the second network device (800).

7. The first network device (700) according to claim 5, characterized in that, For: If the congestion parameter indicates high network congestion, increasing the rate of sending the polling message (702); and / or If the congestion parameter indicates low network congestion, decreasing the rate of sending the polling message (702).

8. The first network device (700) according to claim 5, characterized in that, For: Adjusting the rate of sending the polling message (702) in proportion to the network congestion along the transmission path between the first network device (700) and the second network device (800).

9. The first network device (700) according to claim 1 or 2, wherein: The parameter set includes a first proximity parameter, the first proximity parameter indicating the proximity of the sent data packet (701) to the end of a transaction, wherein the transaction includes a plurality of data packets.

10. The first network device (700) according to claim 9, characterized in that, The first network device (700) is used for: If the first proximity parameter indicates that the data packet (701) is sent near the end of the transaction, increasing the rate of sending the polling message (702).

11. The first network device (700) according to claim 1 or 2, characterized in that: The parameter set includes a second proximity parameter, and the second proximity parameter indicates the proximity of the sent data packet (701) to the end of the transmission window of the first network device (700).

12. The first network device (700) according to claim 11, wherein The first network device (700) is configured to: If the second proximity parameter indicates that the data packet (701) is sent close to the end of the transmission window, increase the rate of sending the polling message (702).

13. The first network device (700) according to claim 1 or 2, characterized in that: The polling message (702) is sent to the second network device (800) by being appended to the data packet (701).

14. A method (900) performed by a first network device (700), characterized in that, The method includes: Sending (901) a data packet (701) to a second network device (800); After sending the data packet (701), sending (902) a polling message (702) to the second network device (800); In response to each polling message (702), receiving (903) at least one status message (703) from the second network device (800), where the at least one status message (703) indicates which data packets in the data packet (701) sent before the polling message (702) have been correctly received at the second network device (800), and which data packets in the data packet (701) sent before the polling message (702) have been lost; Wherein, the first network device (700) is configured to adjust the rate of sending the polling message (702) based on a parameter set, and the parameter set includes: the minimum value between the length of the sender window of the first network device (700) and the length of the receiver window of the second network device (800), the rate of sending the polling message (702) when there is no data packet loss, the packet loss rate, and the bandwidth-delay product.

15. The method according to claim 14, wherein The method further includes: Adjusting the rate of sending the polling message (702) by performing a deterministic algorithm and / or a probability algorithm based on the parameter set.

16. The method according to claim 14 or 15, characterized in that, The method further includes: Based on the parameter set, determining whether to send a polling message (702) after a given sent data packet.

17. The method according to claim 14 or 15, characterized in that: The parameter set includes a probability parameter.

18. The method according to claim 14 or 15, characterized in that: The parameter set includes a congestion parameter indicating network congestion.

19. The method according to claim 14 or 15, characterized in that: The parameter set includes the round-trip time between the first network device (700) and the second network device (800).

20. The method according to claim 18, wherein The method further includes: If the congestion parameter indicates high network congestion, increasing the rate of sending the polling message (702); and / or If the congestion parameter indicates low network congestion, decreasing the rate of sending the polling message (702).

21. The method according to claim 18, wherein The method further includes: Adjust the rate of sending the polling message (702) proportionally to network congestion along the transmission path between the first network device (700) and the second network device (800).

22. The method according to claim 14 or 15, characterized in that: The parameter set includes a first proximity parameter, the first proximity parameter indicating the proximity of the sent data packet (701) to the end of a transaction, where the transaction includes a plurality of data packets.

23. The method according to claim 22, wherein The method further includes: If the first proximity parameter indicates that the data packet (701) is sent near the end of the transaction, increase the rate of sending the polling message (702).

24. The method according to claim 14 or 15, characterized in that: The parameter set includes a second proximity parameter, the second proximity parameter indicating the proximity of the sent data packet (701) to the end of the transmission window of the first network device (700).

25. The method according to claim 24, wherein The method further includes: If the second proximity parameter indicates that the data packet (701) is sent near the end of the transmission window, increase the rate of sending the polling message (702).

26. The method according to claim 14 or 15, characterized in that: The polling message (702) is sent to the second network device (800) by being appended to the data packet (701).

27. A computing device, characterized in that, Comprising one or more processors and a computer-readable storage medium storing a computer program; When the computer program is executed by the one or more processors, the method according to any one of claims 14 - 26 is implemented.

28. A computer-readable storage medium having a computer program stored thereon, characterized in that, When the computer program is executed by one or more processors, the method according to any one of claims 14 - 26 is implemented.

29. A computer program product, characterized in that, Comprising a computer program which, when executed by one or more processors, is used to implement the method according to any one of claims 14 - 26.

Citation Information

Patent Citations

  • Polling method, system and equipment

    CN102868501A

  • Method and Poll Control Entity for Controlling a Polling Procedure

    US20180146391A1

  • Radio telecommunications system and method of operating the same with polling

    US20190245638A1

  • Terminal and base station in wireless communication system, and communication method thereof

    US20200154306A1