Obtaining customized content using a pilot packet

A system is configured to receive a request to register a user device with a network; perform an operation that registers the user device and enables the user device to obtain content from another network; generate a packet that includes information associated with the user device and information associated with the operation; output the packet to a device, where the packet enables the device to obtain information associated with usage habits corresponding to the user device; receive, from the user device, a query to obtain the content from the other network; output, to the device, a content request based on the query; receive, from the device and based on the content request, the content that is customized for the user device based on the information associated with the usage habits; and output the customized content to the user device.

BACKGROUND

Service provider networks transport network traffic associated with a variety of services, applications, and content. The service provider networks provide more and more services, applications, and content that are customized to user devices. The customized services, applications, and content may be based on usage habits, a user profile, etc. associated with the user devices. Additionally, the customized services, applications, and content may be based on information associated with the user devices, such as types of user devices, network addresses, etc. and/or context information associated with user devices, such as locations of the user devices, types of user devices, etc. Unfortunately, as the service provider networks transport more and more traffic, the service provider networks do not always have the capacity to process the traffic in a manner that provides the customized services to the user devices.

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

Systems and/or methods, described herein, may enable a pilot application to generate a pilot packet that is to be used to customize content for a user device during a communication session. The pilot application may store, in the pilot packet, information associated with the user device and/or information associated with network address translation (NAT) bindings that correspond to the user device. The pilot application may transmit the pilot packet to a network device (e.g., a service control gateway). The service control gateway may use the information associated with the user device and/or the NAT bindings, obtained from the pilot packet, to retrieve information associated with user habits, user preferences, a user profile, etc. that corresponds to the user device. The service control gateway may use the information associated with the user habits, user preferences, and/or user profile to customize the content to be served to the user device.

As described herein the pilot application may obtain the information associated with the NAT bindings based on a NAT operation performed on the user device. The information, associated with the NAT bindings, may include a private Internet protocol (IP) address, one or more ports associated with the private IP address, a unique public IP address, a device identifier, etc. The pilot application may store the information, associated with the NAT bindings, in the pilot packet.

The pilot packet may enable the user device to be identified within a particular period of time. The particular period of time may be less than another period of time associated with the service control gateway retrieving, from another device (e.g., an authentication, authorization, and accounting (AAA) server, a server that generates the NAT bindings, etc.), all or a portion of the information associated with the user device and/or the NAT bindings. The other period of time may, for example, correspond to the service control gateway obtaining a public IP address (e.g., from a packet received from the user device) and using the public IP address to retrieve the information, associated with the user device and/or the NAT bindings, from the other device.

Using the pilot packet to identify the user device, within the particular period of time, may increase a quantity of processing capacity available to customize content for the user device. The pilot packet may also increase a quantity of content that can be customized over a certain time period.

The term “packet,” as used herein, is intended to be broadly construed to include a frame, a datagram, a packet, or a cell; a fragment of a frame, a fragment of a datagram, a fragment of a packet, or a fragment of a cell; or another type, arrangement, or packaging of data.

FIG. 1is a diagram of an example environment100in which systems and/or methods, described herein, may be implemented. As shown inFIG. 1, environment100may include a user device110, a packet data network (PDN) gateway (PGW) device120(hereinafter referred to as a “PGW120”), a service control gateway (SCGW) device130(hereinafter referred to as a “SCGW130”), a content processing server140(hereinafter referred to as a “CP server140”), a home subscriber/authentication, authorization, and accounting server145(hereinafter referred to as a “HSS/AAA145”), a content provider150, a service provider network160, and a network170. The number of devices and/or networks, illustrated inFIG. 1, is provided for explanatory purposes only. In practice, there may be additional devices and/or networks; fewer devices and/or networks; different devices and/or networks; or differently arranged devices and/or networks than illustrated inFIG. 1.

Also, in some implementations, one or more of the devices of environment100may perform one or more functions described as being performed by another one or more of the devices of environment100. For example, PGW120and SCGW130may be integrated into a single device. In another example, SCGW130and CP server140may be integrated into a single device. Alternatively, PGW120, SCGW130, CP server140, and/or HSS/AAA145may be implemented as multiple, possibly distributed, devices. Devices of environment100may interconnect via wired connections, wireless connections, or a combination of wired and wireless connections.

