IP Library Granted Patent US 9,584,447
Granted Patent B2
US 9,584,447 · App. 14/534,262 · Granted Feb 28, 2017

Apparatus and method for client-side flow control in a remote access environment

Inventors: Sam Anthony Leitch (Sammamish, WA); Kevin Glen Robinson (Calgary, CA)
Assignee: Calgary Scientific Inc.
H04L51/02H04L47/10H04L47/266H04L47/27H04L47/34H04L47/522
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,584,447
App. No.
14/534,262
Granted
Feb 28, 2017
Kind
B2
Abstract

A client-side flow control mechanism for controlling the flow of messages communicated from a service to a client in a remote access system. The service, which may be a managed or unmanaged service, may communicate messages to the client where the messages include a service sequence ID (SSI). As the client processes the messages from the service, the client responds with a client sequence ID (CSI). The SSI and CSI values determine the number of messages that are in transmission queues. The service compares a difference between the current SSI and CSI to a stop window value. If the difference is greater than the stop window value, transmission of messages from the service to the client is turned OFF. The client continues to send CSI acknowledgments as it processes messages. Once the difference falls below a start window value, the transmission of messages to the client is turned ON.

Claims (50)

1. A method of providing client-side flow control in a remote access system, comprising:

communicating messages from a service to a client, the service being remotely accessed by the client and the messages including a service sequence ID (SSI);

receiving, at the service, a client sequence ID (CSI) from the client in response to the client completing processing of a message having a specific SSI associated with the message;

determining, at the service, a difference between a current SSI communicated to the client and the current CSI received from the client; and

if the difference is greater than a predetermined stop window value, turning communication from the service to the client OFF.

2. The method of claim 1 , further comprising:

subsequently determining, at the service, a difference between the current SSI and a subsequent CSI received from the client; and

if the difference is less than a predetermined start window value, turning communication from the service to the client ON.

3. The method of claim 2 , wherein the predetermined start window value is less than the predetermined stop window value.

4. The method of claim 2 , further comprising dynamically adjusting the start window value or the stop window value in accordance with one of network conditions and a processing capacity of the client.

5. The method of claim 1 , further comprising maintaining the current SSI and CSI values at the service to perform the determining.

6. The method of claim 1 , further comprising:

providing a client layer at the client;

providing a service layer associated with the service, the service layer having a service receive queue for messages received from the client and a service send queue of messages destined for the client; and

providing a server layer as a communications proxy for messages sent between the client and the service, the server layer containing an outbound client queue of messages destined for the client.

7. The method of claim 6 , further comprising queue messages in the service send queue when the communication from the service to the client is OFF.

8. The method of claim 7 , further comprising performing the determining in a service layer SDK provided in the service layer.

9. The method of claim 6 , further comprising:

detecting a failure of communication between the client and the service by determining that a message have a particular SSI was not acknowledged by the client; and

upon detecting the failure, resending the message having the particular SSI.

10. The method of claim 6 , further comprising resending the message from the service send queue.

11. The method of claim 1 , further comprising:

detecting a failure of communication between the client and the service using the SSI; and

upon detecting the failure, resending a message having a particular SSI determined to have been unacknowledged by the client.

12. The method of claim 1 , further comprising:

providing the service as an unmanaged service executing on an application server;

providing a server remote access program executing on a remote access server that communicates with the service over a first communication connection and with the client over a second communication connection;

receiving a connection from the client at the remote access server over the second communication connection; and

communicating messages from the service to the client in accordance with the determining.

13. The method of claim 12 , further comprising providing the application server and the remote access server as different nodes.

14. A method of providing client-side flow control, comprising:

communicating a message from a service to a client, the message including a tracking mechanism that is incremented by the service to represent a relative position of the message within a plurality of messages that are communicated from the service to the client;

receiving, at the service, a response from the client indicating a completion of processing of a message according to the tracking mechanism;

determining, at the service from the response, if the processing of messages at the client is lagging beyond a first predetermined value and

turning communication from the service to the client OFF if the client is lagging beyond the predetermined value.

15. The method of claim 14 , further comprising:

receiving a subsequent response at the service; and

determining, at the service from the subsequent response, if the processing of messages at the client is no longer lagging beyond a second predetermined value; and

turning communication from the service to the client ON.

16. The method of claim 15 , wherein the second predetermined value is less than the first predetermined value.

17. The method of claim 15 , further comprising dynamically adjusting the first predetermined value or the second predetermined value in accordance with one of network conditions and a processing capacity of the client.

18. An apparatus for providing client-side flow control of communication of messages from a service to a client, comprising:

a remote access server having a server layer as a communications proxy for messages sent between the client and the service, the server layer containing an outbound client queue of messages destined for the client;

a second server executing a service layer associated with the service, the service layer having a service receive queue for messages received from the client and a service send queue of messages destined for the client,

wherein the messages destined for the client include a service sequence ID (SSI) and the messages received from the client include a client sequence ID (CSI) indicative of the client completing processing of a message having a specific SSI associated with the message, and

wherein the service determines if a difference between a current SSI and the CSI received from the client is greater than a predetermined stop window value to turn communication from the service to the client OFF.

19. The apparatus of claim 18 , wherein the service further determines if a difference between the current SSI and the CSI is less than a predetermined start window value to turn communication from the service to the client ON.

20. The apparatus of claim 19 , wherein the predetermined start window value is less than the predetermined stop window value.

21. The apparatus of claim 19 , wherein the start window value or the stop window value is dynamically adjusted in accordance with one of network conditions and a processing capacity of the client.

22. The apparatus of claim 18 , wherein messages are queued at in service send queue when the communication from the service to the client is OFF.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2024
From: CALGARY SCIENTIFIC INC.
To: RESOLUTIONMD, INC.
Reel/Frame 067914/0636 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2015
From: LEITCH, SAM ANTHONY; ROBINSON, KEVIN GLEN
To: CALGARY SCIENTIFIC INC.
Reel/Frame 035649/0648 →
Continuity (3)
Provisional Application 61900940 · Nov 6, 2013
Provisional Application 61910189 · Nov 29, 2013
Related Publication 20150127761A1 · May 7, 2015