Accelerated removal from service of a signal processor at a media gateway

A method is disclosed that enables accelerating the removal from service of a signal processor at a media gateway. In accordance with the illustrative embodiment of the present invention, the media gateway receives an indication to remove one of its digital signal processors from service. Instead of waiting for all of the calls that are using the signal processor to come to an end, the media gateway proactively moves the packet streams from the signal processor to one or more other signal processors resident at the gateway. Advantageously, an effort is made to avoid having to inform the corresponding media gateway controller of the move, thereby minimizing any discontinuity in each moved packet stream.

FIELD OF THE INVENTION

The present invention relates to telecommunications in general, and, more particularly, to moving packet streams that are being handled by a first signal processor to one or more other signal processors at a media gateway.

BACKGROUND OF THE INVENTION

A modern telecommunications system often comprises one or more switched telephone networks and one or more Internet Protocol-based packet networks. These two different types of networks are interconnected by a media gateway, which acts as a translator between the two types of networks. The media gateway enables multimedia communications, such as voice and video, over multiple transport protocols end to end.

Because the media gateway connects different types of networks, one of its main functions is to convert between the different transmission and coding techniques used across the different networks. For example, a Voice-over-Internet-Protocol-capable (VoIP-capable) media gateway performs the conversion between time division multiplexed voice media that originate at a switched telephone network telecommunications terminal and VoIP datagram media that is intended for an Internet Protocol network terminal, as part of a telephone conversation between two parties; of course, the media gateway has to perform the conversion in the other direction as well. Other functions that the media gateway provides are echo cancellation, tone detection, tone generation (e.g., dual tone multi-frequency tones, etc.), and conferencing.

Since a packet stream that is received from the Internet Protocol network comprises data packets and control packets, which contain addressing information, the VoIP media gateway converts the received packets to a time division multiplexed stream while processing the control packets. The media gateway must perform the conversion in a timely manner to minimize the possibility of packet loss, which the listening party on a call might perceive. To handle all of the packets responsively and without unacceptable delay or jitter, the media gateway uses digital signal processors, which are dedicated devices that are capable of the high-speed packet processing that is required for the conversion. Each digital signal processor comprises multiple processing resources, such as processing channels, to handle multiple calls and the different conversion formats across the calls. For example, the conversion formats might be distinguished from one another by codec type, encryption algorithm, payload values, addressing information, or redundancy in the information transmitted. Protocol standards and formulas exist that govern these properties, such as G.711 and G.729 compression/decompression algorithms. Similarly, the media gateway must also perform the conversion in the other direction from a time division multiplexed stream to Internet Protocol packets in a timely manner.

One or more media gateways are controlled by a media gateway controller, which provides the call control and signaling functionality for each media gateway and across media gateways. Communication between media gateways and media gateway controllers is achieved by means of protocols such as H.248, Media Gateway Control Protocol (MGCP), and so forth. During a call initialization that involves an Internet Protocol (IP) terminal, the media gateway controller provides to the IP terminal the IP address of the media gateway resource that is handling the call. This enables the IP terminal to specify the proper destination address of the packets that it originates and to recognize the packets that are being sent to the terminal. Alternatively, instead of a call involving an IP terminal, the call could involve another media gateway that exchanges packets with the aforementioned media gateway resource that is handling the call.

On occasion, it might become necessary, under certain conditions, to remove an in-service digital signal processor from service. For example, when a technician has to diagnose or physically replace the signal processor, a technician will typically need to “busy out” the processor. What makes this difficult is that the signal processor might be handling the packet streams that correspond to one or more currently active calls between a telecommunications terminal in one type of network, such as the IP network, and a terminal in another type of network, such as the switched telephone network, described earlier. Techniques in the prior art require that the technician issue a graceful busy-out command for a selected signal processor, only to have to wait for its calls to terminate before the processor can be fully removed from service. This can be a lengthy procedure, especially if some calls that are being handled by the selected signal processor are long in duration.

What is needed is a technique to accelerate the removal from service of a signal processor at a media gateway, without some of the disadvantages in the prior art.

SUMMARY OF THE INVENTION

The present invention enables accelerating the removal from service of a signal processor at a media gateway, without some of the disadvantages in the prior art. In accordance with the illustrative embodiment of the present invention, the media gateway receives an indication to remove one of its digital signal processors from service. Instead of waiting for all of the calls that are using the signal processor to come to an end, the media gateway proactively moves the packet streams from the signal processor to one or more other signal processors resident at the gateway. Advantageously, an effort is made to avoid having to inform the corresponding media gateway controller of the move, thereby minimizing any discontinuity in each moved packet stream.

