IP Library Granted Patent US 9,560,172
Granted Patent B2
US 9,560,172 · App. 13/887,746 · Granted Jan 31, 2017

Stateless recognition of keep-alive packets

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,560,172
App. No.
13/887,746
Granted
Jan 31, 2017
Kind
B2
Abstract

A capability is provided for statelessly recognizing Transmission Control Protocol (TCP) keep-alive packets. A server receives a TCP SYN packet including an initial client sequence number and selects an initial server sequence number for the TCP connection based on the parity of the initial client sequence number and a parity rule. A server receives a TCP packet from a client and uses a parity rule for determining whether to manipulate a TCP response packet to be sent by the server to the client responsive to the received TCP packet (to ensure that the next TCP packet to be sent by the client is not incorrectly identified as a TCP keep-alive packet). A network device receives a TCP packet and uses a parity rule to determine whether the TCP packet is a TCP keep-alive packet. The parity rule is indicative of an expected parity of TCP keep-alive packets.

Claims (61)

1. An apparatus, comprising:

a processor and a memory communicatively connected to the processor, the processor configured to:

receive a Transmission Control Protocol (TCP) SYN packet comprising an initial client sequence number for a TCP connection;

determine a parity of the initial client sequence number;

select an initial server sequence number for the TCP connection based on the parity of the initial client sequence number and a parity rule supported by a network device, wherein the initial server sequence number for the TCP connection has a parity matching the parity of the initial client sequence number or has a parity opposite the parity of the initial client sequence number based on a determination that the parity rule indicates that the parity of a TCP keep-alive packet is to be odd or even, respectively;

generate a TCP response packet including the initial server sequence number; and

propagate the TCP response packet.

2. The apparatus of claim 1 , wherein the TCP response packet comprises a TCP SYN+ACK packet.

3. The apparatus of claim 1 , wherein the processor is configured to propagate the TCP response packet toward a load balancer.

4. An apparatus, comprising:

a processor and a memory communicatively connected to the processor, the processor configured to:

receive a Transmission Control Protocol (TCP) packet of a client, the received TCP packet comprising a client sequence number and a client acknowledgment number;

determine, based on the client sequence number and the client acknowledgment number, a parity of a next TCP response packet to be sent by the client in response to a TCP response packet to be sent to the client responsive to the received TCP packet;

determine, based on the parity of the next TCP response packet to be sent by the client and a parity rule, whether to manipulate the TCP response packet to be sent to the client generate the TCP response packet to be sent to the client; and

propagate the TCP response packet to be sent to the client.

5. The apparatus of claim 4 , wherein, to determine the parity of the next TCP response packet to be sent by the client, the processor is configured to:

determine, based on the client sequence number and a data length of the received TCP packet, a next client sequence number for the next TCP response packet to be sent by the client;

determine, based on the client acknowledgment number and a data length of the TCP response packet to be sent to the client, a next client acknowledgment number for the next TCP response packet to be sent by the client; and

determine the parity of the next TCP response packet to be sent by the client based on the next client sequence number and the next client acknowledgment number.

6. The apparatus of claim 5 , wherein the processor is configured to determine the next client sequence number for the next TCP response packet to be sent by the client as a sum of the client sequence number and the data length of the received TCP packet.

7. The apparatus of claim 5 , wherein the processor is configured to determine the next client acknowledgment number for the next TCP response packet to be sent by the client as a sum of the client acknowledgment number and the data length of the TCP response packet to be sent to the client.

8. The apparatus of claim 5 , wherein the processor is configured to determine the parity of the next TCP response packet to be sent by the client based on ((X+Y) & 1), wherein X is the next client sequence number and Y is the next client acknowledgment number.

9. The apparatus of claim 4 , wherein the parity rule indicates an expected parity of a TCP keep-alive packet.

10. The apparatus of claim 9 , wherein, to determine whether to manipulate the TCP response packet to be sent to the client, the processor is configured to:

determine whether the parity of the next TCP response packet to be sent by the client matches the expected parity of the TCP keep-alive packet.

11. The apparatus of claim 10 , wherein the processor is configured to:

based on a determination that the parity of the next TCP response packet to be sent by the client does not match the expected parity of the TCP keep-alive packet, generate the TCP response packet to be sent to the client without manipulating the TCP response packet to be sent to the client.

12. The apparatus of claim 4 , wherein the processor is configured to manipulate the TCP response packet to be sent to the client by:

based on a determination that the parity of the next TCP response packet to be sent by the client matches the expected parity of the TCP keep-alive packet, generate the TCP response packet to be sent to the client including manipulating the TCP response packet to be sent to the client.

13. An apparatus, comprising:

a processor and a memory communicatively connected to the processor, the processor configured to:

receive a Transmission Control Protocol (TCP) packet of a client, the TCP packet comprising a client sequence number and a client acknowledgment number;

determine a parity of the TCP packet based on the client sequence number and the client acknowledgment number;

determine whether the TCP packet is a TCP keep-alive packet based on the parity of the TCP packet and a parity rule; and

based on a determination that the TCP packet is not a TCP keep-alive packet, process the TCP packet and propagate the TCP packet.

14. The apparatus of claim 13 , wherein the processor is configured to determine the parity of the TCP packet based on ((X+Y) & 1), wherein X is the client sequence number and Y is the client acknowledgment number.

