IP Library Granted Patent US 10,701,037
Granted Patent B2
US 10,701,037 · App. 15/164,512 · Granted Jun 30, 2020

Scalable proxy clusters

Inventors: Udayakumar Subbarayan (Bangalore, IN); Bernard Harguindeguy (Atherton, CA); Anoop Krishnan Gopalakrishnan (Bangalore, IN); Abdu Raheem Poonthiruthi (Bangalore, IN)
Assignee: Ping Identity Corporation
H04L63/0281G06F9/546H04L41/0813H04L41/0893H04L41/12H04L41/28H04L41/50H04L45/46H04L45/56H04L45/58H04L45/74H04L47/125H04L47/20H04L63/08H04L63/166H04L67/02H04L67/10H04L67/1068H04L67/1095H04L67/12H04L67/145H04L67/28H04L67/32H04L67/42H04L69/16H04L69/329H04L69/40
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,701,037
App. No.
15/164,512
Granted
Jun 30, 2020
Kind
B2
Abstract

The invention enables high-availability, high-scale, high security and disaster recovery for API computing, including in terms of capture of data traffic passing through proxies, routing communications between clients and servers, and load balancing and/or forwarding functions. The invention inter alia provides (i) a scalable cluster of proxies configured to route communications between clients and servers, without any single point of failure, (ii) proxy nodes configured for implementing the scalable cluster (iii) efficient methods of configuring the proxy cluster, (iv) natural resiliency of clusters and/or proxy nodes within a cluster, (v) methods for scaling of clusters, (vi) configurability of clusters to span multiple servers, multiple racks and multiple datacenters, thereby ensuring high availability and disaster recovery (vii) switching between proxies or between servers without loss of session.

Claims (49)

1. A proxy node configured for implementation within a proxy cluster comprising a plurality of proxy nodes, the proxy node comprising:

a proxy router configured to:

obtain, after receiving an Application Programming Interface (API) request from a client device, information descriptive of an API associated with the API request;

select a server that hosts the API from a plurality of servers based on (1) the information descriptive of the API and (2) data states indicative of characteristics of the plurality of servers;

transmit the API request to the API hosted on the server; and

in response to receiving a response to the API request from the server, transmit the response to the client device; and

a synchronization controller configured to respond to a synchronization event by synchronizing data states of the proxy node with data states of each remaining proxy node from the plurality of proxy nodes, the data states of the proxy node and the data states of each remaining proxy node from the plurality of proxy nodes including the data states indicative of the characteristics of the plurality of servers.

2. The proxy node as claimed in claim 1 , wherein the data states of the proxy node and the data states of each remaining proxy node from the plurality of proxy nodes further include data states indicative of one or more of:

information of sessions between client devices and the plurality of servers,

security data associated with the sessions,

configuration data for routing messages between the client devices and the plurality of servers, or

characteristics of the plurality of proxy nodes.

3. The proxy node as claimed in claim 1 , wherein the data states indicative of characteristics of the plurality of servers include data states indicative of APIs hosted on the plurality of servers.

4. The proxy node as claimed in claim 1 , wherein the proxy router is configured to have routing functionality identical to routing functionality of each remaining proxy node from the plurality of proxy nodes.

5. The proxy node as claimed in claim 1 , wherein:

said proxy node is configured to learn independent of an administrator one or more functional capabilities from the remaining proxy nodes from the plurality of proxy nodes; and

said learning is based on the synchronizing the one or more data states of the proxy node with each remaining proxy node from the plurality of proxy nodes.

6. The proxy node as claimed in claim 1 , wherein the information descriptive of the API includes metadata associated with the API.

7. The proxy node as claimed in claim 1 , wherein the data states of the proxy node being synchronized with the data states of each remaining node from the plurality of proxy nodes include metadata associated with the API.

8. The proxy node as claimed in claim 1 , wherein the proxy router is further configured to determine that the API request conforms to one or more Layer 7 protocols,

the proxy router configured to select the server and transmit the API request to the API after determining that the API request conforms to the one or more Layer 7 protocols.

9. The proxy node as claimed in claim 1 , wherein the proxy router is further configured to determine that the API request meets a set of predefined criteria,

the proxy router configured to transmit the API request to the API in response to determining that the API request meets the set of predefined criteria.

10. The proxy node as claimed in claim 1 , wherein the proxy node is a first proxy node located on a first cloud network and at least one remaining proxy node from the plurality of proxy nodes is located on a second cloud network different from the first cloud network.