The media gateway of the illustrative embodiment comprises multiple signal processing units, each comprising a plurality of digital signal processors and each being uniquely addressable by an Internet Protocol address. In addition, each signal processing unit has its own address space of port numbers, each number being allocable to a packet stream that is being processed by a processing resource, such as a digital signal processing channel, on the signal processing unit. By simply reassigning each port number in use on the processor being busied out (i.e., the “affected” processor on the “affected” signal processing unit) to another processor on the same signal processing unit, the media gateway of the illustrative embodiment avoids having to inform the media gateway controller; this is because only the media gateway needs to know the new assignment of each port number, in order to properly route each packet stream. And when a processing resource is available, but not on the affected signal processing unit, the media gateway of the illustrative embodiment transmits a change request message to the media gateway controller, specifying the IP address of the new signal processing unit so that the controller can inform the IP terminal of the change in IP address. By using this two-tiered approach, the media gateway is able to accelerate the moving of the packet streams to their new processing resources while minimizing discontinuities in the packet streams. As a result, the technique in the illustrative embodiment accelerates the busying-out process of the affected digital signal processor as well.

The illustrative embodiment of the present invention comprises: receiving a first indication to remove from service a first signal processor that is handling a first packet stream via a first processing resource, wherein the first processing resource is addressable by a first port number; determining, in response to receiving the first indication, whether a second signal processor is available to handle the first packet stream; and when the second signal processor is available, reassigning the first port number to a second processing resource in the second signal processor.

DETAILED DESCRIPTION

FIG. 1depicts a schematic diagram of telecommunications system100, in accordance with the illustrative embodiment of the present invention. Telecommunications system100comprises:i. media gateways101-1through101-P, wherein P is a positive integer;ii. Internet Protocol (IP) packet network102;iii. media gateway controller103;iv. IP telecommunications terminals104-1through104-Q, wherein Q is a positive integer;v. Public Switched Telephone Network (PSTN)105;vi. PSTN telecommunications terminals106-1through106-S, wherein S is a positive integer;vii. local enterprise network107; andviii. analog telecommunications terminals108-1through108-T, wherein T is a positive integer.
All of the elements depicted inFIG. 1are interconnected as shown.

Media gateway101-p, for p=1 through P, is a data-processing system that comprises media gateway functionality that is known in the art, acting as a translator between two types of networks in well-known fashion; as depicted, media gateway101-1acts as a translator between Internet Protocol network102and Public Switched Telephone Network105or between network102and local enterprise network107, which networks are described below. The salient components of media gateway101-pare described below and with respect toFIGS. 2 and 3. Media gateway101-penables multimedia communications, such as voice and video, over multiple transport protocols from one terminal in one network to another terminal in another network, in part by working in concert with media gateway controller103to set up, maintain, and terminate calls.

Because media gateway101-p, including media gateway101-1, connects different types of networks, one of its main functions is to convert between the different transmission and coding techniques uses across the different networks. In accordance with the illustrative embodiment, media gateway101-1is a Voice-over-Internet-Protocol-capable (VoIP-capable) media gateway that performs the conversion between time division multiplexed voice signals that originate at a switched telephone network telecommunications terminal, such as one of terminals106-1through106-S, and VoIP signals that are intended for an Internet Protocol network terminal, such as one of IP terminals104-1through104-Q, as part of a telephone conversation between two parties. Media gateway101-1performs the conversion in the reverse direction as well (i.e., from an IP terminal to a PSTN terminal) and is able to perform bidirectional conversion for multiple calls concurrently.

Media gateway101-1in the illustrative embodiment comprises voice packet-processing functionality. However, as those who are skilled in the art will appreciate, in some alternative embodiments of the present invention, media gateway101-pis able to process packets that contain other types of bearer information such as video.

Media gateway101-pexecutes the tasks described below and with respect toFIGS. 4 through 7in supporting the functionality of the illustrative embodiment. Although a media gateway executes the tasks of the illustrative embodiment, in some alternative embodiments another type of data-processing system can be used to execute those tasks, as those who are skilled in the art will appreciate. Furthermore, in accordance with the illustrative embodiment, media gateway101-pcommunicates with media gateway controller103via the H.248 protocol, but as those who are skilled in the art will appreciate, in some alternative embodiments media gateway101-pcan communicate in accordance with a different type of call-control protocol and can handle datagram packets other than Internet Protocol packets. In any event, it will be clear to those skilled in the art, after reading this specification, how to make and use media gateway101-p.

