Extending a virtual local area network across a layer 2 data center interconnect

The present disclosure involves systems and methods for automating interconnecting or stitching disparate Layer 2 domains across data center interconnects without the need to renumber virtual local area networks (VLANs) within an existing network. The interconnected networks may allow components or virtual machines, such as containers, within the connected networks or data centers to exchange Layer 2 communications while the connected VLANs or fabrics retain existing VLAN identification numbers to minimize alterations made to the data center networks. Further, the process of interconnecting the data centers may be automated such that administrators of the networks may provide an indication of interconnecting the data center networks without the need to manually access and configure edge devices of the networks to facilitate the Layer 2 communication.

TECHNICAL FIELD

The present disclosure relates generally to extending layer 2 connectivity across multiple data centers, and more specifically, to an automated approach to stitching disparate Layer 2 domains across data center interconnects without the need to renumber virtual local area networks within an existing network.

BACKGROUND

As data center or enterprise networking customers grow larger and larger through an increase in market share or through mergers and acquisitions of other entities, the need to manage the customer's information technology (IT) and networking infrastructure becomes more complex and difficult. In particular, enterprise customers will often maintain a data center or multiple data centers by creating a virtual local area network (VLAN). Through the VLAN, virtual machines (VMs) or containers may be established within the network to facilitate communication between components of the sites or data centers. However, aggregating additional VLANs with an existing site (such as through a merger or acquisition of another business that operate their own individual network) may create a logistical challenge to the IT specialists of the enterprise customer. This problem increases many fold when virtualization techniques like containers are deployed by the organizations within the network sites or VLANs.

For mid to large size enterprise customers, operations are much simplified if each site can be managed separately and coordination is only needed at the boundary of the network for the VLANs that need to communicate with each other. This improves scale, reduces cost of operations, and creates smaller failure domains. As companies grow by acquisitions and interconnected sites, they also run into issues of VLAN shortage and/or VLAN overlap. All these problems are expounded if they have multiple sites. It is more efficient for the organization if the current VLAN allocations are retained and each site has its own independent VLAN space.

In many instances, applications running on an enterprise network across multiple sites or locations utilize Layer 2 connections or communications between the sites to function. To stitch enterprise networks together at a Layer 2 level is typically done through manual data center interconnect techniques. In other words, network administrators or IT specialists access components of each enterprise network to be stitched and configure one or more of the components in an attempt to allow the enterprise networks to communicate. This manual configuration of the networks has quickly become more complex and difficult as such networks continue to expand. The introduction of virtual machines and containers within the networks add another level of complexity to the data center interconnection, to the point of becoming unmanageable.

DESCRIPTION OF EXAMPLE EMBODIMENTS

Overview

A system, network device, method, and computer readable storage medium is disclosed for extending a Layer 2 network between two or more fabric networks. The system may include devices to perform operations to extend the Layer 2 network. Such operations may include receiving a request to connect a first fabric network to a second fabric network over a network through a Layer 2 interconnect, wherein the first data center utilizes a first Virtual Local Area Network (VLAN) identifier and the second data center utilizing a second VLAN identifier different than the first VLAN identifier and obtaining a Data Center Interconnect (DCI) identifier, the DCI identifier unique to an interconnection between the first fabric network and the second fabric network. Further, the system may automatically generate a first configuration profile to at least one border networking device of the first fabric network based on the received request, the first configuration profile to configure the at least one border networking device of the first fabric network to map the DCI identifier to the first VLAN identifier and to include the DCI identifier in a Layer 2 transmission protocol portion of a first plurality of communication packets intended for the second fabric network. Similarly, the system may automatically generate a second configuration profile to at least one border networking device of the second fabric network to configure the at least one border networking device of the second fabric network to map the DCI identifier to the second VLAN identifier and to include the DCI identifier in a Layer 2 transmission protocol portion of a second plurality of communication packets intended for the first fabric network.

