System and method for managing conferencing in a distributed communication network

Information

  • Patent Grant
  • 12368609
  • Patent Number
    12,368,609
  • Date Filed
    Tuesday, July 21, 2020
    5 years ago
  • Date Issued
    Tuesday, July 22, 2025
    2 months ago
Abstract
Systems and methods for a conferencing system. Responsive to a new conference request received at a conference orchestration service, participants of the conference and participant regions for each determined participant are determined. A mixer topology is generated that specifies an assignment of each determined participant to at least one input channel of a plurality of mixers. A mixer state manager generates the mixer topology based on the determined participant regions and at least one regional association of a mixer. Media of each determined participant is routed to the assigned at least one input channel according to the generated mixer topology by using the conference orchestration service. The mixer state manager generates the topology responsive to a request provided by the conference state manager. The conference orchestration service receives the generated mixer topology from the mixer state manager via the conference state manager.
Description
TECHNICAL FIELD

This invention relates generally to the telephony field, and more specifically to a new and useful system and method for managing conferencing in a distributed communication network.


BACKGROUND

In recent years, innovations in web application and Voice over Internet Protocol (VOIP) have brought about considerable changes to the capabilities offered through traditional phone and communication services. In some distributed or cloud-based telephony systems, the routing of audio, video, or other media files can be determined or limited by the location and/or availability of the appropriate computing resources. In the case of conference calls, the size of the conference, the quality of the media communication, and capability to support all regions can be limited and can be resource prohibitive. In some cases, conferencing systems are replicated in different regions. But such solutions do not solve inter-regional communication issues, and further creates division in infrastructure, which can complicate maintenance and further improvement. Thus, there is a need in the telephony field to create a new and useful system and method for managing conferencing in a distributed communication network. This invention provides such a new and useful system and method.





BRIEF DESCRIPTION OF THE FIGURES


FIG. 1 is schematic representation of a system of a preferred embodiment;



FIG. 2 is a communication sequence diagram of a method of a preferred embodiment;



FIG. 3 is a schematic representation of a variation distributing participants across a series of mixers;



FIG. 4 is a schematic representation of a variation of regionally mixing media;



FIG. 5 is a schematic representation of a variation mixing participants through a hierarchical mixer configuration;



FIG. 6 is schematic representation of a system of a preferred embodiment;



FIG. 7 is a diagram that depicts exemplary conference state;



FIG. 8 is a diagram that depicts exemplary mixer state;



FIGS. 9A-9D are diagrams that depict exemplary mixer topologies;



FIG. 10 is a communication sequence diagram of a method of a preferred embodiment;



FIG. 11 is a process block diagram of a method of a preferred embodiment;



FIG. 12 is an architecture diagram of conference system of a preferred embodiment; and



FIG. 13 is an architecture diagram of mixer system of a preferred embodiment.





DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following description of preferred embodiments of the invention is not intended to limit the invention to these preferred embodiments, but rather to enable any person skilled in the art to make and use this invention.


1. System for Operating Scalable Conferencing Services

As shown in FIG. 1, a system 100 for operating scalable conferencing services of a preferred embodiment can include a conference management system 110 and a set of distributed mixing resources 120. The conference management system preferably 110 includes a conferencing orchestration service 111, a conference state manager 112, and a mixer state manager 113. The system 100 functions to provide a high quality conferencing system. The system 100 preferably additionally provides regional accessibility, scalability, and efficiency. The system 100 is preferably architected such that communication quality and performance can be high across a wide range of regional areas. The scalability preferably enables the system 100 to scale out to a large number of participants spanning multiple mixer instances as well as supporting multiple distinct conferences. The system 100 efficiency preferably achieves resource usage that can be substantially proportional to the number of participants.


The system 100 is preferably applied in a communication platform (e.g., the communicating platform 130 of FIG. 1). In one implementation, the system 100 is preferably applied in a communication application platform such as the one described in U.S. Pat. No. 8,306,021 Issued on 6 Nov. 2012, which is hereby incorporated in its entirety by this reference. A communication application platform can execute business logic during a communication session such that a communication state can be directed by application logic and/or API requests. The system 100 is preferably used for synchronous media communication such as voice communication. Voice communication may include communication legs over PSTN, SIP, WebRTC, over the top proprietary IP communications, and/or any suitable communication protocol. Other forms of media such as video may additionally be supplemented or executed using substantially similar systems. For example, audio channels of a video communication session may use the system while individual video media channels are individually routed. In another variation, video may be composited and “mixed” into a single media stream in a manner similar to the audio. Within the communication platform, the communication is preferably divided into media and signaling, and a single communication protocol, such as SIP, may be used for a consistent transport protocol of the signaling within the platform. Other communication protocols may be connected on the edge of the platform or at any suitable location.


In media and signaling protocols, such as SIP, the signaling portion of the communication preferably contributes control directives and a mechanism to communicate various aspects concerning a communication session, and the media portion of the communication is preferably the channel through which media is transferred. The media portion can be particularly susceptible to latency issues caused by the routing path. The signaling route and the media route can diverge in their network topology.


The conference management system 110 preferably functions to control state of the conferencing system 100. As one aspect of the system 100, the system 100 is preferably distributed across multiple regional infrastructure systems. Having a physical system presence in different areas can promote higher quality communications. The management is preferably centralized to a single set of resources, but may alternatively be replicated in other regional instances. As mentioned above, the conference management system 110 preferably includes a conferencing orchestration service 111, a conference state manager 112, and a mixer state manager 113. The communication platform may provide other services that function to establish individual communication sessions, which may be connected in or transitioned to a conferencing state at least partially handled by the system 100. For example a call router (e.g., 131 of FIG. 1) may facilitate handing incoming calls, making outgoing calls, and controlling communication state (e.g., state as directed by a communication application).


The conferencing orchestration service 111 of the preferred embodiment functions to orchestrate the conferencing service on a signaling level. The conferencing orchestration service 111 preferably maintains a communication session model of the conference. The conference orchestration service preferably maintains the signaling dialog with communication services (e.g., the call router 131 of FIG. 1) of the communication platform (e.g., 130 of FIG. 1). Requests for a new conference are preferably sent to and established through the conferencing orchestration service 111. The conferencing orchestration service 111 preferably has a media/signaling protocol communication interface with the call router (e.g., 131) or other suitable communication services of the communication platform (e.g., 130). In one preferred implementation, the conference orchestration service 111 maintains a SIP dialog with a call router (e.g., 131) and through a back-to-back user agent (B2BUA) mechanism, redirects the back leg of a communication to either the call router (e.g., 131) or to a mixer channel (e.g., a mixer channel of the distributed mixing resources 120). Redirecting to a call router (e.g., 131) may be used to put a communication session into a wait-state by playing a wait song or processing any suitable wait-state application. The conferencing orchestration service 111 is preferably fronted by load balancing mechanism such that any new incoming requests (e.g., SIP INVITES) are distributed to a new server using a round-robin policy.


Individual nodes in the conferencing orchestration service 111 can additionally include an API that enables the conference state manager 112 to notify the conference orchestration service 111 of state changes. For example, notifications such as “conference starting—please dial in” or “conference ending” or “participant joining/leaving” may be sent through the API. The API is preferably an internal REST API but any suitable API may alternatively be used. The conferencing orchestration service 111 preferably delegates management of conference state to the conference state manager 112. The conference state manager 112 can then direct the conferencing orchestration service 111 to negotiate media with assigned mixers (e.g., mixers of the distributed mixing resources 120).


The conference state manager 112 of the preferred embodiment functions to manage the state of the conferences in a highly available manner. The state of conferences is preferably global across multiple communication platform regions. The conference state may reference conference participants and mixers in different regions. The conference state manager 112 preferably maintains an application model of a conference. The conference state 112 manager preferably stores a data object representation of a conference. The data model of a conference may include a list of participants, duration of the conference, and state of the conference (e.g., waiting for participants, in session, completed, and the like). The conference state manager preferably 112 includes an interface to an Application Program Interface (API) (e.g., the API 132) of the communication platform (e.g., 130), which may be an access point for programmatically inspecting and/or modifying the state of a conference. The conference state manager 112 preferably includes application layer communication interfaces to the API (e.g., 132), the conference orchestration service 111, and the mixer state manager 113. The application layer communication interfaces preferably use HTTP/S, but may alternatively use any suitable application layer protocol. The conference state manager 112 can relay changes in state of a conference to the conference orchestration service 111, which can make suitable changes to the managed media services. The conference state manager 112 additionally utilizes the mixer state manager 113 to setup and determine mixer setup for a given conference. The conference state manager 112 may be fronted by a load balancer.


The mixer state manager 113 of the preferred embodiment functions to monitor and control the set of mixer resources (e.g., mixer resources of the distributed mixing resources 120). The set of mixers may be distributed across multiple regions (e.g., “Region 1”, “Region 2”, and “Region 3” of FIG. 1), and each regional set of mixers may have various amounts of mixing capacity and number of running instances. Additionally, each mixer may be in different states depending on whether the mixer is serving a conference, multiple conferences, or idle. The mixer state manager 113 preferably manages a data model of the mixer resources. The mixer state manager 113 may store the mixer state information across a distributed storage system such that access to the information is highly available. As described above, an application layer communication interface preferably exists between the conference state manager 112 and the mixer state manager 113. The mixer state manager 113 additionally include a communication control protocol interface with the set of mixers (e.g., mixers of the distributing mixing resources 120), such as SIP or at least some signaling portion of a media and signaling protocol. The mixer state manager 113 is preferably configured to be responsive to requests of the conference state manager 112. The mixer state manager 113 can provide information about the current state of mixers (e.g., mixers of the distributing mixing resources 120) and additionally allocate mixers. The mixer state manager 113 can assign participants to particular mixers. The mixer state manager 113 can preferably apply regional and quality based heuristics in assigning mixers. Additionally, the mixer state manager 113 can additionally consider the distribution of participants according to the partitions of a mixer instance. A mixer may fail at times, and the mixer state manager 113 can detect the mixer failure for a conference session, allocate a new mixer, and re-invite participants to recover from the failure.


The set of mixers (e.g., mixers of the distributing mixing resources 120) of the preferred embodiment functions to provide a set of resources that can merge, bridge, or otherwise combine media streams to allow multiple legs in a communication. There is preferably a plurality of mixer instances in the set of mixers. The set of mixers may additionally be distributed across distinct regional areas. A subset of mixers can exist in a first region (e.g., “Region 1” of FIG. 1) and a second subset of mixers can exist in a second region (e.g., “Region 2” of FIG. 1). A region preferably describes distinct computer cluster location where a set of resources of the communication platform is instantiated. For example, a first region may exist on the West coast while a second region exists in the East cost. As media may be sensitive to latency from routing between regions, a set of regional subsystems can facilitate improving communication quality and in particular reducing media latency.


Mixers can preferably be used in isolation for a conference—one mixer facilitates completing mixing for every participant in a conference. Alternatively, mixers may be used in combination to facilitate mixing for all participants. Mixers may be used in series. For example, a first mixer may mix three of the eight participants in a conference, a second mixer may mix another three, and a third may mix two remaining participants. The three mixers are preferably set to be bridged for those partitions so that all eight participants are appropriately mixed. The mixers may be arranged in a hierarchical or network formation. For example, two mixers may mix media streams of participants, and the output media stream from each of these two child mixers can be mixed by a parent mixer. Such mixing architecture can be used to flexibly use the capacity of the mixing resources.


The system (e.g., 100) of the preferred embodiment is preferably operable in at least two regions, which are connectable through the media resources of the system. Various provider services in the regions can facilitate connecting media streams to outside endpoints (e.g., PSTN phones, SIP phones, or IP communication devices). The regions are preferably selected to serve endpoints local to that region. The regions may be separated by globally significant distance. A globally significant distance in this document may be understood to be a transmission distance greater than 2000 miles and more preferably greater than 5000 miles. For example, the first region may be on the West coast of the US and the second region may be on the East coast, separated by a geographic distance greater than 2500 miles. In another example, the first region may be in the United States and the second region may be in Europe, separated by a distance greater than 3500 miles. The first region and the second region are not limited to functioning with such distance ranges and may be separated by a distance less than 2000 miles or exceeding 5000 miles.


A mixer (e.g., a mixer of mixing resources 120) of a preferred embodiment functions to mix or combine at least two sources of synchronous communication. In particular, audio media streams are combined into a single audio stream. A mixer is preferably a service that includes a communication interface and processing capabilities. In one preferred implementation, the communication interface is an SIP interface, which may be used in interfacing with the communication orchestration service 111, other mixers in the same region, mixers in other regions, and/or other communication resources such as recording services, and communication gateways (which may connect to destination endpoints).


The mixer may have a participant input capacity, which limits the number of participants that can be mixed. The mixer preferably includes a number of participant input channels. For example, a mixer may be able to handle up to 500 participants. The number of participant input channels can additionally be distributed across distinct conference sessions, such that one mixer instance can serve multiple conferences. A mixer preferably outputs mixed media, which may be directed to endpoint connections and/or other mixers. A mixer preferably has an identifier such that media can be directed to specific mixers as assigned by the mixer state manager 113. Various other capabilities may be built into a mixer. The mixers may additionally include media mixing capability that allows a manager to listen to a participant leg (i.e., the manager is a silent participant). Additionally, the mixer may include mixing capability to segment portions of audio to subset of participants. For example, one participant may be able to privately converse with one other participant without other participants hearing their conversation.


The system (e.g., 100) can include resources or functionality modules that can provide recording, transcription, text-to-speech services, DTMF input, speaker identification service (e.g., which participant is speaking when), or any suitable media service.


2. Method for Operating Scalable Conferencing Services

As shown in FIG. 2, a method for operating scalable conferencing services of a preferred embodiment can include receiving a request for a new conference S110, allocating mixers of the conference S120, and negotiating media across the allocated mixers S130. More specifically, a mixer topology is created according to regional associations and restrictions. Then when negotiating media across the allocated mixers, participants are allocated to input channels of a mixer and mixers are bridged to form a determined mixer topology.


The method functions to provide a high quality conferencing service. The method may additionally promote regional accessibility, scalability, and efficiency. The scalability preferably enables the method to facilitate conferences with a large number of participants, spanning multiple mixer instances, as well as supporting multiple distinct conferences. The system efficiency preferably achieves resource usage that can be substantially proportional to the number of participants. The method is preferably implemented by the system (e.g., 100) described above, but may alternatively be implemented by any suitable system.


The method may be applied in a variety of conferencing scenarios. The method preferably accounts for different scaling and allocation scenarios so as to provide high capacity and high quality conferencing. The method can be used in conferencing scenarios such as when the participants are geographically distributed, where the conference is not started until all participants join, where a conference can organically grow without a priori knowledge of the identity or number of participants, and other suitable scenarios.