As depicted, media gateway101-1is interconnected with a plurality of different types of networks, including Internet Protocol Packet Network102, Public Switched Telephone Network105, and local enterprise network107. Internet Protocol packet network102comprises one or more transmission-related nodes such as routers that are used to direct data packets from one or more sources to the correct destinations of those packets. Network102is capable of handling, in well-known fashion, Internet Protocol-based messages that are transmitted among two or more Internet Protocol-capable devices such as (i) one or more IP terminals104-1through104-Q and (ii) a media gateway such as gateway101-1, or between media gateway controller103and a media gateway. Public Switched Telephone Network105comprises one or more transmission-related nodes such as switches that are used to direct call-related signals from one or more sources to the correct destinations of those signals. Network105is capable of handling, in well-known fashion, either analog or digital bearer information in circuit-switched calls among two or more devices such as (i) one or more PSTN terminals106-1through106-S and (ii) media gateway101-1. Local enterprise network107provides for local distribution of analog signals, such as in an enterprise system, and comprises wiring between media gateway101-1and analog terminals108-1through108-T.

As those who are skilled in the art will appreciate, telecommunications system100, and in particular media gateway101-p, is capable in some alternative embodiments of handling other types of networks and other combinations of networks than depicted. Furthermore, in some alternative embodiments, each network might in turn comprise additional networks, such as cellular telephone networks and local area networks that are either wired or wireless. For example, in some embodiments network102might comprise a local area network (e.g., of a business enterprise, etc.), in which one or more of IP terminals104-1through104-Q operate.

Media gateway controller103is a data-processing system that comprises media gateway controller functionality that is known in the art, controlling media gateways101-1through101-P. Media gateway controller103provides the call control and signaling functionality for each media gateway101-p, in well-known fashion. Controller103communicates with media gateways101-1through101-P via the H.248 protocol, but as those who are skilled in the art will appreciate, in some alternative embodiments controller103can communicate in accordance with a different type of call-control protocol.

In accordance with the illustrative embodiment, controller103is physically discrete from media gateways101-1through101-P. However, as those who are skilled in the art will appreciate, in some alternative embodiments, the functionality of controller103and the functionality of one or more gateways101-1through101-P might co-exist with each other (i.e., by sharing the same processor, memory, or other resources). In any event, it will be clear to those skilled in the art, after reading this specification, how to make and use media gateway controller103.

FIG. 1also depicts multiple telecommunications terminals of various types. Internet Protocol-capable endpoints such as SIP desksets and laptop-based or desktop-based softphones are represented by terminals104-1through104-Q. Plain Old Telephone Service (POTS) terminals, Integrated Services Digital Network (ISDN) phones, cell phones, and other PSTN-associated terminals are represented by terminals106-1through106-S. Analog enterprise desksets are represented by terminals108-1through108-T. As those who are skilled in the art will appreciate, the present invention is also applicable to other combinations of terminals than depicted.

FIG. 2depicts the salient components of media gateway101-p, in accordance with the illustrative embodiment of the present invention. Media gateway101-pcomprises main controller201, memory202, packet processor/interface203, analog telephone interface204, switched telephone network interface205, and time division multiplexed (TDM) bus206, interconnected as shown.

Main controller201is a general-purpose processor that is capable of controlling processor/interface203, interface204, interface205, and TDM bus206. Main controller201is also capable of executing instructions stored in memory202, reading data from and writing data into memory202, and executing the tasks described below and with respect toFIGS. 4 through 7. In some alternative embodiments of the present invention, main controller201might be a special-purpose processor. In any event, it will be clear to those skilled in the art, after reading this specification, how to make and use main controller201.

Memory202stores the instructions and data used by main controller201. Memory202might be any combination of dynamic random-access memory (RAM), flash memory, disk drive memory, and so forth. It will be clear to those skilled in the art, after reading this specification, how to make and use memory202.

Packet processor/interface203receives Internet Protocol datagram packets from packet network102, converts the information encoded in the packets, and forwards the converted information to TDM bus206, in well-known fashion. Packet processor/interface203also receives time division multiplexed packets from TDM bus206, converts the information encoded in the packets, and forwards the converted information to packet network102, in well-known fashion. The salient components of packet processor/interface203are described below and with respect toFIG. 3. It will be clear to those skilled in the art, after reading this specification, how to make and use packet processor/interface203.