In one implementation, the Layer 2 transmission protocol utilized by the system may be an Overlay Transport Virtualization (OTV) protocol and the DCI identifier is included in an OTV packet from the first fabric network to the second fabric network. In this implementation, the DCI identifier is utilized as an OTV transport VLAN and included in a data plane of the OTV packet. In another implementation, the Layer 2 transmission protocol may be a Virtual Private Local Area Network (LAN) Service (VPLS) transport protocol and the DCI identifier may be utilized as a VPLS Virtual Private Network (VPN) identifier carried in a VPLS VPN control plane.

Further still, in some instances the DCI identifier is obtained from an input provided through a user interface executed on an orchestrator device in communication with the first fabric network and the second fabric network. The user interface may be displayed on a display device connected to a network device. In addition to receiving the DCI identifier, the user interface may also receive the request to connect the first fabric network to the second fabric network over a network through the Layer 2 interconnect and/or display network information of the first fabric network and the second fabric network.

In another implementation, the DCI identifier may be obtained from a central database storing a plurality of DCI identifiers with each of the plurality of DCI identifiers associated with a corresponding data center interconnect.

EXAMPLE EMBODIMENTS

Aspects of the present disclosure involve systems and methods for automating interconnecting or stitching disparate Layer 2 domains across data center interconnects without the need to renumber virtual local area networks (VLANs) within an existing network. The interconnected networks may allow components or virtual machines, such as containers, within the connected networks or data centers to exchange Layer 2 communications while the connected VLANs or fabrics retain existing VLAN identification numbers to minimize alterations made to the data center networks. Further, the process of interconnecting the data centers may be automated such that administrators of the networks may provide an indication of interconnecting the data center networks without the need to manually access and configure edge devices of the networks to facilitate the Layer 2 communication. In this manner, customers with ever-changing enterprise networks that may include several virtual machines (VMs) and/or containers may interconnect several sites or data centers seamlessly and automatically without the complex task of manually configuring multiple network devices within the enterprise.

In one particular embodiment, a network orchestrator is provided to an administrator of a data center network. Through the orchestrator, the administrator may indicate adding an additional network to an existing data center network or the stitching together to two or more such data center networks. The orchestrator may, in turn, determine a particular interconnect identification value or other identifying characteristic for the Layer 2 interconnecting of the data centers. This interconnection identification value may be referred to as a data center interconnection (DCI) identifier and may be utilized by the orchestrator to provide a normalization value or abstract layer for Layer 2 interconnecting the fabrics of the various sites or data centers of the enterprise customer. In one example, the DCI identifier is selected by the enterprise administrator for use in Layer 2 interconnecting all or some of the various fabrics of the enterprise network. In another example, the DCI identifier is generated by the orchestrator and provided to the administrator for such use.

The orchestrator may also connect to or otherwise communicate with other control devices to begin configuring components of the data center networks for interconnecting the networks. For example, a data center network manager (DCNM) device may be associated with a fabric network of a data center. The orchestrator may provide one or more command line interface (CLI) instructions to the DCNM to configure one or more of the fabric components with the DCI identifier. In some embodiments, the orchestrator may utilize one or more application programming interfaces (APIs) to communicate with the DCNM device. Upon receiving the instructions, the DCNM may access one or more components of the data center fabric to configure the components to extend Layer 2 communication into the fabric with the DCI identifier. The communication with the DCNM may occur for any number of fabrics that are to be stitched together by the orchestrator of the enterprise network. Once the components of the fabrics are configured such that the Layer 2 is extended into the fabrics, Layer 2 communications may occur between the fabrics.

By creating a new abstraction layer for the Layer 2 interconnect between the data center networks, the use of the DCI identifier may be Layer 2 transport protocol agnostic. In other words, regardless of if the data center fabrics utilize overlay transport virtualization (OTV) transport protocol, virtual private LAN service transport protocol, Ethernet transport protocol, and the like, the DCI identifier may be mapped to the particular transport protocol for the data center fabric for use in Layer 2 interconnection of the data center fabrics. This further prevents an administrator of the networks to needing to by aware of the various transport protocols and manually mapping the various protocols together within the Layer 2 interconnect.

