Handling conferences using highly-distributed agents

Information

  • Patent Grant
  • 10623576
  • Patent Number
    10,623,576
  • Date Filed
    Monday, April 9, 2018
    6 years ago
  • Date Issued
    Tuesday, April 14, 2020
    4 years ago
Abstract
Systems, methods, and non-transitory computer-readable storage media for directing conferences to on-premises media agents and cloud-based media agents. A centralized controller and a plurality of cloud-based media agents are disposed within a cloud or other remote or virtual network, and a plurality of on-premises media agents are provided on-premises. The centralized controller manages the directing and forwarding of conferences and is in communication with the cloud-based media agents and the on-premises media agents.
Description
TECHNICAL FIELD

The present technology pertains to handling conferences by media agents.


BACKGROUND

Conferences, such as a teleconference having multiple callers requesting to join the teleconference, require a plurality of media agents, such as MCUs, to carry out a conference with multiple parties. Existing teleconferencing systems are either on-premises or in the cloud. It is difficult to anticipate the amount of resources needed for conferences, so companies are often forced to purchase the amount of on-premises or cloud capacity needed for peak capacity.





BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above-recited and other advantages and features of the disclosure can be obtained, a more particular description of the principles briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only exemplary embodiments of the disclosure and are not therefore to be considered to be limiting of its scope, the principles herein are described and explained with additional specificity and detail through the use of the accompanying drawings in which:



FIG. 1 illustrates an example block diagram according to some aspects of the subject technology;



FIG. 2 illustrates an example method embodiment;



FIG. 3 illustrates an example method embodiment;



FIG. 4 illustrates an example block diagram including a load balancer fronting each group of media agents, according to some aspects of the subject technology;



FIG. 5 Illustrates an example method embodiment; and



FIGS. 6A and 6B illustrate example system embodiments according to some aspects of the subject technology.





DESCRIPTION OF EXAMPLE EMBODIMENTS

Various embodiments of the disclosure are discussed in detail below. While specific implementations are discussed, it should be understood that this is done for illustration purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without parting from the spirit and scope of the disclosure.


Overview


An elastic model for handling conferences includes a plurality of on-premises media agents and a plurality of cloud-based media agents that are used together to perform conferences. A “cloud” or other remote network includes a plurality of cloud-based media agents and a centralized controller. The centralized controller receives requests to join conferences. The controller can be cloud-based or can be based at any location as a standalone entity that is securely reachable over a network. The centralized controller provides a requester with instructions for attempting a first connection. This can be an attempt to connect to a media agent on-premises or cloud-based. If the first connection is not made, then a second connection can be attempted. The first connection may not be made due to several factors, such as the media agents meeting or exceeding capacity. A second connection attempt can then be made to an on-premises or cloud-based media agent. The controller can manage the capacity of the media agents, or a stun load balancer can be at the front end of each group of media agents to monitor the capacity of the media agents.


Description


A computer network is a geographically distributed collection of nodes interconnected by communication links and segments for transporting data between endpoints, such as personal computers and workstations. Many types of networks are available, with the types ranging from local area networks (LANs) and wide area networks (WANs) to overlay and software-defined networks, such as virtual extensible local area networks (VXLANs).


LANs typically connect nodes over dedicated private communications links located in the same general physical location, such as a building or campus. WANs, on the other hand, typically connect geographically dispersed nodes over long-distance communications links, such as common carrier telephone lines, optical lightpaths, synchronous optical networks (SONET), or synchronous digital hierarchy (SDH) links. LANs and WANs can include layer 2 (L2) and/or layer 3 (L3) networks and devices.


The Internet is an example of a WAN that connects disparate networks throughout the world, providing global communication between nodes on various networks. The nodes typically communicate over the network by exchanging discrete frames or packets of data according to predefined protocols, such as the Transmission Control Protocol/Internet Protocol (TCP/IP). In this context, a protocol can refer to a set of rules defining how the nodes interact with each other. Computer networks may be further interconnected by an intermediate network node, such as a router, to extend the effective “size” of each network.


Network virtualization allows hardware and software resources to be combined in a virtual network. For example, network virtualization can allow multiple numbers of VMs to be attached to the physical network via respective virtual LANs (VLANs). The VMs can be grouped according to their respective VLAN, and can communicate with other VMs as well as other devices on the internal or external network.