Block S110, which includes receiving a request for a new conference, functions to receive some directive to create a conference. The request can be part of an asynchronous API request. The request may alternatively be a response to the routing of communication. For example, a communication session may hit a conference orchestration service (e.g., 111 of FIG. 1) and be placed in a conference. While an endpoint and corresponding communication session is waiting to join a conference session, the communication session may be directed to a wait-state application which can play music, execute an application, or perform any suitable application logic. The communication session is preferably transferred into an active communication session during block S130.


Block Silo, preferably includes determining participants of the conference. Participants may be present on an existing or otherwise established communication session. For example, a caller may be transferred into a conference. As another example, a caller may dial in to a phone number or other suitable endpoint, which is mapped to a particular conference. A conference state manager (e.g., 112 of FIG. 1) preferably manages the conference participants. In one case, participants may be specified through an API (e.g., the API 132 of FIG. 1). The API calls are preferably directed to the conference state manager (e.g., 112) such that state can be updated. In some cases, a participant may not be present in an active communication session. The method can include making an outgoing communication request to establish a communication session with the missing participant such that the participant can be added to a conference. In some cases, the conference waits for some initiating condition such as a conference start time, threshold number of participants, or any suitable condition. In other cases, a conference session can begin as soon as the conference is created.


In addition to determining participants, the method preferably includes determining participant regions. The conferencing infrastructure may be distributed across various regions. Geographic proximity to a region may improve communication quality. The regions associated with a participant may be completed through processing an endpoint. In some cases, endpoints (such as telephone numbers) will include location-overloaded information (e.g., country/area codes). Alternatively, location information may be collected and obtained through any suitable method or source.


Block S120, which includes allocating mixers (e.g., mixers of the distributed mixing resources 120 of FIG. 1) of the conference, functions to setup mixers to handle the conferences session. Allocating mixers preferably includes determining which mixers, and specifically which participant will be assigned to which input channel of a mixer. Additionally, a multi-mixer topology can be created which defines bridging of media between mixers. The mixer state manager 113 preferably stores state of the set of mixers. Mixers may be in different states of usage. In some cases allocating mixers may involve adding mixers in one or more regions. Mixers can additionally be removed from the set of mixers. As another variation, allocating mixers can involve transitioning an existing conference in response to the mixing requirements introduced. Such responsive changes to conference mixing function to improve overall communication quality across multiple conferences.


Allocating mixers (block S120) preferably includes processing the information related to the conference and generating a mixer topology. Generating a mixer topology preferably calculates an arrangement/architecture to mixer assignment and bridging so as to obtain high quality communication. The mixer topology preferably characterizes and identifies how the media from participants is mixed to form a conferencing experience. With the mixer resources described above, a participant is preferably mapped to one particular media input channel. The mixer topology can be generated according to some operational goal. Preferably the goal is communication quality. High quality communication is preferably a function of communication latency, which is preferably minimized or reduced. Other properties that may additionally or alternatively be factored into the evaluation function of communication quality can include packet loss, post dial delay (PDD) (i.e., time for carrier to indicate the other side is ringing), monetary cost to the platform provider, monetary price charged to account holder, media quality, and/or any suitable factor. Generating a mixer topology can additionally account for mixer capacity. Additionally, how multiple mixers can be bridged may additionally be determined.


The mixer topology can consider various factors and may include heuristics for particular scenarios. In one variation, block S120 can include grouping participants into mixer input channels according to regional association. More specifically, the orchestration of mixers may be such that the conference achieves local media communication quality. In other words, participants local to other participants experience improved communication quality. For example, if a conference exists by a group of 3 participants in the West coast and 4 in the East coast, then a set of mixers in a Western region handle the first set of participants and a set of mixers in the Eastern region handle locally conferencing the second set of participants. Communication quality may be of lower quality between the participants in the two regions, but conferencing between the local participants may have high quality communication.


In another variation, block S120 can include grouping participants into mixer partitions by participant priority. Participants may be marked by different priority. The priority may be based on who organized the meeting, the role in the conference, or any suitable property. For example, a massive conference may have a host/moderator, a panel (who will contribute to the discussion), and then audience members who may be silent participants but may be allowed to ask questions at times. Mixing topology generation can weigh the priority of participants when calculating conference quality. For example, participants that will primarily be listening may not have a high demand for low latency communication, and so the mixer topology may not optimize for minimizing media latency for these participants.


Block S130, which includes negotiating routing media of the set of communication sessions to the allocated mixers, functions to route media of participants to assigned mixers and start the conferencing session. Negotiation routing media preferably includes various signaling handshaking between involved media resources and the mixer resources. The media is preferably routed according to the mixer topology which can include routing media of participants to assigned mixer input channel and bridging mixed media across mixer instances. As described above, SIP or an alternative media and signaling protocol may be used in directing participant communication sessions from a conference orchestration service 111 to mixers. In particular, the media of the participant communication session is routed to a mixer. Intermediary nodes may be used in the routing to mixer. For example, regional gateway proxy servers may be used when routing media or signaling to outside regions. Within a mixer, the set of participant input channels for a conference are mixed or combined through any suitable processing. The output of the mixing can be bridged to another mixer for further mixing or redirected to a connected endpoint.


Negotiating the routing of media preferably establishes various mixer scenarios. In a first variation, the participants may be serviced by a single mixer. A single mixer may be used when all participants have relatively close proximity to the mixer, and a mixer has capacity to handle the number of participants.


In other instances, multiple mixers may be used. In one use-case, a single mixer may not have capacity for a conference, and so the participants are distributed across multiple mixers as shown in FIG. 3. In another use-case, multiple mixers may be used so as to give a subset of participants regional mixing within the conference as shown in FIG. 4. The mixers preferably bridge over to other mixers such that a mixer output channel is mixed as an input to a second mixer.


In yet another instance, mixers may be used in a hierarchical mixing. In hierarchical mixing a mixer mixes output channels of at least two mixers as shown in FIG. 5. Participant input channels can additionally be mixed simultaneously with hierarchical mixing.


Once negotiated, a conference session can take place, and participants can communicate as a group. Various features may additionally be supported during a conference.


A conference is preferably exposed as an accessible API resource, and as such, the conference can preferably be manipulated through various directives. The state of the conference can be queried. Information such as conference status (e.g., waiting, started, ended), participant count, participant identification, conference duration, an event log of the conference (e.g., when people joined/left, who spoken when, etc.), and other suitable pieces of information can be supplied in an API response. Additionally the conference may be augmented. API calls directed at a particular conference may add or remove participants, mute participants, set up individually directed media control, split a conference into multiple conferences, join a conference with another conference, end the conference, and/or make any suitable change.


A method can additionally include individually directing the media flow of one or more participants. With individual media control in addition to the group mixing, participants may be able to listen in on a second participant. As an exemplary use case, a manager may want the capability to listen in on a participant's leg of the conference. As another variation, a participant may want the capability to transfer media to only a subset of participants. For example, during a conference, a first participant may want to say something to a second participant without the other participants hearing what is said. As another example, the first participant may want to say something to a larger subset of participants (e.g., two or more people) without the rest hearing.


Event callbacks can additionally be configured for the conference. An event callback is preferably a mapping between an event and a designated callback destination such as an URI or other resource that is accessed when the event is detected. A callback destination may also be a pre-established application session using web-sockets or some other similar mechanism. In particular, a speaker callback, may be triggered when a speaker changes in the conference. For example, an application that setup the conference may set a speaker callback URI. When a speaker changes in the conference, an HTTP messages is sent to the speaker callback URI. The message preferably identifies the new speaker and optionally the time of the change and the last speaker. Another callback may be for communication input. In telephony conferences, participants may be able to provide input through DTMF input. An input callback will preferably hit the input callback resource with information about input (e.g., who entered what key when). Other callbacks can include when the conference starts, when the conference ends, when there is a change in the participants (e.g., a new one joins or leaves), or any suitable event.


The method can additionally include transitioning mixer topology, which functions to adapt negotiated mixer topology according to new conditions. Participants can join and leave during a conference, and as such the preferred mixer topology can change. The transition can be in response to any number of triggers. In one variation, the mixer topology may be re-evaluated and possibly transitioned each time there is a change in participants. This may provide high quality communication throughout a conference. In another variation, the conference may be re-evaluated periodically, which may avoid overhead of frequent transitions but allow communication to be eventually transitioned to a preferred state. In another variation, the transitioning may be re-evaluated and initiated in response to a trigger. For example, a user input may signal that the communication quality is lacking, and should be refreshed to improve quality. Other variations may include variations more directed at changes in regional mixing, or the number of participant changes, total number of participants, and other factors.


The method described above was directed towards a single conference instance, but the system and method is preferably used in situations where multiple conferences are facilitated simultaneously. More preferably, the method is used to service the conferencing features of a multi-tenant communication platform. The selection of mixers additionally considers the usage of mixers across multiple mixers.


3. Conference System

As shown in FIG. 6, a conference system 600, in accordance with an embodiment, includes a conference management system 610 and distributed mixing resources 620. In some implementations, the conference management system 610 includes a conference orchestration service 611, a conference state manager 612, a mixer state manager 613, and a conference database 614.


In some implementations, the conference management system 610 is similar to the conference management system 110 of FIG. 1. In some implementations, the distributed mixing resources 620 is similar to the distributed mixing resources 120 of FIG. 1. In some implementations, the conference orchestration service 611 is similar to the conference orchestration service 111 of FIG. 1. In some implementations, the conference state manager 612 is similar to the conference state manager 112 of FIG. 1. In some implementations, the mixer state manager 613 is similar to the mixer state manager 113 of FIG. 1. In some implementations, the conference database 614 is similar to the conference database 114 of FIG. 1.


In some implementations each mixer (e.g., 621a-d, 622a-d, 623a-d) is a mixer system. In some implementations each mixer system is a server device (e.g., a server device similar to the server device of FIG. 13). In some implementations the mixers (e.g., 621a-d, 622a-d, 623a-d) are included in a server device. In some implementations the mixers are included in a plurality of server devices. In some implementations, each mixer (e.g., 621a-d, 622a-d, 623a-d) includes at least one processing unit (e.g., a processing unit similar to the processing units described below for FIG. 13, such as, for example, the processing unit 1399). In some implementations, mixers in a same region are included in a same server device. For example, the mixers 621a-d are included in a first server device located in Region 1 (e.g., California, USA), the mixers 622a-d are included in a second server device located in Region 2 (e.g., Virginia, USA), and the mixers 623a-d are included in a third server device located in Region 3 (e.g., London, England). In some implementations, mixers in a same region are included in a same computing cluster (e.g., a computing cluster that includes a plurality of computing devices, such as, for example, a server device similar to the server device of FIG. 13). For example, the mixers 621a-d are included in a first computing cluster located in Region 1 (e.g., California, USA), the mixers 622a-d are included in a second computing cluster located in Region 2 (e.g., Virginia, USA), and the mixers 623a-d are included in a third computing cluster located in Region 3 (e.g., London, England). In some implementations, each server device includes at least one processing unit (e.g., a processing unit similar to the processing units described below for FIG. 13, such as, for example, the processing unit 1399).


In some implementations, the conference management system 610 is included in a server device (e.g., the server device of FIG. 12). In some implementations, the conference management system 610 is included in a server device (e.g., the server device of FIG. 12), and the conference management system 610 includes at least one mixer (e.g., at least one of the mixers 621a-d, 622a-d, 623a-d). In some implementations, the conference management system 610 is included in a server device (e.g., the server device of FIG. 12), and the conference management system 610 includes mixers of at least one region (e.g., mixers of at least one of “Region 1”, “Region 2”, and “Region 3) of FIG. 6.


In some implementations, the conference management system 610 is a distributed system that includes a plurality of server devices. In some implementations, the conference management system 610 includes at least one mixer (e.g., at least one of the mixers 621a-d, 622a-d, 623a-d). In some implementations, the conference management system 610 includes mixers of at least one region (e.g., mixers of at least one of “Region 1”, “Region 2”, and “Region 3) of FIG. 6.


In some implementations, each of the regions of the distributed mixing resources 620 (e.g., “Region 1”, “Region 2”, and “Region 3) are communicatively coupled via media resources of the system 600. In some implementations, various provider services in the regions facilitate coupling media streams to outside endpoints (e.g., PSTN phones, SIP phones, or IP communication devices). In some implementations, the regions are selected to serve endpoints local to that region. In some implementations, the regions are separated by a globally significant distance. In some implementations, a globally significant distance is a transmission distance greater than 2000 miles. In some implementations, a globally significant distance is a transmission distance greater than 5000 miles. In some implementations, for example, a first region may be on the West coast of the US (e.g., California, USA) and a second region may be on the East coast (e.g., Virginia, USA), separated by a geographic distance greater than 2500 miles. In some implementations, for example, a first region may be in the United States (e.g., Virginia, USA) and a second region may be in Europe (e.g., London, England), separated by a distance greater than 3500 miles. In some implementations, the first region and the second region are not limited to functioning with such distance ranges and may be separated by a distance less than 2000 miles or exceeding 5000 miles.


In some implementations, the conference orchestration service 611, the conference state manager 612, the mixer state manager 613, and the conference database 614 are included in a single server device (e.g., the server device of FIG. 12). In some implementations, the conference orchestration service 611, the conference state manager 612, the mixer state manager 613, and the conference database 614 are included in a distributed computing system that includes a plurality of server devices, and each server device of the distributed computing system includes one or more of the conference orchestration service 611, the conference state manager 612, the mixer state manager 613, and the conference database 614.


In the embodiment of FIG. 6, the conference system 600 is communicatively coupled to a communication platform 630. In some implementations, the communication platform 630 is similar to the communication platform 130 of FIG. 1. In some implementations, the communication platform 630 includes an API 632 and a call router 631. In some implementations, the API 632 is similar to the API 132 of FIG. 1. In some implementations, the call router 631 is similar to the call router 131 of FIG. 1.


As shown in FIG. 6, the conference orchestration service 611 is communicatively coupled to the call router 631 via a communication protocol interface 651, and the conference state manager 612 is communicatively coupled to the API 632 via an application layer interface 653. As shown in FIG. 6, the conference database 614 is communicatively coupled with the API 632.


As shown in FIG. 6, the communication protocol interface 651 communicatively couples the conference orchestration service 611 to at least one mixer of the distributed mixing resources 620.


As shown in FIG. 6, an application layer interface 652 communicatively couples the conference orchestration service 611 to an application layer interface 654 of the conference state manager 612.


As shown in FIG. 6, the conference state manager 612 is communicatively coupled to the conference database 614.


As shown in FIG. 6, an application layer interface 655 communicatively couples the conference state manager 612 to an application layer interface 656 of the mixer state manager 613.


