IP Library Granted Patent US 9,438,701
Granted Patent B2
US 9,438,701 · App. 13/887,004 · Granted Sep 6, 2016

Systems and methods for a SPDY to HTTP gateway

Inventors: Saravana Annamalaisami (Karnataka, IN); Ashok Kumar Jagadeeswaran (Karnataka, IN); Rajesh Joshi (Karnataka, IN)
Assignee: CITRIX SYSTEMS, INC.
H04L69/08H04L67/02H04L69/26
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,438,701
App. No.
13/887,004
Granted
Sep 6, 2016
Kind
B2
Abstract

The present disclosure is directed towards a system and method for providing a SPDY to HTTP gateway via a device intermediary to a plurality of clients and a server. An NPN handshake by the intermediary device may establish SPDY support. The intermediary device may receive and process one or more control frames via SPDY session with the client. The intermediary device may generate and transmit HTTP communication to server corresponding to SPDY control frames. The intermediary device may receive and process one or more HTTP responses from server. The intermediary device may generate and transmit SPDY communication via SPDY session to client corresponding to HTTP response.

Claims (30)

1. A method for providing a SPDY to HyperText Transfer Protocol (HTTP) gateway via a device intermediary to a plurality of clients and a server, the method comprising:

(a) receiving, by a device intermediary to a plurality of clients and a server, one or more control frames via a SPDY session with a client of the plurality of clients, the SDPY session established by the device responsive to receiving an empty Transport Layer Security (TLS) Next Protocol Negotiation (NPN) extension during a TLS handshake between the device and the client;

(b) decompressing, by the device, name-value pairs in the header block of the one or more control frames;

(c) identifying, by the device, in the decompressed name-value-pairs a predetermined set of headers; and

(d) generating, by the device responsive to the identification and for transmission to the server via HTTP, an HTTP request that comprises the predetermined set of headers from the one of more control frames of the SPDY session.

2. The method of claim 1 , wherein step (a) further comprises receiving, by the device, a request from the client to establish a Transport Layer Security (TLS) session with the server, identifying, by the device, from the request that a TLS Next Protocol Negotiation (NPN) extension is empty, transmitting, by the device responsive to the identification, a SPDY version and HTTP version; and establishing, by the device, an SPDY handler based on a version of the SPDY protocol selected by the client during an NPN handshake.

3. The method of claim 1 , wherein step (a) further comprises validating, by the device, a version and stream id of the one or more control frames.

4. The method of claim 1 , wherein step (a) further comprising accumulating, by the device, packets received from the client via the SPDY session if a length specified in a control frame of the one or more control frame is larger than a size of a current packet.

5. The method of claim 1 , further comprising demultiplexing, by the device, incoming SPDY streams received from the client via the SDPY session.

6. The method of claim 1 , wherein step (b) further comprising decompressing, by the device, one or more name-value pairs in the header block of the one or more control frames using zlib decompression.

7. The method of claim 1 , wherein step (c) further comprises parsing, by the device, output of decompression the name-value pairs corresponding to the predetermined set of headers comprising a URL, a VERSION and a METHOD header.

8. The method of claim 1 , wherein step (d) further comprises including, by the device, any remaining name-value pairs of the header block from the control frame in the generated HTTP request.

9. The method of claim 1 , wherein step (d) further comprises inserting, by the device, a stream id header in an HTTP header of the generated HTTP request, the stream id indicating that the HTTP request is created from an SPDY session.

10. The method of claim 1 , further comprising receiving, by the device, one or more data frames from the client via the SPDY session, de-framing the data frames, generating one or more HTTP requests with data from the data frames and transmitting the one or more HTTP requests to the server.

11. A system for providing a SPDY to HyperText Transfer Protocol (HTTP) gateway via a device intermediary to a plurality of clients and a server, the system comprising:

a device intermediary to a plurality of clients and a server, the device configured to receive one or more control frames via a SPDY session with a client of the plurality of clients;

wherein the device is configured to:

establish the SPDY session responsive to receiving an empty Transport Layer Security (TLS) Next Protocol Negotiation (NPN) extension during a TLS handshake between the device and the client

decompress name-value pairs in the header block of the one or more control frames;

identify in the decompressed name-value-pairs a predetermined set of headers; and

generate, responsive to the identification and for transmission to the server via HTTP, an HTTP request that comprises the predetermined set of headers from the one of more control frames of the SPDY session.

12. The system of claim 11 , wherein step (a) further comprises receiving, by the device, a request from the client to establish a Transport Layer Security (TLS) session with the server, identifying, by the device, from the request that a TLS Next Protocol Negotiation (NPN) extension is empty, transmitting, by the device responsive to the identification, a SPDY version and HTTP version; and establishing, by the device, an SPDY handler based on a version of the SPDY protocol selected by the client during an NPN handshake.

13. The system of claim 11 , wherein the device is further configured to validate a version and stream id of the one or more control frames.

14. The system of claim 11 , wherein the device is further configured to accumulate packets received from the client via the SPDY session if a length specified in a control frame of the one or more control frame is larger than a size of a current packet.

15. The system of claim 11 , the device is further configured to demultiplex incoming SPDY streams received from the client via the SDPY session.

16. The system of claim 11 , wherein the device is further configured to decompress one or more name-value pairs in the header block of the one or more control frames using zlib decompression.

17. The system of claim 11 , wherein the device is further configured to parse output of decompression the name-value pairs corresponding to the predetermined set of headers comprising a URL, a VERSION and a METHOD header.

18. The system of claim 11 , wherein the device is further configured to include any remaining name-value pairs of the header block from the control frame in the generated HTTP request.

19. The system of claim 11 , wherein the device is further configured to insert a stream id header in an HTTP header of the generated HTTP request, the stream id indicating that the HTTP request is created from the SPDY session.

20. The system of claim 11 , wherein the device is further configured to receive one or more data frames from the client via the SPDY session, de-frame the data frames, generate one or more HTTP requests with data from the data frames and transmit the one or more HTTP requests 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 →
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 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 →
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 →
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 →
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 →
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 Aug 29, 2013
From: ANNAMALAISAMI, SARAVANA; JAGADEESWARAN, ASHOK KUMAR; JOSHI, RAJESH
To: CITRIX SYSTEMS, INC.
Reel/Frame 031109/0569 →
Continuity (2)
Provisional Application 61643248 · May 5, 2012
Related Publication 20130297814A1 · Nov 7, 2013