Method and apparatus for transmitting data packets using dual sequence numbers
11272420 · 2022-03-08
Assignee
Inventors
Cpc classification
H04L47/26
ELECTRICITY
H04L47/25
ELECTRICITY
H04L47/34
ELECTRICITY
H04L47/196
ELECTRICITY
H04L1/1671
ELECTRICITY
International classification
H04L1/16
ELECTRICITY
H04L47/25
ELECTRICITY
H04L47/34
ELECTRICITY
H04L47/26
ELECTRICITY
Abstract
A data transmission method and related apparatuses are disclosed. A sanding node transmits a plurality of data packets to a receiving node at an initial transmission rate. Each data packet carries a random sequence number and a rolling sequence number. The random sequence number identifies a data part of the data packet, and the rolling sequence number indicates a transmission sequence of the data packet. The sending node receives a packet loss feedback from the receiving node. The packet loss feedback is generated after the receiving node detects a packet loss event according to rolling sequence numbers of received data packets. The sending node determines a random sequence number of a lost data packet based on the received packet loss feedback. The sending node transmits a replacement data packet to the receiving node. The replacement data packet carries a different rolling sequence number.
Claims
1. A method for transmitting data between nodes, comprising: transmitting, by a sending node, a plurality of data packets to a receiving node, wherein each data packet carries a random sequence number identifying the data packet, and a rolling sequence number indicating a transmission sequence of the data packet; receiving, by the sending node from the receiving node, a packet loss feedback comprising information of a rolling sequence number of a first lost data packet; determining, by the sending node, a random sequence number of the first lost data packet based on the packet loss feedback and a mapping relationship between the random sequence number and the rolling sequence number of the first lost data packet; and transmitting, by the sending node in response to the packet loss feedback, a first replacement data packet corresponding to the first lost data packet, wherein the first replacement data packet carries the same random sequence number as the first lost data packet, and a new rolling sequence number different from that of the first lost data packet, wherein the packet loss feedback is a negative acknowledge (NACK) packet comprising a start field and an end field, the start field carries information of the rolling sequence number of the first lost data packet, and the end field carries a rolling sequence number of a last lost data packet when multiple consecutive data packets are lost.
2. The method of claim 1, wherein the negative acknowledge (NACK) packet further comprises a packet loss indication field, and the packet loss indication field comprises a start field and an end field.
3. The method of claim 1, wherein the NACK packet further comprises a release field carrying information of one or more data packets that are correctly received by the receiving node.
4. The method of claim 3, further comprising: releasing, by the sending node, the one or more data packets that are correctly received from a sending buffer according to the information carried in the release field.
5. The method of claim 1, further comprising: receiving, by the sending node, a period acknowledge (PACK) packet comprising information of a random sequence number identifying a second lost data packet that is missing in a receiving buffer of the receiving node; and transmitting, by the sending node in response to the PACK packet, a second replacement data packet corresponding to the second lost data packet; wherein the second replacement data packet carries the same random sequence number as the second lost data packet, and a new rolling sequence number different from that of the second lost data packet.
6. A method for transmitting data between nodes, comprising: receiving, by a receiving node, one or more data packets from a sending node, wherein each data packet carries a random sequence number identifying the data packet, and a rolling sequence number indicating a transmission sequence of the data packet; determining, by the receiving node, a first lost data packet according to rolling sequence numbers of the one or more packets; transmitting, by the receiving node to the sending node, a packet loss feedback comprising information of a rolling sequence number of the first lost data packet, wherein the packet loss feedback is a negative acknowledge (NACK) packet comprising a start field and an end field, the start field carries information of the rolling sequence number of the first lost data packet, and the end field carries a rolling sequence number of a last lost data packet when multiple consecutive data packets are lost; and receiving, by the receiving node, a first replacement data packet corresponding to the first lost data packet, wherein the first replacement data packet carries the same random sequence number as the first lost data packet, and a new rolling sequence number different from that of the first lost data packet.
7. The method of claim 6, wherein the negative acknowledge (NACK) packet further comprises a packet loss indication field, and the packet loss indication field comprises a start field and an end field.
8. The method of claim 6, wherein the NACK packet further comprises a release field carrying information of one or more data packets that are correctly received by the receiving node.
9. The method of claim 6, further comprising: sending, by the receiving node, a period acknowledge (PACK) packet comprising information of a random sequence number identifying a second lost data packet that is missing in a receiving buffer of the receiving node; and receiving, by the receiving node, a second replacement data packet corresponding to the second lost data packet; wherein the second replacement data packet carries the same random sequence number as the second lost data packet, and a new rolling sequence number different from that of the second lost data packet.
10. The method of claim 9, wherein the second lost data packet is a head of line (HOL) packet.
11. An apparatus, comprising: a transmitter, a receiver and a processor, wherein the transmitter is configured to: transmit a plurality of data packets to a receiving node, wherein each data packet carries a random sequence number identifying the data packet, and a rolling sequence number indicating a transmission sequence of the data packet; wherein the receiver is configured to: receive a packet loss feedback from the receiving node, wherein the packet loss feedback comprises information of a rolling sequence number of a first lost data packet; wherein the processor is configured to: determine a random sequence number of the first lost data packet based on the packet loss feedback and a mapping relationship between the random sequence number and the rolling sequence number of the first lost data packet, wherein the packet loss feedback is a negative acknowledge (NACK) packet comprising a start field and an end field, the start field carries information of the rolling sequence number of the first lost data packet, and the end field carries a rolling sequence number of a last lost data packet when multiple consecutive data packets are lost; and wherein the transmitter is further configured to: transmit a first replacement data packet corresponding to the first lost data packet, wherein the first replacement data packet carries the same random sequence number as the first lost data packet, and a new rolling sequence number different from that of the first lost data packet.
12. The apparatus of claim 11, wherein the negative acknowledge (NACK) packet further comprises a packet loss indication field, and the packet loss indication field comprises a start field and an end field.
13. An apparatus, comprising: a transmitter, a receiver and a processor; wherein the receiver is configured to: receive one or more data packets from a sending node, wherein each data packet carries a random sequence number identifying the data packet, and a rolling sequence number indicating a transmission sequence of the data packet; wherein the processor is configured to: determine a first lost data packet according to rolling sequence numbers of the one or more data packets; and wherein the transmitter is configured to: transmit, to the sending node, a packet loss feedback comprising information of a rolling sequence number of the first lost data packet, wherein the packet loss feedback is negative acknowledge (NACK) packet comprising a start field and an end field, the start field carries information of the rolling sequence number of the first lost data packet, and the end field carries a rolling sequence number of a last lost data packet when multiple consecutive data packets are lost; and wherein the receiver is further configured to: receive a first replacement data packet corresponding to the first lost data packet, wherein the first replacement data packet carries the same random sequence number as the first lost data packet, and a new rolling sequence number different from that of the first lost data packet.
14. The apparatus of claim 13, wherein the negative acknowledge (NACK) packet further comprises a packet loss indication field, and the packet loss indication field comprises a start field and an end field.
15. The apparatus of claim 13, wherein the NACK packet further comprises a release field carrying information of one or more data packets that are correctly received.
16. The apparatus of claim 13, wherein the transmitter is further configured to: send a period acknowledge (PACK) packet comprising information of a random sequence number identifying a second lost data packet that is missing in a receiving buffer; and wherein the receiver is further configured to: receive a second replacement data packet corresponding to the second lost data packet; wherein the second replacement data packet carries the same random sequence number as the second lost data packet, and a new rolling sequence number different from that of the second lost data packet.
17. The apparatus of claim 16, wherein the second lost data packet is a head of line (HOL) packet.
Description
BRIEF DESCRIPTION OF DRAWINGS
(1) The following briefly describes the accompanying drawings used in describing the embodiments.
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
DETAILED DESCRIPTION OF EMBODIMENTS
(15) The embodiments of the present disclosure are described below with reference to the accompanying drawings.
(16) Network architectures and service scenarios that are described in the embodiments of the present disclosure are intended for more clearly describing the technical solutions provided in the embodiments of the present disclosure, and impose no limitation on the technical solutions. Moreover, the technical solutions provided in the embodiments of the present disclosure are also applicable to similar technical problems as the network architecture evolves and new service scenarios emerge.
(17)
(18) The UE involved in this application may be a handheld device, a vehicle-mounted device, a wearable device, and a computing device that having communication functions. Typical examples include a personal computer, a smartphone, a laptop computer, a tablet computer, and a digital camera, as shown in
(19)
(20) The sending node 110 and the receiving node 20 may be independent physical devices or may be virtual machines. In a scenario, the sending node 110 may be the user equipment described above in relation to
(21) As shown in
(22) The storage device 150 of the sending node 110 stores an application program 121 (or referred to as a sending application program). For example, the application program 121 may be a backup program used to upload contents destined to the receiving node 20, or may be a browser used to request contents from the receiving node 20. This is not specifically limited in the embodiments of the present disclosure. The application program generally belongs to an application layer, and the processor 120 may read and execute the application program 121 stored in the storage device 150, so as to implement a specific function. Correspondingly, an application program 22 (or referred to as a receiving application program) runs on the receiving node 20. The application programs 121 and 22 may perform data transmission based on the protocol stacks 130 and 21. As shown in
(23) Further, as shown in
(24) More specifically, according to
(25) As shown in
(26) In the data transmission system in this embodiment of the present disclosure, a conventional “window”-based transmission mechanism and a lost packet timeout retransmission mechanism in the TCP are not used. Instead, a memory of a sending node is used as a sending buffer, and the sending node “pushes” a data packet from the memory to a receiving node at a constant speed. The receiving node releases in time a sending buffer occupied by already received consecutive data packets, and sends a “pull” request when detecting a lost packet, so that the sending node retransmits the lost packet. The mechanism in which the sending node actively “pushes” a data packet and the receiving node “pulls” a lost packet according to the “pushed” data may tolerate a packet loss in a link, so as to avoid congestion and rate adjustment, and achieve a high throughput rate and a high transmission rate in the link.
(27) Based on the basic framework and principle of the acceleration protocol Fillp described in the foregoing embodiment, the following embodiment of the present disclosure describes a method for transmitting data in a data transmission system after a Fillp protocol is deployed. As shown in
(28) Step 703: Based on a connection (for example, a UDP connection) established between a sending node and a receiving node, the sending node transmits multiple data packets to the receiving node at an initial transmission rate, where each data packet carries two sequence numbers: a random sequence number and a rolling sequence number. For definitions and implementation of the random sequence number and the rolling sequence number, refer to the description in related embodiments of
(29) In an embodiment, the initial transmission rate of the sending node may be configured by a user using a user interface, a script, or a configuration file. In another embodiment, the initial transmission rate may be automatically configured by the sending node according to network bandwidth between the sending node and the receiving node. Provided that there is a to-be-sent data packet in a sending buffer of the sending node, the sending node keeps using the initial transmission rate to transmit a data packet in the sending buffer, until a transmission rate adjustment instruction is received.
(30) Step 705: The receiving node receives the multiple data packets.
(31) In an embodiment, a rate of receiving a data packet by the receiving node matches the initial transmission rate of the sending node, for example, the two are equal or similar. In an embodiment, when a receiving rate of the receiving node is greater than or less than the initial transmission rate of the sending node, control information may be fed back to the sending node, so that the sending node adjusts the initial transmission rate to make the initial transmission rate match the receiving rate of the receiving node.
(32) Step 706: The receiving node detects one or more lost data packets according to sequence numbers carried in one or more received data packets, generates packet loss feedback information according to information about the detected lost data packet, and sends the packet loss feedback information to the sending node.
(33) In an embodiment, the receiving node may quickly detect a lost packet according to a rolling sequence number PKT. SEQ of a received data packet. For example, after the receiving node receives a data packet whose rolling sequence number PKT.SEQ is 3, if a data packet whose PKT.SEQ is 1 is received, but a data packet whose PKT.SEQ is 2 is not received, it is determined that the data packet whose PKT.SEQ is 2 is lost. Compared with the conventional TCP in which a packet loss needs to be determined by using multiple ACKs, the method in this embodiment of the present disclosure is more efficient.
(34) In an embodiment, the receiving node adds a random sequence number or a rolling sequence number of the detected lost data packet to an ACK packet, and sends the ACK packet to the sending node.
(35) In another embodiment, the receiving node adds a sequence number of the detected lost data packet to a NACK (Negative Acknowledge) control packet (NACK for short below), and sends the NACK control packet to the sending node. Specifically, in a possible implementation manner, the NACK includes a packet loss indication field, and the field is used to carry a rolling sequence number of a lost data packet. For example, if the receiving node determines, according to a sequence number of a data packet that is already received currently, that a data packet whose PKT.SEQ is 2 is lost, the packet loss indication field of the NACK is immediately filled with 2, and the NACK is sent to the sending node. In another possible implementation manner, as shown in
(36) Step 707: The sending node retransmits the lost data packet according to an indication in the received packet loss feedback information.
(37) In an embodiment, the sending node determines a random sequence number of a lost data packet based on a rolling sequence number carried in the received NACK and based on a mapping relationship between a random sequence number and a rolling sequence number of a data packet transmitted by the sending node. Then, according to the determined random sequence number, the corresponding data packet is found from the sending buffer and is retransmitted. The retransmitted data packet carries an original random sequence number and a new rolling sequence number. In this case, the sending node usually records a mapping relationship between a random sequence number and a rolling sequence number of a data packet. For example, the sending node stores a mapping relationship between a random sequence number and a rolling sequence number of an already transmitted and/or to-be-transmitted data packet in a form of a hash table, so that when a NACK is received subsequently, a corresponding lost data packet is determined according to a rolling sequence number carried in the NACK.
(38) In another embodiment, the sending node may determine a lost data packet according to a sequence number, which is carried in an ACK packet received by the receiving node, of a data packet already received by the receiving node, and retransmit the lost data packet.
(39) Further, in an embodiment, a NACK further includes a release field (Release SEQ), and the release field is used to indicate a random sequence number and/or a rolling sequence number of a data packet that is already received by the receiving node currently. As shown in
(40) It should be noted that in all embodiments of the present disclosure, a lost data packet refers to a lost data packet determined by the receiving node according to information about an already received data packet. Because of an unpredictable factor in network transmission, the lost data packet determined by the receiving node may not be lost actually, that is, the receiving node may “make a mistake”, but the mistake does not actually affect an effect of the present disclosure. Optionally, after receiving the packet loss feedback information, the sending node may not immediately retransmit the lost data packet, and may wait for a while, so as to reduce impact of a “mistake” resulting from disorderly received packets, where the waiting time may be configured by a user.
(41) It can be seen from the foregoing description that in the foregoing embodiment of the present disclosure, a lost data packet is quickly detected by using a rolling sequence number of a data packet, and after the lost data packet is detected, packet loss feedback information is sent to a sending node, so as to request to retransmit the lost data packet in time. Because of a sequence-preserving requirement during data packet transmission and submission to an upper-layer application program, if a data packet is not received by a receiving node, a received data packet subsequent to the data packet must be stored in a receiving buffer until the data packet is retransmitted and received by the receiving node. Then, the subsequent data packet is submitted to the application program, and the receiving buffer occupied by the subsequent data packet is released. That is, if data in the receiving buffer is inconsecutive (that is, there is a missed data packet in the receiving buffer), the receiving buffer cannot be released in time. However, in some cases, for example, because of link congestion and another reason, the packet loss feedback information sent by the receiving node is lost in a transmission process, or a lost data packet retransmitted by the sending node is lost again, and the receiving node cannot receive the lost data packet for a long time. Missing of the data packet in the receiving buffer leads to inconsecutive data, and consequently, another data packet in the receiving buffer cannot be released for a long time, and the receiving buffer is blocked. The data packet missed in the receiving buffer, that is, the data packet causing a blocked receiving buffer (typically, a data packet not received by the receiving node and not sensed by the sending node as a lost data packet, and a data packet lost again after being retransmitted) is generally referred to as an head of line (HOL) packet. A phenomenon that a receiving buffer is blocked by an HOL packet is generally referred to as an HOL effect. For resolving a problem that a receiving buffer is blocked by an HOL packet, the data transmission method in this embodiment of the present disclosure further includes:
(42) Step 713: The receiving node periodically sends a PACK (Period ACK) control packet (PACK for short below) to the sending node. As shown in
(43) Optionally, as shown in
(44) Step 715: The sending node adjusts the initial transmission rate according to the received PACK, so that the initial transmission rate is adapted to a data packet receiving rate indicated by the PACK.
(45) Step 717: The sending node continues to transmit a data packet to the receiving node based on an adjusted transmission rate.
(46) Step 719: The receiving node receives the data packet and repeats the foregoing steps 706 to 715.
(47) Optionally, as shown in
(48) Optionally, based on any above described embodiment, in another embodiment, the sending node records a mapping relationship between a random sequence number and a rolling sequence number of an already sent data packet. For example, the mapping relationship may be stored in a hash table or a mapping table in another form. Further, in an embodiment, the sending node further executes step 711: Add a mapping relationship between a random sequence number and a rolling sequence number of an already sent data packet to the mapping table, so as to dynamically update the mapping table.
(49) In the data transmission method and system provided in this embodiment of the present disclosure, a sending node consecutively transmits data packets to a receiving node at a relatively constant transmission rate, and the receiving node immediately sends packet loss feedback information to the sending node after detecting a lost data packet, so as to request the sending node to retransmit the lost data packet. Unlike the TCP in which there is a phenomenon that a data packet cannot be sent because of a limitation such as a send window or a congestion window, in a case of an adequate memory, a mechanism in which the sending node actively “pushes” a data packet and the receiving node “pulls” a lost packet according to the “pushed” data can significantly improve a data transmission rate and bandwidth utilization. In addition, because the data packets are sent at a specific rate, a case in which data packets are instantly injected into a network can be reduced. Further, a data packet is transmitted based on double sequence numbers, so that the receiving node can quickly detect a lost data packet. Further, a releasable protocol stack memory is quickly released by adding a Release SEQ field to a NACK. Further, a problem that a receiving buffer is blocked by an HOL packet is resolved by using a periodical PACK control packet.
(50) With reference to
(51) Correspondingly, with reference to
(52) In an embodiment of the present disclosure, the above described processes in
(53) The following demonstrates a detailed data packet sending and receiving procedure in a data transmission system in an embodiment of the present disclosure by using an example shown in
(54) Step 1: A sending node determines an initial transmission rate, and transmits multiple data packets at the initial transmission rate by using a connection (for example, a UDP connection) established to a receiving node. The sending node adds double sequence numbers (a random sequence number and a rolling sequence number PKT. SEQ, and for ease of description, in the following, the random sequence number is represented by using SEQ and the rolling sequence number is represented by using PKT) to a header of each data packet. For example, in a data packet 1, SEQ is 1 and PKT is 1; and in a data packet 2, SEQ is 2 and PKT is 2. It should be noted that for ease of understanding, in
(55) Step 2: When the receiving node receives the first data packet (PKT=1), a PACK timer starts timing.
(56) Step 3: Data packets whose PKTs are 2, 3, and 4 are lost because of a link reason. A data packet whose SEQ is 5 and PKT is 5 is received, and in this case, the receiving node immediately returns a NACK. The NACK carries a releasable memory release SEQ=1 (the data packet whose PKT is 1 is already received), and a packet loss indication field NPKT=2 to 4 (START=2, and END=4). Herein, compared with the TCP in which a packet loss cannot be determined at this time, the receiving node may more quickly detect a lost data packet according to the rolling sequence number.
(57) Step 4: The sending node continues to transmit a data packet, and the data packet whose SEQ is 6 and PKT is 6 is lost.
(58) Step 5: A data packet whose SEQ is 7 and PKT is 7 is received, and the receiving node immediately sends a NACK (release SEQ=1, NPKT=6) to notify that the data packet whose PKT is 6 is lost.
(59) Step 6: The NACK (NPKT=2 to 4) previously sent by the receiving node is received by the sending node; it is determined, according to the PKT.SEQ.fwdarw.SEQ mapping table already established by the sending node, that the data packets whose SEQs are 2, 3, and 4 are lost; and the sending node immediately enters a retransmission phase: extracting the data packets whose SEQs are 2, 3, and 4, assigning new PKT. SEQs to the data packets, and performing retransmission. It should be noted that PKTs corresponding to the data packets whose SEQs are 2, 3, and 4 are already changed to 8, 9, and 10, and the PKT.SEQ.fwdarw.SEQ mapping table is updated. Further, the sending node releases, according to the release SEQ=1 carried in the NACK, a sending buffer occupied by the data packet whose SEQ is 1.
(60) Step 7: The receiving node receives the retransmitted data packets whose SEQs are 2, 3, and 4 and PKTs are 8, 9, and 10. Compared with the TCP in which all lost packets cannot be retransmitted at a time and only a lost packet whose sequence number is closest to an ACK number is retransmitted, in the data transmission system in this embodiment of the present disclosure, the sending node can retransmit all determined lost packets at a moment, so that the retransmission is more efficient.
(61) Step 8: The sending node receives the NACK (NPKT=6), and similar to the foregoing manner for processing the NACK, the data packet whose SEQ is 6 is retransmitted, where the SEQ of the retransmitted data packet is not changed, but the PKT is updated to 11.
(62) Step 9: The sending node continues to send a data packet whose SEQ is 8 and PKT is 12; and it is assumed that the retransmitted data packet whose SEQ is 6 and PKT is 11 is lost again because of a link problem.
(63) Step 10: When the data packet whose SEQ is 8 and PKT is 12 is received, the receiving node sends a NACK (release SEQ=5, NPKT=11) to notify the sending node that the data packet whose PKT is 11 is lost again (herein, the retransmitted packet whose SEQ is 6 is lost again).
(64) Step 11: The sending node continues to send data packets whose SEQs are 9 and 10 and PKTs are 13 and 14, and the data packets are received by the receiving node.
(65) Step 12: The sending node receives the NACK (release SEQ=5, NPKT=11), finds, by querying the mapping table, that the retransmitted data packet whose SEQ is 6 is lost again, and performs retransmission again, where the PKT is updated to 15. In addition, a sending buffer occupied by the data packets whose SEQs are 2 to 5 is released according to the release SEQ=5.
(66) Step 13: The receiving node receives the data packet whose SEQ is 6 and PKT is 15 (the data packet whose SEQ is 6 is retransmitted twice in total).
(67) Step 14: The sending node sends a data packet whose SEQ is 11 and PKT is 16 and a data packet whose SEQ is 12 and PKT is 17; and because of link quality, the data packet whose SEQ is 11 is lost.
(68) Step 15: After receiving the data packet whose SEQ is 12 and PKT is 17, the receiving node determines that the data packet whose PKT is 16 is lost, and sends a NACK (release SEQ=10, NPKT=16).
(69) Step 16: The sending node sends a data packet whose SEQ is 13 and PKT is 18 and a data packet whose SEQ is 14 and PKT is 19.
(70) Step 17: The receiving node receives the data packet whose SEQ is 13 and PKT is 18. At this time, because the PACK timer times out, the receiving node sends a PACK. Because the data packet whose SEQ is 11 is missed in a receiving buffer, data in the receiving buffer is inconsecutive, the data cannot be submitted to an application program in time, and the receiving buffer cannot be released. Therefore, in the PACK, Nseq=11, so as to notify the sending node that the data packet whose SEQ is 11 is not received, where the SEQ is an SEQ of an HOL packet. After the PACK is sent, the PACK timer is reset and restarts timing.
(71) Step 18: The sending node receives the NACK (release SEQ=10, NPKT=16), queries the mapping table, finds that the data packet whose SEQ is 11 is lost, and retransmits the data packet whose SEQ is 11, where the PKT of the retransmitted data packet is updated to 20. A sending buffer occupied by the data packets whose SEQs are 6 to 10 is released.
(72) Step 19: The sending node receives the PACK (release SEQ=10, Nseq=11), finds that the packet whose SEQ is 11 is lost and becomes an HOL packet blocking the receiving buffer, and retransmits the data packet whose SEQ is 11 and PKT is 21. Further, the sending node adjusts the transmission rate according to receiving rate and/or data packet loss rate information carried in the PACK.
(73) Step 20: The receiving node receives the data packet whose SEQ is 11 and PKT is 20, and further receives the data packet whose SEQ is 11 and PKT is 21, and then discards the data packet whose SEQ is 11 and PKT is 21.
(74) It can be seen from the foregoing procedure that the packet transmission rate of the sending node is fixed, and is a constant transmission rate. Unlike TCP window transmission, a congestion problem resulting from excessive data packets instantly injected into a network is not caused. Further, compared with the TCP, in a double-sequence-number mechanism, any lost data packet can be detected within an RTT, a determining method is relatively simple, and more time is saved compared with timeout retransmission used in the TCP.
(75) The following describes apparatuses provided by embodiments of the present disclosure. As shown in
(76) According to another aspect, referring to
(77) An embodiment of the present disclosure further provides a data transmission system. As shown in
(78) The sending node 13 includes a sending unit 133, a processing unit 132, and a receiving unit 131. The processing unit 132 is configured to encapsulate data of the application program running on the sending node 13 into multiple data packets. The sending unit 133 is configured to transmit the multiple data packets to the receiving node at an initial transmission rate. The receiving unit 131 is configured to receive packet loss feedback information from the receiving node 23. The sending unit 133 is further configured to retransmit a lost data packet based on the received packet loss feedback information, where the retransmitted data packet carries a new rolling sequence number. The receiving node 23 includes a sending unit 231, a processing unit 232, and a receiving unit 233. The receiving unit 233 is configured to receive the multiple data packets transmitted by the sending node 13 at the initial transmission rate. The processing unit 232 is configured to: after detecting at least one lost data packet according to a rolling sequence number of a data packet received by the receiving unit 233, send packet loss feedback information to the sending node 13 by using the sending unit 231, so as to instruct the sending node 13 to retransmit the lost data packet. It should be noted that the sending unit 133, the processing unit 132, and the receiving unit 131 are further configured to cooperate to implement the functions of the sending nodes in all of the foregoing method embodiments. The sending unit 133 sends a data packet under control of the processing unit 132. The receiving unit 131 receives the data packet under control of the processing unit 132. The processing unit 132 is further configured to determine a lost data packet according to a received control packet, and control the sending unit to retransmit the data packet. Optionally, the processing unit may further adjust the data transmission rate according to a control packet received by the receiving unit 131. Correspondingly, the sending unit 231, the processing unit 232, and the receiving unit 233 are further configured to cooperate to implement the functions of the receiving nodes in all of the foregoing method embodiments. Function division of each unit is similar to that of the sending node 13, or another division manner commonly used by a person skilled in the art is used.
(79) A person of ordinary skill in the art may understand that all or some of the steps of the methods in the embodiments may be implemented by a program instructing relevant hardware (such as a processor). The program may be stored in a computer readable storage medium. The storage medium may include: a ROM, a RAM, a magnetic disk, or an optical disc. A term “program” used in the embodiments of the present disclosure is widely understood as and includes but is not limited to: an instruction, an instruction set, code, a code segment, a subprogram, a software module, an application, a software package, a thread, a process, a function, firmware, middleware, or the like.
(80) The foregoing describes in detail the packet transmission method, the system, the user equipment, and the server that are provided in the embodiments of the present disclosure. In this specification, specific examples are used to describe the principle and implementation manners of the present disclosure, and the description of the embodiments is only intended to help understand the method and core idea of the present disclosure. In addition, a person of ordinary skill in the art may, based on the idea of the present disclosure, make modifications with respect to the specific implementation manners and the application scope. Therefore, the content of this specification shall not be construed as a limitation to the present disclosure.