Techniques to allocate virtual network addresses

Techniques to allocate virtual network addresses are described. An apparatus may include a virtual network address management module. The virtual network address management module may be capable of determining an approximate age for a virtual network address, referred to herein as a virtual network address age value. The virtual network address management module may include a virtual network address assignment module, a virtual network address age generator and a message filter module. The virtual network address assignment module may be arranged to assign a virtual network address to a device at a virtual network address assignment time. The virtual network address age generator may be arranged to receive a message arrival time for a message with the virtual network address, and determine a virtual network address age value for the virtual network address with the virtual network address assignment time and the message arrival time. The message filter module may be arranged to determine whether to send the message to the device based on the virtual network address age value. Other embodiments are described and claimed.

BACKGROUND

Communication networks are designed to communicate information between various end points or destinations, such as various computing devices. In many cases, the communicated information is in the form of discrete messages, such as electronic mail (e-mail) messages, text messages, instant messages, chat messages, short message service (SMS) messages, multimedia message service (MMS) messages, and so forth. The speed, breadth, openness and convenience of messaging services, however, also allows for the potential abuse of electronic messaging systems to indiscriminately send unsolicited bulk messages, a technique sometimes colloquially referred to as “spamming.” There are many types of spamming, and one of the more recognized forms of spam is e-mail spam. E-mail spam, also known as bulk or junk e-mail, involves sending nearly identical (or with similar content, but perhaps very different representations generated automatically) messages to numerous recipients by e-mail. Multiple forms of the content are generated in an effort to defeat efforts to block the content. Common synonyms for e-mail spam is unsolicited bulk e-mail (UBE) or unsolicited commercial e-mail (UCE). Spamming in general, and e-mail spam in particular, is undesirable for many reasons, not the least of which is that a spammer typically sends e-mail spam with criminal intent to perform some form of fraud. Furthermore, e-mail spam also distracts from the quality of the conversation channel, and frequently involves forgery of the e-mail source. Consequently, there may be a need for improved techniques to reduce or prevent the communication of unsolicited messages in a communications network.

SUMMARY

Various embodiments may be generally directed to a communications network. Some embodiments may be particularly directed to techniques for allocating or assigning virtual network addresses, including virtual network addresses, to various computing devices within a communications network. The virtual network addresses may be assigned in a manner that allows an electronic messaging system to quickly determine how long a given virtual network address has been in use by calculating a virtual network address age value for the virtual network address. This allows the electronic messaging system to determine whether a message with the virtual network address is from a legitimate source or a malicious source based on the virtual network address age value, and route or filter the message accordingly.

In one embodiment, for example, an apparatus may comprise a virtual network address management module. The virtual network address management module may be capable of determining an approximate age for a virtual network address, referred to herein as a virtual network address age value. The virtual network address management module may include a virtual network address assignment module, a virtual network address age generator and a message filter module. The virtual network address assignment module may be arranged to assign a virtual network address to a device at a virtual network address assignment time. The virtual network address age generator may be arranged to receive a message arrival time for a message with the virtual network address, and determine a virtual network address age value for the virtual network address with the virtual network address assignment time and the message arrival time. The message filter module may be arranged to determine whether to send the message to the device based on the virtual network address age value. In this manner, the virtual network address management module may allow an electronic messaging system to dynamically handle message spam (e.g., quarantine, deliver, delete, and so forth) and potentially reduce an amount of message spam communicated within a communication network.

DETAILED DESCRIPTION

Various embodiments may be directed to a virtual network address allocation and filter scheme for a communications network. The virtual network address allocation and filter scheme may be designed to allocate virtual network addresses to one or more communication devices within a communications network. A virtual network address may comprise a network address that does not directly correspond to a specific computing device or network interface on a computing device. The virtual network address may be used for any number of reasons, such as providing connection redundancy, security features, routing flexibility, and so forth. In some cases, for example, multiple devices or machines may use a single virtual address. The virtual network address may be translated into a physical network address for a computing device in order to route information to the computing device.

