Apparatus and method for transmitting acknowledgement in network transport protocol

By dynamically sending polling and status messages between network devices and adjusting the rate of polling messages based on parameter sets, it solves data reliability issues in larger networks and enables efficient data transmission in modern data centers.

CN119324766AActive Publication Date: 2025-01-17HUAWEI TECH CO LTD

Patent Information

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

AI Technical Summary

Technical Problem

The existing data transmission protocol is mainly applicable to Layer 2 networks, and cannot effectively solve the problem of data reliability in larger networks. Especially in modern data centers, packet loss is mainly caused by network congestion, and the existing technology is difficult to adapt dynamically. Adjust the transmission strategy.

Method used

A dynamic method is proposed, in which the first network device sends polling messages and status messages to the second network device, adjusts the rate of polling messages based on parameter sets, and dynamically adjusts the frequency of sending polling messages to adapt to network congestion.

Benefits of technology

It ensures data reliability in larger networks and is used efficiently in modern data centers. It dynamically adjusts the rate of polling messages to adapt to network congestion, improving the efficiency and reliability of data transmission.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119324766A_ABST
    Figure CN119324766A_ABST
Patent Text Reader

Abstract

Aspects of the disclosed embodiments relate to a protocol for ensuring data reliability in a communication network. To this end, a first network device is proposed, the first network device being configured to: send a data packet and a polling message to a second network device; in response to each polling message, at least one status message is received from the second network device, the at least one status message indicating which of the data packets sent prior to the polling message have been correctly received and / or lost at the second network device. Specifically, the first network device is used for adjusting the rate of sending the polling message based on a parameter set. Furthermore, a second network device is proposed, the second network device being configured to: receive a data packet from the first network device; in some conditions, at least one proactive status message is sent 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 contents of the original application are incorporated into this application by reference. Technical Field

[0002] The present invention relates to communication networks, and more particularly to data reliability of data transmission in communication networks. The present invention proposes a device 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, they usually need to ensure data reliability. To do this, the sender attaches a sequence number to each data packet, and the receiver informs the sender which data packets have been received and which data packets have been lost. The sender must resend the lost data packets until the receiver receives all the data packets.

[0004] Protocols that ensure data reliability can be divided into three main categories: stop-and-wait, return-N, and selective-repeat.

[0005] In stop-and-wait, the sender sends a data packet and waits for the acknowledgement (ACK) of the data packet. Once the ACK reaches the sender, the sender sends the next data packet. If the ACK is not received, the sender retransmits the previous data packet again.

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

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

[0008] However, existing schemes are only applicable to Layer 2 networks, where the latency is constant and packets are delivered in order. Summary of the invention

[0009] In view of the above limitations, aspects of the disclosed embodiments are intended to introduce a dynamic scheme 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 make the protocol efficiently usable in modern data centers.

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

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

[0012] A first aspect of the disclosed embodiment provides a first network device, wherein the first network device is used to: send data packets to a second network device; send polling messages to the second network device; receive at least one status message from the second network device in response to each polling message, the 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; wherein the first network device is used to adjust the rate of sending the polling messages based on a parameter set.

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

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

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

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

[0017] Alternatively, the first network device may use probabilistic considerations to decide whether to send a polling message, in particular after a certain data packet.

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

[0019] For example, a probabilistic algorithm could be to send a polling message after each data packet with 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 packet loss events are attributed to network congestion. Therefore, the relationship between the rate at which polling messages are sent and network congestion can also be considered.

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

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

[0024] In an implementation of the first aspect, the first network device is used 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, reduce the rate of sending the polling message.

[0025] It can be seen that when the congestion is high, more data packets are lost, so 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 reduce the rate of sending polling messages.

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

[0027] In an implementation of the first aspect, the parameter set includes a first proximity parameter indicating a proximity of sending the data packet to an end of a transaction, wherein the transaction includes a plurality of data packets.

[0028] It should be noted that it may be more important for the first network device to be aware of the lost data packets near the end of the transaction than far from the end of the transaction. Preferably, this information should also be considered when adjusting the rate at which the polling message is sent.

[0029] In an implementation of the first aspect, the first network device is configured to increase the rate at which the polling message is sent if the first proximity parameter indicates that the data packet is sent close to an end of the transaction.

[0030] This allows for increased awareness of lost packets near the end of a transaction, and polling messages can be sent at a higher rate.

