Passive recording and load balancing

Abstract
Included are embodiments of a method for routing communication data to a plurality of recorders. At least one embodiment of a method includes passively receiving communication data related to a communication and determining to which recorder the received communication data is to be routed in order to achieve a substantially balanced utilization of the plurality recorders. Other embodiments include routing the communication data to the determined recorder.
Description
BACKGROUND

In an Internet Protocol (IP) communications network, any of a plurality of communications devices may be configured to send data to and receive data from other communications devices. Users of the communications devices, network administrators, and/or third parties may desire to record the data communicated to and/or from a particular communications device. Currently, networks are configured to provide a recorder to passively record communications sent to and from a particular communications device. While such a solution may accommodate recording needs for a small number of communications devices, a single recorder can become overloaded when recording is desired for numerous communications devices.


Some networks utilize multiple recorders, where each recorder is dedicated to a subset of the communications devices. While this solution can alleviate some of the problems of recorder overload, this solution, however, typically results in certain recorders being overused, while others become under-utilized.


Thus, a heretofore unaddressed need exists in the industry to address the aforementioned deficiencies and inadequacies.


SUMMARY

Included are embodiments of a method for routing communication data to a plurality of recorders. At least one embodiment of a method includes passively receiving communication data related to a communication and determining to which recorder the received communication data is to be routed in order to achieve a substantially balanced utilization of the plurality recorders. Other embodiments include routing the communication data to the determined recorder.


Also included are embodiments of a load balancer that is passively coupled to a communications network, the load balancer configured for routing communication data to a plurality of recorders. At least one embodiment of a load balancer includes logic configured to passively receive communication data related to a communication and logic configured to determine to which recorder the received communication data is to be routed in order to achieve a substantially balanced utilization of the plurality recorders. Other embodiments include logic configured to route the communication data to the determined recorder.


Additionally included are embodiments of a system for routing communication data to a plurality of recorders. At least one embodiment of a system includes a plurality of recorders, at least one of the plurality of recorders being configured to receive data related to the communication and a load balancer coupled to the plurality of recorders.


Other systems, methods, features, and advantages of this disclosure will be or become apparent to one with skill in the art upon examination of the following drawings and detailed description. It is intended that all such additional systems, methods, features, and advantages be included within this description and be within the scope of the present disclosure.





BRIEF DESCRIPTION

Many aspects of the disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed upon clearly illustrating the principles of the present disclosure. Moreover, in the drawings, like reference numerals designate corresponding parts throughout the several views. While several embodiments are described in connection with these drawings, there is no intent to limit the disclosure to the embodiment or embodiments disclosed herein. On the contrary, the intent is to cover all alternatives, modifications, and equivalents.



FIG. 1A is an exemplary network diagram illustrating a recorder passively coupled to a communications network.



FIG. 1B is an exemplary network diagram illustrating a plurality of recorders passively coupled to a subset of communications devices in the communications network from FIG. 1A.



FIG. 2 is an exemplary network diagram illustrating an embodiment of a load balancer coupled to a plurality of recorders for the network from FIG. 1A.



FIG. 3 is an exemplary network diagram illustrating use of a fail-over recorder in a network configuration, such as the configuration from FIG. 2.



FIG. 4 is an exemplary block diagram illustrating various components in the load balancer from FIG. 2.



FIG. 5 is a flowchart illustrating exemplary steps for passively recording data from a communication in the network from FIG. 2.



FIG. 6 is a flowchart illustrating exemplary steps for passively recording data in independent streams.



FIG. 7 is a flowchart illustrating exemplary steps for providing fail-over functionality in a network, such as the network from FIG. 3.





DETAILED DESCRIPTION

Included in this description are systems and methods for passively recording and load balancing received data in an Internet Protocol IP environment. More specifically, in at least one embodiment a load balancing component can be coupled to a plurality of recorders for distributing received data to the recorders in a substantially balanced manner. By including a load balancing component in such a manner, mirrored communication (and control) data can be received in a passive manner and recorded by one (or more) of the plurality of recorders in a manner to more effectively utilize the capabilities of the recorders. Discussed below are embodiments for implementing the this functionality, as well as others.



FIG. 1A is an exemplary network diagram illustrating a recorder passively coupled to a communications network. As illustrated in the nonlimiting example of FIG. 1A, network 100, which can include a wide area network (WAN), the Internet or other network, is coupled to communications devices 102a-102f. Also coupled to network 100 is a recorder 104a. As illustrated, the recorder 104a is coupled in a passive implementation to communications devices 102. A passive implementation can include receiving mirrored data from a communication, similar to a passive tap implementation.