More particularly, a virtual network address allocation and filter scheme may be used to allocate virtual network addresses in a manner that allows determination of how long a given virtual network address has been in use within a communications system. When a message with a virtual network address is received by an electronic messaging system, the electronic messaging system may determine or calculate a virtual network address assignment time for the virtual network address. The virtual network address assignment time may be determined in a number of different ways as described in more detail below. In some cases, the virtual network address assignment time may also be augmented, or replaced, by a virtual network address not-published time or a virtual network address invalid time as described further below. The virtual network address assignment time may be compared to a message arrival time. The message arrival time may represent a time when a message with a virtual network address is actually received by an electronic mail system, or alternatively, potentially when a resolver sends a Domain Name System (DNS) resolution request to a DNS server requesting a resource record for a given domain name and corresponding virtual network address for the domain name. In the latter case, however, both legitimate and potentially fraudulent senders will pick up the virtual network address from the DNS server, therefore making this implementation less efficient. Comparing the virtual network address assignment time with the message arrival time derives an approximate virtual network address age value for a given virtual network address.

In various embodiments, an electronic messaging system may use the approximate virtual network address age value to determine whether a communication message with a virtual network address is from a legitimate source or a malicious source. For example, the virtual network address age value may be compared to some threshold value, such as a Time To Live (TTL) value corresponding to the virtual network address as assigned by a DNS server. If the virtual network address age value is less than the TTL value, then the virtual network address is valid and likely from a legitimate source. If the virtual network address age value is greater than the TTL value, however, then the virtual network address is expired and likely from a malicious source.

The communications device can then perform filtering operations based on the comparison results to determine whether to forward the communication message to its intended destination. For example, if the communication message is identified as message spam based on the virtual network address age value used by the communication message, then the communication device may handle the message spam according to various defined rules, such as discarding the message spam, routing the message spam to another device or system for analysis or collecting statistics, marking the message spam, tracking the message spam, and so forth. In this manner, the communication of message spam within a communications network may be substantially reduced.

FIG. 1illustrates one embodiment of a communications system100. The communications system100may represent a general system architecture suitable for implementing various embodiments. The communications system100may comprise multiple elements. An element may comprise any physical or logical structure arranged to perform certain operations. Each element may be implemented as a hardware element, a software element, or any combination thereof, as desired for a given set of design parameters or performance constraints. Examples of hardware elements may include without limitation devices, components, processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, application specific integrated circuits (ASIC), programmable logic devices (PLD), digital signal processors (DSP), field programmable gate array (FPGA), memory units, logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. Examples of software elements may include without limitation any software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, interfaces, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Although the communications system100as shown inFIG. 1has a limited number of elements in a certain topology, it may be appreciated that the communications system100may include more or less elements in alternate topologies as desired for a given implementation. The embodiments are not limited in this context.

As shown in the illustrated embodiment ofFIG. 1, the communications system100may comprise various computing devices110-1-pand a server120(e.g., the server120may also comprise a computing device). The computing devices110-1-pmay comprise part of a public network and/or a private network. A public network may comprise any network accessible to a general class of users without discrimination. An example of the public network may include the Internet. A private network may comprise any network accessible to a limited class of users with discrimination between users and controlled access. An example of the private network may include a network for a business entity, such as an enterprise network. The server120may be implemented as a part of a public network or a private network as well depending on the type or class of clients serviced by the server120. In some cases, certain network elements or devices may bridge communications between the public and the private network. In such cases, these network elements or devices can be arranged to perform the translation of the virtual network address to the physical address of an individual machine.

In various embodiments, the communications system100may include packet-switched networks capable of supporting various types of messaging communications between various network devices. The messaging communications may include without limitation e-mail messages, text messages, instant messages, chat messages, short message service (SMS) messages, multimedia message service (MMS) messages, and so forth. Further, the packet-switched networks may implement various data-oriented protocols, such as one or more protocols from the Internet suite of protocols as defined and promulgated by the Internet Engineering Task Force (IETF) standards organization.

In various embodiments, the computing devices110-1-pmay each comprise or be implemented as a part, component or sub-system of an electronic device having a network address. Examples for electronic devices suitable for use as the computing devices110-1-pmay include without limitation a processing system, computer, server, work station, appliance, terminal, personal computer, laptop, ultra-laptop, handheld computer, personal digital assistant, television, digital television, set top box, telephone, mobile telephone, cellular telephone, handset, wireless access point, base station, subscriber station, mobile subscriber center, radio network controller, conference system, router, hub, gateway, bridge, switch, machine, or combination thereof. A more detailed example for the computing devices110-2,110-3may be described with reference toFIG. 4.

