IP Library Granted Patent US 9,967,331
Granted Patent B1
US 9,967,331 · App. 14/791,016 · Granted May 8, 2018

Method, intermediate device and computer program code for maintaining persistency

Inventors: Uri Hasson (Kiryat Ono, IL); Yiftach Shoolman (Modi'in, IL)
Assignee: F5 Networks, Inc.
H04L67/1027H04L67/02H04L67/1004H04L67/141H04L67/146H04L67/34H04L67/42H04L67/1014H04L69/329
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,967,331
App. No.
14/791,016
Granted
May 8, 2018
Kind
B1
Abstract

A method for maintaining server persistency, including: (a) receiving, by an intermediate entity, a first session request from client to receive a service from a server out of a plurality of servers that are connected to the intermediate entity; (b) selecting a server out of the plurality of servers and directing to the selected server information indicative of the first session request; (c) receiving a response of the selected server to the information indicative of the first session request; (d) analyzing the response of the selected server, to provide an analysis result indicative whether the response includes code to be executed by the client and includes at least one instruction that facilitates sending, by the client, another request, to receive a service from a server out of the plurality of servers; (e) modifying, based on the analysis result, the code by adding information that will cause the client to send a selected server identifier in association to the sending of the other request; and (f) sending a modified response to the client, wherein the modified response includes the modified code.

Claims (54)

1. A method for maintaining server persistency, comprising:

receiving, by an intermediate entity, a first session request from client to receive a service from a server out of a plurality of servers that are coupled to the intermediate entity;

selecting a server out of the plurality of servers and directing to the selected server information indicative of the first session request;

receiving a response of the selected server to the information indicative of the first session request;

analyzing the response of the selected server, to provide an analysis result indicative whether the response comprises code to be executed by the client and comprises at least one instruction that facilitates sending, by the client, another request to receive a service from a server out of the plurality of servers;

modifying the code by adding information that causes the client to send a selected server identifier in association to the sending of the other request, wherein the code is parsed and marked at each location where each call is made to the client, and wherein the information added at each marked location for each call includes a unique HTTP header that includes the selected server identifier independent of a dedicated HTTP cookie; and

sending a modified response to the client, wherein the modified response comprises the modified code.

2. The method according to claim 1 wherein the method is executed without using dedicated HTTP cookies.

3. The method according to claim 1 comprising analyzing the response of the selected server to locate at least one instruction that is executed by a browser of the client and comprises a call to an entity to enable sending the other request, wherein the entity is selected from a group consisting of an operating system of the client and an API layer between the code and the operating system of the client.

4. The method according to claim 1 , comprising adding the HTTP header for each call instruction of the code, wherein each HTTP header comprises the selected server identifier, if the other request and the modified response are associated with a same site.

5. The method according to claim 1 comprising:

receiving, by the intermediate node, the other request from the client;

removing the selected server identifier to provide a modified other request; and

sending to the selected server information indicative of the modified other request.

6. The method according to claim 1 comprising:

receiving a selected server response that comprises compressed code;

de-compressing the compressed code to provide de-compressed code;

wherein the analyzing comprises analyzing the de-compressed code;

wherein the modifying comprises modifying, in response to the analysis result, the decompressed code by adding information that will cause the client to send the selected server identifier in association to the sending of the other request;

compressing the modified de-compressed code to provide a compressed modified code; and

sending a modified response to the client, wherein the modified response comprises the compressed modified code.

7. The method according to claim 1 comprising:

receiving a selected server response that comprises encrypted code;

decrypting the encrypted code to decrypted code;

wherein the analyzing comprises analyzing the decrypted code;

wherein the modifying comprises modifying, in response to the analysis result, the decrypted code by adding information that causes the client to send the selected server identifier in association to the sending of the other request;

encrypting the modified decrypted code to provide an encrypted modified code; and

sending a modified response to the client, wherein the modified response comprises the encrypted modified code.

8. The method according to claim 1 , comprising modifying, in response to the analysis result, the code by adding information that will cause the client to send the selected server identifier in association to the sending of the other request if the other request and the modified response are associated with a same site.

9. An intermediate device, comprising:

a memory that stores instructions;

a circuit that executes the stored instructions to provide:

a client interface that receives a first session request from a client to receive a service from a server out of a plurality of servers;

a server selector that selects a server out of the plurality of servers;

a server interface, coupled to the plurality of servers, and directs to the selected server information indicative of the first session request and receives a response of the selected server to the information indicative of the first session request;

an analyzer that analyzes the response of the selected server, to provide an analysis result indicative whether the response comprises code to be executed by the client and comprises at least one instruction that facilitates sending, by the client, another request to receive a service from a server out of the plurality of servers;

a modifier that modifies the code by adding information that causes the client to send a selected server identifier in association to the sending of the other request, wherein the code is parsed and marked at each location where each call is made to the client, and wherein the information added at each marked location for each call includes a unique HTTP header that includes the selected server identifier independent of a dedicated HTTP cookie; and

wherein the client interface sends a modified response to the client that includes the modified code.

10. The intermediate device according to claim 9 , wherein the intermediate device is unable to utilize dedicated HTTP cookies.

11. The intermediate device according to claim 9 wherein the analyzer analyzes the response of the selected server to locate at least one instruction that is executed by a browser of the client and comprises a call to an entity to enable sending the other request, wherein the entity is selected from a group consisting of an operating system of the client and an API layer between the code and the operating system of the client.

12. The intermediate device according to claim 9 wherein the modifier adds the HTTP header for each call instruction of the code, if the other request and the modified response are associated with a same site, wherein each added HTTP header comprises the selected server identifier.

13. The intermediate device according to claim 9 wherein the client interface receives, by the intermediate node, the other request from the client; wherein the modifier is configured to remove the selected server identifier to provide a modified other request; and the client interface is configured to send to the selected server information indicative of the modified other request.

14. The intermediate device according to claim 9 comprising a decompressor and a compressor; wherein the server interface is receives a selected server response that comprises compressed code; wherein the de-compressor de-compresses the compressed code to provide decompressed code; wherein the compressor compresses decompressed modified code received from the modifier to provide a compressed modified code; and wherein the client interface sends a modified response to the client, wherein the modified response comprises the compressed modified code.

15. The intermediate device according to claim 9 comprising a decryptor and an encryptor; wherein the server interface receives a selected server response that comprises encrypted code; wherein the decryptor decrypts the encrypted code to provide decrypted code; wherein the encryptor encrypts decrypted modified code received from the modifier to provide an encrypted modified code; and wherein the client interface sends a modified response to the client, wherein the modified response comprises the encrypted modified code.

16. The intermediate device according to claim 9 wherein the modifier modifies, in response to the analysis result, the code by adding information that causes the client to send the selected server identifier in association to the sending of the other request when the other request and the modified response are associated with a same site.

17. A non-transitory computer readable storage medium that stores instructions for execution by a circuit, wherein execution of the instructions performs actions, including:

selecting a server out of the plurality of servers and directing to the selected server information indicative of the first session request;

receiving a response of the selected server to the information indicative of the first session request;

analyzing the response of the selected server, to provide an analysis result indicative whether the response comprises code to be executed by the client and comprises at least one instruction that facilitates sending, by the client, another request to receive a service from a server out of the plurality of servers;

modifying the code by adding information that causes the client to send a selected server identifier in association to the sending of the other request, wherein the code is parsed and marked at each location where each call is made to the client, and wherein the information added at each marked location for each call includes a unique HTTP header that includes the selected server identifier independent of a dedicated HTTP cookie; and

sending a modified response to the client, wherein the modified response comprises the modified code.

18. The medium of claim 17 , further comprising analyzing the response of the selected server to locate at least one instruction that is executed by a browser of the client and comprises a call to an operating system of the client to enable sending the other request.

19. The medium of claim 17 , further comprising adding the HTTP header for each call instruction of the code, when the other request and the modified response are associated with a same site, wherein each HTTP header comprises the selected server identifier.

20. The medium of claim 17 , further comprising modifying, in response to the analysis result, the code by adding information that causes the client to send the selected server identifier in association to the sending of the other request when the other request and the modified response are associated with a same site.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2015
From: HASSON, URI; SHOOLMAN, YIFTACH
To: CRESCENDO NETWORKS, LTD.
Reel/Frame 037028/0113 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2015
From: CRESCENDO NETWORKS, LTD.
To: F5 NETWORKS, INC.
Reel/Frame 037028/0165 →
Continuity (3)
Continuation 12271903 · Nov 16, 2008
Continuation 11692942 · Mar 29, 2007
Provisional Application 60888195 · Feb 5, 2007