As a nonlimiting example, system designers can analyze network traffic through ports or Virtual Local Area Networks (VLANs) by using a System Port Analyzer (SPAN) to send a copy of the communication traffic (mirrored data) to another port on the switch that has been connected to a Remote Monitoring (RMON) probe. In operation, a copy of the data communicated between communications devices 102 may be directed to recorder 104a. Recorder 104a, however, is not a party to the communication and the communications devices 102 do not generally have information related to the presence and operation of recorder 104a.


Also included in the nonlimiting example of FIG. 1A is a network pipeline 106. Network pipeline 106 is included to illustrate that while the configuration of FIG. 1A may provide recording services to a small number of communications devices, as the amount of information to be recorded increases, the network pipeline 106 may be capable of communicating more information than a single recorder can process. As such, the recorder 104a may malfunction, burnout, or otherwise fail to provide the desired recording services.


One should note that while communications devices 102a, 102b, and 102c are directly coupled together and communications devices 102d, 102e, and 102f are coupled directly together, this is a nonlimiting example. As one of ordinary skill in the art will understand, any configuration for providing communications services between communications devices may be implemented. Such a configuration may also be represented with a plurality of communications devices independently coupled to the network 100, however, this too is a nonlimiting example.



FIG. 1B is an exemplary network diagram illustrating a plurality of recorders passively coupled to a subset of the communications devices from the communications network from FIG. 1A. As illustrated in the nonlimiting example of FIG. 1B, one solution for recording in a network with a large number of communications devices is to passively tap recorders to a subset of the communications devices 102 in the network 100. More specifically, as illustrated in FIG. 1B, communications devices 102 are coupled to network 100. Additionally, recorder 104b is coupled to communications devices 102a, 102b, and 102c. Similarly, recorder 104c is coupled to communications devices 102d, 102e, and 102f.


While the configuration from FIG. 1B illustrates the ability to provide recording services to all communications devices 102 in FIG. 1B, this configuration can result in problems when recording demands are not evenly distributed. As a nonlimiting example, if communications devices 102a, 102b, and 102c are responsible for 80% of all recordings, then recorder 104b is recording 80% of the network traffic. As such, recorder 104b may reach its storage limit and/or be subject to malfunction due to the large number of recordings. Similarly, recorder 104c will be responsible for only 20% of the recordings (in this nonlimiting example) and may be under-utilized for its capabilities.



FIG. 2 is an exemplary network diagram illustrating a load balancer coupled to a plurality of recorders for the network from FIG. 1A. More specifically, the nonlimiting example of FIG. 2 illustrates communications devices 102 coupled to network 100. Similar to the configuration from FIG. 1A, the recording traffic (at least a portion of the time) can be generally too large for any one recorder. Additionally, a network administrator may desire to control bandwidth usage by routing recording traffic to a particular recorder(s). As such, a plurality of recorders 104d, 104e, and 104f may be coupled to the network 100 via a load balancer 206. Similar to the configuration from FIG. 1A, the recorders 104d, 104e, and 104f are configured for passive recording of mirrored traffic. Also coupled to the load balancer is a data storage unit 208.


As a nonlimiting example, in operation, a user on communications device 102a can initiate a communication with a user on communications device 102d. One of the users, a system administrator, and/or a third party may desire that the communication be recorded. To facilitate the recording, data is communicated to the load balancer 206 during the communication. The load balancer 206 can be configured to receive the data for recording and route the received data to one or more of the recorders 104d, 104e, and 104f. As data from different communications (and/or different streams of the same communication) is received, the load balancer 206 can determine to which recorder that data is routed. This determination can be made based on a balancing algorithm, such as a round robin algorithm, weighted round robin algorithm, a source-destination algorithm, or other algorithm, as discussed below.


Using a round robin algorithm with three recorders as illustrated in FIG. 2, the following call distribution can be achieved.









TABLE 1







Round Robin










Calls Active
Recorder 104d
Recorder 104e
Recorder 104f





0
0
0
0


Call1
Call1
0
0


Call1, Call2
Call1
Call2
0


Call1, Call3
Call1
0
Call3


Call1, Call3, Call4
Call1, Call4
0
Call3


Call3, Call4, Call5
Call4
Call5
Call3


Call3, Call4
Call4
0
Call3


Call3
0
0
Call3









As illustrated, as communications are received at the load balancer, the round robin algorithm can automatically route calls to a recorder in a manner that provides a substantially balanced workload to each recorder. More specifically, the round robin algorithm can be configured to allocate calls based on past recorder utilization. In other words, the round robin algorithm can be configured to route the most recently received call to recorders in a continuously repeating sequence. While the round robin algorithm may be desirable in certain configurations, a weighted round robin algorithm may be used to route recording traffic in other configurations.









TABLE 2







Weighted Round Robin










Calls Active
Recorder 104d
Recorder 104e
Recorder 104f





0
0
0
0


Call1
Call1
0
0