Through the presented automated solution to stitch disparate Layer 2 domains across any data center interconnect network without the need to renumber VLANs within existing networks or fabrics, improvements in the efficiency of connecting networks is provided. This is especially provided in networks that grow in size quickly due to the use of containers and VMs or in businesses where companies are constantly mergers, acquiring others companies, expanding or providing servers to multitude of tenants who have elastic needs. Further, as the solution is based on central orchestrator, it can be rapidly evolved or scaled to meet additional demands on the customer network with little to no switch side changes within the network fabrics.

FIG. 1is a system diagram for a data center network or site, in accordance with various embodiments of the subject technology. The network100illustrated is but one example of switch fabric network that may be incorporated or included in an enterprise network for a customer. In one particular embodiment, the network100may be considered a data center network for performing any number of compute and communication functions. Further, the components of the network100may be virtualized such that functions of the components are executed by any number of network devices. Also in one implementation, the fabric network100may represent a VLAN-type network within a larger enterprise network that governs communications between the components of the network.

In general, the fabric network100may include one or more switches or switching devices104,106. The switches104,106facilitate the exchange of communications between components of the fabric100. As such, switches104,106may connect to or otherwise be in communication with compute, storage, or networking components108-110of the network100. In general, the network components108-110may be configured to perform any function as designed or intended by an administrator of the network100. Connected or otherwise in communication with the compute or storage components108-110may be a host or other container118embodied within the fabric network100for communication or use of the network.

The switch fabric network100may also include one or more border leaf nodes112in communication with the switches104,106of the network100. The border leaf nodes112are network nodes that reside on the border of subnetworks to facilitate communication with other networks. For example, border leaf node1112may map Layer 2 information received from an edge device114to a VLAN identifier utilized by the switches104,106of the fabric network for transmitting the received communications. In general, the border leaf node112provides the interface of the VLAN-based components to a larger external network or interconnect102.

To receive communications from the external network or interconnect102, the border leaf node112may communicate or be connected to a data center edge device114. Although only a single VLAN configuration is illustrated in the network100ofFIG. 1as connected to the edge device114, it should be appreciated that any number of VLAN networks and associated border leaf nodes may communicate with edge device114for transmitting and receiving communications from network102. As such, network102may be any type of network that provides communications between disparate devices or network components. In one example, the network102may be an Internet Protocol (IP)-based telecommunications network that connects several edge devices behind which any number of VLANs may be accessible by other VLANs to create a network of interconnected fabrics or data centers. In one particular example, the interconnected data centers may be associated with a particular enterprise customer that shares information and data between the sites across the network102and through corresponding edge devices114and border leaf nodes112.

Also included in network100is a DCNM116device. In general, the DCNM116communicates with and configures the components of the data center network or otherwise manages the operations of the fabric network. In one implementation, a network user may access the DCNM116to configure the various components and functions of the network100as desired by the network administrator. As such, the DCNM116may translate one or more received instructions for configuring the network100and communicate with one or more components of the network to facilitate or execute the instructions.

As mentioned above, different VLANs or fabrics may be interconnected to allow communications between the networks. For example, a business may operate a VLAN to support the operations of the business, such as marketing, human resources, payroll, etc. Each department in the business may be established as a separate VLAN or VM in this scenario. In other implementations, a business utilizing a VLAN may merge or acquire another business with a separate VLAN or group of VLANs. Stitching together VLANs may quickly become cumbersome and complex as the size of the enterprise network of the business grows. Providing Layer 2 communication between two or more various VLANs or fabrics may be particularly difficult for network administrators to accomplish.