As shown in FIG. 6, a communication protocol interface 657 communicatively couples the mixer state manager 613 to at least one mixer of the distributed mixing resources 620.


In some implementations, the communication protocol of at least one of the interfaces 651 and 657 is SIP (Session Initiation Protocol). In some implementations, the application layer interface of at least one of the interfaces 652, 653, 654, 655, and 656 is an HTTP interface.


In some implementations, the conference database 614 includes conference state 661. In some implementations, the conference state manager includes the conference state (e.g., 661). In some implementations, the conference state 661 includes conference state for each conference of the system 600. In some implementations, the conference state for a conference is generated during reception of a request for a new conference. In some implementations, conference state for a conference indicates at least each participant of the conference. In some implementations, conference state for a conference indicates at least an endpoint identifier (e.g., a telephone number) for each participant of the conference.



FIG. 7 depicts exemplary conference state of the conference state 661.


In some implementations, the mixer state manager 613 includes mixer state 662. In some implementations, the mixer state 661 includes mixer state for each mixer of the distributed mixer resources 620 (e.g., the mixers 62a-d, 622a-d, 623a-d) of the system 600. In some implementations, the mixer state for a conference is managed by the mixer state manager 613 during operation of each mixer of the distributed mixer resources 620. In some implementations, mixer state for a mixer indicates at least a status of each channel of the mixer. In some implementations, the status indicates whether the respective channel is in use or not in use. In some implementations, the status indicates that the channel is not in use in a case where the channel is not in use, and indicates at least one of participant identifier and a conference identifier in a case where the channel is assigned to a participant of a conference. In some implementations, a participant identifier is an endpoint identifier (e.g., a telephone number).



FIG. 8 depicts exemplary mixer state of the mixer state 662.


In some implementations, the conference orchestration service 611 includes mixer topologies 663. In some implementations, the mixer topologies 663 includes a mixer topology for each conference for which at least one mixer is allocated. In some implementations, each mixer topology specifies an assignment of each participant of a respective conference to at least one input channel of a mixer. In some implementations, each assignment of a mixer topology indicates an endpoint identifier (e.g., a telephone number) and a corresponding mixer channel identifier (e.g., a mixer ID and a corresponding mixer channel ID). In some implementations, a mixer topology for a conference identifies a mixer output to be provided to the conference orchestration service 611. For example, in a case of a mixer topology that includes more than one mixer, the mixer topology indicates the mixer whose output is provided to the conference orchestration service as the output of the mixer topology.



FIGS. 9A-D depict exemplary mixer topologies of the mixer topologies 663. FIG. 9A depicts exemplary data representations of mixer topologies of Conference 1, Conference 2, and Conference 3 of the exemplary conference state information 661 of FIG. 7. FIG. 9B is a diagram representing the mixer topology of Conference 1 state 711. FIG. 9C is a diagram representing the mixer topology of Conference 2 state 712. FIG. 9D is a diagram representing the mixer topology of Conference 3 state 713.


The exemplary mixer state 662 of FIG. 8 represents the mixer state of the mixers (e.g., of the distributed mixing resources 620) after allocation of mixer channels in accordance with the mixer topologies of FIGS. 9A-D.


In some implementations, the conference state manager 612 is constructed to maintain conference state (e.g., conference state 661) of each conference, and to notify the conference orchestration service 611 of conference state changes via the application layer communication interfaces 654 and 652.


4. Method of FIG. 10

The method 1000 of FIG. 10 includes, at a conferencing system (e.g., 600 of FIG. 6) constructed to operate scalable conferencing services, the conferencing system including a conference orchestration service (e.g., 611), a conference state manager (e.g., 612), a mixer state manager (e.g., 613), and a set of distributed mixers (e.g., 620): receiving a request for a new conference via at least one of an application layer interface (e.g., 653) of the conferencing system and a signaling protocol communication interface (e.g., 651) of the conference orchestration service (e.g., 611) (process S1010); allocating mixers (e.g., mixers 621a-d, 622a-d, 623a-d of FIG. 6) of the conference, the mixers being mixers of the set of distributed mixers (e.g., 620) (process S1020); and negotiating media across the allocated mixers (process S1030). Receiving a request for a new conference includes determining participants of the conference. Allocating mixers of the conference includes generating a mixer topology that specifies an assignment of each determined participant to at least one input channel of at least one mixer of the set of distributed mixers. Negotiating media across the allocated mixers includes routing media of each determined participant to the assigned at least one input channel, and starting the conference. The media is routed according to the generated mixer topology. The mixer state manager (e.g., 613) generates the topology responsive to an application layer request provided by the conference state manager (e.g., 612), the conference state manager provides the application layer request responsive to an application layer request provided by the conference orchestration service (e.g., 611), the routing is performed by the conference orchestration service in accordance with a signaling protocol, and the conference orchestration service receives the generated mixer topology from the mixer state manager via the conference state manager.


In some implementations, the generated mixer topology is stored by the mixer state manager. In some implementations, the generated mixer topology is stored at the mixer state manager. In some implementations, the generated mixer topology is stored at a storage medium (e.g., 1205 of FIG. 12) of the system 600.


In some implementations, the system 600 performs the processes S1010-S1030. In some implementations, the conference orchestration service 611 (of FIG. 6) performs the process S1010. In some implementations, the mixer state manager 613 (of FIG. 6) performs the process S1020. In some implementations, the conference orchestration service 611 (of FIG. 6) performs the process S1030.


In some implementations, the process S1010 is similar to the process S110 of FIG. 2. In some implementations, the process S1020 is similar to the process S120 of FIG. 2. In some implementations, the process S1030 is similar to the process S130 of FIG. 2.


4.1 Receiving a Request for a New Conference


In some implementations, the process S1010 functions to control the system 600 to receive a request for a new conference via at least one of an application layer interface (e.g., 653) of the conferencing system and a signaling protocol communication interface (e.g., 651) of the conference orchestration service (e.g., 611). In some implementations, the communication interface 651 of the conference orchestration service 611 receives a request for a new conference from a call router (e.g., the call router 631 of the communication platform 630). In some implementations, the interface 651 is a SIP interface and the request for a new conference is a SIP request. In some implementations, the application layer interface 653 of the conference state manager 612 receives a request for a new conference via an API request (e.g., of the API 632 of the communication platform 630). In some implementations, the interface 653 is an HTTP interface. In some implementations, the interface 653 is REST application program interface (API).


In some implementations, the process S1010 includes determining participants of the conference, as described above for Silo of FIG. 2. In some implementations, the conference state manager 612 manages conference state of the conference (e.g., the conference state 661), and the conference state (e.g., 661) indicates participants of the conference (e.g., as shown in FIG. 7). In some implementations, the conference state (e.g., 661) is stored by the conference database 614. In some implementations, the participants of the conference are specified by an API call received by the system 600. In some implementations, the participants of the conference are specified by an API call received by the application layer interface 653 of the conference state manager 612. In some implementations, each participant of the conference is identified by an endpoint identifier (e.g., a telephone number). In some implementations, the participants of the conference are specified by at least one conference request (e.g., a SIP request) received by the conference orchestration service 611 via the communication protocol interface 651.


In some implementations participants include at least one of: a participant transferred from an established communication session (e.g., a communication session of the communication platform 630) into the conference; a participant that establishes a communication session (e.g., a communication session of the communication platform 630) with an endpoint that is mapped to the conference (e.g., a conference of the conference system 600); and a participant specified by an API request received by the application programming interface (e.g., 653) of the conferencing system 600.


In some implementations, determining participants of the conference includes determining participant regions, as described above for Silo of FIG. 1. In some implementations, the conference orchestration service 611 determines the participant regions of each participant. In some implementations, the conference state manager 612 determines the participant regions of each participant. In some implementations, participant regions are specified by an API call received by the system 600. In some implementations, participant regions are specified by an API call received by the application layer interface 653 of the conference state manager 612. In some implementations, the participant regions of the conference are specified by at least one conference request (e.g., a SIP request) received by the conference orchestration service 611 via the communication protocol interface 651. In some implementations, participant regions of each participant of the conference are identified by respective endpoint identifiers (e.g., a telephone number) of the corresponding participant. In some implementations, participant regions of each participant are determined based on at least one of an area code and a country code of an endpoint (e.g., a telephone number) of the participant. For example, as shown in FIG. 7, participant regions for each of the participants P8, P9 and P11 of the conference 2 (represented by the conference 2 state 712) are determined to be “California, USA” based on the area code (“415”) of the corresponding telephone numbers. Similarly, as shown in FIG. 7, participant regions for each of the participants P7 and P10 of the conference 2 (represented by the conference 2 state 712) are determined to be “London, England” based on the country code for England (“44”) an the area code for London (“020”) of the corresponding telephone numbers.


4.1.1 Application Layer Requests


In some implementations, responsive to the request for the new conference, the conference orchestration service 611 provides an application layer request (e.g., an HTTP request) to the conference state manager 612 (process S1011 of FIG. 10). In some implementations, responsive to the request for the new conference, the application layer interface 652 of the conference orchestration service 611 provides the application layer request to the application layer interface 654 of the conference state manager. In some implementations, the application layer request of the process S1011 specifies participants of the conference. In some implementations, the application layer request of the process S1011 specifies participant regions of the participants of the conference.


In some implementations, responsive to the application layer request of the process S1011, the conference state manager 612 determines participants of the conference, as described above. In some implementations, responsive to the application layer request of the process S1011, the conference state manager 612 determines participant regions of the participants of the conference, as described above.


In some implementations, responsive to the application layer request of the process S1011, the conference state manager 612 generates conference state for the conference (e.g., the conference state of FIG. 7). In some implementations, responsive to the application layer request of the process S1011, the conference state manager 612 generates conference state for the conference (e.g., the conference state of FIG. 7) and stores the generated conference state (e.g., as the conference state 661 of the conference database 614).


In some implementations, the conference state includes the determined participants and the determined participant regions of the participants for the conference.


In some implementations, responsive to the application layer request of the process S1011, the conference state manager 612 provides an application layer request (e.g., an HTTP request) to the mixer state manager (process S1012 of FIG. 10). In some implementations, responsive to the application layer request of the process S1011, the application layer interface 655 of the conference state manger 612 provides the application layer request to the application layer interface 656 of the mixer state manager 613. In some implementations, the application layer request of the process S1012 specifies participants of the conference. In some implementations, the application layer request of the process S1012 specifies participant regions of the participants of the conference.


In some implementations, responsive to the application layer request of the process S1012, the mixer state manager 613 allocates the mixers of the conference (process S1020).


4.2 Allocating Mixers


In some implementations, the process S1020 functions to control the system 600 to allocate mixers (e.g., the mixers 621a-d, 622a-d, and 623a-d) of the conference (e.g., a conference of the conference states 711, 712 and 713), the mixers being mixers of the set of distributed mixers (e.g., 620 of FIG. 6). Allocating mixers includes generating a mixer topology (e.g., a mixer topology of FIGS. 9A-D) that specifies an assignment of each determined participant (e.g., participants P1-P17 of FIGS. 7 and 9A-B) to at least one input channel (e.g., channels 1-6 of FIGS. 8 and 9A-D) of at least one mixer (e.g., the mixers 621a-d, 622a-d, and 623a-d) of the set of distributed mixers (e.g., 620). In some implementations, the mixer state manager 613 generates the mixer topology (e.g., one of the mixer topologies of FIGS. 9A-D). In some implementations, the mixer state manager 613 stores the mixer topology.


In some implementations the mixer state manager 613 allocates each determined participant to a single mixer. In some implementations, the mixer state manager 613 allocates the determined participants to multiple mixers to provide increased participant capacity for a conference (e.g., as shown in the mixer topology of FIG. 9B). In some implementations, the mixer state manager 613 allocates the determined participants to multiple mixers to provide a subset of the participants with regional mixing within the conference (e.g., as shown in the mixer topology of FIG. 9C). In some implementations, the mixer state manager 613 allocates mixers of the conference by bridging media of the conference between mixers of the set of distributed mixers. In some implementations, the mixer state manager 613 allocates mixers of the conference by bridging media such that a mixer output channel is mixed as an input to a different mixer. In some implementations, the mixer state manager 613 allocates mixers of the conference by allocating mixer output channels of at least two mixers to respective input channels of at least one mixer (e.g., as shown in the mixer topology of FIG. 9D).


In some implementations, responsive to the application layer request of the process S1012, the mixer state manager 613 allocates the mixers of the conference (process S1020).


In some implementations, the mixer state manager 613 assigns each determined participant to at least one input channel based on a participant region determined for the participant.


In some implementations, the application layer request of the process S1012 specifies the determined participants. In some implementations, the application layer request of the process S1012 specifies participant regions of the determined participants. In some implementations, the mixer state manager 613 determines participant regions of the determined participants, as described above.


In some implementations, the mixer state manager 613 assigns each determined participant to at least one input channel of at least one mixer system based on the mixer state 662. FIG. 8 depicts exemplary mixer state 662.


In some implementations, the mixer state manager 613 assigns each determined participant to at least one free input channel of at least one mixer system, and the mixer state manager 613 determines whether a mixer input channels is free based on the mixer state 662. In some implementations, the mixer state manager 613 updates the mixer state 662 after assignment of participants to input channels, to indicated that assigned channels are in use.


As an example, responsive to an application layer request provided by the conference state manager 612 for the conference corresponding to the conference state 711 (of FIG. 7), the mixer state manager 613 assigns participants P1-P6 to previously free channels of mixers 621a, 621b and 621c, and generates the mixer topology 910 of FIGS. 9A and 9B. As shown in FIGS. 9A and 9B, for the conference state 711, the mixer state manager 613 assigns the participants to channels 2 and 3 of mixer 621a, channels 2 and 3 of mixer 621b, and channels 3 and 4 of mixer 621c. The mixer state manager 613 assigns the output of the mixer 621a to channel 1 of mixer 621b, and assigns the output of the mixer 621b to channel 2 of mixer 621c. After assignment of the participants P1-P6 to the respective mixer channels, the mixer state 662 indicates the assigned channels as being used, as shown in FIG. 8. More specifically, mixer state 662 indicates channels 2 and 3 of mixer 621a, channels 1, 2 and 3 of mixer 621b, channels 2, 3 and 4 of mixer 621c as being in use.


In some implementations, the mixer state 662 indicates regions of each mixer (e.g., as shown in FIG. 8).