Call1, Call2
Call1
Call2
0


Call1, Call3
Call1
0
Call3


Call1, Call3, Call4
Call1
Call4
Call3


Call3, Call4, Call5
Call5
Call4
Call3


Call3, Call4
0
Call4
Call3


Call3
0
0
Call3









The call distribution in Table 2 shows that the weighted round robin algorithm considers the load on each of the recorders before routing the communication data (e.g., real time packet (RTP)) flow to the recorders. In other words, the algorithm can be configured to determine the recorder(s) that are currently utilized less than other recorders. This can result in providing a substantially balanced distribution of calls across the recorders, in that the least utilized recorder receives the call. If there are two (or more) recorders with equal current utilization, the weighted round robin algorithm can route the newly received call to the recorder next in the sequence (similar to the round robin algorithm discussed above). This means that, depending on the particular configuration, hard-disk space for storing recording data (e.g., at data storage 208) can be utilized in a roughly even manner.









TABLE 3







Source-Destination










Calls Active
Recorder 104d
Recorder 104e
Recorder 104f





0
0
0
0


Call1
Call1
0
0


Call1, Call2
Call1
Call2
0


Call1, Call3
Call1
0
Call3


Call1, Call3, Call4
Call1
0
Call3


Call3, Call4, Call5
Call5 (assuming
Call4
Call3



call1 finishes before





call5 starts and is





made between the





same extension and





gateway as call 1)




Call3, Call4, Call5,
Call5, Call6, Call7
Call4
Call3


Call6, Call7





Call3, Call4
0
Call4
Call3


Call3
0
0
Call3









While the above described round robin algorithm and weighted round robin algorithm can be utilized for many recording environments, when call data is received at the load balancer in different data streams (i.e., the communication data sent from a communications device is received in a different data stream than the communication data received at the communications device), a source-destination algorithm may be used. More specifically, if the endpoint of a VoIP call (e.g., communications device 102) receives and sends the communications data (e.g., RTP data) on different port numbers, the source-destination load balancing algorithm may be used. The source destination algorithm can more easily handle recording in such an environment, as call streams from the same communication can be sent to different recorders and provide a roughly even distribution of calls for the recorders.



FIG. 3 is an exemplary network diagram illustrating use of a fail-over recorder in a network configuration, such as the configuration from FIG. 2. More specifically, in addition to recorders 104d, 104e, and 104f, the network configuration of FIG. 3 also includes a fail-over recorder 104g. This recorder can be configured with the same functionality recorders 104d, 104e, and 104f, however, this recorder may be configured for use when one or more of the recorders 104d, 104e, and 104e malfunction (or otherwise are not being used). In such a scenario, the fail-over recorder 106g can automatically begin recording in response to detecting the malfunction occurs. Additionally, if the control data is being provided to all recorders (including fail-over recorder 106g), the transition to using the fail-over recorder 106g can be made with minimal data loss.


Additionally, while the fail-over recorder can be kept idle when there is no recorder malfunction, this is a nonlimiting example. More specifically, other embodiments can utilize at least a portion of the fail-over recorder's functionality when the fail-over recorder 106g is not otherwise in use. Additionally, while FIG. 3 illustrates the fail over recorder in N+1 fail-over protection (where N represents the total number of recorders, and 1 indicates the number of recorders available for fail-over), as one of ordinary skill in the art will understand, this disclosure can be interpreted to include N+M fail-over protection, where M can be any number of recorders available for fail-over. One should also note that with the above described fail-over protection employed, a network administrator may remove the malfunctioning recorder without affecting the remaining recorders 104, load balancer 206, and/or other network components.


Additionally, one should note that fail-over protection can be utilized in response to the load balancer 206 detecting a malfunction with a recorder (e.g., dead network cable). Other embodiments can include logic related to the recorder 104 for sending a signal to the load balancer 206 indicating that the recorder is to be taken out of service. Still other embodiments include logic related to the recorder 104 being configured to disable the connection with the load balancer 206 such that the load balancer 206 can detect that the link to that recorder 104 is dead.


Additional elements to the above described network configuration can include health checking logic (and/or watchdogs), where failure of one or more logic components (e.g., software) may be used to signal to the load balancer 206 to take that recorder out of service. Still other embodiments include using redundant recorders to smooth the load of data (e.g., receiving roughly equal amounts of data at each recorder) even when no recorder has failed. This can provide an increased use of available resources and ensure that all recorders are functional. In such a configuration, no one recorder is the “fail-over recorder,” as any and/or all of the recorders can provide the desired fail-over protection. This can provide more redundant capacity into the network and provide greater performance since normal operational traffic is spread evenly across the available resources.