11. The proxy node as claimed in claim 1 , wherein the proxy node is configured to support a plurality of messaging protocols including at least one of: Hyper Text Transfer Protocol (HTTP), Hyper Text Transfer Protocol Secure (HTTPS), WebSocket, secure WebSocket, Message Queuing Telemetry Transport (MQTT), secure MQTT, or Constrained Application Protocol (CoAP).

12. A proxy node configured for implementation within a proxy cluster comprising a plurality of proxy nodes, the proxy node including:

a proxy router configured to:

receive an Application Programming Interface (API) request from a client device routed to the proxy node based on routing policies stored within a Domain Name System (DNS) server, the API request associated with an API;

select a server that hosts the API from a plurality of servers based on (1) information descriptive of the API and (2) data states indicative of characteristics of the plurality of servers; and

transmit the API request to the API hosted on the server; and

a synchronization controller configured to synchronize data states of the proxy node with data states of each remaining proxy node from the plurality of proxy nodes such that the plurality of proxy nodes has common routing functionality.

13. The proxy node as claimed in claim 12 , wherein the data states of the proxy node and the data states of each remaining proxy node from the plurality of proxy nodes include the data states indicative of the characteristics of the plurality of servers and data states indicative of one or more of:

information of sessions between client devices and the plurality of servers,

security data associated with the sessions,

configuration data for routing messages between the client devices and the plurality of servers, or

characteristics of the plurality of proxy nodes.

14. A method of adding a proxy node to a proxy cluster to be included in a plurality of proxy nodes on a network, the method comprising:

connecting the proxy node to the network;

in response to connecting the proxy node to the network, synchronizing, via at least one processor of the proxy node, data states of the proxy node with data states of each remaining proxy node from the plurality of proxy nodes such that the proxy node is configured to implement one or more routing policies identical to the remaining proxy nodes from the plurality of proxy nodes;

receiving, at the at least one processor, an Application Programming Interface (API) request from a client device, the API request associated with an API;

selecting, via the at least one processor, a server that hosts the API from a plurality of servers based on (1) information descriptive of the API and (2) data states indicative of characteristics of the plurality of servers;

transmitting, via the at least one processor, the API request to the API hosted on the server; and

receiving, at the at least one processor, a response to the API request from the server.

15. The method as claimed in claim 14 , wherein the data states of the proxy node and the data states of each remaining proxy node from the plurality of proxy nodes include the data states indicative of the characteristics of the plurality of servers and data states indicative of one or more of:

characteristics of the plurality of servers,

information of sessions between client devices and the plurality of servers,

security data associated with the sessions,

configuration data for routing messages between the client devices and the plurality of servers, and

characteristics of the plurality of proxy nodes.

Assignments (10)
RELEASE OF SECURITY INTEREST AT R/F 61703/0988 Recorded Nov 14, 2025
From: BLUE OWL CAPITAL CORPORATION
To: PING IDENTITY CORPORATION
Reel/Frame 073570/0777 →
SECURITY INTEREST Recorded Nov 13, 2025
From: PING IDENTITY CORPORATION; PING IDENTITY INTERNATIONAL, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 073557/0093 →
RELEASE OF SECURITY INTEREST Recorded Oct 19, 2022
From: BANK OF AMERICA, N.A.
To: PING IDENTITY CORPORATION
Reel/Frame 061709/0527 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Oct 18, 2022
From: PING IDENTITY CORPORATION
To: OWL ROCK CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 061703/0988 →
SECURITY INTEREST Recorded Nov 23, 2021
From: PING IDENTITY CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 058944/0687 →
RELEASE OF SECURITY INTEREST Recorded Nov 23, 2021
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: PING IDENTITY CORPORATION
Reel/Frame 058195/0557 →
PATENT SECURITY AGREEMENT Recorded Dec 12, 2019
From: PING IDENTITY CORPORATION
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 051271/0247 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 2, 2018
From: ELASTIC BEAM, LLC
To: PING IDENTITY CORPORATION
Reel/Frame 045693/0014 →
ENTITY CONVERSION Recorded Apr 12, 2018
From: ELASTIC BEAM INC.
To: ELASTIC BEAM, LLC
Reel/Frame 045932/0120 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 29, 2018
From: SUBBARAYAN, UDAYAKUMAR; HARGUINDEGUY, BERNARD; GOPALAKRISHNAN, ANOOP KRISHNAN; POONTHIRUTHI, ABDU RAHEEM
To: ELASTIC BEAM, INC.
Reel/Frame 045388/0437 →
Continuity (2)
Provisional Application 62167165 · May 27, 2015
Related Publication 20160352588A1 · Dec 1, 2016
Cited By (1)
US 12,524,562