Modification to AS—path elements

In one or more embodiments, an architecture is provided that may intercept a route update message and compare AS numbers of an AS path with a list of AS numbers known or inferred to be problematic. In one or more embodiments, the problematic AS numbers can be substituted with a local AS number such that loop detection checks enforced automatically on many networks do not discard the message and/or prevent connectivity between two disparate networks.

TECHNICAL FIELD

The subject disclosure relates generally to establishing interconnectivity between disparate networks such as Virtual Private Networks (VPNs) that employ Border Gateway Protocol (BGP) for distributing routes over a backbone.

BACKGROUND

Many businesses (e.g., customers) often employ a single service provider to handle Internet Protocol (IP) services for all of the customer networks. For example, a customer can organize and maintain multiple Virtual Private Networks (VPNs) at disparate locations around the globe with a single service provider managing services such as Internet connectivity (e.g. by way of the service provider's backbone) for all of the individual VPNs. In some cases, there will exist varying levels of security between these VPNs. Thus, all traffic between VPNs must first traverse a firewall or De-Militarization Zone (DMZ). In other cases, public access (e.g., non-secure access) can also require a firewall or DMZ before entering any of the disparate VPNs. Some customers, especially large businesses maintain a central DMZ through which all traffic must traverse before reaching any of the VPNs.

Conventionally, establishing connectivity between VPNs has been difficult, if not impossible due to loop detection checks necessarily enforced by standard Border Gateway Protocol. Thus, in some cases, BGP standards have been relaxed by various functions to mitigate this difficulty. As one example, the AS-override function can be employed, however, this function can only be employed between neighboring autonomous systems (peers). Another example is the allowAS-in function, but this function is not implemented by many service providers. In other cases, BGP can be redistributed to Interior Gateway Protocol (IGP), but this scheme is very labor intensive and inefficient.

DESCRIPTION

Overview

The following presents a simplified overview of the claimed subject matter in order to provide a basic understanding of some embodiments described herein. This is not an extensive overview of the claimed subject matter. It is intended to neither identify key or critical elements of the claimed subject matter nor to delineate the scope of that subject matter. Its sole purpose is to present some concepts of the claimed subject matter in a simplified form as a prelude to the more detailed description of example embodiments that is presented later.

The claimed subject matter relates to identifying whether an autonomous system (AS) number included in an AS path of a message matches a set of AS numbers that may be problematic. The identified AS number can be substituted with a local AS number.

The following description and the annexed drawings set forth in detail certain illustrative embodiments of the claimed subject matter. These embodiments may be indicative, however, of but a few of the various ways in which the principles of the claimed subject matter may be employed and the claimed subject matter is intended to include many and/or all such embodiments and their equivalents. Other advantages and novel features of the claimed subject matter will become apparent from the following description of example embodiments when considered in conjunction with the drawings.

Description of Example Embodiments

As utilized herein, the terms “component,” “system,” “interface,” “message,” “protocol,” “communications,” and the like can refer to a computer-related entity, either hardware, software (e.g. in execution), and/or firmware. For example, a component can be a process running on a processor, a processor, an object, an executable, a program, a function, a library, a subroutine, and/or a computer or a combination of software and hardware. By way of illustration, both an application running on a server and the server can be a component. One or more components can reside within a process and a component can be localized on one computer and/or distributed between two or more computers.

Now turning to the figures,FIG. 1illustrates a system100that may mitigate loop detection failure by selective modification to Autonomous System (AS) elements/attributes. Generally, the system100may include a screening component102that may be configured to receive a message104. The message104may comprise an AS path (not shown), which typically includes one or more AS number(s) (not shown), both described in more detail infra with reference toFIG. 2. The screening component102may be configured to identify a particular AS number included in the message104. For example, the screening component102may compare the one or more AS number(s) to a value106. If a particular AS number of the message104matches the value106, then the particular AS number may be selected and/or flagged. It is to be understood that the value106can be a single AS number or a plurality of AS numbers. As such, in the case of a plurality of AS numbers, the screening component102may select or flag more than one AS number in the AS path of the message104.

The system100may also include a substitution component108operatively coupled to the screening component102. The substitution component108may be configured with a local AS number110(described more fully inFIG. 3). The substitution component108may replace the flagged/selected AS numbers (e.g., those AS numbers that match value106) with the local AS number110. Thus, output112can be substantially identical to message104such as when message104does not contain an AS number equivalent to value106. However, in other situations, such as when the value106does match an AS number included in message104, then output112can include the local AS number110rather than the AS number equal to the value106.

With brief reference toFIG. 2, an example embodiment of message104is depicted. In general, the message104may be an open route message, an update route message, or virtually most any routing advertisement intended to establish, renew, or modify the route and/or routing tables. In accordance with one embodiment, the message104can include an AS path202. The AS path202can include one or more AS numbers204, that can represent an ordered listing of the autonomous systems traversed by the message104. As indicated, the most recent autonomous system through which the message104propagated was64500. Further, the AS path202(e.g., route) from the origin to its current location traversed autonomous system65050,65000,13900, then64500, in that order.

As described supra in connection withFIG. 1, the one or more AS numbers204can include a flagged or matching AS number206(e.g., the AS number206matches value106). It is to be appreciated that although only one matching AS number206is depicted, more than one matching AS number206might exist. It is also to be appreciated and understood that message104need not include a matching AS number206at all such as when none of the one or more AS numbers204of the AS path202correspond to any one of the value(s)106. Moreover, the message104can further include various other data such as header information, version number, local/origin attributes, or the like.

Referring briefly toFIG. 3, an example embodiment of the local AS number110is illustrated. Here, the local AS number110is64000, however, it is to be appreciated that64000is merely an example and the local AS number110(as well as the one or more AS numbers204inFIG. 2) could be other values as well. Generally, an autonomous system is a collection of Internet Protocol (IP) networks and routers under the control of a single entity or collection of entities that presents a common routing policy to the Internet, each of which can be assigned a unique AS number (e.g., local AS number110, AS numbers204). Typically, all AS numbers are assigned by the Internet Assigned Numbers Authority (IANA), which is operated by ICANN (Internet Corporation for Assigned Numbers and Names).

Border Gateway Protocol (BGP) allows autonomous systems (to which an AS number can be registered/assigned) to be public or private. For example, an organization can have one or several private autonomous systems such as Virtual Private Networks (VPNs) with private AS numbers. However, a service provider that, e.g. provides an IP backbone for connectivity to the Internet for its customers' networks generally must have a public AS number. For further information, RFC 1930 provides definitions and guidelines for an autonomous system and RFC 4271 codifies a version of BGP.

In accordance with the foregoing, the local AS number110need not be an arbitrary value, or even one that is configurable or intended to change. Rather, the local AS number110may instead be a persistent number registered with the IANA, which designates a particular autonomous system with a certified and valid AS number such as local AS number110.

Turning now toFIG. 4, a system400that can configure a set of value(s)106is illustrated. Unlike, the local AS number110, which is typically not modifiable, the value106is easily configurable. The value (or values)106can, e.g. be configured to correspond to particular AS numbers (e.g., the AS number206fromFIG. 2) such as AS numbers that might fail a loop detection check. Loop detection checks are often enforced automatically in the case of BGP (e.g., to ensure a route from A to B is the shortest path) and will be detailed more fully with reference toFIG. 6described below.

The screening component102, which can employ the value106in order to detect matching AS numbers can also be employed to configure the value106. It is to be appreciated that another component (not shown) might be employed to configure the value106as well. In addition, the system400can also include an intelligence component402that can directly modify and/or configure the value(s)106or provide supplemental aid to the screening component102for that task. For example, when an organization constructs distributed networks, certain AS numbers that may present reachability or connectivity issues might be known in advance. If so, screening102can populate value106with a set of numbers corresponding to the troublesome AS numbers.

However, in other cases, AS numbers that may present connectivity issues may not, for whatever reason, be known. Accordingly, these AS numbers can be configured at a later time, or additionally/alternatively the intelligence component402can determine these and update the value(s)106. For example, the intelligence component402can be supplied with or have access to a data store with AS numbers associated with, e.g. service provider networks, and then infer those service provider AS numbers that should be present in value106. In accordance with one embodiment, the intelligence component402(or screening component102) can remove numbers from value106. For instance, intelligence component402might infer that potential connectivity issues associated with an AS number has been mitigated in another way such as by employing allowAS-in or AS-override functions, or in the case of redistributing from BGP to Interior Gateway Protocol (IGP) in order to delete particular AS numbers. While none of these supplemental mechanisms are useful in every case for which there are connectivity issues with certain AS numbers, the intelligence component402can detect their use and, if desired, remove that particular AS number from the value106.

In accordance with one embodiment, the intelligence component402can examine the entirety or a subset of the data available (e.g. organization networksNVPNs, service provider networks, associated AS numbers, peer/neighbor information . . . ) and can provide for reasoning about or infer states of the system, environment, and/or user from a set of observations as captured via events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data.

Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Various classification (explicitly and/or implicitly trained) schemes and/or systems (e.g. support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines . . . ) can be employed in connection with performing automatic and/or inferred action in connection with the claimed subject matter.

FIG. 5illustrates a system500that can selectively replace elements of an AS path. The system500can include the substitution component108that can receive (e.g., by way of screening component102fromFIG. 1) message104. Message104can include the AS path202with the AS number206that can facilitate connectivity issues. In one or more embodiments, the substitution component108can mitigate such connectivity issues by overwriting the AS number206with the local AS number110. As depicted, the output112includes AS path502which includes the local AS number110(e.g.64000) rather than the original AS path202of message104, which included the AS number206(e.g.,13900).

It is to be understood that in accordance with one embodiment, the replacement of an element (e.g, AS number206) of the AS path202can be controlled and/or occur with built-in safety measures. That is, rather than simply swapping AS number206with any given figure, the AS number206can be automatically exchanged with the local AS number110(e.g., configurable at the discretion of the end-user). Simply exchanging the AS number206with an arbitrary figure or one that can be configured may result in unpredictable and/or significantly detrimental results across many different networks. By replacing the AS number206with the local AS number110(which can be a valid, registered AS number); and making the replacement automatically (which can mitigate errors such as a mistake in configuring the replacement value), the aforementioned unpredictability and/or detrimental results can be substantially avoided.

With reference now toFIG. 6, a system600that can facilitate a determination of a shortest route for an AS path is illustrated. In compliance with BGP, networks (and/or components therein) such as VPNs must establish their peers/neighbors as well as discern and maintain routing tables that can indicate the shortest route between the current network (or component therein) and any given destination. Hence, networks that employ BGP commonly broadcast update advertisements (e.g., message104) in order to establish and/or update the shortest route. One way to ensure the shortest route—and a requirement for networks that employ BGP in general—is to perform a loop detection check602. Since BGP is commonly employed for interconnectivity between autonomous systems (e.g. networks, each of which can independently handle distribution to individual IP addresses within the network), a straightforward check of the AS path included in the message104can establish loops.

For example, consider an autonomous system604, with an AS number of13900, that receives the message104from a peer (not shown). If the loop detection check602determines that AS number13900exists in the AS path of the message104, then the current route described by the AS path is (ostensibly) not the shortest route. That is, the message104has already traversed the present autonomous system so, according to BGP, if the message104is once more entering AS602again, the AS path was not the shortest path. Accordingly, the message104fails as indicated by element606and will not be forwarded. In most cases, the message104will simply be dropped or ignored.

However, if the problematic AS number is removed from message104(e.g., by the substitution component108as detailed inFIGS. 1 and 5) and replaced with a local AS number as is the case with output112, then there is no failure608and the output112(e.g. message104modified as described herein). While loop detection is sound policy in many cases, there exist situations in which all update messages (e.g., message104) between two disparate autonomous systems will fail606. In particular, valid data communications necessary to establish connectivity can be universally discarded, which can lead to reachability issues as described in more detail with reference toFIG. 7.

Turning now toFIG. 7, an example wide area network (WAN)700is shown in which reachability issues can arise. The WAN700can include a plurality of disparate VPNs such as VPN7021-7024, which can be referred to herein either individually or collectively as VPN702. However, it should be appreciated that each of the VPNs702can have characteristics that are distinguishing from other VPNs702. In accordance with one embodiment, the VPNs can be a layer 3 VPN (L3VPN) such as a BGP/MPLS (MulitProtocol Label Switching) VPN defined by RFC 2547 or 4364. Each of the VPNs702may have a Customer Edge (CE)704that can allow access to services. Typically, all traffic entrance and egress occurs by way of the CE704.

The CE704can interface with a Provider Edge (PE)706in order to access services. The PE706can be configured to interface the CE704and provide the services. Generally, PEs706exist at the edge of a Service Provider network (e.g., Service Provider Clouds7081,7082) and can provide inter alia an IP backbone for customers. The IP backbone can be ubiquitous, connecting all customer sites (e.g., VPNs702) by way of various service clouds708.

For the sake of illustration and not limitation and in accordance with one embodiment, each of the VPNs702is managed and/or owned by a single organization/corporation/customer; however, this need not be the case for all embodiments. For example, large organizations/corporations often have discrete and disparate networks at numerous locations across the globe. Each such location can be represented by a different VPN702. It is to be appreciated that although only four VPNs702are shown, virtually any number could exist without departing from the scope and spirit of the claimed subject matter.

While the Service Provider IP backbone can be ubiquitous, oftentimes, it is not an end-to-end solution for packet traffic between the customer VPNs702. That is, while the various service clouds708are interconnected, in some cases a message from VPN7021to VPN7024will not be propagated directly from service provider cloud7081to service provider cloud7082. Rather, in some cases the message must first traverse a firewall or DMZ (De-Militarization Zone)710. Customers typically require a DMZ710when the VPNs702individually have varying levels of security. In some cases, especially with large customers, all traffic to and from one of the VPNs702must traverse a central DMZ710.

As with the loop detection checks described supra, securing traffic for customer VPNs702is also often very sound policy. However, these two policies can create reachability/connectivity issues. For example, a Service Provider often employs the same AS number for all of the service clouds708. Thus, when a message leaves a service cloud (e.g.,7081), traverses the firewall710(as required for customer security), then attempts to re-enter the same or another service cloud (e.g.,7082) for forwarding to a destination, the PE706will drop the message because the AS number of the service provider already exists in the AS path. In essence, VPN7021cannot ever in these circumstances establish connectivity and/or reachability information vis-à-vis VPN7024.

In order to mitigate these and other issues, the system100ofFIG. 1(as well as the apparatus800ofFIG. 8infra) can be employed. For example, by way of illustration and not limitation, system100(as well as apparatus800) can be employed at any or all of the PEs706or CEs704. In accordance therewith, an AS number appended to an AS path prior to traversing a DMZ710can be overwritten with an AS number of a local CE704or PE706. Thus, subsequent loop detection at, e.g. a PE706need not produce a failure.

With reference now toFIG. 8, an apparatus800that can mitigate loop detection failure by selective modification to AS elements/attributes is depicted. In general, the apparatus800can include an interface802configured to receive a message804. The message804can include an AS path806that shows an ordered route of AS numbers corresponding to the autonomous systems the message804traversed prior to receipt by the interface802. The apparatus800can also include a router808associated with a router AS number810. An example of a router AS number810as shown here is64000. The router808can be configured as a node for a first VPN such as, e.g. as a node in one of the edges (704,706) ofFIG. 7. That router808may substitute at least one AS number (e.g., AS numbers812) in the AS path806with the router AS number810. An example substitution is illustrated in a substitute AS path814.

In accordance with one embodiment the message804can originate from a second VPN and can traverse a firewall or DMZ (e.g., DMZ710ofFIG. 7) along the route defined by the AS path806. According to one embodiment, both the first and the second VPN can be managed by a single customer or organization. In one embodiment, the first and second VPN are provided an IP backbone as well as other services by a single service provider. Generally, the services provided by the service provider correspond to a single AS number as relating to message804. It is to be appreciated that, in accordance with one embodiment of the claimed subject matter, the router808can operate according to a BGP routing policy defined by RFC 1771. It is to be further appreciated that system100ofFIG. 1can be a component of router808in certain embodiments.

FIGS. 9 and 10illustrate process flow diagrams of computer-implemented methods. While, for purposes of simplicity of explanation, the one or more methods shown herein, e.g., in the form of a flow chart, are shown and described as a series of acts, it is to be understood and appreciated that the subject invention is not limited by the order of acts, as some acts may, in accordance with the claimed subject matter, occur in a different order and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with the claimed subject matter. Additionally, it should be further appreciated that the methodologies disclosed hereinafter and throughout this specification are capable of being stored on an article of manufacture to facilitate transporting and transferring such methodologies to computers. The term article of manufacture, as used herein, is intended to encompass a computer program accessible from any computer-readable device, carrier, or media.

Turning now toFIG. 9, a method900for establishing problematic AS numbers and directing a message through a DMZ or firewall is illustrated. Typically, at reference numeral902, a list corresponding to particular AS numbers can be configured. For example, the list can be implemented with AS numbers that are known to create reachability issues such as AS numbers corresponding to service provider networks. In addition, the list can be configured with AS numbers inferred from various data sets by employing algorithms/mechanisms, as described in connection the intelligence component402ofFIG. 4.

At reference numeral904, a problematic AS number can be attached to the message. As indicated, often, this problematic AS number corresponds to the service provider that manages connectivity for customer VPNs (e.g., the VPN from which the message originated as well as, potentially, a disparate VPN that is the destination of the message). At reference numeral906, the message can be forwarded to a firewall and/or DMZ. For instance, the act indicated by reference numeral904can in certain cases relate to receiving the message from the VPN of origin, after which the message can be forwarded to a firewall en route to the destination. Accordingly, at reference numeral908, the message can be directed toward a second VPN (e.g., the destination), generally, by way of the common service provider backbone, since a customer typically employs the same service provider to service all customer VPNs.

With reference toFIG. 10, a method1000for mitigating loop detection failure by selective modifying AS elements/attributes is illustrated. At reference numeral1002, a message (e.g., in one embodiment, the message discussed at reference numerals904-908ofFIG. 9) can be received. The message can be a message for verifying connectivity and/or reachability such as, e.g. an open/update route message in accordance with BGP distribution. At reference numeral1004, the message can be searched for particular AS numbers such as known and/or inferred problematic AS numbers. These problematic AS numbers can be detected by searching the message (and/or the AS path of the message) for AS numbers that match configurable values in a list.

At reference numeral1006, the matching AS numbers (e.g., those that are known and/or inferred to be problematic) can be overwritten with a local AS number. Accordingly, if a loop detection check is performed on the message, such as at reference numeral1008, then the message can pass the loop detection test. It is to be appreciated that in many circumstances if the problematic AS numbers appear in the AS path of the message, a loop detection check would drop the message, thereby preventing connectivity between the origin of the message and its destination.

However, by overwriting the problematic AS numbers as discussed at reference numeral1006, the loop detection at reference numeral1004can be successfully navigated and the message can gain access to an autonomous system into which it might otherwise be barred, and, e.g. forwarded to the destination network/VPN. At reference numeral1010, the message can be admitted to the destination network and/or VPN. As such, the message can be employed to successfully establish connectivity between the aforementioned networks and/or be employed to update reachability information such as routing tables and the like.

In order to provide additional context for implementing various embodiments of the claimed subject matter,FIGS. 11-13and the following discussion is intended to provide a brief, general description of some suitable computing environments in which the various embodiments of the claimed subject matter may be implemented. For example, a substitution mechanism that mitigates loop detection, as described in the previous figures, can be implemented in, e.g., a router, or in another manner within one of the suitable (or similar) computing environment detailed infra. Moreover, the router as described in the figures herein may itself be implemented in one of the following suitable (or similar) computing environments. While portions of the claimed subject matter has been described above in the general context of computer-executable instructions of a computer program that runs on a local computer and/or remote computer, those skilled in the art will recognize that the subject matter may also be implemented in combination with other program modules. Generally, program modules include routines, programs, components, data structures, etc., that perform particular tasks and/or implement particular abstract data types.

Moreover, those skilled in the art will appreciate that the inventive methods may be practiced with other computer system configurations, including single-processor or multi-processor computer systems, minicomputers, mainframe computers, as well as personal computers, hand-held computing devices, microprocessor-based and/or programmable consumer electronics, and the like, each of which may operatively communicate with one or more associated devices. The illustrated embodiments of the claimed subject matter may also be practiced in distributed computing environments where certain tasks are performed by remote processing devices that are linked through a communications network. However, some, if not all, embodiments of the claimed subject matter may be practiced on stand-alone computers. In a distributed computing environment, program modules may be located in local and/or remote memory storage devices.

With reference toFIG. 11, an example environment1100for implementing various embodiments of the claimed subject matter includes a computer1111. The computer1111includes a processing unit1114, a system memory1116, and a system bus1118. The system bus1118couples system components including, but not limited to, the system memory1116to the processing unit1114. The processing unit1114can be any of various available processors. Dual microprocessors and other multiprocessor architectures also can be employed as the processing unit1114.

The system memory1116includes volatile memory1120and nonvolatile memory1122. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer1111, such as during start-up, is stored in nonvolatile memory1122. By way of illustration, and not limitation, nonvolatile memory1122can include read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), or flash memory. Volatile memory1120includes random access memory (RAM), which acts as external cache memory. By way of illustration and not limitation, RAM is available in many forms such as static RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), Rambus direct RAM (RDRAM), direct Rambus dynamic RAM (DRDRAM), and Rambus dynamic RAM (RDRAM).