One should also note that in at least one embodiment call data can be preserved when a call is transferred from a first recorder to a second recorder. As a nonlimiting example, recorder 104f can be configured to record a communication between communications device 102a and communications device 102f. If a determination is made that it is more preferable that recorder 104g record the communication (e.g., recorder 104f fails, bandwidth issues with recorder 104f, etc.) the load balancer can be configured to send subsequently received data to recorder 104g. As one of ordinary skill in the art will understand, recorder 104f recorded a portion of the communication and recorder 104g recorded a portion of the communication. As such, the configuration of FIG. 3 can be configured to stitch together the two portions of the recorded communication such that, upon retrieval, the recorded data is viewed as a single recording. Additionally, depending on the particular configuration, this concept can be extended to any number of recorders.



FIG. 4 is an exemplary block diagram illustrating various components in the load balancer from FIG. 2. Generally, in terms of hardware architecture, as shown in FIG. 4, the load balancer 206 includes a processor 482, volatile and nonvolatile memory 484, data storage 495, and one or more input and/or output (I/O) device interface(s) 496 that are communicatively coupled via a local interface 492. The local interface 492 can include, for example but not limited to, one or more buses or other wired or wireless connections. The local interface 492 may have additional elements, which are omitted for simplicity, such as controllers, buffers (caches), drivers, repeaters, and receivers to enable communications. Further, the local interface 492 may include address, control, and/or data connections to enable appropriate communications among the aforementioned components. The processor 482 may be a hardware device for executing software, particularly software stored in volatile and nonvolatile memory 484.


The processor 482 can be any custom made or commercially available processor, a central processing unit (CPU), an auxiliary processor among several processors associated with the load balancer 206, a semiconductor based microprocessor (in the form of a microchip or chip set), a macroprocessor, or generally any device for executing software instructions. Examples of suitable commercially available microprocessors are as follows: a PA-RISC series microprocessor from Hewlett-Packard® Company, an 80×86 or Pentium® series microprocessor from Intel® Corporation, a PowerPC® microprocessor from IBM®, a Sparc® microprocessor from Sun Microsystems®, Inc, or a 68xxx series microprocessor from Motorola® Corporation.


The volatile and nonvolatile memory 484 can include any one or combination of volatile memory elements (e.g., random access memory (RAM, such as DRAM, SRAM, SDRAM, etc.)) and nonvolatile memory elements (e.g., ROM, hard drive, tape, CDROM, etc.). Moreover, the memory 484 may incorporate electronic, magnetic, optical, and/or other types of storage media. Note that the volatile and nonvolatile memory 484 can have a distributed architecture, where various components are situated remote from one another, but can be accessed by the processor 482. Additionally volatile and nonvolatile memory 484 can also include an first routing software 486, second routing software 487 and/or third routing software 499. Additionally, the volatile and nonvolatile memory can include an operating system (not shown), depending on the particular configuration.


A nonexhaustive list of examples of suitable commercially available operating systems is as follows: (a) a Windows® operating system available from Microsoft® Corporation; (b) a Netware® operating system available from Novell®, Inc.; (c) a Macintosh® operating system available from Apple® Computer, Inc.; (d) a UNIX operating system, which is available for purchase from many vendors, such as the Hewlett-Packard® Company, Sun Microsystems®, Inc., and AT&T® Corporation; (e) a LINUX operating system, which is freeware that is readily available on the Internet 100; (f) a run time Vxworks® operating system from WindRiver® Systems, Inc.; or (g) an appliance-based operating system, such as that implemented in handheld computers or personal data assistants (PDAs) (e.g., PalmOS® available from Palm® Computing, Inc., and Windows CE® available from Microsoft® Corporation). The operating system can be configured to control the execution of other computer programs and provides scheduling, input-output control, file and data management, memory management, and communication control and related services.


A system component embodied as software may also be construed as a source program, executable program (object code), script, or any other entity comprising a set of instructions to be performed. When constructed as a source program, the program is translated via a compiler, assembler, interpreter, or the like, which may or may not be included within the volatile and nonvolatile memory 484, so as to operate properly in connection with the Operating System.


The Input/Output devices that may be coupled to system I/O Interface(s) 496 may include input devices, for example but not limited to, network interfaces, a keyboard, mouse, scanner, microphone, etc. Further, the Input/Output devices may also include output devices, for example but not limited to, network interfaces, a printer, display, etc. Finally, the Input/Output devices may further include devices that communicate both as inputs and outputs, for instance but not limited to, a modulator/demodulator (modem; for accessing another device, system, or network), a radio frequency (RF) or other transceiver, a telephonic interface, a bridge, a router, etc. Additionally, a display interface (not shown) may facilitate connection to a display monitor or other display device.


If the load balancer 206 includes a personal computer, workstation, or the like, the software in the volatile and nonvolatile memory 484 may further include a basic input output system (BIOS) (omitted for simplicity). The BIOS is a set of software routines that initialize and test hardware at startup, start the Operating System, and support the transfer of data among the hardware devices. The BIOS is stored in ROM so that the BIOS can be executed when the load balancer 206 is activated.