[0031] In an implementation of the first aspect, the parameter set includes a second proximity parameter indicating a proximity of the sending of the data packet to an end of a transmission window of the first network device.

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

[0033] That is, as the first network device gets closer to the end of its window, more poll messages will be sent.

[0034] In an implementation manner 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 may not be a separate message, but may be attached to the data packet.

[0036] A second aspect of the disclosed embodiment provides a second network device, which is used to: receive data packets from a first network device; and send at least one active 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, and the second network device receives all data packets of a transaction.

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

[0038] In an 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 is detected that one or more data packets are not received.

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

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

[0041] In an 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 configured to include a maximum sequence number of sequentially 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 configured to include data packet acceptance information in the at least one USTAT message, wherein the data packet acceptance information indicates the status of one or more received data packets and / or one or more not received data packets.

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

[0044] A third aspect of the disclosed embodiment provides a method performed by a first network device, the method comprising: sending a data packet to a second network device;

[0045] Sending a polling message to the second network device; receiving at least one status message from the second network device in response to each polling message, the 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; 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 of the third aspect may correspond to the implementation of the first network device of the first aspect. The method described in the third aspect and its implementation achieves the same advantages and effects as the first network device described in the first aspect and its implementation.

[0047] A fourth aspect of the disclosed embodiment provides a method performed by a second network device, the method comprising: receiving a data packet from a first network device;

[0048] At least one USTAT message is sent 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, and the second network device receives all data packets of a transaction.

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

[0050] The fifth aspect of the disclosed embodiment provides a computer program product, which includes program code, and the program code is used to execute the method according to the third aspect and any implementation of the third aspect, or the fourth aspect and any implementation 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 various entities described in this application and the functions to be performed by various entities described are intended to refer to the corresponding entities for performing 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, it should be clear to the technician that these methods and functions can be implemented by corresponding hardware or software elements or any combination thereof. BRIEF DESCRIPTION OF THE DRAWINGS

[0052] In conjunction with the accompanying drawings, the following description of specific embodiments illustrates various aspects and implementation methods of the above-disclosed embodiments.

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

[0054] Figure 2 An example of a selective repetition method is shown;

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

[0056] Figure 4 An example of a selective repetition method is shown;

[0057] Figure 5 An example of a selective repetition method is shown;

[0058] Figure 6 An example of a checkpoint mode approach is shown;

[0059] Figure 7 A first network device provided by an embodiment is shown;

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

[0061] Fig. 9The method provided by the embodiment is shown;

[0062] Fig.10 The method provided by the embodiment is shown. DETAILED DESCRIPTION

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

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

[0065] As we all know, protocols for ensuring data reliability can be divided into three categories: stop-and-wait, return-N, and selective-repeat.

[0066] For example, the sender sent packets 1 to 5 and only packet 3 was lost. In the return-to-N scenario, the sender will retransmit packets 3 to 5, while in the selective-repeat scenario, the sender will only retransmit packet 3.

[0067] Figure 1 It shows the situation in which in return N, the sender sends 103 packets before the NACK notifies that packet 2 is lost. Therefore, it must retransmit not only packet 2, but also packets 3 to 103. Only after this, the sender can continue to send new packets (104 and above).

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

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

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

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

[0072] One way to resolve the above "ACK / NACK" ambiguity is to report each lost packet only once per ACK / NACK and state which packets have been correctly received by the receiver. Figure 4 The figure shows the case where the sender sends NACK only for the new gap. It should be noted that gaps occur when data packets are not continuous.