As an example, responsive to an application layer request provided by the conference state manager 612 for the conference corresponding to the conference state 712 (of FIG. 7), the mixer state manager 613 assigns participants P7-P11 to previously free channels of mixers 621d and 623a, and generates the mixer topology 920 of FIGS. 9A and 9C. As shown in FIGS. 9A and 9C, for the conference state 712, the mixer state manager 613 assigns the participants to channels 2, 3 and 4 of mixer 621d, and channels 3 and 4 of mixer 623a. The mixer state manager 613 assigns the output of the mixer 621d to channel 2 of mixer 623a. After assignment of the participants P7-P11 to the respective mixer channels, the mixer state 662 indicates the assigned channels as being used, as shown in FIG. 8. More specifically, mixer state 662 indicates channels 2, 3 and 4 of mixer 621d, and channels 2, 3 and 4 of mixer 623a as being in use. For the for the conference state 712, the mixer state manager 613 assigns the participants P8, P9 and P11 (which have “California, USA” as a participant region, e.g., as indicated by the “415” telephone number area code) to the mixer 621d, which is a mixer of region “California, USA” (as indicated by the mixer state 662), and the mixer state manager 613 assigns the participants P7 and P10 (which have “London, England” as a participant region, e.g., as indicated by the “44” country code and “020” telephone number area code) to the mixer 623a, which is a mixer of region “London, England” (as indicated by the mixer state 662).


As an example, responsive to an application layer request provided by the conference state manager 612 for the conference corresponding to the conference state 713 (of FIG. 7), the mixer state manager 613 assigns participants P12-P17 to previously free channels of mixers 621a, 621b and 622d, and generates the mixer topology 930 of FIGS. 9A and 9D. As shown in FIGS. 9A and 9D, for the conference state 713, the mixer state manager 613 assigns the participants to channels 5 and 6 of mixer 621a, channels 5 and 6 of mixer 621b, and channels 3 and 4 of mixer 622d. The mixer state manager 613 assigns the output of the mixer 621a to channel 1 of mixer 622d, and assigns the output of the mixer 621b to channel 2 of mixer 622d. After assignment of the participants P12-P17 to the respective mixer channels, the mixer state 662 indicates the assigned channels as being used, as shown in FIG. 8.


In some implementations, the mixer state manager 613 allocates mixers as described above for S120 of FIG. 2. In some implementations, the mixer state manager 613 allocates mixers based on at least one of communication quality, packet loss, latency, packet dial delay (PDD), monetary cost to the platform provider, monetary price charged to account holder, media quality, mixer capacity, regional associations of participants and mixers, participant priority, and the like.


In some implementations, the mixer state manager 613 stores the generated mixer topology.


In some implementations, the mixer state manager 613 provides the generated mixer topology (e.g., one of the topologies 910, 920, and 930 of FIG. 9A) to the conference state manager 612 (process S1021). In some implementations, the mixer state manager 613 provides the generated mixer topology to the conference state manager 612 via at least one of an application layer response and an application layer request. In some implementations, mixer state manager 613 uses the application layer interface 656 to provide the generated mixer topology to the application layer interface 655 of the conference state manager 612.


In some implementations, responsive to the mixer topology provided by the mixer state manager 613, the conference state manager 612 provides the mixer topology to the conference orchestration service manager 611 (process S1022). In some implementations, the conference state manager 612 provides the mixer topology to the conference orchestration service manager 611 via at least one of an application layer response and an application layer request. In some implementations, the conference state manager 612 provides the mixer topology to the conference orchestration service manager 611 uses the application layer interface 654 to provide the mixer topology to the application layer interface 652 of the conference orchestration service 611. In some implementations, the conference orchestration service 611 stores the topology (e.g., as one of the mixer topologies 663).


In some implementations, responsive to the mixer topology (e.g., received provided at the process S1022), the conference orchestration service 611 negotiates media across the allocated mixers (process S1030).


4.2.1 Bridging Mixers


In some implementations, the mixer bridging of two mixers is performed by the mixer state manager 613. In some implementations, the bridging of two mixers is performed by the mixer state manager 613 during generation of the mixer topology (e.g., 910, 920, 930), and the mixer state manager 613 bridges two mixers by instructing a main mixer (e.g., a mixer whose output is provided to an input of a child mixer) to dial in to a child mixer.


In some implementations, the mixer state manager 613 instructs the main mixer to dial in to the child mixer by providing an application layer request (e.g., an HTTP REST call) to the main mixer, the application layer request specifying the mixer identifier of the child mixer and the channel identifier of the channel to receive the output of the main mixer. In some implementations, responsive to the application layer request received by the main mixer, the main mixer dials into the child mixer and bridges the output of the main mixer to the input channel identified by the channel identifier by: providing the child mixer with a SIP INVITE message that specifies the main mixer in a SIP “From” header, specifies a mixer identifier of the child mixer as a parameter to the SIP INVITE message, and specifies the channel identifier of the channel in a custom SIP header (e.g., a SIP X-Header).


In some implementations, the mixer state manager 613 instructs the main mixer to dial in to the child mixer by providing an communication protocol interface request (e.g., a request provided by the communication protocol interface 657) (e.g., a SIP message) to the main mixer, the communication protocol interface request (e.g., SIP message) specifying the mixer identifier of the child mixer and the channel identifier of the channel to receive the output of the main mixer. In some implementations, responsive to the communication protocol interface request (e.g., SIP message) received by the main mixer, the main mixer dials into the child mixer and bridges the output of the main mixer to the input channel identified by the channel identifier by: providing the child mixer with a SIP INVITE message that specifies the main mixer in a SIP “From” header, specifies a mixer identifier of the child mixer as a parameter to the SIP INVITE message, and specifies the channel identifier of the channel in a custom SIP header (e.g., a SIP X-Header).


In some implementations, the bridging of two mixers, as described above, is performed by the conference orchestration service 611.


4.3 Negotiating Media


In some implementations, the process S1030 functions to control the system 600 to negotiate media across the allocated mixers (e.g., the mixer systems allocated at the process S1020). In some implementations, negotiating media across the allocated mixers includes routing media of each determined participant to the respective assigned mixer input channel. In some implementations, negotiating media across the allocated mixers includes starting the conference. In some implementations, the routing is performed by the conference orchestration service 611 in accordance with a signaling protocol.


In some implementations, the conference orchestration service 611 negotiates the media across the allocated mixers by routing media of each conference participant (e.g., participant media received from the call router 631 via the communication protocol interface 651) to a respective mixer input channel. In some implementations, the conference orchestration service 611 determines a mixer input channel for a conference participant based on the mixer topology generated by the mixer state manager 613 for the conference (e.g., a mixer topology of the topologies 663). In some implementations, the conference orchestration service 611 uses the communication protocol interface 651 to receive participant media from the communication platform 630 (e.g., from the call router 631). In some implementations, participant media is media of a communication session of the communication platform 630. In some implementations, the conference orchestration service 611 uses the communication protocol interface 651 to provide media of each participant of the conference to a respective mixer channel. In some implementations, the communication protocol interface 651 is a SIP interface, the conference orchestration service 611 uses the communication protocol interface 651 to receive participant media, and the conference orchestration service 611 uses the communication protocol interface 651 to provide media of each participant of the conference to a respective mixer channel.


In some implementations, negotiating the media across the allocated mixers includes the conference orchestration service 6n using the communication protocol interface 651 to perform signaling handshaking between media resources of the conference (e.g., participant media resources of the conference) and mixers allocated to the conference (as indicated by the mixer topology of the conference). In some implementations, the signaling handshaking is performed in accordance with SIP. In some implementations, the conference orchestration service 6n establishes the mixer topology by sending each mixer of the topology a SIP INVITE message that specifies at least a corresponding mixer identifier and a channel identifier assigned to the corresponding participant as indicated by the mixer topology (e.g., a topology of the mixer topologies 663). In some implementations, the conference orchestration service 6n establishes the mixer topology by sending each mixer of the topology a SIP INVITE message that specifies at least a corresponding conference participant, mixer identifier and a channel identifier assigned to the corresponding participant as indicated by the mixer topology (e.g., a topology of the mixer topologies 663).


In some implementations, the conference orchestration service 611 establishes the mixer topology by: determining conference participants (as described above); for each participant, determining the assigned mixer and channel as indicated by the mixer topology (e.g., one of the topologies 663) for the conference; for each participant, providing a SIP INVITE message to the assigned mixer. In some implementations, the SIP INVITE message specifies the conference participant in a SIP “From” header, specifies a mixer identifier of the mixer (as identified by the mixer topology) as a parameter to the SIP INVITE request, and specifies a channel identifier of the channel (as identified by the mixer topology) in a custom SIP header (e.g., a SIP X-Header).


As an example, for the conference 1 of the mixer topology 910 of FIGS. 9A and 9B, the conference orchestration service 611 routes media of participant P1 (received at interface 651, e.g., a SIP interface) to the channel 2 of the mixer 621a (e.g., by using SIP), routes media of participant P2 (received at interface 651) to the channel 3 of the mixer 621a (e.g., by using SIP), routes media of participant P3 (received at interface 651) to the channel 2 of the mixer 621b (e.g., by using SIP), routes media of participant P4 (received at interface 651) to the channel 3 of the mixer 621b (e.g., by using SIP), routes media of participant P5 (received at interface 651) to the channel 3 of the mixer 621c (e.g., by using SIP), and routes media of participant P6 (received at interface 651) to the channel 4 of the mixer 621c (e.g., by using SIP). The output of the mixer 621a is bridged to the channel 1 of the mixer 621b, the output of the mixer 621b is bridged to the channel 2 of the mixer 621c, and the bridging of the mixer outputs is performed as described above. The output of the mixer 621c is the output of the mixer topology 910, and therefore the output of the mixer 621c is provided by the mixer 621c to the conference orchestration service 611 (e.g., via SIP), and the conference orchestration service 611 provides the output of the mixer 621c to each conference participant via respective communication sessions (e.g., SIP communication sessions) (e.g., communication sessions of the call router 631).


5. Method of FIG. 11

The method 1100 of FIG. 11 is performed at a conferencing system (e.g., 600 of FIG. 6) constructed to operate scalable conferencing services, the conferencing system including a conference orchestration service (e.g., 611), a conference state manager (e.g., 612), a mixer state manager (e.g., 613), and a set of distributed mixers (e.g., 620), and the method is performed responsive to a request for a new conference that is received via at least one of an application layer interface (e.g., 653) of the conferencing system and a signaling protocol communication interface (e.g., 651) of the conference orchestration service (e.g., 611). The method 1100 includes: determining participants of the conference and participant regions for each determined participant (process S1100); generating a mixer topology (e.g., a mixer topology of FIGS. 9A-D) by using the mixer state manager (e.g., 613), the mixer topology specifying an assignment of each determined participant to at least one input channel of a plurality of mixers of the set of distributed mixers (e.g., 620), the mixer state manager generating the mixer topology based on the determined participant regions and at least one regional association of a mixer of the set of distributed mixers (process S1120); and routing media of each determined participant to the assigned at least one input channel according to the generated mixer topology by using the conference orchestration service (e.g., 611) (process S1130). The mixer state manager (e.g., 613) generates the topology responsive to an application layer request provided by the conference state manager (e.g., 612), the conference state manager provides the application layer request responsive to an application layer request provided by the conference orchestration service (e.g., 611), the routing is performed by the conference orchestration service in accordance with a signaling protocol, and the conference orchestration service receives the generated mixer topology from the mixer state manager via the conference state manager.


In some implementations, the generated mixer topology is stored by the mixer state manager. In some implementations, the generated mixer topology is stored at the mixer state manager. In some implementations, the generated mixer topology is stored at a storage medium (e.g., 1205 of FIG. 12) of the system 600.


In some implementations, the system 600 performs the processes S1110-S1130. In some implementations, the conference orchestration service 611 (of FIG. 6) performs the process S1110. In some implementations, the mixer state manager 613 (of FIG. 6) performs the process S1120. In some implementations, the conference orchestration service 611 (of FIG. 6) performs the process S1130.


In some implementations, the process S110 is similar to the process S1010 of FIG. 10. In some implementations, the process S1120 is similar to the process S1020 of FIG. 10. In some implementations, the process S1130 is similar to the process S1030 of FIG. 10.


In some implementations, the mixer state manager manages mixer state information for each mixer of the set of distributed mixers, and the mixer state information specifies a regional association of at least one mixer of the set of distributed mixers.


In some implementations, for each mixer managed by the mixer state manager, the mixer state information indicates a state for each input channel of the mixer. The mixer state manager assigns each determined participant to at least one free input channel of a plurality of mixers of the set of distributed mixers, and each free input channel is identified by the mixer state information.


In some implementations, the conference state is managed by the conference state manager, the conference state manger provides the conference state to the mixer state manager via the application layer request provided by the conference state manager, and the mixer state manager generates the mixer topology by using the conference state.


In some implementations, the mixer state manager determines the participant regions for each determined participant by using the conference state provided by the conference state manager. The mixer state manager determines regions for each mixer by using the mixer state managed by the mixer state manager. For at least one determined participant, the mixer state manager determines a mixer located in a region that matches the participant region of the determined participant, and the mixer state manager assigns the determined participant to an input channel of the mixer located in the matching region.


In some implementations, the mixer state manager assigns each determined participant to at least one input channel based on respective participant priority values.


6. System Architecture: Conference System


FIG. 12 is an architecture diagram of a system (e.g., the conference system 600 of FIG. 6) according to an implementation in which the system is implemented by a server device. In some implementations, the system is implemented by a plurality of devices. In some implementations, the system 600 is similar to the system 100 of FIG. 1.


The bus 1201 interfaces with the processors 1201A-1201N, the main memory (e.g., a random access memory (RAM)) 1222, a read only memory (ROM) 1204, a processor-readable storage medium 1205, a display device 1207, a user input device 1208, and a network device 1211.


The processors 1201A-1201N may take many forms, such as ARM processors, X86 processors, and the like.


In some implementations, the system (e.g., 600) includes at least one of a central processing unit (processor) and a multi-processor unit (MPU).


The processors 1201A-1201N and the main memory 1222 form a processing unit 1299. In some embodiments, the processing unit includes one or more processors communicatively coupled to one or more of a RAM, ROM, and machine-readable storage medium; the one or more processors of the processing unit receive instructions stored by the one or more of a RAM, ROM, and machine-readable storage medium via a bus; and the one or more processors execute the received instructions. In some embodiments, the processing unit is an ASIC (Application-Specific Integrated Circuit). In some embodiments, the processing unit is a SoC (System-on-Chip). In some embodiments, the processing unit includes one or more of a conference management system, a conference orchestration service, a conference state manager, a mixer state manager, and a conference database, and mixing resources.


The network adapter device 1211 provides one or more wired or wireless interfaces for exchanging data and commands between the system (e.g., 600) and other devices, such as a mixer, and a communication platform (e.g., 630). Such wired and wireless interfaces include, for example, a universal serial bus (USB) interface, Bluetooth interface, Wi-Fi interface, Ethernet interface, near field communication (NFC) interface, and the like.