When the load balancer 206 is in operation, the processor 482 is configured to execute software stored within the volatile and nonvolatile memory 484, to communicate data to and from the volatile and nonvolatile memory 484, and to generally control operations of the load balancer 206 pursuant to the software. Software in memory, in whole or in part, are read by the processor 482, perhaps buffered within the processor 482, and then executed.


Additionally, as stated above, while reference in FIG. 4 is made to load balancer 206, similar architecture can apply to one or more of the components in the communications network. More specifically, depending on the particular configuration, a switch, recorder, communications device, etc. may include one or more of the components illustrated in FIG. 4. Further due to the differing functionality for these devices, a variance in the hardware and/or software components may be expected.



FIG. 5 is a flowchart illustrating an embodiment of a method or exemplary steps for passively recording data from a communication in the network from FIG. 2. The first step in the nonlimiting example of FIG. 5 is to receive control data related to a communication (block 530). More specifically, referring back to FIG. 2, in at least one embodiment, when a user operating communications device 102b establishes a communication with a user on communications device 102e, communication data is sent between the two communications devices (and to load balancer 206). The communication data can include data related to voice, pictures, video, and/or other data for facilitating the communication. In addition to the communication data, control data may also be sent between the communication devices 102 (and load balancer 206). The control data can include data related to the dialed number, the IP address of the communications devices 102, the time of call, and/or other data.


The load balancer 206 can then receive communication data from a communication (block 532), as discussed above. Upon receiving the control data from any of a plurality of communications that may be taking place in the network, (as illustrated in block 530), the load balancer 206 can be configured to provide one or more of the recorders 104 with the control data. In at least one embodiment the load balancer 206 provides all recorders 104d, 104e, and 104f with the control data (block 534). The load balancer 206 can then determine to which recorder 104 the communication data is to be routed (block 536). As discussed above, depending on the particular embodiment, any of a plurality of routing algorithms can be used, including but not limited to the round robin algorithm, the weighted round robin algorithm, and the source-destination algorithm. Once the recorder is determined, the load balancer 206 can route the communication data to the determined recorder.



FIG. 6 is a flowchart illustrating exemplary steps for passively recording data in independent streams, similar to the flowchart from FIG. 5. The first step in the nonlimiting example of FIG. 6 is for the load balancer 206 to receive control data related to a communication (block 630). Next, the load balancer 206 can receive a first stream of communication data (block 634). The load balancer 206 can then receive a second stream of communication data (block 636). As discussed above, depending on the particular configuration, the communication can be received by the load balancer 206 via one stream, or by more than one stream. In this particular nonlimiting example, the communication data is received in a plurality of different streams.


The load balancer 206 can then provide the recorders with the received control data (block 638). The load balancer 206 can then determine to which recorder the first communication stream data is to be routed (block 640) and determine to which recorder the second communication stream is to be routed (block 642). The load balancer 206 can then route the first communication stream to the first determined recorder (block 644) and route the second communication stream to the second determined recorder (block 646).



FIG. 7 is a flowchart illustrating exemplary steps for providing fail-over functionality in a network, such as the network from FIG. 3. The first step in the nonlimiting example of FIG. 7 is for the load balancer 206 to receive data related to a communication (block 730). As discussed above, the data can include control data, as well as communication data. Once the data is received, the load balancer can send the received control data to all recorders 104 coupled to the load balancer 206 (block 732). The load balancer 206 can then determine to which recorder to send the received communication data (block 734) and then send communication data to a recorder (block 736). The load balancer 206 can then detect a malfunction with the recorder (block 738). The load balancer 206 can make this determination in any of a plurality of ways including the load balancer 206 detecting a malfunction with a recorder (e.g., dead network cable). Other embodiments can provide that logic related to the recorder 104 sends a signal to the load balancer 206 indicating that the recorder is to be taken out of service. Still other embodiments provide that logic related to the recorder 104 disables the connection with the load balancer 206 such that the load balancer 206 can detect that the link to that recorder 104 is dead. Regardless of the technique for detecting the malfunction, the recorder can then begin routing the communication data to the fail-over recorder (block 740).


One should also note, that while the load balancer can be configured to detect errors in recorders, at least one embodiment can include a recorder with logic to self detect errors with the recorder. As a nonlimiting example, a recorder can be configured with logic for monitoring various hardware and/or software components using Intelligent Platform Management Interface (IPMI) and/or other protocol.


