Detecting change in a transport protocol window size without data transmission
First Claim
1. A method of detecting a change in a transport protocol window size performed by a transmission control protocol (TCP) process in a network element, comprising the computer-implemented steps of:
- receiving, from a TCP application, a first TCP segment that advertises a first receive window size of zero;
determining whether data needs to be sent to the TCP application, and only if so and in response to the receiving and determining;
starting a timer;
when the timer expires, creating and sending a second TCP segment that contains a first sequence number value equal to a second sequence number of sent but unacknowledged data minus one, and a segment length value of zero;
receiving a TCP ACK segment that acknowledges the second TCP segment and that contains a second receive window size;
determining whether the second receive window size is greater than a first value that is greater than or equal to one;
wherein the first value is based at least in part on a size that prevents data fragmentation;
sending the data to the TCP application only when the second receive window size is greater than the first value;
incrementing a counter when the data is not sent to the TCP application; and
re-performing the steps of creating and sending only when the counter is less than a second value.
1 Assignment
0 Petitions
Accused Products
Abstract
A method detects a change in TCP receive window size while preventing fragmentation of data. A TCP stack receives a segment that advertises a receive window size of zero. If data needs to be sent, and only if so, a timer is started. When the timer expires, a TCP segment that contains a first sequence number value equal to second sequence number representing sent but unacknowledged data minus one, and a segment length value of zero, is sent. Without sending a fragment of data, this triggers a peer TCP process to send an updated window size. A TCP ACK segment is received and contains an updated receive window size. If the updated receive window size is greater than a specified value, then the data is sent. Otherwise, a counter is incremented, and the steps are re-performed if the counter is less than a specified value.
104 Citations
31 Claims
-
1. A method of detecting a change in a transport protocol window size performed by a transmission control protocol (TCP) process in a network element, comprising the computer-implemented steps of:
-
receiving, from a TCP application, a first TCP segment that advertises a first receive window size of zero; determining whether data needs to be sent to the TCP application, and only if so and in response to the receiving and determining; starting a timer; when the timer expires, creating and sending a second TCP segment that contains a first sequence number value equal to a second sequence number of sent but unacknowledged data minus one, and a segment length value of zero; receiving a TCP ACK segment that acknowledges the second TCP segment and that contains a second receive window size; determining whether the second receive window size is greater than a first value that is greater than or equal to one;
wherein the first value is based at least in part on a size that prevents data fragmentation;sending the data to the TCP application only when the second receive window size is greater than the first value; incrementing a counter when the data is not sent to the TCP application; and re-performing the steps of creating and sending only when the counter is less than a second value. - View Dependent Claims (2, 3)
-
-
4. A method, comprising the computer-implemented steps of:
-
receiving, from a TCP application, a first data segment that comprises a first receive window size of zero; determining whether data needs to be sent to the TCP application; in response to the receiving and determining, creating and sending a second segment that contains a first sequence number value equal to a second sequence number of sent but unacknowledged data minus one, and a segment length value of zero; receiving a third segment that comprises a second receive window size; determining whether the second receive window size is greater than a first value that is greater than or equal to one;
wherein the first value is based at least in part on a size that prevents data fragmentation;sending data only when the second receive window size is greater than the first value. - View Dependent Claims (5, 6, 7, 8, 9, 10)
-
-
11. A volatile or non-volatile computer-readable medium carrying one or more sequences of instructions for detecting a change in a data transmission window size, which instructions, when executed by one or more processors that host a transmission control protocol (TCP) process in a network element, cause the one or more processors to perform the steps of:
-
receiving, from a TCP application, a first data segment that comprises a first receive window size of zero; determining whether data needs to be sent to the TCP application; in response to the receiving and determining, creating and sending a second segment that contains a first sequence number value equal to a second sequence number of sent but unacknowledged data minus one, and a segment length value of zero; receiving a third segment that comprises a second receive window size; determining whether the second receive window size is greater than a first value that is greater than or equal to one;
wherein the first value is based at least in part on a size that prevents data fragmentation;sending data only when the second receive window size is greater than the first value. - View Dependent Claims (12, 13, 14, 15, 16, 17)
-
-
18. A network element, comprising:
-
one or more processors; means for receiving, from a TCP application, a first data segment that comprises a first receive window size of zero; means for determining whether data needs to be sent to the TCP application; means for creating and sending, in response to the receiving and determining, a second segment that contains a first sequence number value equal to a second sequence number of sent but unacknowledged data minus one, and a segment length value of zero; means for receiving a third segment that comprises a second receive window size; means for determining whether the second receive window size is greater than a first value that is greater than or equal to one;
wherein the first value is based at least in part on a size that prevents data fragmentation;means for sending data only when the second receive window size is greater than the first value. - View Dependent Claims (19, 20, 21, 22, 23, 24)
-
-
25. An apparatus, comprising:
-
one or more processors; a network interface coupled to a network for communicating one or more packet flows to the network; a volatile or non-volatile computer-readable medium accessible to the one or more processors and carrying one or more sequences of instructions for preventing network reset attacks, which instructions, when executed by one or more processors that host a transmission control protocol (TCP) process in a network element, cause the one or more processors to perform the steps of; receiving, from a TCP application, a first data segment that comprises a first receive window size of zero; determining whether data needs to be sent to the TCP application; in response to the receiving and determining, creating and sending a second segment that contains a first sequence number value equal to a second sequence number of sent but unacknowledged data minus one, and a segment length value of zero; receiving a third segment that comprises a second receive window size; determining whether the second receive window size is greater than a first value that is greater than or equal to one;
wherein the first value is based at least in part on a size that prevents data fragmentation;sending data only when the second receive window size is greater than the first value. - View Dependent Claims (26, 27, 28, 29, 30, 31)
-
Specification