IP Library Granted Patent US 9,357,076
Granted Patent B2
US 9,357,076 · App. 14/298,014 · Granted May 31, 2016

Load balancing of distributed media agents in a conference system

Inventor: Jonathan D. Rosenberg (Freehold, NJ)
Assignee: Cisco Technology, Inc.
H04M3/56G06F17/30861H04L47/125H04L61/1511H04L65/1069H04L65/403H04L61/2575
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,357,076
App. No.
14/298,014
Granted
May 31, 2016
Kind
B2
Abstract

A load balancer controls a cluster of media agents each configured to perform media packet processing operations in a conference session. The load balancer receives a Session Traversal Utilities for Network Address Translation/Translator (NAT) (STUN) request from a caller to establish media. The STUN request includes a conference identifier (ID) for the session. The load balancer determines an availability of each of the media agents in the cluster, selects a media agent for the caller based on the conference ID and the determined media agent availabilities, forwards the STUN request to the selected media agent, and routes media packets between the caller and the selected agent for the session.

Claims (94)

1. A method comprising:

at a load balancer configured to control a cluster of media agents each configured to perform media packet processing operations in a conference session:

receiving a Session Traversal Utilities for Network Address Translation/Translator (NAT) (STUN) request from a caller to establish media, the STUN request including a conference identifier (ID) for the conference session;

determining an availability of each of the media agents in the cluster;

selecting a media agent for the caller based on the conference ID and the determined media agent availabilities;

forwarding the STUN request to the selected media agent; and

routing media packets between the caller and the selected media agent for the conference session.

2. The method of claim 1 , wherein the STUN request is received from the caller over a first logical connection between the caller and the load balancer,

the STUN request is forwarded to the selected media agent over a second logical connection between the load balancer and the selected media agent; and

the method further comprises:

storing a connection mapping of the first logical connection to the second logical connection, wherein the routing includes routing the media packets between the caller and the selected media agent over the first and second logical connections based on the stored connection mapping.

3. The method of claim 2 , further comprising generating the connection mapping as a mapping between first and second 5-tuples respectively identifying the first and second logical connections, wherein each 5-tuple includes a source Internet Protocol (IP) address, a source port, a destination IP address, a destination port, and a protocol.

4. The method of claim 1 , wherein:

the determining includes determining for each media agent an operational/failure status and a processor loading of the media agent; and

the selecting includes selecting a media agent that is determined to be operational and utilizing a consistent hash of the conference ID to the set of available media agents.

5. The method of claim 4 , further comprising:

activating a new media agent if all existing media agents are each determined to have processor loading above a high threshold; and

deactivating any media agents determined to have processor loading below a low threshold.

6. The method of claim 1 , further comprising:

receiving a second STUN request from a second caller to join the conference session, the second STUN request including the conference ID; and

selecting the previously selected media agent for the second caller based on the conference ID.

7. The method of claim 1 , wherein:

the receiving includes receiving multiple join requests including respective conference IDs;

the selecting includes:

selecting a same one of the media agents for each of the multiple join requests if the respective conference IDs are the same; and

selecting different media agents for each of the multiple join requests if the respective conference IDs are different.

8. The method of claim 1 , further comprising:

receiving a second STUN request from the caller to join the conference session, the second STUN request including the conference identifier (ID) for the conference session;

determining that the operational status of the selected media agent is down;

selecting a second media agent for the caller; and

routing media packets between the caller and the second selected media agent for the conference session.

9. The method of claim 1 , wherein the STUN request is sent as part of connectivity checks mandated by the Interactive Connectivity Establishment (ICE) protocol (RFC 5245).

10. An apparatus comprising:

an interface unit configured to enable communications with a cluster of media agents each configured to perform media packet processing operations in a conference session; and

a processor coupled to the interface unit, and configured to:

receive a Session Traversal Utilities for Network Address Translation/Translator (NAT) (STUN) request from a caller to establish media, the STUN request including a conference identifier (ID) for the conference session;

determine an availability of each of the media agents in the cluster;

select a media agent for the caller based on the conference ID and the determined media agent availabilities;

forward the STUN request to the selected media agent; and

route media packets between the caller and the selected media agent for the conference session.

11. The apparatus of claim 10 , wherein

the STUN request is received from the caller over a first logical connection between the caller and the load balancer,

the STUN request is forwarded to the selected media agent over a second logical connection between the load balancer and the selected media agent; and

the processor is further configured to:

store a connection mapping of the first logical connection to the second logical connection, wherein the processor is configured to route by routing media packets between the caller and the selected media agent over the first and second logical connections based on the stored connection mapping.