In various embodiments, the communications system100may include the server120. In some embodiments, the server120may be implemented as an electronic messaging system to manage message communications on behalf of a given client, such as the computing device110-3. Examples of electronic messaging systems may include any messaging system arranged to communicate various types of messages between multiple end points, such as the computing devices110-1-p. In one embodiment, for example, the server120may be implemented as an electronic messaging system suitable for communicating e-mail messages. In this context, the server120may be implemented as a mail transfer agent (MTA), a mail transport agent, a message transfer agent, a mail server, a mail exchanger, a unified messaging system, and so forth. In one embodiment, for example, the server120may be implemented as a MICROSOFT® EXCHANGE HOSTED SERVICES SERVER, made by Microsoft Corporation, Redmond, Wash.

As shown in the illustrated embodiment ofFIG. 1, the server120includes a DNS module122and a virtual network address management module (VNAMM)124. Although the illustrated embodiment shown inFIG. 1includes a single server120with the modules122,124for purposes of clarity, it may be appreciated that the Exchange Hosted Services offered by the server120may be implemented using an array of servers at one or more data centers. In the latter case, the server arrays and data centers may include other equipment, including load balancers, network appliances, and other network devices that may perform some or all of the functions described with reference to the server120. For example, a data center may comprise multiple DNS servers that may perform operations described with reference to the DNS module122, and a Global Server Load Balancing (GSLB) system to perform operations described with reference to the VNAMM124. The specific implementation of the principles described herein may vary in accordance with a given set of performance goals and design constraints. The embodiments are not limited in this context.

In various embodiments, the computing devices110-1-pmay each comprise various software and/or hardware message components to communicate electronic messages between each other and the server120. For example, the computing devices110-1,110-3may be arranged to originate and terminate messages. In the context of an e-mail message, the computing devices110-1,110-3may each include mail user agent (MUA) modules112,118. The MUA modules112,118are computer programs or software agents that allow a user or operator to create, send, receive or display electronic mail messages from one computer to another. Although the computing devices110-1,110-3are shown with the respective MUA modules112,118, it may be appreciated that the computing devices110-1,110-3may further include other messaging components, such as a mail submission agent (MSA) or a mail transfer agent (MTA) to transfer e-mail messages from other machines.

To implement e-mail operations, for example, the MUA modules112,118may be implemented as a MICROSOFT® OFFICE OUTLOOK e-mail client, made by Microsoft Corporation, Redmond, Wash. To implement other messaging operations, for example, the MUA modules112,118may be implemented as a MICROSOFT OFFICE COMMUNICATOR client. The MICROSOFT OFFICE COMMUNICATOR client is an integrated enterprise communications client, enabling information workers to communicate in real time through the use of instant messaging (IM), VoIP and videoconferencing. The MICROSOFT OFFICE COMMUNICATOR is typically not used as a standalone application, however, and is arranged to interact with the server120implemented as a MICROSOFT OFFICE COMMUNICATIONS SERVER.

An operator may generate a message160using the MUA module112for a given destination. An operator may input a network address for the message160, typically in the form of a user name and domain name, such as “user@microsoft.com,” and enter the content into the body of the message160. The network address may represent a user for the computing device110-3. Once the operator completes the message160, the MUA module112may forward the message160along a path140to the intended destination, such as the MUA module118of the computing device110-3.

Along the message path140, there may be one or more intermediate devices to assist in relaying the message160from the computing device110-1to the computing device110-3. In one embodiment, for example, the message path140may include a computing device110-2. The computing device110-2may be arranged to relay or transfer messages, such as the message160received from the computing device110-1. The computing device110-2may include a message transfer agent in the form of a Mail Transfer Agent (MTA) module112. The MTA module114is a computer program or software agent that transfers electronic mail messages from one computer to another. It typically receives messages from another MTA to perform mail relay operations, a MSA that itself got the mail from a MNA, or directly from an MUA, thus acting as an MSA itself. The MTA module114works behind the scenes, while the user usually interacts with the MUA modules112,118. Although the computing device110-2is shown with a MTA module114, it may be appreciated that the computing device110-2may further include a MSA and/or MUA to send or receive e-mail messages as well.