[0073] In addition, the sender needs to know if a retransmission of a packet that was previously NACKed (i.e., the packet indicated in the NACK) is also lost. A promising way to achieve this is to associate a logical timer with each retransmission. That is, if a particular retransmission is not ACKed (i.e., the 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 are or can be sent are shown. The sender typically sends a NACK when a new gap in the sequence number is detected. The sender can send an ACK when a data packet is received.

[0074] However, there are two problems with the above approach. First, it requires many logical timers. The manipulation of these timers is difficult, especially when implementing the protocol on hardware. Second, the protocol needs to adjust the timeouts, which is a very difficult task. This is especially because the RTT may change frequently in practice. A wrong estimate of the RTT may lead to unnecessary retransmissions (if the timeout is too short) or to additional delays (if the timeout is too long).

[0075] Checkpoint mode (CPM) is a different method of implementing selective repetition. Specifically, CPM uses three types of control messages: (1) polling messages sent periodically by the sender; (2) status (STAT) messages, sent by the receiver in response to receiving a polling message; and (3) unsolicited status (USTAT) messages, sent by the receiver whenever a new gap in the sequence number of received packets is detected.

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

[0077] When the sender sends a new packet, it appends the new MSN to the new packet and increases the MSN counter. If the receiver detects a new gap in the received packets, it sends a USTAT message and tells the sender what the detected gap is. The sender then resends the lost packet or packets using their original MSN. From time to time, the sender creates a new poll message and sends the new poll message 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 data packet for the first time or as a retransmission, it associates the PMSN of the last sent polling message with the MSN of the data 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 packets sent before the poll message have been correctly received and which have been lost. Typically, a STAT message has three fields: (a) PMSN, copied from the poll message to which the STAT response is sent; (b) Max-MSN value, also copied from the poll message; (c) a list of packets whose sequence numbers are less than Max-MSN and have not yet been received by the receiver.

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

[0081] The above protocol was developed as a layer 2 protocol, which assumes that packets are received in order. Under this assumption, the above retransmission rules guarantee that all packets are eventually received by the receiver and that the sender does not retransmit 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 packets that were correctly received. For example, packet 3 is lost, and when the receiver receives packet 4, a USTAT message reporting this loss is sent. When the USTAT message is received, the sender immediately retransmits packet 3. On the other hand, the USTAT messages reporting the loss of packets 5 and 6 are lost, so these packets are retransmitted only after the next successful poll / STAT handshake.

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

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

[0085] MSN 1 2 3 4 5 6 7 8 PMSN 1 1 2 1 1 1 1 2

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

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

[0088] As can be seen, an important question when implementing the CPM approach is when the sender should send the poll message. There is a clear trade-off here: if the poll message is sent too frequently, the processing burden on the sender and receiver will increase due to the additional poll and STAT messages. In addition, the bandwidth overhead will also increase. On the other hand, if the poll message is sent relatively infrequently, it will take a long time for the sender to know which 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 once every T time units. However, both methods are static.

[0090] Figure 7The first network device 700 provided by the disclosed embodiment is shown. The first network device 700 may include a processing circuit (not shown) for executing, performing or starting various operations of the first network device 700 described herein. The processing circuit may include hardware and software. The hardware may include an analog circuit or a digital circuit, or both an analog circuit and a digital circuit. The digital circuit 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 can be executed by a processor or a processing circuit (specifically, executed under the control of software). For example, the memory circuit may include a non-transitory storage medium storing executable software code, which, when executed by a processor or a processing circuit, causes the first network device 700 to perform various operations. In one embodiment, the processing circuit includes one or more processors and a non-transitory memory connected 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, perform, or initiate the operations or methods described herein.

[0091] To address the above limitations and deficiencies, aspects of the disclosed embodiments provide 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 provide 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 a data packet 701 to the second network device 800. Therefore, the first network device 700 can be referred to as a "sender" and the second network device 800 can be referred to as a "receiver", especially compared to the sender and the receiver shown in the previous figure. 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 of the data packets 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 the parameter set.

[0093] The disclosed embodiment provides a design and rules for how to send the polling message 702. Specifically, it is suggested that the algorithm of the sender will use deterministic considerations or probabilistic considerations. According to one aspect of the disclosed embodiment, Figure 7 The illustrated first network device 700 may be used to adjust the rate at which polling messages 702 are sent by executing a deterministic algorithm and / or a probabilistic algorithm based on a set of parameters. This is in stark contrast to the deterministic algorithms used in the past.

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

[0095] In the probabilistic algorithm, the first network device 700 may use probabilistic considerations to decide whether to send a polling message 702 after a certain data packet 701. The simplest probabilistic algorithm is to send a polling message 702 after each data packet with probability p, or to send a polling message 702 after every T time units with probability p. However, the probabilistic algorithm may take into account more considerations, such as the relationship between the polling rate (the rate at which the polling messages 702 are sent) and congestion, the relationship between the polling rate and the sender's proximity to the end of the transaction, and the relationship between the polling rate and the sender's proximity to the end of its congestion control and / or flow control window.

[0096] As described above, the main purpose 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 packets 701 events are attributed to network congestion. Therefore, when the congestion is high, the lost data packets are more, and the first network device 700 can increase the rate of sending polling messages 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 polling messages 702.

[0097] In modern data centers, for each connection, the first network device 700 or any other sending node can be informed of congestion along the transmission path of its outgoing data packets 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 embodiment, the proposed algorithm may be that the first network device 700 will increase the rate of sending polling messages 702 when congestion is high, and reduce the rate of sending polling messages 702 when congestion is low. According to one aspect of the disclosed embodiment, the parameter set may include a congestion parameter indicating network congestion. Possibly, the parameter set may 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 may be configured to increase the rate at which polling messages 702 are sent if the congestion parameter indicates high network congestion. Alternatively or additionally, the first network device 700 may be configured to decrease the rate at which polling messages 702 are sent if the congestion parameter indicates low network congestion.

[0100] It is possible that in the algorithm, the rate at which polling message 702 is sent along the transmission path between the sender (first network device 700) and the receiver (second network device 800) is proportional to the congestion. That is, according to an aspect of the disclosed embodiment, first network device 700 may also be configured to adjust the rate at which polling message 702 is sent in proportion to the network congestion along the transmission path between first network device 700 and second network device 800.

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

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

[0103] In many cases, the second network device 800 cannot process the first packet of transaction i before receiving all packets of transaction i-1. This is because in these cases, all previous transactions must complete successfully before the next transaction can begin. In addition, sometimes the receiver will have to discard all packets of transaction i received before any packets of transaction i-1. This can cause severe packet loss because the receiver must discard good packets, similar to returning N.

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

[0105] According to an aspect of the disclosed embodiment, the parameter set may include a first proximity parameter, the first proximity parameter indicating the proximity of sending the data packet 701 to the end of the transaction, wherein the transaction includes a plurality of data packets. Accordingly, the first network device 700 may be configured to increase the rate at which the polling message 702 is sent if the first proximity parameter indicates that the data packet 701 is sent close to the end of the transaction.

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

[0107] Furthermore, consider the first network device 700 that sends packets 1…N. At a certain moment, the first network device 700 receives ACKs for packets 1 to 3 and N. At this point, the sender waits for ACKs for packets 4…N-1, but the "sender window" contains packets [4…N], i.e., all packets 701, from the earliest packet that has not received an ACK to the latest 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] This sender window width is often used for flow control and congestion control. In these cases, the sender's window width is not allowed to be larger than a certain threshold. For example, if the maximum window width is N, then in the above scenario, the sender is allowed to send packets N+1, N+2, and N+3, but not any additional packets.