12. The apparatus of claim 11 , wherein the processor is further configured to generate the connection mapping as a mapping between first and second 5-tuples respectively identifying the first and second logical connections, wherein each 5-tuple includes a source Internet Protocol (IP) address, a source port, a destination IP address, a destination port, and a protocol.

13. The apparatus of claim 10 , wherein:

the processor is configured to determine by determining for each media agent an operational/failure status and a processor loading of the media agent; and

the processor is configured to select by selecting a media agent that is determined to be operational and utilizing a consistent hash of the conference ID to the set of available media agents.

14. The apparatus of claim 13 , wherein the processor is further configured to:

activate a new media agent if all existing media agents are each determined to have processor loading above a high threshold; and

deactivate any media agents determined to have processor loading below a low threshold.

15. The apparatus of claim 10 , wherein the processor is further configured to:

receive a second STUN request from a second caller to join the conference session, the second STUN request including the conference ID; and

select the previously selected media agent for the second caller based on the conference ID.

16. The apparatus of claim 10 , wherein:

the processor is configured to receive by receiving multiple join requests including respective conference IDs; and

the processor is configured to select by:

selecting a same one of the media agents for each of the multiple join requests if the respective conference IDs are the same; and

selecting different media agents for each of the multiple join requests if the respective conference IDs are different.

17. The apparatus of claim 10 , wherein the processor is further configured to:

receive a second STUN request from the caller to join the conference session, the second STUN request including the conference identifier (ID) for the conference session;

determine that the operational status of the selected media agent is down;

select a second media agent for the caller; and

route media packets between the caller and the second selected media agent for the conference session.

18. A non-transitory processor readable medium storing instructions that, when executed by a processor, cause the processor to:

at a load balancer configured to control a cluster of media agents each configured to perform media packet processing operations in a conference session, receive a Session Traversal Utilities for Network Address Translation/Translator (NAT) (STUN) request from a caller to establish media, the STUN request including a conference identifier (ID) for the conference session;

determine an availability of each of the media agents in the cluster;

select a media agent for the caller based on the conference ID and the determined media agent availabilities;

forward the STUN request to the selected media agent; and

route media packets between the caller and the selected media agent for the conference session.

19. The non-transitory processor readable medium of claim 18 , wherein the STUN request is received from the caller over a first logical connection between the caller and the load balancer,

the STUN request is forwarded to the selected media agent over a second logical connection between the load balancer and the selected media agent; and

the non-transitory processor readable medium further comprising instructions to cause the processor to:

store a connection mapping of the first logical connection to the second logical connection, wherein the instructions include instructions to cause the processor to route media packets between the caller and the selected media agent over the first and second logical connections based on the stored connection mapping.

20. The non-transitory processor readable medium of claim 19 , further comprising instructions to cause the processor to generate the connection mapping as a mapping between first and second 5-tuples respectively identifying the first and second logical connections, wherein each 5-tuple includes a source Internet Protocol (IP) address, a source port, a destination IP address, a destination port, and a protocol.

21. The non-transitory processor readable medium of claim 18 , wherein the instructions include instructions to cause the processor to:

determine for each media agent an operational/failure status and a processor loading of the media agent; and

select a media agent that is determined to be operational and utilize a consistent hash of the conference ID to the set of available media agents.

22. The non-transitory processor readable medium of claim 21 , further comprising instructions to cause the processor to:

activate a new media agent if all existing media agents are each determined to have processor loading above a high threshold; and

deactivate any media agents determined to have processor loading below a low threshold.

23. The non-transitory processor readable medium of claim 18 , further comprising instructions to cause the processor to:

receive a second STUN request from a second caller to join the conference session, the second STUN request including the conference ID; and

select the previously selected media agent for the second caller based on the conference ID.

24. The non-transitory processor readable medium of claim 18 , wherein the instructions include instructions to cause the processor to:

receive multiple join requests including respective conference IDs;

select a same one of the media agents for each of the multiple join requests if the respective conference IDs are the same; and

select different media agents for each of the multiple join requests if the respective conference IDs are different.

25. The non-transitory processor readable medium of claim 18 , further comprising instructions to cause the processor to:

receive a second STUN request from the caller to join the conference session, the second STUN request including the conference identifier (ID) for the conference session;

determine that the operational status of the selected media agent is down;

select a second media agent for the caller; and

route media packets between the caller and the second selected media agent for the conference session.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 6, 2014
From: ROSENBERG, JONATHAN D.
To: CISCO TECHNOLOGY, INC.
Reel/Frame 033049/0603 →
Continuity (1)
Related Publication 20150358472A1 · Dec 10, 2015