Machine-executable instructions in software programs (such as an operating system, application programs, and device drivers) are loaded into the memory 1222 (of the processing unit 1299) from the processor-readable storage medium 1205, the ROM 1204 or any other storage location. During execution of these software programs, the respective machine-executable instructions are accessed by at least one of processors 1201A-1201N (of the processing unit 1299) via the bus 1201, and then executed by at least one of processors 1201A-1201N. Data used by the software programs are also stored in the memory 1222, and such data is accessed by at least one of processors 1201A-1201N during execution of the machine-executable instructions of the software programs. The processor-readable storage medium 1205 is one of (or a combination of two or more of) a hard drive, a flash drive, a DVD, a CD, an optical disk, a floppy disk, a flash storage, a solid state drive, a ROM, an EEPROM, an electronic circuit, a semiconductor memory device, and the like. The processor-readable storage medium 1205 includes machine-executable instructions (and related data) for an operating system 1212, software programs 1213, device drivers 1214, mixing resources 1215, and the conference management system 610. The machine-executable instructions (and related data) for the mixing resources 1215 include machine-executable instructions (and related data) for one or more mixers (e.g., a mixer of the distributed mixing resources 620 of FIG. 6). The machine-executable instructions (and related data) for the conference management system 610 include machine-executable instructions (and related data) for the conference orchestration service 611, the conference state manager 612, the mixer state manager 613, and the conference database 614.


In some implementations, the conference management system 610 is implemented as a server device that is separate from server devices of the mixing resources.


7. System Architecture: Mixer Device


FIG. 13 is an architecture diagram of a mixer region (e.g., the mixer region 621 of FIG. 6) according to an implementation in which the mixer region is implemented by a server device. In some implementations, the mixer region is implemented by a plurality of devices. In some implementations, the mixer region is similar to the mixer regions of 120 of FIG. 1.


The bus 1301 interfaces with the processors 1301A-1301N, the main memory (e.g., a random access memory (RAM)) 1322, a read only memory (ROM) 1304, a processor-readable storage medium 1305, a display device 1307, a user input device 1308, and a network device 1311.


The processors 1301A-1301N may take many forms, such as ARM processors, X86 processors, and the like.


In some implementations, the server device includes at least one of a central processing unit (processor) and a multi-processor unit (MPU).


The processors 1301A-1301N and the main memory 1322 form a processing unit 1399. In some embodiments, the processing unit includes one or more processors communicatively coupled to one or more of a RAM, ROM, and machine-readable storage medium; the one or more processors of the processing unit receive instructions stored by the one or more of a RAM, ROM, and machine-readable storage medium via a bus; and the one or more processors execute the received instructions. In some embodiments, the processing unit is an ASIC (Application-Specific Integrated Circuit). In some embodiments, the processing unit is a SoC (System-on-Chip). In some embodiments, the processing unit includes one or more mixers.


The network adapter device 1311 provides one or more wired or wireless interfaces for exchanging data and commands between the server device and other devices, such as a server device of a conference management system (e.g., 610). Such wired and wireless interfaces include, for example, a universal serial bus (USB) interface, Bluetooth interface, Wi-Fi interface, Ethernet interface, near field communication (NFC) interface, and the like.


Machine-executable instructions in software programs (such as an operating system, application programs, and device drivers) are loaded into the memory 1322 (of the processing unit 1399) from the processor-readable storage medium 1305, the ROM 1304 or any other storage location. During execution of these software programs, the respective machine-executable instructions are accessed by at least one of processors 131A-131N (of the processing unit 1399) via the bus 1301, and then executed by at least one of processors 1301A-1301N. Data used by the software programs are also stored in the memory 1322, and such data is accessed by at least one of processors 1301A-1301N during execution of the machine-executable instructions of the software programs. The processor-readable storage medium 1305 is one of (or a combination of two or more of) a hard drive, a flash drive, a DVD, a CD, an optical disk, a floppy disk, a flash storage, a solid state drive, a ROM, an EEPROM, an electronic circuit, a semiconductor memory device, and the like. The processor-readable storage medium 1305 includes machine-executable instructions (and related data) for an operating system 1312, software programs 1313, device drivers 1314, and the mixers 621a-d.


8. Machines

The system and methods of the preferred embodiments and variations thereof can be embodied and/or implemented at least in part as a machine configured to receive a computer-readable medium storing computer-readable instructions. The instructions are preferably executed by computer-executable components preferably integrated with the media and signaling components of a conferencing system. The computer-readable medium can be stored on any suitable computer-readable media such as RAMs, ROMs, flash memory, EEPROMs, optical devices (CD or DVD), hard drives, floppy drives, or any suitable device. The computer-executable component is preferably a general or application specific processor, but any suitable dedicated hardware or hardware/firmware combination device can alternatively or additionally execute the instructions.


9. Conclusion

As a person skilled in the art will recognize from the previous detailed description and from the figures and claims, modifications and changes can be made to the preferred embodiments of the invention without departing from the scope of this invention defined in the following claims.

Claims
  • 1. A method comprising: receiving a request to initiate a conference including at least a first participant and a second participant;assigning a first priority to the first participant based on a role of the first participant and assigning a second priority the second participant based on a role of the second participant;generating a mixer topology for the conference, the mixer topology including a plurality of mixers that are bridged together, each mixer including a plurality of input channels and a plurality of output channels, the mixer topology specifying an assignment of each participant to at least one input channel of a mixer, the generating of the mixer topology comprises:identifying a mixer that combines a plurality of sources of media based on the first priority assigned to the first participant and the second priority assigned to the second participant, the mixer being in a geographic region within a threshold distance from a first geographic location of a first device of the first participant assigned the first priority, the mixer being beyond the threshold distance from a second geographic location of a second device of the second participant assigned the second priority, andassigning the first device of the first participant to a first input channel of the mixer based on the first priority assigned to the first participant and assigning the second device of the second participant to a second input channel of the mixer based on the second priority assigned to the second participant; andestablishing the conference based on the mixer topology.
  • 2. The method of claim 1, wherein the mixer topology is generated to minimize communication latency.
  • 3. The method of claim 2, wherein generating the mixer topology comprises: identifying a set of two or more participants that are within a threshold distance of first available mixer; andassigning the set of two or more participants to be serviced by the first available mixer.
  • 4. The method of claim 1, wherein the first input channel of the mixer corresponds to a first set of participants assigned with the first priority, and wherein the second input channel of the mixer corresponds to a second set of participants assigned with the second priority.
  • 5. The method of claim 4, wherein the first participant of the conference is designated as a moderator and the second participant of the conference is designated as a participant.
  • 6. The method of claim 1, wherein the conference is exposed as an accessible Application Programming Interface (API) resource.
  • 7. The method of claim 6, further comprising: receiving, from an external computing system, an API request referencing the conference, the API request identifying an update to a state of the conference; andupdating the state of the conference based on the API request.
  • 8. A system comprising: one or more computer processors; andone or more computer-readable mediums storing instructions that, when executed by the one or more computer processors, cause the system to perform operations comprising:receiving a request to initiate a conference including at least a first participant and a second participant;assigning a first priority to the first participant based on a role of the first participant and assigning a second priority the second participant based on a role of the second participant;generating a mixer topology for the conference, the mixer topology including a plurality of mixers that are bridged together, each mixer including a plurality of input channels and a plurality of output channels, the mixer topology specifying an assignment of each participant to at least one input channel of a mixer, the generating of the mixer topology comprises:identifying a mixer that combines a plurality of sources of media based on the first priority assigned to the first participant and the second priority assigned to the second participant, the mixer being in a geographic region within a threshold distance from a first geographic location of a first device of the first participant assigned the first priority, the mixer being beyond the threshold distance from a second geographic location of a second device of the second participant assigned the second priority, andassigning the first device of the first participant to a first input channel of the mixer based on the first priority assigned to the first participant and assigning the second device of the second participant to a second input channel of the mixer based on the second priority assigned to the second participant; andestablishing the conference based on the mixer topology.
  • 9. The system of claim 8, wherein the mixer topology is generated to minimize communication latency.
  • 10. The system of claim 9, wherein generating the mixer topology comprises: identifying a set of two or more participants that are within a threshold distance of first available mixer; andassigning the set of two or more participants to be serviced by the first available mixer.
  • 11. The system of claim 8, wherein the first input channel of the mixer corresponds to a first set of participants assigned with the first priority, and wherein the second input channel of the mixer corresponds to a second set of participants assigned with the second priority.
  • 12. The system of claim 11, wherein the first participant of the conference is designated as a moderator and the second participant of the conference is designated as a participant.
  • 13. The system of claim 8, wherein the conference is exposed as an accessible Application Programming Interface (API) resource.
  • 14. The system of claim 13, the operations further comprising: receiving, from an external computing system, an API request referencing the conference, the API request identifying an update to a state of the conference; andupdating the state of the conference based on the API request.
  • 15. A non-transitory computer-readable medium storing instructions that, when executed by one or more computer processors of one or more computing devices, cause the one or more computing devices to perform operations comprising: receiving a request to initiate a conference including at least a first participant and a second participant;assigning a first priority to the first participant based on a role of the first participant and assigning a second priority the second participant based on a role of the second participant;generating a mixer topology for the conference, the mixer topology including a plurality of mixers that are bridged together, each mixer including a plurality of input channels and a plurality of output channels, the mixer topology specifying an assignment of each participant to at least one input channel of a mixer, the generating of the mixer topology comprises:identifying a mixer that combines a plurality of sources of media based on the first priority assigned to the first participant and the second priority assigned to the second participant, the mixer being in a geographic region within a threshold distance from a first geographic location of a first device of the first participant assigned the first priority, the mixer being beyond the threshold distance from a second geographic location of a second device of the second participant assigned the second priority, andassigning the first device of the first participant to a first input channel of the mixer based on the first priority assigned to the first participant and assigning the second device of the second participant to a second input channel of the mixer based on the second priority assigned to the second participant; andestablishing the conference based on the mixer topology.
  • 16. The non-transitory computer-readable medium of claim 15, wherein the mixer topology is generated to minimize communication latency.
  • 17. The non-transitory computer-readable medium of claim 16, wherein generating the mixer topology comprises: identifying a set of two or more participants that are within a threshold distance of first available mixer; andassigning the set of two or more participants to be serviced by the first available mixer.
  • 18. The non-transitory computer-readable medium of claim 15, wherein the first input channel of the mixer corresponds to a first set of participants assigned with the first priority, and wherein the second input channel of the mixer corresponds to a second set of participants assigned with the second priority.
  • 19. The non-transitory computer-readable medium of claim 18, wherein the first participant of the conference is designated as a moderator and the second participant of the conference is designated as a participant.
  • 20. The non-transitory computer-readable medium of claim 15, wherein the conference is exposed as an accessible Application Programming Interface (API) resource, and the operations further comprising: receiving, from an external computing system, an API request referencing the conference, the API request identifying an update to a state of the conference; andupdating the state of the conference based on the API request.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No. 15/375,397, filed 12 Dec. 2016, which is a continuation of U.S. patent application Ser. No. 14/964,266, filed 9 Dec. 2015, which is a continuation of U.S. patent application Ser. No. 14/791,759, filed 6 Jul. 2015, which claims the benefit of U.S. Provisional Application Ser. No. 62/021,641, filed on 7 Jul. 2014, all of which are incorporated in their entirety by this reference.

