In non-virtualized networks, network functions (NFs) are implemented as a combination of vendor-specific software and hardware, which can be referred to as network nodes or network elements. Such NFs can be connected or chained in a certain manner to achieve a desired overall functionality or service. Non-virtualized networks may be defined by statically combining NFs in a way that can be expressed as a NF forwarding graph or NF set construct.
The present disclosure, in accordance with one or more various embodiments, is described in detail with reference to the following figures. The figures are provided for purposes of illustration only and merely depict typical or example embodiments.
The figures are not exhaustive and do not limit the present disclosure to the precise form disclosed.
Wireless devices (e.g., smart phones, tablets, and laptops) are used to send and receive data. Such data may be transmitted and received over a wireless network. The 5th Generation (5G) standard is a standard promulgated by the International Telecommunication Union (ITU) and the 3rd Generation Partnership Project (3GPP), with the ITU setting the minimum requirements for 5G compliance, and the 3GPP creating the corresponding specifications. 5G is a successor to the 4G/Long Term Evolution (LTE) standard, and refers to the fifth generation of wireless broadband technology for digital cellular networks. 5G is intended to replace or augment 4G/LTE.
A service-based architecture (SBA) typically refers to an architecture, e.g., a communications network architecture, that emphasizes the use of or relies on services as a primary architecture component used to effectuate certain functionality. Service-based architectures tend to be distributed in nature, where service components or resources are remotely accessed through some protocol, e.g., the Representational State Transfer (REST) protocol, and Simple Object Access Protocol (SOAP), to name a few. For example, the 3GPP defines the 5G system architecture as being an SBA, i.e., an architecture in which system functionality can be achieved by one or more network functions (NFs) providing services to other authorized NFs to access their services. Typically, an NF service can refer to some capability exposed by an NF, i.e., an NF service producer, to another authorized NF, i.e., an NF service consumer, through some service-based interface. Different NFs may offer different functionalities, and thus, different NF services.
Binding can refer to a concept of associating particular NF entities or instances to one another, to some particular NF service, etc. For example, binding can be used to indicate a suitable, target NF producer instance(s) for NF service instance selection, reselection and routing of subsequent requests associated with a specific NF producer resource (context) and NF service. This allows the NF producer to indicate that a NF consumer, for a particular context, should be bound to a particular NF service instance, NF instance, NF service set or NF set depending on local policies and other criteria. Binding can also be used by the NF consumer to indicate suitable NF consumer instance(s) for notification target instance reselection and routing of subsequent notification requests associated with a specific notification subscription. Binding is also used for providing a Binding Indication for service(s) that an NF consumer produces for the same data context, and that the NF service producer is subsequently likely to invoke.
Per the 3GPP, an NF service consumer may subscribe to an NF service producer to be notified of the occurrence of an event, some change or updating of data relevant to/used by the NF service, etc. Typically, the NF service consumer includes a callback reference uniform resource identifier (URI) to receive the notification, i.e., a URI directed to a notification endpoint, in this case, the NF service consumer. In practice, at times, the callback reference URI may not be reachable due to, e.g., lack of response from the NF service consumer. For notification resiliency, the 3GPP specifies a binding indication which contains the binding level, NF set ID and notify service name, etc. (described in greater detail below). Based on the binding indication, the NF service producer selects an equivalent/alternative NF service consumer to which the notification may be sent.
Currently, the NF service consumer includes the aforementioned binding indication in its subscription request to the NF service producer. However, in the event that the binding indication changes prior to the notification being sent, the NF service producer is still operating based on a previous, outdated or non-current binding indication. That is, the NF service producer is unable to receive or otherwise obtain the newest or latest binding indication in time to effectuate a successful notification transmission to a proper NF service consumer. In some scenarios, a NF service consumer may have already subscribed to a NF service producer before a binding indication is enabled. The result is the same, i.e., the NF service producer does not have a current/up-to-date binding indication on which transmission of a notification to an alternative NF service consumer can be based. Thus, notification resiliency, as currently implemented may fail in certain circumstances.
Therefore, and in accordance with examples of the disclosed technology, an NF service consumer may register or specify a binding indication within or as part of the NF profile of the NF service consumer in the Network Repository Function (NRF), which may be, e.g., a type of data repository. In a system, such as a 5GC, the NRF provides for NF service registration, authorization, and discovery, and otherwise enables NFs to identity one another. When an NF service producer sends a notification (e.g., in response to an event or data change, and in accordance with a subscription request), the latest binding indication will be available from the NRF. Thus, if/when transmission of a notification from a NF service producer to a NF service consumer (based on the callback reference URI presented in the subscription request) fails, that NF service producer has the ability to query the NRF (through NF discovery or NF status notification) for the NF service consumer's NF profile identified by the NF instance ID provided in the subscription request. The NF service producer can be made aware of the latest binding indication, and may then query the NRF again for NF profiles equivalent to/matching the original NF service consumer NF. The NF service producer then can re-transmit the notification (i.e., a subsequent notification can be transmitted) to the appropriate notification endpoint, in this case, an alternative NF service consumer selected from the discovered NF profile. In other words, if the callback reference URI received in the subscription request is not reachable, the NF service producer can, based on the latest binding indication, select an alternative NF service consumer to which the notification may be transmitted.
It should be noted that pursuant to SBA, NFs may communicate with one another. Interactions between NFs are embodied as request-response and subscribe-notify interactions between the NF service consumer and NF service producer (and sometimes via a Service Community Proxy (SCP).
It should be understood that both NF service consumers and NF service producers may themselves, be NFs. An NF service is one type of capability exposed by an NF (e.g., an NF service producer) to another, authorized NF (e.g., an NF service consumer) through a service-based interface. NF services are typically derived from system procedures that describe an end-to-end functionality, where applicable. Services may also be defined based on information flows from other 3GPP specifications. System procedures can be described by a sequence of NF service invocations. NF services may communicate directly between NF service consumers and NF service producers, or indirectly via an SCP.
Continuing with the description of
Regardless of whether a binding indication has changed, or binding has been subsequently enabled, because such changes/enablement occurs later than the subscription operation described above, NF service producer 204 does not have the latest/most up-to-date binding information. Again, and as illustrated in
Accordingly, in an attempt to transmit the notification to an alternative NF service consumer, NF service producer 204 performs NF discovery, by sending an NF discovery message 222 to NRF 206. NF service producer 204 performs NF discovery by querying NRF 206 with the NF Set ID and notify service name information that NF service producer 204 received in the binding indication in the subscription request message 210 from NF service consumer 202. It should be understood that NF service producer 204 needs to discover the set of NF profiles that are equivalent to/match the original NF service consumer for the notify service. In response to NF discovery message 222, NRF 206 responds with an NF discovery response message 224, which includes any/all equivalent NF profiles associated with the notify service name specified in NF discovery message 222. Accordingly, NF service producer 204 may transmit one or more subsequent notification messages, such as notification message 226. Without the (latest) binding indication, NF service consumer cannot (correctly) select an equivalent/alternative notification endpoint to which the notification should be sent.
As alluded to above, to counter the problem(s) with notification resiliency based on typical implementation of binding, examples of the disclosed technology add relevant binding indications to the NF profile of NF service consumers registered in the NRF. As also alluded to above, the binding indications are associated with NF set ID and notify service names in the context of NF service subscriptions. Once binding indications are included in NF profiles of NF service consumers, binding indications will be available during NF discovery (or in an NRF status notification) so that an NF service producer is able to select an alternative endpoint for NF service consumer notification from the set of equivalent NF profiles. It should be understood that examples of the disclosed technology apply in the context of both explicit (where NF service producer and consumer engage in a separate request/response exchange), and implicit (where a subscription for notification is included as part of another NF service operation/action associated with the same NF service).
Similar to the example scenario illustrated in
Upon observing some event 316 (that warrants some notification), NF service producer 304 transmits a notification in accordance with the callback Reference URI (recalling that the subscription request message 312 includes NF Instance ID information associated with callback Reference URI information).
As noted above, the binding indications initially or originally set forth in an NF profile registration, e.g., NF profile registration message 310 sent by NF service consumer 302 to NF service producer 304, can change, or binding (if not previously enabled), can be enabled. As illustrated in
Because the NF Instance ID information is associated with NF Set ID information and the binding indications information set forth in the NF profile registration, NRF 306 can return such information to NF service producer 304. In this way, NF service producer can be made aware of the latest/most up-to-date binding indications. Recalling that NF service consumer 302 registered its NF profile with NRF 306, any changes to the binding indications information can be discovered by NF service producer 304 from NRF 306, and will be up-to-date because any binding indication changes (or binding service enablement) will be reflected in NF service consumer 302's registered NF profile.
As noted above, NF profile registration message 310 may comprise an NF profile that includes multiple binding indications. Accordingly, upon determining/obtaining the requisite binding indications associated with the NF Instance ID sent in NF discovery request message 320, NF service producer 304 may determine the appropriate binding indication associated with the notification corresponding to the observed event 316. Based on the appropriate binding indication, NF service producer 304 may transmit a subsequent NF discovery request message 324, which can include NF Set ID and notify service name information (recalling that NF Set ID and the notify service name information, in part, makes up the binding indications information received in NF discovery response message 322). Again, NF Set ID can refer to a globally unique identifier of a set of equivalent and interchangeable NFs from a given network that provide distribution, redundancy, and scalability, and notification service information can refer to the type of notification service NF service consumer 302 intends to consume. In response, NRF 306 may transmit its subsequent NF discovery response message 326, which can include information regarding equivalent NF profiles information which includes NF Set ID information, and notification service information. Ultimately, it should be understood that the binding indications information can provide notify service name information to an NF service producer, which the NF service producer can use it to subsequently query the NRF, in order for the NRF to return the requisite notification service information and NF profile information from which a new/alternative target endpoint to be notified, e.g., NF service consumer, can be determined If still other/additional binding indications and corresponding notifications exist, NF service producer 304 and NRF 306 may continue to engage in subsequent request-response interactions to determine and effectuate requisite notifications. Accordingly, NF service producer 304 may, based on the latest binding indication information, send a notification(s) 328 to the proper target endpoint(s), e.g., another NF service consumer(s).
A mobile network can be thought of as comprising two component networks, the radio access network (RAN) and the core network. In 5G cellular networking systems, these components are a 5G access network (5G-AN) and a 5G core network (5GC). In 4G/LTE cellular networking systems, these components are a radio access network (RAN) and an Evolved Packet Core Network (EPC). The 5GC may include various virtualized network functions (NFs), including, for example, a Core Access and Mobility Management Function (AMF) and a Session Management Function (SMF), both in communication with a UDM. The AMF is configured to handle connection and mobility management tasks. The SMF is responsible for collecting information related to packet data unit (PDU) session management from various network components, while controlling/orchestrating those network components based on requests from the AMF. The UDM is configured to manage user authentication, authorization, and device registration on the 5GC. The EPC may include its own NFs, including, for example, a Mobility Management Entity (MME) in communication with a Home Subscriber Server (HSS). The MME (“reconfigured” in the 5G standard into the AMF/SMF) provides connection management functionality between UEs and the EPC. NFs may be implemented as one or more network devices or apparatuses.
In the illustrative example of
While a single base station 402 (e.g., a 4G/LTE configured base station) and a single base station 406 (e.g., a 5G configured base station) are illustrated, the cellular communication systems disclosed herein are not limited thereto. One or more base stations 402 and/or one or more base stations 406 may be provided. For example, a plurality of base stations 402 may be provided, each having a respective coverage area 410. One or more of the respective coverage areas 410 may overlap. Similarly, a plurality of base stations 406 may be provided, each having a respective coverage area 412. One or more of the respective coverage areas 412 may overlap. Furthermore, one or more coverage areas 410 may overlap with one or more coverage areas 412.
Base stations 402 and 406 may include an eNB, gNodeB (gNB), or another type of base station. Some base stations, such as base station 406, may operate in the frequency spectrum of 5G, including the low-band spectrum, i.e., the sub-1 GHz spectrum; the mid-band spectrum, i.e., the sub-6 GHz spectrum; and/or the high-band spectrum, e.g., millimeter wave (mmWave) that operates between 25 GHz and 100 GHz
EPC 420 includes various network function entities, including, for example but not limited to, one or more Mobility Management Entity (MME) or Mobility Management Device (MMD) 422 (used interchangeably), a Serving Gateway (S-GW) (not shown), a Packet Data Network (PDN) Gateway, also referred to as PGW (not shown here), among other network function entities. Although MME or MMD 422 is illustrated in
Each MME 422 may be in communication with a Home Subscriber Server (HSS) 440 over a designated interface, for example, a S6a interface used for exchange of authentication, location, and server information about subscribers between the HSS 440 and MME 422. Each MME 422 may function as a control node that processes signaling between the UEs 404 and the EPC 420, including providing bearer and connection management functionality. The Packet Data Network (PDN) Gateway may be connected to IP Services, such as the Internet, an intranet, an IP Multimedia Subsystem (IMS), a Packet-Switched (PS) Streaming Service, and/or other IP services.
The NFs of EPC 420 may be implemented as computing systems, such as one or more servers. The NFs of the EPC 420 may communicate using protocols, such as the Diameter Protocol and/or Mobile Application Part (MAP) of the SS7 protocol. For example, the Diameter Protocol may be used for messages between the MME and the HSS or an S4-SGSN and the HSS, while MAP may be used for messages between a Home Location Repository (HLR) and a SGSN or VLR. Data included in the messages on the EPC may be formatted according to American Standard Code for Information Interchange (ASCII) protocols.
Core network 430 may include various virtualized network functions (NFs), including, for example but not limited to, an Authentication Server Function (AUSF) (not shown), Core Access and Mobility Management Function (AMF) 432, a policy control function (PCF) (not shown), a session management function (SMF) (not shown in
AMF 432 may receive connection and mobility management tasks from UEs 404 and can handle connection and mobility management tasks, while forwarding session management tasks/messages to the SMF. AMF 432 may be in communication with UDM 450 over a service-based interface (SBI) for UDM 450, such as a Nudm interface.
Core network 430 may also include NRF 436, which provides for network function service registration, authorization, and discovery, and otherwise enables network functions to identity one another. Core network 430 may also include a User Plane Function (UPF) (not shown) that is connected to IP Services, which may include the Internet, an intranet, an IMS, a PS Streaming Service, and/or other IP services.
The NFs of core network 430 may be implemented as computing systems, such as one or more servers. The NFs of core network 430 may communicate using protocols, such as HyperText Transfer Protocol (HTTP). Communications and operations may be sent, for example, using HTTP methods, such as POST, PATCH, GET, PUT, etc.
As noted herein, AMF 432 may receive connection and session-related information from UEs across N1/N2 reference point interfaces (between UE and AMF/between RAN and AMF), but may handle connection and mobility management tasks. That is, an AMF instance may be specified by a UE, e.g., UE 404, in a Non-Access Stratum (NAS) message that is routed to the AMF instance by the RAN. Performing the role of an access point to the 5G core network (terminating the RAN control plane and UE traffic), the AMF instance may authenticate the UE and manage, e.g., handovers, for the UE between access points, base stations, and gNBs.
UDM 450 provides services to other functions of the Service-Based Architecture (SBA), such as AMF 432 and other network functions. UDM 450 may store information in local memory. UDM 450 may also store information externally, for example, within UDR 434. UDM 450 may provide authentication credentials while being employed by AMF 432 to retrieve subscriber data and access registration context data.
Although the preceding description may provide examples based on 5GC and 4G/LTE, it should be appreciated that the concepts described therein may be applicable to other types of telecommunication networks. For example, the concepts described herein may be applicable to legacy networks, such as, GPRS, CDMA, GSM, and/or other wireless technologies in which a UE may operate. For example, EPC 420 may include network functions of the legacy types of telecommunication networks. GPRS core networks included a SGSN configured to perform functions similar to MME 422. EPC 420 may include or be communicably coupled to a SGSN 424 that communicates with the HSS 440 via a designated interface, such as, a Gr interface for routing information between the SGSN 424 and the HSS/HLR 440. In some GPRS core networks, an S4-SGSN is used for performing functions similar to MME 422. EPC 420 may include or be communicably coupled to a S4-SGSN 426 that communicates with HSS 440 via a designated interface, such as, a s6d interface used for exchange of authentication, location, and server information about subscribers between HSS 440 and S4-SGSN 426. GSM core networks include a Visitor Location Register (VLR) configured to perform functions similar to the MME 422 and a HLR performing functions similar to HSS 440. EPC 420 may include or be communicably coupled to VLR 428 that communicates with HSS 440 via a designated interface, such as a D interface used for routing information between a VLR 428 and the HSS/HLR 440.
The term “mobility management entity” (MME) or “mobility management device” (MMD) can be used herein to refer to one or more of an MME, SGSN, S4-SGSN, VLR, or similar network function entity included in the EPC, while “legacy mobility management device” will be used herein to refer to one or more of SGSN, S4-SGSN, VLR and the like. Additionally, “location and service information interface” may be used to refer to one or more of the s6a, s6d, D, Gr, or similar interfaces between the HSS and a respective mobility management device.
Base stations 402 and/or 406 may provide an access point (AP) to EPC 420 or core network 430 for UE 404. Examples of UEs 404 include cellular phones, smart phones, laptop computers, tablet computers, personal computers, vehicle-implemented communication devices (e.g., vehicles having vehicle-to-vehicle (V2V) capabilities), multimedia devices, game consoles, wearable devices, or any other similar functioning device. Some of UEs 404 may be referred to as IoT devices (e.g., parking meter, gas pump, toaster, vehicles, heart monitor, etc.). Each UE may move about the cellular network system 400 into and out of respective coverages areas (e.g., coverage area 410 and 412).
As noted herein, 5G provides for interworking with the existing EPC providing for mobility of UEs between 5G and 4G/LTE, for example, or other types of telecommunication networks. Accordingly, 5G provides for service migration by attaching to and from each network as the UE moves into and out of coverage areas. Thus, interworking between the networks allows for migration of attachment between the 5GC and EPC through communication between UDM 450 and HSS 440 via a NU1 interface.
For example, as shown in
An interworking functionality facilitates the transition between networks to ensure that seamless transition is achieved. For 5G and EPC interworking, there are generally two solutions: single registration solution and dual registration solution. With the single registration, the UE 404a is permitted to attach to one of the EPC or 5G telecommunication networks at any point in time. Accordingly, a deregistration of the other telecommunication network may be exchanged through a control interface between the telecommunication networks, for example, between HSS 440 to UDM 450 over a NU1 interface when the attachment status of UE 404a is updated. With dual registration, UE 404a may be registered to both the EPC or 5GC telecommunication networks at any point in time, and thus there is no deregistration instruction transmitted as an electronic communication or message between the HSS and the UDM.
As an illustrative example,
The ULR includes an indicator, for example, Dual-Registration-5G-Indicator bit 8 in the ULR-Flag attributed-value pair (AVP), that notifies HSS 440 as to whether or not the MMD is configured for dual registration in two types of telecommunication networks. When the MMD is not configured for dual registration, this indicator in the ULR is set to 0. Upon receipt of the ULR from the MMD, HSS 440 transmits a deregistration instruction (e.g., Nudm_UECM_Dereg-amf) to UDM 450 which delivers the deregistration notification to the registered AMF 432 (if any). Receipt of the deregistration notification may trigger the receiving AMF 432 to deregister UE 404a due to mobility from core network 430 to EPC 420. An example of this exchange is illustrated in connection with
Similar to the example scenario illustrated in
Upon the observance of an event 516, in this example, UE Reachability for SMS, which can refer to a UDM (which can be an embodiment of NF service producer 504) detecting a UE (identified by a ueldentity information element in subscription message 510) can be reached for SMS communications, and notifying the HSS (which can be an embodiment of NF service consumer 502). When the UE becomes reachable for SMS communication purposes, the resulting notification message 518 to the appropriate callbackReferenceURI may fail.
Accordingly, an NF discovery request message 520 (embodied as a GET nnrf-disc request) specifying NF type, and NF Instance ID as obtained from subscription message 510, may be sent by NF service producer 504 to NRF 506. NRF 506 may send an NF discovery response message 522 that can include NF Set ID and the binding indications information relevant to/associated with the specified NF instance ID and NF type. That is, this first NF discovery response 522 contains information regarding the NF profile of the NF service consumer 502 whose NF type (found in the user-agent header) and NF Instance ID is received (e.g. in the 3gpp-Sbi-NF-Peer-Info header) in the subscription request message 510. The NF profile contains binding indications, and thus, NF service producer 504 can extract, e.g. the NF Set ID and notify service name information from the binding indication associated with the observed event 316. Once the binding indications information is known to NF service producer 504, NF service producer 504 can send another NF discovery request message 524 that includes NF type, NF Set ID, and notify service name information to NRF 506. In response, NRF 506 can transmit an NF discovery response message 526 back to NF service producer 504, which returns a set of equivalent NF profiles containingNF Set ID, and notification service information from which NF service producer 504 can determine an alternative endpoint/NF service consumer to which notification 528 can be sent. In the illustrated example, notification 528 may comprise a Notification POST message to the callbackReferenceURI with the new endpoint. That is, NF service producer 504 can select a notify service profile, and rebuild the callback reference URI with the notify service profile's endpoint to send the notification to that endpoint.
Hardware processor 602 may be one or more central processing units (CPUs), semiconductor-based microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in machine-readable storage medium 604. Hardware processor 602 may fetch, decode, and execute instructions, such as instructions 606-614, to control processes or operations for optimizing session continuity management. As an alternative or in addition to retrieving and executing instructions, hardware processor 602 may include one or more electronic circuits that include electronic components for performing the functionality of one or more instructions, such as a field programmable gate array (FPGA), application specific integrated circuit (ASIC), or other electronic circuits.
A machine-readable storage medium, such as machine-readable storage medium 604, may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. Thus, machine-readable storage medium 604 may be, for example, Random Access Memory (RAM), non-volatile RAM (NVRAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and the like. In some embodiments, machine-readable storage medium 604 may be a non-transitory storage medium, where the term “non-transitory” does not encompass transitory propagating signals. As described in detail below, machine-readable storage medium 604 may be encoded with executable instructions, for example, instructions 606-614.
Hardware processor 602 may execute instruction 606 to transmit a notification regarding an observed event (or data change) to a NF service consumer. It should be noted that as used herein, the term event can include an event comprising a data change, or some other occurrence, operation, result of an action/operation, etc. The NF service producer, upon observing some event that warrants notifying a subscribed NF service consumer, attempts to transmit such a notification to the NF service consumer identified by a callback Reference URI originally specified in the subscription request. This notification may fail, due to e.g. timeout or network congestion
Accordingly, hardware processor 602 may execute instruction 608 to transmit a NF discovery request to a NRF in response to determining that the transmitted notification was not received. That is, the transaction may have timeout or the NF service producer may receive a network congestion response. The discovery request may take a variety of forms depending on the scenario, but ultimately is intended to query the NRF using, e.g., NF type and NF Instance ID information. NF type and NF instance ID information can be specified in the NF profile registration message and in the subscription request so that the NF instance Id information can be used to retrieve binding indication(s) information.
That is, hardware processor 602 may execute instruction 610 to receive binding indications as part of a NF discovery response pursuant to the NF discovery request. The binding indications were registered with the NRF as part of an NF profile associated with the NF service consumer, and the NF service producer queries the NRF with the NF consumer's NF type and NF instance received in the subscription request. Again, an NF Profile contains or includes, e.g., the following information: NF type; NF instance; NF Set ID; the binding indications; the notify service profile with the notify service name. For subscription-notification, the NF service consumer consumes a service (with explicit or implicit subscription) of an NF service producer which provides the notification service. Thus, the NF service consumer needs to register its NF profile with NF Set ID, the binding indications and the notify service profile (along with other services used by the NF as the NF service producer) so that the NF service producer can discover equivalent NF service consumers when sending a notification. A binding indication is associated with a certain notification callback in a subscription.
Thus, and following the above-described example, hardware processor 602 may execute instruction 612 to determine an alternative NF service consumer to receive the notification using the binding indication. That is, the NF service producer receives the NF consumer's NF profile with the binding indications from the NRF. The NF service producer extracts, e.g., an NF set ID and the notify service name from the binding indication associated with the observed event. The NF service producer queries the NRF again with NF Type, NF Set ID and the notify service name (as described above). The NRF returns a set of equivalent NF profiles identified by the NF Type and NF Set ID information. The NF service producer selects a notify service profile from the equivalent NF profiles. The NF service producer uses the endpoint specified in the notify service profile as an alternative NF service consumer to rebuild the call back reference URI for the notification. Ultimately, hardware processor 602 may execute instruction 614 to re-transmit the notification regarding the observed event to the alternative NF service consumer.
The computer system 700 also includes a main memory 706, such as a random access memory (RAM), cache and/or other dynamic storage devices, coupled to bus 702 for storing information and instructions to be executed by processor 704. Main memory 706 also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor 704. Such instructions, when stored in storage media accessible to processor 704, render computer system 700 into a special-purpose machine that is customized to perform the operations specified in the instructions.
The computer system 700 further includes a read only memory (ROM) 708 or other static storage device coupled to bus 702 for storing static information and instructions for processor 704. A storage device 710, such as a magnetic disk, optical disk, or USB thumb drive (Flash drive), etc., is provided and coupled to bus 702 for storing information and instructions. Also coupled to bus 702 are a display 712 for displaying various information, data, media, etc., input device 714 for allowing a user of computer system 700 to control, manipulate, and/or interact with computer system 700. One manner of interaction may be through a cursor control 716, such as a computer mouse or similar control/navigation mechanism. Computer system 700 may further still, include a network interface(s) 818 coupled to bus 802 provides data communication to one or more network link. Network interface(s) 818 may be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line, LAN card, WAN component, etc.
In general, the word “engine,” “component,” “system,” “database,” and the like, as used herein, can refer to logic embodied in hardware or firmware, or to a collection of software instructions, possibly having entry and exit points, written in a programming language, such as, for example, Java, C or C++. A software component may be compiled and linked into an executable program, installed in a dynamic link library, or may be written in an interpreted programming language such as, for example, BASIC, Perl, or Python. It will be appreciated that software components may be callable from other components or from themselves, and/or may be invoked in response to detected events or interrupts. Software components configured for execution on computing devices may be provided on a computer readable medium, such as a compact disc, digital video disc, flash drive, magnetic disc, or any other tangible medium, or as a digital download (and may be originally stored in a compressed or installable format that requires installation, decompression or decryption prior to execution). Such software code may be stored, partially or fully, on a memory device of the executing computing device, for execution by the computing device. Software instructions may be embedded in firmware, such as an EPROM. It will be further appreciated that hardware components may be comprised of connected logic units, such as gates and flip-flops, and/or may be comprised of programmable units, such as programmable gate arrays or processors.
The computer system 700 may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computer system causes or programs computer system 700 to be a special-purpose machine. According to one example, the techniques herein are performed by computer system 700 in response to processor(s) 704 executing one or more sequences of one or more instructions contained in main memory 706. Such instructions may be read into main memory 706 from another storage medium, such as storage device 710. Execution of the sequences of instructions contained in main memory 706 causes processor(s) 704 to perform the process steps described herein. In alternative examples, hard-wired circuitry may be used in place of or in combination with software instructions.
The term “non-transitory media,” and similar terms, as used herein refers to any media that store data and/or instructions that cause a machine to operate in a specific fashion. Such non-transitory media may comprise non-volatile media and/or volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device 710. Volatile media includes dynamic memory, such as main memory 706. Common forms of non-transitory media include, for example, a floppy disk, a flexible disk, hard disk, solid state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge, and networked versions of the same.
Non-transitory media is distinct from but may be used in conjunction with transmission media. Transmission media participates in transferring information between non-transitory media. For example, transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus 702. Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications.
As used herein, the term “or” may be construed in either an inclusive or exclusive sense. Moreover, the description of resources, operations, or structures in the singular shall not be read to exclude the plural. Conditional language, such as, among others, “can,” “could,” “might,” or “may,” unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain examples include, while other examples do not include, certain features, elements and/or steps. Terms and phrases used in this document, and variations thereof, unless otherwise expressly stated, should be construed as open ended as opposed to limiting. As examples of the foregoing, the term “including” should be read as meaning “including, without limitation” or the like. The term “example” is used to provide exemplary instances of the item in discussion, not an exhaustive or limiting list thereof. The terms “a” or “an” should be read as meaning “at least one,” “one or more” or the like. The presence of broadening words and phrases such as “one or more,” “at least,” “but not limited to” or other like phrases in some instances shall not be read to mean that the narrower case is intended or required in instances where such broadening phrases may be absent.