It is to be appreciated thatFIG. 11can describe software that acts as an intermediary between users and the basic computer resources described in the suitable operating environment1100. Such software includes an operating system1128. Operating system1128, which can be stored on disk storage1124, acts to control and allocate resources of the computer system1111. System applications1130take advantage of the management of resources by operating system1128through program modules1132and program data1134stored either in system memory1116or on disk storage1124. It is to be appreciated that the claimed subject matter can be implemented with various operating systems or combinations of operating systems.

A user can enter commands or information into the computer1111through input device(s)1136. Input devices1136include, but are not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, TV tuner card, digital camera, digital video camera, web camera, and the like. These and other input devices connect to the processing unit1114through the system bus1118via interface port(s)1138. Interface port(s)1138include, for example, a serial port, a parallel port, a game port, and a universal serial bus (USB). Output device(s)1140use some of the same type of ports as input device(s)1136. Thus, for example, a USB port may be used to provide input to computer1111and to output information from computer1111to an output device1140. Output adapter1142is provided to illustrate that there are some output devices1140like monitors, speakers, and printers, among other output devices1140, which require special adapters. The output adapters1142include, by way of illustration and not limitation, video and sound cards that provide a means of connection between the output device1140and the system bus1118. It should be noted that other devices and/or systems of devices provide both input and output capabilities such as remote computer(s)1144.