FIG. 2is a system diagram illustrating stitching two data center networks together through a Layer 2 interconnect. Several of the components of the network200structure illustrated inFIG. 2may be similar to the components of the fabric network100discussed above with reference toFIG. 1. Thus, a first data center network234may include any number of compute or storage components208-210in communication with one or more switches204,206. Similar to above, the components may be physical or virtual, as configured by a network administrator. Also included in the data center network234is a border leaf node212and a data center edge device214connected to a network202. A DCNM216may be associated with or otherwise in communication with data center network234to control and configure the network components.

A second data center network236may also be included in the network200configuration. The second data center network236may be similar to the first data center network222and include compute or storage components230-232in communication with one or more switches226,228, a border leaf node224, and a data center edge device222connected to the network202. A DCNM220may be associated with or otherwise in communication with data center network236to control and configure the network components. Although illustrated as having the same general configuration as the first data center234, it should be appreciated that data center network236may be in any configuration as desired by a network administrator to perform any network or compute function as a VM or VLAN. The data centers234,236are presented herein as being of similar configuration for simplicity of discussion only. In general, each data center234,236may include the DCNM216,218, an edge device214,222connected to an IP network202, and a border leaf network214,224.

In one implementation of the network200, first data center network234and second data center network236may be Layer 2 interconnected such that communications between the networks may occur at Layer 2. For example, OTV provides a solution to extend Layer 2 connectivity across different sites using an existing network202. With OTV. Layer 2 extensions across multiple data centers are achieved by configuring one or more edge devices214,222at each of the data centers234,236to extend a set of virtual local area networks (VLANs) across the multiple data centers. By doing so, hosts or containers within a first data center234can access hosts or containers within the other data center236using Layer 2 communications. Other transport protocols may also be utilized in IP network202to Layer 2 interconnect the data centers234,236, such as VLPS and/or Ethernet. In general, however, interconnecting the data centers234,236at Layer 2 across network202typically requires the manual configuration of the edge devices214,222(among other network devices) to map the Layer 2 transport protocol to the transport protocols of the different data centers.

In some embodiments of the network200, an orchestrator device or component218is provided. In general, the orchestrator218provides an interface through which a network administrator may configure one or more aspects of the network200. As such, the orchestrator may, in some implementations, be embodied in the one or each of the DCNMs216,220of the network200. The orchestrator218may operate on any compute or network device of the network200and communicates with one or more components of the network to provide instructions or otherwise configure the network. In one particular implementation, a network administrator may access a user interface238through which network configuration information may be provided by the administrator to configure aspects of the network200. Operations of the orchestrator218are discussed in more detail below with particular reference to the flowchart ofFIG. 3.

In some embodiments, orchestrator218defines one or more network infrastructure operational policies for container-based application deployment. Thus, the orchestrator218may receive network configuration information, including containers embodied or hosted within a data center network, and communicates with one or more network devices to facilitate the received configuration. In one particular embodiment, the orchestrator218communicates with an associated DCNM216to configure the network components. Other network controls, such as debugging of connections, monitoring for network issues, and altering the configuration of the network in response to inputs or performance measuring may also be controlled through the orchestrator device218.

As mentioned above, the orchestrator218may also automate stitching disparate Layer 2 domains across data center interconnects without the need to renumber virtual local area networks within an existing network. In particular,FIG. 3illustrates a flowchart of a method for an automated approach to stitching disparate Layer 2 domains across data center interconnects. In general, the orchestrator may perform one or more of the operations of the method300. However, any component of the network200or associated with the network may perform the operations. Further, the operations may be executed through any number of hardware components of the network200, software programs of the network, or a combination of hardware and software components.