The use of messaging agents throughout the message path140leads to a fairly efficient mechanism for communicating messages between operators of the computing devices110-1-p. The speed and convenience of such messaging services, however, also allows for the potential abuse of electronic messaging systems to indiscriminately send unsolicited bulk messages or message spam. For example, a spammer typically sends spam with criminal intent to perform some form of fraud. To prevent detection and reduce costs, a spammer routinely attempts to compromise another computer to perform malicious tasks under remote detection. A compromised computer is sometimes referred to as a “zombie” or software robot (“bot”), with a group of bots forming a “botnet.” A bot controller may remotely instruct one or more bots to send message spam to other computers on a network using network addresses of the compromised computers. Since the network addresses are legitimate network addresses, it becomes difficult to differentiate between legitimate communication messages and message spam based on a given source network address. Consequently, there may be a need for improved techniques to reduce or prevent the communication of unsolicited messages in a communications network.

To solve these and other problems, the communications system100may utilize an electronic messaging system (e.g., the server120) that implements a unique virtual network address allocation and filter scheme to allocate or assign virtual network addresses to the various communication devices within a given network, such as an enterprise network. A virtual network address may comprise a network address that does not directly correspond to a specific computing device or network interface on a computing device. The virtual network address may be used by an enterprise network for any number of reasons, such as providing connection redundancy, security features, routing flexibility, and so forth. The virtual network address may be translated into a physical network address for a computing device in order to route information to the computing device. The virtual network address allocation and filter scheme may allow certain communication devices, such as the server120, to filter communication messages based on an age for the assigned virtual network addresses.

Typically the allocated virtual network address has a limit on the period of time it can remain in use by a given device. For example, a DNS server may associate various sorts of information with a domain name, and translate a human-readable domain name into a network address, such as an Internet Protocol (IP) address. In some cases, the network address may comprise a virtual network address. The DNS server may also assign a time domain parameter such as a Time To Live (TTL) value to the virtual network address. The TTL value defines a limit on the period of time that a resource record with the virtual network address can be cached on a host system prior to becoming invalid or expired. Since a compromised computer such as a zombie or a bot attempts to exploit captured and legitimate e-mail addresses for as long as possible, the compromised computer may utilize a virtual network address to send message spam beyond the time period indicated by the TTL value. In some cases, however, it may be difficult for an electronic messaging system to determine whether a given communication message includes a virtual network address with an expired TTL value. Various embodiments implement a virtual network address allocation and filter scheme to assist an electronic messaging system in making such a determination. In one embodiment, for example, the virtual network address allocation and filter scheme may be implemented by the VNAMM124of the server120as described in more detail with reference toFIG. 2.

FIG. 2illustrates a more detailed block diagram for the VNAMM124. The VNAMM124may be capable of determining an approximate age for a virtual network address (VNA)222-1-r, as represented by a virtual network address age value (VNAAV)240. The VNAMM124may include, among other software components, a virtual network address assignment module (VNAAM)202, a virtual network address age generator (VNAAG)204, and a message filter module206.

The VNAAM202may be arranged to assign a VNA222-1-rto a network device serviced by the server120. For example, assume the computing device110-3is part of an enterprise network serviced by a global data center represented by the server120. The VNAAM202may temporarily allocate or assign a VNA222-1-rto various network devices within the enterprise network, as represented by the computing device110-3. The VNAAM202may store the assigned VNA222-1-rin a virtual network address tracking table (VNATT)220, along with other associated information. For example, the VNAAM202may store a device identifier (DID)228-1-ufor each network device assigned a VNA222-1-rin the VNATT220. The DID228-1-umay comprise, for example, a physical address, a hardware address, a media access control (MAC) address, a globally unique identifier (GUID) and so forth. The VNAAM202may also store a virtual network address assignment time (VNAAT)226-1-tin the VNATT220representing when the VNA222-1-rwas assigned to the network device. The VNAAM202may further store a TTL value (TTLV)224-1-sin the VNATT220representing a TTL value assigned by a DNS server as represented by the DNS module122. It may be appreciated that other relevant information may be stored with the VNA222-1-rusing the VNATT220as desired for a given implementation.

