IP Library Granted Patent US 9,775,008
Granted Patent B2
US 9,775,008 · App. 14/994,844 · Granted Sep 26, 2017

System and method for elastic scaling in a push to talk (PTT) platform using user affinity groups

Inventors: Krishnakant M. Patel (Richardson, TX); Ramu Kandula (Plano, TX); Brahmananda R. Vempati (Dallas, TX); Harisha Mahabaleshwara Negalaguli (Richardson, TX); Pratap Chandana (Plano, TX)
Assignee: Kodiak Networks, Inc.
H04W4/10G06F9/45558H04L41/12H04L65/105H04L67/1002H04L67/1017H04M7/006H04W4/08G06F2009/4557
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,775,008
App. No.
14/994,844
Granted
Sep 26, 2017
Kind
B2
Abstract

An embodiment method includes receiving, by a first push-to-talk (PTT) service hosted on a processor, a session initiation request from a PTT client of a user and identifying, by the first PTT service, a user affinity group of the user. The user is assigned to the user affinity group in accordance with a prediction the user will communicate with first users in the user affinity group more frequently than second users in different user affinity groups. The method further includes determining, by the first PTT service, a PTT call server for the user affinity group. The PTT call server serves the user and the first users belonging to the user affinity group.

Claims (52)

1. A method comprising:

receiving, by a first push-to-talk (PTT) service hosted on a processor, a session initiation request from a PTT client of a user;

identifying, by the first PTT service, a user affinity group of the user, wherein the user is assigned to the user affinity group in accordance with a prediction the user will communicate with first users in the user affinity group more frequently than second users in different user affinity groups; and

determining, by the first PTT service, a PTT call server for the user affinity group, wherein the PTT call server serves the user and the first users belonging to the user affinity group, wherein the determining the PTT call server comprises creating a new PTT call server to serve as the PTT call server at a deployment site of the user affinity group when existing PTT call servers at the deployment site do not have sufficient capacity for the user affinity group; and

assigning the user affinity group to the PTT call server.

2. The method of claim 1 , wherein the user is assigned to the user affinity group, by a user activity tracker system, in accordance with heuristic analysis of historic calling patterns of the user.

3. The method of claim 2 , wherein the historic calling patterns are determined in accordance with call logs provided by a plurality of PTT call servers, wherein the PTT call server is one of the plurality of PTT call servers.

4. The method of claim 1 , wherein the user is assigned to the user affinity group, by a user activity tracker system, in accordance with a group membership pattern of the user.

5. The method of claim 4 , wherein the user is assigned to a user affinity group having a higher number of connections to the user through group membership relations when the user qualifies for more than one user affinity group.

6. The method of claim 1 , wherein the PTT call server comprises a pool of dedicated media servers, and wherein the PTT call server places session initiation requests of the user and the first users belonging to the user affinity group on a same media server of the pool of dedicated media servers when the same media server comprises sufficient resources to accommodate all the session initiation requests.

7. The method of claim 6 , wherein the PTT call server places a first portion of the session initiation requests of the user and the first users belonging to the user affinity group on the same media server of the pool of dedicated media servers and a second portion of the session initiation requests of the user and the first users belonging to the user affinity group on a different media server of the pool of dedicated media servers when the same media server does not comprise sufficient resources to accommodate all the session initial requests.

8. The method of claim 1 , wherein determining the PTT call server for the user affinity group comprises assigning the user affinity group to the PTT call server in accordance with processing loads of a plurality of PTT call servers at the deployment site, wherein the PTT call server is one of the plurality of PTT call servers.

9. The method of claim 8 further comprising determining the processing loads in accordance with performance indicator metrics of the plurality of PTT call servers, wherein the performance indicator metrics include PTT call setup latency, a number of active pre-established PTT sessions, a number of active PTT calls, a number of active PTT call legs, a number of media codec resources in active use, or a combination thereof.

10. The method of claim 1 further comprising reassigning the user affinity group to a different PTT call server when the PTT call server assigned to the user affinity group is overloaded.

11. The method of claim 1 further comprising:

receiving, by a second PTT service, a registration request from the PTT client; and

assigning, by the second PTT service, the PTT client to a first deployment site, wherein the first deployment site is one of a plurality of geographically diverse deployment sites of a PTT platform providing a PTT service to the user.

12. The method of claim 11 , wherein assigning the PTT client to the first deployment site is in accordance with a geographic proximity of the PTT client to the first deployment site.

13. The method of claim 11 , wherein assigning the PTT client to the first deployment site is in accordance with a weighted round robin scheme, wherein a weight assigned to each of the plurality of geographically diverse deployment sites is proportional to an available spare load bearing capacity of a respective one of the plurality of geographically diverse deployment sites.