15. The apparatus of claim 13 , wherein the parity rule indicates an expected parity of a TCP keep-alive packet.

16. The apparatus of claim 15 , wherein, to determine whether the TCP packet is a TCP keep-alive packet, the processor is configured to:

determine whether the parity of the TCP packet matches the expected parity of a TCP keep-alive packet.

17. The apparatus of claim 13 , wherein the processor is configured to-the TCP packet toward a server.

18. An apparatus, comprising:

a processor and a memory communicatively connected to the processor, the processor configured to:

receive a synchronization message comprising an initial client sequence number for a connection;

determine a parity of the initial client sequence number;

select an initial server sequence number for the connection based on the parity of the initial client sequence number and a parity rule supported by a network device, wherein the initial server sequence number for the connection has a parity matching the parity of the initial client sequence number or has a parity opposite the parity of the initial client sequence number based on a determination that the parity rule indicates that the parity of a keep-alive packet is to be odd or even, respectively;

generate a response message including the initial server sequence number; and

propagate the response message.

19. The apparatus of claim 18 , wherein the response message comprise a synchronization-acknowledgment message.

20. The apparatus of claim 18 , wherein the processor is configured to propagate the response message toward a load balancer.

21. An apparatus, comprising:

a processor and a memory communicatively connected to the processor, the processor configured to:

receive a Transmission Control Protocol (TCP) packet of a client, the TCP packet comprising a client sequence number and a client acknowledgment number;

determine a parity of the TCP packet based on the client sequence number and the client acknowledgment number;

determine whether the TCP packet is a TCP keep-alive packet based on the parity of the TCP packet and a parity rule; and

based on a determination that the TCP packet is a TCP keep-alive packet, generate a TCP response packet and propagate the TCP response packet.

22. The apparatus of claim 21 , wherein the processor is configured to determine the parity of the TCP packet based on ((X+Y) & 1), wherein X is the client sequence number and Y is the client acknowledgment number.

23. The apparatus of claim 21 , wherein the parity rule indicates an expected parity of a TCP keep-alive packet.

24. The apparatus of claim 23 , wherein, to determine whether the TCP packet is a TCP keep-alive packet, the processor is configured to:

determine whether the parity of the TCP packet matches the expected parity of a TCP keep-alive packet.

25. The apparatus of claim 21 , wherein the TCP response packet comprises a TCP keep-alive response packet.

26. The apparatus of claim 21 , wherein the processor is configured to propagate the TCP response packet toward the client.

Assignments (14)
PATENT SECURITY AGREEMENT Recorded Aug 6, 2024
From: RPX CORPORATION; RPX CLEARINGHOUSE LLC
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 068328/0674 →
RELEASE OF LIEN ON PATENTS Recorded Aug 5, 2024
From: BARINGS FINANCE LLC
To: RPX CORPORATION
Reel/Frame 068328/0278 →
PATENT SECURITY AGREEMENT Recorded Apr 22, 2023
From: RPX CORPORATION
To: BARINGS FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 063429/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 28, 2021
From: PROVENANCE ASSET GROUP LLC
To: RPX CORPORATION
Reel/Frame 059352/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 30, 2021
From: NOKIA US HOLDINGS INC.
To: PROVENANCE ASSET GROUP HOLDINGS LLC; PROVENANCE ASSET GROUP LLC
Reel/Frame 058363/0723 →
RELEASE OF SECURITY INTEREST Recorded Nov 30, 2021
From: CORTLAND CAPITAL MARKETS SERVICES LLC
To: PROVENANCE ASSET GROUP HOLDINGS LLC; PROVENANCE ASSET GROUP LLC
Reel/Frame 058983/0104 →
ASSIGNMENT AND ASSUMPTION AGREEMENT Recorded Feb 14, 2019
From: NOKIA USA INC.
To: NOKIA US HOLDINGS INC.
Reel/Frame 048370/0682 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2017
From: NOKIA TECHNOLOGIES OY; NOKIA SOLUTIONS AND NETWORKS BV; ALCATEL LUCENT SAS
To: PROVENANCE ASSET GROUP LLC
Reel/Frame 043877/0001 →
SECURITY INTEREST Recorded Sep 13, 2017
From: PROVENANCE ASSET GROUP HOLDINGS, LLC; PROVENANCE ASSET GROUP LLC
To: NOKIA USA INC.
Reel/Frame 043879/0001 →
SECURITY INTEREST Recorded Sep 13, 2017
From: PROVENANCE ASSET GROUP HOLDINGS, LLC; PROVENANCE ASSET GROUP, LLC
To: CORTLAND CAPITAL MARKET SERVICES, LLC
Reel/Frame 043967/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 3, 2014
From: CREDIT SUISSE AG
To: ALCATEL-LUCENT CANADA INC.
Reel/Frame 033683/0191 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 2, 2014
From: ALCATEL-LUCENT CANADA INC.
To: ALCATEL LUCENT
Reel/Frame 033231/0434 →
SECURITY AGREEMENT Recorded Jul 22, 2013
From: ALCATEL LUCENT CANADA INC.
To: CREDIT SUISSE AG
Reel/Frame 030851/0623 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2013
From: VAN BEMMEL, JEROEN
To: ALCATEL-LUCENT CANADA INC.
Reel/Frame 030355/0791 →