Analog telephone interface204receives signals from local enterprise network107and forwards the information encoded in those signals to TDM bus206, in well-known fashion. Interface204also receives signals from TDM bus206and forwards the information encoded in those signals to network107, in well-known fashion. It will be clear to those skilled in the art, after reading this specification, how to make and use analog telephone interface204.

Switched Telephone Network interface205receives signals from PSTN105and forwards the information encoded in those signals to TDM bus206, in well-known fashion. Interface205also receives signals from TDM bus206and forwards the information encoded in those signals to network105, in well-known fashion. It will be clear to those skilled in the art, after reading this specification, how to make and use interface205.

TDM bus206carries isochronous traffic between processor/interface203and interface204or205, in well-known fashion. It will be clear to those skilled in the art, after reading this specification, how to make and use TDM bus206.

FIG. 3depicts the salient components of packet processor/interface203, in accordance with the illustrative embodiment of the present invention. Processor/interface203comprises unit controller301and signal processing units302-1through302-M, wherein M is a positive integer, and are interconnected as shown. In turn, each signal processing unit302-m, for m=1 through M, comprises digital signal processors303-m-1through303-m-N, wherein N is a positive integer.

Unit controller301is a general-purpose processor that is capable of controlling signal processing units302-1through302-M. Unit controller301is also capable of executing the tasks described below and with respect toFIGS. 4 through 7. As those who are skilled in the art will appreciate, after reading this specification, in various embodiments unit controller301might execute all of the tasks described below or only some of those tasks with main controller201executing the rest, or main controller201instead might execute all of those tasks. Furthermore, in some alternative embodiments of the present invention, unit controller301might be a special-purpose processor. In any event, it will be clear to those skilled in the art, after reading this specification, how to make and use unit controller301.

Signal processing unit302-mis capable of converting the packets it receives, either from packet network102or TDM bus206, into a different, predetermined format. Since a packet stream that is received, for example, from the IP packet network102comprises data packets and control packets, which contain addressing information, unit302-mconverts the received packets to a voice data stream of isochronous packets that are suitable for TDM bus206, while processing the control packets. Unit302-mmust perform the conversion in a timely manner to minimize the possibility of packet loss. To handle all of the packets responsively and without delay or jitter, unit302-muses digital signal processors303-m-1through303-m-N, which are dedicated devices that are capable of the high-speed packet processing that is required for the conversion. Each digital signal processor303-m-nis capable of providing K processing resources such as processing channels, wherein K is a positive integer, in order to handle multiple calls and the different conversion formats across the calls. For example, each conversion format might be distinguished by a different packet size at the datagram packet side of the processing. Protocol standards exist that govern the different packet sizes, as well as other properties such as compression and decompression (as specified in G.711, G.729, and so forth), encryption, and redundancy. Similarly, unit302-mmust also perform the conversion in the other direction from a time division multiplexed stream to Internet Protocol packets in a timely manner, as well as control the interval between the creation and transmission of packets.

Unit302-mis uniquely addressable via its own Internet Protocol address. Furthermore, each processing resource of digital signal processor303-m-nwithin unit302-mis accessible by using a User Datagram Protocol (UDP) port number that has been assigned to it by its host media gateway. The UDP port numbers can be reused across signal processor units302-1through302-M because each signal processor unit has a different port number address space, since each unit has its own Internet Protocol address assigned to it. Therefore, each processing resource of digital signal processor303-m-nis uniquely addressable by the combination of both (i) the Internet Protocol address of unit302-mand (ii) the port number assigned to the resource. As those who are skilled in the art will appreciate, in some alternative embodiments, a different addressing scheme can be used—for instance, one that uses SIP addresses with port numbers or one that uses IP addresses with a resource identifier other than UDP port number.

It will be clear to those skilled in the art, after reading this specification, how to make and use signal processing unit302-mand its digital signal processors303-m-1through303-m-N.

FIG. 4depicts a flowchart of the salient tasks that involve removing selected digital signal processor303-m-nfrom service, in accordance with the illustrative embodiment of the present invention. For illustrative purposes, digital signal processor303-1-2at media gateway101-1is the signal processor selected to be removed from service. As those who are skilled in the art will appreciate, some of the tasks that appear inFIG. 4can be performed in parallel or in a different order than that depicted.

At task401, media gateway101-1receives an indication to remove from service digital signal processor303-1-2, in well-known fashion. For example, the indication could have been invoked by a technician, by another software program, by another system, and so forth.

