Macro user equipment initiated evolved inter-cell interference coordination mechanism through private femtocells

In one embodiment, a wireless base station, receives a random access preamble from a wireless device that is not authorized to utilize the wireless base station; completes a random access procedure with the wireless device; receives an interference stress message from the wireless device, the interference stress message indicating that the wireless device suffers interference from the wireless base station; and reduces interference for the wireless device.

TECHNICAL FIELD

This disclosure generally relates to wireless communications and more specifically relates to inter-cell interference coordination between wireless devices and wireless base stations.

BACKGROUND

In a wireless communications network, there may be any number of wireless base stations, each installed at a fixed location, that serve individual wireless devices in the network. For example, in a cellular network, there may be any number of wireless base stations serving individual cellular telephones. More specifically, in a cellular radio system, a land area to be supplied with radio service is typically divided into regular shaped cells, each served by at least one fixed-location transceiver known as a cell site or a base station. When joined together these cells provide radio coverage over a wide geographic area. This enables a large number of portable transceivers (e.g., mobile telephones, pagers, etc.) to communicate with each other and with fixed transceivers and telephones anywhere in the network, via base stations, even if some of the transceivers are moving through more than one cell during transmission.

DESCRIPTION OF EXAMPLE EMBODIMENTS

A cellular network is a radio network distributed over land areas called cells, each served by at least one fixed-location transceiver known as a cell site or a base station. When joined together these cells provide radio coverage over a wide geographic area. This enables a large number of portable transceivers (e.g., mobile telephones, pagers, etc.) to communicate with each other and with fixed transceivers and telephones anywhere in the network, via base stations, even if some of the transceivers are moving through more than one cell during transmission.

There may be several types of cells in a cellular network. For example, a macrocell is a cell that provides radio coverage over a relatively large area and is served by a powerful cellular base station. The antennas for macrocells are usually mounted on ground-based masts, rooftops, and other existing structures, at a height that provides a clear view over the surrounding buildings and terrain. Macrocell base stations typically have power outputs of tens of watts. A microcell is a cell served by a low power cellular base station, and covers a limited area such as a mall, a hotel, or a transpiration hub. Generally, microcells provide coverage areas smaller than macrocells. A microcell uses power control to limit the radius of its coverage area. A picocell is a small cell typically covering a small area, such as inside a building (e.g., offices, shopping malls, train stations, etc.), or more recently inside an aircraft. A picocell is usually smaller than a microcell, though the distinction is not always clear. Picocells are typically used to extend coverage to indoor areas where outdoor signals do not reach well, or to add network capacity in areas with very dense telephone usage (e.g., train stations). Picocells provide coverage and capacity in areas difficult or expensive to reach using the more traditional macrocell approach. A femtocell is another small cell typically designed to use in a home or a small business. A femtocell connects to a service provider's network via broadband (e.g., DSL or cable). Current designs of femtocells typically support two to four active mobile telephones in residential settings, and eight to sixteen active mobile telephones in enterprise settings. A femtocell allows service providers to extend service coverage indoors, especially where access would otherwise be limited or unavailable.

In a cellular network, a portable wireless device (e.g., mobile telephones, pagers, etc.) located in a specific cell may communicate with the other devices in the network via the base stations serving that cell, by transmitting and receiving data packets through the base stations serving that cell. If the portable wireless device moves to another cell, it may communicate with the other devices in the network via the base stations serving the second cell, again, by transmitting and receiving data packets through the base stations serving the second cell.

In particular embodiments, in a cellular network, there may be cells that serve all wireless devices belonging to the network, and there may be cells that serve only specific sets of wireless devices belonging to the network. The former may be referred to as “public cells”, and the latter may be referred to as “private cells”. Examples of public cells may include, without limitation, macrocells, microcells, and picocells. Examples of private cells may include, without limitation, picocells and femtocells. In particular embodiments, a wireless device belonging to a cellular network may utilize the base stations serving any public cell to communicate with the other devices also in the network. On the other hand, for a private cell, only a wireless device that belongs to the cellular network and is also authorized to use the private cell may utilize the base station serving the private cell to communicate with the other devices in the network.

FIG. 1illustrates a portion of an example cellular network that includes a public cell112and a private cell122. In particular embodiments, public cell112may be a macrocell, and private cell122may be a femtocell. In particular embodiments, there may be one or more base stations110serving macrocell112(hereafter referred to as “macrocell base station”). Similarly, there may be one or more base stations120serving femtocell122(hereafter referred to as “femtocell base station”).