Cloud computing can also be provided in one or more networks to provide computing services using shared resources. Cloud computing can generally include Internet-based computing in which computing resources are dynamically provisioned and allocated to client or user computers or other devices on-demand, from a collection of resources available via the network (e.g., “the cloud”). Cloud computing resources, for example, can include any type of resource, such as computing, storage, and network devices, virtual machines (VMs), etc. For instance, resources may include service devices (firewalls, deep packet inspectors, traffic monitors, load balancers, etc.), compute/processing devices (servers, CPU's, memory, brute force processing capability), storage devices (e.g., network attached storages, storage area network devices), etc. In addition, such resources may be used to support virtual networks, virtual machines (VM), databases, applications (Apps), etc.


Cloud computing resources may include a “private cloud,” a “public cloud,” and/or a “hybrid cloud.” A “hybrid cloud” can be a cloud infrastructure composed of two or more clouds that inter-operate or federate through technology. In essence, a hybrid cloud is an interaction between private and public clouds where a private cloud joins a public cloud and utilizes public cloud resources in a secure and scalable manner. Cloud computing resources can also be provisioned via virtual networks in an overlay network, such as a VXLAN.


The disclosed technology addresses the need in the art for an elastic model for handling conferences to provide adequate resources for average and peak bandwidth using a cloud-based controller and to provide conferencing capabilities to clients seeking to join a conference when media agents on-premises and/or media agents in the cloud are at capacity. Disclosed are systems, methods, and computer-readable storage media for clients of conferences to be handled by on-premises and cloud-based media agents. A cloud-based controller receives incoming requests to join conferences and selects an on-premises media agent or a cloud-based media agent to handle the request, depending upon a number of factors, such as resource bandwidth, call type, caller information and other call-related data. For example, all requests to join conferences may go to on-premises media agents until capacity is met or exceeded, and then the conferences may be handled by cloud-based media agents so the client can still join the conference even when the media agents on-premises have reached capacity. Another example is for conferences of a first media type (e.g., audio conferences) to be handled by cloud-based media agents, and to direct conferences of a second media type (e.g., video conferences) to be handled by on-premises media agents. In still a further example, the controller has logic that determines which media agents are more secure, and accordingly directs secure conferences to the secure media agents.


A brief introductory description of exemplary systems and networks, as illustrated in FIG. 1, is disclosed herein. A detailed description of the various system flows, related concepts, and exemplary variations, will then follow. These variations shall be described herein as the various embodiments are set forth. The disclosure now turns to FIG. 1.



FIG. 1 illustrates an example block diagram according to some aspects of the subject technology. An on-premises enterprise 110 has a plurality of on-premises media agents 111, 112 and 113. Media agents perform media (e.g., audio, video and share) packet processing operations in support of conference sessions in which clients participate, such as, but not limited to, media packet mixing, switching, encoding, decoding and transcoding. Although only three media agents are shown and described for illustrative and descriptive purposes, it should be understood that any number of media agents can be employed to achieve the desired conferencing capabilities for a particular premise. Also, although only a single enterprise 110 is shown having one cluster of agents 111, 112, 113, the techniques are likewise applicable to any number of enterprises, each having any number of media agents or clusters of media agents. In accordance with the techniques herein, enterprises having multiple locations that each have a plurality of media agents and are geographically distributed can employ the conferencing system herein to control overall enterprise conferencing capabilities for all locations using a cloud-based controller. Audio, video and sharing capabilities are handled using the cloud-based controller.


In accordance with some aspects of the subject technology, an enterprise (e.g., a company) can purchase sufficient capacity for average demand on-premises, instead of peak demand, and purchase capacity in the cloud for peak capacity, to be used on an as-needed basis. In this manner, a fixed capacity of licensed computing is deployed on-premises at the enterprise, and the remaining capacity can be provided by the cloud resources.


A conference session (also referred to more generally as a “conference”) may involve the exchange of one or more of audio, video and sharing of resources (such as screen or application share) between any number of clients as well as the sharing of content by one participant to one or more other clients. Such shared content may include documents, presentations, audio content, video content, etc. A conference sessions including screen and/or application share can be handled by the cloud-based controller in accordance with the teachings herein. The cloud controller can thus handle conferences with audio, video and sharing capabilities. The sharing capabilities can be encoded and handled as video in at least some embodiments.


A controller 130 resides in the “cloud” 125 which can be an appropriate data center. To control the system, the controller 130 performs control plane signal operations/functions using such features and functions afforded by, for example but not limited to, the Session Initiation Protocol (SIP), H323 access, rosters, and conference control options (including, e.g., mute, kick, etc.). The controller also performs orchestration of the conferences by controlling the connections between on-premises media agents and cloud-based media agents to ensure that a particular conference is fully connected and provides the necessary audio and video processing functions. The controller can have logic that allows it to select on-premises media agents or cloud-based media agents in accordance with some aspects of the subject technology.


The cloud 125 also includes a plurality of media agents 121, 122 and 123 that are cloud-based and reside within the cloud 125 as opposed to on-premises. Although only three media agents are shown and described for illustrative and descriptive purposes, it should be understood that any number of media agents can be employed to achieve the desired conferencing capabilities for a particular premise through the use of cloud-based media agents in addition to on-premises media agents. In this manner, an enterprise can utilize the on-premises media agents and the cloud-based media agents to accommodate their conferencing needs without requiring an enterprise to maintain sufficient media agents on-premises to satisfy peak conferencing needs, as the cloud-based media agents can be used on an as-needed basis, or depending upon particular factors that the enterprise has determined to control the media agent that handle the conferences.


The system of FIG. 1 provides a dynamic, elastic technique to allow for maximum utilization of collaboration in resources between on-premises and the cloud. As will be described in detail below, techniques presented herein dynamically configure highly-distributed resources in a conference system, including the cloud-based controller, the on-premises media agents and the cloud-based media agents to support conference sessions initiated by clients and direct conferences to the appropriate on-premises or cloud-based media agents. The resources are referred to as “highly-distributed” to describe geographically distributed resources.


In support of these techniques, the controller 130, on-premises media agents 111, 112, 113 and cloud-based media agents 121, 122, 123 implement and interact with each other using a variety of communication protocols to establish conference sessions and exchange media streams including packets of data in conference sessions. Such communication protocols include, but are not limited to: the Interactive Connectivity Establishment (ICE) protocol; the Session Traversal Utilities for Network Address Translation/Translator (NAT) (STUN) protocol modified or extended to use STUN URLs, in accordance with techniques presented herein; the User Datagram Protocol (UDP); and the Real-Time Transport protocol (RTP). The techniques described herein use the aforementioned protocols by way of example, only; other similar protocols may also be used instead of or in combination with the mentioned protocols, as would be appreciated by one of ordinary skill in the relevant arts having access to the description presented herein.


The on-premises media agents 111, 112, 113 and cloud-based media agents 121, 122, 123 may be any number of media agents, up to the tens of thousands, and can be distributed geographically around the world. Similarly, clients seeking to join a conference may be located anywhere in the world. As such, the conference system is referred to as “highly distributed.” A challenge to such a distributed arrangement is to construct a “best” media topology for assigning clients to conferences using on-premises media agents or cloud-based media agents.


Techniques presented herein address the challenges of assigning clients to conferences based upon a number of factors. For example, an enterprise may wish to control the use of media agents based on the type of data being exchanged in the conference. The enterprise may desire to have all audio conferences handled by on-premises media agents while all video conferences are handled by cloud-based media agents, or vice versa, so that the appropriate media agents can handle the various conferences. As another example, the enterprise may wish to simply set up their conferencing capabilities based on capacity of the media agents so that the on-premises media agents are used first until there are no longer any media agents available on-premises, and then the cloud-based media agents can be used when the media agents on-premises have reached capacity. Yet another example is to employ on-premises media agents for on-premises clients, and to employ cloud-based media agents for clients that are not on-premises so that the on-premises clients use the on-premises media agents and remote clients use the cloud-based media agents. And yet another example is handling conferences based on the security of the conference, so that secure conferences are handled by on-premises media agents, and non-secure conferences are handled by cloud-based media agents, or vice-versa with the non-secure conferences handled by on-premises media agents and secure conferences handled by cloud-based media agents. There are several decisions in the controller logic to control routing of conferences to on-premises media agents and cloud-based media agents. The controller logic can determine which media agents are more secure and direct conferences accordingly. For example, if the on-premises media agents are more secure, the secure conferences are directed to the on-premises media agents, and if the cloud-based media agents are more secure, the secure conferences are directed to cloud-based media agents. The factors for determining how conferences are directed to cloud-based media agents or on-premises media agents can be chosen by the enterprise or pre-selected by the manufacturer, or may be available for on-demand changes depending upon the needs and desired functionality in conferencing of the enterprise.


The advantages of a conferencing system that includes both on-premises media agents and cloud-based media agents include limitless conferencing capabilities, meaning there is no limit on the number of participants, and the conferencing system is able to satisfy the needs of traditional on-premises conferencing and cloud-based conferencing individually, as well as combined, by combining the two conferencing mechanisms into a single conferencing system.



FIG. 2 illustrates an example method embodiment. The procedure of FIG. 2 commences by 210 registering a plurality of on-premises media agents with a cloud-based controller. The plurality of on-premises media agents can, for example, be the media agents 111, 112, 113 shown in FIG. 1, and can include a single on-premises media agent up to any number of media agents residing on-premises at an enterprise. At 214 a plurality of cloud-based media agents are registered with the cloud-based controller. At 216, incoming requests to join a teleconference, which can be referred to generally as “calls”, can be any request to join a conference, such as an audio or video teleconference, are handled by at least one on-premises media agent or at least one cloud-based media agent based upon a plurality of factors. The factors for controlling the handling of incoming requests to join a conference can include capacity for more clients at the on-premises media agents, security of the conference, media type of the conference, and other factors described herein and known in the relevant art as pertaining to conferencing sessions and conferencing systems. The conferences can be general teleconferences, such as audio or video conferences, and include multi-media conferences.


The handling of conferences by cloud-based media agents and on-premises media agents can be seamless to the clients. There are two approaches for directing conferences, a first in which the controller manages the switch. A second is the switch is handled by the client and a load balancer.



FIG. 3 illustrates an example method embodiment for handling conferences in accordance with some aspects of the subject technology where the controller manages the switching of conferences. In this embodiment, conferences are handled by media agents that are located on-premises until they have reached maximum capacity, and then the cloud-based controller handles the conferences or reallocates some data to cloud-based media agents. The capacity threshold can indicate that the media agents cannot handle further audio or video streams. If the capacity threshold is met, then the centralized controller can locate cloud-based media agents to handle media requests from new clients requesting to join the conference.


As described herein, the threshold capacity is only one factor that can be used in determining the media agent that handles a requested conference. The handling can also occur based on the type of security of the conference, such that the secure conferences are handled by media agents that are deemed to be the most secure. For example, the controller logic can determine the media agents that are the most secure, and direct the secure calls to the most secure media agents. The threshold capacity is used as one example factor for determining the handling of conferences in the example embodiment of FIG. 3.


At 310, when a client device desires to join a conference, the client device transmits a message to a centralized controller requesting to join a teleconference (including an audio conference or a video conference). The centralized controller is cloud-based and resides in the cloud in the example embodiment. At 312, the centralized controller returns a media URL that can be used to identify an appropriate media agent for the client device to connect to the conference. The media agent identified in the media URL may be a cloud-based media agent or an on-premises media agent, depending upon the logic of the cloud-based controller for handling conferences by the appropriate media agents. The controller can optionally further command appropriate media agents to communicate with each other to facilitate the conference at 314. At 316, the media agents send a notification to the controller when they have reached a threshold capacity. At 318 it is determined by the cloud-based controller if all local media agents have reached their capacity threshold. When all on-premises media agents have not reached their threshold capacity at 318, the centralized controller returns to 312 and continues to provide media URLs to clients to be handled by on-premises media agents. When all on-premises media agents have reached their threshold capacity at 318, the centralized controller reallocates some data communications or directs future conference requests to cloud-based media agents at 320.



FIG. 4 illustrates an example block diagram including a STUN [Simple Traversal of UDP (Universal Datagram Protocol) through NATs (Network Address Translators)] load balancer (also referred to as a “load balancing server”) fronting each group of media agents, according to some aspects of the subject technology. Although depicted as a STUN load balancer, it should be understood that any load balancer can be implemented in accordance with the teachings of the subject technology. Further, it is also contemplated that in alternate embodiments, the load balancer functionality can be absorbed into the media agent. Accordingly, when the load balancer receives the join request, it interrogates a shared database amongst the load balancers, and determines which if any media agent is already servicing the conference. If there is already one assigned, the load balancer redirects the client to that media agent. If not, the load balancer redirects the client to a media agent with available capacity.


The techniques presented herein dynamically configure highly-distributed resources to support conference sessions initiated by callers on an as-needed basis. In support of these techniques, the controller, media agents, callers and load balancers, implement and interact with each other using a variety of communication protocols to establish conference sessions and exchange media streams containing packets of data in the conference sessions. Such communication protocols include, but are not limited to: the Interactive Connectivity Establishment (ICE) protocol; the STUN protocol modified/extended to use STUN URLs, in accordance with techniques presented herein; the User Datagram Protocol (UDP) and the Real-Time Transport Protocol (RTP). The techniques described herein use the aforementioned protocols by way of example only; other similar protocols may also be used instead of or in combination with the mentioned protocols, as would be appreciated by one of ordinary skill in the relevant arts having access to the description presented herein.



FIG. 5 illustrates an example method embodiment for directing conferences using, for example, the conference system including STUN load balancers as shown in FIG. 4. At 510, when a client connects to the controller, the client is given a single STUN URL 510. When the client resolves this DNS from within the boundaries of the enterprise, it results in two distinct records at 512. The first record is a VIP (Virtual IP address) that points to a cluster of cloud-based agents. The other record, at a higher priority, points to a cluster of media agents on-premises. Fronting each of these clusters is a STUN load balancer as shown, however it should be understood that any load balancer can be implemented and/or that the load balancing functionality can be absorbed into the media agent itself.


At 514 the client uses the STUN to connect with higher priority to the on-premises media agent. At 516, the STUN load balancer monitors the load of the cloud-based media agents. At 518, the STUN load balancer determines if there is sufficient capacity for the on-premises media agents. When there is sufficient capacity, the request is handled by an on-premises media agent at 520 and then the user is connected to an on-premises media agent at 522. When there is not sufficient capacity at 218, the STUN load balancer can reject the STUN request at 524, with an error response which indicates a temporary capacity failure. The client uses this as a signal to instead try the second IP address at 526. The client device performs STUN to the second IP address at 528, which is a cloud-based media agent. Since there is enough capacity in the cloud, the load balancer can direct the request to an available media agent and the STUN transaction completes successfully. At 530 the client is connected to a cloud-based media agent.


The benefit of this example embodiment shown in FIG. 5 is that it does not require the controller to know the available capacity of the media agents and thus scales to a larger number of clusters worldwide. This technique also works particularly well with split-horizon DNS where the STUN URL would return two VIPs for resolutions performed within the enterprise boundary, but only one (the cloud VIP) when the client is outside of the boundary of the enterprise. This model is primarily concerned with implementing cloud-based resources to account for on-premises media agents exceeding capacity. It is also possible for an organization to utilize available on-premises resources from a cloud-based meeting.


In another example embodiment, the handling of conferences by cloud-based media agents and on-premises media agents may be based on media modality rather than exceeding capacity of the media agents. For example, an on-premises meeting may elect to direct conferences of a specific media type or combination of modalities to the cloud while maintaining other resources on-premises. The cloud controller can be provided with logic to determine the best mode of directing conferences based upon the information associated with a particular conference. For example, if an audio conference is requested, the audio conference is handled by a first group of media agents, if a video conference is requested, the video conference is handled by a second group of media agents, and if a sharing conference is requested, the sharing conference is handled by a third group of media agents.



FIG. 6A, and FIG. 6B illustrate example system embodiments according to some aspects of the subject technology. The more appropriate embodiment will be apparent to those of ordinary skill in the art when practicing the present technology. Persons of ordinary skill in the art will also readily appreciate that other system embodiments are possible.



FIG. 6B illustrates a conventional system bus computing system architecture 600 wherein the components of the system are in electrical communication with each other using a bus 605. Exemplary system 600 includes a processing unit (CPU or processor) 610 and a system bus 605 that couples various system components including the system memory 615, such as read only memory (ROM) 620 and random access memory (RAM) 625, to the processor 610. The system 600 can include a cache of high-speed memory connected directly with, in close proximity to, or integrated as part of the processor 610. The system 600 can copy data from the memory 615 and/or the storage device 630 to the cache 612 for quick access by the processor 610. In this way, the cache can provide a performance boost that avoids processor 610 delays while waiting for data. These and other modules can control or be configured to control the processor 610 to perform various actions. Other system memory 615 may be available for use as well. The memory 615 can include multiple different types of memory with different performance characteristics. The processor 610 can include any general purpose processor and a hardware module or software module, such as module 1632, module 2634, and module 3636 stored in storage device 630, configured to control the processor 610 as well as a special-purpose processor where software instructions are incorporated into the actual processor design. The processor 610 may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric.


To enable user interaction with the computing device 600, an input device 645 can represent any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech and so forth. An output device 635 can also be one or more of a number of output mechanisms known to those of skill in the art. In some instances, multimodal systems can enable a user to provide multiple types of input to communicate with the computing device 600. The communications interface 640 can generally govern and manage the user input and system output. There is no restriction on operating on any particular hardware arrangement and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed.


Storage device 630 is a non-volatile memory and can be a hard disk or other types of computer readable media which can store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, solid state memory devices, digital versatile disks, cartridges, random access memories (RAMs) 625, read only memory (ROM) 620, and hybrids thereof.


The storage device 630 can include software modules 632, 634, 636 for controlling the processor 610. Other hardware or software modules are contemplated. The storage device 630 can be connected to the system bus 605. In one aspect, a hardware module that performs a particular function can include the software component stored in a computer-readable medium in connection with the necessary hardware components, such as the processor 610, bus 605, display 635, and so forth, to carry out the function.



FIG. 6A illustrates a computer system 650 having a chipset architecture that can be used in executing the described method and generating and displaying a graphical user interface (GUI). Computer system 650 is an example of computer hardware, software, and firmware that can be used to implement the disclosed technology. System 650 can include a processor 655, representative of any number of physically and/or logically distinct resources capable of executing software, firmware, and hardware configured to perform identified computations. Processor 655 can communicate with a chipset 660 that can control input to and output from processor 655. In this example, chipset 660 outputs information to output 665, such as a display, and can read and write information to storage device 670, which can include magnetic media, and solid state media, for example. Chipset 660 can also read data from and write data to RAM 675. A bridge 680 for interfacing with a variety of user interface components 685 can be provided for interfacing with chipset 660. Such user interface components 685 can include a keyboard, a microphone, touch detection and processing circuitry, a pointing device, such as a mouse, and so on. In general, inputs to system 650 can come from any of a variety of sources, machine generated and/or human generated.


Chipset 660 can also interface with one or more communication interfaces 690 that can have different physical interfaces. Such communication interfaces can include interfaces for wired and wireless local area networks, for broadband wireless networks, as well as personal area networks. Some applications of the methods for generating, displaying, and using the GUI disclosed herein can include receiving ordered datasets over the physical interface or be generated by the machine itself by processor 655 analyzing data stored in storage 670 or 675. Further, the machine can receive inputs from a user via user interface components 685 and execute appropriate functions, such as browsing functions by interpreting these inputs using processor 655.


It can be appreciated that exemplary systems 600 and 650 can have more than one processor 610 or be part of a group or cluster of computing devices networked together to provide greater processing capability.


As one of ordinary skill in the art will readily recognize, the examples and technologies provided above are simply for clarity and explanation purposes, and can include many additional concepts and variations.


For clarity of explanation, in some instances the present technology may be presented as including individual functional blocks including functional blocks comprising devices, device components, steps or routines in a method embodied in software, or combinations of hardware and software.


In some embodiments the computer-readable storage devices, mediums, and memories can include a cable or wireless signal containing a bit stream and the like. However, when mentioned, non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.


Methods according to the above-described examples can be implemented using computer-executable instructions that are stored or otherwise available from computer readable media. Such instructions can comprise, for example, instructions and data which cause or otherwise configure a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Portions of computer resources used can be accessible over a network. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, firmware, or source code. Examples of computer-readable media that may be used to store instructions, information used, and/or information created during methods according to described examples include magnetic or optical disks, flash memory, USB devices provided with non-volatile memory, networked storage devices, and so on.


Devices implementing methods according to these disclosures can comprise hardware, firmware and/or software, and can take any of a variety of form factors. Typical examples of such form factors include laptops, smart phones, small form factor personal computers, personal digital assistants, rackmount devices, standalone devices, and so on. Functionality described herein also can be embodied in peripherals or add-in cards. Such functionality can also be implemented on a circuit board among different chips or different processes executing in a single device, by way of further example.


The instructions, media for conveying such instructions, computing resources for executing them, and other structures for supporting such computing resources are means for providing the functions described in these disclosures.


Although a variety of examples and other information was used to explain aspects within the scope of the appended claims, no limitation of the claims should be implied based on particular features or arrangements in such examples, as one of ordinary skill would be able to use these examples to derive a wide variety of implementations. Further and although some subject matter may have been described in language specific to examples of structural features and/or method steps, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to these described features or acts. For example, such functionality can be distributed differently or performed in components other than those identified herein. Rather, the described features and steps are disclosed as examples of components of systems and methods within the scope of the appended claims. Moreover, claim language reciting “at least one of” a set indicates that one member of the set or multiple members of the set satisfy the claim.

Claims
  • 1. A method comprising: sending from a client device a request to join a conference at a cloud-based controller;storing, in response to a response from the controller, (a) a first address of a cluster of on-premises media agents disposed at a physical location of an enterprise and (b) a second address of cloud-based media agents disposed at a cloud location that is remote from the physical location of the enterprise;selecting at least one on-premises media agent or at least one cloud-based media agent to handle the request, comprising: selecting the first address in response to the cluster of on-premises media agents having sufficient capacity to handle the request; andselecting the second address in response to the cluster of on-premises media agents lacking sufficient capacity to handle the request.
  • 2. The method of claim 1, further comprising receiving, in response to the sending, a Simple Traversal of UDP (Universal Datagram Protocol) through NATs (Network Address Translators) (STUN) address of a STUN load balancer.
  • 3. The method of claim 2, further comprising creating, in response to the receiving, the first and the second address.
  • 4. The method of claim 3, further comprising setting the first address to a higher priority than the second address.
  • 5. The method of claim 1, wherein the selecting at least one on-premises media agent or at least one cloud-based media agent to handle the request comprises determining whether the cluster of on-premises media agents has enough available capacity to handle the request.
  • 6. The method of claim 5, wherein the selecting the first address is in response to at least a positive result of the determining.
  • 7. The method of claim 5, wherein the selecting the second address is in response to at least a negative result of the determining.
  • 8. A device comprising: a memory storing instructions;a processor programmed to execute the instructions to perform operations comprising:sending from a client device a request to join a conference at a cloud-based controller; storing, in response to a response from the controller, (a) a first address of a cluster of on-premises media agents disposed at a physical location of an enterprise and (b) a second address of cloud-based media agents disposed at a cloud location that is remote from the physical location of the enterprise;selecting at least one on-premises media agent or at least one cloud-based media agent to handle the request, comprising:selecting the first address in response to the cluster of on-premises media agents having sufficient capacity to handle the request; andselecting the second address in response to the cluster of on-premises media agents lacking sufficient capacity to handle the request.
  • 9. The device of claim 8, the operations further comprising receiving, in response to the sending, a Simple Traversal of UDP (Universal Datagram Protocol) through NATs (Network Address Translators) (STUN) address of a STUN load balancer.
  • 10. The device of claim 9, the operations further comprising creating, in response to the receiving, the first and the second address.
  • 11. The device of claim 10, the operations further comprising setting the first address to a higher priority than the second address.
  • 12. The device of claim 8, wherein the selecting at least one on-premises media agent or at least one cloud-based media agent to handle the request comprises determining whether the cluster of on-premises media agents has enough available capacity to handle the request.
  • 13. The device of claim 12, wherein the selecting the first address is in response to at least a positive result of the determining.
  • 14. The device of claim 12, wherein the selecting the second address is in response to at least a negative result of the determining.
  • 15. A non-transitory computer readable media storing instructions that, when executed by a device, cause the device to perform operations comprising: a memory storing instructions;a processor programmed to execute the instructions to perform operations comprising:sending from a client device a request to join a conference at a cloud-based controller; storing, in response to a response from the controller, (a) a first address of a cluster of on-premises media agents disposed at a physical location of an enterprise and (b) a second address of cloud-based media agents disposed at a cloud location that is remote from the physical location of the enterprise;selecting at least one on-premises media agent or at least one cloud-based media agent to handle the request, comprising:selecting the first address in response to the cluster of on-premises media agents having sufficient capacity to handle the request; andselecting the second address in response to the cluster of on-premises media agents lacking sufficient capacity to handle the request.
  • 16. The media of claim 15, the operations further comprising receiving, in response to the sending, a Simple Traversal of UDP (Universal Datagram Protocol) through NATs (Network Address Translators) (STUN) address of a STUN load balancer.
  • 17. The media of claim 16, the operations further comprising creating, in response to the receiving, the first and the second address.
  • 18. The media of claim 17, the operations further comprising setting the first address to a higher priority than the second address.
  • 19. The media of claim 15, wherein the selecting at least one on-premises media agent or at least one cloud-based media agent to handle the request comprises determining whether the cluster of on-premises media agents has enough available capacity to handle the request.
  • 20. The media of claim 19, wherein the selecting the first address is in response to at least a positive result of the determining.
CROSS REFERENCE TO RELATED APPLICATIONS

The instant application is a continuation of U.S. application Ser. No. 14/690,039 filed Apr. 17, 2015 entitled HANDLING CONFERENCES USING HIGHLY-DISTRIBUTED AGENTS, the contents of which are expressly incorporated by reference herein in its entirety.

US Referenced Citations (438)
Number Name Date Kind
4460807 Kerr et al. Jul 1984 A
4890257 Anthias et al. Dec 1989 A
4977605 Fardeau et al. Dec 1990 A
5293430 Shiau et al. Mar 1994 A
5673253 Shaffer Sep 1997 A
5694563 Belfiore et al. Dec 1997 A
5699082 Marks et al. Dec 1997 A
5745711 Kitahara et al. Apr 1998 A
5767897 Howell Jun 1998 A
5825858 Shaffer et al. Oct 1998 A
5874962 de Judicibus et al. Feb 1999 A
5889671 Autermann et al. Mar 1999 A
5917537 Lightfoot et al. Jun 1999 A
5995096 Kitahara et al. Nov 1999 A
6023606 Monte et al. Feb 2000 A
6040817 Sumikawa Mar 2000 A
6075531 DeStefano Jun 2000 A
6085166 Beckhardt et al. Jul 2000 A
6191807 Hamada et al. Feb 2001 B1
6300951 Filetto et al. Oct 2001 B1
6392674 Hiraki et al. May 2002 B1
6424370 Courtney Jul 2002 B1
6463473 Gubbi Oct 2002 B1
6553363 Hoffman Apr 2003 B1
6554433 Holler Apr 2003 B1
6573913 Butler et al. Jun 2003 B1
6646997 Baxley et al. Nov 2003 B1
6665396 Khouri et al. Dec 2003 B1
6700979 Washiya Mar 2004 B1
6711419 Mori Mar 2004 B1
6754321 Innes et al. Jun 2004 B1
6754335 Shaffer et al. Jun 2004 B1
RE38609 Chen et al. Oct 2004 E
6816464 Scott et al. Nov 2004 B1
6865264 Berstis Mar 2005 B2
6938208 Reichardt Aug 2005 B2
6978499 Gallant et al. Dec 2005 B2
7046134 Hansen May 2006 B2
7046794 Piket et al. May 2006 B2
7058164 Chan et al. Jun 2006 B1
7058710 McCall et al. Jun 2006 B2
7062532 Sweat et al. Jun 2006 B1
7085367 Lang Aug 2006 B1
7124164 Chemtob Oct 2006 B1
7149499 Oran et al. Dec 2006 B1
7180993 Hamilton Feb 2007 B2
7209475 Shaffer et al. Apr 2007 B1
7340151 Taylor et al. Mar 2008 B2
7366310 Stinson et al. Apr 2008 B2
7418664 Ben-Shachar et al. Aug 2008 B2
7441198 Dempski et al. Oct 2008 B2
7478339 Pettiross et al. Jan 2009 B2
7500200 Kelso et al. Mar 2009 B2
7530022 Ben-Shachar et al. May 2009 B2
7552177 Kessen et al. Jun 2009 B2
7577711 McArdle Aug 2009 B2
7584258 Maresh Sep 2009 B2
7587028 Broerman et al. Sep 2009 B1
7606714 Williams et al. Oct 2009 B2
7606862 Swearingen et al. Oct 2009 B2
7620902 Manion et al. Nov 2009 B2
7634533 Rudolph et al. Dec 2009 B2
7774407 Daly et al. Aug 2010 B2
7792277 Shaffer et al. Sep 2010 B2
7830814 Allen et al. Nov 2010 B1
7840013 Dedieu et al. Nov 2010 B2
7840980 Gutta Nov 2010 B2
7881450 Gentle et al. Feb 2011 B1
7920160 Tamaru et al. Apr 2011 B2
7956869 Gilra Jun 2011 B1
7986372 Ma et al. Jul 2011 B2
7995464 Croak et al. Aug 2011 B1
8059557 Sigg et al. Nov 2011 B1
8081205 Baird et al. Dec 2011 B2
8140973 Sandquist et al. Mar 2012 B2
8169463 Enstad et al. May 2012 B2
8219624 Haynes et al. Jul 2012 B2
8274893 Bansal et al. Sep 2012 B2
8290998 Stienhans Oct 2012 B2
8301883 Sundaram et al. Oct 2012 B2
8340268 Knaz Dec 2012 B2
8358327 Duddy Jan 2013 B2
8423615 Hayes Apr 2013 B1
8428234 Knaz Apr 2013 B2
8433061 Cutler Apr 2013 B2
8434019 Nelson Apr 2013 B2
8456507 Mallappa et al. Jun 2013 B1
8462103 Moscovitch et al. Jun 2013 B1
8478848 Minert Jul 2013 B2
8520370 Waitzman, III et al. Aug 2013 B2
8625749 Jain et al. Jan 2014 B2
8630208 Kjeldaas et al. Jan 2014 B1
8638354 Leow et al. Jan 2014 B2
8645464 Zimmet et al. Feb 2014 B2
8675847 Shaffer et al. Mar 2014 B2
8694587 Chaturvedi Apr 2014 B2
8694593 Wren et al. Apr 2014 B1
8706539 Mohler Apr 2014 B1
8732149 Iida et al. May 2014 B2
8738080 Nhiayi et al. May 2014 B2
8751572 Behforooz et al. Jun 2014 B1
8831505 Seshadri Sep 2014 B1
8850203 Sundaram et al. Sep 2014 B2
8860774 Sheeley et al. Oct 2014 B1
8874644 Allen et al. Oct 2014 B2
8890924 Wu Nov 2014 B2
8892646 Chaturvedi Nov 2014 B2
8914444 Hladik, Jr. Dec 2014 B2
8914472 Lee et al. Dec 2014 B1
8924862 Luo Dec 2014 B1
8930840 Risko et al. Jan 2015 B1
8947493 Lian et al. Feb 2015 B2
8972494 Chen et al. Mar 2015 B2
9003445 Rowe Apr 2015 B1
9031839 Thorsen et al. May 2015 B2
9032028 Davidson et al. May 2015 B2
9075572 Ayoub et al. Jul 2015 B2
9118612 Fish et al. Aug 2015 B2
9131017 Kurupacheril et al. Sep 2015 B2
9137376 Basart et al. Sep 2015 B1
9143729 Anand et al. Sep 2015 B2
9165281 Orsolini et al. Oct 2015 B2
9197701 Petrov Nov 2015 B1
9197848 Felkai et al. Nov 2015 B2
9201527 Kripalani et al. Dec 2015 B2
9203875 Huang et al. Dec 2015 B2
9204099 Brown Dec 2015 B2
9219735 Hoard et al. Dec 2015 B2
9246855 Maehiro Jan 2016 B2
9258033 Showering Feb 2016 B2
9268398 Tiperneni Feb 2016 B2
9298342 Zhang et al. Mar 2016 B2
9323417 Sun et al. Apr 2016 B2
9335892 Ubillos May 2016 B2
9349119 Desai et al. May 2016 B2
9367224 Ananthakrishnan et al. Jun 2016 B2
9369673 Ma et al. Jun 2016 B2
9407621 Vakil et al. Aug 2016 B2
9432512 You Aug 2016 B2
9449303 Underhill et al. Sep 2016 B2
9495664 Cole et al. Nov 2016 B2
9513861 Lin et al. Dec 2016 B2
9516022 Borzycki et al. Dec 2016 B2
9525711 Ackerman et al. Dec 2016 B2
9553799 Tarricone et al. Jan 2017 B2
9563480 Messerli Feb 2017 B2
9609030 Sun et al. Mar 2017 B2
9609514 Mistry et al. Mar 2017 B2
9614756 Joshi Apr 2017 B2
9640194 Nemala et al. May 2017 B1
9667799 Olivier May 2017 B2
9674625 Armstrong-Muntner Jun 2017 B2
9762709 Snyder et al. Sep 2017 B1
9948786 Rosenberg et al. Apr 2018 B2
20010030661 Reichardt Oct 2001 A1
20020018051 Singh Feb 2002 A1
20020059627 Islam May 2002 A1
20020076003 Zellner et al. Jun 2002 A1
20020078153 Chung et al. Jun 2002 A1
20020140736 Chen Oct 2002 A1
20020188522 McCall et al. Dec 2002 A1
20030028647 Grosu Feb 2003 A1
20030046421 Horovitz et al. Mar 2003 A1
20030068087 Wu et al. Apr 2003 A1
20030154250 Miyashita Aug 2003 A1
20030174826 Hesse Sep 2003 A1
20030187800 Moore et al. Oct 2003 A1
20030197739 Bauer Oct 2003 A1
20030227423 Arai et al. Dec 2003 A1
20040039909 Cheng Feb 2004 A1
20040054885 Bartram et al. Mar 2004 A1
20040098456 Krzyzanowski et al. May 2004 A1
20040210637 Loveland Oct 2004 A1
20040253991 Azuma Dec 2004 A1
20040267938 Shoroff et al. Dec 2004 A1
20050014490 Desai et al. Jan 2005 A1
20050031136 Du et al. Feb 2005 A1
20050039051 Erofeev Feb 2005 A1
20050048916 Suh Mar 2005 A1
20050055405 Kaminksy et al. Mar 2005 A1
20050055412 Kaminsky et al. Mar 2005 A1
20050085243 Boyer et al. Apr 2005 A1
20050099492 Orr May 2005 A1
20050108328 Berkeland et al. May 2005 A1
20050131774 Huxter Jun 2005 A1
20050175208 Shaw et al. Aug 2005 A1
20050215229 Cheng Sep 2005 A1
20050226511 Short Oct 2005 A1
20050231588 Yang et al. Oct 2005 A1
20050286711 Lee et al. Dec 2005 A1
20060004911 Becker et al. Jan 2006 A1
20060020697 Kelso et al. Jan 2006 A1
20060026255 Malamud et al. Feb 2006 A1
20060083305 Dougherty et al. Apr 2006 A1
20060084471 Walter Apr 2006 A1
20060164552 Cutler Jul 2006 A1
20060224430 Butt Oct 2006 A1
20060250987 White et al. Nov 2006 A1
20060271624 Lyle et al. Nov 2006 A1
20070005752 Chawla et al. Jan 2007 A1
20070021973 Stremler Jan 2007 A1
20070025576 Wen Feb 2007 A1
20070041366 Vugenfirer et al. Feb 2007 A1
20070047707 Mayer et al. Mar 2007 A1
20070058842 Vallone et al. Mar 2007 A1
20070067387 Jain et al. Mar 2007 A1
20070091831 Croy et al. Apr 2007 A1
20070100986 Bagley et al. May 2007 A1
20070106747 Singh et al. May 2007 A1
20070116225 Zhao et al. May 2007 A1
20070139626 Saleh et al. Jun 2007 A1
20070150453 Morita Jun 2007 A1
20070168444 Chen et al. Jul 2007 A1
20070198637 Deboy et al. Aug 2007 A1
20070208590 Dorricott et al. Sep 2007 A1
20070248244 Sato et al. Oct 2007 A1
20070250567 Graham et al. Oct 2007 A1
20080059986 Kalinowski et al. Mar 2008 A1
20080068447 Mattila et al. Mar 2008 A1
20080071868 Arenburg et al. Mar 2008 A1
20080080532 O'Sullivan Apr 2008 A1
20080107255 Geva et al. May 2008 A1
20080133663 Lentz Jun 2008 A1
20080154863 Goldstein Jun 2008 A1
20080209452 Ebert et al. Aug 2008 A1
20080270211 Vander Veen et al. Oct 2008 A1
20080278894 Chen et al. Nov 2008 A1
20090012963 Johnson Jan 2009 A1
20090019374 Logan et al. Jan 2009 A1
20090049151 Pagan Feb 2009 A1
20090064245 Facemire et al. Mar 2009 A1
20090075633 Lee et al. Mar 2009 A1
20090089822 Wada Apr 2009 A1
20090094088 Chen et al. Apr 2009 A1
20090100142 Stern et al. Apr 2009 A1
20090119373 Denner et al. May 2009 A1
20090132949 Bosarge May 2009 A1
20090193327 Roychoudhuri et al. Jul 2009 A1
20090234667 Thayne Sep 2009 A1
20090254619 Kho et al. Oct 2009 A1
20090256901 Mauchly et al. Oct 2009 A1
20090278851 Ach et al. Nov 2009 A1
20090282104 O'Sullivan et al. Nov 2009 A1
20090292999 LaBine et al. Nov 2009 A1
20090296908 Lee et al. Dec 2009 A1
20090306981 Cromack et al. Dec 2009 A1
20090309846 Trachtenberg et al. Dec 2009 A1
20090313334 Seacat et al. Dec 2009 A1
20100005142 Xiao et al. Jan 2010 A1
20100005402 George et al. Jan 2010 A1
20100031192 Kong Feb 2010 A1
20100061538 Coleman et al. Mar 2010 A1
20100070640 Allen et al. Mar 2010 A1
20100073454 Lovhaugen et al. Mar 2010 A1
20100077109 Yan et al. Mar 2010 A1
20100094867 Badros et al. Apr 2010 A1
20100095327 Fujinaka et al. Apr 2010 A1
20100121959 Lin et al. May 2010 A1
20100131856 Kalbfleisch et al. May 2010 A1
20100157978 Robbins et al. Jun 2010 A1
20100162170 Johns et al. Jun 2010 A1
20100183179 Griffin, Jr. et al. Jul 2010 A1
20100211872 Rolston et al. Aug 2010 A1
20100215334 Miyagi Aug 2010 A1
20100220615 Enstrom et al. Sep 2010 A1
20100241691 Savitzky et al. Sep 2010 A1
20100245535 Mauchly Sep 2010 A1
20100250817 Collopy et al. Sep 2010 A1
20100262266 Chang et al. Oct 2010 A1
20100262925 Liu et al. Oct 2010 A1
20100275164 Morikawa Oct 2010 A1
20100302033 Devenyi et al. Dec 2010 A1
20100303227 Gupta Dec 2010 A1
20100316207 Brunson Dec 2010 A1
20100318399 Li et al. Dec 2010 A1
20110072037 Lotzer Mar 2011 A1
20110075830 Dreher et al. Mar 2011 A1
20110087745 O'Sullivan et al. Apr 2011 A1
20110117535 Benko et al. May 2011 A1
20110131498 Chao et al. Jun 2011 A1
20110154427 Wei Jun 2011 A1
20110230209 Kilian Sep 2011 A1
20110264928 Hinckley Oct 2011 A1
20110270609 Jones et al. Nov 2011 A1
20110271211 Jones et al. Nov 2011 A1
20110283226 Basson et al. Nov 2011 A1
20110314139 Song et al. Dec 2011 A1
20120009890 Curcio et al. Jan 2012 A1
20120013704 Sawayanagi et al. Jan 2012 A1
20120013768 Zurek et al. Jan 2012 A1
20120026279 Kato Feb 2012 A1
20120054288 Wiese et al. Mar 2012 A1
20120072364 Ho Mar 2012 A1
20120084714 Sirpal et al. Apr 2012 A1
20120092436 Pahud et al. Apr 2012 A1
20120140970 Kim et al. Jun 2012 A1
20120179502 Farooq et al. Jul 2012 A1
20120190386 Anderson Jul 2012 A1
20120192075 Ebtekar et al. Jul 2012 A1
20120233020 Eberstadt et al. Sep 2012 A1
20120246229 Carr et al. Sep 2012 A1
20120246596 Ording et al. Sep 2012 A1
20120284635 Sitrick et al. Nov 2012 A1
20120296957 Stinson et al. Nov 2012 A1
20120303476 Krzyzanowski et al. Nov 2012 A1
20120306757 Keist et al. Dec 2012 A1
20120306993 Sellers-Blais Dec 2012 A1
20120308202 Murata et al. Dec 2012 A1
20120313971 Murata et al. Dec 2012 A1
20120315011 Messmer et al. Dec 2012 A1
20120321058 Eng et al. Dec 2012 A1
20120323645 Spiegel et al. Dec 2012 A1
20120324512 Cahnbley et al. Dec 2012 A1
20130027425 Yuan Jan 2013 A1
20130038675 Malik Feb 2013 A1
20130047093 Reuschel et al. Feb 2013 A1
20130050398 Krans et al. Feb 2013 A1
20130055112 Joseph et al. Feb 2013 A1
20130061054 Niccolai Mar 2013 A1
20130063542 Bhat et al. Mar 2013 A1
20130086633 Schultz Apr 2013 A1
20130090065 Fisuneko et al. Apr 2013 A1
20130091205 Kotler et al. Apr 2013 A1
20130091440 Kotler et al. Apr 2013 A1
20130094647 Mauro et al. Apr 2013 A1
20130113602 Gilbertson et al. May 2013 A1
20130113827 Forutanpour et al. May 2013 A1
20130120522 Lian et al. May 2013 A1
20130124551 Foo May 2013 A1
20130129252 Lauper et al. May 2013 A1
20130135837 Kemppinen May 2013 A1
20130141371 Hallford et al. Jun 2013 A1
20130148789 Hillier et al. Jun 2013 A1
20130182063 Jaiswal et al. Jul 2013 A1
20130185672 McCormick et al. Jul 2013 A1
20130198629 Tandon et al. Aug 2013 A1
20130210496 Zakarias et al. Aug 2013 A1
20130211826 Mannby Aug 2013 A1
20130212202 Lee Aug 2013 A1
20130215215 Gage Aug 2013 A1
20130219278 Rosenberg Aug 2013 A1
20130222224 Booms et al. Aug 2013 A1
20130225080 Doss et al. Aug 2013 A1
20130227433 Doray et al. Aug 2013 A1
20130235866 Tian et al. Sep 2013 A1
20130242030 Kato et al. Sep 2013 A1
20130243213 Moquin Sep 2013 A1
20130252669 Nhiayi Sep 2013 A1
20130263020 Heiferman et al. Oct 2013 A1
20130290421 Benson et al. Oct 2013 A1
20130297704 Alberth, Jr. et al. Nov 2013 A1
20130300637 Smits et al. Nov 2013 A1
20130325970 Roberts et al. Dec 2013 A1
20130329865 Ristock Dec 2013 A1
20130335507 Aarrestad et al. Dec 2013 A1
20140012990 Ko Jan 2014 A1
20140028781 MacDonald Jan 2014 A1
20140040404 Pujare Sanjay et al. Feb 2014 A1
20140040819 Duffy Feb 2014 A1
20140063174 Junuzovic et al. Mar 2014 A1
20140068452 Joseph et al. Mar 2014 A1
20140068670 Timmermann et al. Mar 2014 A1
20140078182 Utsunomiya Mar 2014 A1
20140108486 Borzycki et al. Apr 2014 A1
20140111597 Anderson et al. Apr 2014 A1
20140136630 Siegel et al. May 2014 A1
20140157338 Pearce Jun 2014 A1
20140161243 Contreras et al. Jun 2014 A1
20140195557 Oztaskent et al. Jul 2014 A1
20140198175 Shaffer et al. Jul 2014 A1
20140237371 Klemm et al. Aug 2014 A1
20140253671 Bentley et al. Sep 2014 A1
20140280595 Mani Sep 2014 A1
20140282213 Musa et al. Sep 2014 A1
20140296112 O'Driscoll et al. Oct 2014 A1
20140298210 Park et al. Oct 2014 A1
20140310246 Vijayan Oct 2014 A1
20140317561 Robinson et al. Oct 2014 A1
20140337840 Hyde et al. Nov 2014 A1
20140358264 Long et al. Dec 2014 A1
20140372908 Kashi et al. Dec 2014 A1
20150004571 Ironside et al. Jan 2015 A1
20150009278 Modai et al. Jan 2015 A1
20150029301 Makatomi et al. Jan 2015 A1
20150067552 Leorin et al. Mar 2015 A1
20150070835 Mclean Mar 2015 A1
20150074189 Cox et al. Mar 2015 A1
20150081885 Thomas Mar 2015 A1
20150082350 Ogasawara et al. Mar 2015 A1
20150085060 Fish et al. Mar 2015 A1
20150088575 Asli et al. Mar 2015 A1
20150089393 Zhang et al. Mar 2015 A1
20150089394 Chen et al. Mar 2015 A1
20150113050 Stahl Apr 2015 A1
20150113369 Chan et al. Apr 2015 A1
20150128068 Kim May 2015 A1
20150172120 Dwarampudi Jun 2015 A1
20150178626 Pielot et al. Jun 2015 A1
20150215365 Shaffer et al. Jul 2015 A1
20150254760 Pepper Sep 2015 A1
20150288774 Larabie-Belanger Oct 2015 A1
20150301691 Qin Oct 2015 A1
20150304120 Xiao et al. Oct 2015 A1
20150304366 Bader-Natal et al. Oct 2015 A1
20150319113 Gunderson et al. Nov 2015 A1
20150350126 Xue Dec 2015 A1
20150373063 Vashishtha et al. Dec 2015 A1
20150373414 Kinoshita Dec 2015 A1
20160037304 Dunkin et al. Feb 2016 A1
20160043986 Ronkainen Feb 2016 A1
20160044159 Wolff et al. Feb 2016 A1
20160044380 Barrett Feb 2016 A1
20160050079 Martin De Nicolas et al. Feb 2016 A1
20160050160 Li et al. Feb 2016 A1
20160050175 Chaudhry et al. Feb 2016 A1
20160070758 Thomson et al. Mar 2016 A1
20160071056 Ellison et al. Mar 2016 A1
20160072862 Bader-Natal et al. Mar 2016 A1
20160094593 Priya Mar 2016 A1
20160105345 Kim et al. Apr 2016 A1
20160110056 Hong et al. Apr 2016 A1
20160165056 Bargetzi et al. Jun 2016 A1
20160173537 Kumar Jun 2016 A1
20160182580 Nayak Jun 2016 A1
20160266609 McCracken Sep 2016 A1
20160269411 Malachi Sep 2016 A1
20160274977 Vijayan Sep 2016 A1
20160277461 Sun et al. Sep 2016 A1
20160283909 Adiga Sep 2016 A1
20160307165 Grodum et al. Oct 2016 A1
20160321347 Zhou et al. Nov 2016 A1
20170000644 Harris et al. Jan 2017 A1
20170006162 Bargetzi et al. Jan 2017 A1
20170070706 Ursin et al. Mar 2017 A1
20170093874 Uthe Mar 2017 A1
20170104961 Pan et al. Apr 2017 A1
20170171260 Jerrard-Dunne et al. Jun 2017 A1
20170324850 Snyder et al. Nov 2017 A1
Foreign Referenced Citations (15)
Number Date Country
101055561 Oct 2007 CN
101076060 Nov 2007 CN
102572370 Jul 2012 CN
102655583 Sep 2012 CN
101729528 Nov 2012 CN
102938834 Feb 2013 CN
103141086 Jun 2013 CN
204331453 May 2015 CN
3843033 Sep 1991 DE
959585 Nov 1999 EP
2773131 Sep 2014 EP
WO 9855903 Dec 1998 WO
WO 2008139269 Nov 2008 WO
20120167262 Dec 2012 WO
20140118736 Aug 2014 WO
Non-Patent Literature Citations (38)
Entry
Choi, Jae Young, et al; “Towards an Automatic Face Indexing System for Actor-based Video Services in an IPTV Environment,” IEEE Transactions on 56, No. 1 (2010): 147-155.
Cisco Systems, Inc. “Cisco webex: WebEx Meeting Center User Guide for Hosts, Presenters, and Participants” © 1997-2013, pp. 1- 394 plus table of contents.
Cisco Systems, Inc., “Cisco Webex Meetings for iPad and iPhone Release Notes,” Version 5.0, Oct. 2013, 5 pages.
Cisco Systems, Inc., “Cisco Unified Personal Communicator 8.5”, 2011, 9 pages.
Eichen, Elliot, et al., “Smartphone Docking Stations and Strongly Converged VoIP Clients for Fixed-Mobile convergence,” IEEE Wireless Communications and Networking Conference: Services, Applications and Business, 2012, pp. 3140-3144.
Grothaus, Michael, “How Interactive Product Placements Could Save Television,” Jul. 25, 2013, 4 pages.
Hannigan, Nancy Kruse, et al., The IBM Lotus Samteime VB Family Extending the IBM Unified Communications and Collaboration Strategy (2007), available at http://www.ibm.com/developerworks/lotus/library/sametime8-new/, 10 pages.
Hirschmann, Kenny, “TWIDDLA: Smarter Than The Average Whiteboard,” Apr. 17, 2014, 2 pages.
Nyamgondalu, Nagendra, “Lotus Notes Calendar and Scheduling Explained!” IBM, Oct. 18, 2004, 10 pages.
Schreiber, Danny, “The Missing Guide for Google Hangout Video Calls,” Jun. 5, 2014, 6 pages.
Shervington, Martin, “Complete Guide to Google Hangouts for Businesses and Individuals,” Mar. 20, 2014, 15 pages.
Shi, Saiqi, et al, “Notification That a Mobile Meeting Attendee Is Driving”, May 20, 2013, 13 pages.
Author Unknown, “A Primer on the H.323 Series Standard,” Version 2.0, available at httplAshvw.packetzr-Jr.com/voipM323ipapr-Jrsiprirmnv, retrieved on Dec. 20, 2006, 17 pages.
Author Unknown, “Active screen follows mouse and dual monitors,” KDE Community Forums, Apr. 13, 2010, 3 pages.
Author Unknown, “Implementing Media Gateway Control Protocols” A RADVision White Paper, Jan. 27, 2002, 16 pages.
Averusa, “Interactive Video Conferencing K-12 applications,” “Interactive Video Conferencing K-12 applications” copyright 2012. httpliwww.averusa.com/education/downloadsliwc brochure goved.pdf (last accessed Oct. 11, 2013).
Cisco Systems, Inc., “Cisco WebEx Meetings Server System Requirements release 1.5.” 30 pages, Aug. 14, 2013.
Cisco White Paper, “Web Conferencing: Unleash the Power of Secure, Real-Time Collaboration,” pp. 1-8, 2014.
Clarke, Brant, “Polycom Announces RealPresence Group Series,” “Polycom Announces RealPresence Group Series” dated Oct. 8, 2012 available at http://www.323.tvinewsiDolycorn-realpresencegroup-series (last accessed Oct. 11, 2013).
Clauser, Grant, et al., “Is the Google Home the voice-controlled speaker for you?,” The Wire Cutter, Nov. 22, 2016, pp. 1-15.
Cole, Camille, et al., “Videoconferencing for K-12 Classrooms,” Second Edition (excerpt), httoliwww.iste.orgidoesiexcerpts/VIDCO2-excerptpdf (last accessed Oct. 11, 2013), 2009.
Epson, “BrightLink Pro Projector,” BrightLink Pro Projector. http://www.e.oson.cornieqi) intatorers 'Landin 1bri hilink-ro-interactive-Dro'ec rs.cio?reft--vari brightlink-pro—dated 2013 (last accessed Oct. 11, 2013).
Infocus, “Mondopad,” Mondopad. http://www.infocus.cornisitesidefaultifilesiInFocus-MondoDad-INF5520a-INF7021-Datasheet-EN xif (last accessed Oct. 11, 2013), 2013.
MacCormick, John, “Video Chat with Multiple Cameras,” CSCW '13, Proceedings of the 2013 conference on Computer supported cooperative work companion, pp. 195-198, ACM, New York, NY, USA, 2013.
Microsoft, “Positioning Objects on Multiple Display Monitors,” Aug. 12, 2012, 2 pages.
Mullins, Robert, “Polycom Adds Tablet Videoconferencing,” Mullins, R. “Polycom Adds Tablet Videoconferencing” available at htto://www.informationweek.cornneecorniunifiedcommunicationsipolvcom-acids-tablet-ideocoriferencinal231900680 dated Oct. 12, 2011 (last accessed Oct. 11, 2013).
Nu-Star Technologies, “Interactive Whiteboard Conferencing,” Interactive WhiteboardConferencing. http://www.nu-star.comlinteractive-conf.php dated 2013 (last accessed Oct. 11, 2013).
Polycom, “Polycom RealPresence Mobile: Mobile Telepresence & Video Conferencing,” http://www.Dolycorn.corn/Droducts-services/hd-teleoresence-video-conferencingirea4wesencemobile.iitrrti#stabl (last accessed Oct. 11, 2013), 2013.
Polycom, “Polycom Turns Video Display Screens into Virtual Whiteboards with First Integrated Whiteboard Solution for Video Collaboration,” Polycom Turns Video Display Screens into Virtual Whiteboards with First Integrated Whiteboard Solution for Video Collaboration—http://www.Dolycorn.corn/companyinews/press-releases/2011/201110272.html—dated Oct. 27, 2011.
Polycom, “Polycom UC Board, Transforming ordinary surfaces into virtual whiteboards” 2012, Polycom, Inc., San Jose, CA, rift llw,,, ,,Aev.uat con-1/ Afibol, corn/ c inorn-uc-board- datasheet.pdf, (last accessed Oct. 11, 2013).
Stodle. Daniel, et al., “Gesture-Based, Touch-Free Multi-User Gaming on Wall-Sized, High-Resolution Tiled Displays,” 2008, 13 pages.
Thompson, Phil, et al., “Agent Based Ontology Driven Virtual Meeting Assistant,” Future Generation Information Technology, Springer Berlin Heidelberg, 2010, 4 pages.
TNO, “Multi-Touch Interaction Overview,” Dec. 1, 2009, 12 pages.
Toga, James, et al., “Demystifying Multimedia Conferencing Over the Internet Using the H.323 Set of Standards,” Intel Technology Journal Q2, 1998, 11 pages.
Ubuntu, “Force Unity to open new window on the screen where the cursor is?” Sep. 16, 2013, 1 page.
VB Forums, “Pointapi,” Aug. 8, 2001, 3 pages.
Vidyo, “VidyoPanorama,” VidyoPanorama—httol/www.vidyo comiproductsivdyopanorama! dated 2013 (last accessed Oct. 11, 2013).
International Search Report and Written Opinion for PCT Application No. PCT/US2016/027551, dated Jun. 24, 2016, 13 pages.
Related Publications (1)
Number Date Country
20180302514 A1 Oct 2018 US
Continuations (1)
Number Date Country
Parent 14690039 Apr 2015 US
Child 15948661 US