Distributed audio conferencing architecture with optimum resource utilization and seamless scalability
Claim Score by NHIP
Abstract
A conference call solution with one or more conference server, one or more conference bridge and one or more media mixer. A conference server is chosen as the conference bridge for the conference call using various optimization techniques. A media mixer for the conference call may also be chosen using various optimization techniques. The media mixer mixes media data from one or more conference bridge. If a conference bridge or the media mixer fails, the system recovers from the failure with minimal interruption to the users.

Term
6.6 yearsto projected expiry
Projected expiry 22 April 2033, counted from filing; an application has no term until it is granted.
- Priority and filed
- Published
- Today
- Projected expiry
47 claims: 8 independent, 39 dependent
- 1A conference server apparatus for facilitating a conference call, the apparatus comprising:a bridge controller for directing other components in the apparatus, the bridge controller communicatively coupled to a memory and a soft switch;the memory for storing information for one or more component in the apparatus, the memory communicatively coupled to the bridge controller;and the soft switch for establishing call connections, the soft switch communicatively coupled to the bridge controller.
- 5Broadest claimClaim Score 86, broad(NHIP)A method for selecting an assigned conference server for a participant telephone in a conference call, the method comprising:determining whether a default conference server has required resources for connecting the telephone participant to the conference call;and selecting the default conference server as the assigned conference server if the default conference server has the required resources for connecting the participant telephone to the conference call.
- 11A method for resource fragmentation optimization for a conference session, the method comprising:determining a first conference bridge for a first connection to the conference call wherein the first conference bridge transmits mixed media to the first connection;and assigning a second connection for the conference call to the first conference bridge if the first conference bridge is an assigned conference server for the first connection and the second connection.
- 17A method for optimizing bandwidth usage in a conference call system, the method comprising:becoming, by a first conference server, a first conference bridge for a conference call;determining whether one or more other conference bridge for the conference call exist in the conference call system;and selecting a media mixer for the conference call in response to the determining whether the one or more other conference bridge exist in the system.
- 24A method for a conference bridge failover in a conference call system, the method comprising:determining that a first conference bridge with a connection for a participant telephone has failed;determining, whether one or more conference bridge have resources to manage the connection for the participant telephone of the first conference bridge;and assigning the connection for the participant telephone to the one or more conference bridge in response to the determination.
- 31A method for a media mixer failover in a conference call system, the method comprising:determining that a first media mixer for a conference call has failed;determining whether one or more conference server in the system has a required resource to become the media mixer;and assigning one of the conference server from one or more conference servers as the media mixer.
- 39A system for setting up conference call, the system comprising:a first conference bridge for transmitting media data from one or more participants of the conference call to a media mixer;and the media mixer for preparing mixed media data from media data received from one or more conference bridges and transmitting the mixed media data to the first conference bridge.
- 43A system for setting up conference call, the system comprising:a first conference bridge for transmitting to a second conference bridge a first mixed participant media stream including media data from a first group comprising at least first loudest party;and the second conference bridge for transmitting to the first conference bridge a second mixed participant media stream including media data from a second group comprising at least second loudest party.
Independent claims8
120 paragraphs in 4 sections, as filed
BACKGROUND OF THE INVENTION
p-00021. Field of the Invention
p-0003This invention relates to systems and methods for optimizing resource allocation in a conference call solution. In particular, the present invention relates to a distributed architecture for conference calls in a Voice over Internet Protocol (VOIP) system.
p-00042. Description of the Background Art
p-0005A group of people decide to participate in a conference call. Any user with privileges sets up a conference call for a particular time, and provides a conference call number and password for the conference session. People call in and the conference is set up. Such a situation has been handled by various conference solutions but the magic lies in how different solutions handle the behind-the-scenes set up.
p-0006Traditionally, a conference call solution has one call server to handle conference call sessions. If the server reaches its capacity, additional callers cannot be accommodated. Moreover, if the stand-alone server fails, the conference call is terminated.
p-0007The alternative to stand alone server is a cluster of servers driven by a master server. The master server gets all conference call requests and the master then allocates various conference calls to different slave servers in the cluster. In this master-slave system, the master server becomes the bottleneck. Because all call requests are made to the master server, the master server must have the processing resources to handle all the call requests. If the master server crashes, the whole system becomes inoperative. Additionally, the network connection between the master server and the caller's site may become a bandwidth bottleneck. Also, scaling a master-server conference call system requires tedious manual configurations. Moreover, the master-slave architecture does not use the available bandwidth efficiently when connection requests for one conference call are allocated to more than one conference call servers.
p-0008The traditional conference call solutions also limit the number of participants that can be heard in a conference call. The traditional conference call solutions cannot handle numerous parties speaking in temporal proximity in a conference call. The conference call solutions therefore choose a limited number, typically three, of the loudest parties in the conference call and mute the rest of the participants in the call. The traditional solutions allow only these loudest parties to be heard in the conference call even if a conference call solution is serving hundreds of participants.
SUMMARY OF THE INVENTION
p-0009The present invention addresses the drawbacks of traditional conference call solutions. The present invention comprises a distributed conferencing system having one or more distributed conference servers that communicate with each other during a conference call set up.
p-0010A conference server comprises a bridge controller, a memory, an inter-bridge communicator, a softswitch and a media module. These modules in a conference server can be software, hardware or a blend of software and hardware. The media module encodes and decodes media data coming in and going out of the conference server. The softswitch sets up call connections between endpoints and a conference server as well as between two conference servers. The inter-bridge communicator provides data connectivity between various conference servers, the memory stores data for other modules in the conference server and the bridge controller directs the modules in the conference server.
p-0011The above mentioned modules in the conference server advantageously enable the conference server to be an assigned conference server for a telephone that routes the incoming and outgoing calls for the telephone, a conference bridge that manages a telephone's connection to a conference call, or a media mixer that mixes media data from conference call participants.
p-0012In one embodiment, a plurality of conference servers in the system maintain information about other conference servers' availability and existing connections. Because a plurality of conference servers in the system maintain information about other conference servers in the system, there is no bottleneck server like the master in master-slave configuration of the prior art. If one of the conference bridges fails, another conference server may become the conference bridge for the connections of failed conference bridge.
p-0013Additionally, one embodiment of the present invention makes efficient use of available bandwidth by intelligently assigning an assigned conference server to a site such that the assigned conference server has the most amount of bandwidth available for a particular site. The more available bandwidth leads to a conference server's extended capability to handle more connections from a site when the conference server becomes a conference bridge.
p-0014One embodiment of the present invention also concentrates assigned conference servers and conference bridges utilized for a conference call such that resources are not fragmented all over the system. For example, if there are a few connections on conference bridge A and a few connections on conference bridge B, the assigned conference servers and the conference bridges negotiate a single conference server that acts as a conference bridge for connections to a conference call. This optimization can be done during or after the call setup.
p-0015In one embodiment, the conference bridges are configured to mix media data from n number of loudest participants amongst all their participants. The conference bridges exchange this mixed participant media data with each other. After a conference bridge receives mixed participant media data from other conference bridges, the conference bridge mixes the received mixed participant media data with its own participant's media. Even though each mixed participant media data stream comprises n number of loudest parties, the conference bridge treats each mixed participant media data stream as one loudest party. The conference bridge therefore can mix n number of mixed participant media streams (each with n number of loudest participants) into a conference media stream and achieves a conference media stream with media data from n<sup>2 </sup>loudest participants in the conference call.
p-0016One embodiment of the present invention uses the bandwidth and the processing power efficiently by selecting a media mixer for a conference call. Instead of mixing media at multiple conference bridges, the conference bridges select one or more conference servers as the media mixer for the conference call. The media mixer receives media from conference bridges, mixes the media for conference bridges, and transmits the mixed media to the conference bridges. The conference bridges then transmit the mixed media to their respective participants. In this manner, one embodiment of the present invention makes efficient use of processing power by mixing media at the media mixer and avoiding mixing media at multiple conference bridges. One embodiment of the present invention also efficiently uses bandwidth between various conference bridges because conference bridges now exchange media data with the media mixer instead of all other conference bridges for the conference call.
p-0017In one embodiment, a plurality of conference servers in the system are capable of mixing media or managing participant connections for a conference call. If a media mixer or a conference bridge fails, another conference server with available resources assumes the role of the failed media mixer or conference bridge.
BRIEF DESCRIPTION OF THE DRAWINGS
p-0018The invention is illustrated by way of example, and not by way of limitation in the figures of the accompanying drawings.
p-0019<figref idrefs="DRAWINGS">FIG. 1</figref> is a block diagram of one embodiment of a distributed conferencing system according to the present invention.
p-0020<figref idrefs="DRAWINGS">FIG. 2</figref> is a block diagram depicting one embodiment of a distributed conferencing system in more detail according to the present invention.
p-0021<figref idrefs="DRAWINGS">FIG. 14</figref> is a block diagram depicting one embodiment of a bridge controller in more detail according to the present invention.
p-0022<figref idrefs="DRAWINGS">FIG. 3</figref> is a flow chart depicting one embodiment of a method for setting up a conference call according to the present invention.
p-0023<figref idrefs="DRAWINGS">FIG. 4</figref> is a flow chart depicting one embodiment of a method for establishing and operating a conference call according to the present invention.
p-0024<figref idrefs="DRAWINGS">FIG. 5</figref> is a flow chart depicting one embodiment of a method for optimizing a conference call according to the present invention.
p-0025<figref idrefs="DRAWINGS">FIG. 6</figref> is a flow chart depicting one embodiment of a method for selecting an optimum conference server as assigned conference server for a conference call connection according to the present invention.
p-0026<figref idrefs="DRAWINGS">FIG. 15</figref> is a flow chart depicting one embodiment of a method for optimizing resource fragmentation according to the present invention.
p-0027<figref idrefs="DRAWINGS">FIGS. 7A and 7B</figref> are a flow chart depicting in greater detail one embodiment of a method for optimizing resource fragmentation according to the present invention.
p-0028<figref idrefs="DRAWINGS">FIG. 8</figref> is a block diagram depicting one embodiment of the distributed conferencing system with a media mixer according to the present invention.
p-0029<figref idrefs="DRAWINGS">FIGS. 9A and 9B</figref> are a flow chart depicting one embodiment of a method for selecting a media mixer according to the present invention.
p-0030<figref idrefs="DRAWINGS">FIG. 10</figref> is a flow chart depicting one embodiment of a method for seamlessly scaling the conference session according to the present invention.
p-0031<figref idrefs="DRAWINGS">FIG. 11</figref> is a flow chart depicting one embodiment of a method for a conference bridge failover or media mixer failover according to the present invention.
p-0032<figref idrefs="DRAWINGS">FIG. 12</figref> is a flow chart depicting in detail one embodiment of a method for performing failover according to the present invention.
p-0033<figref idrefs="DRAWINGS">FIG. 13</figref> is a flow chart depicting in detail a second embodiment of the method for a performing failover according to the present invention.
p-0034<figref idrefs="DRAWINGS">FIG. 16</figref> is a flow chart depicting one embodiment of a method for mixing media from loudest parties in a conference call according to the present invention.
p-0035The figures depict various embodiments of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.
DETAILED DESCRIPTION
p-0036A distributed audio conferencing architecture and method for optimum resource utilization and seamless scalability is described. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the invention. It will be apparent, however, to one skilled in the art that the invention can be practiced without these specific details. In other instances, structures and devices are shown in block diagram form in order to avoid obscuring the invention.
p-0037Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the invention. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.
p-0038Some portions of the detailed descriptions that follow are presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the telecommunication arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
p-0039It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing” or “computing” or “calculating” or “determining” or “displaying” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
p-0040The present invention also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but is not limited to, any type of disk including floppy disks, optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus.
p-0041The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose computing systems including a processor, memory, non-volatile storage, input device and output device may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear from the description below. In addition, the present invention is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the invention as described herein.
Distributed Conferencing System
p-0042Referring now to <figref idrefs="DRAWINGS">FIG. 1</figref>, telephones or endpoints <b>106</b><i>a</i>-<i>c </i>are present at client site A. Telephones <b>106</b><i>a</i>-<i>c </i>are communicatively coupled to switch A <b>104</b><i>a</i>. Switch A <b>104</b><i>a </i>may be an electronic switch, a digital switch, a soft switch or any other switch used to route phone calls. In one embodiment, switch A <b>104</b><i>a </i>is a conference server. The switch A <b>104</b><i>a </i>is communicatively coupled to conference server A <b>102</b><i>a</i>. The conference server A <b>102</b><i>a </i>is described in <figref idrefs="DRAWINGS">FIG. 2</figref> below. At site B, telephones <b>106</b><i>g</i>-<i>i </i>are communicatively coupled to switch B <b>104</b><i>b</i>. Switch B <b>104</b><i>b </i>is communicatively coupled to conference server B <b>102</b><i>b</i>. As apparent from <figref idrefs="DRAWINGS">FIG. 1</figref>, telephones <b>106</b> may (as in Site A) or may not (as in Site B) be in the same site as switch A or B. The conference server N <b>102</b><i>n </i>is another conference server in the system <b>100</b>. The conference server B <b>102</b><i>b</i>, conference server A <b>102</b><i>a </i>and conference server N <b>102</b><i>n </i>are communicatively coupled to each other. The distributed conferencing system of <figref idrefs="DRAWINGS">FIG. 1</figref> also has other conventional VoIP system components (not shown) such as an MGCP gateway.
p-0043<figref idrefs="DRAWINGS">FIG. 2</figref> is a block diagram depicting one embodiment of a distributed conferencing system <b>100</b> in more detail. The conference server <b>102</b><i>a </i>and the modules in the conference server <b>102</b><i>a </i>in one embodiment are a computer with specialized software implementing the functionalities of a conference server <b>102</b><i>a </i>described below, and in a second embodiment are a custom made hardware implementation, or in a third embodiment are a combination of both custom made hardware and software implementation. Additionally, in one embodiment, a conference sever <b>102</b><i>a </i>can assume the role of a call manager, an assigned conference server, a conference bridge or a media mixer. Irrespective of the embodiment, the conference server <b>102</b><i>a </i>comprises a bridge controller <b>2120</b><i>a</i>, memory <b>2130</b><i>a</i>, an inter-bridge communicator <b>2140</b><i>a</i>, a softswitch <b>2160</b><i>a </i>and a media <b>2180</b><i>a</i>. Those of skill in the art will recognize that other embodiments of the conference server <b>102</b><i>a </i>can have different and/or other logical components than the ones described here, and that the functionalities can be distributed among the components in a different manner.
p-0044The bridge controller <b>2120</b><i>a </i>is the decision maker in the conference server <b>102</b><i>a</i>. The bridge controller <b>2120</b><i>a </i>manages memory <b>2130</b><i>a</i>, inter-bridge communicator <b>2140</b><i>a</i>, softswitch <b>2160</b><i>a </i>and media <b>2180</b><i>a</i>. The bridge controller <b>2120</b><i>a </i>instructs the above mentioned components to carry out their respective tasks at a given time. The bridge controller <b>2120</b><i>a </i>is communicatively coupled to memory <b>2130</b><i>a</i>, the inter-bridge communicator <b>2140</b><i>a</i>, the softswitch <b>2160</b><i>a </i>and the media <b>2180</b><i>a</i>. In one embodiment, the bridge controller <b>2120</b><i>a </i>is directly coupled to memory <b>2130</b><i>a </i>and the bridge controller <b>2120</b><i>a </i>communicates with inter-bridge communicator <b>2140</b><i>a</i>, softswitch <b>2160</b><i>a </i>and media <b>2180</b><i>a </i>indirectly through memory <b>2130</b><i>a</i>. The bridge controller <b>2120</b><i>a </i>is described in greater detail below in <figref idrefs="DRAWINGS">FIG. 14</figref>.
p-0045The memory <b>2130</b><i>a </i>is used to store various information required in operation of the conference server <b>102</b><i>a</i>. For example, the memory <b>2130</b><i>a </i>stores states of various conference sessions managed by the conference server <b>102</b><i>a</i>, the participants related to a particular conference session, information regarding other conference servers in the system etc. The memory <b>2130</b><i>a </i>comprises either or both volatile and non-volatile memory. Memory <b>2130</b><i>a </i>is communicatively coupled to bridge controller <b>2120</b><i>a</i>. In one embodiment, memory <b>2130</b><i>a </i>is also communicatively coupled to inter-bridge communicator <b>2140</b><i>a</i>, softswitch <b>2160</b><i>a </i>and media <b>2180</b><i>a. </i>
p-0046Inter-bridge communicator <b>2140</b><i>a </i>provides connectivity between various conference servers. A conference server <b>102</b><i>a </i>uses this connectivity to exchange media related data and call control data with other conference servers <b>102</b><i>n</i>. The inter-bridge communicator <b>2140</b><i>a </i>is communicatively coupled to bridge controller <b>2120</b><i>a</i>, memory <b>2130</b><i>a</i>, softswitch <b>2160</b><i>a </i>and inter-bridge communicator <b>2140</b><i>b </i>of conference server <b>102</b><i>b</i>. The inter-bridge communicator <b>2140</b><i>a </i>is also communicatively coupled to inter-bridge communicators of other conference servers (not shown) in a conference call system <b>100</b>. The inter-bridge communicator <b>2140</b><i>a </i>communicates with other inter-bridge communicators through various protocols like Telephony Application Program Interface (TAPI).
p-0047Softswitch <b>2160</b><i>a </i>is responsible for resolving a dialed conference number to a conference session managed by conference server <b>102</b><i>a</i>. The softswitch <b>2160</b><i>a </i>is also responsible for setting up call connections with telephone <b>106</b><i>a</i>-<i>c </i>through switch A <b>104</b><i>a </i>and with conference server <b>102</b><i>b </i>through softswitch <b>2160</b><i>b</i>. The softswitch <b>2160</b><i>a </i>is communicatively coupled to media <b>2180</b><i>a</i>, switch A <b>104</b><i>a</i>, inter-bridge communicator <b>2140</b><i>a</i>, softswitch <b>2160</b><i>b </i>and bridge controller <b>2120</b><i>a</i>. The softswitch <b>2160</b><i>a </i>communicates with switch A <b>104</b><i>a </i>and softswitch <b>2160</b><i>b </i>to set up call connections through various signaling protocols like Session Initiation Protocol (SIP) and ShoreSIP.
p-0048The media <b>2180</b><i>a </i>encodes media data that is transmitted from the conference server <b>102</b><i>a </i>to other conference servers or telephones <b>106</b><i>a</i>-<i>c</i>. The media <b>2180</b><i>a </i>also decodes media data that is received by conference server <b>102</b><i>a </i>from telephones <b>106</b><i>a</i>-<i>c </i>and other conference servers. The media <b>2180</b><i>a </i>supports various codec standards like G.711, G.729, DVI4, G.722 etc. Media <b>2180</b> also encrypts, mixes and records media. Additionally, media <b>2180</b> plays media data back to telephones <b>106</b><i>a</i>-<i>c. </i>
p-0049Site A is a client site with telephones <b>106</b><i>a</i>-<i>c</i>. The client site A may represent a physical or a logical site comprising telephone <b>106</b><i>a</i>-<i>c</i>. The telephones <b>106</b><i>a</i>-<i>c </i>are communicatively coupled to switch A <b>104</b><i>a</i>. In one embodiment, telephones <b>106</b><i>a</i>-<i>c </i>are located within the same site as switch A <b>104</b><i>a</i>. In another embodiment, telephones <b>106</b><i>a</i>-<i>c </i>or some of these telephones are not located in the same site as switch A. Switch A <b>104</b><i>a </i>is a telephony switch that routes telephone calls to other switches (not shown) and conference server <b>102</b><i>a</i>. Switch A <b>104</b><i>a </i>is any kind of telephone switch including an electronic switch, a digital switch or a soft switch. In one embodiment, switch A <b>104</b><i>a </i>is conference server <b>102</b><i>a</i>. Switch A <b>104</b><i>a </i>is communicatively coupled to softswitch <b>2160</b><i>a </i>and telephones <b>106</b><i>a</i>-<i>c</i>. Switch A <b>104</b><i>a </i>communicates with softswitch <b>2160</b><i>a </i>to set up call connections through protocols like SIP and ShoreSIP.
p-0050<figref idrefs="DRAWINGS">FIG. 14</figref> is a block diagram depicting one embodiment of bridge controller <b>2120</b><i>a </i>in more detail. The modules in the bridge controller <b>2120</b><i>a </i>in one embodiment are a computer with specialized software implementing the functionalities of the modules described below, and in a second embodiment are a custom made hardware implementation, or in a third embodiment are a combination of both custom made hardware and software implementation. The assigned conference server module <b>1402</b> implements the functionality of the assigned conference server when the conference server <b>102</b><i>a </i>assumes the role of assigned conference server. One of the responsibilities of the assigned conference server is selecting a conference bridge for a connection.
p-0051The conference session management module <b>1404</b> manages information regarding other conference servers in the system <b>100</b>, conference bridges in the system <b>100</b>, conference sessions managed by those conference bridges, participants in those conference session and media mixers for those sessions. The conference session management module <b>1404</b> also executes part of the functionality required to set up a conference call and functionality of a conference bridge when conference server <b>102</b><i>a </i>assumes the role of a conference bridge. Some of the responsibilities of a conference bridge comprise receiving media data from its participants and other conference bridges, mixing media data from its participants and other conference bridges, and transmitting the mixed participant media data to its participants, media mixers and other conference bridges.
p-0052The media mixer module <b>1406</b> implements the functionality of media mixer when conference server <b>102</b><i>a </i>assumes the role of a media mixer. One of the responsibilities of the media mixer is to mix media received from a plurality of conference bridges and transmit the mixed media to the conference bridges.
p-0053The recovery management module <b>1408</b> implements the functionality for conference bridge failover and media mixer failover. The scalability management module <b>1410</b> implements the functionality of a conference server <b>102</b><i>a </i>that allows the distributed conferencing system <b>100</b> to add more conference servers to the system <b>100</b>. The optimization management module <b>1412</b> implements various optimizations like assigned conference server optimization, resource fragment optimization, media stream number optimization and media stream bandwidth optimization.
p-0054<figref idrefs="DRAWINGS">FIG. 3</figref> depicts a method for setting up a conference call according to one embodiment of the present invention. To set up a conference call, the participant using telephone <b>106</b><i>a </i>dials a conference call number and requests <b>302</b> a conference call connection. The request is routed to switch A <b>104</b><i>a </i>which in turn routes the request to conference server <b>102</b><i>a</i>. The conference session management module <b>1404</b> in conference server <b>102</b><i>a </i>prompts <b>304</b> the participant to enter a password to join the conference call. This password has been configured in advance for the conference call session and the participants are given the password before they join the conference. In one embodiment, participants may be given different passwords depending on the priority level or the participant's need to attend the conference call. The participants that are necessary for the conference call may have a higher priority than participants that are optional. The conference session management module <b>1404</b> after receiving the password authenticates <b>306</b> the participant and stores the priority level for the participant's connection. The softswitch <b>2160</b><i>a </i>sets up the participant's connection and if the participant enters an invalid password, the conference session management module <b>1404</b> may again prompt <b>304</b> the participant for conference password.
p-0055The conference session management module <b>1404</b> in conference server <b>102</b><i>a </i>maintains information in memory <b>2130</b><i>a </i>regarding existing conference calls as discussed below. The conference session management module <b>1404</b> queries this information and determines <b>308</b> whether the requested conference call already exists. If the conference call does not exist, the conference server <b>102</b><i>a </i>creates <b>310</b> the conference call session. The conference session management module <b>1404</b> records the information about the new conference call session and the call set up for the conference call is managed by softswitch <b>2160</b><i>a</i>. If, however, the conference call already exits, the conference server <b>102</b><i>a </i>skips the step of creating a conference call session.
p-0056The conference session management module <b>1404</b> then joins <b>312</b> the participant to the conference call. After joining the participant to the conference call, the conference session management module <b>1404</b> updates <b>314</b> the other conference servers in the system <b>100</b> with updated information about the new participant, the conference session joined by the new participant, and the conference servers involved in managing the conference session. The conference session management modules of the other conference servers record this information and use this information to query for existing conference sessions when a participant requests a connection.
p-0057<figref idrefs="DRAWINGS">FIG. 4</figref> is a flow chart depicting one embodiment of a method for establishing and operating a conference call. For convenience, we refer to these features as being executed by the conference server <b>102</b><i>a</i>. A person of ordinary skill in the art would understand that these features can be implemented in other components without departing from the spirit of the invention. The conference server <b>102</b><i>a </i>first receives <b>402</b> a request from the participant using telephone <b>106</b><i>a </i>to join a conference. The optimization management module <b>1412</b> in bridge controller <b>2120</b><i>a </i>of conference server <b>102</b><i>a </i>then applies <b>404</b> resource and connection optimization techniques to efficiently use the available resources for servicing the connection request. The optimization techniques and methods are depicted in more detail in <figref idrefs="DRAWINGS">FIG. 5-9</figref>. The optimization management module <b>1412</b> also determines <b>406</b> whether the system <b>100</b> needs to scale or use an additional conference server <b>102</b><i>n </i>to service the connection request. This method is described in greater detail in <figref idrefs="DRAWINGS">FIG. 10</figref>. If additional conference server <b>102</b><i>n </i>is required to service the request, the conference server <b>102</b><i>a </i>enlists the help of conference server <b>102</b><i>n</i>. Next, the conference server <b>102</b><i>a </i>establishes <b>408</b> the requested connection for the new participant. In one embodiment, this new connection is established by the additional conference server <b>102</b><i>n </i>enlisted to scale resources for the conference session request. After establishing the connection, the conference server <b>102</b><i>a </i>tracks failure of any conference server in the system <b>100</b> and recovers <b>410</b> from such failures with minimal effect on the established conference connections. The recovery procedures are described in greater detail in <figref idrefs="DRAWINGS">FIG. 11-13</figref>.
Optimizations
p-0058<figref idrefs="DRAWINGS">FIG. 5</figref> depicts a method for various optimizations used in setting up a conference call according to the present invention. The conference server <b>102</b><i>a </i>applies a number of optimizations before or during the conference call connection setup. The conference server <b>102</b><i>a </i>applies <b>504</b> assigned conference server optimization and applies <b>508</b> resource fragment optimization. The conference server also applies <b>510</b> media stream number optimization and applies <b>512</b> media stream bandwidth optimization if appropriate. These optimizations are described in greater detail in <figref idrefs="DRAWINGS">FIG. 6-9</figref>.
p-0059<figref idrefs="DRAWINGS">FIG. 6</figref> depicts a method for selecting an optimum conference server <b>102</b><i>a </i>as assigned conference server for a conference call connection. In one embodiment, switch A is pre-configured with an assigned conference server and switch A routes all the calls to the assigned server. In another embodiment, the method for selecting an assigned conference server can be implemented at switch A <b>104</b><i>a </i>in system <b>100</b>. Alternatively, switch A <b>104</b><i>a </i>may be pre-configured to route conference call requests to a default conference server <b>102</b><i>a </i>and the default conference server <b>102</b><i>a </i>may implement the method depicted in <figref idrefs="DRAWINGS">FIG. 6</figref>. This default conference server <b>102</b><i>a </i>may be chosen because the chosen default conference server <b>102</b><i>a </i>has the most amount of bandwidth available to serve connections for switch A <b>104</b><i>a</i>. In one embodiment, switch A <b>104</b><i>a </i>is a conference server as well. In this embodiment, switch A <b>104</b><i>a </i>is itself the default conference server <b>102</b><i>a</i>. In other embodiments, the criteria for selecting a default conference server may differ according to the needs of a particular site.
p-0060In one embodiment, the method for electing an optimum assigned conference server is implemented partly in switch <b>104</b><i>a </i>and partly in default conference server <b>102</b><i>a</i>. In another embodiment, the method may be implemented in a completely different entity that maintains information about the conference servers in the system <b>100</b>. For illustration purposes, we assume this entity to be switch A <b>104</b><i>a </i>that is already configured with a default conference server <b>102</b><i>a. </i>
p-0061Switch A <b>104</b><i>a </i>first checks whether the default conference server <b>102</b><i>a </i>has adequate resources, i.e. adequate processing power and bandwidth, to perform resource fragment optimization. In one embodiment, the conference server <b>102</b><i>a </i>is pre-configured with benchmarks of resources required for assigned conference server optimization per connection request. In another embodiment, the assigned conference server module <b>1402</b> in conference server <b>102</b><i>a </i>dynamically calculates the required resources by analyzing the resources it utilized in optimizing previous connection requests. The assigned conference server module <b>1402</b> also tracks the processing power and bandwidth currently utilized by conference server <b>102</b><i>a </i>and the amount conference server <b>102</b><i>a </i>has left for future requests. In one embodiment, the conference session management module <b>1404</b> tracks additional information about the connections that a conference server manages as a conference bridge and the sessions for which the conference server acts as a media mixer. The conference session management module <b>1404</b> transmits this update information to other conference servers periodically. In one embodiment, the update messages are sent with a unique identifier, like IP address of the conference server, which uniquely identifies the sender conference server. Other conference servers in the system <b>100</b> store and use this unique identifier and update information for various purposes. In one embodiment, this update information serves as a heartbeat or an alive message that informs the other conference servers that the sender of a particular update message is functional and has not failed.
p-0062In this manner, conference server <b>102</b><i>a </i>has information about available resources on other conference servers in the system <b>100</b> and the amount of resources required by a conference server to select a conference bridge and route the call to the conference bridge. Switch A <b>104</b><i>a </i>queries the default conference server <b>102</b><i>a </i>about its availability.
p-0063The assigned conference server module <b>1402</b> in default conference server <b>102</b><i>a </i>compares the amount of resources required for a connection with the amount of resources left on default conference server <b>102</b><i>a</i>. The assigned conference server module <b>1402</b> determines if the default conference server <b>102</b><i>a </i>has adequate resources for the new conference call connection and informs switch A <b>104</b><i>a </i>about its available resources. In one embodiment, switch A <b>104</b><i>a </i>periodically receives this resource information from conference server <b>102</b><i>a </i>and switch A <b>104</b><i>a </i>analyzes this information to determine whether the default conference server <b>102</b><i>a </i>has adequate resources. In one embodiment, switch A <b>104</b><i>a </i>is a conference server itself and therefore has the information about other conference servers in the system <b>100</b>. In this embodiment, switch A does not query a conference server <b>102</b> and uses its own collected information to determine the default server's availability.
p-0064If the default conference server <b>102</b><i>a </i>has adequate resources, the default conference server <b>120</b><i>a </i>becomes <b>604</b> the assigned conference server for the connection and the method is complete. If, however, the default conference server <b>102</b><i>a </i>does not have the required resources, switch A <b>104</b><i>a </i>determines <b>606</b> whether any other conference server in the same site as switch A <b>104</b><i>a </i>or default conference server <b>102</b><i>a </i>has the required resources. A site is a physical or logical collection of one or more sub-networks in system <b>100</b>. A sub-network is a group of network devices in a network that are grouped together into smaller efficient groups. A person of ordinary skill in the art understands the advantages of a sub-network and how to divide a network into various sub-networks.
p-0065If another conference server in the same site has the required resources, switch A <b>104</b><i>a </i>determines <b>608</b> if more than one conference server in the site has the required resources. If so, switch A <b>104</b><i>a </i>assigns <b>614</b> the conference server with the most resources in the site as the assigned conference server. Switch A <b>104</b><i>a </i>determines the conference server with most resources by analyzing the information it periodically receives from the conference servers <b>102</b><i>a</i>-<i>n </i>in the system <b>100</b> or querying the conference servers <b>102</b><i>a</i>-<i>n </i>in the system <b>100</b> about their available resources. In one embodiment, the available resource is a weighted average of available processing power and bandwidth. In another embodiment, the available resource is a weighted average of available processing power, bandwidth, memory or other resources in a conference server <b>102</b><i>a</i>. In yet another embodiment, available resource is calculated using only some, and not all, of the above mentioned variables.
p-0066If only one conference server <b>102</b><i>a </i>has the required resources in the site, switch A assigns <b>610</b> that conference server <b>102</b><i>a </i>as the assigned conference server. If, however, no conference server in the site has the required resources (step <b>606</b>), switch A determines <b>612</b> whether any conference server in another site has the required resources. Switch A then proceeds to step <b>608</b> to select the assigned conference server from another site of system <b>100</b>. If, however, none of the conference servers in the system <b>100</b> have the required resources as determined in step <b>612</b>, switch A informs <b>616</b> the participant using telephone <b>106</b><i>a </i>that the participant's connection cannot be established because of lack of resources.
p-0067After determining the assigned conference server for a connection, switch A <b>104</b><i>a </i>routes the connection request to the assigned conference server <b>102</b><i>a</i>. The assigned conference server <b>102</b><i>a </i>then performs the resource fragment optimization depicted in <figref idrefs="DRAWINGS">FIG. 15</figref> and in greater detail in <figref idrefs="DRAWINGS">FIGS. 7A and 7B</figref>. In one embodiment, the resource fragment optimization is performed without electing an optimum assigned conference server, and the resource fragment optimization is performed by switch A <b>104</b><i>a </i>or any other entity with information about conference servers in the system <b>100</b>. For illustration purposes, we assume that assigned conference server <b>102</b><i>a </i>implements the resource fragment optimization.
p-0068Referring to <figref idrefs="DRAWINGS">FIG. 15</figref>, the conference session management module <b>1404</b><i>a </i>in assigned conference server <b>102</b><i>a </i>tracks and stores information about the connections the assigned conference server <b>102</b><i>a </i>manages as a conference bridge. The optimization management module <b>1412</b> analyzes this information to determine <b>1502</b> whether the assigned conference server <b>102</b><i>a </i>is already a conference bridge for a second connection to the same conference call session. In one embodiment, the optimization management module also determines <b>1502</b> if the assigned conference server has the resources required to manage another connection to the conference call. If yes, the assigned conference server <b>102</b><i>a </i>assigns <b>1514</b> itself as the conference bridge for the requested connection. The optimization management module <b>1412</b> then analyzes the update information previously sent by other conference servers and determines any existing media mixer for the conference call. The assigned conference server next establishes <b>1516</b> a media connection with the existing media mixer for the conference call. In one embodiment, the assigned conference server <b>102</b><i>a </i>may modify or reuse without modifications the media connection with the media mixer the assigned conference server <b>102</b><i>a </i>established for the second connection to the conference call. After establishing the connection with media mixer, the conference session management module <b>1404</b> in assigned conference server <b>102</b><i>a </i>transmits update information to other conference servers in the system <b>100</b>. The update information, among other things, informs the other conference servers about the new participant connection to the conference call, the conference bridge for the new participant connection, and the media mixer connected to the conference bridge for the conference call. In this manner, the assigned conference server <b>102</b><i>a </i>assigns itself as the conference bridge for the new participant connection for the conference call if the assigned conference server <b>102</b><i>a </i>is already a conference bridge for another connection to the conference call (as determined in step <b>1502</b>).
p-0069If, however, the assigned conference server <b>102</b><i>a </i>is not a conference bridge for another connection to the conference call (as determined in step <b>1502</b>), the optimization management module <b>1412</b> in assigned conference server <b>102</b><i>a </i>analyzes the update information previously sent by remote conference servers, i.e. conference servers other than the assigned conference servers, and determines <b>1504</b> if another conference server in the system <b>100</b> is a conference bridge for the conference call. In one embodiment, the optimization management module <b>1412</b> in assigned conference server <b>102</b><i>a </i>also determines whether the conference bridge in system <b>100</b> has resources to manage another connection to the conference call.
p-0070In one embodiment, the optimization management module <b>1412</b> in assigned conference server <b>102</b><i>a </i>searches for only those conference bridges that are in the same site as the assigned conference bridge <b>102</b><i>a</i>. If another or remote conference bridge is found, the optimization management module <b>1412</b> in assigned conference server <b>102</b><i>a </i>assigns <b>1518</b> the other or the remote conference server as the conference bridge for the requesting participant. In one embodiment, the assignment is done by sending update information to conference servers in the system with information that the remote conference server is the new conference bridge for the connection. The remote conference server gets this information, and the remote conference server or the new conference bridge establishes <b>1516</b> connection with any existing media mixers for the connection and updates <b>1512</b> all other conference servers in the system <b>100</b> as discussed above.
p-0071When there is no other conference bridge managing a connection for the requested conference call (as determined in step <b>1504</b>), the optimization management module <b>1412</b> determines <b>1506</b> if the assigned conference server has the resources to become the conference bridge for the requesting participant's connection. If yes, the assigned conference server becomes the conference bridge <b>1514</b> for the requesting connection, establishes a connection with existing media mixers for the connection, and updates all other conference servers in system <b>100</b> as discussed above.
p-0072If the assigned conference server <b>102</b><i>a </i>does not have the resources to be the conference bridge, the optimization management module <b>1412</b> determines <b>1508</b> after analyzing the collected update information from other conference servers if another conference server in the system <b>100</b> has the resources to manage the requested connection. In one embodiment the check in step <b>1506</b> is skipped and the optimization management module in step <b>1508</b> determines the conference server that has the required resources to be the conference bridge. If another conference server has the required resources, the optimization management module <b>1412</b> assigns <b>1518</b> that conference server as the conference bridge for the requested connection. The new conference bridge then establishes <b>1516</b> connection with existing media mixers and updates <b>1512</b> other conference servers as discussed above.
p-0073When none of the conference servers in system <b>100</b> have the required resources (as determined in step <b>1508</b>), the optimization management module <b>1412</b> informs <b>1510</b> the requesting participant that their connection cannot be established because of lack of resources. The conference session management module <b>1404</b> then updates <b>1512</b> all other conference servers in the system as discussed above.
p-0074In this manner, the assigned conference server <b>102</b><i>a </i>prevents fragmentation of resources by directing connection with the same assigned conference server to a common conference bridge. <figref idrefs="DRAWINGS">FIG. 15</figref> therefore gives an overview of how the assigned conference server <b>102</b><i>a </i>implements resource fragmentation optimization. <figref idrefs="DRAWINGS">FIG. 15</figref>, however, does not describe scenarios like how the assigned conference server <b>102</b><i>a </i>selects a conference bridge if the assigned conference server <b>102</b><i>a </i>is not a conference bridge for an existing connection but the assigned conference server <b>102</b><i>a </i>does have resources to manage the requesting participant's connection. <figref idrefs="DRAWINGS">FIGS. 7A and 7B</figref> provide a more detailed description of the resource fragmentation optimization method described in <figref idrefs="DRAWINGS">FIG. 15</figref>.
p-0075Referring to <figref idrefs="DRAWINGS">FIGS. 7A and 7B</figref>, the optimization management module <b>1412</b> in assigned conference server <b>102</b><i>a </i>determines <b>702</b> if another participant has already requested a connection to the conference call and whether the assigned conference server <b>102</b><i>a </i>is already a conference bridge for that requested conference session. If the conference session is already managed by assigned conference server <b>102</b><i>a</i>, i.e. the assigned conference server <b>102</b><i>a </i>is already a conference bridge for other connections to the conference session, the optimization management module <b>1412</b> determines <b>703</b> if the assigned conference server <b>102</b><i>a </i>has resources to manage another connection for the same conference session. In one embodiment, the assigned conference server <b>102</b><i>a </i>is pre-configured with benchmarks of resources required to manage a connection. In another embodiment, the optimization management module <b>1412</b> in assigned conference server <b>102</b><i>a </i>dynamically calculates the required resources by analyzing the resources it utilized in managing a previous connection to a conference call. The conference session management module <b>1404</b> tracks the processing power and bandwidth currently utilized by assigned conference server <b>102</b><i>a </i>and the amount assigned conference server <b>102</b><i>a </i>has left for future requests. The optimization management module <b>1412</b> compares the amount of resources required for a connection with the amount of resources left on assigned conference server <b>102</b><i>a </i>and the optimization management module <b>1412</b> determines if the assigned conference server <b>102</b><i>a </i>has adequate resources to manage the new conference call connection.
p-0076If the assigned conference server <b>102</b><i>a </i>has the required resources, the assigned conference server <b>102</b><i>a </i>becomes <b>704</b> the conference bridge for the requested connection. The softswitch <b>2160</b><i>a </i>and/or the inter-bridge communicator <b>2140</b><i>a </i>in assigned conference server <b>102</b><i>a </i>next establish <b>718</b> a media connection with any existing media mixers for the conference call session unless the assigned conference server already has an existing media connection with the media mixers for the conference session. The conference session management module <b>1404</b> then updates <b>720</b> other conference servers in the system with updated information about the session, session members, session media mixers, and the resource on the assigned conference server. The updated information also comprises information about the sessions managed by the conference server <b>102</b><i>a</i>, information regarding the participants in the session, the resources of conference server <b>102</b><i>a </i>being used to manage a particular session, and the remaining resources of the conference server.
p-0077If the assigned conference server <b>102</b><i>a </i>is managing the conference session (as determined in step <b>702</b>), but the assigned conference server <b>102</b><i>a </i>does not have the resources to manage additional connections for the session (as determined in step <b>703</b>), the optimization management module <b>1412</b> determines <b>722</b> (See <figref idrefs="DRAWINGS">FIG. 7B</figref>) whether another conference server in the system is also managing the session. Every conference server in the system transmits information about its available resources and the sessions it manages. The conference servers in the system therefore have information about other conference servers in the system and the sessions managed by a particular conference server.
p-0078The optimization management module <b>1412</b> analyzes this information to determine <b>722</b> whether any other conference server is managing a conference session requested by the participant using telephone <b>106</b><i>a</i>. If no other conference server in the system is managing the conference session, the optimization management module <b>1412</b> inquires <b>723</b> whether other conference servers in the system have the resources to manage the additional conference session. If no conference server has the resources for managing the new conference session, the optimization management module <b>1412</b> in assigned conference server <b>102</b><i>a </i>informs <b>724</b> the requesting participant that the requested conference session connection cannot be established because of lack of resources. The conference session management module <b>1404</b> then updates <b>720</b> other conference servers in the system with updated information about the session, session members, and the resource on the conference server <b>102</b><i>a</i>. The update information may include additional information as discussed above.
p-0079On the other hand, if more than one conference server has the resources to manage <b>726</b> the session, the optimization management module <b>1412</b> assigns the conference server with the most resources as the conference bridge for the participant's connection. If only one conference server has the required resources to manage the participant's conference connection (Step <b>723</b>), that conference server becomes <b>728</b> the conference bridge for the connection.
p-0080The new conference bridge then establishes <b>718</b> (See <figref idrefs="DRAWINGS">FIG. 7A</figref>) a media connection with any existing media mixers for the conference session. This media connection is used to send and receive media data between the inter-bridge communicators of conference bridge and the media mixers. After establishing the media connection, the conference session management module <b>1404</b> in conference bridge <b>720</b> updates other conference servers in the system with new session information including information about the media mixers and any media connections existing between the conference bridge and the media mixers. The update information may include additional information as discussed above. This concludes the scenario where the requested conference session is already managed <b>702</b> by the assigned conference server <b>102</b><i>a</i>, the assigned conference server <b>102</b><i>a </i>do not have <b>703</b> the resources to manage the additional connection for the new participant, and no other conference server in the system is managing <b>722</b> the conference session already for other participants.
p-0081If, however, another conference server in the system is managing the conference session, as determined in step <b>722</b>, the optimization management module <b>1412</b> in assigned conference server <b>102</b><i>a </i>determines <b>712</b> whether the managing conference server has the resources to manage another connection for the already managed session. The optimization management module <b>1412</b> uses the same process discussed above to determine whether the managing conference server has the required resources. If the managing conference server does not have the resources to manage an additional connection, the assigned conference server <b>102</b><i>a </i>returns to step <b>721</b> and performs steps <b>723</b>-<b>730</b> discussed above to find another conference server in the system that has the resources to manage a conference call connection. The found conference server <b>102</b><i>a </i>then establishes <b>718</b> a media connection with session's media mixers and updates <b>720</b> other conference servers in system <b>100</b> as discussed above.
p-0082On the other hand, when the managing conference server has the resources to manage an additional connection, as determined in step <b>712</b>, the managing conference server becomes <b>716</b> the conference bridge for the requesting participant's connection. The softswitch <b>2160</b><i>a </i>and/or the inter-bridge communicator <b>2140</b><i>a </i>in the new conference bridge then establish <b>718</b> a media connection with any existing conference session media mixers. The new conference bridge next updates <b>720</b> other conference servers in the system with the updated information about the session, session members, session media mixers, session conference bridges, and the available resources on the new conference bridge. The update information may include additional information as discussed above. This concludes the scenario where the assigned conference server <b>102</b><i>a </i>is already managing the requested conference session as determined in step <b>702</b>.
p-0083When the assigned conference server <b>102</b><i>a </i>is not already a conference bridge for the conference call session, the optimization management module <b>1412</b> in assigned conference server <b>102</b><i>a </i>determines <b>706</b> if a remote conference server, i.e. another conference server, is a conference bridge for the session In one embodiment, a remote conference server or remote conference bridge in description of <figref idrefs="DRAWINGS">FIGS. 7A and 7B</figref> is another conference server or conference bridge within the same site as the assigned conference server. In another embodiment, the remote conference server or remote conference bridge in description of <figref idrefs="DRAWINGS">FIGS. 7A and 7B</figref> is a conference server or conference bridge other than the assigned conference server in the system <b>100</b>.
p-0084If a remote conference bridge does not exist for the session, the optimization management module <b>1412</b> determines <b>721</b> whether assigned conference server <b>102</b><i>a </i>has the resources to be the conference bridge for the participant's connection. If the assigned conference server <b>102</b><i>a </i>has the required resources, the optimization management module <b>1412</b> assigns <b>714</b> the assigned conference server <b>102</b><i>a </i>as the new conference bridge. The new conference bridge next establishes <b>718</b> a media connection with any existing media mixers for the conference call session. The assigned conference server <b>102</b><i>a </i>or the new conference bridge then updates <b>720</b> other conference servers in the system with the updated information about the session, session members, session media mixers, other session conference bridges, and the available resources on the new conference bridge. The update information may include additional information as discussed above. If the assigned conference server does not have the resources to manage the new connection (as determined in step <b>721</b>), the assigned conference server goes through steps <b>721</b>-<b>730</b> described above to find a conference server with resources.
p-0085When another conference server, i.e. a remote conference server and not the assigned conference server <b>102</b><i>a</i>, is managing the requested conference session, the assigned conference server <b>102</b><i>a </i>determines <b>708</b> if the remote conference server is the conference bridge for other participants who have the same assigned conference server <b>102</b><i>a </i>as the requesting participant. If yes, the optimization management module <b>1412</b> in assigned conference server <b>102</b><i>a </i>determines <b>710</b> whether the assigned conference server <b>102</b><i>a </i>has the resources to manage the connections of new participant and existing participants with the same assigned conference server <b>102</b><i>a </i>as the new participant. If the assigned conference server <b>102</b><i>a </i>has the required resources, the assigned conference server <b>102</b><i>a </i>becomes the conference bridge for the connection of the new participant. The assigned conference server <b>102</b><i>a </i>then goes through steps <b>714</b>, <b>716</b> and <b>718</b>, as discussed above, to establish a media connection with session's media mixers and update other conference servers with update information.
p-0086If the optimization management module <b>1412</b> determines in step <b>710</b> that the assigned conference server <b>102</b><i>a </i>lacks the required resources, the optimization management module <b>1412</b> determines <b>712</b> whether the remote conference server has the resources to manage the requesting participant's connection. If yes, the remote conference bridge becomes <b>716</b> the conference bridge for the new participant's connection, establishes <b>718</b> media connections with any existing media mixers for the session, and updates <b>720</b> the conference servers in the system with updated information about the session, session members, session media mixers, session conference bridges, and available resources on the remote conference server. The update information may include additional information as discussed above.
p-0087If the optimization management module <b>1412</b> in assigned conference server <b>102</b><i>a </i>determines in step <b>710</b> that the assigned conference server <b>102</b><i>a </i>lacks the required resources, and the remote conference server does not have the resources for requesting participant's connection as determined in step <b>712</b>, the assigned conference server goes through steps <b>721</b>-<b>730</b> described above to find a conference server with resources. The assigned conference server <b>102</b><i>a </i>then goes through steps <b>714</b>, <b>716</b> and <b>718</b>, as discussed above, to establish a media connection with session's media mixers and update other conference servers with update information. This concludes the scenario when remote conference server is managing connections of participants with the same assigned conference server <b>102</b><i>a </i>as the requesting participant (as determined in step <b>708</b>).
p-0088When the remote conference server is not managing connections of participants with the same assigned conference server <b>102</b><i>a </i>as the requesting participant, but the remote conference server is managing other connections to the same conference session, the optimization management module <b>1412</b> in assigned conference server <b>102</b><i>a </i>determines <b>712</b> whether the remote conference server has the resources to become conference bridge for the requesting participant's connection. If the remote conference server does have the resources, the remote conference server becomes <b>716</b> the conference bridge for the requesting participant, establishes <b>718</b> media connections with any existing media mixers for the session, and updates <b>720</b> the conference servers in the system with updated information about the session, session members, session media mixers, session conference bridges, and available resources on the remote conference server. The update information may include additional information as discussed above.
p-0089If the remote conference server does not have the required resources, as determined in step <b>712</b>, the assigned conference server <b>102</b><i>a </i>goes through steps <b>721</b>-<b>730</b> described above to find a conference server with resources. The selected conference server then goes through steps <b>714</b>, <b>716</b> and <b>718</b>, as discussed above, to establish a media connection with session's media mixers and update other conference servers with update information.
p-0090In this manner, one embodiment of the present invention selects fewer conference bridges for participants with the same assigned conference server <b>102</b><i>a</i>. The fewer conference bridges in turn leads to optimized use and lesser fragmentation of available resources.
p-0091The present invention also makes optimum use of available bandwidth by selecting media mixer <b>801</b><i>b </i>for a conference call. The conference bridges <b>801</b><i>a </i>and <b>801</b><i>c </i>mix media data from their respective participants and transmit the mixed data to the media mixer <b>801</b><i>b</i>. The media mixer <b>801</b><i>b </i>mixes the media data received from conference bridges <b>801</b><i>a </i>and <b>801</b><i>c</i>, and media mixer <b>801</b><i>b </i>transmits the mixed data stream back to the conference bridges. The media mixer <b>801</b><i>b </i>may be one of the conference bridges, another conference server, or a Switch or a PC specifically adapted to mix media data for conference calls.
p-0092<figref idrefs="DRAWINGS">FIG. 8</figref> depicts two different ways of transmitting media in a conferencing system: one with a media mixer and one without a media mixer. The conferencing system in <figref idrefs="DRAWINGS">FIG. 8</figref> includes three conference bridges <b>801</b><i>a</i>-<i>c</i>. When there is no media mixer in the conferencing system <b>800</b>, the conference bridges mix the data received from their own participants and exchange their mixed participant media data with other conference bridges. The conference bridges <b>801</b><i>a </i>and <b>801</b><i>b </i>exchange their mixed participant media data on media connection <b>802</b><i>b</i>. Similarly, conference bridges <b>801</b><i>b </i>and <b>801</b><i>c </i>exchange their mixed participant media data on media connection <b>802</b><i>c</i>, and conference bridges <b>801</b><i>c </i>and <b>801</b><i>a </i>exchange their mixed participant media data on media connection <b>802</b><i>a</i>. Once the conference bridges <b>801</b><i>a</i>-<i>c </i>receives data from each other, the conference bridges <b>801</b><i>a</i>-<i>c </i>mix their mixed participant media data with mixed participant media data received from other conference bridges. The conference bridges then transmit the mixed data to their respective participants. The advantages of this embodiment are explained below in description of <figref idrefs="DRAWINGS">FIG. 16</figref>.
p-0093Referring to <figref idrefs="DRAWINGS">FIG. 16</figref>, in one embodiment, conference bridge <b>801</b><i>a </i>mixes <b>1602</b> media received from its own participants and transmits <b>1604</b> this mixed participant media to other conference bridges <b>801</b><i>b </i>and <b>801</b><i>c</i>. Conference bridges <b>801</b><i>b </i>and <b>801</b><i>c </i>also mix media data from their participants and transmit their mixed participant media to other conference bridges in the system. Conference bridge <b>801</b><i>a </i>receives <b>1606</b> the mixed participant media data from conference bridges <b>801</b><i>b </i>and <b>801</b><i>c</i>, and conference bridge <b>801</b><i>a </i>mixes <b>1608</b> its own mixed participant media with all the received mixed participant media data streams into a conference media stream. The conference bridge <b>801</b><i>a </i>then transmits the conference media stream to its own participants.
p-0094In this embodiment, each conference bridge <b>801</b> has a configurable number of loudest parties it can manage in a conference call. For example, conference bridges <b>801</b><i>a</i>-<i>c </i>may each be configured to manage three loudest parties in a conference call. The conference bridges in this example mix media data from three of their loudest participants. The mixed participant media stream is then transmitted to the other conference bridges. However, once a media stream is mixed, the media stream appears as one loudest party to conference bridges <b>801</b><i>a</i>-<i>c</i>. The conference bridges <b>801</b><i>a</i>-<i>c </i>therefore each have three mixed participant media stream: two mixed participant media streams from two other conference bridges and one mixed participant media stream for their own respective participants. The conference bridges <b>801</b><i>a</i>-<i>c </i>treat these three mixed media streams as the three loudest parties. Because conference bridges <b>801</b><i>a</i>-<i>c </i>are configured to mix media from three loudest parties, the conference bridges <b>801</b><i>a</i>-<i>c </i>are able to mix the three mixed participant media streams and transmit this mixed stream to their respective participants.
p-0095In this manner, the conference bridges <b>801</b> increase the number of loudest participants that can be heard in a conference call from n to n<sup>2</sup>. Here, n is the number of loudest participants allowed per conference bridge. In this example, the conference bridges transmit mixed media to their participants and this mixed media can contain media from nine participants (three participants from each mixed participant media stream) and all nine participants can be heard in the conference call even if the nine participants are speaking in close temporal proximity.
p-0096In another embodiment in <figref idrefs="DRAWINGS">FIG. 8</figref>, when the system selects a media mixer <b>801</b><i>b, </i>the number of required media connections and number of mixing operations decrease. If conference bridge <b>801</b><i>b </i>is selected as a media mixer, conference bridges <b>801</b><i>a </i>and <b>801</b><i>c </i>establish media connections <b>802</b><i>e </i>and <b>802</b><i>d </i>with media mixer <b>801</b><i>b</i>. One skilled in the art will know that the media connections may also be established by media mixer <b>801</b><i>b </i>with conference bridges <b>801</b><i>a </i>and <b>801</b><i>c</i>. The system therefore has two media connections instead of the three media connection required without a media mixer. Conference bridges <b>801</b><i>c </i>and <b>801</b><i>a </i>send their conference participants' media data to media mixer <b>801</b><i>b </i>on media connections <b>802</b><i>d </i>and <b>802</b><i>e</i>. In one embodiment, the conference bridges <b>801</b><i>a </i>and <b>801</b><i>c </i>mix the media from their respective participants and send the mixed participant media stream to media mixer <b>801</b><i>b</i>. In another embodiment, the conference bridges <b>801</b><i>a </i>and <b>801</b><i>b </i>send the unmixed media data from their participants to the media mixer <b>801</b><i>b</i>. Media mixer <b>801</b><i>b </i>then mixes its own participants' media data and the participants' media data from other conference servers. After mixing the data, the media mixer transmits the mixed data to conference bridges <b>801</b><i>c </i>and <b>801</b><i>a </i>on media connections <b>802</b><i>d </i>and <b>802</b><i>e</i>. The media mixer <b>801</b><i>b</i>, conference server <b>801</b><i>c </i>and conference server <b>801</b><i>a </i>then transmit the already mixed data to their respective participants.
p-0097As apparent, the media mixer <b>801</b><i>b </i>does not send its own participants' unmixed media data to any other conference server. This allows the system to save bandwidth that would have been used if the media mixer <b>801</b><i>b </i>had to transmit its own participants' unmixed data to other conference servers in the system.
p-0098In one embodiment, the media mixer <b>801</b><i>b </i>may send its media data to other conference servers. In another embodiment, the media mixer <b>801</b><i>b </i>does not have any conference call participants and therefore do not have any media data from its own participants. The media mixer <b>801</b><i>b </i>in that embodiment is mixing data for other conference servers.
p-0099In this manner, the selection of media mixer results in media stream bandwidth optimization. The conference bridges transmit their media data to media mixer instead of a plurality of conference bridge and the media mixer do not send its own media data to conference bridge. The media mixer sends the mixed media data to conference bridges and uses available system bandwidth efficiently and therefore performs media stream bandwidth optimization.
p-0100The selection of media mixer also results in media stream number optimization. When the system <b>100</b> employs a media mixer <b>801</b><i>b, </i>the conference servers <b>801</b><i>c </i>and <b>801</b><i>a </i>in one embodiment do not have to mix the media data from other conference bridges themselves. The conference servers receive already mixed data from media mixer <b>801</b><i>b </i>and therefore avoid spending processing power in receiving and then mixing media data from a plurality of conference bridges. In one embodiment, a conference server may mix additional data with received media data. In this manner, the selection of media mixer reduces the number of streams processed by conference bridges and results in media stream number optimization.
p-0101As explained above, any conference server can be selected as a media mixer. <figref idrefs="DRAWINGS">FIGS. 9A and 9B</figref> depict a method for selecting a media mixer. Once a participant's session is assigned to a conference server, the conference server becomes <b>902</b> the conference bridge for that participant. We will refer to this conference server as conference bridge A for illustration purposes. The conference bridge A receives <b>904</b> information from other conference servers in the system including information about the sessions for which the system's conference servers are conference bridges. The optimization management module <b>1412</b> in conference bridge A analyzes this information to determine <b>906</b> whether other conference bridges exists for the same conference session as the session conference bridge A is managing. If no other conference bridges exist for the session, the conference session management module <b>1404</b> in conference bridge A updates <b>918</b> other conference servers informing them that the conference bridge A is now the conference bridge for the new conference session for its participant. No media mixer is selected in this scenario as only one conference bridge exists for the conference session and therefore media data from other conference bridges does not need to be mixed. In one embodiment, the conference bridge A may select itself as the media mixer for the conference session at this time.
p-0102On the other hand, when another conference bridge exists for the conference session, the conference bridge A determines <b>912</b> if one or more media mixers already exist for the conference session. If no media mixer exists for the conference session as yet, the conference bridges search <b>922</b> for the conference bridge with the resources to receive, mix and transmit media. The optimization management module <b>1412</b> in conference bridges analyze the collected information about other conference bridges and conference servers. The optimization management module <b>1412</b> determine from their analysis if any conference bridge has the required resources. In one embodiment, the conference bridges are pre-configured with benchmarks of resources required to be a media mixer or mix media for n number of media streams. In another embodiment, the media mixers transmit to the conference servers in the system the resources used, i.e. the processing power usage and/or memory usage, by media mixers to mix n number of streams. This information is later used as benchmarks by the conference bridges.
p-0103If more than one conference bridge has the required resources, the conference bridges select <b>924</b> the conference bridge with the most amount of resources to be the media mixer. The conference bridges individually determine the potential conference bridges with the required resources, exchange information about these potential conference bridges, and select the conference bridge with the most amount of resources as the media mixer. Alternatively, one conference bridge selects the conference bridge with most amount of resources, selects that conference bridge as the media mixer, and informs the other conference bridges about the new media mixer.
p-0104Irrespective of who selects the media mixer, the softswitch and/or inter-bridge communicator in other conference bridges for the conference call then establish <b>916</b> a media connection with the media mixer. If none of the conference bridges have the required resources, the conference bridge A informs <b>920</b> its participant that the request to join the conference cannot be serviced because of lack of resources. In one embodiment, conference bridge A next searches for a conference server with the required resources that is not a conference bridge. If such a conference server exists, that conference server is selected as the media mixer. The conference servers in the system <b>100</b> then update <b>918</b> each other with the new conference session information including information about the new media mixer. The update information may include additional information as discussed above.
p-0105In case a media mixer <b>801</b><i>b </i>exists for the conference session, the conference bridge next inquires <b>914</b> whether the media mixer <b>801</b><i>b </i>has the resources to receive, mix and transmit media for the conference bridge A as well. If the existing media mixer does not have the resources, a new media mixer is selected as explained above. If, however, the media mixer has the resources, the conference bridge A establishes <b>916</b> a media connection with the media mixer unless a media connection already existed between the two entities. The conference servers in the system then update <b>918</b> each other with the new conference session information including information about the new media mixer. The update information may include additional information as discussed above.
Scalability and Failovers
p-0106<figref idrefs="DRAWINGS">FIG. 10</figref> depicts a method for seamlessly scaling the resources of the distributed conferencing system. If an administrator of the distributed conference system <b>100</b> wants to add more resources to the conference call system, the administrator may add <b>1002</b> a new conference server to the conference system <b>100</b>. Once the new conference server comes online, the scalability management module <b>1410</b> or the conference session management module <b>1404</b> in the new conference server updates <b>1004</b> other conference servers in the system with information about its capabilities and resources. The existing conference servers and switches in the system can now select <b>1006</b> the new conference server as an assigned conference server, a conference bridge, or a media mixer as explained in <figref idrefs="DRAWINGS">FIG. 6-9</figref>.
p-0107<figref idrefs="DRAWINGS">FIG. 11</figref> depicts a method for conference bridge or media mixer failover. After a conference connection is established for a new participant, the participant's conference bridge or the media mixer <b>801</b><i>b </i>may fail during the conference call. In one embodiment, conference bridge and the media mixers are conference servers selected to be conference bridges or media mixers. The conference servers in the system <b>100</b> periodically transmit to switch A <b>104</b><i>a </i>and other conference servers information about their resources, their sessions, their participants and update information discussed above. If a conference server receiving this information does not get this information from another conference server sending this information for two or more consecutive period, the receiving conference server determines that the sending conference server has failed. In this manner, the conference servers, assigned conference servers or conference bridges determine the failed conference servers, assigned conference servers or conference bridges in the system.
p-0108If the conference bridge fails <b>1118</b> during the call, other conference bridges for the call or other conference servers in the system takeover <b>1116</b> failed conference bridge's calls. The conference bridge failover is described in <figref idrefs="DRAWINGS">FIG. 12</figref> below. Similarly, if the media mixer for the conference call fails <b>1122</b> during the call, other conference bridges or conference servers assume <b>1120</b> the role of the failed media mixer and implement a distributed failure recovery. The media mixer failover is described in <figref idrefs="DRAWINGS">FIG. 13</figref> below. After the recovery, the conference bridges, the media mixers and the conference servers update each other with updated information about the conference sessions, the new conference bridges or the new media mixers. The update information may include additional information as discussed above.
p-0109<figref idrefs="DRAWINGS">FIG. 12</figref> depicts a conference bridge failover in more detail. For illustration purposes, we refer to switch A as implementing the failover procedure. One skilled in the art will know that the failover procedure may be implemented by another entity in the network without departing from the spirit of the invention. Referring back to <figref idrefs="DRAWINGS">FIG. 12</figref>, switch A <b>104</b><i>a </i>does not receive update information from a conference bridge for two or more consecutive periods and switch A <b>104</b><i>a </i>determines that the conference bridge has failed <b>1202</b>. Switch A <b>104</b><i>a </i>next analyzes the update information from other conference servers and determines <b>1204</b> whether other conference bridges exist for the conference call. If no other conference bridges exist for the call, switch A <b>104</b><i>a </i>determines <b>1216</b> whether another conference server in the system has the available resources to become the conference bridge for failed conference bridge's participants. In one embodiment, the available resources are a weighted sum of one or more from the group of available processing power, available memory, number of free ports available for network communication, number of media streams coming in and going out of a conference server. In one embodiment the available resources also account for the codec being used by the conference server for compressing and decompressing participant media data. For example, different weighted values may be assigned to different codecs and these weighted values are added to one or more items from the above mentioned group to determine the available resources on a conference server.
p-0110If no conference server in the system has the available resources, switch A <b>104</b><i>a </i>informs <b>1220</b> the participants that their call cannot be continued because of lack of resources. If more than one conference server has the available resources, the conference server with the most resources becomes <b>1218</b> conference bridge for the failed conference bridge's participants. In one embodiment, the conference server with the least resource fragmentation and least bandwidth consumption becomes <b>1218</b> the conference bridge for the failed conference bridge's participants. The new conference bridge then updates <b>1214</b> other conference servers in the system with information about the conference sessions, session participants, session media mixers, session conference bridges, and the new conference bridge. The update information may include additional information as discussed above. Additionally, a message maybe sent to system administration informing the administration of the same. The above mentioned entities receive the update information, stop exchanging with the failed conference bridge media data for the participants of failed conference bridge, and instead exchange that media data with the new conference bridge. This concludes the scenario when other conference bridges do not exist for the session as determined in step <b>1204</b>.
p-0111When other conference bridges exist in the system, switch A determines <b>1206</b> if the conference bridge with the most resources can service the failed conference bridge's participants. In one embodiment, switch A determines <b>1206</b> if the conference bridge with least fragmentation and least bandwidth consumption can service the failed conference bridge's participants. If the conference bridge has the required resources (alternatively least fragmentation and least bandwidth consumption), the conference bridge becomes <b>1210</b> the conference bridge for failed conference bridge's participants. In one embodiment, when more than one conference bridges have the required resources, the conference bridge that is in the same site as the failed conference bridge becomes the conference bridge for failed conference bridge's participants. In another embodiment, the conference bridge with most amount of resources among the plurality of eligible conference bridges becomes the conference bridge for the failed conference bridge's participants.
p-0112If none of the conference bridge have the required resources, switch A determines <b>1208</b> whether the existing conference bridges have the collective resources to service the failed conference bridge's participants. When the existing conference bridges do not have the required resources, switch A tries to find <b>1216</b> another conference server in the system to assume the role of conference bridge for the participants. This process has been explained above. On the other hand, if the conference bridges have the collective resources, switch A distributes <b>1212</b> the participants amongst the conference bridges according to the available resources on each conference bridge. The conference bridges then updates <b>1214</b> other conference servers in the system with information about the conference sessions, session participants, session media mixers, session conference bridges, and the new distribution. The update information may include additional information as discussed above.
p-0113<figref idrefs="DRAWINGS">FIG. 13</figref> depicts in detail the method for a media mixer failover. For illustration purposes, we refer to conference bridge as implementing the failover procedure. One skilled in the art will know that the failover procedure may be implemented by another entity in the network without departing from the spirit of the invention. Referring back to <figref idrefs="DRAWINGS">FIG. 13</figref>, one or more conference bridges do not get the update information discussed above from media mixer for two or more consecutive periods and the recovery management module <b>1408</b> in conference bridges determine that the media mixer has failed <b>1302</b>.
p-0114In one embodiment, the conference bridges collectively choose a conference bridge to determine a new media mixer. In another embodiment, the conference bridges individually choose potential media mixers and collectively choose the new media mixers by choosing the media mixer with most resources amongst the potential media mixers. Irrespective of the entity that selects the new media mixer, the following steps describe the selection of media mixer.
p-0115The conference bridges next determine <b>1306</b> whether another conference server in the system has the required resources to become the media mixer. The conference server selected to be a media mixer is preferably an existing conference bridge. If more than one conference server has the required resources, the conference server with the most resources is selected <b>1308</b> as the media mixer. If no conference server in the system has the required resources, the conference server with the most resources is selected <b>1314</b> as the media mixer.
p-0116The media mixer module <b>1406</b> in the selected media mixer then instructs <b>1316</b> the conference bridges to drop the latest joined calls until the required resources are reduced to the amount of resources available at the media mixer. In one embodiment, the media mixer instructs the conference bridge to drop the participants with lower priority until the required resources are reduced to the amount of resources available at the media mixer. In another embodiment, the media mixer instructs the conference bridges to use a lower compression or higher compression codec to free up resources and therefore accommodate the existing participants.
p-0117In one embodiment, the conference bridges may select more than one conference server as media mixers so that none of the participants have to be dropped. The selected media mixers may mix media for different conference bridges, and then mix the mixed media streams from media mixers to make one unified mixed media stream. In another embodiment, the media mixers may share the work load in a different manner to create a mixed media stream for conference bridges. In any case, once one or more media mixer is selected, the conference bridges establish <b>1310</b> media connections with the media mixer. The conference bridges then update <b>1214</b> other conference servers in the system with information about the conference sessions and the new media mixer. The update information may include additional information as discussed above.
p-0118The foregoing description of the embodiments of the present invention has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the present invention to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the present invention be limited not by this detailed description, but rather by the claims of this application. As will be understood by those familiar with the art, the present invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the modules, routines, features, attributes, methodologies and other aspects are not mandatory or significant, and the mechanisms that implement the present invention or its features may have different names, divisions and/or formats. Furthermore, as will be apparent to one of ordinary skill in the relevant art, the modules, routines, features, attributes, methodologies and other aspects of the present invention can be implemented as software, hardware, firmware or any combination of the three. Also, wherever a component, an example of which is a module, of the present invention is implemented as software, the component can be implemented as a standalone program, as part of a larger program, as a plurality of separate programs, as a statically or dynamically linked library, as a kernel loadable module, as a device driver, and/or in every and any other way known now or in the future to those of ordinary skill in the art of computer programming. Additionally, the present invention is in no way limited to implementation in any specific programming language, or for any specific operating system or environment. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the present invention, which is set forth in the following claims.
Contents4
19 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US11336734B1 | Cited by | United States of America | Search report |
| US2017078339A1 | Cited by | United States of America | Pre-grant |
| US9516076B2 | Cited by | United States of America | Search report |
| US2016182726A1 | Cited by | United States of America | Pre-grant |
| US10623455B2 | Cited by | United States of America | Search report |
| US2018013678A1 | Cited by | United States of America | Search report |
| WO2014062620A3 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2013258043A1 | Cited by | United States of America | Pre-grant |
| US2015079919A1 | Cited by | United States of America | Pre-grant |
| US2016021147A1 | Cited by | United States of America | Pre-grant |
| US9294615B2 | Cited by | United States of America | Search report |
| US11277454B2 | Cited by | United States of America | Applicant |
| US8472602B2 | Cited by | United States of America | Search report |
| US2017366675A1 | Cited by | United States of America | Pre-grant |
| US8619963B2 | Cited by | United States of America | Search report |
| US9565296B2 | Cited by | United States of America | Applicant |
| US2012207295A1 | Cited by | United States of America | Pre-grant |
| US2015189074A1 | Cited by | United States of America | Pre-grant |
| US10367727B2 | Cited by | United States of America | Applicant |
| US2010189241A1 | Cited by | United States of America | Pre-grant |
| US10455081B2 | Cited by | United States of America | Applicant |
| US9825997B2 | Cited by | United States of America | Search report |
| US8786669B1 | Cited by | United States of America | Applicant |
| US11665286B2 | Cited by | United States of America | Applicant |
| US10742692B2 | Cited by | United States of America | Applicant |
| US2018013678A1 | Cited by | United States of America | Search report |
| US9781253B2 | Cited by | United States of America | Applicant |
| US2010189242A1 | Cited by | United States of America | Pre-grant |
| US8891411B2 | Cited by | United States of America | Search report |
| US9065873B2 | Cited by | United States of America | Applicant |
| US12500783B1 | Cited by | United States of America | Applicant |
| WO2014062620A2 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9661144B2 | Cited by | United States of America | Search report |
| DE102011114277B4 | Cited by | Germany | Search report |
| US10708180B2 | Cited by | United States of America | Search report |
| US2015358472A1 | Cited by | United States of America | Pre-grant |
| WO2015050745A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US2011019593A1 | Cited by | United States of America | Pre-grant |
| US9654643B2 | Cited by | United States of America | Search report |
| US9930076B2 | Cited by | United States of America | Search report |
| US9203968B1 | Cited by | United States of America | Applicant |
| US10965725B1 | Cited by | United States of America | Applicant |
| US9729347B2 | Cited by | United States of America | Search report |
| US9325599B2 | Cited by | United States of America | Search report |
| US2017180431A1 | Cited by | United States of America | Pre-grant |
| US12273486B2 | Cited by | United States of America | Applicant |
| US9716860B2 | Cited by | United States of America | Applicant |
| US2016072868A1 | Cited by | United States of America | Search report |
| US10693773B2 | Cited by | United States of America | Applicant |
| US2011051917A1 | Cited by | United States of America | Pre-grant |
| US9167010B2 | Cited by | United States of America | Applicant |
| US8705410B2 | Cited by | United States of America | Search report |
| US11140270B2 | Cited by | United States of America | Applicant |
| US10623984B2 | Cited by | United States of America | Search report |
| US10601880B2 | Cited by | United States of America | Search report |
| US10057161B2 | Cited by | United States of America | Applicant |
| US9357076B2 | Cited by | United States of America | Search report |
| US8755507B2 | Cited by | United States of America | Search report |
| US2010189243A1 | Cited by | United States of America | Pre-grant |
| US2019394671A1 | Cited by | United States of America | Search report |
| US9013538B2 | Cited by | United States of America | Applicant |
| US11943267B1 | Cited by | United States of America | Search report |
| EP2538645A1 | Cited by | European Patent Office (EPO) | Search report |
| US2017366675A1 | Cited by | United States of America | Search report |
| US2015079920A1 | Cited by | United States of America | Pre-grant |
| US9264665B2 | Cited by | United States of America | Search report |
| US10666810B2 | Cited by | United States of America | Search report |
| US9979769B2 | Cited by | United States of America | Search report |
| US2015092615A1 | Cited by | United States of America | Pre-grant |
| US2015304502A1 | Cited by | United States of America | Pre-grant |
| US10122771B2 | Cited by | United States of America | Applicant |
| US9445053B2 | Cited by | United States of America | Applicant |
| US2013077539A1 | Cited by | United States of America | Pre-grant |
| US9635071B2 | Cited by | United States of America | Search report |
| US9178919B2 | Cited by | United States of America | Search report |
| US11700287B2 | Cited by | United States of America | Applicant |
| US10237412B2 | Cited by | United States of America | Search report |
| US9596344B2 | Cited by | United States of America | Applicant |
| US2012082066A1 | Cited by | United States of America | Pre-grant |
| US9094526B2 | Cited by | United States of America | Applicant |
| US9386053B2 | Cited by | United States of America | Search report |
| EP2645689A3 | Cited by | European Patent Office (EPO) | Search report |
| US2015249547A1 | Cited by | United States of America | Pre-grant |
| US2013294260A1 | Cited by | United States of America | Pre-grant |
| US2013266131A1 | Cited by | United States of America | Pre-grant |
| US11962722B2 | Cited by | United States of America | Applicant |
| US9900429B2 | Cited by | United States of America | Applicant |
| US2013163409A1 | Cited by | United States of America | Pre-grant |
| US2015302865A1 | Cited by | United States of America | Pre-grant |
| US2013329609A1 | Cited by | United States of America | Pre-grant |
| US8243629B2 | Cited by | United States of America | Search report |
| US9178918B2 | Cited by | United States of America | Applicant |
| US10212073B2 | Cited by | United States of America | Search report |
| US2018013678A1 | Cited by | United States of America | Search report |
| US10848415B2 | Cited by | United States of America | Applicant |
| US12549613B1 | Cited by | United States of America | Applicant |
| US10805364B2 | Cited by | United States of America | Applicant |
| US8494141B2 | Cited by | United States of America | Applicant |
| US2016072868A1 | Cited by | United States of America | Pre-grant |
| US9374400B2 | Cited by | United States of America | Search report |
8 members in 2 offices; this record represents the family
Members8
| Document | Office | Kind | |
|---|---|---|---|
| US2010165889A1 | United States of America | A1 | |
| WO2010077431A1 | World Intellectual Property Organization (WIPO) | A1 | |
| US9143618B2 | United States of America | B2 | |
| US2016099978A1 | United States of America | A1 | |
| US9544341B2 | United States of America | B2 | |
| US2017019293A1 | United States of America | A1 | |
| US2017019436A1 | United States of America | A1 | |
| US10079714B2 | United States of America | B2 |
102 transactions on the USPTO file
Allowed after 2 non-final rejections, 2 final rejections and 1 RCE.
- Non-final rejections
- 2
- Final rejections
- 2
- RCEs
- 1
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Payment of Maintenance Fee, 4th Year, Large EntityM1551 | M1551 | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Email NotificationEML_NTR | EML_NTR | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Entity Status Set To Undiscounted (Initial Default Setting or Status Change)BIG. | BIG. | |
| Email NotificationEML_NTR | EML_NTR | |
| Printer Rush- No mailingTCPB | TCPB | |
| Mailing Corrected Notice of AllowabilityMCNOA | MCNOA | |
| Response to Reasons for AllowanceREAS | REAS | |
| Corrected Notice of AllowabilityCNOA | CNOA | |
| Pubs Case Remand to TCPUBTC | PUBTC | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Email NotificationEML_NTR | EML_NTR | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Mail Reasons for AllowanceMEX.R | MEX.R | |
| Mail Interview Summary - Applicant Initiated - TelephonicMEXAT | MEXAT | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Reasons for AllowanceEX.R | EX.R | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Mail Interview Summary - Applicant Initiated - TelephonicMEXAT | MEXAT | |
| Interview Summary - Applicant Initiated - TelephonicEXAT | EXAT | |
| Interview Summary- Applicant InitiatedEXIA | EXIA | |
| Interview Summary - Applicant Initiated - TelephonicEXAT | EXAT | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Mail Interview Summary - Applicant Initiated - TelephonicMEXAT | MEXAT | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Request for Extension of Time - GrantedXT/G | XT/G | |
| Interview Summary- Applicant InitiatedEXIA | EXIA | |
| Interview Summary - Applicant Initiated - TelephonicEXAT | EXAT | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Final Rejection (PTOL - 326)Final rejectionMCTFR | MCTFR | |
| Final RejectionFinal rejectionCTFR | CTFR | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response to Election / Restriction FiledELC. | ELC. | |
| Electronic ReviewELC_RVW | ELC_RVW | |
| Email NotificationEML_NTF | EML_NTF | |
| Mail Restriction RequirementMCTRS | MCTRS | |
| Restriction/Election RequirementCTRS | CTRS | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Email NotificationEML_NTR | EML_NTR | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Electronic Information Disclosure StatementEIDS. | EIDS. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Email NotificationEML_NTR | EML_NTR | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Correspondence Address ChangeC.AD | C.AD | |
| PG-Pub RequestPG-RQST | PG-RQST | |
| Rescind Nonpublication Request for Pre Grant PublicationRESC | RESC | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Sent to Classification ContractorPGPC | PGPC | |
| Filing Receipt - UpdatedFLRCPT.U | FLRCPT.U | |
| Additional Application Filing FeesADDFLFEE | ADDFLFEE | |
| Applicant has submitted new drawings to correct Corrected Papers problemsCORRDRW | CORRDRW | |
| Change in Power of Attorney (May Include Associate POA)PA.. | PA.. | |
| Corrected PaperCPAP | CPAP | |
| Filing ReceiptFLRCPT.O | FLRCPT.O | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN |
51 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Maintenance fee paymentMAFP | MAFP | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 20100165889
- Application
- 34507708
Titles
- English
- DISTRIBUTED AUDIO CONFERENCING ARCHITECTURE WITH OPTIMUM RESOURCE UTILIZATION AND SEAMLESS SCALABILITY
Patent term adjustment
- A delay
- +1,020 daysthe office missed an examination deadline
- B delay
- +710 dayspendency past three years
- Overlap
- −132 daysdelays counted once
- Applicant delay
- −23 days
- Net adjustment
- 1,575 days
Classification
- CPC, 6
- H04M3/2227
- H04L41/0668
- H04M3/562
- H04M3/56
- H04L65/1069
- H04L65/403
- IPC, 2
- H04Q11 00
- H04M3 42