In particular embodiments, macrocell112may serve a relatively large area, while femtocell122may serve a relatively small area (e.g., a home, an office, etc.). In particular embodiments, any wireless device in the network may utilize macrocell base station110to communicate with the other devices in the network. On the other hand, only a specific set of wireless devices in the network that are also authorized to use femtocell122may utilize femtocell base station120to communicate with the other devices in the network. For example, inFIG. 1, suppose wireless devices130A,130B,130C all belong to the network and thus can all utilize macrocell base station110, but only wireless device130C is authorized to utilize femtocell base station120and wireless devices130A and130B are not authorized to use femtocell base station120. In particular embodiments, wireless devices130A,130B,130C may each be a mobile or cellular telephone, and may also be referred to as “user equipment”.

In particular embodiments, a femtocell base station (e.g., femtocell base station120) may communicate with each wireless device (e.g., wireless device130C) authorized to utilize the femtocell base station using the 3GPP (3rd Generation Partnership Project) LTE (Long Term Evolution) standard. In particular embodiments, a femtocell base station (e.g., femtocell base station120) may be connected to an Internet connection (e.g., through an Ethernet connection) available at the location where femtocell base station120is installed (e.g., the Internet connection available at the home or office where femtocell base station120is installed). Data packets to and from wireless device130C may be received and transmitted over the Internet connection.

In particular embodiments, there may be one or more specific wireless devices (e.g., wireless device130C) that are authorized to utilize a femtocell base station (e.g., femtocell base station120) to communicate with the other devices in the network. In particular embodiments, femtocell base station120only services and responds to requests from an authorized wireless device (e.g., wireless device130C), and ignores requests from any unauthorized wireless device (e.g., wireless devices130A and130B). In particular embodiments, femtocell base station120may maintain a list of identifiers of the authorized wireless devices in order to determine which wireless device is authorized to utilize it and which is not. In particular embodiments, a wireless device (e.g., wireless device130C) may maintain a list of identifiers of the femtocells that the wireless device is authorize to use so that the wireless device only utilizes those femtocell base stations that it is authorized to utilize.

In particular embodiments, there may be interferences from specific wireless base stations to specific wireless devices, due to the wireless base stations transmitting various types signals at various times. For example, inFIG. 1, wireless devices130A and130B are not authorized to utilize femtocell base station120, and can only use macrocell base station110. Yet, femtocell base station120may cause interferences to wireless devices130A and130B, especially when wireless devices130A and130B get closer to femtocell base station120. Wireless device130C is authorized to utilize both femtocell base station120and macrocell base station110. When wireless device130C is closer to femtocell base station120, it may be preferable for wireless device130C to communicate with other devices via femtocell base station120because femtocell base station120provides stronger, clearer signals under the circumstances, and yet, macrocell base station110may cause interferences to wireless device130C. Sometimes, the interferences from one wireless base station may be so strong, and thus bad, that a wireless device may not be able to communicate with another wireless base station at all. For example, inFIG. 1, wireless device130B may be sufficiently close to femtocell base station120such that, in the worst case scenario, the interferences from femtocell base station120may completely prevent wireless device130B from communicating with macrocell base station110.

There may be several approaches to address the problem of a wireless base station (e.g., femtocell base station120) causing interferences to a wireless device (e.g., wireless device130A or wireless device130B), especially to a wireless device not authorized to utilize the wireless base station. Particular embodiments may provide a time domain approach to the problem. In this case, a first wireless base station (e.g., femtocell base station120) may reduce its interferences to a wireless device by not transmitting in some subframes. The wireless device may then use those subframes, in which the first wireless base station does not transmit, to communicate with a second wireless base station (e.g., macrocell base station110). Alternatively, particular embodiments may provide a frequency domain approach. In this case, a first wireless base station (e.g., femtocell base station120) may reduce its interferences to a wireless device by limiting its air resource usage to a part of the frequencies and not transmitting in some frequencies. The wireless device may use those frequencies, in which the first wireless base station does not transmit, to communicate with a second wireless base station (e.g., macrocell base station110). Alternatively, particular embodiments may provide a power control based approach. In this case, a first wireless base station (e.g., femtocell base station120) may reduce its interferences to a wireless device by reducing its transmission power when necessary. However, all of these approaches require that the wireless device maintaining its connection with the second base station (e.g., macrocell base station110) for signaling. That is, the wireless device needs to be able to communicate with the second base station in order to indicate to the second base station that it is suffering from the interferences from the first base station. Only then can the second base station communicate with the first base station to request that the first base station reduces its interferences for the wireless device. Yet, under some circumstances, the interferences from the first base station (e.g., femtocell base station120) to the wireless device (e.g., wireless device130A or130B) may be so strong (e.g., when the wireless device is very close to the first base station, when there is a sudden increase in interferences from the first base station, or when there is a sudden decrease of signal strength from the second base station) such that the wireless device may not be able to maintain any connection with the second base station. Consequently, in such cases, the wireless device cannot inform the second base station at all that it is suffering from the interferences from the first base station.