The VNAAM202may allocate or assign the VNA222-1-rin a manner that allows the VNAMM124of the server120to instantaneously determine how long a given VNA222-1-rhas been in use within the communications system100by calculating a VNAAV240for the VNA222-1-r. The VNAAM202may store a VNAAT226-1-tin the VNATT220representing when the VNA222-1-rwas explicitly or approximately assigned to a given network device. The VNAAG204may then derive the VNAAV240using the VNAAT226-1-t.

In another example, the VNAAM202may segment the VNA222-1-rinto separate blocks, and rotate allocation or assignment of individual VNA222-1-rwithin each block on a timed basis in accordance with a virtual network address rotation value. The VNAAG204may then derive a VNAAT226-1-tfor a VNG222-1-rusing a virtual network address block number for the VNA222-1-rand the virtual network address rotation value. The calculated VNAAT226-1-tmay then be used to derive the VNAAV240. The latter technique may provide less granularity and preciseness relative to recording and using an explicitly recorded VNAAT226-1-tfor each assigned VNA222-1-r, although it will potentially consume less memory at the cost of increased processing cycles.

In some cases, the virtual network address assignment time may also be augmented, or replaced, by a virtual network address not-published time or a virtual network address invalid time. For example, when using a block of virtual addresses, the virtual network address rotation value may be used to determine when a virtual network address should no longer be published or is invalid. In this case, the VNAAG204may determine whether a given virtual network address is invalid without necessarily having to compute the VNAAT226-1-tor VNAAV240. For example, a flag or variable may be set to indicate whether a given VNA222-1-ris valid or invalid at any given point in time, and the VNAAG204and the message filter206may check the current state of the flag for a the VNA222-1-rto determine a respective age or filter option for the VNA222-1-r. It may be appreciated that other time measurement techniques and values may be implemented by the VNAAM202as well in order to accomplish the design parameters and performance goals as described herein.

The VNAAG204may be arranged to determine an explicit or approximate VNAAV240for a given VNA222-1-rreceived from a message, such as the message160. The VNAAG204may receive as inputs a message arrival time230for the message160, and a VNA162from the message160that corresponds to one of the VNA222-1-r. For example, the VNAAG204may search the VNATT220using the VNA162to find a corresponding VNA222-1-r, and either calculate or retrieve the corresponding VNAAT226-1-tdepending on the particular assignment technique implemented for the VNAAM202. The message arrival time230may represent a time when the message160with the VNA162is actually received by the server120. Alternatively, the message arrival time230may represent a time when a resolver sends a DNS resolution request to the DNS module122requesting a resource record for a given domain name and corresponding VNA for the domain name. In either case, the VNAAG204may determine a VNAAV240for the VNA162with the VNAAT226-1-tand the message arrival time230, and output the VNAAV240to the message filter206.

The message filter206may be arranged to determine whether the message160with the VNA162is from a legitimate source or a malicious source based on the VNAAV240, and route or filter the message162accordingly. The message filter206may receive the VNAAV240from the VNAAG204, and determine whether to send or forward the message160to the computing device110-3based on the VNAAV240. The message filter206may have a set of filter rules208to cause the message filter206to implement any desired set of rule-based operations. For example, the VNAAV240may be compared to some threshold value, such as a TTLV224-1-scorresponding to the VNA222-1-ras assigned by the DNS module122. If the VNAAV240is less than the TTLV224-1-s, then the VNA222-1-rmay be considered valid and likely from a legitimate source. If the VNAAV240is greater than the TTLV224-1-s, however, then the VNA222-1-ris considered expired and likely from a malicious source.

If the message160is identified as message spam based on the VNAAV240for the VNA162used by the message160, then the server120may handle the message spam according to various defined rules from the filter rules208. For example, the message filter module206may discard the message spam, route the message spam to another device or system for analysis or collecting statistics, mark and forward the message spam, track the message spam, forward the message spam, place the message in an archive of spam and so forth. In this manner, the VNAMM124may allow the server120to filter any messages serviced by the server120, thereby reducing an amount of message spam communicated within the communication system100.