[0109] According to an aspect of the disclosed embodiment, the parameter set may include a second proximity parameter indicating a proximity of sending the data packet 701 to an end of a transmission window of the first network device 700. Accordingly, the first network device 700 may be configured to increase a rate of sending the polling message 702 if the second proximity parameter indicates that the data packet 701 is sent close to the end of the transmission window.

[0110] Such an algorithm for the window width of the first network device 700 may be to send more polling messages 702 as the first network device 700 is closer to the end of its window. For example, the first network device 700 sends a polling message 702 with a probability equal to (1-(Ni) / 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 at which polling messages 702 are sent is adaptively updated according to the equation: P = Max{α*(β / W)*(p*β), C}, where p = packet loss rate, β = bandwidth-delay product, p*β = the average number of packets 701 lost during the RTT, α = an "aggressiveness" parameter, W = 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), C = the minimum number of polling messages 702 per RTT (constant), i.e., the polling rate when there is no packet loss, and P = the number of polling messages sent per RTT.

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

[0113] When the above ratio R is less than 1, even if the data packet 701 is lost, the sender window is long enough to utilize the available bandwidth and therefore cannot be deleted from the window. Therefore, there is no need to send the polling message 702 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 data packet 701 is not recovered as soon as possible, the first network device 700 will have to stop sending new data packets 701, and the bandwidth will not be efficiently utilized.

[0114] The aggressiveness parameter α is typically between 0.1 and 10, with a default value of 1. Its value depends on the importance of the connection (in terms of the desire to minimize its latency), and how close the connection is to the end. When the connection is more important, when the sender is close to the end of the application layer data ("end of file"), the value of α is increased above 1, and vice versa.