Particular embodiments address the problem of a wireless base station (e.g., femtocell base station120) causing interferences to a wireless device (e.g., wireless device130A or130B), especially to a wireless device not authorized to utilize the wireless base station, by enabling the wireless device to initiate an evolved Inter-Cell Interference Coordination (eICIC) mechanism through the wireless base station. In particular embodiments, the wireless device may initiate eICIC when necessary (e.g., when the wireless device suffers interferences from the wireless base station).

FIG. 2illustrates a first example message flow for reducing interference caused by a wireless base station to a wireless device not authorized to utilize the wireless base station.FIG. 3illustrates a second example message flow for reducing interference caused by a wireless base station to a wireless device not authorized to utilize the base station.FIG. 4illustrates an example method for reducing interference caused by a wireless base station to a wireless device not authorized to utilize the wireless base station. The steps illustrated inFIG. 4are described in connection with the message flows illustrated inFIGS. 2 and 3.

In particular embodiments, there are two wireless base stations (i.e., a first wireless base station and a second wireless base station) and a wireless device involved. For example, the first wireless base station may be a femtocell base station; the second wireless base station may be a macrocell base station; and the wireless device may be a cellular telephone. InFIGS. 2 and 3, femtocell base station220is an example of the first base station; macrocell base station210is an example of the second base station; and wireless device230is an example of the wireless device. In particular embodiments, the wireless device is authorized to utilize (e.g., connect to and communicate with) the second wireless base station, but is not authorized to utilize the first wireless base station. For example, inFIGS. 2 and 3, wireless device230is authorized to utilize macrocell base station210, but is not authorized to utilize femtocell base station220. In particular embodiments, the wireless device suffers interferences from the first wireless base station. For example, inFIGS. 2 and 3, wireless device230suffers interferences from femtocell base station220. Suppose that wireless device230wishes to initiate eICIC to have femtocell base station220reduce its interferences so that wireless device230may connect to and utilize macrocell base station210.

In particular embodiments, wireless device230initiates a random access procedure with femtocell base station220by transmitting a random access preamble to femtocell base station220, as illustrated in STEP402. In particular embodiments, the random access procedure preamble may be a standard random access procedure preamble. Alternatively, in particular embodiments, the random access procedure preamble may be a special, non-standard random access procedure preamble. For example, a set of preambles may be reserved for the purpose of managing interferences. These special preambles may be referred to as non-standard random access procedure preambles to distinguish them from the standard random access procedure preambles used for regular network access. In the non-standard case, the non-standard random access procedure preamble may, although not necessarily, include some information specifically relevant to the interference stress. In particular embodiments, femtocell base station220may assign a different priority (e.g., a higher priority) to wireless device230if wireless device230has sent a non-standard random access procedure preamble. For example, femtocell base station220may respond to the non-standard random access procedure preamble sent by wireless device230as soon as possible so that wireless device230does not need to suffer the interference stress for long. On the other hand, if wireless device230has sent a standard random access procedure preamble, femtocell base station220still responds to the standard random access procedure preamble as it normally does but may not give wireless device230a higher priority so that there may be some delay before the interference is reduced for wireless device230.

In particular embodiments, even though wireless device230is not authorized to connect with femtocell base station220, femtocell base station220nevertheless completes the random access procedure with wireless device230, as illustrated in STEP404. Femtocell base station220does not ignore wireless device230in this case. In particular embodiments, the random access procedure may include several handshake and authentication steps between femtocell base station220and wireless device230. For example, the random access procedure may include four communication steps between femtocell base station220and wireless device230.