Operations for the communications system100may be further described with reference to one or more logic flows. It may be appreciated that the representative logic flows do not necessarily have to be executed in the order presented, or in any particular order, unless otherwise indicated. Moreover, various activities described with respect to the logic flows can be executed in serial or parallel fashion. The logic flows may be implemented using one or more elements of the communications system100or alternative elements as desired for a given set of design and performance constraints. Other anti-spam activities may be interspersed into these operations.

FIG. 3illustrates a logic flow300. The logic flow300may be representative of the operations executed by one or more embodiments described herein. As shown inFIG. 3, the logic flow300may assign a virtual network address to a device at a virtual network address assignment time at block302. The logic flow300may receive a message arrival time for a message with the virtual network address at block304. The logic flow300may determine a virtual network address age value for the virtual network address with the virtual network address assignment time and the message arrival time at block306. The logic flow300may determine whether the virtual address is valid or invalid based on the virtual network address age value at block308. The embodiments are not limited in this context.

In one embodiment, the logic flow300may assign a virtual network address to a device at a virtual network address assignment time at block302. For example, the VNAAM202of the VNAMM124of the server120may assign a given VNA222-1-rto the computing device110-3as represented by a DID228-1-uat a given VNAAT226-1-t. The VNAAT226-1-tmay be explicit as measured by a timer. The VNAAT226-1-tmay also be derived by having the VNAAM202assign the VNA222-1-rto the computing device110-3from a certain block of virtual network addresses in accordance with a virtual network address rotation value, and calculating the VNAAT226-1-tfrom a virtual network address block number and the virtual network address rotation value. The VNAAM202may store the assigned VNA222-1-r, a TTLV224-1-scorresponding to the assigned VNA222-1-r, and the VNAAT226-1-tin the VNATT220. In some cases, the VNAAM202may also store the DID228-1-uin the VNATT220as well to facilitate VNATT220searches.

In one embodiment, the logic flow300may receive a message arrival time for a message with the virtual network address at block304. For example, the VNAAG204may receive a message arrival time230for the message160with the VNA162. The message arrival time230may represent a time when the message160is received by the server120, or alternatively, when a resolver (e.g., from the computing device110-2) sends a DNS resolution request to the DNS module122requesting a resource record for a given domain name and corresponding VNA162for the domain name in anticipation of performing a message transfer of the message160.

In one embodiment, the logic flow300may determine a virtual network address age value for the virtual network address with the virtual network address assignment time and the message arrival time at block306. For example, the VNAAG204may receive as inputs a message arrival time230for the message160, and a VNA162from the message160that corresponds to one of the VNA222-1-r. The VNAAG204may search the VNATT220using the VNA162to find a corresponding VNA222-1-r, and either calculate or retrieve the corresponding VNAAT226-1-tdepending on the particular assignment technique implemented for the VNAAM202. The VNAAG204may determine a VNAAV240for the VNA162with the VNAAT226-1-tand the message arrival time230, and output the VNAAV240to the message filter206.

In one embodiment, the logic flow300may determine whether the virtual address is valid or invalid based on the virtual network address age value at block308For example, the VNAAG204may place a particular VNA222-1-rin use with a limited TTLV224-1-s. At some point, the VNAAG204stops offering the assigned VNA222-1-rwhen the TTLV224-1-sexpires. In some cases, an error buffer may be added to the TTLV224-1-s, such as follows:
Tinvalid=TnotPublishedAnyMore+k*TTL; or
Tinvalid=TnotPublishedAnyMore+k+TTL)
Prior to the TTLV224-1-sexpiring, or the TTLV224-1-splus some threshold value from the error buffer expiring, the message filter module206can consider the VNA222-1-rvalid. When the TTLV224-1-sexpires, or the TTLV224-1-splus some threshold value from the error buffer expires, the message filter module206can consider the VNA222-1-rinvalid.

In some cases, the message filter module206may discard the message160when the VNAAV240is greater than the appropriate TTLV224-1-sby some threshold value. The threshold value may be set to bias whether the message160is forwarded to the computing device110-3. For example, a larger threshold value will cause the message filter module206to forward the message160to the computing device110-3even when the VNAAV240comparison operations indicates that the VNA162,222-1-ris expired by some amount of time, thereby reflecting a bias towards more relaxed filtering rules to ensure a greater likelihood that messages reach the computing device110-3and are not discarded.

