Embodiments of the invention are illustrated by way of example and not by way of limitation in the figures of the accompanying drawings, in which like references indicate similar elements and in which:
Embodiments of the present invention may provide a method, apparatus, and system for a platform with voice communication components partitioned from a host operating system.
Various aspects of the illustrative embodiments will be described using terms commonly employed by those skilled in the art to convey the substance of their work to others skilled in the art. However, it will be apparent to those skilled in the art that alternate embodiments may be practiced with only some of the described aspects. For purposes of explanation, specific devices and configurations are set forth in order to provide a thorough understanding of the illustrative embodiments. However, it will be apparent to one skilled in the art that alternate embodiments may be practiced without the specific details. In other instances, well-known features are omitted or simplified in order not to obscure the illustrative embodiments.
Further, various operations will be described as multiple discrete operations, in turn, in a manner that is most helpful in understanding the present invention; however, the order of description should not be construed as to imply that these operations are necessarily order dependent. In particular, these operations need not be performed in the order of presentation.
The phrase “in one embodiment” is used repeatedly. The phrase generally does not refer to the same embodiment; however, it may. The terms “comprising,” “having,” and “including” are synonymous, unless the context dictates otherwise.
In providing some clarifying context to language that may be used in connection with various embodiments, the phrase “A/B” means “A or B.” The phrase “A and/or B” means “(A), (B), or (A and B).” The phrase “A, B and/or C” means “(A), (B), (C), (A and B), (A and C), (B and C) or (A, B and C).” The phrase “(A)B” means “(B) or (A and B),” that is, A is optional.
As used herein, the term “component” is intended to refer to programming logic that may be employed to obtain a desired outcome. The term “component” may be synonymous with “module” or “agent” and may refer to programming logic that may be embodied in hardware or firmware, or in a collection of software instructions, possibly having entry and exit points, written in a programming language, such as, for example, C++.
A software component may be compiled and linked into an executable program, or installed in a dynamic link library, or may be written in an interpretive language such as BASIC. It will be appreciated that software components may be callable from other components or from themselves, and/or may be invoked in response to detected events or interrupts. Software instructions may be embedded in firmware, such as an electrically erasable programmable read-only memory (“EEPROM”), or may be stored on a readable medium such as a magnetic or optical storage device. It will be further appreciated that hardware components may be comprised of connected logic units, such as gates and flip-flops, and/or may be comprised of programmable units, such as programmable gate arrays or processors. In some embodiments, the components described herein are implemented as software modules, but nonetheless may be represented in hardware or firmware. Furthermore, although only a given number of discrete software/hardware components may be illustrated and/or described, such components may nonetheless be represented by additional components or fewer components without departing from the spirit and scope of embodiments of the invention.
In various embodiments, software components may be operated by a variety of processors (either single- or multi-core) such as, but not limited to, microprocessors, digital signal processors (“DSPs”), application specific integrated-circuits (“ASICs”), and/or controllers.
In various embodiments, the local loop signaling may be direct current signaling and/or in-band and out-of-band signaling (e.g., single frequency, multi-frequency, and dual-tone multi-frequency (DTMF)).
The computing platform 104 may also be coupled to a data communication network 116 through a network interface 120 for transmission/reception of packet-switched data traffic. In various embodiments, the data communication network 116 may comply with any of a number of topologies, standards, and/or protocols such as, but not limited to, transmission control protocol (TCP), Internet Protocol (IP), Real-time Transport Protocol (RTP), User Datagram Protocol (UDP), Asynchronous Transfer Mode (ATM), Frame Relay (FR), etc. In various embodiments, the data communication network 116 may comprise any type of network architecture, wired and/or wireless, including, but not limited to, a local area network (LANs), a wide area network (WAN), and/or a metropolitan area network (MAN).
The computing platform 104 may include a dedicated partition 124 and a host partition 128. The host partition 128 may include an operating system (OS) 132 to control general operation of other components of the host partition 128. The OS 132 of the host partition 128 may manage an execution environment of the host partition 128 that includes a variety of application programs accessible to the user of the computing platform 104.
While the OS 132 may provide the primary mechanism for a user to interact with the computing platform 104 it may also be associated with vulnerabilities that may compromise the components operating within the host partition 128. For example, the OS 132 may be subject to complex and evolving attacks by malware seeking to gain control of computing platform 104. These attacks can take on a variety of different forms ranging from attempts to crash the OS 132 to subversion of the OS 132 for alternate purposes. Furthermore, access provided to the OS 132, and components managed by the OS 132, may be unsuitable for certain components. Therefore, in embodiments of this invention one or more voice communication components 136 may be operated in the dedicated partition 124 secure and independent from the OS 132 of the host partition 128.
Operation of the voice communication component(s) 136 in the dedicated partition 124 may allow for security and/or accessibility configurations to be applied independently from configurations of the OS 132. The voice communication component(s) 136 may operate independently from the OS 132 and, therefore, may be referred to as being OS-agnostic. In various embodiments the voice communication component(s) 136 may sometimes be referred to as an analog terminal adapter (ATA).
The voice communication component(s) 136 operating in the dedicated partition 124 may allow for packetization and/or compression of voice traffic received from the voice terminal 108 into a protocol suitable for transporting the voice traffic in a packet-switched manner over the data communication network 116. Likewise, the voice communication component(s) 136 may also allow for the de-packetization and/or decompression of voice traffic received as packet-switched data from the network 116 for transmission to the voice terminal 108. In various embodiments, transmission/reception of voice traffic over/from the network 116 may be in the form of voice over Internet Protocol (VoIP), voice over frame relay (VoFR), etc.
In various embodiments, some of which will be discussed in further detail below, the partitions of the computing platform 104 may be provided as virtualized partitions (e.g., a virtual machine in a Virtualization Technology (VT) scheme) and/or entirely separate hardware partitions (e.g., utilizing Active Management Technologies (AMT), “Manageability Engine” (ME), Platform Resource Layer (PRL) using sequestered platform resources, System Management Mode (SMM), and/or other comparable or similar technologies). In various embodiments, a VT platform may also be used to implement AMT, ME, and/or PRL technologies.
In some embodiments, the network driver 212 may be used to receive and/or transmit all of the data traffic between the network 116 and the platform 104 (in these embodiments, the network driver 212 may not be dedicated to voice communications and therefore may be separate from the voice communication component(s) 136). The network driver 212 may store data traffic from the network to the OS 132 in a shared hardware resource, e.g., shared buffers. The OS 132 may then access this data traffic via a virtual network driver operating in the host partition 128. Data traffic from the host partition 128 to the network 116 may be transmitted conversely. In other embodiments, the network driver 212 may be disposed in the host partition 128 or both partitions.
While the network interface 120 is shown as being a part of the platform hardware 204 other embodiments may have the network interface 120, or parts thereof, being external to the platform 104.
The voice communication component(s) 136 may also include one or more voice application(s) 216 coupled to the SLIC driver 208 and the network driver 212. In various embodiments, the voice application(s) 216 may include, e.g., a universal phone interface, a softphone application, a soft switch component, etc. The voice application(s) 216 may be assembled according to operation criteria of a particular embodiment. In general, the voice application(s) 216 may facilitate call processing, user input, registration, configuration, etc.
In various embodiments the platform hardware may include other input/output (I/O) interfaces 220 to communicate with one or more peripherals 224 coupled to the computing platform 104. For example, in an embodiment where the voice application(s) 216 include a softphone application, the other I/O interfaces 220 may communicate with peripheral(s) 224 such as a microphone and/or speakers to provide voice terminal functions from the computing platform 104.
While user interaction with the computing platform 104 may occur primarily through interactions with components of the host partition 128, the user may have an interrupt authority to have access to various configuration policies of the voice application(s) 216. For example, a supplicant or an agent in the host partition 128 may allow the user to invoke an interrupt to transfer control from the host OS 132 to a service OS operating in the dedicated partition 124. In other embodiments, other mechanisms may be used to provide a secured channel by which a user may configure parameters of the voice application(s) 216. User-configurable parameters of the voice application(s) 216 may include specification of leading digits to use when calling a specific country or area code, how incoming calls should be handled, etc.
Once configured, the voice application(s) 216 may be capable of operating independently from user input and transparently function to route voice communication between a remote device, i.e., a device coupled to the computing platform via the network 116, and the local voice terminal 108.
In various embodiments the OS-agnostic components of the dedicated partition 124 may be operated with a power-policy configuration that is independent from a power-policy configuration of the OS 132. For example, in an embodiment the voice communication component(s) 136 may be configured with an always-on policy or an always-on standby policy, while the user may power the OS 132 (and hardware solely supporting the OS) on/off by using, e.g., the front panel button of the computing platform 104. Therefore, regardless of the power state of the host partition 128, the voice communication component(s) 136 may be accessible for either incoming or outgoing calls.
In various embodiments, the dedicated partition 124 may include other components, e.g., management components, operating independently from the OS 132.
The initiated voice application(s) 216 may then transmit, via the SLIC driver 208 and the SLIC 112, a dial tone to the voice terminal 108 indicating that the voice communication component(s) 136 are ready to receive address information for the intended recipient device of the call (remote callee device), block 308.
The address information sent from the voice terminal 108 may represent a series of digits, e.g., a phone number, compatible with, e.g., a North American Numbering Plan (NANP).
The voice application(s) 216 may map the NANP address to a network address of the remote callee device, e.g., an IP address, block 312. In an embodiment an address mapping may involve a request to a call processor running a database/mapping program that may be referred to as a soft switch. In various embodiments, the soft switch may communicate with other soft switches on the network 116 in order to complete the mapping.
Upon a successful address mapping, the connection request from the computing platform 104 to the remote callee device may be delivered, block 316. If the connection request is accepted, e.g., if the callee picks up the phone, a session between the computing platform 104 and the remote callee device may be established, block 320. Data packets transporting voice traffic may be packet-switched over the network 116 between the computing platform 104 and the remote callee device. Voice traffic may be packed/unpacked by the computing platform 104 for communication with the voice terminal 108.
A session may be terminated locally at the voice terminal 108 or remotely at the remote callee device, block 324.
If a user answers the call at the voice terminal 108 an off-hook condition may be received at the computing platform 104, block 412. At the receipt of the off-hook condition, a session between the computing platform 104 and the remote caller device may be established, block 416.
A session may be terminated locally at the voice terminal 108 or remotely at the remote caller device, block 420.
While the operations discussed in
In an embodiment the dedicated hardware 504 may include the SLIC 112, a dedicated processor 516 (e.g., a service processor and/or an embedded microcontroller), dedicated memory 520, and the network interface 120; the host hardware 512 may include a host processor 524, and host memory 528; and the shared hardware 508 may include mass storage 532.
In an embodiment, mass storage 532 may represent non-volatile storage to store persistent content to be used for the operation of the components on the platform 104, such as, but not limited to, operating system(s), program files, configuration files, etc.
In various embodiments, mass storage 532 may include integrated and/or peripheral storage devices, such as, but not limited to, disks and associated drives (e.g., magnetic, optical), universal serial bus (USB) storage devices and associated ports, flash memory, ROM, non-volatile semiconductor devices, etc.
In various embodiments, mass storage 532 may be a storage resource physically part of the computing platform 104 or it may be accessible by, but not necessarily a part of, the computing platform 104. For example, the mass storage 532 may be accessed by the computing platform 104 over the network 116.
The mass storage 532 may be operationally coupled (either remotely or locally) to the dedicated processor 516 and/or the host processor 524. The content stored in the mass storage 536 may be loaded into either dedicated memory 520 or host memory 528 as active content for operation of components in the dedicated partition 124 or the host partition 128, respectively.
The dedicated processor 516 or the host processor 524 may execute the active content in respective memories to operate the components in respective partitions. In various embodiments, the processor(s) 516 and/or 524 may be single and/or multiple-core processor(s), controller(s), application specific integrated circuit(s) (ASIC(s)), etc.
In various embodiments, the dedicated memory 520 or the host memory 528 may include random access memory (RAM), dynamic RAM (DRAM), static RAM (SRAM), synchronous DRAM (SDRAM), dual-data rate RAM (DDRRAM), etc. While the embodiment shown and described in
In this embodiment, a power supply 612 may be coupled to the hardware components that may need to be accessed by the voice communication component(s) 136. The power supply 612 may be configured to provide these hardware components with power according to a power management policy such as an always-on policy or an always-on standby policy. This may facilitate the voice communication component(s) 136 being accessible to both incoming and outgoing calls regardless of the power state of other components.
In this embodiment a management module, e.g., virtual machine monitor (VMM) 704, on the platform 104 may present multiple abstractions and/or views of the platform hardware 204, e.g., one or more processor(s) 708, SLIC 112, network interface 120, memory 712, and storage 532, to the dedicated partition 124 and the host partition 128. In this embodiment, the dedicated partition 124 and the host partition 128 may also be referred to as dedicated virtual machine (VM) 124 and host VM 128, respectively. Similar to the above embodiments, the dedicated VM 124 may be configured to operate voice communication component(s) 136 independently and securely isolated from the OS 132 to prevent unauthorized operations that would alter, modify, read, or otherwise affect the voice communication component(s) 136. While the platform 104 of this embodiment shows two VMs, other embodiments may employ any number of VMs.
The components operating in the dedicated VM 124 and host VM 128 may each operate as if they were running on a dedicated computer rather than a virtual machine. That is, components operating in the dedicated VM 124 and host VM 128 may each expect to control various events and have complete access to hardware 204. The VMM 704 may manage VM access to the hardware 204. The VMM 704 may be implemented in software (e.g., as a stand-alone program and/or a component of a host operating system), hardware, firmware, and/or any combination thereof. The VMM 704 may manage allocation of resources on the computing platform 104 and perform context switching as necessary to cycle between the dedicated VM 124 and the host VM 128 according to a round-robin or other predetermined scheme. If the one or more processor(s) 708 includes multiple processors, the dedicated VM 124 may be assigned a dedicated processor while the host VM 128 may be assigned a host processor.
A physical hardware partition with a dedicated processor (as illustrated in
Embodiments of the present invention shown and described above may facilitate partitioning of voice communication components from other components of a computing platform. Although the present invention has been described in terms of the above-illustrated embodiments, it will be appreciated by those of ordinary skill in the art that a wide variety of alternate and/or equivalent implementations calculated to achieve the same purposes may be substituted for the specific embodiments shown and described without departing from the scope of the present invention. Those with skill in the art will readily appreciate that the present invention may be implemented in a very wide variety of embodiments. This description is intended to be regarded as illustrative instead of restrictive on embodiments of the present invention.