Computer1111can operate in a networked environment using logical connections to one or more remote computers, such as remote computer(s)1144. The remote computer(s)1144can be a personal computer, a server, a router, a network PC, a workstation, a microprocessor based appliance, a peer device or other common network node and the like, and typically includes many or all of the elements described relative to computer1111. For purposes of brevity, only a memory storage device1146is illustrated with remote computer(s)1144. Remote computer(s)1144is logically connected to computer1111through a network interface1148and then physically connected via communication connection1150. Network interface1148encompasses wire and/or wireless communication networks such as local-area networks (LAN) and wide-area networks (WAN). LAN technologies include Fiber Distributed Data Interface (FDDI), Copper Distributed Data Interface (CDDI), Ethernet, Token Ring and the like. WAN technologies include, but are not limited to, point-to-point links, circuit switching networks like Integrated Services Digital Networks (ISDN) and variations thereon, packet switching networks, and Digital Subscriber Lines (DSL).

Communication connection(s)1150refers to the hardware/software employed to connect the network interface1148to the bus1118. While communication connection1150is shown for illustrative clarity inside computer1111, it can also be external to computer1111. The hardware/software necessary for connection to the network interface1148includes, for example purposes only, internal and external technologies such as, modems including regular telephone grade modems, cable modems and DSL modems, ISDN adapters, and Ethernet cards.