US Referenced Citations (780)
Number Name Date Kind
5274700 Gechter et al. Dec 1993 A
5283819 Glick et al. Feb 1994 A
5526416 Dezonno et al. Jun 1996 A
5581608 Jreij et al. Dec 1996 A
5598457 Foladare et al. Jan 1997 A
5867495 Elliott et al. Feb 1999 A
5934181 Adamczewski Aug 1999 A
5978465 Corduroy et al. Nov 1999 A
6026440 Shrader et al. Feb 2000 A
6034946 Roginsky et al. Mar 2000 A
6094681 Shaffer et al. Jul 2000 A
6138143 Gigliotti et al. Oct 2000 A
6185565 Meubus et al. Feb 2001 B1
6192123 Grunsted et al. Feb 2001 B1
6206564 Adamczewski Mar 2001 B1
6223287 Douglas et al. Apr 2001 B1
6232979 Shochet May 2001 B1
6269336 Ladd et al. Jul 2001 B1
6317137 Rosasco Nov 2001 B1
6363065 Thornton et al. Mar 2002 B1
6373836 Deryugin et al. Apr 2002 B1
6425012 Trovato et al. Jul 2002 B1
6426995 Kim et al. Jul 2002 B1
6430175 Echols et al. Aug 2002 B1
6434528 Sanders Aug 2002 B1
6445694 Swartz Sep 2002 B1
6445776 Shank et al. Sep 2002 B1
6459913 Cloutier Oct 2002 B2
6463414 Su et al. Oct 2002 B1
6493558 Bernhart et al. Dec 2002 B1
6496500 Nance et al. Dec 2002 B2
6501739 Cohen Dec 2002 B1
6501832 Saylor et al. Dec 2002 B1
6507875 Mellen-Garnett et al. Jan 2003 B1
6571245 Huang et al. May 2003 B2
6574216 Farris et al. Jun 2003 B1
6577721 Vainio et al. Jun 2003 B1
6600736 Ball et al. Jul 2003 B1
6606596 Zirngibl et al. Aug 2003 B1
6614783 Sonesh et al. Sep 2003 B1
6625258 Ram et al. Sep 2003 B1
6625576 Kochanski et al. Sep 2003 B2
6636504 Albers et al. Oct 2003 B1
6662231 Drosset et al. Dec 2003 B1
6704785 Koo et al. Mar 2004 B1
6707889 Saylor et al. Mar 2004 B1
6711129 Bauer et al. Mar 2004 B1
6711249 Weissman et al. Mar 2004 B2
6738738 Henton May 2004 B2
6757365 Bogard Jun 2004 B1
6765997 Zirngibl et al. Jul 2004 B1
6768788 Langseth et al. Jul 2004 B1
6778653 Kallas et al. Aug 2004 B1
6785266 Swartz Aug 2004 B2
6788768 Saylor et al. Sep 2004 B1
6792086 Saylor et al. Sep 2004 B1
6792093 Barak et al. Sep 2004 B2
6798867 Zirngibl et al. Sep 2004 B1
6807529 Johnson et al. Oct 2004 B2
6807574 Partovi et al. Oct 2004 B1
6819667 Brusilovsky et al. Nov 2004 B1
6820260 Flockhart et al. Nov 2004 B1
6829334 Zirngibl et al. Dec 2004 B1
6831966 Tegan et al. Dec 2004 B1
6834265 Balasuriya Dec 2004 B2
6836537 Zirngibl et al. Dec 2004 B1
6842767 Partovi et al. Jan 2005 B1
6850603 Eberle et al. Feb 2005 B1
6870830 Schuster et al. Mar 2005 B1
6873952 Bailey et al. Mar 2005 B1
6874084 Dobner et al. Mar 2005 B1
6885737 Gao et al. Apr 2005 B1
6888929 Saylor et al. May 2005 B1
6895084 Saylor et al. May 2005 B1
6898567 Balasuriya May 2005 B2
6912581 Johnson et al. Jun 2005 B2
6922411 Taylor Jul 2005 B1
6928469 Duursma et al. Aug 2005 B1
6931405 El-Shimi et al. Aug 2005 B2
6937699 Schuster et al. Aug 2005 B1
6940953 Eberle et al. Sep 2005 B1
6941268 Porter et al. Sep 2005 B2
6947417 Laursen et al. Sep 2005 B2
6947988 Saleh et al. Sep 2005 B1
6961330 Cattan et al. Nov 2005 B1
6964012 Zirngibl et al. Nov 2005 B1
6970915 Partovi et al. Nov 2005 B1
6977992 Zirngibl et al. Dec 2005 B2
6981041 Araujo et al. Dec 2005 B2
6985862 Strom et al. Jan 2006 B2
6999576 Sacra Feb 2006 B2
7003464 Ferrans et al. Feb 2006 B2
7006606 Cohen et al. Feb 2006 B1
7010586 Allavarpu et al. Mar 2006 B1
7020685 Chen et al. Mar 2006 B1
7039165 Saylor et al. May 2006 B1
7058042 Bontempi et al. Jun 2006 B2
7058168 Knappe Jun 2006 B1
7058181 Wright et al. Jun 2006 B2
7062709 Cheung Jun 2006 B2
7065637 Nanja Jun 2006 B1
7076037 Gonen et al. Jul 2006 B1
7076428 Anastasakos et al. Jul 2006 B2
7089310 Ellerman et al. Aug 2006 B1
7099442 Da Palma et al. Aug 2006 B2
7103003 Brueckheimer et al. Sep 2006 B2
7103171 Annadata et al. Sep 2006 B1
7106844 Holland Sep 2006 B1
7111163 Haney Sep 2006 B1
7136932 Schneider Nov 2006 B1
7140004 Kunins et al. Nov 2006 B1
7143039 Stifelman et al. Nov 2006 B1
7197331 Anastasakos et al. Mar 2007 B2
7197461 Eberle et al. Mar 2007 B1
7197462 Takagi et al. Mar 2007 B2
7197544 Wang et al. Mar 2007 B2
D540074 Peters Apr 2007 S
7225232 Elberse May 2007 B2
7227849 Rasanen Jun 2007 B1
7245611 Narasimhan et al. Jul 2007 B2
7260208 Cavalcanti Aug 2007 B2
7266181 Zirngibl et al. Sep 2007 B1
7269557 Bailey et al. Sep 2007 B1
7272212 Eberle et al. Sep 2007 B2
7272564 Phillips et al. Sep 2007 B2
7277851 Henton Oct 2007 B1
7283515 Fowler Oct 2007 B2
7283519 Girard Oct 2007 B2
7286521 Jackson et al. Oct 2007 B1
7287248 Adeeb Oct 2007 B1
7289453 Riedel et al. Oct 2007 B2
7296739 Mo et al. Nov 2007 B1
7298732 Cho Nov 2007 B2
7298834 Homeier et al. Nov 2007 B1
7308085 Weissman Dec 2007 B2
7308408 Stifelman et al. Dec 2007 B1
7324633 Gao et al. Jan 2008 B2
7324942 Mahowald et al. Jan 2008 B1
7328263 Sadjadi Feb 2008 B1
7330463 Bradd et al. Feb 2008 B1
7330890 Partovi et al. Feb 2008 B1
7340040 Saylor et al. Mar 2008 B1
7349714 Lee et al. Mar 2008 B2
7369865 Gabriel et al. May 2008 B2
7370329 Kumar et al. May 2008 B2
7373660 Guichard et al. May 2008 B1
7376223 Taylor et al. May 2008 B2
7376586 Partovi et al. May 2008 B1
7376733 Connelly et al. May 2008 B2
7376740 Porter et al. May 2008 B1
7412525 Cafarella et al. Aug 2008 B2
7418090 Reding et al. Aug 2008 B2
7428302 Zirngibl et al. Sep 2008 B2
7440898 Eberle et al. Oct 2008 B1
7447299 Partovi et al. Nov 2008 B1
7454459 Kapoor et al. Nov 2008 B1
7457249 Baldwin et al. Nov 2008 B2
7457397 Saylor et al. Nov 2008 B1
7473872 Takimoto Jan 2009 B2
7486780 Zirngibl et al. Feb 2009 B2
7496054 Taylor Feb 2009 B2
7496188 Saha et al. Feb 2009 B2
7496651 Joshi Feb 2009 B1
7500249 Kampe et al. Mar 2009 B2
7505951 Thompson et al. Mar 2009 B2
7519359 Chiarulli et al. Apr 2009 B2
7522711 Stein et al. Apr 2009 B1
7536454 Balasuriya May 2009 B2
7542761 Sarkar Jun 2009 B2
7552054 Stifelman et al. Jun 2009 B1
7571226 Partovi et al. Aug 2009 B1
7606868 Le et al. Oct 2009 B1
7613287 Stifelman et al. Nov 2009 B1
7623648 Oppenheim et al. Nov 2009 B1
7630900 Strom Dec 2009 B1
7631310 Henzinger Dec 2009 B1
7644000 Strom Jan 2010 B1
7657433 Chang Feb 2010 B1
7657434 Thompson et al. Feb 2010 B2
7668157 Weintraub et al. Feb 2010 B2
7672275 Yajnik et al. Mar 2010 B2
7672295 Andhare et al. Mar 2010 B1
7675857 Chesson Mar 2010 B1
7676221 Roundtree et al. Mar 2010 B2
7685280 Berry et al. Mar 2010 B2
7685298 Day et al. Mar 2010 B2
7715547 Ibbotson et al. May 2010 B2
7716293 Kasuga et al. May 2010 B2
7742499 Erskine et al. Jun 2010 B1
7779065 Gupta et al. Aug 2010 B2
7809125 Brunson et al. Oct 2010 B2
7809791 Schwartz et al. Oct 2010 B2
7875836 Imura et al. Jan 2011 B2
7882253 Pardo-Castellote et al. Feb 2011 B2
7920866 Bosch et al. Apr 2011 B2
7926099 Chakravarty et al. Apr 2011 B1
7929562 Petrovykh Apr 2011 B2
7929684 Hostetler Apr 2011 B2
7936867 Hill et al. May 2011 B1
7949111 Harlow et al. May 2011 B2
7962644 Ezerzer et al. Jun 2011 B1
7979555 Rothstein et al. Jul 2011 B2
7992120 Wang et al. Aug 2011 B1
8023425 Raleigh Sep 2011 B2
8024785 Andress et al. Sep 2011 B2
8045689 Provenzale et al. Oct 2011 B2
8046378 Zhuge et al. Oct 2011 B1
8046823 Begen et al. Oct 2011 B1
8069096 Ballaro et al. Nov 2011 B1
8078483 Hirose et al. Dec 2011 B1
8081744 Sylvain Dec 2011 B2
8081958 Soderstrom et al. Dec 2011 B2
8103725 Gupta et al. Jan 2012 B2
8126128 Hicks, III et al. Feb 2012 B1
8126129 Mcguire Feb 2012 B1
8130750 Hester Mar 2012 B2
8130917 Helbling et al. Mar 2012 B2
8139730 Da Palma et al. Mar 2012 B2
8145212 Lopresti et al. Mar 2012 B2
8149716 Ramanathan et al. Apr 2012 B2
8150918 Edelman et al. Apr 2012 B1
8156213 Deng et al. Apr 2012 B1
8165116 Ku et al. Apr 2012 B2
8166185 Samuel et al. Apr 2012 B2
8175007 Jain et al. May 2012 B2
8185619 Maiocco et al. May 2012 B1
8196133 Kakumani et al. Jun 2012 B2
8214868 Hamilton et al. Jul 2012 B2
8218457 Malhotra et al. Jul 2012 B2
8233611 Zettner Jul 2012 B1
8238533 Blackwell et al. Aug 2012 B2
8243889 Taylor et al. Aug 2012 B2
8249552 Gailloux et al. Aug 2012 B1
8266327 Kumar et al. Sep 2012 B2
8295272 Boni et al. Oct 2012 B2
8301117 Keast et al. Oct 2012 B2
8306021 Lawson et al. Nov 2012 B2
8315198 Corneille et al. Nov 2012 B2
8315369 Lawson et al. Nov 2012 B2
8315620 Williamson et al. Nov 2012 B1
8319816 Swanson et al. Nov 2012 B1
8326805 Arous et al. Dec 2012 B1
8335852 Hokimoto Dec 2012 B2
8346630 Mckeown Jan 2013 B1
8355394 Taylor et al. Jan 2013 B2
8411669 Chen et al. Apr 2013 B2
8413247 Hudis et al. Apr 2013 B2
8417817 Jacobs Apr 2013 B1
8429827 Wetzel Apr 2013 B1
8438315 Tao et al. May 2013 B1
8462670 Chien Jun 2013 B2
8467502 Sureka et al. Jun 2013 B2
8477926 Jasper et al. Jul 2013 B2
8503639 Reding et al. Aug 2013 B2
8503650 Reding et al. Aug 2013 B2
8504818 Rao et al. Aug 2013 B2
8509068 Begall et al. Aug 2013 B2
8532686 Schmidt et al. Sep 2013 B2
8533857 Tuchman et al. Sep 2013 B2
8542805 Agranovsky et al. Sep 2013 B2
8543665 Ansari et al. Sep 2013 B2
8547962 Ramachandran et al. Oct 2013 B2
8549047 Beechuk et al. Oct 2013 B2
8565117 Hilt et al. Oct 2013 B2
8572391 Golan et al. Oct 2013 B2
8576712 Sabat et al. Nov 2013 B2
8577803 Chatterjee et al. Nov 2013 B2
8582450 Robesky Nov 2013 B1
8582737 Lawson et al. Nov 2013 B2
8594626 Woodson et al. Nov 2013 B1
8601136 Fahlgren et al. Dec 2013 B1
8611338 Lawson et al. Dec 2013 B2
8613102 Nath Dec 2013 B2
8621598 Lai et al. Dec 2013 B2
8649268 Lawson et al. Feb 2014 B2
8656452 Li et al. Feb 2014 B2
8667056 Proulx et al. Mar 2014 B1
8675493 Buddhikot et al. Mar 2014 B2
8688147 Nguyen et al. Apr 2014 B2
8695077 Gerhard et al. Apr 2014 B1
8713693 Shanabrook et al. Apr 2014 B2
8728656 Takahashi et al. May 2014 B2
8751801 Harris et al. Jun 2014 B2
8755376 Lawson et al. Jun 2014 B2
8767925 Sureka et al. Jul 2014 B2
8781975 Bennett et al. Jul 2014 B2
8797920 Parreira Aug 2014 B2
8806024 Toba Francis et al. Aug 2014 B1
8819133 Wang Aug 2014 B2
8825746 Ravichandran et al. Sep 2014 B2
8837465 Lawson et al. Sep 2014 B2
8838707 Lawson et al. Sep 2014 B2
8843596 Goel et al. Sep 2014 B2
8855271 Brock et al. Oct 2014 B2
8861510 Fritz Oct 2014 B1
8879547 Maes Nov 2014 B2
8903938 Vermeulen et al. Dec 2014 B2
8918848 Sharma et al. Dec 2014 B2
8924489 Bleau et al. Dec 2014 B2
8938053 Cooke et al. Jan 2015 B2
8948356 Nowack et al. Feb 2015 B2
8954591 Ganesan et al. Feb 2015 B2
8964726 Lawson et al. Feb 2015 B2
8990610 Bostick et al. Mar 2015 B2
9014664 Kim et al. Apr 2015 B2
9015702 Bhat Apr 2015 B2
9031223 Smith et al. May 2015 B2
9071677 Aggarwal et al. Jun 2015 B2
9137127 Nowack et al. Sep 2015 B2
9141682 Adoc, Jr. et al. Sep 2015 B1
9158775 Tomkins Oct 2015 B1
9161296 Parsons et al. Oct 2015 B2
9177007 Winters et al. Nov 2015 B2
9204281 Ramprasad et al. Dec 2015 B2
9210275 Lawson et al. Dec 2015 B2
9246694 Fahlgren et al. Jan 2016 B1
9306982 Lawson et al. Apr 2016 B2
9307094 Nowack et al. Apr 2016 B2
9325624 Malatack et al. Apr 2016 B2
9338190 Eng et al. May 2016 B2
9344573 Wolthuis et al. May 2016 B2
9356916 Kravitz et al. May 2016 B2
9378337 Kuhr Jun 2016 B2
9398622 Lawson et al. Jul 2016 B2
9456008 Lawson et al. Sep 2016 B2
9456339 Hildner et al. Sep 2016 B1
9460169 Hinton et al. Oct 2016 B2
9553900 Fahlgren et al. Jan 2017 B2
9596274 Lawson et al. Mar 2017 B2
9628624 Wolthuis et al. Apr 2017 B2
9632875 Raichstein et al. Apr 2017 B2
9634995 Binder Apr 2017 B2
10757200 Fahlgren et al. Aug 2020 B2
20010016491 Imura et al. Aug 2001 A1
20010038624 Greenberg et al. Nov 2001 A1
20010043684 Guedalia et al. Nov 2001 A1
20010051996 Cooper et al. Dec 2001 A1
20020006124 Jimenez et al. Jan 2002 A1
20020006125 Josse et al. Jan 2002 A1
20020006193 Rodenbusch et al. Jan 2002 A1
20020025819 Cetusic et al. Feb 2002 A1
20020057777 Saito et al. May 2002 A1
20020064267 Martin et al. May 2002 A1
20020067823 Walker et al. Jun 2002 A1
20020077833 Arons et al. Jun 2002 A1
20020098831 Castell Jul 2002 A1
20020126813 Partovi et al. Sep 2002 A1
20020133587 Ensel et al. Sep 2002 A1
20020136391 Armstrong et al. Sep 2002 A1
20020165957 Devoe et al. Nov 2002 A1
20020167936 Goodman Nov 2002 A1
20020176378 Hamilton et al. Nov 2002 A1
20020184361 Eden Dec 2002 A1
20020198941 Gavrilescu et al. Dec 2002 A1
20030006137 Wei et al. Jan 2003 A1
20030012356 Zino et al. Jan 2003 A1
20030014665 Anderson et al. Jan 2003 A1
20030018830 Chen et al. Jan 2003 A1
20030023672 Vaysman Jan 2003 A1
20030026426 Wright et al. Feb 2003 A1
20030046366 Pardikar et al. Mar 2003 A1
20030051037 Sundaram et al. Mar 2003 A1
20030058884 Kallner et al. Mar 2003 A1
20030059020 Meyerson et al. Mar 2003 A1
20030060188 Gidron et al. Mar 2003 A1
20030061317 Brown et al. Mar 2003 A1
20030061404 Atwal et al. Mar 2003 A1
20030088421 Maes et al. May 2003 A1
20030097330 Hillmer et al. May 2003 A1
20030097447 Johnston May 2003 A1
20030097639 Niyogi et al. May 2003 A1
20030103620 Brown et al. Jun 2003 A1
20030123640 Roelle et al. Jul 2003 A1
20030149721 Alfonso-nogueiro et al. Aug 2003 A1
20030162506 Toshimitsu et al. Aug 2003 A1
20030195950 Huang et al. Oct 2003 A1
20030195990 Greenblat et al. Oct 2003 A1
20030196076 Zabarski et al. Oct 2003 A1
20030204616 Billhartz et al. Oct 2003 A1
20030211842 Kempf et al. Nov 2003 A1
20030231647 Petrovykh Dec 2003 A1
20030233276 Pearlman et al. Dec 2003 A1
20040008635 Nelson et al. Jan 2004 A1
20040011690 Marfino et al. Jan 2004 A1
20040044953 Watkins et al. Mar 2004 A1
20040052349 Creamer et al. Mar 2004 A1
20040071275 Bowater et al. Apr 2004 A1
20040101122 Da Palma et al. May 2004 A1
20040102182 Reith et al. May 2004 A1
20040117788 Karaoguz et al. Jun 2004 A1
20040136324 Steinberg et al. Jul 2004 A1
20040165569 Sweatman et al. Aug 2004 A1
20040172482 Weissman et al. Sep 2004 A1
20040199572 Hunt et al. Oct 2004 A1
20040205101 Radhakrishnan Oct 2004 A1
20040205689 Ellens et al. Oct 2004 A1
20040213400 Golitsin et al. Oct 2004 A1
20040216058 Chavers et al. Oct 2004 A1
20040218748 Fisher Nov 2004 A1
20040228469 Andrews et al. Nov 2004 A1
20040236696 Aoki et al. Nov 2004 A1
20040240649 Goel Dec 2004 A1
20050005109 Castaldi et al. Jan 2005 A1
20050005200 Matenda et al. Jan 2005 A1
20050010483 Ling Jan 2005 A1
20050015505 Kruis et al. Jan 2005 A1
20050021626 Prajapat et al. Jan 2005 A1
20050025303 Hostetler Feb 2005 A1
20050038772 Colrain Feb 2005 A1
20050043952 Sharma et al. Feb 2005 A1
20050047579 Salame Mar 2005 A1
20050060411 Coulombe et al. Mar 2005 A1
20050083907 Fishler Apr 2005 A1
20050091336 Dehamer et al. Apr 2005 A1
20050091572 Gavrilescu et al. Apr 2005 A1
20050108770 Karaoguz et al. May 2005 A1
20050125251 Berger et al. Jun 2005 A1
20050125739 Thompson et al. Jun 2005 A1
20050128961 Miloslavsky et al. Jun 2005 A1
20050135578 Ress et al. Jun 2005 A1
20050141500 Bhandari et al. Jun 2005 A1
20050147088 Bao et al. Jul 2005 A1
20050177635 Schmidt et al. Aug 2005 A1
20050181835 Lau et al. Aug 2005 A1
20050198292 Duursma et al. Sep 2005 A1
20050228680 Malik Oct 2005 A1
20050238153 Chevalier Oct 2005 A1
20050240659 Taylor Oct 2005 A1
20050243977 Creamer et al. Nov 2005 A1
20050246176 Creamer et al. Nov 2005 A1
20050286498 Rand et al. Dec 2005 A1
20050289222 Sahim Dec 2005 A1
20060008065 Longman et al. Jan 2006 A1
20060008073 Yoshizawa et al. Jan 2006 A1
20060008256 Khedouri et al. Jan 2006 A1
20060015467 Morken et al. Jan 2006 A1
20060021004 Moran et al. Jan 2006 A1
20060023676 Whitmore et al. Feb 2006 A1
20060047666 Bedi et al. Mar 2006 A1
20060067506 Flockhart et al. Mar 2006 A1
20060080415 Tu Apr 2006 A1
20060098624 Morgan et al. May 2006 A1
20060129638 Deakin Jun 2006 A1
20060143007 Koh et al. Jun 2006 A1
20060146735 Shaffer Jul 2006 A1
20060146792 Ramachandran et al. Jul 2006 A1
20060146802 Baldwin et al. Jul 2006 A1
20060168334 Potti et al. Jul 2006 A1
20060181608 Knappe Aug 2006 A1
20060203979 Jennings Sep 2006 A1
20060209695 Archer, Jr. et al. Sep 2006 A1
20060212865 Vincent et al. Sep 2006 A1
20060215824 Mitby et al. Sep 2006 A1
20060217823 Hussey Sep 2006 A1
20060217978 Mitby et al. Sep 2006 A1
20060222166 Ramakrishna et al. Oct 2006 A1
20060256816 Yarlagadda et al. Nov 2006 A1
20060262915 Marascio et al. Nov 2006 A1
20060270386 Yu et al. Nov 2006 A1
20060285489 Francisco et al. Dec 2006 A1
20070002744 Mewhinney et al. Jan 2007 A1
20070036143 Alt et al. Feb 2007 A1
20070038499 Margulies et al. Feb 2007 A1
20070043681 Morgan et al. Feb 2007 A1
20070050306 McQueen Mar 2007 A1
20070064672 Raghav et al. Mar 2007 A1
20070070906 Thakur Mar 2007 A1
20070070980 Phelps et al. Mar 2007 A1
20070071223 Lee et al. Mar 2007 A1
20070074174 Thornton Mar 2007 A1
20070088836 Tai et al. Apr 2007 A1
20070091907 Seshadri et al. Apr 2007 A1
20070107048 Halls et al. May 2007 A1
20070116191 Bermudez et al. May 2007 A1
20070121651 Casey et al. May 2007 A1
20070127691 Lert Jun 2007 A1
20070127703 Siminoff Jun 2007 A1
20070130260 Weintraub et al. Jun 2007 A1
20070133771 Stifelman et al. Jun 2007 A1
20070147351 Dietrich et al. Jun 2007 A1
20070149166 Turcotte et al. Jun 2007 A1
20070153711 Dykas et al. Jul 2007 A1
20070153712 Fry et al. Jul 2007 A1
20070167170 Fitchett et al. Jul 2007 A1
20070192629 Saito Aug 2007 A1
20070201448 Baird et al. Aug 2007 A1
20070208862 Fox et al. Sep 2007 A1
20070232284 Mason et al. Oct 2007 A1
20070239761 Baio et al. Oct 2007 A1
20070242626 Altberg et al. Oct 2007 A1
20070255828 Paradise Nov 2007 A1
20070265073 Novi et al. Nov 2007 A1
20070286180 Marquette et al. Dec 2007 A1
20070291734 Bhatia et al. Dec 2007 A1
20070291905 Halliday et al. Dec 2007 A1
20070293200 Roundtree et al. Dec 2007 A1
20070295803 Levine et al. Dec 2007 A1
20080005275 Overton et al. Jan 2008 A1
20080025320 Bangalore et al. Jan 2008 A1
20080037715 Prozeniuk et al. Feb 2008 A1
20080037746 Dufrene et al. Feb 2008 A1
20080040484 Yardley Feb 2008 A1
20080049617 Grice et al. Feb 2008 A1
20080052395 Wright et al. Feb 2008 A1
20080091843 Kulkarni Apr 2008 A1
20080101571 Harlow et al. May 2008 A1
20080104348 Kabzinski et al. May 2008 A1
20080120702 Hokimoto May 2008 A1
20080123559 Haviv et al. May 2008 A1
20080134049 Gupta et al. Jun 2008 A1
20080139166 Agarwal et al. Jun 2008 A1
20080146268 Gandhi et al. Jun 2008 A1
20080152101 Griggs Jun 2008 A1
20080154601 Stifelman et al. Jun 2008 A1
20080155029 Helbling et al. Jun 2008 A1
20080162482 Ahern et al. Jul 2008 A1
20080165708 Moore et al. Jul 2008 A1
20080172404 Cohen Jul 2008 A1
20080177883 Hanai et al. Jul 2008 A1
20080192736 Jabri et al. Aug 2008 A1
20080201426 Darcie Aug 2008 A1
20080209050 Li Aug 2008 A1
20080212945 Khedouri et al. Sep 2008 A1
20080222656 Lyman Sep 2008 A1
20080229421 Hudis et al. Sep 2008 A1
20080232574 Baluja et al. Sep 2008 A1
20080235230 Maes Sep 2008 A1
20080256224 Kaji et al. Oct 2008 A1
20080275741 Loeffen Nov 2008 A1
20080307436 Hamilton Dec 2008 A1
20080310599 Purnadi et al. Dec 2008 A1
20080313318 Vermeulen et al. Dec 2008 A1
20080316931 Qiu et al. Dec 2008 A1
20080317222 Griggs et al. Dec 2008 A1
20080317232 Couse et al. Dec 2008 A1
20080317233 Rey et al. Dec 2008 A1
20090046838 Andreasson Feb 2009 A1
20090052437 Taylor et al. Feb 2009 A1
20090052641 Taylor et al. Feb 2009 A1
20090059894 Jackson et al. Mar 2009 A1
20090063502 Coimbatore et al. Mar 2009 A1
20090074159 Goldfarb et al. Mar 2009 A1
20090075684 Cheng et al. Mar 2009 A1
20090083155 Tudor et al. Mar 2009 A1
20090089165 Sweeney Apr 2009 A1
20090089352 Davis et al. Apr 2009 A1
20090089699 Saha et al. Apr 2009 A1
20090093250 Jackson et al. Apr 2009 A1
20090125608 Werth et al. May 2009 A1
20090129573 Gavan et al. May 2009 A1
20090136011 Goel May 2009 A1
20090170496 Bourque Jul 2009 A1
20090171659 Pearce et al. Jul 2009 A1
20090171669 Engelsma et al. Jul 2009 A1
20090171752 Galvin et al. Jul 2009 A1
20090182896 Patterson et al. Jul 2009 A1
20090193433 Maes Jul 2009 A1
20090216835 Jain et al. Aug 2009 A1
20090216935 Flick Aug 2009 A1
20090217293 Wolber et al. Aug 2009 A1
20090220057 Waters Sep 2009 A1
20090221310 Chen et al. Sep 2009 A1
20090222341 Belwadi et al. Sep 2009 A1
20090225748 Taylor Sep 2009 A1
20090225763 Forsberg et al. Sep 2009 A1
20090228868 Drukman et al. Sep 2009 A1
20090232289 Drucker et al. Sep 2009 A1
20090234965 Viveganandhan et al. Sep 2009 A1
20090235349 Lai et al. Sep 2009 A1
20090241135 Wong et al. Sep 2009 A1
20090252159 Lawson et al. Oct 2009 A1
20090276771 Nickolov et al. Nov 2009 A1
20090288012 Hertel et al. Nov 2009 A1
20090288165 Qiu et al. Nov 2009 A1
20090300194 Ogasawara Dec 2009 A1
20090316687 Kruppa Dec 2009 A1
20090318112 Vasten Dec 2009 A1
20100027531 Kurashima Feb 2010 A1
20100037204 Lin et al. Feb 2010 A1
20100054142 Moiso et al. Mar 2010 A1
20100070424 Monk Mar 2010 A1
20100071053 Ansari et al. Mar 2010 A1
20100082513 Liu Apr 2010 A1
20100087215 Gu et al. Apr 2010 A1
20100088187 Courtney et al. Apr 2010 A1
20100088698 Krishnamurthy Apr 2010 A1
20100094758 Chamberlain et al. Apr 2010 A1
20100103845 Ulupinar et al. Apr 2010 A1
20100107222 Glasser Apr 2010 A1
20100115041 Hawkins et al. May 2010 A1
20100138501 Clinton et al. Jun 2010 A1
20100142516 Lawson et al. Jun 2010 A1
20100150139 Lawson et al. Jun 2010 A1
20100167689 Sepehri-Nik et al. Jul 2010 A1
20100184408 Vendrow et al. Jul 2010 A1
20100188979 Thubert et al. Jul 2010 A1
20100191915 Spencer Jul 2010 A1
20100208881 Kawamura Aug 2010 A1
20100217837 Ansari et al. Aug 2010 A1
20100217982 Brown et al. Aug 2010 A1
20100232594 Lawson et al. Sep 2010 A1
20100235539 Carter et al. Sep 2010 A1
20100250946 Korte et al. Sep 2010 A1
20100251329 Wei Sep 2010 A1
20100251340 Martin et al. Sep 2010 A1
20100265825 Blair et al. Oct 2010 A1
20100281108 Cohen Nov 2010 A1
20100291910 Sanding et al. Nov 2010 A1
20100312919 Lee et al. Dec 2010 A1
20100332852 Vembu et al. Dec 2010 A1
20110026516 Roberts et al. Feb 2011 A1
20110029882 Jaisinghani Feb 2011 A1
20110029981 Jaisinghani Feb 2011 A1
20110053555 Cai et al. Mar 2011 A1
20110078278 Cui et al. Mar 2011 A1
20110081008 Lawson et al. Apr 2011 A1
20110083069 Paul et al. Apr 2011 A1
20110083179 Lawson et al. Apr 2011 A1
20110093516 Geng et al. Apr 2011 A1
20110096673 Stevenson et al. Apr 2011 A1
20110110366 Moore et al. May 2011 A1
20110131293 Mori Jun 2011 A1
20110143714 Keast et al. Jun 2011 A1
20110145049 Hertel et al. Jun 2011 A1
20110149810 Koren Jun 2011 A1
20110149950 Petit-Huguenin et al. Jun 2011 A1
20110151884 Zhao Jun 2011 A1
20110167172 Roach et al. Jul 2011 A1
20110170505 Rajasekar et al. Jul 2011 A1
20110176537 Lawson et al. Jul 2011 A1
20110179126 Wetherell et al. Jul 2011 A1
20110211679 Mezhibovsky et al. Sep 2011 A1
20110251921 Kassaei et al. Oct 2011 A1
20110253693 Lyons et al. Oct 2011 A1
20110255675 Jasper et al. Oct 2011 A1
20110258432 Rao et al. Oct 2011 A1
20110261804 Antoine et al. Oct 2011 A1
20110265168 Lucovsky et al. Oct 2011 A1
20110265172 Sharma Oct 2011 A1
20110267985 Wilkinson et al. Nov 2011 A1
20110274111 Narasappa et al. Nov 2011 A1
20110276892 Jensen-Horne et al. Nov 2011 A1
20110276951 Jain Nov 2011 A1
20110280390 Lawson et al. Nov 2011 A1
20110283259 Lawson et al. Nov 2011 A1
20110289126 Aikas et al. Nov 2011 A1
20110289162 Furlong et al. Nov 2011 A1
20110299672 Chiu et al. Dec 2011 A1
20110310902 Xu Dec 2011 A1
20110313950 Nuggehalli et al. Dec 2011 A1
20110320449 Gudlavenkatasiva Dec 2011 A1
20110320550 Lawson et al. Dec 2011 A1
20120000903 Baarman et al. Jan 2012 A1
20120011274 Moreman Jan 2012 A1
20120017222 May Jan 2012 A1
20120023531 Meuninck et al. Jan 2012 A1
20120023544 Li et al. Jan 2012 A1
20120027228 Rijken et al. Feb 2012 A1
20120028602 Lisi et al. Feb 2012 A1
20120036574 Heithcock et al. Feb 2012 A1
20120039202 Song Feb 2012 A1
20120059709 Lieberman et al. Mar 2012 A1
20120079066 Li et al. Mar 2012 A1
20120083266 Vanswol et al. Apr 2012 A1
20120089572 Raichstein et al. Apr 2012 A1
20120094637 Jeyaseelan et al. Apr 2012 A1
20120101952 Raleigh et al. Apr 2012 A1
20120110564 Ran et al. May 2012 A1
20120114112 Rauschenberger et al. May 2012 A1
20120149404 Beattie et al. Jun 2012 A1
20120166488 Kaushik et al. Jun 2012 A1
20120170726 Schwartz Jul 2012 A1
20120173610 Bleau et al. Jul 2012 A1
20120174095 Natchadalingam et al. Jul 2012 A1
20120179907 Byrd et al. Jul 2012 A1
20120180021 Byrd et al. Jul 2012 A1
20120180029 Hill et al. Jul 2012 A1
20120198004 Watte Aug 2012 A1
20120201238 Lawson et al. Aug 2012 A1
20120208495 Lawson et al. Aug 2012 A1
20120221603 Kothule et al. Aug 2012 A1
20120226579 Ha et al. Sep 2012 A1
20120239757 Firstenberg et al. Sep 2012 A1
20120240226 Li Sep 2012 A1
20120246273 Bornstein et al. Sep 2012 A1
20120254828 Aiylam et al. Oct 2012 A1
20120281536 Gell et al. Nov 2012 A1
20120288082 Segall Nov 2012 A1
20120290706 Lin et al. Nov 2012 A1
20120304245 Lawson et al. Nov 2012 A1
20120304275 Ji et al. Nov 2012 A1
20120316809 Egolf et al. Dec 2012 A1
20120321058 Eng et al. Dec 2012 A1
20120321070 Smith et al. Dec 2012 A1
20130029629 Lindholm et al. Jan 2013 A1
20130031158 Salsburg Jan 2013 A1
20130036476 Roever et al. Feb 2013 A1
20130047232 Tuchman et al. Feb 2013 A1
20130054684 Brazier et al. Feb 2013 A1
20130058262 Parreira Mar 2013 A1
20130067232 Cheung et al. Mar 2013 A1
20130067448 Sannidhanam et al. Mar 2013 A1
20130097298 Ting et al. Apr 2013 A1
20130110658 Lyman May 2013 A1
20130132573 Lindblom May 2013 A1
20130139148 Berg et al. May 2013 A1
20130156024 Burg Jun 2013 A1
20130166580 Maharajh et al. Jun 2013 A1
20130179942 Caplis et al. Jul 2013 A1
20130201909 Bosch et al. Aug 2013 A1
20130204786 Mattes et al. Aug 2013 A1
20130212603 Cooke et al. Aug 2013 A1
20130244632 Spence et al. Sep 2013 A1
20130267173 Ling Oct 2013 A1
20130268676 Martins et al. Oct 2013 A1
20130325934 Fausak et al. Dec 2013 A1
20130328997 Desai Dec 2013 A1
20130336472 Fahlgren et al. Dec 2013 A1
20140025503 Meyer et al. Jan 2014 A1
20140058806 Guenette et al. Feb 2014 A1
20140064467 Lawson et al. Mar 2014 A1
20140072115 Makagon et al. Mar 2014 A1
20140073291 Hildner et al. Mar 2014 A1
20140095627 Romagnino Apr 2014 A1
20140101058 Castel et al. Apr 2014 A1
20140105372 Nowack et al. Apr 2014 A1
20140106704 Cooke et al. Apr 2014 A1
20140122600 Kim et al. May 2014 A1
20140123187 Reisman May 2014 A1
20140126715 Lum et al. May 2014 A1
20140129363 Lorah et al. May 2014 A1
20140153565 Lawson et al. Jun 2014 A1
20140185490 Holm et al. Jul 2014 A1
20140219478 Takahashi Aug 2014 A1
20140254600 Shibata et al. Sep 2014 A1
20140258481 Lundell Sep 2014 A1
20140269333 Boerjesson Sep 2014 A1
20140274086 Boerjesson et al. Sep 2014 A1
20140282473 Saraf et al. Sep 2014 A1
20140289391 Balaji et al. Sep 2014 A1
20140304054 Orun et al. Oct 2014 A1
20140355600 Lawson et al. Dec 2014 A1
20140372508 Fausak et al. Dec 2014 A1
20140372509 Fausak et al. Dec 2014 A1
20140372510 Fausak et al. Dec 2014 A1
20140373098 Fausak et al. Dec 2014 A1
20140379670 Kuhr Dec 2014 A1
20150004932 Kim et al. Jan 2015 A1
20150004933 Kim et al. Jan 2015 A1
20150023251 Giakoumelis et al. Jan 2015 A1
20150026477 Malatack et al. Jan 2015 A1
20150066865 Yara et al. Mar 2015 A1
20150081918 Nowack et al. Mar 2015 A1
20150082378 Collison Mar 2015 A1
20150100634 He et al. Apr 2015 A1
20150119050 Liao et al. Apr 2015 A1
20150181631 Lee et al. Jun 2015 A1
20150236905 Bellan et al. Aug 2015 A1
20150281294 Nur et al. Oct 2015 A1
20150321101 Rosedale Nov 2015 A1
20150325226 Rosedale Nov 2015 A1
20150365480 Soto et al. Dec 2015 A1
20150370788 Bareket et al. Dec 2015 A1
20150379574 Pattan Dec 2015 A1
20160006574 Fahlgren Jan 2016 A1
20160011758 Dornbush et al. Jan 2016 A1
20160077693 Meyer et al. Mar 2016 A1
20160088028 Fahlgren et al. Mar 2016 A1
20160112475 Lawson et al. Apr 2016 A1
20160112521 Lawson et al. Apr 2016 A1
20160119291 Zollinger et al. Apr 2016 A1
20160127254 Kumar et al. May 2016 A1
20160149956 Birnbaum et al. May 2016 A1
20160162172 Rathod Jun 2016 A1
20160205519 Patel et al. Jul 2016 A1
20160226937 Patel et al. Aug 2016 A1
20160226979 Lancaster et al. Aug 2016 A1
20160239770 Batabyal et al. Aug 2016 A1
20170093992 Fahlgren et al. Mar 2017 A1
20170339283 Chaudhary et al. Nov 2017 A1
Foreign Referenced Citations (20)
Number Date Country
1684587 Mar 1971 DE
0282126 Sep 1988 EP
1464418 Oct 2004 EP
1522922 Apr 2005 EP
1770586 Apr 2007 EP
2053869 Apr 2009 EP
2134107 Sep 1999 ES
10294788 Nov 1998 JP
2004166000 Jun 2004 JP
2004220118 Aug 2004 JP
2006319914 Nov 2006 JP
WO-9732448 Sep 1997 WO
WO-2002087804 Nov 2002 WO
WO-2006037492 Apr 2006 WO
WO-2009018489 Feb 2009 WO
WO-2009124223 Oct 2009 WO
WO-2010037064 Apr 2010 WO
WO-2010040010 Apr 2010 WO
WO-2010101935 Sep 2010 WO
WO-2011091085 Jul 2011 WO
Non-Patent Literature Citations (35)
Entry
U.S. Appl. No. 14/791,759 U.S. Pat. No. 9,246,694, filed Jul. 6, 2015, System and Method for Managing Conferencing in a Distributed Communication Network.
U.S. Appl. No. 14/964,266 U.S. Pat. No. 9,553,900, filed Dec. 9, 2015, System and Method for Managing Conferencing in a Distributed Communication Network.
U.S. Appl. No. 15/375,397, filed Dec. 12, 2016, System and Method for Managing Conferencing in a Distributed Communication Network.
“Aepona's API Monetization Platform Wins Best of 4G Awards for Mobile Cloud Enabler”, 4G World 2012 Conference & Expo, [Online]. [Accessed Nov. 5, 2015]. Retrieved from the Internet: <URL: https://www.realwire.com/releases/%20Aeponas-API-Monetization>, (Oct. 30, 2012), 4 pgs.
“U.S. Appl. No. 14/791,759, Corrected Notice of Allowance mailed Oct. 21, 2015”, 2 pgs.
“U.S. Appl. No. 14/791,759, Notice of Allowance mailed Sep. 15, 2015”, 8 pgs.
“U.S. Appl. No. 14/964,266, Notice of Allowance mailed Sep. 12, 2016”, 15 pgs.
“U.S. Appl. No. 15/375,397, Corrected Notice of Allowability mailed Jul. 6, 2020”, 2 pgs.
“U.S. Appl. No. 15/375,397, Corrected Notice of Allowance mailed Jun. 15, 2020”, 3 pgs.
“U.S. Appl. No. 15/375,397, Examiner Interview Summary mailed Feb. 21, 2019”, 3 pgs.
“U.S. Appl. No. 15/375,397, Examiner Interview Summary mailed Oct. 20, 2017”, 3 pgs.
“U.S. Appl. No. 15/375,397, Final Office Action mailed Jan. 29, 2018”, 23 pgs.
“U.S. Appl. No. 15/375,397, Final Office Action mailed Apr. 24, 2019”, 19 pgs.
“U.S. Appl. No. 15/375,397, Non Final Office Action mailed Feb. 4, 2020”, 21 pgs.
“U.S. Appl. No. 15/375,397, Non Final Office Action mailed Jul. 28, 2017”, 19 pgs.
“U.S. Appl. No. 15/375,397, Non Final Office Action mailed Oct. 31, 2018”, 29 pgs.
“U.S. Appl. No. 15/375,397, Notice of Allowance mailed Apr. 20, 2020”, 7 pgs.
“U.S. Appl. No. 15/375,397, Response filed Apr. 1, 2020 to Non Final Office Action mailed Feb. 4, 2020”, 13 pgs.
“U.S. Appl. No. 15/375,397, Response filed Apr. 30, 2018 to Final Office Action mailed Jan. 29, 2018”, 10 pgs.
“U.S. Appl. No. 15/375,397, Response filed Oct. 18, 17 to Non Final Office Action mailed Jul. 28, 2017”, 11 pgs.
“U.S. Appl. No. 15/375,397, Response filed Mar. 21, 2019 to Non Final Office Action mailed Oct. 31, 2018”, 18 pgs.
“U.S. Appl. No. 15/375,397, Response filed Jul. 24, 2019 to Final Office Action mailed Apr. 24, 2019”, 13 pgs.
“Archive Microsoft Office 365 Email I Retain Unified Archiving”, GWAVA, Inc., Montreal, Canada, [Online] Retrieved from the Internet: <URL: http://www.gwava.com/Retain/Retain for_Office_365.php>, (2015), 4 pgs.
“Complaint for Patent Infringement”, Telinit Technologies, LLC v. Twilio Inc 2:12-cv-663, (Oct. 12, 2012), 17 pgs.
“Ethernet to Token Ring Bridge”, Black Box Corporation, [Online] Retrieved from the Internet: <URL: http://blackboxcanada.com/resource/files/productdetails/17044.pdf>, (Oct. 1999), 2 pgs.
“Twilio Cloud Communications—APIs for Voice, VoIP, and Text Messaging”, Twilio, [Online] Retrieved from the Internet: <URL: http://www.twilio.com/docs/api/rest/call-feedback>, (Jun. 24, 2015), 8 pgs.
Abu-Lebdeh, et al., “A 3GPP Evolved Packet Core-Based Architecture for QoS-Enabled Mobile Video Surveillance Applications”, 2012 Third International Conference on the Network of the Future {NOF), (Nov. 21-23, 2012), 1-6.
Barakovic, Sabina, et al., “Survey and Challenges of QoE Management Issues in Wireless Networks”, Hindawi Publishing Corporation, (2012), 1-29.
Berners-Lee, T., “RFC 3986: Uniform Resource Identifier (URI): Generic Syntax”, The Internet Society, [Online]. Retrieved from the Internet: <URL: http://tools.ietf.org/html/rfc3986>, (Jan. 2005), 57 pgs.
Kim, Hwa-Jong, et al., “In-Service Feedback QoE Framework”, 2010 Third International Conference on Communication Theory. Reliability and Quality of Service, (2010), 135-138.
Matos, et al., “Quality of Experience-based Routing in Multi-Service Wireless Mesh Networks”, Realizing Advanced Video Optimized Wireless Networks. IEEE, (2012), 7060-7065.
Mu, Mu, et al., “Quality Evaluation in Peer-to-Peer IPTV Services”, Data Traffic and Monitoring Analysis, LNCS 7754, 302-319, (2013), 18 pgs.
Subramanya, et al., “Digital Signatures”, IEEE Potentials, (Mar./Apr. 2006), 5-8.
Tran, et al., “User to User adaptive routing based on QoE”, ICNS 2011: The Seventh International Conference on Networking and Services, (2011), 170-177.
“U.S. Appl. No. 15/375,397, Corrected Notice of Allowability mailed Jul. 28, 2020”, 2 pgs.
Related Publications (1)
Number Date Country
20200351360 A1 Nov 2020 US
Provisional Applications (1)
Number Date Country
62021641 Jul 2014 US
Continuations (3)
Number Date Country
Parent 15375397 Dec 2016 US
Child 16934372 US
Parent 14964266 Dec 2015 US
Child 15375397 US
Parent 14791759 Jul 2015 US
Child 14964266 US