User device110may include any computation or communication device that is capable of communicating via service provider network160. For example, user device110may include a radiotelephone, a personal communications system (PCS) terminal (e.g., that may combine a cellular radiotelephone with data processing and data communications capabilities), a personal digital assistant (PDA) (e.g., that can include a radiotelephone, a pager, Internet/intranet access, etc.), a laptop computer, a personal computer, a landline telephone, a set top box (STB), a television, a camera, a personal gaming system, or another type of computation or communication device. The description to follow will generally refer to user device110as a wireless mobile communication device. The description is not limited, however, to a wireless mobile communication device and may equally apply to other types of user devices.

User device110may register with service provider network160by communicating with HSS/AAA145. User device110may, in response to a request from HSS/AAA145, provide information to HSS/AAA145that enables user device110to be authenticated and/or registered with service provider network160. User device110may transmit, via service provider network160, requests for content from one or more content providers150.

PGW120may include one or more network devices, or other types of computation or communication devices, that gather, process, search, store, and/or provide information in a manner described herein. For example, PGW120may include a gateway, a router, a switch, a firewall, a network interface card (NIC), a hub, a bridge, a proxy server, an optical add-drop multiplexer (OADM), or some other type of device that processes and/or transfers traffic (e.g., packets). In one example implementation, PGW120may include a device that aggregates traffic received from one or more user devices110and may send the aggregated traffic to network170and/or SCGW130. In another example implementation, PGW120may receive traffic from network170and/or SCGW130and may send the traffic toward user device110.

PGW120may perform network address translation (NAT) operations on user device110. For example, PGW120may receive a packet associated with an operation to register user device110and may assign an internal IP address (e.g., an IP address used by service provider network160). PGW120may assign a range of ports (e.g., sometimes referred to as a port range and/or a port chunk), associated with the internal IP address, via which traffic received from and/or sent to user device110is to be transported. PGW120may assign a public IP address to user device110that corresponds to the internal IP address and/or port range. The public IP address may be used by network170and/or devices with which PGW120communicates via network170. PGW120may identify a time period (e.g., a lease) for which the internal IP address and/or port range is to be used. PGW120may store, as information associated with NAT bindings (e.g., in a memory associated with PGW120), information obtained as a result of the NAT operation. For example, the information associated with the NAT bindings may include the internal IP address, port range, public IP address, lease, etc.

PGW120may host a pilot application that is used to generate a pilot packet. The pilot application may, for example, generate a pilot packet associated with user device110. The pilot application may store, within one or more fields associated with the pilot packet, the information associated with the NAT bindings. Additionally, or alternatively, the pilot application may store, in the one or more fields, information associated with user device110, such as a device identifier (e.g., a mobile director number (MDN), a media access control (MAC) address, etc.) and/or a physical device identifier (e.g., an international mobile subscriber identity (IMSI), an international mobile equipment identity (IMEI), an electronic serial number (ESN), a mobile identification number (MIN), a mobile subscriber integrated services digital network (MSISDN) number, a national access identifier (NAI), etc.). The pilot application may cause PGW120to send the pilot packet to SCGW130so that SCGW130may identify user device110and/or customize content for user device110.

SCGW130may include one or more network devices that gather, process, search, store, and/or provide information in a manner described herein. For example, SCGW130may include a gateway, a router, a switch, a firewall, a NIC, a hub, a bridge, a proxy server, an OADM, or some other type of device that processes and/or transfers traffic. SCGW130may receive a pilot packet from PGW120and may obtain, from the pilot packet, information associated with user device110. SCGW130may, for example, use the information, associated with user device110, to convert content (e.g., received from content provider150) into a format and/or protocol that is compatible with user device110.

SCGW130may use the information, associated with user device110, to retrieve, from HSS/AAA145, information, associated with usage habits, a user profile, etc. that corresponds to user device110. For example, CP server140may use the information associated with the user profile, to process content in a manner that ensures that the content is sent to user device110in a manner that satisfies a quality of service (QoS) threshold indentified within the information associated with the user profile.

SCGW130may use the retrieved information associated with the usage habits, user profile, etc. to process the content in a manner that is targeted and/or customized for user device110(e.g., based on content genre, parental controls, a type of content, etc.). In another example, SCGW130may forward the retrieved information, associated with the usage habits, user profile, etc. to CP server140to process the content.