[0115] Figure 8A second network device 800 provided by an aspect of the disclosed embodiment is shown. Specifically, the second network device 800 is configured to receive a data packet 701 from the first network device 700. Therefore, the second network device 800 can be referred to as a "receiver" and the first network device 700 can be referred to as a "sender", especially compared to 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 does not receive a polling message within a determined amount of time, and the second network device 800 receives all data packets of the 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, 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 that one switch along the path is congested.

[0118] Possibly, according to an aspect of the disclosed embodiment, the congestion control event includes network congestion along a transmission path between the first network device 700 and the second network device 800 .

[0119] When the receiver does not receive the polling message 702 for a considerable period of 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 data packets 701 received in sequence. For example, the second network device 800 receives data packets 1, 2, 3, and 5. After receiving data packet 5, the CPM requires the receiver to send a USTAT message to inform the sender that data packet 4 is lost. Subsequently, if the second network device 800 does not receive the polling message for a long period of time (e.g., exceeding the timeout period), it sends a USTAT message 801 to inform the first network device 700 that the maximum sequence number of the data packets 701 received in sequence is 3.

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

[0121] As previously mentioned, in many cases, the transmission of the first network device 700 can be considered 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 polling message 702 after the last data packet 701 of the transaction under consideration, but this polling 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 embodiment, the second network device 800 may also be configured to, if it is detected that one or more data packets are not received, send at least one USTAT message 801 to the first network device 700. It should be noted that this refers to a traditional way of sending a USTAT message.

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

[0124] It should be noted that, for polling messages, in the existing scheme, the sender polls the peer endpoint in a static manner. This property is due to the fact that the existing scheme is applied to the layer 2 network, in which the delay is constant and the data packets are delivered in order.

[0125] One aspect of the disclosed embodiment provides a scheme for the first network device 700 to adaptively poll peer endpoints based on system behavior. It should be noted that this difference generalizes the protocol and makes it applicable to larger networks where delays are variable and packets are not necessarily delivered in order.

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

[0127] The method described in one aspect of the disclosed embodiment uses polling messages 702, STAT and USTAT messages 801. Alternatively, these messages can be appended to the data packet 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 (e.g., polling messages 702 and STAT messages can be used, but USTAT messages 801 are not used).

[0128] It should be noted that traffic is bidirectional, so each endpoint is both a sender and a receiver. Figure 7 The first network device 700 shown in the figure may be Figure 8 A second network device 800 is shown.

[0129] Fig. 9 900 is provided in accordance with one aspect of the disclosed embodiment. In certain aspects of the disclosed embodiment, the method 900 is provided by Figure 7 The method 900 is performed by the first network device 700 shown. The method 900 comprises: step 901, sending a data packet 701 to a 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, wherein the at least one status message 703 indicates which data packets of the data packets 701 sent before the polling message 702 have been correctly received and / or 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 the parameter set. It is possible that the second network device 800 is Figure 7 or Figure 8 The second network device is shown.

[0130] Fig.10 A method 1000 provided in accordance with one aspect of the disclosed embodiment is shown. In certain aspects of the disclosed embodiment, the method 1000 is performed by Figure 8 The method 1000 is performed by 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, and the second network device 800 receives all data packets of the transaction. It is possible that the first network device 700 is Figure 7 or Figure 8 The first network device is shown.

[0131] The invention has been described in conjunction with various embodiments and implementations as examples. However, from a study of the drawings, the present invention and the independent claims, other variations will be understood and implemented by those skilled in the art in practicing the claimed invention. In the claims and in the specification, the word "comprising" does not exclude other elements or steps, and "a" does not exclude a plurality. A single element or other unit may fulfil the functions of several entities or items described in the claims. The enumeration of certain measures in mutually different dependent claims does not indicate that a combination of these measures cannot be effectively used.

[0132] In addition, any of the methods provided by the various aspects of the disclosed embodiments can be implemented in a computer program having a codec module, which, when executed by a processing module, causes the processing module to perform the method steps. The computer program is included in a computer-readable medium of a computer program product. The computer-readable medium can include substantially 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 drive.

