IP Library › Granted Patent US 10,375,212
Granted Patent B2
US 10,375,212 · App. 15/403,690 · Granted Aug 6, 2019

Systems and methods for improving the performance of a computer network using multiplexed application layer streams of network traffic

Inventors: Praveen Raja Dhanabalan (Bangalore, IN); Tarun Kumar Hukmichand (Bangalore, IN)
Assignee: Citrix Systems, Inc.
H04L67/42H04L43/10H04L47/193H04L47/27H04L67/02H04L67/28H04L69/16H04L69/329H04L41/046H04L43/08H04L69/163
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 10,375,212
App. No.
15/403,690
Granted
Aug 6, 2019
Kind
B2
Abstract

Described embodiments improve the performance of a computer network using multiplexed application layer streams of network traffic. Multiplexed application layer streams of network traffic from the client to the server can be received via a first transport control protocol (TCP) connection. The multiplexed application layer streams of network traffic can include a first data packet with a first sequence number. The first data packet with the first sequence number can be forwarded to the server via a second TCP connection. A ping frame of an application layer protocol can be transmitted to the client to cause the client to increase a next sequence number. A second data packet can be received from the client with the next sequence number including a second sequence number. The second sequence number of the second data packet can be adjusted to be a third sequence number expected by the second TCP connection.

Claims (48)

1. A method for improving performance of a computer network, the method comprising:

receiving, by a device intermediary to a client and a server, multiplexed application layer streams of network traffic from the client to the server via a first transport control protocol (TCP) connection between the device and the client, the multiplexed application layer streams of network traffic including a first data packet with a first sequence number, the device forwarding the first data packet with the first sequence number to the server via a second TCP connection between the device and the server;

transmitting, by the device via the first TCP connection, a hypertext transfer protocol (HTTP) ping frame of an application layer protocol to the client to cause the client to increase a next sequence number used for the first TCP connection by a size of a data payload of the HTTP ping frame;

receiving, by the device, a HTTP ping response frame from the client, the HTTP ping response frame transmitted by the client responsive to the HTTP ping frame;

receiving, by the device via the first TCP connection, a second data packet from the client with the next sequence number comprising a second sequence number increased by the size of the data payload of the HTTP ping frame;

adjusting, by the device, the second sequence number of the second data packet to be a third sequence number expected by the second TCP connection between the device and the server; and

forwarding, by the device via the second TCP connection, the second data packet having the third sequence number to the server.

2. The method of claim 1 , further comprising:

determining, by the device, a number of streams included in the multiplexed application layer streams of network traffic;

selecting, by the device, a number of additional HTTP ping frames to be transmitted to the client, based on the number of streams included in the multiplexed application layer streams of network traffic; and

transmitting, by the device, the selected number of additional HTTP ping frames to the client.

3. The method of claim 2 , further comprising selecting, by the device, the number of additional HTTP ping frames to be transmitted to the client based at least in part on a priority of the multiplexed application layer streams of network traffic.

4. The method of claim 1 , wherein the multiplexed application layer streams of network traffic correspond to two or more requests formatted according to the HTTP 2.0 standard, and wherein the application layer protocol of the HTTP ping frame comprises HTTP 2.0.

5. The method of claim 1 , further comprising:

discarding, by the device, the received HTTP ping response frame.

6. The method of claim 1 , wherein adjusting the second sequence number of the second data packet to be the third sequence number further comprises reducing, by the device, the second sequence number by the size of the data payload of the HTTP ping frame to generate the third sequence number.

7. The method of claim 1 , wherein transmitting, by the device, the HTTP ping frame to the client causes the client to increase a size of a congestion window maintained by the client.

8. The method of claim 1 , further comprising transmitting, by the device, via the second TCP connection between the device and the server, a second HTTP ping frame of the application layer protocol to the server to cause the server to increase a next sequence number used for the second TCP connection by a size of a data payload of the second HTTP ping frame.

9. The method of claim 8 , further comprising:

receiving, by the device via the second TCP connection, a third data packet from the server with the next sequence number comprising a fourth sequence number increased by the size of the data payload of the second HTTP ping frame; and