In particular embodiments, after the random access procedure has been completed, wireless device230transmits an interference stress message to femtocell base station220, as illustrated in STEP406. The interference stress message indicates to femtocell base station220that wireless device230is suffering interferences from femtocell base station220. In particular embodiments, the interference stress message may include an identifier of femtocell base station220, one or more measurements of the interferences, and any other applicable information.

Upon receiving the interference stress message from wireless device230, femtocell base station220may respond in several ways. In particular embodiments, femtocell base station220may forward the interference stress message to a coordination device over the network, as illustrated in STEP408.FIG. 2illustrates an example of this response. In particular embodiments, the coordination device may be a self-organizing network server in the cellular network for interference coordination. The coordination device may have information about many parts of the network (e.g., having a comprehensive view of the network and information about many base stations in the network) so that the coordination device may determine how to appropriately reduce interferences for each base station. InFIG. 2, server250is an example of the coordination device. Femtocell base station220may forward the interference stress message to server250over core network240. Upon receiving the interference stress message from femtocell base station220, server250may determine what femtocell base station220should do in order to sufficiently reduce its interferences for wireless device230based on the information provided in the interference stress message (e.g., interference measurements) as well as the information server250has about the network itself. The interference reduction information determined by server250for femtocell base station220may indicate what interference reduction approach (e.g., time domain approach, frequency domain approach, or power control based approach) to be used and the specific actions to be taken by femtocell base station220. In particular embodiments, server250may transmit the interference reduction information to femtocell base station220over core network240, as illustrated in STEP410. In particular embodiments, the interference reduction information may be sent to femtocell base station220as one or more eICIC messages. In addition, in particular embodiments, femtocell base station220may coordinate with macrocell base station210over core network240using one or more eICIC messages.

Alternatively, in particular embodiments, there may not be a coordination device (e.g., server250) available in the network. In this case, femtocell base station220may estimate for itself how best to reduce its interferences for wireless device230based on the information provided in the interference stress message (e.g., interference measurements), as illustrated in STEP412.FIG. 3illustrates an example of this response. For example, femtocell base station220may determine for itself the interference reduction approach (e.g., time domain approach, frequency domain approach, or power control based approach) to be used and the specific actions to be taken. In addition, in particular embodiments, femtocell base station220may coordinate with macrocell base station210over core network240using one or more eICIC messages.

In particular embodiments, femtocell base station220may inform wireless device230that it is about to reduce its interferences for wireless device230. In particular embodiments, femtocell base station220may reduce its interferences for wireless device230based on the interference reduction information either received from server250(as illustrated inFIG. 2) or estimated by femtocell base station220itself (as illustrated inFIG. 3), as illustrated in STEP414. For example, the interference reduction information may instruct femtocell base station220to use the time domain approach and what specific subframes to transmit and what specific subframes not to transmit. Alternatively, the interference reduction information may instruct femtocell base station220to use the frequency domain approach and what specific frequencies to transmit and what specific frequencies not to transmit. Alternatively, the interference reduction information may instruct femtocell base station220to use the power control based approach and the amount of power to reduce. Once femtocell base station220has sufficiently reduced its interferences to wireless device230, wireless device230may connect to and communicated with macrocell base station210.

Particular embodiments may be implemented in a network environment.FIG. 5illustrates an example network environment500, which may be a cellular network environment. Network environment500includes a network510coupling one or more servers520and one or more clients530to each other. In particular embodiments, network510is an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a metropolitan area network (MAN), a portion of the Internet, or another network510or a combination of two or more such networks510. This disclosure contemplates any suitable network510.

One or more links550couple a server520or a client530to network510. In particular embodiments, one or more links550each includes one or more wireline, wireless, or optical links550. In particular embodiments, one or more links550each includes an intranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a MAN, a portion of the Internet, or another link550or a combination of two or more such links550. This disclosure contemplates any suitable links550coupling servers520and clients530to network510.