Beginning in operation302, the orchestrator218may receive an indication to extend a network across fabrics. The extension of a network across multiple fabrics may occur for any number of reasons, including connecting different fabrics after a business merger or acquisition and/or to expand an existing fabric into a larger network. In one particular implementation, the indication to extend a network across fabrics may be received through a user interface238of the orchestrator218.FIG. 4illustrates one such user interface238through which the indication to extend the network may be received. In particular,FIG. 4is a screenshot400of a user interface of an orchestrator218through which a user may select to stitch disparate Layer 2 domains across data center interconnects. The user interface400is but one example of a type of interface that a user of administrator of a network may utilize to manage network components and/or network configurations.

The example user interface400may include several fields or other selectable portions through which network information may be presented or configured. For example, the particular user interface400illustrated inFIG. 4is an interface through which a network or fabric may be added to an existing network configuration. To access the user interface400, a network administrator may log into or otherwise access the orchestrator device218and select to add or create a network. In some implementations, the user interface400may be available through a DCNM that corresponds to a created network. The user interface400may include created network information402, such as a name of the organization managing the network and a network name. In general, any aspect of the created network may be presented through the interface400. Other routing information or numbering information404(such as VLAN identifiers of the network or subnet values) may also be provided through the interface400. Such information may provide routing addresses or other values utilized by the network to route communication packets within the network.

In one particular implementation, the user interface400may include a portion406,408through which a user of the interface may indicate that the created network is to be Layer 2 extended across a fabric. In particular, a user may select the check-box408to indicate that the network is to be Layer 2 extended. This selection may be received from a user of the interface400through a computing device and in particular through an input device to the computing device. In one example, the user utilizes a mouse click or keyboard key to select to Layer 2 extend the created network. In another implementation, the orchestrator218itself may select to Layer 2 extend the network across the fabric.

Also included is a field for providing or displaying a Layer 2 data center ID (DCI ID). Returning to the method300ofFIG. 3, this Layer 2 DCI ID may be provided to the orchestrator218or derived by the orchestrator in operation304. In one particular implementation, a user of the user interface400may provide a desired DCI ID that is used to Layer 2 stitch fabrics together. This DCI ID may thus be utilized by a network manager to Layer 2 stitch together any number of fabrics utilizing the same DCI ID that is common to all fabrics. In another implementation, the DCI ID may be derived by the orchestrator218in response to receiving the indication of the Layer 2 extension. For example, the orchestrator218may simply select a DCI ID for use by all fabrics to be stitched together and utilize that DCI ID for all related fabrics. In this example, a central database of DCI IDs utilized by an organization of network may be maintained by the system200from which the orchestrator218may retrieve the DCI ID to utilize in Layer 2 extended the fabric. In another implementation, a user may provide an alphanumeric DCI ID in the field406of the user interface400from which the orchestrator218may derive the Layer 2 DCI ID from a name utilizing a type of hashing scheme. In general, the orchestrator may receive or determine the DCI ID from any source or scheme.

With the DCI ID determined, the orchestrator218selects the network components of the fabric or data center that the Layer 2 segment will be extended over in operation306. Utilizing the network200ofFIG. 2, the orchestrator218may transmit the network information that is entered through the user interface400to a DCNM216associated with the fabric to be extended. In one particular example, the orchestrator218may utilize one or more APIs to pass along the network information. In another implementation, the DCNM216receives the network information, such as the DCI ID, from a user directly. The DCNM216in turn selects which components of the network200that are to have the Layer 2 segment extended over. In particular, the DCNM216identifies the border leaf nodes212and edge devices214of the fabric as those components the Layer 2 segment is extended. In general, the selected border leaf nodes212map the DCI ID into a VLAN of the network on the interface between the border leaf node and a connected edge device214.

Each of the selected edge devices214may be, in one implementation, pre-configured with network information that will not be changed by the Layer 2 extension across the device. This information may be known or obtained by the DCNM216managing the particular fabric234. Such static network information may include external neighborhood devices, multicast configuration, etc. The orchestrator218, in turn, is responsible for per bridge domain configuration where Layer 2 extension is applied, such as VLAN translation command for OTV, and/or VPLS configurations. Some examples of static information maintained by the DCNM216or the orchestrator218may include the maximum number of VLAN extensions on the edge device214, physical interface connection to a border leaf node212, and which data center interconnect (DCI) technology is supported by the edge device (such as OTV, VPLS, or Ethernet).