FIG. 4illustrates a block diagram of a computing system architecture400suitable for implementing various embodiments, including the communication system100. It may be appreciated that the computing system architecture400is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the embodiments. Neither should the computing system architecture400be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary computing system architecture400.

Various embodiments may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include any software element arranged to perform particular operations or implement particular abstract data types. Some embodiments may also be practiced in distributed computing environments where operations are performed by one or more remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote computer storage media including memory storage devices.

As shown inFIG. 4, the computing system architecture400includes a general purpose computing device such as a computer410. The computer410may include various components typically found in a computer or processing system. Some illustrative components of computer410may include, but are not limited to, a processing unit420and a memory unit430.

In one embodiment, for example, the computer410may include one or more processing units420. A processing unit420may comprise any hardware element or software element arranged to process information or data. Some examples of the processing unit420may include, without limitation, a complex instruction set computer (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (VLIW) microprocessor, a processor implementing a combination of instruction sets, or other processor device. In one embodiment, for example, the processing unit420may be implemented as a general purpose processor. Alternatively, the processing unit420may be implemented as a dedicated processor, such as a controller, microcontroller, embedded processor, a digital signal processor (DSP), a network processor, a media processor, an input/output (I/O) processor, a media access control (MAC) processor, a radio baseband processor, a field programmable gate array (FPGA), a programmable logic device (PLD), an application specific integrated circuit (ASIC), and so forth. The embodiments are not limited in this context.

In one embodiment, for example, the computer410may include one or more memory units430coupled to the processing unit420. A memory unit430may be any hardware element arranged to store information or data. Some examples of memory units may include, without limitation, random-access memory (RAM), dynamic RAM (DRAM), Double-Data-Rate DRAM (DDRAM), synchronous DRAM (SDRAM), static RAM (SRAM), read-only memory (ROM), programmable ROM (PROM), erasable programmable ROM (EPROM), EEPROM, Compact Disk ROM (CD-ROM), Compact Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW), flash memory (e.g., NOR or NAND flash memory), content addressable memory (CAM), polymer memory (e.g., ferroelectric polymer memory), phase-change memory (e.g., ovonic memory), ferroelectric memory, silicon-oxide-nitride-oxide-silicon (SONOS) memory, disk (e.g., floppy disk, hard drive, optical disk, magnetic disk, magneto-optical disk), or card (e.g., magnetic card, optical card), tape, cassette, or any other medium which can be used to store the desired information and which can accessed by computer410. The embodiments are not limited in this context.

In one embodiment, for example, the computer410may include a system bus421that couples various system components including the memory unit430to the processing unit420. A system bus421may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus, and so forth. The embodiments are not limited in this context.

In various embodiments, the computer410may include various types of storage media. Storage media may represent any storage media capable of storing data or information, such as volatile or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writeable or re-writeable memory, and so forth. Computer readable media may include storage media adapted for reading and writing to a computing system, such as the computing system architecture400. Examples of computer readable media for computing system architecture400may include, but are not limited to, volatile and/or nonvolatile memory such as ROM431and RAM432. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio-frequency (RF) spectrum, infrared and other wireless media. Combinations of the any of the above should also be included within the scope of computer readable media.

In various embodiments, the memory unit430includes computer storage media in the form of volatile and/or nonvolatile memory such as ROM431and RAM432. A basic input/output system433(BIOS), containing the basic routines that help to transfer information between elements within computer410, such as during start-up, is typically stored in ROM431. RAM432typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit420. By way of example, and not limitation,FIG. 4illustrates operating system434, application programs435, other program modules436, and program data437.

The computer410may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only,FIG. 4illustrates a hard disk drive440that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive451that reads from or writes to a removable, nonvolatile magnetic disk452, and an optical disk drive455that reads from or writes to a removable, nonvolatile optical disk456such as a CD ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. The hard disk drive441is typically connected to the system bus421through a non-removable memory interface such as interface440, and magnetic disk drive451and optical disk drive455are typically connected to the system bus421by a removable memory interface, such as interface450.