14. The method of claim 11 , further comprising redirecting the PTT client to a second deployment site of the user affinity group when the first deployment site is different than the second deployment site.

15. The method of claim 14 , further comprising:

selecting potential deployment sites for each PTT client of the first users belonging to the user affinity group, wherein selecting the potential deployment sites is independent from the user affinity group; and

assigning the second deployment site for the user affinity group, wherein the second deployment site is one of the potential deployment sites selected for a greatest number of PTT clients of the first users belonging to the user affinity group.

16. The method of claim 11 further comprising reassigning the PTT client to a second deployment site when the first deployment site fails, wherein the second deployment site is a different one of plurality of geographically diverse deployment sites than the first deployment site.

17. The method of claim 1 further comprising, transmitting, by the PTT call server, a reconnect message to the PTT client to re-establish a pre-established PTT session when the PTT call server detects the PTT client is online and has no active pre-established PTT sessions.

18. The method of claim 17 , wherein the PTT call server transmits the reconnect message to the PTT client when the user affinity group is assigned to the PTT call server.

19. The method of claim 17 , wherein the PTT call server transmits the reconnect message when another PTT client makes a PTT call to the PTT client.

20. A push-to-talk (PTT) platform component comprising:

a processor; and

a computer readable storage medium storing programming for execution by the processor, the programming including instructions to:

host a session initiation protocol (SIP) proxy service;

receive a SIP INVITE request from a PTT client of a user;

identify a user affinity group of the user, wherein the user is assigned to the user affinity group in accordance with a prediction the user will communicate with first users in the user affinity group more frequently than second users in different user affinity groups;

determine a PTT call server for the user affinity group, wherein the PTT call server serves the user and the first users belonging to the user affinity group; and

in response to detecting an overload condition of the PTT call server, create a new PTT call server and assign one or more user affinity groups previously served by the PTT call server to the new PTT call server.

21. The PTT platform component of claim 20 , wherein the user is assigned to the user affinity group, by a user activity tracker system, in accordance with heuristic analysis of historic calling patterns of the user, group membership patterns of the user, or a combination thereof.

22. The PTT platform component of claim 20 , wherein the PTT call server is a virtual PTT call service encapsulated in one or more containers and hosted on one or more processors.

23. The PTT platform component of claim 20 , wherein the instructions to determine the PTT call server comprises further instructions to assign the user affinity group to the PTT call server in accordance with processing loads of a plurality of PTT call servers at a deployment site, wherein the PTT call server is one of the plurality of PTT call servers.

24. The PTT platform of claim 20 , wherein the instructions to determine the PTT call server further comprises instructions to:

create a first PTT call server that is previously non-existent; and

assign the user affinity group to the first PTT call server.

25. A method of operating a push-to-talk (PTT) platform comprising:

receiving, by a first PTT service hosted on a processor, a session initiation request from a PTT client of a user;

assigning, by the first PTT service, the user to a user affinity group, wherein the user is assigned to the user affinity group in accordance with a prediction the user will communicate with first users in the user affinity group more frequently than second users in different user affinity groups;

evaluating, by the first PTT service, capacities of existing PTT call servers at a deployment site of the user affinity group;

creating, by the first PTT service, a first new PTT call server when existing PTT call servers at the deployment site have insufficient capacity for the user affinity group; and

transferring, by the first PTT service, the user affinity group to the first new PTT call server.

26. The method of claim 25 , further comprising:

monitoring, by the first PTT service, a load of a first host of the first new PTT call server, wherein the first host comprises a first compute node; and

in response to an overload of the first host, migrating the first new PTT call server to a second host different from the first host, wherein the second host comprises a second compute node.

27. The method of claim 25 , further comprising:

creating, by the first PTT service, a new load balancer to support the first new PTT call server in tandem with creating the first new PTT call server.

Assignments (3)
RELEASE OF SECURITY INTEREST Recorded Sep 1, 2017
From: SILICON VALLEY BANK
To: KODIAK NETWORKS, INC.
Reel/Frame 043746/0832 →
SECURITY INTEREST Recorded Mar 31, 2017
From: KODIAK NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 042125/0041 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 11, 2016
From: PATEL, KRISHNAKANT M.; KANDULA, RAMU; VEMPATI, BRAHMANANDA R.; NEGALAGULI, HARISHA MAHABALESHWARA; CHANDANA, PRATAP
To: KODIAK NETWORKS INC.
Reel/Frame 039410/0314 →
Continuity (3)
Provisional Application 62111414 · Feb 3, 2015
Provisional Application 62103404 · Jan 14, 2015
Related Publication 20160205519A1 · Jul 14, 2016