As one of ordinary skill in the art will understand, while the flowcharts discussed in this disclosure are illustrated as occurring in a particular order, this is a nonlimiting example. The steps in this disclosure can occur in any of a plurality of different orders, and may include more or fewer steps than illustrated herein. Additionally, while the steps in this disclosure relate to steps that are performed by load balancer 206, this is also a nonlimiting example. As one of ordinary skill in the art will understand, depending on the particular configuration, one or more of the steps can be performed by a different component.


One should note that the flowcharts included herein show the architecture, functionality, and/or operation of a possible implementation of logic. In this regard, each block can be interpreted to represent a hardware component, a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that in some alternative implementations, the functions noted in the blocks may occur out of the order. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved.


One should also note that any of the programs listed herein, which can include an ordered listing of executable instructions for implementing logical functions, can be embodied in any computer-readable medium for use by or in connection with an instruction execution system, apparatus, or device, such as a computer-based system, processor-containing system, or other system that can fetch the instructions from the instruction execution system, apparatus, or device and execute the instructions. In the context of this document, a “computer-readable medium” can be any means that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The computer readable medium can be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device. More specific examples (a nonexhaustive list) of the computer-readable medium could include an electrical connection (electronic) having one or more wires, a portable computer diskette (magnetic), a random access memory (RAM) (electronic), a read-only memory (ROM) (electronic), an erasable programmable read-only memory (EPROM or Flash memory) (electronic), an optical fiber (optical), and a portable compact disc read-only memory (CDROM) (optical). In addition, the scope of the certain embodiments of this disclosure can include embodying the functionality described in logic embodied in hardware or software-configured mediums.


It should be emphasized that the above-described embodiments are merely possible examples of implementations, merely set forth for a clear understanding of the principles of this disclosure. Many variations and modifications may be made to the above-described embodiment(s) without departing substantially from the spirit and principles of the disclosure. All such modifications and variations are intended to be included herein within the scope of this disclosure.

Claims
  • 1. A load balancing component coupled to a communications network, the load balancing component comprising: a memory;a network interface; anda processor, wherein the processor executes: logic configured to route communication data to a plurality of recorders;logic configured to passively receive communication data related to a communication, wherein the communication data comprises a first stream and a second stream related to the same communication;logic configured to determine to which recorders of the plurality of recorders the received communication data is to be routed in accordance with the streams associated with the communication data and in order to achieve a balanced utilization of the plurality of recorders, the logic configured to determine to which recorders of the plurality of recorders the received communication data is to be routed includes a determination based on a past utilization of the plurality of recorders; andlogic configured to route the communication data to the determined recorders in accordance with a weighting based on the past utilization, the weighting being related to an amount of utilization of each of the plurality of recorders, wherein the first stream is routed to a different recorder than the second stream.
  • 2. The load balancing component of claim 1, further comprising logic configured to facilitate storage of the received communication data.
  • 3. The load balancing component of claim 1, wherein the logic configured to determine to which recorders the received communication data is routed includes logic configured to determine current utilization of at least one of the plurality of recorders.
  • 4. The load balancing component of claim 1, further comprising logic configured to receive control data related to the communication.
  • 5. The load balancing component of claim 4, further comprising logic configured to send the received control data to the plurality of recorders.
  • 6. The load balancing component of claim 1, wherein the communication includes a Voice over Internet Protocol (VoIP) communication.
  • 7. The load balancing component of claim 1, wherein recorders with lesser amounts of utilization are assigned greater weights than recorders with greater amounts of utilization.
  • 8. A method for routing communication data to a plurality of recorders, comprising: passively receiving communication data related to a communication, wherein the communication data comprises a first stream and a second stream related to the same communication;determining to which recorders of the plurality of recorders the received communication data is to be routed according to the streams associated with the communication data, a source-destination algorithm, and a determination based on a past utilization of the plurality of recorders; androuting the communication data to the determined recorders in accordance with a weighting based on the past utilization, the weighting being related to an amount of utilization of each of the plurality of recorders, wherein the first stream is routed to a different recorder than the second stream.
  • 9. The method of claim 8, further comprising facilitating storage of the received communication data.
  • 10. The method of claim 8, wherein determining to which recorders the received communication data is to be routed includes determining an amount of current utilization of at least one of the plurality of recorders.
  • 11. The method of claim 8, further comprising receiving control data related to the communication.
  • 12. The method of claim 8, wherein the communication includes a Voice over Internet Protocol (VoIP) communication.
  • 13. A system for routing communication data to a plurality of recorders, comprising: a load balancing component coupled to the plurality of recorders, the load balancing component being passively coupled to a communication device, the load balancing component being configured to receive data related to a communication, wherein the received data comprises a first stream and a second stream related to the same communication, and determine recorders of the plurality of recorders for sending the received data in accordance with the streams associated with the received data and a determination based on a past utilization of the plurality of recorders, wherein at least one of the plurality of recorders is a fail-over recorder, and further wherein the first stream is sent to a different recorder than the second stream in accordance with a weighting based on the past utilization, the weighting being related to an amount of utilization of the plurality of recorders.
  • 14. The system of claim 13, further comprising a data storage unit coupled to at least one of the plurality of recorders, the data storage unit being configured to receive data from at least one of the recorders.
  • 15. The system of claim 13, wherein the load balancing component is further configured to facilitate fail-over protection.
  • 16. The system of claim 13, further comprising means for recording at least a portion of the received data.