At task402, the variable k is initialized to 1. The variable k is used to keep track, at any given time, of which resource k of the K processing resources in processor303-1-2is under consideration to have its currently-assigned packet stream moved over to a digital signal processor other than processor303-1-2.

At task403, media gateway101-1checks if processing resource k is currently handling a packet stream. If the resource is handling a packet stream, task execution proceeds to task404. If not, task execution proceeds to task408.

At task404, media gateway101-1determines whether a different digital signal processor or processors are available to handle the packet stream handled by processing resource k. The determination is based on criteria that include: i) the capabilities that are being used to handle the packet stream at processor303-1-2; and ii) the capabilities of IP terminal104-1(i.e., the terminal originating the packet stream). For example, gateway101-1might preferentially identify a resource that can provide that same capability as before over a resource that cannot. As a second example, gateway101-1might use the opportunity to move the packet stream over to a “better” resource, such as a codec with more suitable encoding characteristics. In the case of the second example, gateway101-1would notify media gateway controller103of the change, as described below and with respect toFIG. 7, in order to enable the controller to accept the selection and notify the other end of the call (i.e., IP terminal104-1).

At task405, media gateway101-1checks if any digital signal processor is available to handle the particular packet stream currently being handled by processing resource k, independent of whether the same signal processing unit as the one handling the packet stream in question can be used. If any processor is available, task execution proceeds to task407. If no processor is available, task execution proceeds to task406.

At task406, media gateway101-1spawns a thread that is responsible for rescheduling the search for a new resource and the moving of resource k's packet stream to that new resource. The parameters relevant to the packet stream are passed to the thread, in well-known fashion (e.g., via a memory pointer, via an operating system inter-thread communication mechanism, etc.). The operation of this thread is described below and with respect toFIG. 5. Meanwhile, task execution proceeds to task408.

At task407, media gateway101-1moves the packet stream currently being handled by resource k to another digital signal processor. Task407is described below and with respect toFIG. 6. After task407, task execution proceeds to task408.

At task408, media gateway101-1increments the value of the variable k.

At task409, media gateway101-1checks if all of the packet streams have been checked at least once. If all of them have been checked, task execution proceeds to task410. If not, task execution proceeds back to task403.

At task410, media gateway101-1continues to monitor the spawned threads from task407until the final packet stream has been moved.

At task411, media gateway101-1notifies the technician that requested the removal from service in the first place that digital signal processor303-1-2has been removed from service. Task execution then ends.

FIG. 5depicts a flowchart of the salient tasks of the thread spawned for processing resource k's packet stream at task406, in accordance with the illustrative embodiment of the present invention. For pedagogical purposes, each spawned thread corresponds to exactly one processing resource k; however, as those who are skilled in the art will appreciate, the relationship between a spawned thread and a processing resource can be other than one-to-one. It will be clear to those skilled in the art which tasks depicted inFIG. 5can be performed simultaneously or in a different order than that depicted.

At task501media gateway101-1spawns a thread that is responsible for rescheduling the search for a new resource and the eventual moving of resource k's packet stream to that new resource.

At task502, the thread checks if the rescheduling of a search for a processing resource to handle resource k's packet stream is based on a call that is being handled by another digital signal processor coming to an end, thereby freeing up a processing resource at that digital signal processor. If the rescheduling is based on a call ending, task execution proceeds to task503. If not, task execution proceeds to task505.

At task503, the thread monitors, in well-known fashion, the packet streams that media gateway101-1is handling in signal processors other than the one being busied out, to determine if a call is ending.

At task504, the thread checks if a processing resource has become available as a result of a call having ended. If a call has ended on another digital signal processor and the available processing resource is able to satisfy the needs of processing resource k's packet stream, task execution proceeds to task509. If not, task execution proceeds back to task503.

At task505, the thread checks if the rescheduling of a search for a processing resource is based a time interval. If the rescheduling is based on a time interval, task execution proceeds to task506. If not, task execution proceeds to task508.

At task506, the thread waits a predetermined time interval (e.g., one minute, etc.).

At task507, after waiting the time interval, the thread checks if a processing resource has become available. One reason as to why a processing resource might have become available is if a call has ended. Another reason is that a maintenance test (e.g., a loop-back test, etc.) was being performed and has since ended, thereby freeing up one or more resources. As those who are skilled in the art will appreciate, there can be other reasons as to why a processing resource might become available. If a processing resource has become available and the available processing resource is able to satisfy the needs of processing resource k's packet stream, task execution proceeds to task509. If not, task execution proceeds back to task506.