As part of the selection of identification of the network components to be configured to Layer 2 extend the network, the DCNM216or orchestrator218may allocate a VLAN from a pool of VLAN identifiers to the border leaf node212and data center edge device214connection and configures the selected network components with the relevant network configuration information. For example, in operation308, the orchestrator218or DCNM216determines the Layer 2 transport protocol utilized by the DCI for Layer 2 communication. Once the transport protocol is determined, the orchestrator218or DCNM216generates one or more command line interface (CLIs) or instructions for commissioning or configuring the components in operation310and, in operation312, transmits those configuration instructions to the determined border leaf nodes212and edge devices214. By executing the transmitted instructions, the components212,214are configured to extend the Layer 2 segment ID into the network234such that fabrics can communicate over Layer 2 communications.

For example, assume that the edge device214utilizes OTV to communicate over network202. In this circumstance, the border leaf node212may generate a Layer 2 configuration based on the network information received from the DCNM216or orchestrator218. The configuration of the border leaf node212may map the Layer 2 segment ID to the VLAN associated with the fabric network234. Further, the edge device214may generate an OTV configuration based on the received network information that translates border leaf node facing VLAN to OTV transport VLAN. In one particular embodiment, the OTV transport VLAN is the Layer 2 DCI ID determined above. Thus, the Layer 2 DCI ID is carried in the OTV packet from the edge device214to an edge device of another fabric236(such as edge device222) over network202. In this manner, the DCI ID may be utilized in the OTV packet itself to extend the Layer 2 communications between the various fabrics234,326connected to the network202.

Further, the same method300as described above may be executed by the orchestrator218on fabric236to configure the fabric to also communicate utilizing the DCI ID. For example, orchestrator218may utilize DCNM220to determine the components connected to the network202, such as border leaf node224and edge device222. A configuration file with relevant network information may be generated by the DCNM220and transmitted to the border leaf node224and edge device222for configuring the components to extend the Layer 2 segment into the fabric network236. Because the same DCI ID is utilized by both fabrics234,326, however, the fabrics may utilize the DCI ID to extend Layer 2 communication between the fabrics, in some cases including the DCI ID within the OTV packet carried along the network202.

Through the method300described above executed for both fabrics234,236, the two fabrics are Layer 2 interconnected via OTV.FIG. 5is a system diagram500illustrating two data center networks534,536interconnected at Layer 2 while maintaining virtual local area networks numbering within an existing network. In general, the network500illustrated inFIG. 5is same network200as illustrated inFIG. 2but with the two fabrics Layer 2 interconnected. Thus, the components of the network500have the same numbering scheme as the network described above. In this example, however, orchestrator518is illustrated as monitoring and managing the Layer 2 interconnect of the two fabric networks234,236.

As shown in the network500, the configuration of the border leaf node512and edge device514extend the Layer 2 segment routing into the fabric534. In particular, a DCI ID is utilized to extend the Layer 2 communications between the fabrics. For example, assume that fabric534utilizes segment ID value of 10000 to exchange communications. A container or host540connected to the fabric network534utilizes the segment ID 10000 to transmit communications between the components of the network. Further, suppose border leaf node512and edge device514utilize VLAN identifier2000to exchange communications. Similarly, fabric536may utilize segment ID 20000 between the components of the fabric and VLAN3000for communications between edge device522and border leaf node524. Thus, each fabric534,536utilizes a VLAN/segment ID communication scheme. To transmit communications between the fabrics534,536over network502, the network500may utilize an OTV transport protocol.