CP server140may include one or more server devices, or other types of computation or communication devices, that gather, process, search, store, and/or provide information in a manner described herein. CP server140may, in one example implementation, perform operations associated with content processing within environment100. CP server140may, for example, process content, received from content provider150, in a manner that ensures that the content is targeted and/or customized for user device110. CP server140may perform the processing based on the information associated with the usage habits, user profile, etc., (e.g., received from SCGW130and/or retrieved from HSS/AAA145). CP server140may, for example, remove and/or extract particular content (e.g., particular types, genres, ratings, etc.) from the content, so that the processed content conforms to the information associated with the usage habits, user profile, etc.

HSS/AAA145may include one or more server devices, or other types of computation or communication devices, that gather, process, search, store, and/or provide information in a manner similar to that described herein. For example, HSS/AAA145may manage and/or store, in a memory associated with HSS/AAA145, user profile information associated with user device110that includes access point names (APNs) that are permitted for and/or accessible by user device110, information associated with a user of user device110(e.g., a username, a password, a personal identification number (PIN), etc.), rate information, minutes allowed, and/or other information. APNs may identify particular applications services and/or data that are permitted for user device110. HSS/AAA145may store information associated with usage habits and/or preferences of user device110, such as preferred content types (e.g., videos, movies, music, etc.), preferred content genres (e.g., horror, sports, country music, etc.), purchasing history or patterns, parental controls (e.g., exclude content with a restricted (R) rating, etc.). Additionally, or alternatively, HSS/AAA145may perform AAA operations when registering user device110with service provider network160.

Content provider150may include one or more server devices, or other types of computation or communication devices, that provide any type or form of content. For example, content provider150may provide free television broadcasts (e.g., local broadcasts, such as NBC, CBS, ABC, and/or Fox), for-pay television broadcasts (e.g., TNT, ESPN, HBO, Cinemax, CNN, etc.), and/or Internet-based content (e.g., Youtube, Vimeo, Netflix, Hulu, Veoh, etc.) streamed from web sites. Content provider150may produce media streams (e.g., television broadcasts). A “media stream,” as used herein, may refer to stream of content that includes video content (e.g., a video stream), audio content (e.g., an audio stream), textual content (e.g., a textual stream), and/or a combination of the aforementioned content.

Service provider network160may include one or more wired and/or wireless networks via which user devices110communicate and/or receive content. For example, service provider network160may include a cellular network, the Public Land Mobile Network (PLMN), a second generation (2G) network, a third generation (3G) network, a fourth generation (4G) network (e.g., a long term evolution (LTE) network), a fifth generation (5G) network, and/or another network. Additionally, or alternatively, service provider network160may include a wide area network (WAN), a metropolitan area network (MAN), an ad hoc network, an intranet, a fiber optic-based network, and/or a combination of these or other types of networks.

Network170may include one or more wired and/or wireless networks. For example, network170may include a cellular network, the PLMN, a 2G network, a 3G network, a 4G network (e.g., a LTE network), a 5G network, and/or another network. Additionally, or alternatively, network170may include a WAN, a MAN, a telephone network (e.g., the Public Switched Telephone Network (PSTN)), an ad hoc network, an intranet, the Internet, a fiber optic-based network, and/or a combination of these or other types of networks.

FIG. 2is a diagram of example components of a device200that may correspond to user device110, PGW120, SCGW130, CD server140, and/or HSS/AAA145. Alternatively, each of user device110, PGW120, SCGW130, CD server140, and/or HSS/AAA145may include one or more devices200. Device200may include a bus210, a processor220, a memory230, an input component240, an output component250, and a communication interface260. AlthoughFIG. 2shows example components of device200, in other implementations, device200may contain fewer components, additional components, different components, or differently arranged components than depicted inFIG. 2. For example, device200may include one or more switch fabrics instead of, or in addition to, bus210. Additionally, or alternatively, one or more components of device200may perform one or more tasks described as being performed by one or more other components of device200.

Bus210may include a path that permits communication among the components of device200. Processor220may include one or more processors, microprocessors, or processing logic that may interpret and execute instructions. Memory230may include any type of dynamic storage device that may store information and instructions, for execution by processor220, and/or any type of non-volatile storage device that may store information for use by processor220.

