WO2020007084A1 - 重传控制方法、通信接口和电子设备 - Google Patents

重传控制方法、通信接口和电子设备 Download PDF

Info

Publication number
WO2020007084A1
WO2020007084A1 PCT/CN2019/081718 CN2019081718W WO2020007084A1 WO 2020007084 A1 WO2020007084 A1 WO 2020007084A1 CN 2019081718 W CN2019081718 W CN 2019081718W WO 2020007084 A1 WO2020007084 A1 WO 2020007084A1
Authority
WO
WIPO (PCT)
Prior art keywords
data packet
rto
acknowledgement
retransmission
sending
Prior art date
Application number
PCT/CN2019/081718
Other languages
English (en)
French (fr)
Inventor
曹振
郑凯
雅维能·易洛普
科尤·马库
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to EP19829957.0A priority Critical patent/EP3806366B1/en
Priority to EP23191836.8A priority patent/EP4297314A3/en
Publication of WO2020007084A1 publication Critical patent/WO2020007084A1/zh
Priority to US17/138,321 priority patent/US11671210B2/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1848Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/188Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/189Transmission or retransmission of more than one copy of a message
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/55Prevention, detection or correction of errors
    • H04L49/552Prevention, detection or correction of errors by ensuring the integrity of packets received through redundant connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L5/00Arrangements affording multiple use of the transmission path
    • H04L5/003Arrangements for allocating sub-channels of the transmission path
    • H04L5/0053Allocation of signaling, i.e. of overhead other than pilot signals
    • H04L5/0055Physical resource allocation for ACK/NACK
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/70Reducing energy consumption in communication networks in wireless communication networks