US Referenced Citations (175)
Number Name Date Kind
3594919 De Bell et al. Jul 1971 A
3705271 De Bell et al. Dec 1972 A
4510351 Costello et al. Apr 1985 A
4684349 Ferguson et al. Aug 1987 A
4694483 Cheung Sep 1987 A
4763353 Canale et al. Aug 1988 A
4815120 Kosich Mar 1989 A
4924488 Kosich May 1990 A
4953159 Hayden et al. Aug 1990 A
5016272 Stubbs et al. May 1991 A
5101402 Chiu et al. Mar 1992 A
5117225 Wang May 1992 A
5210789 Jeffus et al. May 1993 A
5239460 LaRoche Aug 1993 A
5241625 Epard et al. Aug 1993 A
5267865 Lee et al. Dec 1993 A
5299260 Shaio Mar 1994 A
5311422 Loftin et al. May 1994 A
5315711 Barone et al. May 1994 A
5317628 Misholi et al. May 1994 A
5347306 Nitta Sep 1994 A
5388252 Dreste et al. Feb 1995 A
5396371 Henits et al. Mar 1995 A
5432715 Shigematsu et al. Jul 1995 A
5465286 Clare et al. Nov 1995 A
5475625 Glaschick Dec 1995 A
5485569 Goldman et al. Jan 1996 A
5491780 Fyles et al. Feb 1996 A
5499291 Kepley Mar 1996 A
5535256 Maloney et al. Jul 1996 A
5572652 Robusto et al. Nov 1996 A
5577112 Cambray et al. Nov 1996 A
5590171 Howe et al. Dec 1996 A
5597312 Bloom et al. Jan 1997 A
5619183 Ziegra et al. Apr 1997 A
5696906 Peters et al. Dec 1997 A
5717879 Moran et al. Feb 1998 A
5721842 Beasley et al. Feb 1998 A
5742670 Bennett Apr 1998 A
5748499 Trueblood May 1998 A
5778182 Cathey et al. Jul 1998 A
5784452 Carney Jul 1998 A
5790798 Beckett, II et al. Aug 1998 A
5796952 Davis et al. Aug 1998 A
5809247 Richardson et al. Sep 1998 A
5809250 Kisor Sep 1998 A
5825869 Brooks et al. Oct 1998 A
5835572 Richardson, Jr. et al. Nov 1998 A
5862330 Anupam et al. Jan 1999 A
5864772 Alvarado et al. Jan 1999 A
5884032 Bateman et al. Mar 1999 A
5907680 Nielsen May 1999 A
5918214 Perkowski Jun 1999 A
5923746 Baker et al. Jul 1999 A
5933811 Angles et al. Aug 1999 A
5944791 Scherpbier Aug 1999 A
5948061 Merriman et al. Sep 1999 A
5958016 Chang et al. Sep 1999 A
5964836 Rowe et al. Oct 1999 A
5978648 George et al. Nov 1999 A
5982857 Brady Nov 1999 A
5987466 Greer et al. Nov 1999 A
5990852 Szamrej Nov 1999 A
5991373 Pattison et al. Nov 1999 A
5991796 Anupam et al. Nov 1999 A
6005932 Bloom Dec 1999 A
6009429 Greer et al. Dec 1999 A
6014134 Bell et al. Jan 2000 A
6014647 Nizzari et al. Jan 2000 A
6018619 Allard et al. Jan 2000 A
6035332 Ingrassia et al. Mar 2000 A
6038544 Machin et al. Mar 2000 A
6039575 L'Allier et al. Mar 2000 A
6057841 Thurlow et al. May 2000 A
6058163 Pattison et al. May 2000 A
6061798 Coley et al. May 2000 A
6072860 Kek et al. Jun 2000 A
6076099 Chen et al. Jun 2000 A
6078894 Clawson et al. Jun 2000 A
6091712 Pope et al. Jul 2000 A
6108711 Beck et al. Aug 2000 A
6122665 Bar et al. Sep 2000 A
6122668 Teng et al. Sep 2000 A
6130668 Stein Oct 2000 A
6138139 Beck et al. Oct 2000 A
6144991 England Nov 2000 A
6146148 Stuppy Nov 2000 A
6151622 Fraenkel et al. Nov 2000 A
6154771 Rangan et al. Nov 2000 A
6157808 Hollingsworth Dec 2000 A
6171109 Ohsuga Jan 2001 B1
6182094 Humpleman et al. Jan 2001 B1
6195679 Bauersfeld et al. Feb 2001 B1
6201948 Cook et al. Mar 2001 B1
6211451 Tohgi et al. Apr 2001 B1
6225993 Lindblad et al. May 2001 B1
6230197 Beck et al. May 2001 B1
6236977 Verba et al. May 2001 B1
6244758 Solymar et al. Jun 2001 B1
6282548 Burner et al. Aug 2001 B1
6286030 Wenig et al. Sep 2001 B1
6286046 Bryant Sep 2001 B1
6288753 DeNicola et al. Sep 2001 B1
6289340 Purnam et al. Sep 2001 B1
6301462 Freeman et al. Oct 2001 B1
6301573 McIlwaine et al. Oct 2001 B1
6324282 McIlwaine et al. Nov 2001 B1
6347374 Drake et al. Feb 2002 B1
6351467 Dillon Feb 2002 B1
6353851 Anupam et al. Mar 2002 B1
6360250 Anupam et al. Mar 2002 B1
6370547 House et al. Apr 2002 B1
6388584 Dorward et al. May 2002 B1
6404857 Blair et al. Jun 2002 B1
6411989 Anupam et al. Jun 2002 B1
6418471 Shelton et al. Jul 2002 B1
6459787 McIlwaine et al. Oct 2002 B2
6487195 Choung et al. Nov 2002 B1
6493758 McLain Dec 2002 B1
6502131 Vaid et al. Dec 2002 B1
6510220 Beckett, II et al. Jan 2003 B1
6535909 Rust Mar 2003 B1
6542602 Elazer Apr 2003 B1
6546405 Gupta et al. Apr 2003 B2
6560328 Bondarenko et al. May 2003 B1
6583806 Ludwig et al. Jun 2003 B2
6606657 Zilberstein et al. Aug 2003 B1
6665644 Kanevsky et al. Dec 2003 B1
6674447 Chiang et al. Jan 2004 B1
6683633 Holtzblatt et al. Jan 2004 B2
6697858 Ezerzer et al. Feb 2004 B1
6724887 Eilbacher et al. Apr 2004 B1
6738456 Wrona et al. May 2004 B2
6757361 Blair et al. Jun 2004 B2
6772396 Cronin et al. Aug 2004 B1
6775377 McIlwaine et al. Aug 2004 B2
6792575 Samaniego et al. Sep 2004 B1
6810414 Brittain Oct 2004 B1
6820083 Nagy et al. Nov 2004 B1
6823384 Wilson et al. Nov 2004 B1
6870916 Henrikson et al. Mar 2005 B2
6901438 Davis et al. May 2005 B1
6904017 Meempat et al. Jun 2005 B1
6959078 Eilbacher et al. Oct 2005 B1
6965886 Govrin et al. Nov 2005 B2
20010000962 Rajan May 2001 A1
20010032335 Jones Oct 2001 A1
20010043697 Cox et al. Nov 2001 A1
20020038363 MacLean Mar 2002 A1
20020052948 Baudu et al. May 2002 A1
20020059451 Haviv May 2002 A1
20020065911 Von Klopp et al. May 2002 A1
20020065912 Catchpole et al. May 2002 A1
20020128925 Angeles Sep 2002 A1
20020143925 Pricer et al. Oct 2002 A1
20020156887 Hashimoto Oct 2002 A1
20020165954 Eshghi et al. Nov 2002 A1
20030055883 Wiles et al. Mar 2003 A1
20030079020 Gourraud et al. Apr 2003 A1
20030144900 Whitmer Jul 2003 A1
20030154240 Nygren et al. Aug 2003 A1
20030210663 Everson et al. Nov 2003 A1
20040088412 John et al. May 2004 A1
20040100507 Hayner et al. May 2004 A1
20040120501 Celi et al. Jun 2004 A1
20040165717 McIlwaine et al. Aug 2004 A1
20040247205 Nagaya et al. Dec 2004 A1
20040260873 Watanabe Dec 2004 A1
20050138560 Lee et al. Jun 2005 A1
20050278453 Cherkasova Dec 2005 A1
20050283818 Zimmermann et al. Dec 2005 A1
20060112247 Ramany et al. May 2006 A1
20060203807 Kouretas et al. Sep 2006 A1
20070083727 Johnston et al. Apr 2007 A1
20080240686 Nagaya et al. Oct 2008 A1
Foreign Referenced Citations (6)
Number Date Country
0453128 Oct 1991 EP
0773687 May 1997 EP
0989720 Mar 2000 EP
2369263 May 2002 GB
WO 9843380 Nov 1998 WO
WO 0016207 Mar 2000 WO