Through the mechanisms and methods described above, the orchestrator518may initiate or establish a DCI ID to stitch the two fabrics534,536together through the common DCI ID. In particular, the Layer 2 DCI ID may be used as the OTV transport VLAN as illustrated through orchestrator518mapping OTV VLAN2000to DCI ID 1000 at edge device514and border leaf node512and mapping OTV VLAN3000to DCI ID 1000 at edge device522and border leaf node524. As such, the DCI ID 1000 is utilized to extend Layer 2 connectivity between container540in fabric534to container542of fabric536. Further, this extension of the Layer 2 communication between the fabrics534,536occurs automatically through the use of the orchestrator518to coordinate and execute the mapping of the DCI ID to the OTV transport VLAN without needing a network administrator to manually configure the components of the fabrics to communicate utilizing the DCI ID. In this manner, the stitching together of fabric networks534,536over the network502may be executed by the orchestrator518, thereby simplifying and improving the efficiency of the network configuration.

The above description provides for an automated mechanism for Layer 2 stitching together of fabric networks that utilize OTV as the Layer 2 interconnect technology or protocol. However, the same mechanism and methods may also be applied to VPLS, another widely used Layer 2 interconnect technique. When VPLS is used to interconnect data centers, the Layer 2 DCI ID is used as the VPLS VPN ID/VC ID in a similar manner as the DCI ID is used as the OTV transport VLAN. Thus, the affected edge devices514,522and border leaf nodes512,524of the connecting fabrics534,536may be configured by the orchestrator518to utilize the DCI ID as the VPLS VPN ID such that the fabrics may Layer 2 communicate.

In one particular example, the edge devices514,522of the network500may be configured with VPLS Border Gateway Protocol (BGP) based auto discovery as part of the device configuration. VPLS auto discovery allows the edge devices514,522to discover other edge devices that are part of the same VPLS domain. When a network is created, the network configuration profile specific to the VPLS is pushed to the edge devices514,522, using the Layer 2 DCI ID as the VPLS VPN ID to provide for the Layer 2 communication between the edge devices utilizing the received Layer 2 DCI ID.

In this manner, the DCI ID may be used regardless of the Layer 2 transport protocol used such that the DCI ID is transport agnostic or otherwise provides a normalizing identification number for Layer 2 communications between fabrics. This further improves the operation of configuration the network by removing the need for a network administrator to know the transport protocol for each fabric being added to an existing network. Rather, the orchestrator518or administrator may simply utilize the same DCI ID across all fabrics to be interconnected and the configuration of the network components occurs automatically through the operation of the orchestrator.

FIG. 6shows an example of computing system600in which the components of the system are in communication with each other using connection605. Connection605can be a physical connection via a bus, or a direct connection into processor610, such as in a chipset architecture. Connection605can also be a virtual connection, networked connection, or logical connection.

Example system600includes at least one processing unit (CPU or processor)610and connection605that couples various system components, including system memory615, such as read only memory (ROM) and random access memory (RAM), to processor610. Computing system600can include a cache of high-speed memory connected directly with, in close proximity to, or integrated as part of processor610.

Processor610can include any general purpose processor and a hardware service or software service, such as services632,634, and636stored in storage device630, configured to control processor610as well as a special-purpose processor where software instructions are incorporated into the actual processor design. Processor610may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric.

To enable user interaction, computing system600includes an input device645, which can represent any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech, etc. Computing system600can also include output device635, which can be one or more of a number of output mechanisms known to those of skill in the art. In some instances, multimodal systems can enable a user to provide multiple types of input/output to communicate with computing system600. Computing system600can include communications interface640, which can generally govern and manage the user input and system output. There is no restriction on operating on any particular hardware arrangement and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed.

The storage device630can include software services, servers, services, etc., that when the code that defines such software is executed by the processor610, it causes the system to perform a function. In some embodiments, a hardware service that performs a particular function can include the software component stored in a computer-readable medium in connection with the necessary hardware components, such as processor610, connection605, output device635, etc., to carry out the function.