Definitions

  • Embodiments of the present invention relate to the field of communications, and more particularly, to a method and device for data transmission.
  • IoT Internet of Things
  • the Internet of Things requires a reliable transmission protocol and its retransmission control algorithm.
  • the underlying data connection of the Internet of Things is particularly vulnerable to interference, so the error rate and packet loss rate will be relatively high.
  • IOT devices often have low power requirements and excessive retransmissions will Consume the power consumption of the device and affect the online service time of the IOT device.
  • the IETF has formulated a restricted application protocol (CoAP).
  • the COAP protocol is an application layer protocol that can be applied to IOT devices and can run on the user datagram protocol (UDP, user datagram (protocol), because the UDP protocol does not have a retransmission control mechanism, the COAP protocol needs to design a retransmission control mechanism so that after the sender sends a data packet to the receiver, if it is not received within the retransmission timeout (RTO) When the acknowledgement sent by the receiving end is reached, the transmitting end can retransmit the data packet.
  • the retransmission control mechanism designed by RFC7252 simply sets the initial RTO to 2s, and subsequent RTOs are 4s, 8s, 16s, and 32s, with a maximum of 4 retransmissions.
  • the retransmission control mechanism provided by a simple CoAP congestion control algorithm (COCOA, Simple Control / Advanced).
  • COCOA Simple CoAP congestion control algorithm
  • the RTO set by COCOA is based on the round-trip time (RTT) estimation, and considers the network delay factor.
  • RTO is set to T, K * T, K2 * T, K3 * T, K4 * T ..., and backoff based on the K index.
  • the parameter K is a parameter dynamically adjusted according to the scene, K can be 1.5, 2 or 3, and T is a time calculated based on the RTT sampling.
  • COCOA is more aggressive and will improve the performance of end-cloud transmission to a certain extent.
  • these two retransmission mechanisms may increase the transmission time of data packets from end to end due to unnecessary retransmissions, causing waste of network resources and equipment power consumption.
  • the embodiments of the present application provide a retransmission control method, a communication interface, and an electronic device, which are used to reduce unnecessary retransmissions, shorten the transmission time of data packets from end to end, and save network resources and equipment power consumption.
  • an embodiment of the present application provides a retransmission control method.
  • the method includes:
  • the sending end sends a first data packet to the receiving end; if the sending end does not receive an acknowledgement corresponding to the first data packet within the first timeout retransmission time RTO, wherein the confirmation indicates that the receiving end has received the first data packet, execute The following steps:
  • the sender retransmits the first data packet, and calculates a second timeout retransmission time RTO.
  • the second RTO is related to the acknowledged receiving timestamp corresponding to the first data packet and the sending timestamp of the first data packet; in other words, The second RTO is calculated according to the acknowledged receiving timestamp corresponding to the first data packet and the sending timestamp of the first data packet.
  • the acknowledgement corresponding to the data packet refers to the acknowledgement returned by the receiving end to the transmitting end in response to receiving the data packet.
  • the failure to receive the acknowledgement in a timely manner may not be due to delay, but may be due to congestion in the network.
  • the next retransmission of the second data packet is performed according to the second RTO, and the second RTO is a value calculated based on the round-trip delay when the retransmission occurs.
  • the setting of the period of the retransmission timer takes into account the second RTO. That is, considering the current poor network transmission delay, compared with the continued use of the first RTO-based exponential increase as the RTO, unnecessary retransmissions can be avoided, data packet transmission time can be shortened, and network resources and equipment power consumption can be saved. .
  • the sending end receives an acknowledgement corresponding to the first data packet within the first RTO
  • the sending end is based on the sending timestamp of the first data packet and the receiving time of the confirmation corresponding to the first data packet.
  • Update the first RTO if the sender does not receive an acknowledgement corresponding to the second data packet within the updated first RTO, the sender retransmits the second data packet, where the second data packet is the first The packet sent after the packet.
  • the retransmission according to the second RTO includes:
  • the sender If the sender does not receive an acknowledgement corresponding to the second data packet within the first RTO, the sender retransmits the second data packet;
  • the sender If the sender does not receive an acknowledgement corresponding to the second data packet within the second RTO, it retransmits the second data packet again.
  • the sender When the sender sends the second data packet for the first time, consider the first RTO, that is, the delay in the network, to avoid unnecessary retransmissions caused by the RTO setting smaller than the delay in the network;
  • the RTO of the transmission is set to the second RTO, which takes into account the poor network transmission, avoids unnecessary retransmissions due to the short RTO setting, shortens the packet transmission time, and saves network resources and equipment power consumption.
  • the retransmission according to the second RTO includes:
  • the sender If the sender does not receive an acknowledgement corresponding to the second data packet within the first RTO, the sender retransmits the second data packet;
  • the second data packet is retransmitted again, where the second RTO is greater than the product of the first RTO and the first coefficient, where the value of the first coefficient is Greater than 1. Specifically, the value of the first coefficient is two.
  • the period of the retransmission timer when the sending end sends the first data packet is an exponential increase of the first RTO, that is, the first RTO, the first RTO * K, the first RTO * K2, ..., the first RTO * Ki.
  • the sender sends the second data packet for the first time
  • the first RTO that is, the delay in the network
  • the RTO value at this time is the maximum value of the second RTO and the first RTO * K
  • K is the first coefficient. Setting the maximum value of the two as the second RTO takes into account the worst case of the current network transmission, avoids unnecessary retransmissions caused by the RTO setting being too short, shortens the packet transmission time, and saves network resources and equipment power consumption.
  • the method further includes: if the sender does not receive an acknowledgement corresponding to the second data packet within the first RTO * K2, retransmitting the second data packet a third time; according to this rule, If the sender does not receive an acknowledgement corresponding to the second data packet within the first RTO * Ki, the second data packet is retransmitted i + 1 times.
  • i is an integer greater than or equal to 0.
  • the method further includes:
  • the sender receives an acknowledgement corresponding to the second data packet within the first RTO, it performs the following steps:
  • the sending end updates the first RTO according to the sending timestamp of the second data packet and the confirmation receiving timestamp corresponding to the second data packet; if the sending end does not receive the confirmation corresponding to the third data packet within the updated first RTO, Then, the transmitting end retransmits the third data packet, where the third data packet is a data packet sent after the transmitting end sends the second data packet.
  • the sender receives the acknowledgement of the second data packet in the first RTO, which indicates that the congestion of the network transmission has eased, and may return to a smoother network transmission state.
  • the period of the retransmission timer is adjusted to the first RTO, and the retransmission timer is retransmitted according to the exponential increase based on the updated first RTO, so as to realize the retransmission of the data packets that need to be retransmitted as soon as possible and reduce the data Overall packet transmission time.
  • the method further includes:
  • Update the second RTO, the updated second RTO is related to the acknowledged receiving timestamp corresponding to the second data packet and the sending timestamp of the second data packet;
  • the sender If the sender does not receive an acknowledgement corresponding to the third data packet within the second RTO, the sender retransmits the third data packet, where the third data packet is a data packet sent after the sender sends the second data packet.
  • the sender did not receive the acknowledgement of the second data packet in the first RTO, indicating that the network transmission status has not been alleviated, and congestion may occur. Therefore, the period of the retransmission timer is adjusted to the second RTO. At this time, the third data packet The timeout retransmission time after the first transmission is the second RTO.
  • the second RTO can bring a longer waiting time to wait for the network transmission situation to ease, avoid unnecessary retransmissions caused by too short RTO settings, and shorten the packet transmission time. Save network resources and equipment power consumption.
  • the method further includes:
  • the sending end updates the first RTO according to the sending timestamp of the third data packet and the acknowledged receiving timestamp corresponding to the third data packet;
  • the sender If the sender does not receive an acknowledgement corresponding to the fourth data packet within the updated first RTO, the sender retransmits the fourth data packet, where the fourth data packet is data sent after the sender sends the third data packet package.
  • the sender receives the acknowledgement of the third data packet in the first RTO, which indicates that the congestion of the network transmission has eased, and it may return to a smoother network transmission state.
  • the period of the retransmission timer is adjusted to the first RTO, and the retransmission timer is retransmitted according to the exponential increase based on the updated first RTO, so as to realize the retransmission of the data packets that need to be retransmitted as soon as possible and reduce the data. Overall packet transmission time.
  • the method further includes:
  • Update the second RTO (Slow RTO), the updated second RTO is related to the acknowledged receiving timestamp corresponding to the third data packet, and the sending timestamp of the third data packet;
  • the sender If the sender does not receive an acknowledgement corresponding to the fourth data packet within the updated second RTO, the sender retransmits the fourth data packet, where the fourth data packet is data sent after the sender sends the third data packet package.
  • the second RTO is a time difference between a received receiving timestamp corresponding to the first data packet and a sending timestamp of the first data packet.
  • the second RTO is a product of a time difference between a sending timestamp of the first data packet and a receiving timestamp corresponding to the first data packet and a second coefficient, and a value of the second coefficient is greater than zero.
  • the value of the second coefficient may be 1.5.
  • the first data packet carries a retransmission sequence number
  • the retransmission sequence number indicates the number of times the first data packet is sent
  • the acknowledgement received by the sender carries the retransmission number of the first data packet corresponding to the acknowledgement.
  • the retransmission sequence number is the same as the retransmission sequence number
  • the second RTO is the time difference between the reception timestamp of the acknowledgement received by the sending end and the transmission timestamp of the first data packet corresponding to the acknowledgement.
  • the corresponding data packet is a data packet received by the receiving end, and the data packet may be a data packet transmitted for the first time or a retransmitted data packet.
  • the sending timestamp of the corresponding data packet can be the sending timestamp of the first transmission of the data packet, or the sending timestamp when the data packet is retransmitted.
  • the data packet carries a retransmission sequence number. According to the retransmission sequence number carried in the acknowledgement, it can be distinguished when the acknowledgement is a data packet sent / retransmitted in response to.
  • the round-trip delay when retransmission occurs can be calculated more accurately, so that a more accurate second RTO can be calculated.
  • the first data packet carries a retransmission sequence number
  • the retransmission sequence number indicates the number of times the first data packet is sent
  • the acknowledgement received by the sender carries the retransmission number of the first data packet corresponding to the acknowledgement.
  • the retransmission sequence number is the same as the retransmission sequence number
  • the second RTO is the product of the time difference between the acknowledgement receiving timestamp received by the sender and the sending timestamp of the first packet corresponding to the acknowledgement and the second coefficient
  • the value of the second coefficient is greater than 0 .
  • the value of the second coefficient may be 1.5.
  • the first data packet includes an extension field
  • the extension field includes a retransmission sequence number
  • the retransmission sequence number is in a token field in the first data packet.
  • an embodiment of the present application provides an electronic device.
  • the electronic device includes a sending unit, a computing unit, and a receiving unit, where:
  • the sending unit is configured to send the first data packet to the receiving end; it is also used to retransmit the first data packet when the receiving unit does not receive the acknowledgement corresponding to the first data packet in the first RTO, and the confirmation indicates that the receiving end has received the first data packet.
  • a data packet further configured to retransmit the second data packet according to the second RTO, where the second data packet is a data packet sent after the sending unit sends the first data packet;
  • the calculation unit is configured to calculate the second RTO, and the second RTO is related to the acknowledged receiving timestamp corresponding to the first data packet and the sending timestamp of the first data packet;
  • the receiving unit is configured to receive an acknowledgement corresponding to the first data packet.
  • the computing unit is further configured to update the first RTO according to the sending timestamp of the first data packet and the confirmed receiving timestamp;
  • the sending unit is further configured to send a second data packet to the receiving end; it is also used when the receiving unit receives an acknowledgement corresponding to the first data packet in the first RTO, and the receiving unit does not receive the first data packet in the updated first RTO. When the two data packets are acknowledged, the second data packet is retransmitted.
  • the receiving unit is further configured to receive an acknowledgement corresponding to the first data packet
  • the sending unit is configured to: when the receiving unit does not receive an acknowledgement corresponding to the second data packet in the first RTO, retransmit the second data packet; when the receiving unit does not receive the confirmation in the second RTO When the acknowledgement corresponding to the second data packet is received, retransmitting the second data packet again;
  • the receiving unit is further configured to receive an acknowledgement corresponding to the second data packet.
  • the sending unit is configured to: when the receiving unit does not receive an acknowledgement corresponding to the second data packet in the first RTO, retransmit the second data packet; when the receiving unit does not receive the confirmation in the second RTO When receiving the acknowledgement corresponding to the second data packet, the second data packet is retransmitted again, where the second RTO is greater than the product of the first RTO and the first coefficient, and the value of the first coefficient is greater than 1.
  • the value of the first coefficient may be 2
  • the computing unit is further configured to update the first RTO according to the sending timestamp of the second data packet and the receiving timestamp of the acknowledgement corresponding to the second data packet;
  • the sending unit is further configured to retransmit the third data when the receiving unit receives an acknowledgement corresponding to the second data packet in the first RTO and the receiving unit does not receive an acknowledgement corresponding to the third data packet in the updated first RTO. Packet; wherein the third data packet is a data packet sent after the sending unit sends the second data packet;
  • the receiving unit is further configured to receive an acknowledgement corresponding to the third data packet.
  • the computing unit is further configured to update the second RTO, and the updated second RTO is related to the acknowledged receiving timestamp corresponding to the second data packet and the sending timestamp of the second data packet;
  • the sending unit is further configured to retransmit the third data packet when the receiving unit does not receive an acknowledgement corresponding to the third data packet within the second RTO; wherein the third data packet is a data packet sent after the sending unit sends the second data packet .
  • the calculation unit is further configured to update the first RTO according to the sending timestamp of the third data packet and the receiving timestamp of the acknowledgement corresponding to the third data packet;
  • the sending unit is further configured to retransmit the fourth data when the receiving unit receives an acknowledgement corresponding to the third data packet in the second RTO and the receiving unit does not receive an acknowledgement corresponding to the fourth data packet in the updated first RTO. Packet; wherein the fourth data packet is a data packet sent after the sending unit sends the third data packet;
  • the receiving unit is further configured to receive an acknowledgement corresponding to the fourth data packet.
  • the computing unit is further configured to update the second RTO, and the updated second RTO is related to the acknowledged receiving timestamp corresponding to the third data packet and the sending timestamp of the third data packet;
  • the sending unit is further configured to retransmit the fourth data packet when the receiving unit does not receive an acknowledgement corresponding to the fourth data packet within the updated second RTO; wherein the fourth data packet is sent after the sending unit sends the third data packet Data packet
  • the receiving unit is further configured to receive an acknowledgement corresponding to the fourth data packet.
  • the second RTO is a time difference between a received receiving timestamp corresponding to the first data packet and a sending timestamp of the first data packet.
  • the second RTO is a product of a time difference between a sending timestamp of the first data packet and a received receiving timestamp corresponding to the first data packet and a second coefficient, and a value of the second coefficient is greater than zero.
  • the value of the second coefficient may be 1.5.
  • the first data packet carries a retransmission sequence number
  • the retransmission sequence number indicates the number of times the first data packet is sent
  • the acknowledgement received by the receiving unit carries the retransmission number of the first data packet corresponding to the acknowledgement.
  • the retransmission sequence number is the same as the retransmission sequence number;
  • the second RTO is the time difference between the reception timestamp of the acknowledgement received by the receiving unit and the transmission timestamp of the first data packet corresponding to the acknowledgement.
  • the first data packet carries a retransmission sequence number
  • the retransmission sequence number indicates the number of times the first data packet is sent
  • the acknowledgement received by the receiving unit carries the retransmission number of the first data packet corresponding to the acknowledgement.
  • the second retransmission sequence number is the same as the retransmission sequence number;
  • the second RTO is the product of the time difference between the acknowledgement receiving timestamp received by the receiving unit and the sending timestamp of the first data packet corresponding to the acknowledgement and the second coefficient, and the value of the second coefficient is greater than 0 .
  • the value of the second coefficient may be 1.5.
  • the first data packet includes an extension field
  • the extension field includes a retransmission sequence number
  • the retransmission sequence number is in a token field in the first data packet.
  • an embodiment of the present application provides an electronic device, including: a processor, a memory, a retransmission timer, and a communication interface.
  • the cycle of the retransmission timer is the first RTO.
  • the protocol stack program is stored in the memory, and the processor executes the protocol stack program for:
  • the first data packet is retransmitted through the communication interface, and the period of the retransmission timer is adjusted to the second RTO
  • the second RTO is related to the acknowledged receiving timestamp corresponding to the first data packet and the sending timestamp of the first data packet; retransmission of the second data packet through the communication interface according to the second RTO, wherein the second data packet A data packet sent after the first data packet is sent through the communication interface.
  • the period of the retransmission timer is the first RTO and the second RTO
  • the processor executes the protocol stack program for:
  • the second data packet is retransmitted again through the communication interface.
  • the period of the retransmission timer is the first RTO and the second RTO, where the second RTO is greater than the product of the first RTO and the first coefficient, and the value of the first coefficient is greater than 1, the processor Execute the protocol stack program for:
  • the second data packet is retransmitted again through the communication interface.
  • the value of the first coefficient may be two.
  • the period of the retransmission timer is the first RTO.
  • the processor executes
  • the protocol stack program is also used for:
  • the period of the retransmission timer is adjusted to the updated first RTO; when the retransmission timer expires and the communication interface does not receive an acknowledgement corresponding to the third data packet, the third data packet is retransmitted through the communication interface, where The third data packet is a data packet sent after the second data packet is sent through the communication interface.
  • the processor executes the protocol stack program and is further configured to:
  • Update the second RTO, the updated second RTO is related to the acknowledged receiving timestamp corresponding to the second data packet and the sending timestamp of the second data packet;
  • the period of the retransmission timer is adjusted to the second RTO.
  • the third data packet is retransmitted through the communication interface, where the third data
  • the packet is a data packet sent after the second data packet is sent through the communication interface.
  • the period of the retransmission timer is the second RTO.
  • the processor executes
  • the protocol stack program is also used for:
  • the fourth data packet is a data packet sent after the third data packet is sent through the communication interface.
  • the processor executes the protocol stack program and is further configured to:
  • Update the second RTO, the updated second RTO is related to the acknowledged receiving timestamp corresponding to the third data packet, and the sending timestamp of the third data packet;
  • the fourth data packet is a data packet sent after the third data packet is sent through the communication interface.
  • the second RTO is a time difference between a received receiving timestamp corresponding to the first data packet and a sending timestamp of the first data packet.
  • the second RTO is a product of a time difference between a sending timestamp of the first data packet and a received receiving timestamp corresponding to the first data packet and a second coefficient, and a value of the second coefficient is greater than zero.
  • the first data packet carries a retransmission sequence number
  • the retransmission sequence number indicates the number of times the first data packet is sent
  • the acknowledgement received by the communication interface carries the retransmission sequence number of the data packet corresponding to the acknowledgement.
  • the same retransmission sequence number; the second RTO is the time difference between the receiving timestamp of the acknowledgement received by the communication interface and the sending timestamp of the data packet corresponding to the acknowledgement.
  • the first data packet carries a retransmission sequence number
  • the retransmission sequence number indicates the number of times the first data packet is sent
  • the acknowledgement received by the communication interface carries the retransmission sequence number of the data packet corresponding to the acknowledgement.
  • the same retransmission sequence number; the second RTO is the product of the time difference between the acknowledgement timestamp of the acknowledgement received by the communication interface and the send timestamp of the data packet corresponding to the acknowledgement and the second coefficient, and the value of the second coefficient is greater than zero.
  • the value of the second coefficient may be 1.5.
  • the first data packet includes an extension field
  • the extension field includes a retransmission sequence number
  • the retransmission sequence number is in a token field in the first data packet.
  • an embodiment of the present application provides a communication interface including an input / output port and a processor
  • the processor is configured to send the first data packet to the receiving end through the input / output port;
  • the processor When the input / output port does not receive an acknowledgement corresponding to the first data packet within the first RTO, the acknowledgement indicates that the receiving end has received the first data packet, and the processor performs the following steps:
  • the second RTO is related to the acknowledged receiving timestamp corresponding to the first data packet, and the sending timestamp of the first data packet;
  • the second data packet is retransmitted through the input / output port, where the second data packet is a data packet sent after the first data packet is sent through the input / output port.
  • the processor is configured to:
  • the second data packet is retransmitted through the input / output port;
  • the second data packet is retransmitted through the input / output port again.
  • the processor is configured to:
  • the second data packet is retransmitted through the input / output port;
  • the second data packet is retransmitted through the input / output port, where the second RTO is greater than the product of the first RTO and the first coefficient , Where the value of the first coefficient is greater than 1.
  • the value of the first coefficient may be two.
  • the processor when the input / output port receives an acknowledgement corresponding to the second data packet in the first RTO, the processor is further configured to perform the following steps:
  • the third data packet is retransmitted through the input / output port, where the third data packet is transmitted through the input / output port A data packet sent after the second data packet is sent.
  • the processor is further configured to:
  • Update the second RTO (Slow RTO), the updated second RTO is related to the acknowledged receiving timestamp corresponding to the second data packet, and the sending timestamp of the second data packet;
  • the third data packet is retransmitted through the input / output port, wherein the third data packet is used to send the second data through the input / output port.
  • a packet sent after the packet is retransmitted through the input / output port, wherein the third data packet is used to send the second data through the input / output port.
  • the processor when the input / output port receives an acknowledgement corresponding to the third data packet in the second RTO, the processor is further configured to perform the following steps:
  • the fourth data packet is retransmitted through the input / output port, where the fourth data packet is transmitted through the input / output port A data packet sent after the third data packet is sent.
  • the processor is further configured to:
  • Update the second RTO, the updated second RTO is related to the acknowledged receiving timestamp corresponding to the third data packet, and the sending timestamp of the third data packet;
  • the fourth data packet is retransmitted through the input / output port, where the fourth data packet is transmitted through the input / output port A data packet sent after the third data packet is sent.
  • the second RTO is a time difference between a received receiving timestamp corresponding to the first data packet and a sending timestamp of the first data packet.
  • the second RTO is a product of a time difference between a sending timestamp of the first data packet and a confirmation receiving timestamp corresponding to the first data packet and a second coefficient, where a value of the second coefficient is greater than 0. Specifically, the value of the second coefficient may be 1.5.
  • the first data packet carries a retransmission sequence number
  • the retransmission sequence number indicates the number of times the first data packet is sent
  • the acknowledgement received by the communication interface carries the retransmission number of the first data packet corresponding to the acknowledgement.
  • the retransmission sequence number is the same as the retransmission sequence number;
  • the second RTO is the time difference between the reception timestamp of the acknowledgement received by the communication interface and the transmission timestamp of the first data packet corresponding to the acknowledgement.
  • the first data packet carries a retransmission sequence number
  • the retransmission sequence number indicates the number of times the first data packet is sent
  • the acknowledgement received by the communication interface carries the retransmission number of the first data packet corresponding to the acknowledgement.
  • the retransmission sequence number is the same as the retransmission sequence number
  • the second RTO is the product of the time difference between the acknowledgement timestamp of the acknowledgement received by the communication interface and the send timestamp of the packet corresponding to the acknowledgement and the second coefficient, where the value of the second coefficient is greater than 0 .
  • the value of the second coefficient may be 1.5.
  • the data packet includes an extension field
  • the extension field includes a retransmission sequence number
  • the retransmission sequence number is in a token field in the data packet.
  • an embodiment of the present application provides an electronic device, and the electronic device includes the fourth aspect and the communication interface provided in any possible implementation manner of the fourth aspect.
  • an embodiment of the present application provides an electronic device.
  • the electronic device includes a processor and a computer-readable storage medium storing a computer program.
  • the processor is coupled to a computer-readable storage medium, and when the computer program is executed by the processor, the first aspect and the retransmission control method provided in any possible implementation manner of the first aspect are implemented.
  • an embodiment of the present application provides a computer-readable storage medium on which a computer program is stored.
  • the computer program is executed by a processor, the first aspect and any of the possible implementation manners of the first aspect are provided Retransmission control method.
  • an embodiment of the present application provides a computer program product, including a computer program, which is executed by a processor to implement the first aspect and the retransmission control method provided in any possible implementation manner of the first aspect.
  • FIG. 1 is a schematic structural diagram of data transmission according to an embodiment of the present invention
  • FIG. 2 is a schematic structural diagram of an electronic device according to an embodiment of the present invention.
  • FIG. 3 is a schematic structural diagram of an electronic device according to an embodiment of the present invention.
  • FIG. 4 is a schematic structural diagram of an electronic device according to an embodiment of the present invention.
  • FIG. 5 is a schematic structural diagram of an electronic device according to an embodiment of the present invention.
  • FIG. 6 is a schematic diagram of a retransmission mechanism according to an embodiment of the present invention.
  • FIG. 7 is a schematic diagram of a round-trip delay without retransmission according to an embodiment of the present invention.
  • FIG. 8 is a schematic diagram of a round-trip delay in which retransmission occurs according to an embodiment of the present invention.
  • FIG. 9 is a schematic diagram of a retransmission mechanism switching according to an embodiment of the present invention.
  • FIG. 10 is a flowchart of a retransmission control method according to an embodiment of the present invention.
  • FIG. 11 is a schematic diagram of a retransmission mechanism switching according to an embodiment of the present invention.
  • FIG. 12 is a schematic diagram of switching of a retransmission mechanism according to an embodiment of the present invention.
  • FIG. 13 is a schematic diagram of a retransmission control method according to an embodiment of the present invention.
  • FIG. 14 is a schematic diagram of a retransmission counting option according to an embodiment of the present invention.
  • FIG. 15 is a schematic structural diagram of an electronic device according to an embodiment of the present invention.
  • Data packet It is also called a message. It is the basic unit of network transmission. It is data organized in a certain format. Different types of network protocols have different definitions of the data packet format, but in general, a data packet can be divided into a header and a payload, where the header contains the necessary data during the packet transmission process. Information, such as address information, flag bits, etc., the payload is also called the data portion of the data packet, and contains the content of the data being sent.
  • Network congestion refers to the situation where network transmission performance is reduced due to limited network resources when the amount of data transmitted on the network is too large. Generally, network congestion occurs when the network performance is degraded due to excessive load on the network.
  • Acknowledgement A control packet sent by the receiver to the sender during data transmission to indicate that the data sent by the sender has been acknowledged.
  • Round-Trip Time An important performance indicator in network transmission, which represents the total delay experienced from the time the sender sends data until the sender receives an acknowledgement (ACK) from the receiver.
  • first and second in this application are used to distinguish the same type of objects, and cannot be understood as indicating or implying relative importance or implicitly indicating the number of technical features indicated. Therefore, the features defined as “first” and “second” may explicitly or implicitly include one or more of the features. In the description of the embodiments of the present invention, unless otherwise stated, the meaning of "a plurality" is two or more.
  • FIG. 1 is an architecture for data transmission between electronic devices applicable to the present application.
  • the architecture includes an electronic device 101, a network 102, and an electronic device 103.
  • the electronic device 101 and the electronic device 103 are communicatively connected through a network 102, where the network may be a wired network or a wireless network, such as a computer network, the Internet, the Internet of Things, or a telephone network.
  • the electronic devices 101 and 103 establish a communication connection based on a specific communication protocol, and then transmit data in units of data packets according to the established connection.
  • the data packet will pass through one or more network devices in the network 200 during the transmission process, such as an access network device, a routing device, or an access point (AP, access point).
  • AP access point
  • the electronic device 101 may send a data packet to the electronic device 103 through the network 102.
  • the electronic device 101 may be a terminal device, and specifically may be a handheld device having a wireless connection function, or another processing device connected to a wireless modem.
  • it can be a mobile phone, a computer, a tablet, a personal digital assistant (PDA), a mobile Internet device (MID), a wearable device, and an e-book reader (e-book reader); It can also be a portable, pocket, handheld, computer-built or car-mounted mobile device.
  • PDA personal digital assistant
  • MID mobile Internet device
  • e-book reader e-book reader
  • the electronic device 103 may be a terminal device or a server, and more specifically, may be an IOT cloud platform server.
  • the IOT cloud platform server receives data packets sent by multiple IOT devices and processes the received data packets.
  • the IOT device can collect data and send the data packet to the IOT cloud platform server through the network 102.
  • the IOT cloud platform service can also send data packets to IOT devices for remote data collection or remote control of IOT devices.
  • one of the two electronic devices having established a communication connection is referred to as a transmitting end, and the other is referred to as a receiving end.
  • the transmitting end and the receiving end may be any device having data transmission and reception capabilities.
  • the sending end may be a server and the receiving end is another server; or the sending end is a terminal device and the receiving end is a server; or the sending end and the receiving end are both terminal devices.
  • the sending end and the receiving end are two opposite roles, and can be converted to each other, that is, the same device may be the sending end or the receiving end in different scenarios.
  • a data transmission architecture may generally include fewer or more components than those shown in FIG. 1, or include components different from those shown in FIG. 1.
  • FIG. 1 The multiple implementation methods disclosed in the embodiments of the present application are more relevant.
  • FIG. 2 is a schematic structural diagram of an electronic device 101 or 103 according to an embodiment of the present application.
  • the electronic device 200 includes components such as a processor 201, a memory 202, and a communication interface 203.
  • the electronic device 200 may include more or fewer components than shown, or combine certain components.
  • buses 204 or signal lines can be divided into an address bus, a data bus, a control bus, and the like.
  • the processor 201 may be a central processing unit (CPU, central processing unit), a network processor (NP, network processor), or a combination of a CPU and an NP.
  • the processor 201 may further include a hardware chip.
  • the hardware chip may be an application-specific integrated circuit (ASIC), a programmable logic device (PLD), or a combination thereof.
  • ASIC application-specific integrated circuit
  • PLD programmable logic device
  • the above PLD can be a complex programmable logic device (CPLD), a field programmable logic gate array (FPGA), a field-programmable gate array (FPGA), a general array logic (GAL, generic array logic, abbreviation: GAL) or any combination thereof.
  • CPLD complex programmable logic device
  • FPGA field programmable logic gate array
  • FPGA field-programmable gate array
  • GAL general array logic
  • the memory 202 is configured to store a computer program, such as the application program 205 and the operating system 206 shown in FIG. 3; the processor 201 can call the computer program stored in the memory 202 to implement functions defined by the computer program.
  • the processor 201 executes an operating system to implement various functions of the operating system on the electronic device 200.
  • the operating system 206 can be Or other operating systems, this embodiment of the present application does not place any restrictions on this.
  • the memory 202 also stores data other than computer programs, such as data generated during the operation of the operating system 206 and the application program 205.
  • the memory 202 may include volatile memory (English: volatile memory), such as random access memory (RAM, random-access memory); the memory 202 may also include non-volatile memory (English: non-volatile memory), such as fast Flash memory (flash memory), hard disk (HDD), or solid-state drive (SSD); memory 202 may also include a combination of the above types of memory. Only one memory is shown in FIG. 3. Of course, the memory 202 may also be provided as multiple storage devices as required.
  • the memory 202 may also be a memory in the processor 201, which is not limited herein.
  • the communication interface 203 is used to connect the electronic device 200 with other electronic devices, hardware that allows the electronic device 200 to communicate on the network, and hardware that can transmit and receive data packets.
  • the communication interface 203 may be connected to a network by wire or wireless to connect to other electronic devices, such as other external terminals or servers.
  • the communication interface 203 may be a modem or an antenna or a wifi module, and in the server, the communication interface 203 may be a radio frequency unit or an antenna.
  • the communication interface 203 may also be integrated with a processor and a memory (including a RAM and a read-only memory (ROM)).
  • the electronic device 200 may be logically divided into a hardware layer 21, an operating system 206, and an application layer 23.
  • the hardware layer 21 includes hardware resources such as the processor 201, the memory 202, and the communication interface 204 as described above.
  • the application layer 23 includes one or more applications, such as an application 205.
  • the operating system 206 as software middleware between the hardware layer 21 and the application layer 23, is a computer program that manages and controls hardware and software resources.
  • the operating system 206 includes a kernel 22, which is used to provide underlying system components and services, such as: power management, memory management, protocol stack 24, driver 25, and the like.
  • the protocol stack 24 is a component that implements a network protocol. After the application program 205 issues a data sending instruction, the data passes the protocol stack 24 and the driver 25 calls the communication interface 203 to send the data.
  • the driver program 25 includes a memory driver 251 and a communication interface driver 252 (for driving the communication interface 203).
  • the protocol stack 24 includes a protocol component 241 for implementing network protocol functions.
  • the retransmission control method provided in the embodiment of the present application may be implemented by a protocol component 241 in the kernel 22.
  • the electronic device 200 may offload the functions of the protocol components to the communication interface 203, thereby implementing kernel bypass and improving data forwarding performance.
  • the communication interface 203 is a programmable communication interface
  • the protocol component 203 is implemented in the programmable communication interface 203.
  • the retransmission control method provided by the embodiment of the present application may be implemented by the communication interface 203, and specifically, the method may be implemented by modifying hardware or firmware of the communication interface 203.
  • the computer program may be stored in a memory integrated on the programmable communication interface 203, and a processor integrated on the programmable communication interface 203 executes the computer program to implement the retransmission control method provided in the present application.
  • the retransmission control method provided in the present application may also be implemented by a logic circuit in the programmable communication interface 203.
  • the electronic device 200 may implement the protocol component 241 at the application layer 23 (such as a DPDK (data plane development kit) technology), thereby implementing kernel bypass and improving data forwarding performance.
  • the retransmission control method provided in the embodiment of the present application may be implemented by software at an application layer.
  • a retransmission mechanism In the process of data transmission, a retransmission mechanism is designed to ensure the reliability of data transmission, and a retransmission timer is specifically designed.
  • the retransmission timer may also be called a backoff timer.
  • the sender After the sender sends a data packet to the receiver, if no acknowledgement (ACK, acknowledgement) is received within the RTO time set by the retransmission timer, in other words, when the RTO times out, the sender retransmits (also known as (Retransmit) the packet.
  • the RTO of the retransmission timer is set to multiple time intervals.
  • FIG. 6 illustrates such a retransmission mechanism.
  • FIG. 6 includes a transmitting end and a receiving end. After a certain number of retransmissions, the data packet can be abandoned.
  • the data packet sent from the sender to the receiver can sometimes be sent as a request message. It should be understood that the sending end and the receiving end are two opposite roles and can be converted to each other, that is, the same device may be the sending end or the receiving end in different scenarios.
  • the CoAP protocol is an application layer protocol that can be applied to IOT devices and has a retransmission mechanism.
  • the RTO is set to 2, 22, 23, 24, 25. Under this retransmission mechanism, if the real RTT is greater than the RTO, unnecessary retransmissions may be performed, thereby wasting network resources and equipment power consumption. Because the sender cannot receive any feedback in time, the retransmitted data packet will still be on the end-to-end path, which will increase the transmission time of the data packet between the end-to-end and increase the congestion of the current path.
  • the retransmission control mechanism of the COCOA protocol may also be too aggressive, that is, the RTO value calculated when the RTT valuation is small, and the retransmission frequency is high, which will cause a large number of retransmissions. In this case, this mechanism will cause a large number of retransmissions (up to 150% to 200%).
  • a large number of retransmissions may increase the transmission time of data packets from end to end due to a large number of retransmissions, causing waste of network resources and equipment power consumption, and may increase network congestion.
  • the retransmission control method runs on a retransmission control device, and the retransmission control device may be the electronic device 200 mentioned in FIG. 2 to FIG. 5. Specifically, it may be an IOT device or an IOT cloud platform server.
  • the IOT device is a transmitting end
  • the retransmission control device is an IOT device.
  • the IOT cloud platform server is a transmitting end
  • the retransmission control device is IOT cloud platform server.
  • the retransmission control method may be a retransmission mechanism applicable to the COAP protocol, or may be a retransmission mechanism applicable to other network protocols, such as a Transmission Control Protocol (TCP, transmission control protocol).
  • TCP Transmission Control Protocol
  • the retransmission control method provided in the embodiment of the present application involves two RTO parameters, namely a first RTO and a second RTO.
  • the first RTO can also be called a standard RTO or fast-RTO
  • the second RTO can also be called a slow Speed RTO or slow-RTO.
  • the first RTO is calculated based on the round-trip delay when no retransmission occurs as a reference value. That is, the first RTO is a time difference between a data packet sending time stamp and an acknowledgement receiving time stamp corresponding to the data packet.
  • the round-trip delay when no retransmission occurs may be used as a reference value to substitute into the noise processing function f (x) to obtain a slow retransmission time, where x is a reference value.
  • f (x) ax + b
  • a and b are both constants.
  • the timeout retransmission time in this application does not need to limit the lower limit to 1s, because setting the lower limit to 1s may affect the timeliness of retransmissions on low-latency networks.
  • the upper limit of the standard retransmission time in this application may be at least 60s.
  • the standard retransmission time calculated in this application and the initial standard retransmission time can be jittery, and the degree of jitter is between 1/4 * SRTT to SRTT, where SRTT is the smoothed round-trip delay (SRTT, Smoothed Round Trip Time) can be understood as "smoothed" RTT.
  • SRTT can be 1/3 of the initial standard retransmission time.
  • the SRTT value is 2 / 3s. Therefore, the first RTO provided in this application can track the real RTT of the network and can trigger retransmission in a timely manner. For end-to-end paths where network loss has nothing to do with congestion, retransmission without additional delay is very effective for the fastest transmission of data packets.
  • the time difference between the sending time stamp of the data packet and the receiving time stamp of the acknowledgement is the round-trip delay when no retransmission occurs.
  • the acknowledgement corresponding to the data packet indicates that the receiving end has received the data packet.
  • the sending end sends a data packet P1 to the receiving end for the first time at T1, and the sending end receives the acknowledgement returned by the receiving end in response to receiving P1 at T2.
  • the second RTO is calculated based on the round-trip delay when a retransmission occurs as a reference value.
  • the second RTO is related to the acknowledged receiving timestamp corresponding to the data packet and the sending timestamp of the data packet.
  • the sending timestamp of the data packet may refer to a time when the data packet is first transmitted (original transmission), or a time when the data packet is retransmitted.
  • the round-trip delay when retransmission occurs may be used as the second RTO, that is, the second RTO is a time difference between a data packet sending timestamp and a receiving acknowledgement time stamp corresponding to the data packet.
  • the round-trip delay when retransmission occurs may be multiplied by a coefficient as the second RTO.
  • This coefficient is a preset coefficient, greater than 0, that is, the second RTO is the product of the time difference between the sending timestamp of the data packet and the acknowledgement receiving timestamp corresponding to the data packet and the second coefficient, where the value of the second coefficient is greater than 0 .
  • the value of the second coefficient may be greater than 1, making the second RTO less aggressive, for example, the value of the second coefficient may be 1.5.
  • the second RTO takes into account the long round-trip delay caused by multiple unnecessary retransmissions, and the second RTO is set to a value greater than the end-to-end RTT when a retransmission occurs.
  • the end-to-end RTT value may increase due to unnecessary retransmissions, so the second RTO is updated after each retransmission of the data packet based on the round-trip delay when the retransmission occurs.
  • the second RTO itself can also be a form of backoff, because the second RTO includes the time accumulated during the data packet transmission by using the retransmission timer to avoid, that is, the second RTO includes the possible time during the data packet transmission.
  • the time consumed by all unnecessary retransmissions Assuming a stable RTT and all retransmissions are unnecessary, in other words, the received acknowledgement message is a response to the original transmission of the data packet (or called: the first transmission), then the data packet transmission is consumed
  • the time is: from the sending timestamp of the data packet to the sending timestamp of the last retransmission, plus an RTT time.
  • the time difference between the sending timestamp of the data packet and the confirmed receiving timestamp is Round-trip delay when a retransmission occurs.
  • the sender sends a data packet P2 to the receiver for the first time at T1, and the sender performs the first retransmission of data packet P2 at T2.
  • the sender receives the receiver at Tn in response to having received The acknowledgement returned by data packet P2, during which data packet P2 may be retransmitted one or more times.
  • An embodiment of the present application provides a retransmission control method.
  • the first RTO is used as a basis for binary exponential backoff.
  • a second RTO is introduced as a value in the RTO used in the backoff process, that is, the setting of the RTO at this time considers the second RTO.
  • the logic of the retransmission control method provided in the embodiment of the present application may include the following three possible solutions.
  • K mentioned in the embodiments of the present application is a preset coefficient, which may be referred to as a first coefficient. Numbers with a value greater than 1:
  • the FAST_RTO backoff method (hereinafter referred to as the first retransmission mechanism): Based on the first RTO, the original binary exponential backoff is performed as a retransmission control mechanism when data packets are not retransmitted.
  • the retransmission timer RTO can be set to: fast-RTO, fast-RTO * K, fast-RTO * K2, fast-RTO * K3, ..., fast-RTO * Ki.
  • K is a number greater than 1, and K may be 2.
  • FAST_SLOW_FAST_RTO backoff method (hereinafter referred to as the second retransmission mechanism):
  • This mechanism can be the retransmission control mechanism used when the data packet still requires one or more retransmissions when the first retransmission mechanism is used: first the first RTO is used as the RTO of the original transmission of data packets to alleviate the loss irrelevant to congestion in the network. Then, if the originally transmitted data packet is retransmitted, using the second RTO as the RTO for the first retransmission can avoid unnecessary retransmissions to alleviate congestion that may occur in the network at this time. If further retransmission is required, the first RTO is adopted to continue backoff.
  • the RTO of the retransmission timer can be set to: fast-RTO, max (slow-RTO, fast-RTO * K), fast-RTO * K2, fast-RTO * K3, ..., fast-RTO * Ki.
  • the RTO can also be set to: fast-RTO, slow-RTO, fast-RTO * K2, fast-RTO * K3, ..., fast-RTO * Ki.
  • K is a number greater than 1, and K may be 2.
  • SLOW_FAST_RTO backoff method (hereinafter referred to as the third retransmission mechanism): This method can be used when the previous data packet transmission uses the second retransmission mechanism or the third retransmission mechanism, but the data packet transmission still needs one or more retransmissions In case of retransmission control mechanism.
  • a second RTO is used as the RTO of the original transmission to alleviate congestion in the network.
  • an unambiguous RTT sample can be obtained.
  • the unambiguous RTT sample is a round-trip delay when no retransmission occurs.
  • the RTO of the retransmission timer may be set to slow-RTO, fast-RTO, fast-RTO * K2, fast-RTO * K3, ..., fast-RTO * Ki.
  • K is a number greater than 1, and K may be 2.
  • the initial RTO value is used as the timeout retransmission time, and the initial RTO can be set to 2s.
  • the retransmission control method provided in the embodiment of the present application may correspond to the above three retransmission mechanisms by setting three retransmission timers.
  • the data packet is retransmitted according to the RTO of the corresponding retransmission timer.
  • the retransmission control method provided in the embodiment of the present application can change the RTO for the current network state. Once the current network state changes, it can switch to a more appropriate RTO, thus reducing unnecessary retransmissions and shortening the data packet transmission requirements. Time, saving equipment power consumption and network resources occupied by transmission.
  • FIG. 9 is a schematic diagram of handover of the foregoing three retransmission mechanisms.
  • 1 Acknowledgment is received before the data packet is retransmitted, indicating that the data packet received the acknowledgement of the data packet within the current RTO for the first time.
  • the acknowledgement corresponding to the data packet is the direction in which the receiving end responds to the received data packet The message returned by the sender.
  • the RTO of the first retransmission mechanism that is more adapted to the current network transmission situation will be used as the RTO of the data packet. If the current RTO is the RTO of the first retransmission mechanism, the RTO of the first retransmission mechanism continues to be used. 2 Retransmission of the data packet and receipt of the acknowledgement, which indicates that after a certain retransmission, the data packet has received the acknowledgement of the data packet in the current RTO, where the acknowledgement of the data packet is that the receiving end responds to receiving the data packet The message returned to the sender.
  • the situation described in (2) When the situation described in (2) occurs, it indicates that there may be packet loss in the current network transmission or excessive delay in request message queuing.
  • the current RTO is the RTO of the first retransmission mechanism
  • the RTO of the second retransmission mechanism more suitable for the current network transmission situation is used as the RTO of the data packet.
  • the current RTO is the RTO of the second retransmission mechanism at this time
  • the RTO of the third retransmission mechanism that is more adapted to the current network transmission situation is used. If the current RTO is the RTO of the third retransmission mechanism, it means that the current network transmission congestion has not been alleviated, and the RTO of the third retransmission mechanism is still used.
  • the switching of the retransmission mechanism can also be regarded as the adjustment of the retransmission timer period, which can be the mutual adjustment of the three periods, or it can be changed on the basis of one period.
  • FIG. 10 is a schematic flowchart corresponding to the switching diagram of the three retransmission mechanisms of FIG. 9. 9 and FIG. 10 have the same meanings of 1 or 2, respectively.
  • An embodiment of the present invention provides a retransmission control method (a first retransmission mechanism) shown by a dashed box S1 in FIG. 10.
  • Step S11 the sending end sends the first data packet to the receiving end;
  • Step S12 determine whether an acknowledgement corresponding to the first data packet is received within the first RTO;
  • step S13 If the sender does not receive an acknowledgement corresponding to the first data packet within the first RTO, execute step S13;
  • step S14 is performed if the sender receives an acknowledgement corresponding to the first data packet within the first RTO.
  • the first RTO may be a preset initial RTO, for example, 2s. If the retransmission control device has transmitted a data packet at this time, and the retransmission control device has updated the first RTO according to the method provided in this embodiment, the first RTO mentioned in step S12 is the updated first RTO. .
  • the sender judges whether the acknowledgement corresponding to the first data packet is received in the first RTO after the first transmission (original transmission) of the first data packet, the acknowledgement indicates that the receiver has received the first data packet, in other words, the acknowledgement Refers to the message returned by the receiving end to the sending end after receiving the first data packet, so that the sending end knows that the receiving end has received the first data packet.
  • step S13 If the sender has not received the acknowledgement corresponding to the data packet when the first RTO set by the retransmission timer expires, step S13 is performed.
  • Step S15 if the sender receives an acknowledgement corresponding to the first data packet within the first RTO, then update the first RTO; and update the first One RTO.
  • the first RTO is updated, the period of the retransmission timer is adjusted, and the period of the retransmission timer is adjusted based on the updated The index of the first RTO increases.
  • the first RTO is calculated according to the calculation method of the first RTO in the description corresponding to FIG. 7.
  • the updated first RTO is related to the sending timestamp of the first data packet and the acknowledgement receiving timestamp corresponding to the first data packet. The update of the first RTO has been described in the aforementioned part of FIG. 7, and is not repeated here.
  • the round-trip delay sampling when no retransmission occurs is not ambiguous, and it truly reflects the round-trip delay when the network transmission is smooth. If multiple consecutive data packets are received within the first RTO (or the updated first RTO) after the first data packet, the first RTO may be continuously updated.
  • the data packet can be retransmitted according to the first retransmission mechanism provided by the embodiment of the present invention, that is, the retransmission timer RTO is always set to: an exponential increase based on the first RTO (fast-RTO): fast-RTO , Fast-RTO * K, fast-RTO * K2, fast-RTO * K3, ..., fast-RTO * Ki.
  • K is a number greater than 1, and K may be 2.
  • the sender After the data packet is retransmitted for the i time, the sender does not receive the acknowledgement corresponding to the first data packet within fast-RTO * Ki, and then retransmits the first data packet, where i is a positive integer.
  • This retransmission control method can fully consider the real round-trip delay and avoid unnecessary retransmission of data packets.
  • step S15 may also be performed before step S12. That is, after the sender sends a data packet, the first RTO can be updated when the acknowledgement of the data packet is received in any RTO.
  • Any RTO here can be the value of the initial RTO, the first RTO, the second RTO, or another set RTO.
  • Step S13 if the sender does not receive the acknowledgement corresponding to the first data packet within the first RTO, retransmit the first data packet.
  • the transmitting end After the transmitting end retransmits (retransmits) the first data packet one or more times, it finally receives an acknowledgement corresponding to the first data packet before the RTO set by the retransmission timer expires.
  • the RTO for the first retransmission and the RTO for subsequent retransmissions set by the retransmission timer can be an exponential increase based on the first RTO (fast-RTO): fast-RTO * K, fast-RTO * K2, fast -RTO * K3, ..., fast-RTO * Ki.
  • K is a number greater than 1, and K may be 2.
  • the RTO of the first retransmission and the RTO of subsequent retransmissions may be an exponential increase based on RTO: RTO * K, RTO * K2, RTO * K3, ..., RTO * Ki.
  • K is a number greater than 0, and K may be 2.
  • the sender does not receive the acknowledgement corresponding to the second data packet within RTO * Ki, and then retransmits the second data packet, where i is a positive integer greater than or equal to 2.
  • the RTO may be an RTO calculated according to the first RTO and the second RTO, or may be a preset RTO.
  • the data packet may be retransmitted multiple times until the sender receives an acknowledgement corresponding to the data packet.
  • a maximum number of retransmissions can also be set, and when the number of retransmissions reaches the maximum number of retransmissions, the data packet is abandoned to continue to retransmit.
  • Step S14 Calculate the second RTO
  • the second RTO is related to the acknowledged receiving timestamp corresponding to the first data packet and the sending timestamp of the first data packet. At this time, if the previously calculated second RTO already exists, the second RTO is updated.
  • the second RTO may be calculated according to the round-trip delay when the retransmission occurs, which is calculated by the method of the second RTO in the description corresponding to FIG. 8.
  • the calculated second RTO may be used instead of the original second RTO.
  • the second RTO is a time difference between an acknowledged receiving timestamp corresponding to the first data packet and a sending timestamp of the first data packet;
  • the second RTO is a product of the time difference between the sending timestamp of the first data packet and the acknowledgement receiving timestamp corresponding to the first data packet and the second coefficient, where the value of the second coefficient is greater than zero.
  • the second coefficient may be 1.5.
  • the first RTO is related to the delay when the network transmission is smooth. If no acknowledgment is received within the first RTO, the reason for not receiving the acknowledgment may be congestion in the network transmission, and it may not be just because of the delay. At this time, network transmission conditions may change, and network transmission may be congested.
  • the retransmission control method provided in the embodiment of the present invention can change the retransmission mechanism to adapt to the current network transmission situation, and change from the original first retransmission mechanism to the second retransmission mechanism to flexibly adapt to changes in network transmission conditions. , Reduce unnecessary retransmissions, shorten the time required for data packet transmission.
  • the RTO when the sender sends the next data packet considers the second RTO.
  • the RTO of the retransmission timer can be adjusted to adjust the period of the retransmission timer to the second RTO. That is, after step S14, the method shown in dashed box S2 in FIG.
  • the 10 may be executed: retransmission of the second data packet according to the second RTO, where the second data packet is a data packet sent after the sending end sends the first data packet Specifically, it may refer to a data packet to be sent next after the first data packet is sent, or to a data packet sent after receiving an acknowledgement corresponding to the first data packet.
  • Step S21 the sending end sends a second data packet to the receiving end
  • Step S22 determine whether an acknowledgement corresponding to the second data packet is received within the first RTO;
  • step S23 is performed;
  • step S27 is performed if the sending end receives an acknowledgement corresponding to the second data packet within the first RTO.
  • the sender judges whether a confirmation corresponding to the second data packet is received in the first RTO after the first transmission (original transmission) of the second data packet, the confirmation indicates that the receiving end has received the second data packet, in other words, the confirmation Refers to the message returned by the receiving end to the sending end after receiving the second data packet, so that the sending end knows that the receiving end has received the second data packet.
  • step S23 is performed.
  • Step S27 Update the first RTO according to the sending timestamp of the second data packet and the acknowledged receiving timestamp corresponding to the second data packet;
  • the updated first RTO is calculated according to the calculation method of the first RTO in the description corresponding to FIG. 7.
  • the updated time stamp of the first RTO and the second data packet are sent, and the acknowledgement time corresponding to the second data packet is received. Poke about.
  • a new round-trip delay when no retransmission occurs is calculated according to the sending timestamp of the second data packet and the acknowledged receiving timestamp corresponding to the second data packet, and a new unambiguous RTT sample is obtained.
  • the calculation of the first RTO has been described in the aforementioned part of FIG. 7, and is not repeated here.
  • the round-trip delay sampling when no retransmission occurs is not ambiguous, and it truly reflects the round-trip delay when the network transmission is smooth.
  • the second retransmission mechanism Under the second retransmission mechanism, there is a packet transmission without retransmission, which indicates that the congestion of the network transmission has eased, and it may return to a smoother network transmission state.
  • the currently used second retransmission control method or the RTO of the current retransmission timer cannot well adapt to the current network transmission situation.
  • the current second retransmission mechanism can be converted into the first retransmission mechanism to retransmit
  • the period of the timer is adjusted to the first RTO, and the retransmission timer retransmits according to the exponential increment based on the updated first RTO, realizing the retransmission of the data packets requiring retransmission as soon as possible, and reducing the overall transmission time of the data packets.
  • step S27 the steps of the dashed box S1 in FIG. 10 are performed, that is, steps S11-S15.
  • the RTO used by the retransmission timer is an exponential increase based on the first RTO (fast-RTO): fast-RTO, fast-RTO * K, fast-RTO * K2 , Fast-RTO * K3, ..., fast-RTO * Ki.
  • K is a number greater than 1, and K may be 2.
  • the sender After the i-th retransmission of the data packet, the sender does not receive the acknowledgement corresponding to the data packet within fast-RTO * Ki, then retransmits the data packet, where i is a positive integer.
  • the third data packet is a data packet sent after the sending end sends the second data packet. Specifically, it may refer to the next data packet sent after the second data packet is sent, or it may be sent after receiving the confirmation corresponding to the second data packet. Packet. As shown in Figure 10, S1 and S2 can be converted to each other to flexibly adapt to changes in network transmission conditions, reduce unnecessary retransmissions, and shorten the time required for data packet transmission.
  • Step S23 If the sender within the first RTO does not receive the acknowledgement corresponding to the second data packet, then retransmit the second data packet.
  • the first RTO is used as the RTO for the first transmission (original transmission) of the data packet to avoid unnecessary retransmissions caused by the RTO being less than the actual network delay.
  • the packet is retransmitted for the first time.
  • Step S24 determine whether the sender receives the acknowledgement corresponding to the second data packet in the second RTO;
  • the sender determines whether an acknowledgement corresponding to the second data packet is received in the second RTO after the first retransmission.
  • the RTO of the first retransmission is the second RTO (or slow-RTO).
  • the acknowledgment indicates that the receiving end has received the second data packet.
  • the acknowledgment refers to a message returned by the receiving end to the sending end after receiving the second data packet, so that the sending end knows that the receiving end has received the second data packet. package.
  • step S24 determine whether the sender in the second RTO receives an acknowledgement corresponding to the second data packet.
  • the second RTO is greater than the product of the first RTO and K.
  • K is a number greater than 1. Specifically, K may be 2. That is, the RTO of the first retransmission is the largest of slow-RTO and fast-RTO * K. Value, which is the solution of max (slow-RTO, fast-RTO * K). Taking the maximum value of slow-RTO and fast-RTO * K is to consider the worst case of network transmission to avoid unnecessary retransmissions.
  • step S25 is performed; if the sender receives the confirmation corresponding to the second data packet within the second RTO, step S26 is performed.
  • Step S25 retransmit the second data packet
  • the second data packet is retransmitted for the second time, and after the transmitting end retransmits (retransmits) the second data packet one or more times, it finally receives the confirmation corresponding to the second data packet.
  • the RTO for the second retransmission and the RTO for subsequent retransmissions may be an exponential increase based on the first RTO: fast-RTO * K2, fast-RTO * K3, ..., fast-RTO * Ki.
  • K is a number greater than 1, and K may be 2.
  • the sender does not receive the acknowledgement corresponding to the second data packet within fast-RTO * Ki, and then retransmits the second data packet, where i is a positive integer greater than or equal to 2.
  • the first RTO is used as the RTO of the original transmission of data packet P1. If it is determined that no acknowledgement is received within the first RTO (when the retransmission timer expires), the sender performs P1.
  • Second RTO Second RTO
  • Receive the confirmation that is, when the retransmission timer expires, the sender performs the second retransmission of P1; if the request message requires the third retransmission, the fast-RTO * K2 time is used as the third retransmission RTO, If the sender does not receive an acknowledgement within fast-RTO * K2, the sender performs the fourth retransmission of P1.
  • the RTO for the second retransmission and the RTO for subsequent retransmissions may be an exponential increase based on the RTO: RTO * K2, RTO * K3, ..., RTO * Ki.
  • K is a number greater than 1, and K may be 2.
  • the sender does not receive the acknowledgement corresponding to the second data packet within RTO * Ki, and then retransmits the second data packet, where i is a positive integer greater than or equal to 2.
  • the RTO may be an RTO calculated according to the first RTO and the second RTO, or may be a preset RTO.
  • the data packet may be retransmitted multiple times until the sender receives an acknowledgement corresponding to the data packet.
  • a maximum number of retransmissions can also be set, and when the number of retransmissions reaches the maximum number of retransmissions, the data packet is abandoned to continue to retransmit.
  • the first RTO (fast-RTO) takes into account the true round-trip delay and avoids unnecessary retransmissions. Once the acknowledgement of the original transmission of the data packet is not received in the first RTO, the round-trip delay when retransmission occurs is fully considered to avoid unnecessary retransmission due to the excessive delay caused by network congestion, which can effectively alleviate Network congestion.
  • Step S26 update the second RTO
  • the updated second RTO is related to the acknowledged receiving timestamp corresponding to the second data packet and the sending timestamp of the second data packet. Specifically, the updated second RTO may be calculated according to the round-trip delay when retransmissions are counted according to the calculation method of the second RTO in the foregoing description corresponding to FIG. 8.
  • the calculated second RTO may be used instead of the original second RTO.
  • the second RTO is a time difference between an acknowledged receiving timestamp corresponding to the first data packet and a sending timestamp of the first data packet;
  • the second RTO is a product of the time difference between the sending timestamp of the first data packet and the acknowledgement receiving timestamp corresponding to the first data packet and the second coefficient, where the value of the second coefficient is greater than zero.
  • the second coefficient may be 1.5.
  • the retransmission mechanism is changed to adapt to the current network transmission situation, from the original second retransmission mechanism to the third retransmission mechanism.
  • the RTO of the retransmission timer is adjusted, and the period of the retransmission timer is adjusted to the updated second RTO.
  • the sending end sends a third data packet to the receiving end, and if the sending end does not receive a confirmation corresponding to the third data packet within the second RTO, the sending end retransmits The third packet.
  • the third data packet is a data packet sent after the sending end sends the second data packet. Specifically, it may refer to the next data packet sent after the second data packet is sent, or it may be sent after receiving the confirmation corresponding to the second data packet. Packet.
  • Step S31 the sending end sends a third data packet to the receiving end
  • Step S32 determine whether an acknowledgement corresponding to the third data packet is received in the second RTO;
  • step S33 If the sender does not receive an acknowledgement corresponding to the third data packet within the second RTO, execute step S33;
  • step S35 is performed if the sender receives an acknowledgement corresponding to the third data packet in the second RTO.
  • the sender judges whether the acknowledgement corresponding to the third data packet is received in the second RTO after the first transmission (original transmission) of the third data packet, the acknowledgement indicates that the receiver has received the third data packet, in other words, the acknowledgement Refers to the message returned by the receiving end to the sending end after receiving the third data packet, so that the sending end knows that the receiving end has received the third data packet.
  • step S33 is performed.
  • Step S35 if the sender receives an acknowledgement corresponding to the third data packet in the second RTO, then update the first RTO;
  • the updated first RTO is calculated according to the calculation method of the first RTO in the description corresponding to FIG. 7, the updated first RTO and the sending timestamp of the third data packet and the acknowledgement receiving time corresponding to the third data packet Poke related.
  • the new round-trip delay when no retransmission occurs is calculated according to the sending timestamp of the third data packet and the acknowledged receiving timestamp corresponding to the third data packet, and a new unambiguous RTT sample is obtained.
  • the update of the first RTO has been described in the aforementioned part of FIG. 7, and is not repeated here.
  • the round-trip delay sampling when no retransmission occurs is not ambiguous, and it truly reflects the round-trip delay when the network transmission is smooth.
  • a packet transmission occurs without retransmission, which indicates that the congestion of the network transmission has eased, and it may return to a smoother network transmission state.
  • the currently used third retransmission control method or the currently used RTO cannot be well adapted to the current network transmission situation.
  • the current third retransmission mechanism can be converted into the first retransmission mechanism, and the retransmission timer The period is adjusted to the updated first RTO, and an index backoff based on the updated first RTO is implemented to retransmit the data packets that need to be retransmitted as soon as possible, reducing the overall transmission time of the data packets.
  • step S35 the steps of the dashed box S1 in FIG. 10 may be performed, that is, steps S11-S15.
  • the RTO used is an exponential increase based on the first RTO (fast-RTO): fast-RTO, fast-RTO * K, fast-RTO * K2, fast-RTO * K3, ..., fast-RTO * Ki.
  • K is a number greater than 1, and K may be 2.
  • the sender does not receive the acknowledgement corresponding to the data packet within fast-RTO * Ki, then retransmits the data packet, where i is a positive integer.
  • the fourth data packet is a data packet sent after the sender sends the third data packet. Specifically, it may refer to the next data packet sent after the third data packet is sent, or it may refer to the receipt of the third data packet. After sending the packet.
  • This RTO conversion can be flexibly adapted to changes in network transmission conditions, reduce unnecessary retransmissions, and shorten the time required for data packet transmission.
  • Step S33 If the sender does not receive an acknowledgement corresponding to the third data packet in the second RTO, the third data packet is retransmitted.
  • the transmitting end After the transmitting end retransmits (retransmits) the third data packet one or more times, it finally receives an acknowledgement corresponding to the first data packet.
  • the RTO for the first retransmission and the RTO for subsequent retransmissions can be an exponential increase based on the first RTO (fast-RTO): fast-RTO * K, fast-RTO * K2, fast-RTO * K3, ... , Fast-RTO * Ki.
  • K is a number greater than 1, and K may be 2.
  • the sender After the i-th retransmission of the data packet, the sender does not receive the acknowledgement corresponding to the first data packet within fast-RTO * Ki, then retransmits the first data packet, where i is a positive integer, and the RTO is fast-RTO * Ki.
  • the RTO of the first retransmission and the RTO of subsequent retransmissions may be an exponential increase based on RTO: RTO * K, RTO * K2, RTO * K3, ..., RTO * Ki.
  • K is a number greater than 1, and K may be 2.
  • the sender does not receive the acknowledgement corresponding to the second data packet within RTO * Ki, and then retransmits the second data packet, where i is a positive integer.
  • the RTO may be an RTO calculated according to the first RTO and the second RTO, or may be a preset RTO.
  • the sender After the sender sends a data packet for the first time, the sender does not receive an acknowledgement within the second RTO, the sender retransmits the data packet for the first time; the RTO of the first retransmission is fast-RTO * K. After the data packet is retransmitted for the first time, no acknowledgement is received in fast-RTO * K, the sender retransmits the data packet for the second time; the RTO for the second retransmission is fast-RTO * K2. After the data packet is retransmitted for the second time and no acknowledgement is received within fast-RTO * K2, the sending end retransmits the data packet for the third time.
  • the third data packet is retransmitted.
  • Step S34 update the second RTO
  • the updated second RTO is related to the acknowledged receiving timestamp corresponding to the third data packet and the sending timestamp of the third data packet. Specifically, the updated second RTO may be calculated according to the round-trip delay when retransmissions are counted according to the calculation method of the second RTO in the foregoing description corresponding to FIG. 8.
  • the calculated second RTO may be used instead of the original second RTO.
  • the second RTO is a time difference between the acknowledged receiving timestamp corresponding to the third data packet and the sending timestamp of the third data packet;
  • the second RTO is a product of the time difference between the sending timestamp of the third data packet and the acknowledged receiving timestamp corresponding to the third data packet and the second coefficient, where the value of the second coefficient is greater than zero.
  • the second coefficient may be 1.5.
  • the retransmission of the request message still occurred under the third retransmission mechanism.
  • the network congestion situation could not be alleviated. It indicates that the current network congestion is still serious, which indicates that the network congestion situation has not been alleviated, continuous packet loss or high queuing delay occurs, and a third retransmission mechanism needs to be maintained to adjust the retransmission timer period to the updated second RTO.
  • the period of the retransmission timer is adjusted to the updated first RTO. That is, the retransmission control is continued according to steps S31-S35 shown in the dashed box S3 in FIG.
  • the sending end sends a fourth data packet to the receiving end. If the sending end does not receive the fourth data in the updated second RTO If the packet is acknowledged, the sender retransmits the fourth data packet.
  • the fourth data packet is a data packet sent after the sender sends the third data packet. Specifically, it may refer to the next data packet sent after the third data packet is sent, or it may refer to the receipt of the third data packet. After sending the packet. .
  • the sender sends data packet P1 to the receiver, and the receiving unit of the sender receives the acknowledgement of P1 before the retransmission timer expires.
  • the RTO used for retransmission here can be the first or second or third retransmission.
  • the RTO of the transmission mechanism can also be the initial RTO during initialization.
  • the first RTO may be updated according to the round-trip delay when no retransmission occurs, and the period of the retransmission timer may be adjusted to the updated first RTO.
  • the sender After switching to the first retransmission mechanism, the sender sends data packet P2 to the receiver. The sender does not receive the acknowledgement from P2 before the retransmission timer expires.
  • the retransmission timer timeout refers to the time stamp after the sending of P2.
  • the time difference to the current timestamp is greater than the first RTO.
  • the sender receives P2's acknowledgement after retransmitting P2 twice, that is, the situation described in 2 in Fig. 9 occurs: if the acknowledgement message is received after retransmission occurs, the current network transmission situation applies to the second retransmission mechanism, Then switch from the current first retransmission mechanism to the second retransmission mechanism.
  • the second RTO can be calculated according to the round-trip delay when retransmission occurs, the period of the retransmission timer is adjusted to the second RTO, and subsequent data packet transmission is retransmitted in accordance with the second RTO.
  • the sender After switching to the second retransmission mechanism, the sender sends data packet P3 to the receiver.
  • the sender receives the acknowledgement of P3 before the retransmission timer expires (within the first RTO), that is, the situation described by 1 in Figure 9 occurs : If the acknowledgment is received after the first transmission, the current network transmission conditions are applicable to the first retransmission mechanism, and then the current second retransmission mechanism is switched to the first retransmission mechanism.
  • the first RTO may be updated according to the round-trip delay when no retransmission occurs, and the period of the retransmission timer may be adjusted to the updated first RTO.
  • the data packets P4 and P5 that the sender sends to the receiver receive acknowledgments before the retransmission timer expires (within the first RTO), that is, the situation described by 1 in Figure 9 occurs :
  • the acknowledgement is received after the first transmission, so the first retransmission mechanism is maintained.
  • the first RTO may be updated according to the round-trip delay when no retransmission occurs, and the period of the retransmission timer may be adjusted to the updated first RTO.
  • the data packet P6 sent by the sending end to the receiving end is not received before the retransmission timer expires, the retransmission is performed, and therefore the first retransmission mechanism is switched to the second retransmission mechanism again.
  • the sender in FIG. 11 receives the acknowledgement corresponding to data packet P6.
  • the sender sends data packet P7 to the receiver, and the sender does not receive it before the retransmission timer expires (within the first RTO).
  • Confirmation of P7, here RTO is the RTO set by the second retransmission mechanism.
  • the sender receives the acknowledgement of P7 after retransmitting P7 twice, that is, the situation described in 2 in Fig.
  • the second RTO may be updated according to the round-trip delay when the retransmission occurs, and the period of the retransmission timer may be adjusted to the updated second RTO.
  • the sender After switching to the third retransmission mechanism, the sender sends a data packet P8 to the receiver.
  • the sender receives the confirmation message of P8 before the retransmission timer expires (within the second RTO). : If a confirmation is received after a retransmission occurs, the current network transmission situation is still applicable to the third retransmission mechanism, and the second RTO is updated based on the round-trip delay when the retransmission occurs, and the period of the retransmission timer is adjusted to be updated Second RTO.
  • the sender sends a request message P9 to the receiver.
  • the sender receives the acknowledgement of P9 before the retransmission timer expires (within the second RTO).
  • the first RTO may be updated according to the round-trip delay when no retransmission occurs, the period of the retransmission timer is adjusted to the updated first RTO, and subsequent retransmissions are performed according to the RTO set by the first retransmission mechanism.
  • the embodiment of the present application provides a data transmission method, which can determine whether the acknowledgement is in response to the original transmission of a received data packet or a certain retransmission of a received data packet, which is beneficial to obtaining data packets when sending retransmissions. Round-trip delay, so that the second RTO can also be accurately calculated when the network is congested or lost for retransmission.
  • FIG. 13 The process of the data transmission method provided in the embodiment of the present application is shown in FIG. 13 and specifically includes the following steps:
  • Step 41 The sending end sends a data packet to the receiving end, and the data packet carries a retransmission sequence number, and the retransmission sequence number is used to indicate the number of times the data packet is sent.
  • the data packet includes an extension field, and the extension field carries a retransmission sequence number; the extension field can be called a retransmission count option, and the retransmission count option can be used to distinguish whether the acknowledgement is in response to the original transmitted data packet or in response to A retransmitted packet.
  • the retransmission count option cannot be used in empty messages or reset messages because some protocols such as the COAP protocol do not allow options to be added to empty messages.
  • the format of the retransmission count option is shown in Figure 14 and can be named rexmit-cnt.
  • the value of the retransmission count option is a variable-size unsigned integer.
  • the length can be 0 to 1 byte, and 1 byte is recommended.
  • the field number of rexmit-cnt can be the corresponding corresponding field.
  • the retransmission count option can appear in both request and acknowledge messages. When the retransmission count option appears in the request message, it indicates the sequence number indicating the transmission of the request message or the transmission sequence of the request message.
  • the retransmission sequence number N may be X, and specifically, may be represented by the number 0.
  • the original transmission of the request message can be sent to the receiving end with the number 255 (0xFF) and can be interpreted as the original transmission of the number 0.
  • the retransmission sequence number is in an existing field in the data packet, for example, in the extended semantics of the token field in the data packet.
  • the token is a local identifier. The sender can use different token values to distinguish the original transmission of the request message from multiple retransmissions.
  • the retransmission sequence number is used to indicate the number of times a data packet is sent. Specifically, for the same data packet, the retransmission sequence number carried when the data packet is first sent (original transmission) is different from the retransmission sequence number carried each time the data packet is retransmitted, and the retransmission carried during different retransmissions is different The serial number is also different.
  • the retransmission sequence number carried during data packet transmission / retransmission needs to be globally unique, that is, the retransmission sequence number carried in the request message sent for the first time is different from the retransmission sequence number carried in the request message retransmitted during multiple retransmissions .
  • the retransmission sequence number can be a monotonically increasing or monotonically decreasing or proportionally increasing value.
  • the retransmission sequence number carried in the data packet is increased by one.
  • the retransmission sequence number carried in the request message is X + 1.
  • the retransmission sequence number carried in the data packet is X + 2.
  • the sending end stores a timestamp when the request message is first sent and a timestamp each time the request message is retransmitted.
  • the timestamp T1 is sent for the first time
  • timestamps T2 and T3 for the first retransmission and the second retransmission.
  • Step 42 The receiving end receives a data packet sent by the sending end, and the receiving end returns a confirmation corresponding to the data packet to the sending end, and the confirmation carries a retransmission sequence number that is the same as the retransmission sequence number of the corresponding data packet;
  • the acknowledgement returned by the receiving end carries the same retransmission sequence number as the retransmission sequence number carried in the received data packet. . If the receiving end wants to return with an empty acknowledgement, the receiving end carries the retransmission sequence number in the confirmation of the data packet returned later.
  • Step 43 The sender receives the acknowledgement returned by the receiver, and the acknowledgement carries the same retransmission sequence number as the retransmission sequence number of the data packet corresponding to the acknowledgement.
  • the second RTO is the time difference between the receiving timestamp of the acknowledgement received by the sending end and the sending timestamp of the data packet corresponding to the acknowledgement.
  • the sender uses the retransmission sequence number carried in the acknowledgment to find the sending time stamp of the data packet with the same retransmission sequence number as the acknowledgment. For example, as shown in Figure 13, when the sender receives the acknowledgement of P2, the retransmission sequence number carried in the acknowledgement is X + 2, and X + 2 is the retransmission sequence number of the second retransmitted data packet. Acknowledgement returned on receipt of the second retransmitted packet. If the receiving end receives the acknowledged receiving timestamp as T4, the value of the obtained RTT sample is the time difference between the acknowledged receiving timestamp and the sending timestamp of the second retransmitted data packet. The obtained RTT sample is the aforementioned round-trip delay when retransmission occurs, and can be used for calculation and update of the second RTO.
  • the sender will know whether the receiver supports (realizable) the retransmission sequence number. If the acknowledgement of the data packet sent by the receiving end during the initialization carries the retransmission sequence number, the transmitting end learns that the receiving end supports the retransmission sequence number, and will carry the retransmission sequence number when subsequently transmitting the data packet.
  • the original transmission of the data packet can carry the retransmission sequence number 0. Specifically, a zero-byte integer can be sent according to the CoAP encoding rules. If the accepted acknowledgement does not include the retransmission sequence number, the sender may suspend adding the retransmission sequence number to the data packet and send it to the receiver. If the data packet sent by the sender does not carry the retransmission sequence number, but the received acknowledgement carries the retransmission sequence number, then the sender needs to ignore the retransmission sequence number in the acknowledgement.
  • the current second RTO is calculated by using the retransmission sequence number, it needs to be compared with the RTT sample value obtained in the previous packet transmission when the retransmission occurred, and the current calculated second RTO and the previous RTT sample value are taken. The maximum value is used as the latest second RTO. If there is no previous RTT sample available (for example, the receiver returns an empty acknowledgement), then the currently calculated second RTO is used directly as the second RTO.
  • an embodiment of the present application further provides an electronic device 300.
  • the electronic device 300 includes a sending unit 301, a computing unit 302, and a receiving unit 303.
  • the sending unit 301 is configured to send a data packet to the receiving end, and is also used to retransmit the data packet to the receiving end; specifically, it may be used to perform steps S11, S13, S21, S23, S25, S31, S33, and S34 in the foregoing embodiment. .
  • the calculation unit 302 is used to update the first RTO and is also used to calculate or update the second RTO; specifically, it may be used to execute steps S14, S15, S26, S27, and S35 in the foregoing embodiment.
  • the receiving unit 303 is configured to receive an acknowledgement corresponding to a data packet, where the acknowledgement is information sent by the receiving end in response to receiving the data packet.
  • an embodiment of the present application further provides a communication interface including an input / output port and a processor, and the processor may implement the retransmission control method provided by any one or more of the foregoing embodiments.
  • an embodiment of the present application further provides an electronic device including the foregoing communication interface, so that the electronic device can implement the retransmission control method provided by any one or more of the foregoing embodiments.
  • an embodiment of the present application further provides a computer storage medium.
  • the storage medium stores computer instructions, and the computer instructions can implement any one or more of the foregoing when read and executed by one or more processors.
  • the computer storage medium may include: a U disk, a mobile hard disk, a read-only memory, a random access memory, a magnetic disk, or an optical disk, and other media that can store program codes or computer instructions.
  • this application provides a computer program product.
  • the computer program product includes computer instructions.
  • the processor causes the processor to execute the retransmission control method provided by any one or more of the foregoing embodiments.
  • this application may be provided as a method, a system, or a computer program product. Therefore, this application may take the form of an entirely hardware embodiment, an entirely software embodiment, or an embodiment combining software and hardware aspects. Moreover, this application may take the form of a computer program product implemented on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, etc.) containing computer-usable program code.
  • computer-usable storage media including, but not limited to, disk storage, CD-ROM, optical storage, etc.
  • These computer program instructions may also be stored in a computer-readable memory capable of directing a computer or other programmable data processing device to work in a specific manner such that the instructions stored in the computer-readable memory produce a manufactured article including an instruction device, the instructions
  • the device implements the functions specified in one or more flowcharts and / or one or more blocks of the block diagram.
  • These computer program instructions can also be loaded onto a computer or other programmable data processing device, so that a series of steps can be performed on the computer or other programmable device to produce a computer-implemented process, which can be executed on the computer or other programmable device.
  • the instructions provide steps for implementing the functions specified in one or more flowcharts and / or one or more blocks of the block diagrams.

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本申请实施例提供了一种重传控制方法、通信接口及电子设备,当发送端向接收端发送的第一数据包在第一RTO内未接收到第一数据包的对应的确认时,根据第二RTO进行第二数据包的重传,第二数据包为发送端发送第一数据包后发送的数据包,第二RTO与第一数据包对应的确认的接收时间戳,以及第一数据包的发送时间戳相关。本申请实施例提供的重传控制方法,可以避免不必要的重传,从而缩短数据包的传输时间,节省设备功耗与占用的网络资源。

Description

重传控制方法、通信接口和电子设备
本申请要求于2018年7月2日提交中国国家知识产权局、申请号为201810710158.6、申请名称为“重传控制方法、通信接口和电子设备”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本发明实施例涉及通信领域,并且更具体地涉及数据传输的方法和设备。
背景技术
随着低功耗广域网技术的发展和普及,物联网(IOT,Internet of Things)从一般的局域网应用扩展到大规模广泛部署。IOT设备可以发送数据到云端,云端也可以主动搜集IOT设备的数据,控制远程的IOT设备。物联网需要一个可靠的传输协议及其重传控制算法。但是对于物联网而言,物联网的底层数据连接特别容易受到干扰,因此产生的误码及丢包率会比较高;其次,IOT设备往往都有低功耗的要求,过多的重传会消耗设备的功耗,影响IOT设备的在网服务时间。从标准技术发展的角度来看,IETF制定了受限制应用协议(CoAP,constrained application protocol),COAP协议是一种可以适用于IOT设备的应用层协议,可运行在用户数据报协议(UDP,user datagram protocol)之上,由于UDP协议没有重传控制机制,COAP协议需设计重传控制机制,使得发送端向接收端发送数据包后,若在超时重传时间(RTO,retransmission timeout)内未收到接收端发送的确认时,发送端可重传该数据包。RFC7252为设计的重传控制机制简单地设置RTO初始为2s,后续依次的RTO为4s,8s,16s,32s,最多重传4次。简单CoAP拥塞控制算法(COCOA,CoAP Simple Congestion Control/Advanced)提供的重传控制机制,COCOA设置的RTO基于往返时延(RTT,round-trip time)的估值,考虑网络时延的因素。RTO依次设置为T,K*T,K2*T,K3*T,K4*T…,基于K的指数进行退避。参数K为根据场景动态调整的参数,K可以为1.5、2或3,T为根据RTT的取样计算出的时间。COCOA相比RFC7252激进一些,会一定程度地提升端云传输的性能。但是这两种重传机制可能因为不必要的重传而增加数据包在端到端之间的传输时间,造成对网络资源和设备功耗的浪费。
发明内容
本申请实施例提供一种重传控制方法、通信接口及电子设备,用于减少不必要的重传,缩短数据包在端到端之间的传输时间,节省网络资源和设备功耗。
为达到上述发明目的,第一方面,本申请实施例提供了一种重传控制方法,该方法包括:
发送端向接收端发送第一数据包;若发送端在第一超时重传时间RTO内未接收到第一数据包对应的确认,其中,确认指示接收端已接收到第一数据包,则执行如下步骤:
发送端重传第一数据包,并计算第二超时重传时间RTO,第二RTO与第一数据包对应的确认的接收时间戳,以及第一数据包的发送时间戳相关;换句话说,根据第一数据包对应的确认的接收时间戳,以及第一数据包的发送时间戳计算第二RTO。根据第二RTO进行第二数据包的重传;其中,第二数据包为发送端发送第一数据包后发送的数据包。其中,数据包对应的确认指接收端响应于接收到该数据包而向发送端返回的确认。
当发送端在第一RTO内未收到第一数据包对应的确认时,未及时收到确认可能不是因为时延导致,可能因为网络中已经出现了拥塞。根据第二RTO进行接下来的第二数据包的重传,而第二RTO是根据发生重传时的往返时延计算出的值,重传计时器的周期的设置考虑到第二RTO,也就是考虑到当前较差的网络传输的时延,相比于继续使用第一RTO为基础的指数递增作为RTO,可以避免不必要的重传,缩短数据包传输时间,节省网络资源和设备功耗。
在一种可能的实现方式中,若发送端在第一RTO内接收到第一数据包对应的确认,则发送端根据第一数据包的发送时间戳以及第一数据包对应的确认的接收时间戳更新第一RTO;若发送端在更新后的第一RTO内未接收到第二数据包对应的确认,则发送端重传第二数据包,其中,第二数据包为发送端发送第一数据包后发送的数据包。
在一种可能的实现方式中,根据第二RTO进行重传包括:
若发送端在第一RTO内未接收到第二数据包对应的确认,则发送端重传第二数据包;
若发送端在第二RTO内未接收到第二数据包对应的确认,则再次重传第二数据包。
在发送端首次发送第二数据包时,考虑第一RTO,即网络中的时延,可以避免因RTO设置的小于网络中的时延而带来的不必要的重传;将第一次重传的RTO设置为第二RTO,则考虑了网络传输较差的情况,避免因RTO设置过短导致的不必要重传,缩短数据包传输时间,节省网络资源和设备功耗。
在一种可能的实现方式中,根据第二RTO进行重传包括:
若发送端在第一RTO内未接收到第二数据包对应的确认,则发送端重传第二数据包;
若发送端在第二RTO内未接收到第二数据包对应的确认,则再次重传第二数据包,其中第二RTO大于第一RTO与第一系数的乘积,其中,第一系数的值大于1。具体的,第一系数的值为2。
发送端发送第一数据包时重传计时器的周期为第一RTO的指数递增,即第一RTO、第一RTO*K、第一RTO*K2、…、第一RTO*Ki。在发送端首次发送第二数据包时,考虑第一RTO,即网络中的时延,可以避免因RTO设置的小于网络中的时延而带来的不必要的重传。对于第将第一次重传的第二数据包,此时的RTO取值为第二RTO与第一RTO*K的最大值,K就是第一系数。将两者中最大值设置为第二RTO,则考虑了当前网络传输最差的情况,避免因RTO设置过短导致的不必要重传,缩短数据包传输时间,节省网络资源和设备功耗。
在一种可能的实现方式中,该方法还包括:若发送端在第一RTO*K2内未接收到第二数据包对应的确认,则第三次重传第二数据包;按照此规律,若发送端在第一RTO* Ki内未接收到第二数据包对应的确认,则第i+1次重传第二数据包。i为大于或等于0的整数。
在一种可能的实现方式中,该方法还包括:
若发送端在第一RTO内接收到第二数据包对应的确认,则执行如下步骤:
发送端根据第二数据包的发送时间戳以及第二数据包对应的确认的接收时间戳更新第一RTO;若发送端在更新后的第一RTO内未接收到第三数据包对应的确认,则发送端重传第三数据包,其中,第三数据包为发送端发送第二数据包后发送的数据包。
发送端在第一RTO内收到第二数据包的确认,表明网络传输的拥塞情况有所缓解,可能又回到了较顺畅的网络传输状态。此时将重传计时器的周期调整为第一RTO,重传计时器根据更新后的第一RTO为基础的指数递增进行重传,实现对需要重传的数据包尽快的重传,减少数据包整体传输时间。
在一种可能的实现方式中,该方法还包括:
更新第二RTO,更新后的第二RTO与第二数据包对应的确认的接收时间戳,以及第二数据包的发送时间戳相关;
若发送端在第二RTO内未接收到第三数据包对应的确认,发送端重传第三数据包,其中,第三数据包为发送端发送第二数据包后发送的数据包。
发送端在第一RTO内未收到第二数据包的确认,表明网络传输状态未得到缓解,可能出现拥塞情况,因此将重传计时器的周期调整为第二RTO,此时第三数据包首次发送后的超时重传时间为第二RTO,第二RTO可以带来较长的等待时间来等待网络传输状况缓解,避免因RTO设置过短导致的不必要重传,缩短数据包传输时间,节省网络资源和设备功耗。
在一种可能的实现方式中,该方法还包括:
若发送端在第二RTO内接收到第三数据包对应的确认,则执行如下步骤:
发送端根据第三数据包的发送时间戳以及第三数据包对应的确认的接收时间戳更新第一RTO;
若发送端在更新后的第一RTO内未接收到第四数据包对应的确认,则发送端重传第四数据包,其中,第四数据包为发送端发送第三数据包后发送的数据包。
发送端在第一RTO内收到第三数据包的确认,表明网络传输的拥塞情况有所缓解,可能又回到了较顺畅的网络传输状态。此时将重传计时器的周期调整为第一RTO,重传计时器根据更新后的第一RTO为基础的指数递增进行重传,实现对需要重传的数据包尽快的重传,减少数据包整体传输时间。
在一种可能的实现方式中,该方法还包括:
更新第二RTO(Slow RTO),更新后的第二RTO与第三数据包对应的确认的接收时间戳,以及第三数据包的发送时间戳相关;
若发送端在更新后的第二RTO内未接收到第四数据包对应的确认,则发送端重传第四数据包,其中,第四数据包为发送端发送第三数据包后发送的数据包。
在一种可能的实现方式中,第二RTO为第一数据包对应的确认的接收时间戳与第一数据包的发送时间戳的时间差。
在一种可能的实现方式中,第二RTO为第一数据包的发送时间戳与第一数据包对 应的确认的接收时间戳的时间差与第二系数的乘积,第二系数的值大于0。具体的,第二系数的值可以为1.5。
在一种可能的实现方式中,第一数据包中携带重传序号,重传序号指示第一数据包被发送的次数,发送端接收到的确认中携带与确认对应的第一数据包的重传序号相同的重传序号;第二RTO为发送端接收到的确认的接收时间戳与确认对应的第一数据包的发送时间戳的时间差。其中,确认对应的数据包为接收端接收到的数据包,该数据包可能是首次发送的数据包,也可能是重传的数据包。则确认对应的数据包的发送时间戳可以为数据包的首次发送的发送时间戳,也可以为数据包重传时的发送时间戳。
在数据包中携带重传序号,可以根据确认中携带的重传序号区分该确认是响应于什么时间发送/重传的数据包。能够更为准确的计算发生重传时的往返时延,从而可以计算出更准确的第二RTO。
在一种可能的实现方式中,第一数据包中携带重传序号,重传序号指示第一数据包被发送的次数,发送端接收到的确认中携带与确认对应的第一数据包的重传序号相同的重传序号;第二RTO为发送端接收到的确认的接收时间戳与确认对应的第一数据包的发送时间戳的时间差与第二系数的乘积,第二系数的值大于0。具体的,第二系数的值可以为1.5。
在一种可能的实现方式中,第一数据包中包含扩展字段,扩展字段中包括重传序号。
在一种可能的实现方式中,重传序号在第一数据包中的令牌字段中。
第二方面,本申请实施例提供了一种电子设备,该电子设备包括发送单元、计算单元和接收单元,其中:
发送单元用于向接收端发送第一数据包;还用于当接收单元在第一RTO内未接收到第一数据包对应的确认时重传第一数据包,确认指示接收端已接收到第一数据包;还用于根据第二RTO进行第二数据包的重传,其中第二数据包为发送单元发送第一数据包后发送的数据包;
计算单元用于计算第二RTO,第二RTO与第一数据包对应的确认的接收时间戳,以及第一数据包的发送时间戳相关;
接收单元用于接收第一数据包对应的确认。
在一种可能的实现方式中,
计算单元还用于根据第一数据包的发送时间戳以及确认的接收时间戳更新第一RTO;
发送单元还用于向接收端发送第二数据包;还用于当接收单元在第一RTO内接收到第一数据包对应的确认,且接收单元在更新后的第一RTO内未接收到第二数据包对应的确认时,重传第二数据包。
接收单元还用于接收第一数据包对应的确认;
在一种可能的实现方式中,发送单元用于:当接收单元在第一RTO内未接收到第二数据包对应的确认时,重传第二数据包;当接收单元在第二RTO内未接收到第二数据包对应的确认时,再次重传第二数据包;
接收单元还用于接收第二数据包对应的确认。
在一种可能的实现方式中,发送单元用于:当接收单元在第一RTO内未接收到第二数据包对应的确认时,重传第二数据包;当接收单元在第二RTO内未接收到第二数据包对应的确认时,再次重传第二数据包,其中第二RTO大于第一RTO与第一系数的乘积,第一系数的值大于1。具体的,第一系数的值可以为2
在一种可能的实现方式中,计算单元还用于根据第二数据包的发送时间戳以及第二数据包对应的确认的接收时间戳更新第一RTO;
发送单元还用于当接收单元在第一RTO内接收到第二数据包对应的确认且接收单元在更新后的第一RTO内未接收到第三数据包对应的确认时,重传第三数据包;其中第三数据包为发送单元发送第二数据包后发送的数据包;
接收单元还用于接收第三数据包对应的确认。
在一种可能的实现方式中,计算单元还用于更新第二RTO,更新后的第二RTO与第二数据包对应的确认的接收时间戳,以及第二数据包的发送时间戳相关;
发送单元还用于当接收单元在第二RTO内未接收到第三数据包对应的确认时,重传第三数据包;其中第三数据包为发送单元发送第二数据包后发送的数据包。
在一种可能的实现方式中,计算单元还用于根据第三数据包的发送时间戳以及第三数据包对应的确认的接收时间戳更新第一RTO;
发送单元还用于当接收单元在第二RTO内接收到第三数据包对应的确认且接收单元在更新后的第一RTO内未接收到第四数据包对应的确认时,重传第四数据包;其中第四数据包为发送单元发送第三数据包后发送的数据包;
接收单元还用于接收第四数据包对应的确认。
在一种可能的实现方式中,计算单元还用于更新第二RTO,更新后的第二RTO与第三数据包对应的确认的接收时间戳,以及第三数据包的发送时间戳相关;
发送单元还用于当接收单元在更新后的第二RTO内未接收到第四数据包对应的确认时,重传第四数据包;其中第四数据包为发送单元发送第三数据包后发送的数据包;
接收单元还用于接收第四数据包对应的确认。
在一种可能的实现方式中,第二RTO为第一数据包对应的确认的接收时间戳与第一数据包的发送时间戳的时间差。
在一种可能的实现方式中,第二RTO为第一数据包的发送时间戳与第一数据包对应的确认的接收时间戳的时间差与第二系数的乘积,第二系数的值大于0。具体的,第二系数的值可以为1.5。
在一种可能的实现方式中,第一数据包中携带重传序号,重传序号指示第一数据包被发送的次数,接收单元接收到的确认中携带与确认对应的第一数据包的重传序号相同的重传序号;第二RTO为接收单元接收到的确认的接收时间戳与确认对应的第一数据包的发送时间戳的时间差。
在一种可能的实现方式中,第一数据包中携带重传序号,重传序号指示第一数据包被发送的次数,接收单元接收到的确认中携带与确认对应的第一数据包的重传序号相同的重传序号;第二RTO为接收单元接收到的确认的接收时间戳与确认对应的第一数据包的发送时间戳的时间差与第二系数的乘积,第二系数的值大于0。具体的,第 二系数的值可以为1.5。
在一种可能的实现方式中,第一数据包中包含扩展字段,扩展字段中包括重传序号。
在一种可能的实现方式中,重传序号在第一数据包中的令牌字段中。
第三方面,本申请实施例提供了一种电子设备,包括:处理器、存储器、重传计时器和通信接口。其中,重传计时器的周期为第一RTO,存储器中存储有协议栈程序,处理器执行该协议栈程序,以用于:
通过通信接口向接收端发送第一数据包;
当重传计时器超时,且通信接口未接收到指示第一数据包已被接收端接收的确认时,通过通信接口重传第一数据包,并将重传计时器的周期调整为第二RTO,该第二RTO与第一数据包对应的确认的接收时间戳,以及第一数据包的发送时间戳相关;根据第二RTO通过通信接口进行第二数据包的重传,其中第二数据包为通过通信接口发送第一数据包后发送的数据包。
在一种可能的实现方式中,重传计时器的周期为第一RTO和第二RTO,处理器执行该协议栈程序,以用于:
当重传计时器超时,且通信接口未接收到指示第二数据包已被接收端接收的确认时,通过通信接口重传第二数据包;
当重传计时器再次超时,且通信接口未接收到指示第二数据包已被接收端接收的确认时,则通过通信接口再次重传第二数据包。
在一种可能的实现方式中,重传计时器的周期为第一RTO和第二RTO,其中第二RTO大于第一RTO与第一系数的乘积,该第一系数的值大于1,处理器执行该协议栈程序,以用于:
当重传计时器超时,且通信接口未接收到指示第二数据包已被接收端接收的确认时,通过通信接口重传第二数据包;
当重传计时器再次超时,且通信接口未接收到指示第二数据包已被接收端接收的确认时,则通过通信接口再次重传第二数据包。具体的,第一系数的值可以为2。
在一种可能的实现方式中,重传计时器的周期为第一RTO,当重传计时器未超时,且通信接口接收到指示第二数据包已被接收端接收的确认时,处理器执行该协议栈程序,还用于:
根据第二数据包的发送时间戳以及第二数据包对应的确认的接收时间戳更新第一RTO;
将重传计时器的周期调整为更新后的第一RTO;当重传计时器超时,且通信接口未接收到第三数据包对应的确认时,则通过通信接口重传第三数据包,其中,第三数据包为通过通信接口发送第二数据包后发送的数据包。
在一种可能的实现方式中,处理器执行该协议栈程序,还用于:
更新第二RTO,更新后的第二RTO与第二数据包对应的确认的接收时间戳,以及第二数据包的发送时间戳相关;
将重传计时器的周期调整为第二RTO,当重传计时器超时,且通信接口未接收到第三数据包对应的确认时,通过通信接口重传第三数据包,其中,第三数据包为通过 通信接口发送第二数据包后发送的数据包。
在一种可能的实现方式中,重传计时器的周期为第二RTO,当重传计时器未超时,且通信接口接收到指示第三数据包已被接收端接收的确认时,处理器执行该协议栈程序,还用于:
根据第三数据包的发送时间戳以及第三数据包对应的确认的接收时间戳更新第一RTO;
将重传计时器的周期调整为更新后的第一RTO;当重传计时器超时,且通信接口未接收到第四数据包对应的确认,则通过通信接口重传第四数据包;其中,第四数据包为通过通信接口发送第三数据包后发送的数据包。
在一种可能的实现方式中,处理器执行该协议栈程序,还用于:
更新第二RTO,更新后的第二RTO与第三数据包对应的确认的接收时间戳,以及第三数据包的发送时间戳相关;
将重传计时器的周期调整为更新后的第二RTO;当重传计时器超时,且通信接口未接收到第四数据包对应的确认,则通过通信接口重传第四数据包;其中,第四数据包为通过通信接口发送第三数据包后发送的数据包。
在一种可能的实现方式中,第二RTO为第一数据包对应的确认的接收时间戳与第一数据包的发送时间戳的时间差。
在一种可能的实现方式中,第二RTO为第一数据包的发送时间戳与第一数据包对应的确认的接收时间戳的时间差与第二系数的乘积,第二系数的值大于0。
在一种可能的实现方式中,第一数据包中携带重传序号,重传序号指示第一数据包被发送的次数,通信接口接收到的确认中携带与确认对应的数据包的重传序号相同的重传序号;第二RTO为通信接口接收到的确认的接收时间戳与确认对应的数据包的发送时间戳的时间差。
在一种可能的实现方式中,第一数据包中携带重传序号,重传序号指示第一数据包被发送的次数,通信接口接收到的确认中携带与确认对应的数据包的重传序号相同的重传序号;第二RTO为通信接口接收到的确认的接收时间戳与确认对应的数据包的发送时间戳的时间差与第二系数的乘积,第二系数的值大于0。具体的,第二系数的值可以为1.5。
在一种可能的实现方式中,第一数据包中包含扩展字段,扩展字段中包括重传序号。
在一种可能的实现方式中,重传序号在第一数据包中的令牌字段中。
第四方面,本申请实施例提供了一种通信接口,包括输入/输出端口和处理器,
处理器用于通过输入/输出端口向接收端发送第一数据包;
当输入/输出端口在第一RTO内未接收到第一数据包对应的确认时,确认指示接收端已接收到第一数据包,则处理器执行如下步骤:
通过输入/输出端口重传第一数据包,并计算第二RTO,第二RTO与第一数据包对应的确认的接收时间戳,以及第一数据包的发送时间戳相关;
根据第二RTO通过输入/输出端口进行第二数据包的重传,其中第二数据包为通过输入/输出端口发送第一数据包后发送的数据包。
在一种可能的实现方式中,处理器用于:
当输入/输出端口在第一RTO内未接收到第二数据包对应的确认时,则通过输入/输出端口重传第二数据包;
当输入/输出端口在第二RTO内未接收到第二数据包对应的确认时,则通过输入/输出端口再次重传第二数据包。
在一种可能的实现方式中,处理器用于:
当输入/输出端口在第一RTO内未接收到第二数据包对应的确认时,则通过输入/输出端口重传第二数据包;
当输入/输出端口在第二RTO内未接收到第二数据包对应的确认时,则通过输入/输出端口再次重传第二数据包,其中第二RTO大于第一RTO与第一系数的乘积,其中第一系数的值大于1。具体的,第一系数的值可以为2。
在一种可能的实现方式中,当输入/输出端口在第一RTO内接收到第二数据包对应的确认时,则处理器还用于执行如下步骤:
根据第二数据包的发送时间戳以及第二数据包对应的确认的接收时间戳更新第一RTO;
当输入/输出端口在更新后的第一RTO内未接收到第三数据包对应的确认时,则通过输入/输出端口重传第三数据包,其中,第三数据包为通过输入/输出端口发送第二数据包后发送的数据包。
在一种可能的实现方式中,处理器还用于:
更新第二RTO(Slow RTO),更新后的第二RTO与第二数据包对应的确认的接收时间戳,以及第二数据包的发送时间戳相关;
当输入/输出端口在第二RTO内未接收到第三数据包对应的确认时,通过输入/输出端口重传第三数据包,其中,第三数据包为通过输入/输出端口发送第二数据包后发送的数据包。
在一种可能的实现方式中,当输入/输出端口在第二RTO内接收到第三数据包对应的确认时,处理器还用于执行如下步骤:
根据第三数据包的发送时间戳以及第三数据包对应的确认的接收时间戳更新第一RTO;
当输入/输出端口在更新后的第一RTO内未接收到第四数据包对应的确认时,则通过输入/输出端口重传第四数据包,其中,第四数据包为通过输入/输出端口发送第三数据包后发送的数据包。
在一种可能的实现方式中,处理器还用于:
更新第二RTO,更新后的第二RTO与第三数据包对应的确认的接收时间戳,以及第三数据包的发送时间戳相关;
当输入/输出端口在更新后的第二RTO内未接收到第四数据包对应的确认时,则通过输入/输出端口重传第四数据包,其中,第四数据包为通过输入/输出端口发送第三数据包后发送的数据包。
在一种可能的实现方式中,第二RTO为第一数据包对应的确认的接收时间戳与第一数据包的发送时间戳的时间差。
在一种可能的实现方式中,第二RTO为第一数据包的发送时间戳与第一数据包对应的确认的接收时间戳的时间差与第二系数的乘积,其中,第二系数的值大于0。具体的,第二系数的值可以为1.5。
在一种可能的实现方式中,第一数据包中携带重传序号,重传序号指示第一数据包被发送的次数,通信接口接收到的确认中携带与确认对应的第一数据包的重传序号相同的重传序号;第二RTO为通信接口接收到的确认的接收时间戳与确认对应的第一数据包的发送时间戳的时间差。
在一种可能的实现方式中,第一数据包中携带重传序号,重传序号指示第一数据包被发送的次数,通信接口接收到的确认中携带与确认对应的第一数据包的重传序号相同的重传序号;第二RTO为通信接口接收到的确认的接收时间戳与确认对应的数据包的发送时间戳的时间差与第二系数的乘积,其中,第二系数的值大于0。具体的,第二系数的值可以为1.5。
在一种可能的实现方式中,数据包中包含扩展字段,扩展字段中包括重传序号。
在一种可能的实现方式中,重传序号在数据包中的令牌字段中。
第五方面,本申请实施例提供了一种电子设备,该电子设备包括第四方面及第四方面任一可能的实现方式中提供的通信接口。
第六方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储有计算机程序的计算机可读存储介质。其中,处理器与计算机可读存储介质耦合,计算机程序被处理器执行时实现第一方面及第一方面任一可能的实现方式中提供的重传控制方法。
第七方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面及第一方面任一可能的实现方式中提供的重传控制方法。
第八方面,本申请实施例提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现第一方面及第一方面任一可能的实现方式中提供的重传控制方法。
附图说明
图1为本发明实施例提供的数据传输的架构示意图;
图2为本发明实施例提供的电子设备结构示意图;
图3为本发明实施例提供的电子设备结构示意图;
图4为本发明实施例提供的电子设备结构示意图;
图5为本发明实施例提供的电子设备结构示意图;
图6为本发明实施例提供的重传机制示意图;
图7为本发明实施例提供的未发生重传的往返时延示意图;
图8为本发明实施例提供的发生重传的往返时延示意图;
图9为本发明实施例提供的重传机制切换示意图;
图10为本发明实施例提供的重传控制方法流程图;
图11为本发明实施例提供的重传机制切换示意图;
图12为本发明实施例提供的重传机制切换示意图;
图13为本发明实施例提供的重传控制方法示意图;
图14为本发明实施例提供的重传计数选项示意图;
图15为本发明实施例提供的电子设备结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
在开始描述本申请具体实施例之前,先介绍在本申请以下实施例中将会被提及的术语及其含义。可以理解的是,无如其他说明,本申请各个实施例中的这些术语及其含义均可以是相同的。
数据包:也称为报文,是网络传输的基本单位,以一定格式组织起来的数据。不同类型的网络协议对数据包的格式有不同的定义,但通常而言,一个数据包可分为头部(header)和净荷(payload),其中,头部包含了数据包传输过程中必需的信息,比如地址信息、标志位等等,净荷也称为数据包的数据部分,包含了被发送的数据内容。
网络拥塞:网络拥塞是指在网络中传送数据量太大时,由于网络资源有限而造成网络传输性能下降的情况。通常情况下,当网络中负载过度增加致使网络性能下降时,就会发生网络拥塞。
确认(Acknowledgement,ACK):数据传输过程中由接收端发给发送端的一种控制包,用于表示发送端发来的数据已确认接收。
往返时间(Round-Trip Time,RTT):网络传输中一个重要的性能指标,表示从发送端发送数据开始,到发送端收到来自接收端的确认(ACK),总共经历的时延。
本申请中的术语“第一”、“第二”用于区分同一类型的对象,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
图1为本申请适用的一种电子设备之间进行数据传输的架构,该架构包括电子设备101、网络102和电子设备103。电子设备101和电子设备103通过网络102通信连接,其中网络可以为有线网络或无线网络,比如,计算机网络、因特网、物联网或电话网络。电子设备101和103之间基于特定的通信协议建立通信连接,然后根据建立的连接,以数据包为单位传输数据。数据包在传输的过程中会经过网络200中的一个或多个网络设备,例如接入网设备、路由设备或接入点(AP,access point)。电子设备101可以将数据包通过网络102发送给电子设备103。电子设备101可以是终端设备,具体的可以是具有无线连接功能的手持式设备、或连接到无线调制解调器的其 他处理设备。例如,可以为移动电话、计算机、平板电脑、个人数码助理(personal digital assistant,PDA)、移动互联网设备(mobile Internet device,MID)、可穿戴设备和电子书阅读器(e-book reader)等;也可以是便携式、袖珍式、手持式、计算机内置的或者车载的移动设备。更具体的,也可以为音乐播放器、游戏机、医疗保健设备、联网汽车、智能仪表、传感器、报警器、机顶盒、打印机、电子眼镜、无人驾驶飞机和服务机器人等物联网设备,或称为IOT设备。电子设备103可以为终端设备或者服务器,更具体的,可以为IOT云平台服务器。IOT云平台服务器接收多个IOT设备发送的数据包,并对接收到的数据包进行处理。IOT设备可采集数据,通过网络102将数据包发送给IOT云平台服务器。IOT云平台服务也可以向IOT设备发送数据包,用于进行远程数据收集或者远程控制IOT设备。为了简化描述,本申请实施例中将已建立通信连接的两个电子设备中的一个称为发送端,另一个称为接收端。可以理解的是,发送端和接收端可以是具有数据收发能力的任何设备。比如,发送端可以是一台服务器,接收端是另一台服务器;或者发送端是终端设备,接收端是服务器;或者发送端和接收端均为终端设备。另外,发送端和接收端是两个相对的角色,且可以互相转换,即同一设备在不同的场景下可能是发送端,也有可能是接收端。
所属领域的技术人员可以理解一个数据传输架构通常可包括比图1中所示的部件更少或更多的部件,或者包括与图1中所示部件不同的部件,图1仅仅示出了与本申请实施例所公开的多个实现方式更加相关的部件。
图2为本申请实施例的电子设备101或103的一个示例性的结构示意图。如图2所示电子设备200包括处理器201、存储器202和通信接口203等部件。本领域技术人员可以理解,电子设备200可以包括比图示更多或更少的部件,或者组合某些部件。
这些部件可通过一根或多根总线204或信号线进行通信,总线可以分为地址总线、数据总线、控制总线等。
处理器201可以是中央处理器(CPU,central processing unit),网络处理器(NP,network processor)或者CPU和NP的组合。处理器201还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(ASIC,application-specific integrated circuit),可编程逻辑器件(PLD,programmable logic device)或其组合。上述PLD可以是复杂可编程逻辑器件(CPLD,complex programmable logic device),现场可编程逻辑门阵列(FPGA,field-programmable gate array,缩写:FPGA),通用阵列逻辑(GAL,generic array logic,缩写:GAL)或其任意组合。
存储器202,用于存储计算机程序,诸如图3所示的应用程序205和操作系统206;处理器201可调用存储器202存储的计算机程序,从而实现该计算机程序定义的功能。例如处理器201执行操作系统从而在电子设备200上实现操作系统的各种功能。操作系统206可以为
Figure PCTCN2019081718-appb-000001
或者其它操作系统,本申请实施例对此不作任何限制。
存储器202还存储有除计算机程序之外的其他数据,诸如操作系统206和应用程序205运行过程中产生的数据。存储器202可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(RAM,random-access memory);存储器202也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(flash memory), 硬盘(HDD,hard disk drive)或固态硬盘(SSD,solid-state drive);存储器202还可以包括上述种类的存储器的组合。图3中仅示出了一个存储器,当然,存储器202也可以根据需要,设置为多个存储设备。存储器202也可以是处理器201中的存储器,在此不做限制。
通信接口203用于将电子设备200与其它电子设备连接,允许电子设备200在网络上进行通讯的硬件,可以实现数据包的发送与接收的硬件。例如,通信接口203可以通过有线或无线连接到网络以连接到其他电子设备,例如外部其它的终端或服务器。在终端设备中,通信接口203可以具体为调制解调器或者天线或者wifi模块,在服务器中,通信接口203可以具体为射频单元或者天线。通信接口203上也可集成有处理器和存储器(包括RAM和只读存储器(ROM,Read-Only Memory)。
进一步地,在一个实施例中,如图3所示,电子设备200从逻辑上可划分为硬件层21、操作系统206以及应用层23。硬件层21包括如上所述的处理器201、存储器202、通信接口204等硬件资源。应用层23包括一个或多个应用程序,比如应用程序205。操作系统206作为硬件层21和应用层23之间的软件中间件,是管理和控制硬件与软件资源的计算机程序。
操作系统206包括内核22,内核22用于提供底层系统组件和服务,例如:电源管理、内存管理、协议栈24、驱动程序25等。协议栈24是实现网络协议的组件。应用程序205下达数据发送指令后,数据经过协议栈24,通过驱动程序25调用通信接口203发送该数据。在一个实施例中,驱动程序25包括存储器驱动251、通信接口驱动252(用于驱动通信接口203)。协议栈24包括协议组件241,用于实现网络协议功能。本申请实施例提供的重传控制方法可以由内核22中的协议组件241来实施。
在一个实施例中,电子设备200可以将协议组件的功能卸载到通信接口203,从而实现内核旁路,提升数据转发性能。如图4所示,通信接口203为可编程的通信接口,协议组件203实现在可编程的通信接口203中。相应地,本申请实施例提供的重传控制方法可以由通信接口203来实施,具体地,可以通过修改通信接口203的硬件或固件来实现该方法。可以是将计算机程序存储在可编程通信接口203上集成的存储器中,可编程通信接口203上集成的处理器执行该计算机程序来实现本申请提供的重传控制方法。还可以是通过可编程通信接口203中的逻辑电路实现本申请提供的重传控制方法。
在一个实施例中,如图5所示,电子设备200可以将协议组件241实现在应用层23(如DPDK(data plane development kit)技术),从而实现内核旁路,提升数据转发性能。相应地,本申请实施例提供的重传控制方法可以由应用层的软件来实施。
在数据传输中过程中,设计重传机制来保证数据传输的可靠性,具体设计了重传计时器,
重传计时器也可称为退避计时器(back off timer)。发送端向接收端发送数据包后,在重传计时器设置的RTO时间内没有收到确认(ACK,acknowledgement)时,换句话说,即RTO超时的时候,发送端重新传输(也可称为重传)该数据包。重传计时器设置的RTO为多个时间间隔。图6示例了这种重传机制,图6中包括发送端和接收端,在重传一定次数后可以放弃发送该数据包。发送端向接收端发送的数据包有时可以为 请求消息的形式发送。应当理解的是,发送端和接收端是两个相对的角色,且可以互相转换,即同一设备在不同的场景下可能是发送端,也有可能是接收端。
CoAP协议是一种可以适用于IOT设备的应用层协议,具有重传机制。COAP协议RFC7252中,RTO设置为2,22,23,24,25。在这种重传机制下,如果真实的RTT大于RTO时,那么可能就会进行不必要的重传,从而对网络资源和设备功耗造成浪费。又因为发送端无法及时收到任何反馈,所以重传的数据包会仍在端到端的路径上,将增加数据包在端到端之间的传输时间并且加重当前路径的拥塞状况。COCOA协议的重传控制机制还可能过于激进,即在RTT估值较小时计算出的RTO值较小,重传频率较高会造成大量的重传,例如测量结果发现在数据包队列很长的情况下,该机制会造成大量的重传(高达150%~200%)。大量的重传可能因为大量的重传而增加数据包在端到端之间的传输时间,造成对网络资源和设备功耗的浪费,并且可能加重网络拥塞。
本申请提供了一种重传控制方法及设备。该重传控制方法运行在重传控制装置上,该重传控制装置可以为前述图2至图5中提到的电子设备200。具体的,可以为IOT设备或者IOT云平台服务器,对于上行数据,IOT设备为发送端,该重传控制装置为IOT设备;对于下行数据,IOT云平台服务器为发送端,该重传控制装置为IOT云平台服务器。该重传控制方法可以为适用于COAP协议的重传机制,也可以是适用于其他网络协议的重传机制,例如传输控制协议(TCP,transmission control protocol)。
本申请实施例提供的重传控制方法中涉及了两个RTO参数,分别为第一RTO和第二RTO,第一RTO也可称为标准RTO或fast-RTO,第二RTO也可称为慢速RTO或slow-RTO。
第一RTO是根据未发生重传时的往返时延为基准值计算出的。即第一RTO为数据包发送时间戳与该数据包对应的确认的接收时间戳之间的时间差。具体的,可将未发生重传时的往返时延作为基准值代入噪声处理函数f(x)求得慢速重传时间,其中x为基准值。一般地,f(x)=ax+b,a和b均为常量。每当发生一次无重传的消息交互时,都可根据最新计算的未发生重传时的往返时延更新标准重传时间。并且与RFC6298中TCP协议的RTO的设置不同的是,本申请中的超时重传时间不需要限制下限为1s,因为下限设置为1s可能影响低时延网络下重传的时效性。本申请中的标准重传时间的上限值可能至少为60s。本申请中计算出的标准重传时间和初始的标准重传时间可以有所抖动,抖动程度在1/4*SRTT到SRTT之间,其中SRTT为平滑后的往返时延(SRTT,Smoothed Round Trip Time),可以理解为“平滑化”的RTT。按照RFC6298中SRTT和RTTVAR的规则,对于初始的标准重传时间,SRTT可以为1/3的初始的标准重传时间。当初始的标准重传时间可以设置为2s时,SRTT的值为2/3s。因此,本申请提供的第一RTO可以跟踪网络的真实RTT,可以及时触发重传。对于发生了与拥塞无关的网络损耗的端到端的路径,无额外延迟的重传对于数据包的尽快传输十分有效。
发送端向接收端发送数据包后,并在RTO内接收到数据包对应的确认时,数据包的发送时间戳与确认的接收时间戳之间的时间差为未发生重传时的往返时延。其中,数据包对应的确认表示接收端已接收该数据包。如图7所示,发送端在T1时首次发送 数据包P1给接收端,发送端在T2时接收到接收端响应于已接收P1所返回的确认。此时,计算出的未发生重传时的往返时延RTT1=T2-T1。
第二RTO是根据发生重传时的往返时延为基准值计算出的。第二RTO与数据包对应的确认的接收时间戳,以及该数据包的发送时间戳相关。其中,数据包的发送时间戳可以指数据包首次发送(原始传输)的时刻,也可以指重传该数据包时的时刻。可选的,可以将发生重传时的往返时延作为第二RTO,即第二RTO为数据包发送时间戳和数据包对应的确认的接收时间戳之间的时间差。可选的,可以将发生重传时的往返时延乘以一个系数作为第二RTO。该系数为预设的系数,大于0,即第二RTO为数据包的发送时间戳与该数据包对应的确认的接收时间戳的时间差与第二系数的乘积,其中第二系数的值大于0。具体的,第二系数的值可以大于1,使得第二RTO不那么激进,比如第二系数可以取值为1.5。第二RTO考虑到了多个不必要重传造成的较长的往返时延,第二RTO设置为大于发生重传时端到端RTT的值。端到端的RTT值可能会因为不必要的重传而增大,因此在每次重传数据包后根据发生重传时的往返时延更新第二RTO。
第二RTO本身也可以是一种退避的形式,因为第二RTO包含了数据包传输过程中,通过重传计时器退避所累计使用的时间,即第二RTO包括了在数据包传输过程中可能产生的所有不必要的重传所消耗的时间。假设一个稳定的RTT并且所有的重传都是不必要的,换句话说,收到的确认消息是针对数据包原始传输(或称为:首次发送)的响应,则此次数据包传输所消耗的时间为:从数据包的发送时间戳开始到最后一次重传的发送时间戳,再加上一个RTT时间。
发送端向接收端发送数据包后,发送端进行一次或多次重传该数据包后最终接收到该数据包的确认时,数据包的发送时间戳与确认的接收时间戳之间的时间差为发生重传时的往返时延。例如图8所示,发送端在T1时首次发送数据包P2给接收端,发送端在T2时进行数据包P2的第一次重传,发送端在Tn时接收到接收端响应于已接收到数据包P2所返回的确认,在此期间数据包P2可能被重传一次或多次。此时,计算出的发生重传时的往返时延RTT2=Tn-T1。进一步的,若发送端在Tn时接收到确认为在T2时P2第一次重传时发送的数据包对应的确认,则RTT2=Tn-T2。无论数据包在何时需要重传,将获得确认前所需的时间作为发生重传时的往返时延,也就是说,发生重传时的往返时延的计算可以是从数据包的首次发送开始,直到接收到首次发送的数据包对应的确认为止。或者,也可以是从数据包的重传开始,直到接收到重传的数据包对应的确认为止。
本申请实施例提供了一种重传控制方法,当先前的数据包传输(或称为:请求消息交互)过程中未发生重传时,使用第一RTO作为二进制指数退避的基础。当先前的数据包传输过程中发生重传时,引入了第二RTO做为退避过程使用的RTO中的一个值,即此时的RTO的设置考虑第二RTO。
本申请实施例提供的重传控制方法的逻辑可包括以下三种可能的方案,其中,本申请中各实施例中提到的K为预设的系数,可以称为第一系数,K的取值为大于1的数:
FAST_RTO退避方法(后续称为第一重传机制):采用第一RTO为基础,执行 原有的二进制指数退避,作为数据包未发生重传时的重传控制机制。具体的,重传计时器RTO可以设置为:fast-RTO,fast-RTO*K,fast-RTO*K2,fast-RTO*K3,…,fast-RTO*Ki。其中,K为大于1的数,K可以为2。
FAST_SLOW_FAST_RTO退避方法(后学称为第二重传机制):此机制可以是在使用第一重传机制时,数据包仍然需要一次或多次重传时使用的重传控制机制:首先使用第一RTO作为数据包的原始传输的RTO,以缓解网络中与拥塞无关的损耗。然后,如果原始传输的数据包被重传,则使用第二RTO作为第一次重传的RTO,可以避免不必要的重传,以缓解此时网络中可能出现的拥塞。如果还需要继续重传,则采用第一RTO以继续退避。具体的,重传计时器的RTO可以设置为:fast-RTO,max(slow-RTO,fast-RTO*K),fast-RTO*K2,fast-RTO*K3,…,fast-RTO*Ki。具体的,RTO还可以设置为:fast-RTO,slow-RTO,fast-RTO*K2,fast-RTO*K3,…,fast-RTO*Ki。其中,K为大于1的数,K可以为2。
SLOW_FAST_RTO退避方法(后续称为第三重传机制):此方法可以是当先前的数据包传输使用第二重传机制或第三重传机制,但数据包的传输仍需要一次或多次重传的情况下使用的重传控制机制。具体的:对于数据包的原始传输,使用第二RTO作为原始传输的RTO,以缓解网络中的拥塞。此时,在第二RTO内有很大概率能收到数据包对应的确认,可以获得无歧义RTT样本,无歧义RTT样本为未发生重传时的往返时延。一旦获得了无重传的消息交互,可变为采用第一重传机制作为后续的重传控制方法。具体的,重传计时器的RTO可以设置为:slow-RTO,fast-RTO,fast-RTO*K2,fast-RTO*K3,…,fast-RTO*Ki。其中,K为大于1的数,K可以为2。
对于电子设备初始化后发送的第一个数据包,由于在此之前还未发送过数据包,则采用初始RTO值作为超时重传时间,初始RTO可以设置为2s。每当获得无歧义的RTT样本时,即在第一、第二或第三重传机制中任一机制下或者其他重传机制下数据包在发送后的RTO内收到该数据包的确认时,都采用第一重传机制,使用更新后的第一RTO作为后续数据包传输的RTO。
本申请实施例提供的重传控制方法,可以通过设置三种重传计时器对应上述三种重传机制,当需要改变重传机制时,根据对应的重传计时器的RTO进行数据包的重传;也可以通过更改同一个重传计时器的RTO时间来实现上述三种重传机制各自设置的RTO。
本申请实施例提供的重传控制方法可以针对当前的网络状态改变RTO,一旦当前网络状态发生改变时,可以切换到更合适的RTO,因而可以减少不必要的重传,缩短数据包传输需要的时间,节省设备功耗和传输所占用的网络资源。
图9为前述三种重传机制的切换示意图。①为数据包未重传就收到确认,表示数据包首次发送就在当前的RTO内收到了该数据包的确认,其中该数据包对应的确认为接收端响应于已经接收到该数据包所向发送端返回的消息。当出现①描述的情况时,可以说明当前的网络传输情况良好,未出现丢包或数据包排队时延过高的现象。此时当前的RTO若为第二或第三重传机制中的RTO,则将使用更适应当前网络传输情况的第一重传机制的RTO作为数据包的RTO。若当前的RTO就是第一重传机制的RTO,则继续使用第一重传机制的RTO。②为数据包重传并收到确认,表示数据包在某次重 传后,并在当前的RTO内收到了该数据包的确认,其中该数据包的确认为接收端响应于接收到该数据包所向发送端返回的消息。当出现②描述的情况时,表示当前的网络传输中可能出现丢包或请求消息排队时延过高的现象。此时当前的RTO若为第一重传机制的RTO,则使用更适应当前网络传输情况的第二重传机制的RTO作为数据包的RTO。若此时当前的RTO若为第二重传机制的RTO,则使用更适应当前网络传输情况的第三重传机制的RTO。若当前的RTO就是第三重传机制的RTO,表示当前的网络传输的拥塞未得到缓解,仍然继续使用第三重传机制的RTO。
重传机制的切换也可以看做是重传计时器周期的调整,可以是三种周期的互相调整,也可以是在一个周期基础上更改。
图10为图9三种重传机制切换示意图对应的流程示意图。图9与图10中各自的①或②的含义相同。
下面将详细介绍本申请实施例提供的重传控制方法。
本发明实施例提供了如图10中虚线框S1所示的重传控制方法(第一重传机制)。
步骤S11:发送端发送第一数据包给接收端;
步骤S12:判断在第一RTO内是否接收到第一数据包对应的确认;
若发送端在第一RTO内未接收到第一数据包对应的确认,执行步骤S13;
可选的,若发送端在第一RTO内接收到第一数据包对应的确认,执行步骤S14;
若此时的第一数据包为该重传控制设备初始化后发送的第一个数据包,则第一RTO可以为预设的初始RTO,例如2s。若此时该重传控制设备已经传输过数据包,重传控制设备已经根据本实施例提供的方法更新了第一RTO,则步骤S12中提到的第一RTO为已更新后的第一RTO。发送端判断在在第一数据包的首次发送(原始传输)后第一RTO内是否接收到第一数据包对应的确认,该确认指示接收端已接收到第一数据包,换句话说,确认是指接收端收到第一数据包后向发送端返回的消息,使得发送端得知接收端已经收到该第一数据包。
若重传计时器设置的第一RTO到期时发送端还未收到数据包对应的确认,则执行步骤S13。
步骤S15:若发送端在第一RTO内接收到第一数据包对应的确认,则更新第一RTO;根据第一数据包的发送时间戳以及第一数据包对应的确认的接收时间戳更新第一RTO。
若重传计时器设置的第一RTO到期前发送端收到数据包对应的确认,则更新第一RTO,调整重传计时器的周期,将重传计时器的周期调整为基于更新后的第一RTO的指数递增。第一RTO是根据图7对应的描述中第一RTO的计算方法计算出的。更新后的第一RTO与第一数据包的发送时间戳以及第一数据包对应的确认的接收时间戳相关。第一RTO的更新已在前述图7的部分进行说明,在此不再赘述。未发生重传时的往返时延的取样是没有歧义的,真实的反应了网络传输顺畅时的往返时延。若第一数据包之后连续多个数据包都在第一RTO(或更新后的第一RTO)内收到数据包对应的确认,则可以连续更新第一RTO。
可选的,若数据包始终在第一RTO(或更新后的第一RTO)内收到数据包对应的确认,则表示网络传输情况未发生改变,网络传输效率较高,可能未发生拥塞,则可 以一直按照本发明实施例提供的第一重传机制进行数据包的重传,即重传计时器RTO始终设置为:以第一RTO(fast-RTO)为基础的指数递增:fast-RTO,fast-RTO*K,fast-RTO*K2,fast-RTO*K3,…,fast-RTO*Ki。其中,K为大于1的数,K可以为2。数据包在第i次重传后,发送端在fast-RTO*Ki内未收到第一数据包对应的确认,则重传第一数据包,其中i为正整数。这种重传控制方法可以充分考虑到真实的往返时延,避免了不必要的数据包重传。
可选的,步骤S15还可以在步骤S12之前进行。也就是发送端发送数据包后,在任一RTO内收到该数据包的确认时,都可更新第一RTO。这里的任一RTO可以为初始RTO、第一RTO或第二RTO或其他设置的RTO的值。
步骤S13:若在第一RTO内发送端未收到第一数据包对应的确认,则重传第一数据包。
发送端经过一次或多次重传(重新发送)第一数据包后,最终在重传计时器设置的RTO到期之前收到第一数据包对应的确认。重传计时器设置的第一次重传的RTO以及之后的重传的RTO可以为以第一RTO(fast-RTO)为基础的指数递增:fast-RTO*K,fast-RTO*K2,fast-RTO*K3,…,fast-RTO*Ki。其中,K为大于1的数,K可以为2。数据包在第i次重传后,发送端在fast-RTO*Ki内未收到第一数据包对应的确认,则重传第一数据包,其中i为正整数。
可选的,第一次重传的RTO以及之后的重传的RTO可以为以RTO为基础的指数递增:RTO*K,RTO*K2,RTO*K3,…,RTO*Ki。其中,K为大于0的数,K可以为2。数据包在第i次重传后,发送端在RTO*Ki内未收到第二数据包对应的确认,则重传第二数据包,其中i为大于等于2的正整数。其中,该RTO可以为根据第一RTO和第二RTO计算出的RTO,也可以为预设的RTO。
可选的,可以多次重传该数据包直至发送端收到数据包对应的确认。可选的,还可以设置最大重传次数,当重传次数到最大重传次数时,放弃继续重传该数据包。
步骤S14:计算第二RTO;
第二RTO与第一数据包对应的确认的接收时间戳,以及第一数据包的发送时间戳相关。此时,若已有先前计算出的第二RTO,则更新第二RTO。可根据前述图8对应的描述中第二RTO的方法统计的发生重传时的往返时延计算第二RTO。
可选的,可以将计算出的第二RTO代替原先的第二RTO。
可选的,第二RTO为第一数据包对应的确认的接收时间戳与第一数据包的发送时间戳的时间差;
可选的,第二RTO为第一数据包的发送时间戳与第一数据包对应的确认的接收时间戳的时间差与第二系数的乘积,其中,第二系数的值大于0。具体的,第二系数可以为1.5。
第一RTO与网络传输顺畅时的时延相关,在第一RTO内未收到确认,则未收到确认的原因可能是网络传输发生了拥塞,可能并不是仅因为时延。此时网络传输情况可能发生改变,网络传输可能发生拥塞。
可选的,本发明实施例提供的重传控制方法可更改重传机制以适应当前的网络传输情况,从原先的第一重传机制改为第二重传机制以灵活适应网络传输情况的改变, 减少不必要的重传,缩短数据包传输所需时间。换句话说,为了适应当前的网络传输情况,发送端发送下一数据包时的RTO考虑第二RTO,可以调整重传计时器设置的RTO,将重传计时器的周期调整为第二RTO。即步骤S14之后可以执行如图10中虚线框S2所示的方法:根据第二RTO进行第二数据包的重传,其中,第二数据包为发送端发送第一数据包后发送的数据包,具体的,可以指发送第一数据包后下一个发送的数据包,也可以指收到第一数据包对应的确认后发送的数据包。
下面将详细介绍图10中虚线框S2所示方法S2的具体流程,即第二重传机制。
步骤S21:发送端发送第二数据包给接收端;
步骤S22:判断在第一RTO内是否接收到第二数据包对应的确认;
若发送端在第一RTO内未接收到第二数据包对应的确认,执行步骤S23;
可选的,若发送端在第一RTO内接收到第二数据包对应的确认,执行步骤S27;
发送端判断在第二数据包的首次发送(原始传输)后的第一RTO内是否接收到第二数据包对应的确认,该确认指示接收端已接收到第二数据包,换句话说,确认是指接收端收到第二数据包后向发送端返回的消息,使得发送端得知接收端已经收到该第二数据包。
若重传计时器到期时(在第一RTO内)发送端还未收到数据包对应的确认,则执行步骤S23。
步骤S27:根据第二数据包的发送时间戳以及第二数据包对应的确认的接收时间戳更新第一RTO;
更新后的第一RTO是根据图7对应的描述中第一RTO的计算方法计算出的,更新后的第一RTO与第二数据包的发送时间戳以及第二数据包对应的确认的接收时间戳有关。根据第二数据包的发送时间戳以及第二数据包对应的确认的接收时间戳计算新的未发生重传时的往返时延,得到新得无歧义的RTT样本。第一RTO的计算已在前述图7的部分进行说明,在此不再赘述。未发生重传时的往返时延的取样是没有歧义的,真实的反应了网络传输顺畅时的往返时延。
此时,在第二重传机制下出现一次未发生重传的数据包传输,表明网络传输的拥塞情况有所缓解,可能又回到了较顺畅的网络传输状态。此时当前使用的第二重传控制方法或者说当前重传计时器的RTO不能很好适应当前的网络传输情况,可以将当前的第二重传机制转换成第一重传机制,将重传计时器的周期调整为第一RTO,重传计时器根据更新后的第一RTO为基础的指数递增进行重传,实现对需要重传的数据包尽快的重传,减少数据包整体传输时间。
因此可选的,步骤S27后执行图10中虚线框S1的步骤,即步骤S11-S15。发送端向接收端发送第三数据包时,重传计时器使用的RTO为以第一RTO(fast-RTO)为基础的指数递增:fast-RTO,fast-RTO*K,fast-RTO*K2,fast-RTO*K3,…,fast-RTO*Ki。其中,K为大于1的数,K可以为2。数据包在第i次重传后,发送端在fast-RTO*Ki内未收到该数据包对应的确认,则重传该数据包,其中i为正整数。第三数据包为发送端发送第二数据包后发送的数据包,具体的,可以指发送第二数据包后下一个发送的数据包,也可以指收到第二数据包对应的确认后发送的数据包。如图10所示,S1和S2可以互相转换,以灵活适应网络传输情况的变化,减少不必要的 重传,缩短数据包传输所需时间。
步骤S23:若在第一RTO内发送端未收到第二数据包对应的确认,则重传第二数据包。
此时,以第一RTO作为数据包的首次发送(原始传输)的RTO,可以避免因为RTO小于真实的网络时延而造成的不必要的重传,若在第一RTO内未收到确认,则第一次重传该数据包。
步骤S24:判断在第二RTO内发送端是否收到第二数据包对应的确认;
发送端判断在第一次重传后的第二RTO内是否接收到第二数据包对应的确认,换句话说,第一次重传的RTO为第二RTO(或称为slow-RTO)。该确认指示接收端已接收到第二数据包,换句话说,确认是指接收端收到第二数据包后向发送端返回的消息,使得发送端得知接收端已经收到该第二数据包。
在其他实现方式中,步骤S24:判断在第二RTO内发送端是否收到第二数据包对应的确认。其中,第二RTO大于第一RTO与K的乘积,K为大于1的数,具体的,K可以为2,即第一次重传的RTO为slow-RTO与fast-RTO*K中的最大值,也就是max(slow-RTO,fast-RTO*K)的解。取slow-RTO与fast-RTO*K中的最大值也就是考虑网络传输最差的情况,以避免不必要的重传。
若在第二RTO内发送端未收到第二数据包对应的确认,则执行步骤S25;若在第二RTO内发送端收到第二数据包对应的确认,则执行步骤S26。
步骤S25:重传第二数据包;
此时是第二次重传第二数据包,之后发送端再经过一次或多次重传(重新发送)第二数据包后,最终收到第二数据包对应的确认。
可选的,第二次重传的RTO以及之后的重传的RTO可以为以第一RTO为基础的指数递增:fast-RTO*K2,fast-RTO*K3,…,fast-RTO*Ki。其中,K为大于1的数,K可以为2。数据包在第i次重传后,发送端在fast-RTO*Ki内未收到第二数据包对应的确认,则重传第二数据包,其中i为大于等于2的正整数。
例如发送端首次发送数据包P1之后,以第一RTO作为数据包P1的原始传输的RTO,若判断在第一RTO内(重传计时器超时时)未收到确认,则发送端进行P1的第一次重传;以第二RTO作为P1的第一次重传的RTO,若在max(slow-RTO,fast-RTO*K)内或者在slow-RTO(第二RTO)内发送端未收到确认,即重传计时器超时时,则发送端进行P1的第二次重传;若请求消息需要第三次重传,以fast-RTO*K2时间作为第三次重传的RTO,若在fast-RTO*K2内发送端未收到确认,则发送端进行P1的第四次重传。
可选的,第二次重传的RTO以及之后的重传的RTO可以为以RTO为基础的指数递增:RTO*K2,RTO*K3,…,RTO*Ki。其中,K为大于1的数,K可以为2。数据包在第i次重传后,发送端在RTO*Ki内未收到第二数据包对应的确认,则重传第二数据包,其中i为大于等于2的正整数。其中,该RTO可以为根据第一RTO和第二RTO计算出的RTO,也可以为预设的RTO。
可选的,可以多次重传该数据包直至发送端收到数据包对应的确认。可选的,还可以设置最大重传次数,当重传次数到最大重传次数时,放弃继续重传该数据包。
首次发送(原始传输)的RTO取值第一RTO(fast-RTO)考虑到了真实的往返时延,避免进行不必要的重传。一旦在第一RTO内没有收到数据包原始传输的确认,则充分考虑发生重传时的往返时延,避免因为网络拥塞导致的时延过长而进行不必要的重传,可以有效的缓解网络拥塞。
步骤S26:更新第二RTO;
更新后的第二RTO与第二数据包对应的确认的接收时间戳,以及第二数据包的发送时间戳相关。具体的可根据前述图8对应的描述中第二RTO的计算方法统计的发生重传时的往返时延计算更新后的第二RTO。
可选的,可以将计算出的第二RTO代替原先的第二RTO。
可选的,第二RTO为第一数据包对应的确认的接收时间戳与第一数据包的发送时间戳的时间差;
可选的,第二RTO为第一数据包的发送时间戳与第一数据包对应的确认的接收时间戳的时间差与第二系数的乘积,其中,第二系数的值大于0。具体的,第二系数可以为1.5。
此时,在第二重传机制下仍发生了数据包重传,按照第二重传机制设置的RTO进行重传后,未能缓解网络拥塞情况。说明当前网络拥塞依旧严重,出现连续的丢包或者排队时延很高,当前的重传计时器的RTO并不能够最好的保证发送端的数据包发送行为。因此更改重传机制以适应当前的网络传输情况,从原先的第二重传机制改为第三重传机制。换句话说,为了适应当前的网络传输情况,调整重传计时器的RTO,将重传计时器的周期调整为更新后的第二RTO。步骤S26之后执行如图10中虚线框S3所示的方法:发送端向接收端发送第三数据包,若发送端在第二RTO内未接收到第三数据包对应的确认,发送端重传第三数据包。第三数据包为发送端发送第二数据包后发送的数据包,具体的,可以指发送第二数据包后下一个发送的数据包,也可以指收到第二数据包对应的确认后发送的数据包。
下面将详细介绍图10中虚线框S3所示的重传控制方法,即第三重传机制。
步骤S31:发送端发送第三数据包给接收端;
步骤S32:判断在第二RTO内是否接收到第三数据包对应的确认;
若发送端在第二RTO内未接收到第三数据包对应的确认,执行步骤S33;
可选的,若发送端在第二RTO内接收到第三数据包对应的确认,执行步骤S35;
发送端判断在在第三数据包的首次发送(原始传输)后第二RTO内是否接收到第三数据包对应的确认,该确认指示接收端已接收到第三数据包,换句话说,确认是指接收端收到第三数据包后向发送端返回的消息,使得发送端得知接收端已经收到该第三数据包。
若重传计时器到期时(在第二RTO内)发送端还未收到数据包对应的确认,则执行步骤S33。
步骤S35:若发送端在第二RTO内接收到第三数据包对应的确认,则更新第一RTO;
更新后的第一RTO是根据图7对应的描述中第一RTO的计算方法计算出的,更新后的第一RTO与第三数据包的发送时间戳以及第三数据包对应的确认的接收时间 戳相关。根据第三数据包的发送时间戳以及第三数据包对应的确认的接收时间戳计算新的未发生重传时的往返时延,得到新得无歧义的RTT样本。第一RTO的更新已在前述图7的部分进行说明,在此不再赘述。未发生重传时的往返时延的取样是没有歧义的,真实的反应了网络传输顺畅时的往返时延。
此时,在第三重传机制下出现一次未发生重传的数据包传输,表明网络传输的拥塞情况有所缓解,可能又回到了较顺畅的网络传输状态。此时当前使用的第三重传控制方法或者说当前使用的RTO不能很好适应当前的网络传输情况,可以将当前的第三重传机制转换成第一重传机制,将重传计时器的周期调整为更新后的第一RTO,按照更新后的第一RTO为基础的指数退避,实现对需要重传的数据包尽快的重传,减少数据包整体传输时间。
因此可选的,步骤S35后可以执行图10中虚线框S1的步骤,即步骤S11-S15。发送端向接收端发送第四数据包时,使用的RTO为以第一RTO(fast-RTO)为基础的指数递增:fast-RTO,fast-RTO*K,fast-RTO*K2,fast-RTO*K3,…,fast-RTO*Ki。其中,K为大于1的数,K可以为2。数据包在第i次重传后,发送端在fast-RTO*Ki内未收到该数据包对应的确认,则重传该数据包,其中i为正整数。其中,第四数据包为发送端发送第三数据包后发送的数据包,具体的,可以指发送第三数据包后下一个发送的数据包,也可以指收到第三数据包对应的确认后发送的数据包。这种RTO的转换可以实现灵活适应网络传输情况的变化,减少不必要的重传,缩短数据包传输所需时间。
步骤S33:若在第二RTO内发送端未收到第三数据包对应的确认,则重传第三数据包。
发送端经过一次或多次重传(重新发送)第三数据包后,最终收到第一数据包对应的确认。第一次重传的RTO以及之后的重传的RTO可以为以第一RTO(fast-RTO)为基础的指数递增:fast-RTO*K,fast-RTO*K2,fast-RTO*K3,…,fast-RTO*Ki。其中,K为大于1的数,K可以为2。数据包在第i次重传后,发送端在fast-RTO*Ki内未收到第一数据包对应的确认,则重传第一数据包,其中i为正整数,第i次重传的RTO为fast-RTO*Ki。
可选的,第一次重传的RTO以及之后的重传的RTO可以为以RTO为基础的指数递增:RTO*K,RTO*K2,RTO*K3,…,RTO*Ki。其中,K为大于1的数,K可以为2。数据包在第i次重传后,发送端在RTO*Ki内未收到第二数据包对应的确认,则重传第二数据包,其中i为正整数。其中,该RTO可以为根据第一RTO和第二RTO计算出的RTO,也可以为预设的RTO。
例如发送端首次发送数据包之后,发送端在第二RTO内未收到确认,则发送端第一次重传该数据包;第一次重传的RTO为fast-RTO*K,若发送端在第一次重传该数据包之后fast-RTO*K内未收到确认,则发送端第二次重传该数据包;第二次重传的RTO为fast-RTO*K2,若发送端在第二次重传该数据包之后fast-RTO*K2内未收到确认,则发送端第三次重传该数据包。
当重传计时超时,发送端还未收到确认消息,则重传第三数据包。
步骤S34:更新第二RTO;
更新后的第二RTO与第三数据包对应的确认的接收时间戳,以及第三数据包的发送时间戳相关。具体的可根据前述图8对应的描述中第二RTO的计算方法统计的发生重传时的往返时延计算更新后的第二RTO。
可选的,可以将计算出的第二RTO代替原先的第二RTO。
可选的,第二RTO为第三数据包对应的确认的接收时间戳与第三数据包的发送时间戳的时间差;
可选的,第二RTO为第三数据包的发送时间戳与第三数据包对应的确认的接收时间戳的时间差与第二系数的乘积,其中,第二系数的值大于0。具体的,第二系数可以为1.5。
此时,在第三重传机制下仍发生了请求消息重传,按照第三重传机制进行退避后,未能缓解网络拥塞情况。说明当前网络拥塞依旧严重,表示网络拥塞情况没有缓解,出现连续的丢包或者排队时延很高,需要维持第三重传机制,将重传计时器周期调整为更新后的第二RTO。直到发送一次未重传的消息交互时,将重传计时器的周期调整为更新后的第一RTO。即继续按照如图10虚线框S3所示的步骤S31-S35进行重传控制,即发送端向接收端发送第四数据包,若发送端在更新后的第二RTO内未接收到第四数据包对应的确认,则发送端重传第四数据包。其中,第四数据包为发送端发送第三数据包后发送的数据包,具体的,可以指发送第三数据包后下一个发送的数据包,也可以指收到第三数据包对应的确认后发送的数据包。。
下面将通过具体例子介绍三种重传机制之间的切换。
例如图11所示,发送端向接收端发送数据包P1,发送端的接收单元在重传计时器超时前收到P1的确认,这里重传使用的RTO可以为第一或第二或第三重传机制的RTO,也可以为初始化时初始RTO。发送端发送数据包P1后,未经重传就接收到确认,即出现图9中①描述的情况:首次发送后收到确认消息,则当前网络传输情况适用于第一重传机制,则切换到第一重传机制(若当前的重传机制本就是第一重传机制,则维持不变)。同时,可以根据未发生重传时的往返时延更新第一RTO,将重传计时器的周期调整为更新后的第一RTO。
切换到第一重传机制后,发送端向接收端发送数据包P2,发送端在重传计时器超时前没有收到P2的确认,这里重传计时器超时指在发送P2的发送时间戳起至当前的时间戳之间的时间差大于第一RTO。发送端在两次重传P2后收到P2的确认,即出现如图9中②所描述的情况:发生重传后收到确认消息,则当前的网络传输情况适用于第二重传机制,则从当前的第一重传机制切换到第二重传机制。同时,可以根据发生重传时的往返时延计算第二RTO,将重传计时器的周期调整为第二RTO,后续的数据包传输按照第二RTO进行重传。
切换到第二重传机制后,发送端向接收端发送数据包P3,发送端在重传计时器超时前(在第一RTO内)收到P3的确认,即出现图9中①描述的情况:首次发送后收到确认,则当前网络传输情况适用于第一重传机制,则从当前的第二重传机制切换到第一重传机制。同时,可以根据未发生重传时的往返时延更新第一RTO,将重传计时器的周期调整为更新后的第一RTO。
切换到第一重传机制后,发送端向接收端依次发送的数据包P4和P5,都在重传 计时器超时前(第一RTO内)接收到确认,即出现图9中①描述的情况:首次发送后收到确认,因此继续维持第一重传机制。同时,可以根据未发生重传时的往返时延更新第一RTO,将重传计时器的周期调整为更新后的第一RTO。发送端向接收端发送的数据包P6后,在重传计时器超时前未收到确认,则进行重传,因此将从第一重传机制再次切换到第二重传机制。
接着图11中发送端接收到数据包P6对应的确认,如图12所示,发送端向接收端发送数据包P7,发送端在重传计时器超时前(在第一RTO内)没有收到P7的确认,这里RTO为第二重传机制设置的RTO。发送端在两次重传P7后收到P7的确认,即出现如图9中②所描述的情况:发生重传后收到确认,则当前的网络传输情况适用于第三重传机制,则从当前的第二重传机制切换到第三重传机制,后续的按照第三重传机制设置的RTO进行重传。同时,可以根据发生重传时的往返时延更新第二RTO,将重传计时器的周期调整为更新后的第二RTO。
切换到第三重传机制后,发送端向接收端发送数据包P8,发送端在重传计时器超时前(第二RTO内)收到P8的确认消息,即出现图9中②描述的情况:发生重传后收到确认,,则当前网络传输情况仍适用于第三重传机制,则根据发生重传时的往返时延更新第二RTO,将重传计时器的周期调整为更新后的第二RTO。
仍在第三重传机制,此时发送端向接收端发送请求消息P9,发送在重传计时器超时前(第二RTO内)内收到P9的确认,即出现如图9中①所描述的情况:未发生重传后收到确认消息,则当前的网络传输情况适用于第一重传机制。可以根据未发生重传时的往返时延更新第一RTO,将重传计时器的周期调整为更新后的第一RTO,后续的按照第一重传机制设置的RTO进行重传。
在前述计算发生重传时的往返时延时,当重传数据包后收到的确认后,获得的RTT样本可能有歧义,因此可能影响测量RTT以及进一步估量慢速重传时间的值。因此,本申请实施例提供一种数据传输方法,可以确定确认是响应于接收到数据包的原始传输还是响应于接收到数据包的某次重传,从而有益于获得数据包发送重传时的往返时延,从而在网络发生拥塞或丢包而进行重传时也可以准确计算出第二RTO。
本申请实施例提供的数据传输方法的流程如图13所示,具体包括以下步骤:
步骤41:发送端向接收端发送数据包,数据包中携带重传序号,重传序号用于指示数据包被发送的次数。
可选的,数据包中包含扩展字段,扩展字段中携带重传序号;该扩展字段可以称为重传计数选项,重传计数选项可以用于区分确认是响应于原始传输的数据包还是响应于某次重传的数据包。但是,重传计数选项不能在空消息或重置消息中使用,因为一些协议例如COAP协议规定不允许在空消息中添加选项。
重传计数选项的格式如图14所示,可以命名为rexmit-cnt。重传计数选项的值是可变大小的无符号整数,长度可以为0到1字节,推荐为1字节,rexmit-cnt的字段号码可以为分配的对应字段。重传计数选项可以同时出现在请求消息和确认消息中。当重传计数选项在请求消息中出现时,它指示表示请求消息的发送的序号或者表示请求消息的传输顺序。
对于请求消息的原始传输,重传序号N可以为X,具体的,可以为数字0表示。 请求消息的原始传输可以携带数字255(0xFF)发送给接收端可以解释为数字0的原始传输。
可选的,重传序号在数据包中已有的字段中,例如可以在数据包中的令牌字段的扩展语义中。令牌是一个本地标识符,发送端可以使用不同的令牌值来区分请求消息的原始传输与多次重传。
重传序号用于指示数据包被发送的次数。具体的,对于同一个数据包,该数据包首次发送(原始传输)时携带的重传序号与该数据包每次重传时携带的重传序号是不同的,不同重传时携带的重传序号也是不同的。数据包发送/重传时所携带的重传序号需全局唯一的,即首次发送的请求消息所携带的重传序号与多次重传时重传的请求消息所携带的重传序号都不相同。重传序号可以是单调递增或单调递减或等比增长的数值。
可选的,如图13所示,每次重传时,数据包所携带的重传序号加一,例如,首次发送该数据包时,携带的重传序号为X,则第一次重传该数据包时,重传的请求消息携带的重传序号为X+1,第二次重传该数据包时,数据包携带的重传序号为X+2。
可选的,发送端存储首次发送所述请求消息时的时间戳和每次重传请求消息时的时间戳。例如图13中首次发送时间戳T1,和第一次重传、第二次重传的时间戳T2、T3。
步骤42:接收端接收发送端发送的数据包,接收端向发送端返回该数据包对应的确认,确认中携带与确认对应的数据包的重传序号相同的重传序号;
如果接收端支持(可实现)重传序号,并且该重传序号存在于接收到的数据包中,那么接收端返回的确认中携带与接收到的数据包携带的重传序号相同的重传序号。如果接收端要以空确认返回,则接收端在稍后返回的对该数据包的确认中携带该重传序号。
步骤43:发送端接收接收端返回的确认,确认中携带与确认对应的数据包的重传序号相同的重传序号。第二RTO为发送端接收到的确认的接收时间戳与确认对应的数据包的发送时间戳的时间差。
当携带着重传序号的确认到达时,发送端使用确认携带的重传序号找到与确认具有相同重传序号的数据包的发送时间戳。例如图13所示,发送端接收到P2的确认,确认中携带的重传序号为X+2,X+2为第二次重传的数据包的重传序号,则该确认为接收端响应于接收到第二次重传的数据包所返回的确认。若发送端接收到确认的接收时间戳为T4,则所得到的RTT样本的值为确认的接收时间戳与第二次重传的数据包的发送时间戳之间的时间差。得到的RTT样本为前述的发生重传时的往返时延,可以用于第二RTO的计算与更新。
一旦发送端接收到来自接收端的携带有重传序号的确认,发送端就会得知接收端是否支持(可实现)该重传序号。如果初始化时接收端发送的数据包的确认中携带重传序号,则发送端得知接收端支持该重传序号,并将在后续发送数据包时携带重传序号。数据包的原始传输可以携带重传序号0,具体的可以根据CoAP编码规则发送一个零字节整数。如果接受的确认中不包括重传序号,发送端可以暂停将重传序号加入数据包发送给接收端。如果发送端发送的数据包中不携带重传序号,但是收到的确认 中携带有重传序号,那么发送端需要忽略该确认中的重传序号。
当使用重传序号计算出当前的第二RTO时,还需与以前的发生重传时的数据包传输中获得的RTT样本值比较,取当前计算出的第二RTO与以前的RTT样本值中的最大值作为最新的第二RTO。如果没有可用的以前的RTT样本(例如,接收端返回一个空确认),那么就直接使用当前计算出的第二RTO作为第二RTO。
基于以上实施例,本申请实施例还提供了一种电子设备300,如图15所示,该电子设备300包括发送单元301、计算单元302、接收单元303。
发送单元301用于向接收端发送数据包,还用于向接收端重传数据包;具体的,可用于执行前述实施例中的步骤S11、S13、S21、S23、S25、S31、S33和S34。
计算单元302用于更新第一RTO,还用于计算或更新第二RTO;具体的,可用于执行前述实施例中的步骤S14、S15、S26、S27和S35。
接收单元303用于接收数据包对应的确认,该确认为接收端响应于接收到该数据包所发送的信息。
基于以上实施例,本申请实施例还提供了一种通信接口,该通信接口包括输入/输出端口和处理器,该处理器可实现上述任意一个或多个实施例提供的重传控制方法。
基于以上实施例,本申请实施例还提供了一种电子设备,该电子设备包括上述的通信接口,使得该电子设备可实现上述任意一个或多个实施例提供的重传控制方法。
基于以上实施例,本申请实施例还提供了一种计算机存储介质,该存储介质中存储计算机指令,该计算机指令在被一个或多个处理器读取并执行时可实现上述任意一个或多个实施例提供的重传控制方法。计算机存储介质可以包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码或计算机指令的介质。
基于以上实施例,本申请提供一种计算机程序产品,计算机程序产品包括计算机指令,当计算机指令被处理器执行时,使得处理器执行上述任意一个或多个实施例提供的重传控制方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括 指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (48)

  1. 一种重传控制方法,其特征在于,所述方法包括:
    发送端向接收端发送第一数据包;
    若所述发送端在第一超时重传时间RTO内未接收到所述第一数据包对应的确认,所述确认指示所述接收端已接收到所述第一数据包,则执行如下步骤:
    所述发送端重传所述第一数据包,并计算第二超时重传时间RTO,所述第二RTO与所述第一数据包对应的确认的接收时间戳,以及所述第一数据包的发送时间戳相关;
    根据所述第二RTO进行第二数据包的重传;所述第二数据包为所述发送端发送所述第一数据包后发送的数据包。
  2. 权利要求1所述方法,其特征在于,所述根据所述第二RTO进行重传包括:
    若所述发送端在所述第一RTO内未接收到所述第二数据包对应的确认,则所述发送端重传所述第二数据包;
    若所述发送端在所述第二RTO内未接收到所述第二数据包对应的确认,则再次重传所述第二数据包。
  3. 根据权利要求1所述方法,其特征在于,所述根据所述第二RTO进行重传包括:
    若所述发送端在所述第一RTO内未接收到所述第二数据包对应的确认,则所述发送端重传所述第二数据包;
    若所述发送端在所述第二RTO内未接收到所述第二数据包对应的确认,则再次重传所述第二数据包,其中所述第二RTO大于所述第一RTO与第一系数的乘积,所述第一系数的值大于1。
  4. 根据权利要求3所述方法,其特征在于,所述第一系数的值为2。
  5. 根据权利要求2-4任一项所述方法,其特征在于,所述方法还包括:
    若所述发送端在所述第一RTO内接收到所述第二数据包对应的确认,则执行如下步骤:
    所述发送端根据所述第二数据包的发送时间戳以及所述第二数据包对应的确认的接收时间戳更新所述第一RTO;
    若所述发送端在更新后的所述第一RTO内未接收到第三数据包对应的确认,则所述发送端重传所述第三数据包,所述第三数据包为所述发送端发送所述第二数据包后发送的数据包。
  6. 根据权利要求2-4任一项所述方法,其特征在于,所述方法还包括:
    更新所述第二RTO,更新后的所述第二RTO与所述第二数据包对应的确认的接收时间戳,以及所述第二数据包的发送时间戳相关;
    若所述发送端在所述第二RTO内未接收到第三数据包对应的确认,所述发送端重传所述第三数据包,所述第三数据包为所述发送端发送所述第二数据包后发送的数据包。
  7. 根据权利要求6所述方法,其特征在于,所述方法还包括:
    若所述发送端在所述第二RTO内接收到所述第三数据包对应的确认,则执行如下步骤:
    所述发送端根据所述第三数据包的发送时间戳以及所述第三数据包对应的确认的接收时间戳更新所述第一RTO;
    若所述发送端在更新后的所述第一RTO内未接收到第四数据包对应的确认,则所述发送端重传所述第四数据包,所述第四数据包为所述发送端发送所述第三数据包后发送的数据包。
  8. 根据权利要求6所述方法,其特征在于,所述方法还包括:
    更新所述第二RTO,更新后的所述第二RTO与所述第三数据包对应的确认的接收时间戳,以及所述第三数据包的发送时间戳相关;
    若所述发送端在更新后的所述第二RTO内未接收到第四数据包对应的确认,则所述发送端重传所述第四数据包,所述第四数据包为所述发送端发送所述第三数据包后发送的数据包。
  9. 根据权利要求1-5任一项所述方法,其特征在于,所述第二RTO为所述第一数据包对应的确认的接收时间戳与所述第一数据包的发送时间戳的时间差。
  10. 根据权利要求1-5任一项所述方法,其特征在于,所述第二RTO为所述第一数据包的发送时间戳与所述第一数据包对应的确认的接收时间戳的时间差与第二系数的乘积,所述第二系数的值大于0。
  11. 根据权利要求1-5任一项所述方法,其特征在于,所述第一数据包中携带重传序号,所述重传序号指示所述第一数据包被发送的次数,所述发送端接收到的所述第一数据包对应的确认中携带与所述确认对应的第一数据包的重传序号相同的重传序号;
    所述第二RTO为所述发送端接收到的所述第一数据包对应的确认的接收时间戳与所述确认对应的所述第一数据包的发送时间戳的时间差。
  12. 根据权利要求1-5任一项所述方法,其特征在于,所述第一数据包中携带重传序号,所述重传序号指示所述第一数据包被发送的次数,所述发送端接收到的所述第一数据包对应的确认中携带与所述确认对应的第一数据包的重传序号相同的重传序号;
    所述第二RTO为所述发送端接收到的确认的接收时间戳与所述确认对应的所述第一数据包的发送时间戳的时间差与第二系数的乘积,所述第二系数的值大于0。
  13. 根据权利要求10或12所述方法,其特征在于,所述第二系数的值为1.5。
  14. 根据权利要求11或12所述的方法,其特征在于,所述第一数据包中包含扩展 字段,所述扩展字段中包括所述重传序号。
  15. 根据权利要求11或12任一项所述的方法,其特征在于,所述重传序号在所述第一数据包中的令牌字段中。
  16. 一种电子设备,其特征在于,所述设备包括发送单元、计算单元和接收单元:
    所述发送单元用于向接收端发送第一数据包;还用于当所述接收单元在第一超时重传时间RTO内未接收到所述第一数据包对应的确认时,重传所述第一数据包,所述确认指示所述接收端已接收到所述第一数据包;还用于根据第二超时重传时间RTO进行第二数据包的重传,所述第二数据包为所述发送单元发送所述第一数据包后发送的数据包;
    所述计算单元用于计算所述第二RTO,所述第二RTO与所述第一数据包对应的确认的接收时间戳,以及所述第一数据包的发送时间戳相关;
    所述接收单元用于接收所述第一数据包对应的确认。
  17. 根据权利要求16所述的设备,其特征在于,
    所述发送单元用于:当所述接收单元在所述第一RTO内未接收到所述第二数据包对应的确认时,重传所述第二数据包;当所述接收单元在所述第二RTO内未接收到所述第二数据包对应的确认时,再次重传所述第二数据包;
    所述接收单元还用于接收所述第二数据包对应的确认。
  18. 根据权利要求16所述的设备,其特征在于,
    所述发送单元用于:当所述接收单元在所述第一RTO内未接收到所述第二数据包对应的确认时,重传所述第二数据包;当所述接收单元在所述第二RTO内未接收到所述第二数据包对应的确认时,再次重传所述第二数据包,其中所述第二RTO大于所述第一RTO与第一系数的乘积,所述第一系数的值大于1。
  19. 根据权利要求18所述的设备,其特征在于,所述第一系数的值为2。
  20. 根据权利要求17-19任一项所述的设备,其特征在于,
    所述计算单元还用于根据所述第二数据包的发送时间戳以及所述第二数据包对应的确认的接收时间戳更新所述第一RTO;
    所述发送单元还用于当所述接收单元在所述第一RTO内接收到所述第二数据包对应的确认且所述接收单元在更新后的所述第一RTO内未接收到第三数据包对应的确认时,重传所述第三数据包;所述第三数据包为所述发送单元发送所述第二数据包后发送的数据包;
    所述接收单元还用于接收所述第三数据包对应的确认。
  21. 根据权利要求17-19任一项所述的设备,其特征在于,
    所述计算单元还用于更新所述第二RTO,更新后的所述第二RTO与所述第二数据包对应的确认的接收时间戳,以及所述第二数据包的发送时间戳相关;
    所述发送单元还用于当所述接收单元在所述第二RTO内未接收到第三数据包对应的确认时,重传所述第三数据包;所述第三数据包为所述发送单元发送所述第二数据包后发送的数据包。
  22. 根据权利要求21所述的设备,其特征在于,
    所述计算单元还用于根据所述第三数据包的发送时间戳以及所述第三数据包对应的确认的接收时间戳更新所述第一RTO;
    所述发送单元还用于当所述接收单元在所述第二RTO内接收到所述第三数据包对应的确认且所述接收单元在更新后的所述第一RTO内未接收到第四数据包对应的确认时,重传所述第四数据包,所述第四数据包为所述发送单元发送所述第三数据包后发送的数据包;
    所述接收单元还用于接收所述第四数据包对应的确认。
  23. 根据权利要求21所述的设备,其特征在于,
    所述计算单元还用于更新所述第二RTO,更新后的所述第二RTO与所述第三数据包对应的确认的接收时间戳,以及所述第三数据包的发送时间戳相关;
    所述发送单元还用于当所述接收单元在更新后的所述第二RTO内未接收到第四数据包对应的确认时,重传所述第四数据包,所述第四数据包为所述发送单元发送所述第三数据包后发送的数据包;
    所述接收单元还用于接收所述第四数据包对应的确认。
  24. 根据权利要求16-20任一项所述的设备,其特征在于,所述第二RTO为所述第一数据包对应的确认的接收时间戳与所述第一数据包的发送时间戳的时间差。
  25. 根据权利要求16-20任一项所述的设备,其特征在于,所述第二RTO为所述第一数据包的发送时间戳与所述第一数据包对应的确认的接收时间戳的时间差与第二系数的乘积,所述第二系数的值大于0。
  26. 根据权利要求16-20任一项所述的装置,其特征在于,所述第一数据包中携带重传序号,所述重传序号指示所述第一数据包被发送的次数,所述接收单元接收到的所述第一数据包对应的确认中携带与所述确认对应的第一数据包的重传序号相同的重传序号;
    所述第二RTO为所述接收单元接收到的所述第一数据包对应的确认的接收时间戳与所述确认对应的第一数据包的发送时间戳的时间差。
  27. 根据权利要求16-20任一项所述的设备,其特征在于,所述第一数据包中携带重传序号,所述重传序号指示所述第一数据包被发送的次数,所述接收单元接收到的所述第一数据包对应的确认中携带与所述确认对应的第一数据包的重传序号相同的重传序号;
    所述第二RTO为所述接收单元接收到的所述第一数据包对应的确认的接收时间戳与所述确认对应的第一数据包的发送时间戳的时间差与第二系数的乘积,所述第二系 数的值大于0。
  28. 根据权利要求25或27所述的设备,其特征在于,所述第二系数的值为1.5。
  29. 根据权利要求26或27所述的设备,其特征在于,所述第一数据包中包含扩展字段,所述扩展字段中包括所述重传序号。
  30. 根据权利要求26或27所述的设备,其特征在于,所述重传序号在所述第一数据包中的令牌字段中。
  31. 一种电子设备,其特征在于,包括处理器和存储有计算机程序的计算机可读存储介质;
    所述处理器与所述计算机可读存储介质耦合,所述计算机程序被所述处理器执行时实现如权利要求1-15任一项所述的重传控制方法。
  32. 一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-15任一项所述的重传控制方法。
  33. 一种通信接口,包括输入/输出端口和处理器,其特征在于,所述处理器用于通过所述输入/输出端口向接收端发送第一数据包,若所述输入/输出端口在第一超时重传时间RTO内未接收到所述第一数据包对应的确认,所述确认指示所述接收端已接收到所述第一数据包,则所述处理器执行如下步骤:
    通过所述输入/输出端口重传所述第一数据包,并计算第二超时重传时间RTO,所述第二RTO与所述第一数据包对应的确认的接收时间戳,以及所述第一数据包的发送时间戳相关;
    根据所述第二RTO通过所述输入/输出端口进行第二数据包的重传;所述第二数据包为通过所述输入/输出端口发送所述第一数据包后发送的数据包。
  34. 根据权利要求33所述的通信接口,其特征在于,所述处理器用于:
    当所述输入/输出端口在所述第一RTO内未接收到所述第二数据包对应的确认时,通过所述输入/输出端口重传所述第二数据包;
    当所述输入/输出端口在所述第二RTO内未接收到所述第二数据包对应的确认时,通过所述输入/输出端口再次重传所述第二数据包。
  35. 根据权利要求33所述的通信接口,其特征在于,所述处理器用于:
    若所述输入/输出端口在所述第一RTO内未接收到所述第二数据包对应的确认,则通过所述输入/输出端口重传所述第二数据包;
    若所述输入/输出端口在所述第二RTO内未接收到所述第二数据包对应的确认,则通过所述输入/输出端口再次重传所述第二数据包,其中所述第二RTO大于所述第一RTO与第一系数的乘积,所述第一系数的值大于1。
  36. 根据权利要求35所述的通信接口,其特征在于,所述第一系数的值为2。
  37. 根据权利要求34-36任一项所述的通信接口,其特征在于,若所述输入/输出 端口在所述第一RTO内接收到所述第二数据包对应的确认,则所述处理器还用于执行如下步骤:
    根据所述第二数据包的发送时间戳以及所述第二数据包对应的确认的接收时间戳更新所述第一RTO;
    若所述输入/输出端口在更新后的所述第一RTO内未接收到第三数据包对应的确认,则通过所述输入/输出端口重传所述第三数据包;所述第三数据包为通过所述输入/输出端口发送所述第二数据包后发送的数据包。
  38. 根据权利要求34-36任一项所述的通信接口,其特征在于,所述处理器还用于:
    更新所述第二RTO,更新后的所述第二RTO与所述第二数据包对应的确认的接收时间戳,以及所述第二数据包的发送时间戳相关;
    若所述输入/输出端口在所述第二RTO内未接收到第三数据包对应的确认,通过所述输入/输出端口重传所述第三数据包;所述第三数据包为通过所述输入/输出端口发送所述第二数据包后发送的数据包。
  39. 根据权利要求38所述的通信接口,其特征在于,若所述输入/输出端口在所述第二RTO内接收到所述第三数据包对应的确认,则所述处理器还用于执行如下步骤:
    根据所述第三数据包的发送时间戳以及所述第三数据包对应的确认的接收时间戳更新所述第一RTO;
    若所述输入/输出端口在更新后的所述第一RTO内未接收到第四数据包对应的确认,则通过所述输入/输出端口重传所述第四数据包;所述第四数据包为通过所述输入/输出端口发送所述第三数据包后发送的数据包。
  40. 根据权利要求38所述的通信接口,其特征在于,所述处理器还用于:
    更新所述第二RTO,更新后的所述第二RTO与所述第三数据包对应的确认的接收时间戳,以及所述第三数据包的发送时间戳相关;
    若所述输入/输出端口在更新后的所述第二RTO内未接收到第四数据包对应的确认,则通过所述输入/输出端口重传所述第四数据包;所述第四数据包为通过所述输入/输出端口发送所述第三数据包后发送的数据包。
  41. 根据权利要求33-37任一项所述的通信接口,其特征在于,所述第二RTO为所述第一数据包对应的确认的接收时间戳与所述第一数据包的发送时间戳的时间差。
  42. 根据权利要求33-37任一项所述的通信接口,其特征在于,所述第二RTO为所述第一数据包的发送时间戳与所述第一数据包对应的确认的接收时间戳的时间差与第二系数的乘积,所述第二系数的值大于0。
  43. 根据权利要求33-37任一项所述的通信接口,其特征在于,所述第一数据包中携带重传序号,所述重传序号指示所述第一数据包被发送的次数,所述发送端接收到的确认中携带与所述确认对应的第一数据包的重传序号相同的重传序号;所述第二RTO为所述发送端接收到的确认的接收时间戳与所述确认对应的所述第一数据包的发 送时间戳的时间差。
  44. 根据权利要求33-37任一项所述的通信接口,其特征在于,所述第一数据包中携带重传序号,所述重传序号指示所述第一数据包被发送的次数,所述发送端接收到的确认中携带与所述确认对应的所述第一数据包的重传序号相同的重传序号;所述第二RTO为所述发送端接收到的确认的接收时间戳与所述确认对应的所述第一数据包的发送时间戳的时间差与第二系数的乘积,所述第二系数的值大于0。
  45. 根据权利要求42或44所述的通信接口,其特征在于,所述第二系数的值为1.5。
  46. 根据权利要求43或44所述的通信接口,其特征在于,所述第一数据包中包含扩展字段,所述扩展字段中包括所述重传序号。
  47. 根据权利要求43或44所述的通信接口,其特征在于,所述重传序号在所述第一数据包中的令牌字段中。
  48. 一种电子设备,其特征在于,包括如权利要求33-47所述的通信接口。
PCT/CN2019/081718 2018-07-02 2019-04-08 重传控制方法、通信接口和电子设备 WO2020007084A1 (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP19829957.0A EP3806366B1 (en) 2018-07-02 2019-04-08 Method for controlling retransmission, communication interface, and electronic device
EP23191836.8A EP4297314A3 (en) 2018-07-02 2019-04-08 Method for controlling retransmission, communication interface, and electronic device
US17/138,321 US11671210B2 (en) 2018-07-02 2020-12-30 Retransmission control method, communications interface, and electronic device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810710158.6A CN110677221B (zh) 2018-07-02 2018-07-02 重传控制方法、通信接口和电子设备
CN201810710158.6 2018-07-02

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US17/138,321 Continuation US11671210B2 (en) 2018-07-02 2020-12-30 Retransmission control method, communications interface, and electronic device

Publications (1)

Publication Number Publication Date
WO2020007084A1 true WO2020007084A1 (zh) 2020-01-09

Family

ID=69060761

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2019/081718 WO2020007084A1 (zh) 2018-07-02 2019-04-08 重传控制方法、通信接口和电子设备

Country Status (4)

Country Link
US (1) US11671210B2 (zh)
EP (2) EP3806366B1 (zh)
CN (3) CN115396067A (zh)
WO (1) WO2020007084A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112769526A (zh) * 2020-12-11 2021-05-07 邦彦技术股份有限公司 数据包重传方法、系统和存储介质

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115396067A (zh) 2018-07-02 2022-11-25 华为技术有限公司 重传控制方法、通信接口和电子设备
US11438960B2 (en) 2020-03-29 2022-09-06 PanPsy Technologies, LLC Enhanced power saving processes
CN111698510A (zh) * 2020-05-22 2020-09-22 北京大米科技有限公司 一种数据处理的方法、装置及电子设备
US20220346007A1 (en) * 2021-04-22 2022-10-27 Texas Instruments Incorporated Power aware event scheduling
CN113992307A (zh) * 2021-10-28 2022-01-28 国网信息通信产业集团有限公司 数据报文的传输方法、装置、电子设备及计算机存储介质
US20240048277A1 (en) * 2022-08-03 2024-02-08 Google Llc Early Retransmission for Hardware Reliable Transport
CN115208521B (zh) * 2022-08-22 2023-07-04 北京钢铁侠科技有限公司 一种会话层客户端与服务端通讯保障及工作流管控方法
CN115714826A (zh) * 2022-11-30 2023-02-24 合肥埃科光电科技股份有限公司 基于AF_XDP的GigE Vision协议数据包处理方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005006665A1 (en) * 2003-07-01 2005-01-20 Telefonaktiebolaget Lm Ericsson (Publ) Method for setting the retransmission timeout period in a packet switched communication network
CN1863033A (zh) * 2005-05-14 2006-11-15 腾讯科技(深圳)有限公司 获取网络超时重传间隔的方法及网络中数据传输的方法
CN101047485A (zh) * 2006-03-30 2007-10-03 株式会社Ntt都科摩 通信终端以及重发控制方法
CN105634836A (zh) * 2014-10-27 2016-06-01 香港理工大学 信息处理方法及装置

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1077559A1 (en) * 1999-08-17 2001-02-21 Telefonaktiebolaget Lm Ericsson Method and device for determining a time-parameter
US6907460B2 (en) * 2001-01-18 2005-06-14 Koninklijke Philips Electronics N.V. Method for efficient retransmission timeout estimation in NACK-based protocols
US7304995B2 (en) * 2001-08-29 2007-12-04 Texas Instruments Incorporated Systems and methods for packet flow control
JP4214793B2 (ja) * 2003-02-19 2009-01-28 日本電気株式会社 無線通信システム、サーバ、基地局、移動端末及びそれらに用いる再送タイムアウト時間決定方法
JP2005066988A (ja) * 2003-08-22 2005-03-17 Canon Inc 画像供給装置と記録装置及び記録システム及びその制御方法とプログラム
KR100895182B1 (ko) 2005-12-14 2009-04-24 삼성전자주식회사 무선통신 시스템의 전송 제어 방법
CN101094047A (zh) * 2007-07-06 2007-12-26 中国人民解放军国防科学技术大学 基于网络状态测量的分阶段慢启动传输控制方法
CN101119183A (zh) * 2007-09-06 2008-02-06 上海华为技术有限公司 重传控制方法及传输设备
CN101447857B (zh) * 2008-05-26 2012-07-18 中兴通讯股份有限公司 一种消息处理过程中动态调整时间参数的方法
CN101860423A (zh) * 2010-06-07 2010-10-13 华为技术有限公司 一种协议分组传输的重传方法和装置
CN102170340A (zh) 2011-04-08 2011-08-31 深圳市捷视飞通科技有限公司 一种rtp数据超时重发的方法、系统和视频终端
CN103095434B (zh) * 2011-10-27 2018-02-02 山东金佳园科技股份有限公司 一种数据重传控制方法及装置、终端设备
US8583053B1 (en) * 2012-06-20 2013-11-12 Google Inc. Optimizing TCP traffic for mobile devices using TCP backoff thresholds
CN102917403B (zh) * 2012-09-29 2014-11-05 北京邮电大学 一种低时延并行重传方法及装置
CN104184546B (zh) * 2013-05-27 2019-04-02 百度在线网络技术(北京)有限公司 一种移动通信网络中减少报文重传的方法及系统
CN104243090B (zh) * 2013-06-19 2017-11-03 中国移动通信集团公司 一种基于无线信道反馈的发送速率调整方法和设备
US20150055482A1 (en) * 2013-08-20 2015-02-26 Brocade Communications Systems, Inc. TCP Extended Fast Recovery and Segment Timing
CN103546248B (zh) * 2013-09-27 2016-09-07 昆山创通微电子有限公司 一种ack超时时间自动调节方法
US10419170B2 (en) * 2015-02-26 2019-09-17 Qualcomm Incorporated RRC aware TCP retransmissions
US10616947B1 (en) * 2015-05-29 2020-04-07 Akamai Technologies, Inc. TCP performance over cellular mobile networks
CN106788911A (zh) * 2015-11-25 2017-05-31 华为技术有限公司 一种报文重传的方法和装置
US10708885B2 (en) * 2015-12-15 2020-07-07 Convida Wireless, Llc Methods and nodes for enabling context-awareness in CoAP
CN106982108B (zh) * 2016-01-18 2019-05-28 华为技术有限公司 一种数据传输的方法以及相关设备
US10484286B2 (en) * 2016-02-02 2019-11-19 King Fadh University Of Petroleum And Minerals Adaptive reliability protocol
US9998500B2 (en) * 2016-02-15 2018-06-12 Wipro Limited Methods and systems for performing lawful interception (LI) in communication networks involving content adulteration with colluding agents
CN105933242B (zh) * 2016-04-12 2019-04-02 北京大学深圳研究生院 一种提高数据中心tcp响应速度的方法及系统
US20180041415A1 (en) * 2016-08-03 2018-02-08 Qualcomm Incorporated Mitigation of transmission control protocol throughput degradation in communication devices due to predictable radio impairment events
CN106533639B (zh) * 2016-12-06 2019-09-17 迈锐数据(北京)有限公司 一种数据重传方法及装置
CN107104763B (zh) * 2016-12-22 2020-06-02 腾讯科技(深圳)有限公司 一种设置超时重传时长的方法和装置
CN107172658A (zh) * 2017-05-22 2017-09-15 广州市暨联牧科信息技术有限公司 一种应用于物联网传输的拥塞控制方法
CN107147481A (zh) * 2017-07-19 2017-09-08 北京数码视讯科技股份有限公司 丢包重传方法、装置及电子设备
CN108494782B (zh) 2018-03-28 2021-05-18 深圳市网心科技有限公司 一种基于udp的数据传输方法、终端设备及存储介质
CN115396067A (zh) 2018-07-02 2022-11-25 华为技术有限公司 重传控制方法、通信接口和电子设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005006665A1 (en) * 2003-07-01 2005-01-20 Telefonaktiebolaget Lm Ericsson (Publ) Method for setting the retransmission timeout period in a packet switched communication network
CN1863033A (zh) * 2005-05-14 2006-11-15 腾讯科技(深圳)有限公司 获取网络超时重传间隔的方法及网络中数据传输的方法
CN101047485A (zh) * 2006-03-30 2007-10-03 株式会社Ntt都科摩 通信终端以及重发控制方法
CN105634836A (zh) * 2014-10-27 2016-06-01 香港理工大学 信息处理方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112769526A (zh) * 2020-12-11 2021-05-07 邦彦技术股份有限公司 数据包重传方法、系统和存储介质
CN112769526B (zh) * 2020-12-11 2022-06-21 邦彦技术股份有限公司 数据包重传方法、系统和存储介质

Also Published As

Publication number Publication date
US11671210B2 (en) 2023-06-06
CN115396068A (zh) 2022-11-25
EP4297314A2 (en) 2023-12-27
EP3806366A1 (en) 2021-04-14
CN110677221B (zh) 2022-06-14
CN115396067A (zh) 2022-11-25
EP4297314A3 (en) 2024-01-17
EP3806366B1 (en) 2023-10-04
EP3806366A4 (en) 2021-08-18
US20210126741A1 (en) 2021-04-29
CN110677221A (zh) 2020-01-10

Similar Documents

Publication Publication Date Title
WO2020007084A1 (zh) 重传控制方法、通信接口和电子设备
US11799790B2 (en) Data transmission method, computing device, network device, and data transmission system
CN109936510B (zh) 多路径rdma传输
JP6705003B2 (ja) データ伝送方法および関連するデバイス
CN106878191B (zh) 一种数据传送方法、发送节点、接收节点及数据传送系统
CN110830472B (zh) 基于tcp/ip协议的灵活数据传输协议的灵活数据传输方法
JP4520032B2 (ja) ヘッダ圧縮装置およびヘッダ圧縮方法
WO2018121294A1 (zh) 一种报文传输方法、终端、网络设备及通信系统
US11418446B2 (en) Technologies for congestion control for IP-routable RDMA over converged ethernet
US8306062B1 (en) Method and apparatus of adaptive large receive offload
CN110445722B (zh) 拥塞控制方法、装置、设备及存储介质
WO2013012604A1 (en) System and method for reliable virtual bi-directional data stream communications with single socket point-to-multipoint capability
CN108432287A (zh) 一种数据传输方法及网络侧设备
KR20190105061A (ko) 데이터를 송신하는 방법과 데이터 송신 장치, 및 고객 댁내 장치
CN113852445A (zh) 一种提高数据传输可靠性的方法、系统、设备和存储介质
CN111314961A (zh) Tcp传输方法、装置和系统
CN109586931B (zh) 组播方法及终端设备
EP3108631B1 (en) Buffer bloat control
TWI839155B (zh) 電腦裝置以及應用於電腦裝置的傳輸控制協定封包處理方法
CN114268416B (zh) 数据传输方法、装置及电子设备
TW202431825A (zh) 電腦裝置以及應用於電腦裝置的傳輸控制協定封包處理方法
CN116938395A (zh) 一种数据传输方法、装置以及相关设备
Li et al. A cross layer design for improving trivial file transfer protocol in mobile transparent computing
CN118540272A (zh) 拥塞控制方法、装置、设备、介质及程序产品
Khan Adaptive Simultaneous Multipath Transmission Scheme

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 19829957

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2019829957

Country of ref document: EP

Effective date: 20210111