In particular embodiments, each server520may be a unitary server or may be a distributed server spanning multiple computers or multiple datacenters. Servers520may be of various types, such as, for example and without limitation, web server, news server, mail server, message server, advertising server, file server, application server, exchange server, database server, or proxy server. In particular embodiments, each server520may include hardware, software, or embedded logic components or a combination of two or more such components for carrying out the appropriate functionalities implemented or supported by server520. For example, a web server is generally capable of hosting websites containing web pages or particular elements of web pages. More specifically, a web server may host HTML files or other file types, or may dynamically create or constitute files upon a request, and communicate them to clients530in response to HTTP or other requests from clients530. A mail server is generally capable of providing electronic mail services to various clients530. A database server is generally capable of providing an interface for managing data stored in one or more data stores. One or more servers520may be coordination servers.

In particular embodiments, one or more data storages540may be communicatively linked to one or more severs520via one or more links550. In particular embodiments, data storages540may be used to store various types of information. In particular embodiments, the information stored in data storages540may be organized according to specific data structures. In particular embodiment, each data storage540may be a relational database. Particular embodiments may provide interfaces that enable servers520or clients530to manage, e.g., retrieve, modify, add, or delete, the information stored in data storage540.

In particular embodiments, each client530may be an electronic device including hardware, software, or embedded logic components or a combination of two or more such components and capable of carrying out the appropriate functionalities implemented or supported by client530. For example and without limitation, a client530may be a desktop computer system, a notebook computer system, a netbook computer system, a handheld electronic device, or a mobile telephone. This disclosure contemplates any suitable clients530. A client530may enable a network user at client530to access network530. A client530may enable its user to communicate with other users at other clients530.

A client530may have a web browser532, such as MICROSOFT INTERNET EXPLORER, GOOGLE CHROME or MOZILLA FIREFOX, and may have one or more add-ons, plug-ins, or other extensions, such as TOOLBAR or YAHOO TOOLBAR. A user at client530may enter a Uniform Resource Locator (URL) or other address directing the web browser532to a server520, and the web browser532may generate a Hyper Text Transfer Protocol (HTTP) request and communicate the HTTP request to server520. Server520may accept the HTTP request and communicate to client530one or more Hyper Text Markup Language (HTML) files responsive to the HTTP request. Client530may render a web page based on the HTML files from server520for presentation to the user. This disclosure contemplates any suitable web page files. As an example and not by way of limitation, web pages may render from HTML files, Extensible Hyper Text Markup Language (XHTML) files, or Extensible Markup Language (XML) files, according to particular needs. Such pages may also execute scripts such as, for example and without limitation, those written in JAVASCRIPT, JAVA, MICROSOFT SILVERLIGHT, combinations of markup language and scripts such as AJAX (Asynchronous JAVASCRIPT and XML), and the like. Herein, reference to a web page encompasses one or more corresponding web page files (which a browser may use to render the web page) and vice versa, where appropriate.

In particular embodiments, there may be one or more base stations560in network500. Each base station560may serve a cell of network500and each cell may be served by one or more base stations560. Each base station560may have a transceiver for transmitting communication packets to and receiving communication packets from one or more wireless devices (e.g., clients230).

Particular embodiments may be implemented on one or more computer systems.FIG. 6illustrates an example computer system600. For example, computer system600may be a base station. In particular embodiments, one or more computer systems600perform one or more steps of one or more methods described or illustrated herein. In particular embodiments, one or more computer systems600provide functionality described or illustrated herein. In particular embodiments, software running on one or more computer systems600performs one or more steps of one or more methods described or illustrated herein or provides functionality described or illustrated herein. Particular embodiments include one or more portions of one or more computer systems600.

In particular embodiments, computer system600includes a processor602, memory604, storage606, an input/output (I/O) interface608, a communication interface610, and a bus612. Although this disclosure describes and illustrates a particular computer system having a particular number of particular components in a particular arrangement, this disclosure contemplates any suitable computer system having any suitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor602includes hardware for executing instructions, such as those making up a computer program. As an example and not by way of limitation, to execute instructions, processor602may retrieve (or fetch) the instructions from an internal register, an internal cache, memory604, or storage606; decode and execute them; and then write one or more results to an internal register, an internal cache, memory604, or storage606. In particular embodiments, processor602may include one or more internal caches for data, instructions, or addresses. This disclosure contemplates processor602including any suitable number of any suitable internal caches, where appropriate. As an example and not by way of limitation, processor602may include one or more instruction caches, one or more data caches, and one or more translation lookaside buffers (TLBs). Instructions in the instruction caches may be copies of instructions in memory604or storage606, and the instruction caches may speed up retrieval of those instructions by processor602. Data in the data caches may be copies of data in memory604or storage606for instructions executing at processor602to operate on; the results of previous instructions executed at processor602for access by subsequent instructions executing at processor602or for writing to memory604or storage606; or other suitable data. The data caches may speed up read or write operations by processor602. The TLBs may speed up virtual-address translation for processor602. In particular embodiments, processor602may include one or more internal registers for data, instructions, or addresses. This disclosure contemplates processor602including any suitable number of any suitable internal registers, where appropriate. Where appropriate, processor602may include one or more arithmetic logic units (ALUs); be a multi-core processor; or include one or more processors602. Although this disclosure describes and illustrates a particular processor, this disclosure contemplates any suitable processor.