Input component240may include a mechanism that permits a user to input information to device200, such as a keyboard, a keypad, a button, a switch, etc. Output component250may include a mechanism that outputs information to the user, such as a display, a speaker, one or more light emitting diodes (LEDs), etc. Communication interface260may include any transceiver-like mechanism that enables device200to communicate with other devices and/or systems via wireless communications (e.g., radio frequency, infrared, and/or visual optics, etc.), wired communications (e.g., conductive wire, twisted pair cable, coaxial cable, transmission line, fiber optic cable, and/or waveguide, etc.), or a combination of wireless and wired communications. For example, communication interface260may include mechanisms for communicating with another device or system via a network, such as service provider network160and/or network170. In one alternative implementation, communication interface260may be a logical component that includes input and output ports, input and output systems, and/or other input and output components that facilitate the transmission of data to other devices.

FIG. 3is a diagram of an example data structure300associated with a pilot packet (hereinafter referred to as “pilot packet data structure300”) according to an implementation described herein. PWG120may perform a NAT operation associated with user device110and may store information associated with user device110and/or information associated with NAT bindings in pilot packet data structure300. As shown inFIG. 3, pilot packet data structure300may include a collection of fields, such as a user device identifier (ID) field310, a physical device identifier (ID) field320, an internal IP address field330, a port range field340, a public IP address field350, a session start time field360, and a session stop time field370. Pilot packet data structure300includes fields310-370for explanatory purposes. In practice, pilot packet data structure300may include additional fields, fewer fields, different fields, and/or differently arranged fields than are described with respect to pilot packet data structure300.

User device ID field310may store a device identifier (e.g., a MDN, a MAC address, etc.) associated with a particular user device110for which a communication session is being established. Physical device ID field320may store a physical device identifier (e.g., an IMSI, an IMEI, an ESN, a MIN, a MSISDN number, a NAI, etc.) associated with the particular user device110. Internal IP address field330may store an internal IP address associated with the particular user device110. Port range field340may store one or more port identifiers associated with the internal IP address.

Public IP address field350may store a unique public IP address, associated with the particular user device110, that corresponds to the private IP address. Session start time field360may store a point in time when a session, associated with the particular user device110, begins. Session stop time field370may store another point in time when the session expires.

PGW120may receive a packet from user device110and the pilot application may remove, from the packet, a user device ID and/or a physical device ID associated with user device110. The pilot application may store, in a pilot packet data structure (e.g., pilot packet data structure300), a device ID372(e.g., MDN1) and/or a physical device ID374(e.g., IMSI1).

PGW120may, in response to receiving the packet, perform a NAT operation on user device110. For example, PGW120may identify an internal IP address (e.g., that is not being used by user device110and/or another user device110). PGW120may identify one or more ports, associated with the internal IP address and which are not being used by user device110and/or the other user device110. The pilot application may store, in the pilot packet data structure, an internal IP address376(e.g., INT1) and/or one or more port identifiers378(e.g., A1−AN) (where N≧1) that correspond to the one or more ports.

PGW120may assign, to user device110, a unique public IP address that corresponds to the internal IP address and/or the one or more ports. The pilot application may store, in pilot packet data structure300, a unique public IP address380(e.g., PUB1). The pilot application may identify a time when a session, associated with user device110, is established and/or another time when the session expires. The pilot application may store a time382(e.g., start1) and/or another time384(e.g., stop1) in pilot packet data structure300. The pilot application may generate a pilot packet and may append information associated with pilot packet data structure300to the pilot packet (e.g., as a header, trailer, or payload).

FIG. 4is a flow chart of an example process400for generating a pilot packet that enables content to be customized for user device110according to an implementation described herein. In one example implementation, process400may be performed by PGW120. In another example implementation, some or all of process400may be performed by a device or collection of devices separate from, or in combination with, PGW120.FIG. 5is a diagram of example interactions between devices of an example portion500of environment100. As illustrated inFIG. 5, example environment portion500may include user device110, PGW120, SCGW130, CP server140, HSS/AAA145, and content provider150. User device110, PGW120, SCGW130, CP server140, HSS/AAA145, and content provider150may include the features described above in connection with one or more ofFIGS. 1 and 2. A portion of process400ofFIG. 4will be discussed below with corresponding references to the operations performed by example environment portion500ofFIG. 5.