[0133] In addition, the skilled person recognizes that the embodiments of the first network device 700 and the second network device 800 respectively include necessary communication capabilities in the form of functions, modules, units, elements, etc. for performing the scheme. Examples of other such modules, units, elements and functions are: processors, memories, buffers, control logic, encoders, decoders, rate matchers, down-rate matchers, mapping units, multipliers, decision units, selection units, switches, interleavers, deinterleavers, modulators, demodulators, inputs, outputs, antennas, amplifiers, receiving units, transmitting units, DSPs, trellis-coded modulation (TCM) encoders, TCM decoders, power supply units, power supply feeds, communication interfaces, communication protocols, etc., which are appropriately arranged together to perform the scheme.

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

Claims

1. A first network device (700), characterized in that: Used 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 (701) sent before the polling message (702) have been correctly received and / or have been lost at the second network device (800); The first network device (700) is used to adjust the rate of sending the polling message (702) based on a parameter set.

2. The first network device (700) according to claim 1, characterized in that: The first network device (700) is configured to adjust the rate at which the polling message (702) is sent by executing a deterministic algorithm and / or a probabilistic algorithm based on the parameter set.

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

4. The first network device (700) according to any one of claims 1 to 3, characterized in that: The set of parameters includes probability parameters.

5. The first network device (700) according to any one of claims 1 to 4, characterized in that: The parameter set includes a congestion parameter indicating network congestion.

6. The first network device (700) according to any one of claims 1 to 5, characterized in that: The parameter set includes a 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 or 6, characterized in that: Used for: If the congestion parameter indicates high network congestion, increasing the rate at which the polling messages (702) are sent; and / or If the congestion parameter indicates low network congestion, the rate at which the polling messages (702) are sent is reduced.

8. The first network device (700) according to any one of claims 5 to 7, characterized in that: Used for: The rate at which the polling message (702) is sent is adjusted in proportion to network congestion along a transmission path between the first network device (700) and the second network device (800).

9. The first network device (700) according to any one of claims 1 to 8, characterized in that: The parameter set includes a first proximity parameter indicating proximity of sending the data packet (701) to an 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: Used for: If the first proximity parameter indicates that the data packet (701) is being sent close to the end of the transaction, the rate at which the polling messages (702) are sent is increased.

11. The first network device (700) according to any one of claims 1 to 10, characterized in that: The parameter set includes a second proximity parameter indicating the proximity of the sending of the data packet (701) to the end of a transmission window of the first network device (700).

12. The first network device (700) according to claim 11, characterized in that: Used for: If the second proximity parameter indicates that the data packet (701) is being sent close to the end of the transmission window, the rate at which the polling messages (702) are sent is increased.

13. The first network device (700) according to any one of claims 1 to 12, characterized in that: The polling message (702) is sent to the second network device (800) by being attached to the data packet (701).

14. A second network device (800), characterized in that: Used for: Receiving a data packet (701) from a first network device (700); At least one active status message (801) is sent 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) receives all data packets of the transaction.

15. The second network device (800) according to claim 14, characterized in that: Also used for: If it is detected that one or more data packets have not been received, at least one active status message (801) is sent to the first network device (700).

16. The second network device (800) according to claim 14 or 15, characterized in that: The congestion control event includes network congestion along a transmission path between the first network device (700) and the second network device (800).

17. The second network device (800) according to any one of claims 14 to 16, characterized in that: If the second network device (800) does not receive a polling message within the determined amount of time, the second network device (800) is configured to include a maximum sequence number of in-sequence received data packets (701) in the at least one active status message (801).

18. The second network device (800) according to any one of claims 14 to 17, characterized in that: If the second network device (800) does not receive a polling message within the determined amount of time, the second network device (800) is configured to include data packet acceptance information in the at least one active status message (801), wherein the data packet acceptance information indicates the status of one or more data packets that have been received and / or one or more data packets that have not been received.

19. A method (900) performed by a first network device (700), characterized in that: The method comprises: 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); receiving (903) at least one status message (703) from the second network device (800) in response to each polling message (702), the at least one status message (703) indicating which of the data packets (701) sent prior to the polling message (702) have been correctly received and / or have been lost at the second network device (800); The first network device (700) is used to adjust the rate of sending the polling message (702) based on a parameter set.

20. A method (1000) performed by a second network device (800), characterized in that: The method comprises: receiving (1001) a data packet (701) from a first network device (700); At least one active status message (801) is sent (1002) 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) receives all data packets of the transaction.

Citation Information

Patent Citations

  • Polling method, system and equipment

    CN101175244A

  • 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

Cited By

  • Communication method and device, storage medium, and program product

    WO2026165836A1