adjusting, by the device, the fourth sequence number of the third data packet to be a fifth sequence number expected by the first TCP connection between the device and the client.

10. The method of claim 8 , further comprising:

transmitting, by the device, a plurality of additional HTTP ping frames to the client; and

for each additional HTTP ping frame sent to the client, transmitting, by the device, a corresponding HTTP ping frame to the server.

11. A system for improving performance of a computer network, the system comprising:

a device intermediary to a client and a server, the device comprising a network interface configured to:

receive multiplexed application layer streams of network traffic from the client to the server via a first transport control protocol (TCP) connection between the device and the client, the multiplexed application layer streams of network traffic including a first data packet with a first sequence number; and

forward the first data packet with the first sequence number to the server via a second TCP connection between the device and the server;

a ping frame generator configured to transmit, via the first TCP connection, a hypertext transfer protocol (HTTP) ping frame of an application layer protocol to the client to cause the client to increase a next sequence number used for the first TCP connection by a size of a data payload of the HTTP ping frame, wherein the network interface is further configured to:

receive a HTTP ping response frame from the client, the HTTP ping response frame transmitted by the client responsive to the HTTP ping frame; and

receive, via the first TCP connection, a second data packet from the client with the next sequence number comprising a second sequence number increased by the size of the data payload of the HTTP ping frame; and

a sequence number adjuster configured to adjust the second sequence number of the second data packet to be a third sequence number expected by the second TCP connection between the device and the server, wherein the network interface is further configured to forward, via the second TCP connection, the second data packet having the third sequence number to the server.

12. The system of claim 11 , further comprising a stream counter configured to determine a number of streams included in the multiplexed application layer streams of network traffic, wherein the ping frame generator is further configured to:

select a number of additional HTTP ping frames to be transmitted to the client, based on the number of streams included in the multiplexed application layer streams of network traffic; and

transmit the selected number of additional HTTP ping frames to the client.

13. The system of claim 12 , wherein the ping frame generator is further configured to select the number of additional HTTP ping frames to be transmitted to the client based at least in part on a priority of the multiplexed application layer streams of network traffic.

14. The system of claim 11 , wherein the multiplexed application layer streams of network traffic correspond to two or more requests formatted according to the HTTP 2.0 standard, and wherein the application layer protocol of the HTTP ping frame comprises HTTP 2.0.

15. The system of claim 11 , wherein the network interface is further configured to:

discard the received HTTP ping response frame.

16. The system of claim 11 , wherein the sequence number adjuster is further configured to adjust the second sequence number of the second data packet to be the third sequence number by reducing the second sequence number by the size of the data payload of the HTTP ping frame to generate the third sequence number.

17. The system of claim 11 , wherein the ping frame generator is further configured to transmit the HTTP ping frame to the client to cause the client to increase a size of a congestion window maintained by the client.

18. The system of claim 11 , wherein the network interface is further configured to transmit, via the second TCP connection between the device and the server, a second HTTP ping frame of the application layer protocol to the server to cause the server to increase a next sequence number used for the second TCP connection by a size of a data payload of the second HTTP ping frame.

19. The system of claim 18 , wherein:

the network interface is further configured to receive, via the second TCP connection, a third data packet from the server with the next sequence number comprising a fourth sequence number increased by the size of the data payload of the second HTTP ping frame; and

the sequence number adjuster is further configured to adjust the fourth sequence number of the third data packet to be a fifth sequence number expected by the first TCP connection between the device and the client.

20. The system of claim 18 , wherein the ping frame generator is further configured to:

transmit a plurality of additional HTTP ping frames to the client; and

transmit, for each additional HTTP ping frame sent to the client, a corresponding HTTP ping frame to the server.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 11, 2017
From: DHANABALAN, PRAVEEN RAJA; HUKMICHAND, TARUN KUMAR
To: CITRIX SYSTEMS, INC.
Reel/Frame 040949/0401 →
Continuity (1)
Related Publication 20180198890A1 · Jul 12, 2018