As shown inFIG. 4, process400may include receiving a registration request from user device110(block405) and performing, in response to the request, a NAT operation on user device110(block410). For example, user device110may send a registration request505(FIG. 5) to PGW120. Registration request505may include information associated with user device110, such as a device identifier (e.g., MDN, MAC address, etc.), and/or a physical device identifier (e.g., an IMSI, an IMEI, an ESN, a MIN, a MSISDN number, a NAI, etc.). PGW120may receive registration request505and may perform a NAT operation. For example, PGW120may obtain, from registration request505, the information associated with user device110. PGW120may identify an internal IP address and/or a port range to be used by a service provider network (e.g., service provider network160). PGW120may create a NAT binding, associated with user device110, by assigning the internal IP address and/or the port range to user device110. Additionally, or alternatively, PGW120may identify a unique public IP address to be used by a network other than the service provider network (e.g., network170). PGW120may create the NAT binding by assigning the unique public IP address to user device110in a manner that corresponds to the internal IP address and/or the port range. PGW120may store, in a memory associated with PGW120, information associated with the NAT binding.

In another example, PGW120may receive, from user device110, a request for content that is hosted by a content provider (e.g., content provider150). The pilot application may determine whether a pilot packet associated with user device110, that is generated at a prior point in time, has expired. For example, the pilot application may determine whether a time at which the pilot packet expires is before or after a current time. The pilot application may drop and/or ignore the request for content when the pilot packet expires based on a determination that the time is before the current time. The pilot application may, in another example, perform a NAT operation on the user device, in a manner similar to that described above, based on a determination that the pilot packet has expired. If the pilot application determines that the pilot packet has not expired, then the pilot application may cause PGW120to send the packet to SCGW130to retrieve the content.

As also shown inFIG. 4, process400may include transmitting, to user device110, the internal IP address and/or the port range based on the NAT operation (block415) and generating a pilot packet based on the NAT operation and/or information associated with user device110(block420). For example, PGW120may send, in response to registration request505, an internal IP address and/or one or more port identifiers associated with the port range, as indicated by reference number510(FIG. 5), to user device110. User device110may receive the internal IP address and/or the one or more port identifiers.

A pilot application, hosted by PGW120, may use the information, associated with the NAT bindings and/or information, associated with user device110, to generate a pilot packet. The pilot application may, for example, generate a pilot packet associated with user device110. The pilot application may store, in the pilot packet, the information associated with the NAT binding that corresponds to user device110. The information associated with the NAT binding may include the internal IP address, the port range, and/or the unique public IP address. The pilot application may, in another example, store information associated with user device110in the pilot packet. In yet another example, the pilot application may store, in the pilot packet, a time at which a session, associated with user device110, is established and/or another time at which the session expires. The time at which the session is established may correspond to a time when the registration request is received, when the internal IP address is transmitted to user device110, when the pilot packet is generated, and/or some other time.

As further shown inFIG. 4, process400may include sending the pilot packet and/or receiving, from user device110, a request for content (block425). For example, the pilot application may cause PGW120to send the pilot packet, as indicated by reference number515(FIG. 5), to SCGW130. SCGW130may receive pilot packet515and may remove the information associated with user device110and/or the NAT binding from pilot packet515. SCGW130may send a request520for information associated with user habits and/or a user profile, associated with user device110(FIG. 5), to HSS/AAA145. Request520may include the information associated with user device110and/or the NAT binding. HSS/AAA145may receive request520and may use the information, associated with user device110and/or the NAT binding, to retrieve, from a memory associated with HSS/AAA145, the information associated with the usage habits and/or user profile. HSS/AAA145may send information525associated with the usage habits and/or the user profile (FIG. 5) to SCGW130, and SCGW130may receive information525. A user, of user device110, may instruct user device110to retrieve content from a content provider (e.g., content provider150). For example, user device110may send a request530for the content to PGW120. PGW120may receive request530for the content and may generate another request535for the content, based on request530for the content.

As yet further shown inFIG. 4, process400may include sending another request for the content based on the request for content (block430). For example, PGW120may obtain, from request530for content, an internal IP address and/or port associated with user device110. PGW120may, based on NAT bindings associated with user device110, identify a public IP address associated with user device110. PGW120may send other request535for content to SCGW130. Other request535may include an address associated with content provider150from which the content is to be obtained and/or the public IP address.