In particular embodiments, memory604includes main memory for storing instructions for processor602to execute or data for processor602to operate on. As an example and not by way of limitation, computer system600may load instructions from storage606or another source (such as, for example, another computer system600) to memory604. Processor602may then load the instructions from memory604to an internal register or internal cache. To execute the instructions, processor602may retrieve the instructions from the internal register or internal cache and decode them. During or after execution of the instructions, processor602may write one or more results (which may be intermediate or final results) to the internal register or internal cache. Processor602may then write one or more of those results to memory604. In particular embodiments, processor602executes only instructions in one or more internal registers or internal caches or in memory604(as opposed to storage606or elsewhere) and operates only on data in one or more internal registers or internal caches or in memory604(as opposed to storage606or elsewhere). One or more memory buses (which may each include an address bus and a data bus) may couple processor602to memory604. Bus612may include one or more memory buses, as described below. In particular embodiments, one or more memory management units (MMUs) reside between processor602and memory604and facilitate accesses to memory604requested by processor602. In particular embodiments, memory604includes random access memory (RAM). This RAM may be volatile memory, where appropriate Where appropriate, this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, where appropriate, this RAM may be single-ported or multi-ported RAM. This disclosure contemplates any suitable RAM. Memory604may include one or more memories604, where appropriate. Although this disclosure describes and illustrates particular memory, this disclosure contemplates any suitable memory.

In particular embodiments, storage606includes mass storage for data or instructions. As an example and not by way of limitation, storage606may include an HDD, a floppy disk drive, flash memory, an optical disc, a magneto-optical disc, magnetic tape, or a Universal Serial Bus (USB) drive or a combination of two or more of these. Storage606may include removable or non-removable (or fixed) media, where appropriate. Storage606may be internal or external to computer system600, where appropriate. In particular embodiments, storage606is non-volatile, solid-state memory. In particular embodiments, storage606includes read-only memory (ROM). Where appropriate, this ROM may be mask-programmed ROM, programmable ROM (PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM), electrically alterable ROM (EAROM), or flash memory or a combination of two or more of these. This disclosure contemplates mass storage606taking any suitable physical form. Storage606may include one or more storage control units facilitating communication between processor602and storage606, where appropriate. Where appropriate, storage606may include one or more storages606. Although this disclosure describes and illustrates particular storage, this disclosure contemplates any suitable storage.

This disclosure contemplates one or more computer-readable storage media implementing any suitable storage. In particular embodiments, a computer-readable storage medium implements one or more portions of processor602(such as, for example, one or more internal registers or caches), one or more portions of memory604, one or more portions of storage606, or a combination of these, where appropriate. In particular embodiments, a computer-readable storage medium implements RAM or ROM. In particular embodiments, a computer-readable storage medium implements volatile or persistent memory. In particular embodiments, one or more computer-readable storage media embody software. Herein, reference to software may encompass one or more applications, bytecode, one or more computer programs, one or more executables, one or more instructions, logic, machine code, one or more scripts, or source code, and vice versa, where appropriate. In particular embodiments, software includes one or more application programming interfaces (APIs). This disclosure contemplates any suitable software written or otherwise expressed in any suitable programming language or combination of programming languages. In particular embodiments, software is expressed as source code or object code. In particular embodiments, software is expressed in a higher-level programming language, such as, for example, C, Perl, or a suitable extension thereof. In particular embodiments, software is expressed in a lower-level programming language, such as assembly language (or machine code). In particular embodiments, software is expressed in JAVA. In particular embodiments, software is expressed in Hyper Text Markup Language (HTML), Extensible Markup Language (XML), or other suitable markup language.