At task508, the thread applies alternative criteria to rescheduling the search for a processing resource. For example, packets streams of other calls, such as those calls of a low priority, might simply be forced off of their digital signal processors to free up resources for the packet streams that have to be moved; in this case, the thread might check that another packet stream has been forced off of another signal processor. As those who are skilled in the art will appreciate, other criteria can be applied to determine when to search for an available resource.

At task509, the thread executes the tasks that are described above and with respect toFIG. 6, which results in resource k's packet stream being moved to another digital signal processor.

At task510, the thread for handling resource k's packet stream dies.

FIG. 6depicts a flowchart of the salient tasks that involve moving resource k's packet stream to another processing resource at another digital signal processor303-m-n, in accordance with the illustrative embodiment of the present invention. Depending on how the tasks are invoked, the depicted tasks are subtasks of either task407or task509. As those who are skilled in the art will appreciate, some of the tasks that appear inFIG. 6can be performed in parallel or in a different order than that depicted.

At task601, media gateway101-1checks if an available digital signal processor, possibly one of multiple available processors, is addressable by the same Internet Protocol address as processor303-1-2. If the available processor uses the same IP address, task execution proceeds to task602. If not, task execution proceeds to task603.

At task602, media gateway101-1reassigns the UDP port number for resource k's packet stream to a different digital signal processor, such as processor303-1-5, within signal processing unit303-1. It will be clear to those skilled in the art how media gateway101-1assigns and reassigns port numbers dynamically. Task execution then proceeds to task408or task510, depending on how the tasks depicted inFIG. 6were invoked.

At task603, media gateway101-1moves resource k's packet stream to a different signal processing unit, such as unit302-2, with a different Internet Protocol address. The messaging that is associated with task603is described below and with respect toFIG. 7. After task603is completed, task execution proceeds to task408or task510, depending on how the tasks depicted inFIG. 6were invoked.

FIG. 7depicts a message flow diagram of an information exchange between media gateway101-1and media gateway controller103, in accordance with the illustrative embodiment of the present invention. The events inFIG. 7occur as the result of task603having been invoked or if one or more media stream properties (e.g., the codec to be used, etc.) are changed. It will be clear to those skilled in the art which events depicted inFIG. 7can occur simultaneously or in a different order than that depicted.

Message701is transmitted by media gateway101-1to media gateway controller103, in accordance with the illustrative embodiment of the present invention. Gateway101-1uses message701to request controller103's approval to use a different processing resource than the resource handling a particular packet stream. Message701specifies a different Internet Protocol address than the one being used for the packet stream, as well as a UDP port number. In some embodiments, message701specifies more than one IP address.

Message702is transmitted by media gateway controller103to media gateway101-1, in response to message701. Controller103uses message702to indicate to gateway101-1that the request has been accepted and that the packet stream going forward will be associated with the new Internet Protocol address and port number. The new addressing information corresponds to a digital signal processor on a different signal processing unit at gateway101-1. Controller103also transmits message703to the endpoint associated with the packet stream, in this case Internet Protocol telecommunications terminal104-1. Terminal104-1then uses the new addressing information to determine where to send its packets going forward and which packets are the ones that the terminal should be receiving, as part of its call, given that the packet stream is being moved to a different processing resource at gateway101-1.

It is to be understood that the above-described embodiments are merely illustrative of the present invention and that many variations of the above-described embodiments can be devised by those skilled in the art without departing from the scope of the invention. For example, in this Specification, numerous specific details are provided in order to provide a thorough description and understanding of the illustrative embodiments of the present invention. Those skilled in the art will recognize, however, that the invention can be practiced without one or more of those details, or with other methods, materials, components, etc.

Furthermore, in some instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the illustrative embodiments. It is understood that the various embodiments shown in the Figures are illustrative, and are not necessarily drawn to scale. Reference throughout the specification to “one embodiment” or “an embodiment” or “some embodiments” means that a particular feature, structure, material, or characteristic described in connection with the embodiment(s) is included in at least one embodiment of the present invention, but not necessarily all embodiments. Consequently, the appearances of the phrase “in one embodiment,” “in an embodiment,” or “in some embodiments” in various places throughout the Specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, materials, or characteristics can be combined in any suitable manner in one or more embodiments. It is therefore intended that such variations be included within the scope of the following claims and their equivalents.