The drives and their associated computer storage media discussed above and illustrated inFIG. 4, provide storage of computer readable instructions, data structures, program modules and other data for the computer410. InFIG. 4, for example, hard disk drive441is illustrated as storing operating system444, application programs445, other program modules446, and program data447. Note that these components can either be the same as or different from operating system434, application programs435, other program modules436, and program data437. Operating system444, application programs445, other program modules446, and program data447are given different numbers here to illustrate that, at a minimum, they are different copies. A user may enter commands and information into the computer410through input devices such as a keyboard462and pointing device461, commonly referred to as a mouse, trackball or touch pad. Other input devices (not shown) may include a microphone, joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit420through a user input interface460that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor484or other type of display device is also connected to the system bus421via an interface, such as a video processing unit or interface482. In addition to the monitor484, computers may also include other peripheral output devices such as speakers487and printer486, which may be connected through an output peripheral interface483.

The computer410may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer480. The remote computer480may be a personal computer (PC), a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer410, although only a memory storage device481has been illustrated inFIG. 4for clarity. The logical connections depicted inFIG. 4include a local area network (LAN)471and a wide area network (WAN)473, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.

When used in a LAN networking environment, the computer410is connected to the LAN471through a network interface or adapter470. When used in a WAN networking environment, the computer410typically includes a modem472or other technique suitable for establishing communications over the WAN473, such as the Internet. The modem472, which may be internal or external, may be connected to the system bus421via the network interface470, or other appropriate mechanism. In a networked environment, program modules depicted relative to the computer410, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation,FIG. 4illustrates remote application programs485as residing on memory device481. It will be appreciated that the network connections shown are exemplary and other techniques for establishing a communications link between the computers may be used. Further, the network connections may be implemented as wired or wireless connections. In the latter case, the computing system architecture400may be modified with various elements suitable for wireless communications, such as one or more antennas, transmitters, receivers, transceivers, radios, amplifiers, filters, communications interfaces, and other wireless elements. A wireless communication system communicates information or data over a wireless communication medium, such as one or more portions or bands of RF spectrum, for example. The embodiments are not limited in this context.

Some or all of the computing system architecture400may be implemented as a part, component or sub-system of an electronic device. Examples of electronic devices may include, without limitation, a processing system, computer, server, work station, appliance, terminal, personal computer, laptop, ultra-laptop, handheld computer, minicomputer, mainframe computer, distributed computing system, multiprocessor systems, processor-based systems, consumer electronics, programmable consumer electronics, personal digital assistant, television, digital television, set top box, telephone, mobile telephone, cellular telephone, handset, wireless access point, base station, subscriber station, mobile subscriber center, radio network controller, router, hub, gateway, bridge, switch, machine, or combination thereof. The embodiments are not limited in this context.

In some cases, various embodiments may be implemented as an article of manufacture. The article of manufacture may include a storage medium arranged to store logic and/or data for performing various operations of one or more embodiments. Examples of storage media may include, without limitation, those examples as previously described. In various embodiments, for example, the article of manufacture may comprise a magnetic disk, optical disk, flash memory or firmware containing computer program instructions suitable for execution by a general purpose processor or application specific processor. The embodiments, however, are not limited in this context.

Various embodiments may be implemented using hardware elements, software elements, or a combination of both. Examples of hardware elements may include any of the examples as previously provided for a logic device, and further including microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, and so forth), integrated circuits, logic gates, registers, semiconductor device, chips, microchips, chip sets, and so forth. Examples of software elements may include software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, procedures, software interfaces, application program interfaces (API), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. Determining whether an embodiment is implemented using hardware elements and/or software elements may vary in accordance with any number of factors, such as desired computational rate, power levels, heat tolerances, processing cycle budget, input data rates, output data rates, memory resources, data bus speeds and other design or performance constraints, as desired for a given implementation.

It is emphasized that the Abstract of the Disclosure is provided to comply with 37 C.F.R. Section 1.72(b), requiring an abstract that will allow the reader to quickly ascertain the nature of the technical disclosure. It is submitted with the understanding that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment. In the appended claims, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein,” respectively. Moreover, the terms “first,” “second,” “third,” and so forth, are used merely as labels, and are not intended to impose numerical requirements on their objects. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.