Avoiding unwanted TCP retransmissions using optimistic window adjustments
First Claim
1. A method of communicating a plurality of data segments, the data segments corresponding to a sequential order, via the Transmission Control Protocol (TCP), the method comprising:
- receiving from a sender a first data segment, the first data segment being one of the plurality of data segments;
sending to the sender an acknowledgement of the first data segment, the acknowledgement of the first data segment including a highest byte sequence number of the first data segment plus one;
receiving from the sender a second data segment, the second data segment being one of the plurality of data segments subsequent to the first data segment in the sequential order;
inferring at least one missing data segment between the first and second data segments; and
sending to the sender an acknowledgement of the second data segment that is sequentially after the at least one missing data segment based on the inference of the at least one missing data segment, the acknowledgement of the second data segment including the highest byte sequence number of the first data segment plus one.
1 Assignment
0 Petitions
Accused Products
Abstract
A method, an apparatus, and a computer program product for communicating data via the Transmission Control Protocol (TCP) are provided. The apparatus receives from a sender a plurality of data segments according to a sequential order, infers at least one missing data segment in the sequential order, and acknowledges to the sender receipt of a highest byte sequence number of a received data segment plus one based on the inference of the at least one missing data segment. The apparatus also adjusts a receive window based on at least one of: the inference of the at least one missing data segment, or a round-trip-time of a TCP connection, wherein the receive window indicates a buffer capacity for receiving data segments. The apparatus further advertises the adjusted receive window to the sender.
54 Citations
34 Claims
-
1. A method of communicating a plurality of data segments, the data segments corresponding to a sequential order, via the Transmission Control Protocol (TCP), the method comprising:
-
receiving from a sender a first data segment, the first data segment being one of the plurality of data segments; sending to the sender an acknowledgement of the first data segment, the acknowledgement of the first data segment including a highest byte sequence number of the first data segment plus one; receiving from the sender a second data segment, the second data segment being one of the plurality of data segments subsequent to the first data segment in the sequential order; inferring at least one missing data segment between the first and second data segments; and sending to the sender an acknowledgement of the second data segment that is sequentially after the at least one missing data segment based on the inference of the at least one missing data segment, the acknowledgement of the second data segment including the highest byte sequence number of the first data segment plus one. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method of communicating a plurality of data segments, the data segments corresponding to a sequential order, via the Transmission Control Protocol (TCP), the method comprising:
-
transmitting to a receiver a first data segment, the first data segment being one of the plurality of data segments; receiving from the receiver a first acknowledgement, the first acknowledgement including a highest sequence number of the first data segment plus one; transmitting to the receiver a second data segment, the second data segment being the next data segment subsequent to the first data segment in the sequential order; transmitting to the receiver a third data segment, the third data segment being one of the plurality of data segments subsequent to the second data segment in the sequential order; receiving from the receiver a second acknowledgement after transmitting the third data segment; inferring, based on the second acknowledgement, that the second data segment was not received by the receiver, wherein the second acknowledgement is received in response to the third data segment that is transmitted sequentially after the second data segment not received by the receiver, the second acknowledgement including the highest sequence number of the first data segment plus one; and retransmitting the second data segment to the receiver. - View Dependent Claims (9, 10)
-
-
11. An apparatus for communicating a plurality of data segments, the data segments corresponding to a sequential order, via the Transmission Control Protocol (TCP), the apparatus comprising:
-
means for receiving from a sender a first data segment, the first data segment being one of the plurality of data segments; means for sending to the sender an acknowledgement of the first data segment, the acknowledgement of the first data segment including a highest byte sequence number of the first data segment plus one; means for receiving from the sender a second data segment, the second data segment being one of the plurality of data segments subsequent to the first data segment in the sequential order; means for inferring at least one missing data segment between the first and second data segments; and means for sending to the sender an acknowledgement of the second data segment that is sequentially after the at least one missing data segment based on the inference of the at least one missing data segment, the acknowledgement of the second data segment including the highest byte sequence number of the first data segment plus one. - View Dependent Claims (12, 13, 14, 15, 16, 17)
-
-
18. An apparatus for communicating a plurality of data segments, the data segments corresponding to a sequential order, via the Transmission Control Protocol (TCP), the apparatus comprising:
-
means for transmitting to a receiver a first data segment, the first data segment being one of the plurality of data segments; means for receiving from the receiver a first acknowledgement, the first acknowledgement including a highest sequence number of the first data segment plus one; means for transmitting to the receiver a second data segment, the second data segment being the next data segment subsequent to the first data segment in the sequential order; means for transmitting to the receiver a third data segment, the third data segment being one of the plurality of data segments subsequent to the second data segment in the sequential order; means for receiving from the receiver a second acknowledgement after transmitting the third data segment; means for inferring, based on the second acknowledgement, that the second data segment was not received by the receiver, wherein the second acknowledgement is received in response to the third data segment that is transmitted sequentially after the second data segment not received by the receiver, the second acknowledgement including the highest sequence number of the first data segment plus one; and means for retransmitting the second data segment to the receiver. - View Dependent Claims (19, 20)
-
-
21. An apparatus for communicating a plurality of data segments, the data segments corresponding to a sequential order, via the Transmission Control Protocol (TCP), the apparatus comprising:
-
a memory; at least one processor coupled to the memory and configured to; receive from a sender a first data segment, the first data segment being one of the plurality of data segments; send to the sender an acknowledgement of the first data segment, the acknowledgement of the first data segment including a highest byte sequence number of the first data segment plus one; receive from the sender a second data segment, the second data segment being one of the plurality of data segments subsequent to the first data segment in the sequential order; infer at least one missing data segment between the first and second data segments; and send to the sender an acknowledgement of the second data segment that is sequentially after the at least one missing data segment based on the inference of the at least one missing data segment, the acknowledgement of the second data segment including the highest byte sequence number of the first data segment plus one. - View Dependent Claims (22, 23, 24, 25, 26, 27)
-
-
28. An apparatus for communicating a plurality of data segments, the data segments corresponding to a sequential order, via the Transmission Control Protocol (TCP), the apparatus comprising:
-
a memory; at least one processor coupled to the memory and configured to; transmit to a receiver a first data segment, the first data segment being one of the plurality of data segments; receive from the receiver a first acknowledgement, the first acknowledgement including a highest sequence number of the first data segment plus one; transmit to the receiver a second data segment, the second data segment being the next data segment subsequent to the first data segment in the sequential order; transmit to the receiver a third data segment, the third data segment being one of the plurality of data segments subsequent to the second data segment in the sequential order; receive from the receiver a second acknowledgement after transmitting the third data segment; infer, based on the second acknowledgement, that the second data segment was not received by the receiver, wherein the second acknowledgement is received in response to the third data segment that is transmitted sequentially after the second data segment not received by the receiver, the second acknowledgement including the highest sequence number of the first data segment plus one; and retransmit the second data segment to the receiver. - View Dependent Claims (29, 30)
-
-
31. A non-transitory computer-readable medium for communicating data a plurality of data segments, the data segments corresponding to a sequential order, via the Transmission Control Protocol (TCP), the non-transitory computer-readable medium comprising code for:
-
receiving from a sender a first data segment, the first data segment being one of the plurality of data segments; sending to the sender an acknowledgement of the first data segment, the acknowledgement of the first data segment including a highest byte sequence number of the first data segment plus one; receiving from the sender a second data segment, the second data segment being one of the plurality of data segments subsequent to the first data segment in the sequential order; inferring at least one missing data segment between the first and second data segments; and sending to the sender an acknowledgement of the second data segment that is sequentially after the at least one missing data segment based on the inference of the at least one missing data segment, the acknowledgement of the second data segment including the highest byte sequence number of the first data segment plus one.
-
-
32. A non-transitory computer-readable medium for communicating data a plurality of data segments, the data segments corresponding to a sequential order, via the Transmission Control Protocol (TCP), the non-transitory computer-readable medium comprising code for:
-
transmitting to a receiver a first data segment, the first data segment being one of the plurality of data segments; receiving from the receiver a first acknowledgement, the first acknowledgement including a highest sequence number of the first data segment plus one; transmitting to the receiver a second data segment, the second data segment being the next data segment subsequent to the first data segment in the sequential order; transmitting to the receiver a third data segment, the third data segment being one of the plurality of data segments subsequent to the second data segment in the sequential order; receiving from the receiver a second acknowledgement after transmitting the third data segment; inferring, based on the second acknowledgement, that the second data segment was not received by the receiver, wherein the second acknowledgement is received in response to the third data segment that is transmitted sequentially after the second data segment not received by the receiver, the second acknowledgement including the highest sequence number of the first data segment plus one; and retransmitting the second data segment to the receiver. - View Dependent Claims (33, 34)
-
Specification