Referring now toFIG. 12, there is illustrated a block diagram of an exemplary computer system operable to execute the disclosed architecture. In order to provide additional context for various aspects of the claimed subject matter,FIG. 12and the following discussion are intended to provide a brief, general description of a suitable computing environment1200in which the various aspects of the claimed subject matter can be implemented. For example, various components of the systems and/or aspects thereof described supra can be implemented by way of the system1200. Additionally, while the claimed subject matter has been described above in the general context of computer-executable instructions that may run on one or more computers, those skilled in the art will recognize that the claimed subject matter also can be implemented in combination with other program modules and/or as a combination of hardware and software.

With reference again toFIG. 12, the exemplary environment1200for implementing various aspects of the claimed subject matter includes a computer1202, the computer1202including a processing unit1204, a system memory1206and a system bus1208. The system bus1208couples to system components including, but not limited to, the system memory1206to the processing unit1204. The processing unit1204can be any of various commercially available processors. Dual microprocessors and other multi-processor architectures may also be employed as the processing unit1204.

The system bus1208can be any of several types of bus structure that may further interconnect to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. The system memory1206includes read-only memory (ROM)1210and random access memory (RAM)1212. A basic input/output system (BIOS) is stored in a non-volatile memory1210such as ROM, EPROM, EEPROM, which BIOS contains the basic routines that help to transfer information between elements within the computer1202, such as during start-up. The RAM1212can also include a high-speed RAM such as static RAM for caching data.

