# US 11,310,348 B2 · Highly scalable, fault tolerant remote access architecture and method of connecting thereto

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,310,348 B2
- Document ID: US11310348B2
- Status: Granted
- Kind: B2
- Application number: 15/011,183
- Filed: 2016-01-29
- Published: 2016-08-04
- Granted: 2022-04-19
- Earliest claimed: 2015-01-30
- Assignees: Calgary Scientific Inc.
- Applicants: Calgary Scientific Inc.
- Inventors: Matthew James Stephure; Christopher James Jarabek; Cameron Kiddle; Jonathan Christopher Neitz; Christopher James Garrett; Kevin Glen Robinson
- Web page: https://patentgrep.com/patent/US11310348B2

## CPC

- H04L 63/08: {for authentication of entities (cryptographic mechanisms or cryptographic arrangements for entity authentication H04L9/32)}
- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L 67/1008: based on parameters of servers, e.g. available memory or workload (monitoring of computer activity G06F11/30)
- H04L 67/101: based on network conditions
- H04L 67/1012: based on compliance of requirements or conditions with available server resources
- H04L 67/1021: based on client or server locations
- H04L 67/142: Managing session states for stateless protocols; Signalling session states; State transitions; Keeping-state mechanisms
- H04L 67/146: Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
- H04L 67/51: Discovery or management thereof, e.g. service location protocol [SLP] or web services
- H04L 67/561: Adding application-functional data or data for application control, e.g. adding metadata
- H04L 67/562: Brokering proxy services
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Systems and methods for providing a remote access to a service in a client-server remote access system. The method includes selecting, by a scheduler, an application server hosting the service, the selecting being performed in accordance with a utilization of resources in the client-server remote access system. A session Uniform Resource Locator (URL) is created that includes a URL payload that uniquely identifies the service and being used to establish the remote access to the service by a client. The system may include a proxy server accessible at a resource URL. The proxy server receives a request from a client to connect to the service. An authentication component authenticates the request in accordance with a payload of the resource URL. A service manager establishes the session between the client and the service connected at the session URL.

## Claims

### Claim 1

A method for providing remote access to a service in a client-server remote access system, comprising:
receiving, at a proxy server, a request from a client to remotely access the service at a resource URL, the request including an application name and a client identifier;
authenticating the client in accordance with the client identifier to establish a trust between the client and the service;
in response to an authenticated request, selecting, by a scheduler, an application server hosting the service, wherein the scheduler implements one or more selection heuristics to determine which application server to service a remote access connection request,
the selection heuristics consisting of:
choosing the application server running the fewest number of services or has the lightest load;
choosing the longest-running application server that has availability in order to allow unused application servers to be shut down when not being utilized;
choosing the application server in accordance with the state of a. preexisting running application, therefore clients will reconnect to previously used application server;
creating a session uniform resource locator (URL) that includes a URL payload that uniquely identifies the service hosted on the selected application server; and
establishing a remote access session between the client and the selected application server using the session URI., and by passing the URI, payload as a parameter,
wherein application data and state information about the running application are communicated between the client and the application server during the remote access session to provide the client remote access to the service.

### Claim 2 (depends on 1)

The method of claim 1, further comprising creating the resource URL prior to the selection of the application server.

### Claim 3 (depends on 1)

The method of claim 1, wherein the URL payload that uniquely identifies the service is an App ID.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
providing a collaboration URL by the authentication component to the client;
receiving a second request at the proxy server from a second client using the collaboration URL; and
joining the second client to the remote access session.

### Claim 5 (depends on 4)

The method of claim 4, wherein the collaboration URL identifies the selected application server and authenticates the second client.

### Claim 6 (depends on 1)

The method of claim 1, wherein the session URL is mapped to a user associated with the client.

### Claim 7 (depends on 1)

The method of claim 1, further comprising managing resource utilization within the client-server remote access system using the scheduler.

### Claim 8 (depends on 7)

The method of claim 7, wherein the scheduler chooses the application server based on the application server running a fewest number of services.

### Claim 9 (depends on 7)

The method of claim 7, wherein the scheduler chooses the application server based on the application server being a longest-running application server having available capacity.

### Claim 10 (depends on 7)

The method of claim 7, wherein the scheduler chooses the application server based on a state of a preexisting running service on the application server.

### Claim 11 (depends on 7)

The method of claim 7, wherein the scheduler creates the session URL in real-time to direct the client to the application server hosting the service.

### Claim 12 (depends on 7)

The method of claim 7, further comprising providing an orchestrator that starts and stops application servers within the client-server remote access system in accordance with one of load, hardware capacity (e.g., CPU, GPU, memory), networking requirements, cost, or geographic location.

### Claim 13 (depends on 12)

The method of claim 12, further comprising providing information from the scheduler to the orchestrator receives about current resource allocation to automatically start or stop the application server based on demand.

### Claim 14

A client-server remote access system for providing access to a service, comprising:
a proxy server accessible at a resource Uniform Resource Locator (URL), the proxy server receiving a request from a client to connect to the service, the request including an application name and a client identifier;
an authentication component that authenticates the request in accordance with the client identifier to establish a trust between the client and the service;
a scheduler that selects an application server hosting the service in accordance with one or more selection heuristics that consist of:
choosing the application server running the fewest number of services or has the lightest load;
choosing the longest-running application server that has availability in order to allow unused application servers to be shut down when not being utilized;
choosing the application server in accordance with the state of a. preexisting running application, therefore clients will reconnect to previously used application server;
the scheduler creating a session URL that includes the payload that is used to establish a remote access session between the client and the selected application server; and
a service manager that establishes the remote access session between the client and the selected application server connected at the session URL in accordance with the authenticated request and the payload, which is passed as a parameter to the authentication component,
wherein application data and state information about the running application are communicated between the client and the selected application server during the remote access session.

### Claim 15 (depends on 14)

The client-server remote access system of claim 14, wherein a collaboration URL is provided by the authentication component to the client, wherein a second request is received at the proxy server from a second client using the collaboration URL, and wherein the second client is joined to the session.

### Claim 16 (depends on 15)

The client-server remote access system of claim 15, wherein the collaboration URL identifies the application server and authenticates the second client.

### Claim 17 (depends on 14)

The client-server remote access system of claim 14, wherein resource utilization within the client-server remote access system is managed using the scheduler, and wherein the scheduler chooses the application server based on the application server running a fewest number of services, or chooses the application server based on the application server being a longest-running application server having available capacity, or chooses the application server based on a state of a preexisting running service on the application server.

### Claim 18 (depends on 14)

The client-server remote access system of claim 14, wherein a collaboration URL is provided by the authentication component to the client, the collaboration URL containing a payload parameter to identify the application server wherein a second request is received at the proxy server from a second client using the collaboration URL, and wherein the second client is joined to the session.

### Claim 19 (depends on 18)

The client-server remote access system of claim 18, wherein the collaboration URL authenticates the second client.

### Claim 20 (depends on 14)

The client-server remote access system of claim 14, wherein the scheduler chooses the application server based on one of the following criteria: selecting the application server running a fewest number of services, selecting the application server based on the application server being a longest-running application server having available capacity, or selecting the application server based on a state of a preexisting running service on the application server.

### Claim 21 (depends on 14)

The client-server remote access system of claim 14, wherein the application server creates the session URL in real-time to when making the service available to the client.