In another example, PGW120may determine that the NAT binding, associated with user device110, has expired. PGW120may, for example, determine that a current time is after at time at which the NAT binding and/or a pilot packet has expired. PGW120may initiate a registration operation with user device110to obtain an updated NAT binding and/or to establish another communication session in a manner similar to that described above (e.g., with respect to blocks405-415). PGW120may send other request535for content and/or another pilot packet (e.g., that includes information associated with the updated NAT binding) to SCGW130.

SCGW130may receive other request535and may, in response to other request535for content, send a further request540for the content to content provider150. Content provider150may receive further request540and may retrieve the content in response to further request540.

As further shown inFIG. 5, content provider150may send content545to SCGW130. SCGW130may receive content545and may determine a manner in which content545is to be processed and/or customized based on the usage habits and/or user profile associated with user device110. For example, SCGW130may determine that user device110is not to receive one or more genres of content based on usage habits. In another example, SCGW130may determine that user device110is not to receive particular content based on parental controls specified in the information associated with the user profile. In yet another example, SCGW130may determine that user device110is located at a particular location, has one or more preferred genres of content, and/or has a particular purchasing history. SCGW130may send the received content, as indicated by reference number550(FIG. 5), to CP server140to be processed. Received content550may include information obtained from the information associated with the usage habits and/or the user profile. For the example, the obtained information may identify the one or more genres that user device110is not to receive, the parental controls, the particular location, the one or more preferred genres, and/or the particular purchasing history associated with user device110. CP server140may receive content550and may process content550in a manner that customizes the content, for user device110, based on the information associated with the usage habits and/or the user profile.

In another example implementation, SCGW130may not send received content550to CP server130to be processed. In one example, SCGW130may determine that the pilot packet has expired and may drop received content550. In another example, SCGW130may process content550based on the information associated with the usage habit and/or user profile. In yet another example implementation, SCGW130may send information associated with usage habits and/or the user profile to content provider150in a manner that enables content provider150to generate the content that is customized to user device110. In this example, SCGW130may perform an operation to parse and/or remove particular information, from the information associated with the usage habits and/or user profile, to ensure that content provider150cannot identify user device110and/or access information associated with a user of user device110.

As still further shown inFIG. 4, process400may include receiving the customized content and may send the customized content to user device110(block440). For example, CP server140may send customized content555(FIG. 5) to SCGW130. SCGW130may receive customized content555and may forward the customized content, as indicated by reference number560(FIG. 5), to PGW120. PGW120may receive customized content560and may identify a public IP address associated with customized content560. Based on the public IP address, PGW120may identify the NAT bindings associated with user device110from which the private IP address and/or port may be identified. PGW120may use the private IP address and/or port to forward the customized content, as indicated by reference number565(FIG. 5), to user device110. User device110may receive customized content565and may render customized content565on user device110.

In another example, PGW120may determine that the NAT binding and/or pilot packet, associated with user device110, has expired. PGW120may, for example, determine that a current time is after at time at which the NAT binding has expired. PGW120may not forward customized content565to user device110based on the determination that the NAT binding has expired. PGW120may initiate a registration operation with user device110to establish another communication session in a manner similar to that described above (e.g., with respect to blocks405-415).

Systems and/or methods, described herein, may enable a pilot application to generate a pilot packet that is to be used to customize content for a user device during a communication session. The systems and/or methods may store, in the pilot packet, information associated with the user device and/or information associated with NAT bindings that correspond to the user device. The systems and/or methods may transmit the pilot packet to a network device (e.g., a service control gateway). The service control gateway may use the information associated with the user device and/or the NAT bindings, obtained from the pilot packet, to retrieve information associated with user habits, user preferences, a user profile, etc. that corresponds to the user device. The service control gateway may use the information associated with the user habits, user preferences, and/or user profile to customize the content to be served to the user device.

While a series of blocks has been described with regard toFIG. 4, the order of the blocks may be modified in other implementations. Further, non-dependent blocks may be performed in parallel.

Further, certain portions, described above, may be implemented as a component that performs one or more functions. A component, as used herein, may include hardware, such as a processor, an application-specific integrated circuit (ASIC), or a field-programmable gate array (FPGA), or a combination of hardware and software (e.g., a processor executing software).