The computer1202further includes an internal hard disk drive (HDD)1214(e.g., EIDE, SATA), which internal hard disk drive1214may also be configured for external use in a suitable chassis (not shown), a magnetic floppy disk drive (FDD)1216, (e.g., to read from or write to a removable diskette1218) and an optical disk drive1220, (e.g., reading a CD-ROM disk1222or, to read from or write to other high capacity optical media such as the DVD). The hard disk drive1214, magnetic disk drive1216and optical disk drive1220can be connected to the system bus1208by a hard disk drive interface1224, a magnetic disk drive interface1226and an optical drive interface1228, respectively. The interface1224for external drive implementations includes at least one or both of Universal Serial Bus (USB) and IEEE1394 interface technologies. Other external drive connection technologies are within contemplation of the claimed subject matter.

A number of program modules can be stored in the drives and RAM1212, including an operating system1230, one or more application programs1232, other program modules1234and program data1236. All or portions of the operating system, applications, modules, and/or data can also be cached in the RAM1212. It is appreciated that the claimed subject matter can be implemented with various commercially available operating systems or combinations of operating systems.

A user can enter commands and information into the computer1202through one or more wired/wireless input devices, e.g. a keyboard1238and a pointing device, such as a mouse1240. Other input devices (not shown) may include a microphone, an IR remote control, a joystick, a game pad, a stylus pen, touch screen, or the like. These and other input devices are often connected to the processing unit1204through an input device interface1242that is coupled to the system bus1208, but can be connected by other interfaces, such as a parallel port, an IEEE 1294 serial port, a game port, a USB port, an IR interface, etc.

