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;
starting a timer;
when the timer expires, creating and sending a second TCP segment that contains a first sequence number value equal to 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 window size is greater than a specified value;
sending the data to the TCP application only when the second receive window size is greater than the specified 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 specified 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.
61 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;
starting a timer;
when the timer expires, creating and sending a second TCP segment that contains a first sequence number value equal to 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 window size is greater than a specified value;
sending the data to the TCP application only when the second receive window size is greater than the specified 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 specified value. - View Dependent Claims (2, 3)
-
-
4. A method, comprising the computer-implemented steps of:
-
receiving a first data segment that comprises a first receive window size of zero;
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;
sending data only when the second receive window size is greater than a specified value. - View Dependent Claims (5, 6, 7, 8, 9, 10)
-
-
11. A 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 a first data segment that comprises a first receive window size of zero;
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;
sending data only when the second receive window size is greater than a specified value. - View Dependent Claims (12, 13, 14, 15, 16, 17)
-
-
18. A network element, comprising:
-
means for receiving a first data segment that comprises a first receive window size of zero;
means for 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;
means for receiving a third segment that comprises a second receive window size;
means for sending data only when the second receive window size is greater than a specified value. - View Dependent Claims (19, 20, 21, 22, 23, 24)
-
-
25. A network element, comprising:
-
one or more processors;
a network interface coupled to a network for communicating one or more packet flows to the network;
a 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 a first data segment that comprises a first receive window size of zero;
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;
sending data only when the second receive window size is greater than a specified value. - View Dependent Claims (26, 27, 28, 29, 30, 31)
-
Specification