A monitor1244or other type of display device is also connected to the system bus1208via an interface, such as a video adapter1246. In addition to the monitor1244, a computer typically includes other peripheral output devices (not shown), such as speakers, printers, etc.

When used in a LAN networking environment, the computer1202is connected to the local network1252through a wired and/or wireless communication network interface or adapter1256. The adapter1256may facilitate wired or wireless communication to the LAN1252, which may also include a wireless access point disposed thereon for communicating with the wireless adapter1256.

When used in a WAN networking environment, the computer1202can include a modem1258, or is connected to a communications server on the WAN1254, or has other means for establishing communications over the WAN1254, such as by way of the Internet. The modem1258, which can be internal or external and a wired or wireless device, is connected to the system bus1208via the serial port interface1242. In a networked environment, program modules depicted relative to the computer1202, or portions thereof, can be stored in the remote memory/storage device1250. It will be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers can be used.

FIG. 13is a schematic block diagram of a sample-computing environment1300with which the claimed subject matter can interact. The system1300includes one or more client(s)1310. The client(s)1310can be hardware and/or software (e.g., threads, processes, computing devices). The system1300also includes one or more server(s)1320. The server(s)1320can be hardware and/or software (e.g., threads, processes, computing devices). The servers1320can house threads to perform transformations by employing the subject innovation, for example.

One possible communication between a client1310and a server1320can be in the form of a data packet adapted to be transmitted between two or more computer processes. The system1300includes a communication framework1340that can be employed to facilitate communications between the client(s)1310and the server(s)1320. The client(s)1310are operably connected to one or more client data store(s)1340that can be employed to store information local to the client(s)1310. Similarly, the server(s)1320are operably connected to one or more server data store(s)1330that can be employed to store information local to the servers1320.