Patent Publication Number: US-9408092-B2

Title: RAN performance through digital signal processing between baseband unit and remote radio heads

Description:
BACKGROUND 
     Wireless user devices, such as mobile telephones, may connect to wireless networks (e.g., a cellular wireless network) via a radio access network (“RAN”). The RAN may include one or more base stations that may serve as the interface between the user devices and the wireless network. 
     In some RANs, a base station may include multiple remote radio head (RRH) nodes that connect to a baseband unit (BBU) that acts as a control node for the radio heads. The RRHs may be connected to the BBU using, for example, a high capacity optical fiber that connects the RRHs and the BBU. The interface (i.e., the optical fiber interface) between the RRHs and the BBU may communicate digital baseband signals and may be compliant with the common public radio interface (CPRI). 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIGS. 1A-1C  are diagrams illustrating an example of overviews of concepts described herein; 
         FIG. 2  is a diagram illustrating an example environment in which systems and/or methods described herein may be implemented; 
         FIGS. 3A-3C  is a diagram illustrating an example implementation of an eNodeB; 
         FIG. 4  is a diagram illustrating an example data structure; 
         FIGS. 5-8  are flowcharts illustrating example processes relating to improving RAN performance using digital signal processors; and 
         FIG. 9  is a diagram of example components of a device. 
     
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     The following detailed description refers to the accompanying drawings. The same reference numbers in different drawings may identify the same or similar elements. 
     Techniques described herein may use digital signal processors (DSPs) to process the digital baseband signals associated with CPRI links between BBUs and RRHs. The DSPs may be implemented at the RRH nodes (e.g., at the link leading to the BBU node), at the BBU node (e.g., at the links leading to the RRH nodes), or at both. The DSPs may be used to improve the performance of the RAN, such as by implementing digital filters or other signal processing techniques designed to remove interference and/or noise from the digital baseband signals or to otherwise enhance the performance of the RAN. 
       FIGS. 1A-1C  are diagrams illustrating example overviews of concepts described herein. As illustrated in  FIGS. 1A-1C , the RAN of a wireless network may include a base station, which may further include a BBU and one or more RRHs. The RRHs may each be connected to the BBU via a CPRI link (e.g., a CPRI link based on a fiber optic connection). The BBU may generally be responsible for baseband processing and connecting with a core portion of the wireless network. The RRHs may transmit and receive wireless signals using one or more antennas. Each RRH may convert the digital baseband signals, received from the BBU, into radio frequency (RF) signals. The RF signals may be wirelessly transmitted to or received from mobile devices (e.g., a mobile telephone). 
     The wireless transmission of the RF signals can be negatively affected by numerous environmental factors, such as interference from other RF sources, the distance of the mobile devices from an RRH, mobility of the mobile devices, and/or congestion of the RF interface. These factors may result in lost data and/or suboptimal utilization of the RAN. 
     As illustrated in  FIG. 1A , consistent with aspects described herein, a DSP may be installed along the CPRI link, such as at the input of each of the RRHs. Alternatively or additionally, as illustrated in  FIG. 1B , a DSP may be installed at each of the inputs of the BBUs (on the CPRI links). Alternatively or additionally, as illustrated in  FIG. 1C , a DSP may be installed at both ends of the CPRI links. 
     The DSPs may analyze, measure, and/or filter (e.g., using digital filters and/or other digital signal processing techniques) the digital baseband signals to improve the performance of the RF interface of the RAN. In one implementation, the filters implemented by the DSPs may be programmed by a technician. Alternatively or additionally, the DSPs may analyze the digital baseband signals to dynamically determine appropriate digital filters to apply. Still further, based on the analysis of the digital baseband signals, the DSPs may provide analysis data to the BBU or to an analysis server. The analysis data may be used to implement the digital filters or the other digital signal processing techniques. In one implementation, analysis data from multiple DSPs, associated with multiple CPRI links, may be used to generate different digital filters that collectively operate to improve the overall performance of the RF interface of the RAN. Alternatively or additionally, the analysis data may be used in other ways, such as by being used to tune the antennas associated with the RRHs, to tune other parameters relating to the operation of the RRHs/BBUs (e.g., level 1 network parameters), and/or to optimize other parameters relating to the operation of the RRHs and/or BBU (or other network elements in the core network). 
       FIG. 2  is a diagram illustrating an example environment  200  in which systems and/or methods described herein may be implemented. Environment  200  may generally relate to an implementation in a wireless network based on a Long Term Evolution (LTE) architecture. 
     As illustrated, environment  200  may include an evolved packet core  210 , external network  220 , mobile devices  230 , and analysis server  240 . Mobile devices  230  (often called “user equipment” in the context of an LTE network) may wirelessly connect to evolved packet core  210  through one or more base stations (often called “evolved NodeBs” or “eNodeBs” in the context of an LTE network) that communicate with evolved packet core  210 . Each eNodeB may include a BBU  218  and one or more RRHs  219 . As is further shown in  FIG. 2 , each eNodeB may include one or more DSPs associated with CPRI links between BBU  218  and RRHs  219 . The DSPs, associated with an eNodeB, are illustrated in more detail with reference to  FIGS. 3A-3C . In  FIG. 2 , one eNodeB is particularly labeled as including a BBU  218  and two RRHs  219 . 
     Evolved packet core  210  may represent a wireless core network that operates based on a third generation partnership project (“3GPP”) wireless communication standard. Evolved packet core  210  may include a RAN that includes one or more eNodeBs that connect to one or more network elements, such as serving gateway (“SGW”)  212 , mobility management entity device (“MME”)  214 , and a packet data network gateway (“PGW”)  216 . 
     SGW  212  may include one or more network devices that aggregate traffic received from one or more eNodeBs and may send the aggregated traffic to external network  220  via PGW  216 . MME  214  may include one or more computation and communication devices that perform operations to register mobile devices  230  with evolved packet core  210  and to establish bearer channels associated with a session with mobile device  230 , to handoff mobile device  230  from one eNodeB to another, and/or to perform other operations. PGW  216  may include one or more network devices, or other types of computation and communication devices, that act as an interface between evolved packet core  210  and other networks, such as external network  220 . 
     An eNodeB, as illustrated in environment  200 , may include a BBU  218  and one or more RRHs  219 . RRHs  219  may be geographically separated from BBU  218 . For example, BBU  218  may be installed within a building in a city. CPRI links (e.g., fiber links or other types of physical transport links) may connect BBU  218  to a number of RRHs  219 , which may each be positioned at other locations in the city (e.g., at neighboring city blocks). As previously mentioned, BBU  218  may generally be responsible for baseband processing and connecting with a core portion of the wireless network. BBU  218  may receive packets from the core network, modulate the data corresponding to the packets to digital baseband signals, and transmit the digital baseband signals to an RRH  219 . Similarly, digital baseband signals received from RRHs  219  may be demodulated, converted to packets, and transmitted to the core network. RRHs  219  may generally transmit and receive wireless signals, with mobile devices  230 , using one or more antennas. Each RRH  219  may thus convert the digital baseband signals, received from the BBU, into radio frequency (RF) signals. An example of an eNodeB, including a BBU and three RRHs  219 , is described in more detail below with reference to  FIGS. 3A-3C . 
     External network  220  may include one or more wired and/or wireless networks. For example, external network  220  may include a packet data network (PDN), such as an Internet Protocol (IP)-based PDN. Mobile devices  230  may connect, through PGW  216 , to data servers, application servers, or to other servers/applications that are coupled to external network  220 . 
     Each of mobile devices  230  may include any computation and communication device, such as a wireless mobile communication device that is capable of communicating with an eNodeB. For example, mobile device  230  may include a radiotelephone; a personal communications system (PCS) terminal (e.g., a device that combines 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 smart phone; a laptop computer; a tablet computer; a camera; a personal gaming system, or another type of mobile computation and communication device. Mobile device  230  may send traffic to and/or receive traffic from external network  220 . 
     Analysis server  240  may include one or more server devices, or other types of devices, that receive data from DSPs associated with CPRI links between BBUs  218  and RRHs  219  of one or more eNodeBs. The received data may include frequency spectrums of digital baseband signals (i.e., frequency representations of the digital baseband signals in the frequency domain) processed by the DSPs, statistics (e.g., bandwidth, etc.) relating to the digital baseband signals, raw samples of the digital baseband signals, and/or other information. Analysis server  240  may aggregate and/or analyze the data. Based on the analysis, analysis server  240  may cause the DSPs to implement digital filters or other digital processing techniques to improve the performance of the RAN. Alternatively or additionally, and as previously mentioned, analysis server  240  may use other techniques to, based on the data received from the DSPs, improve the performance of the RAN (e.g., to tune antennas associated with the RRHs, to tune other parameters relating to the operation of the RRHs, etc.). 
     Although illustrated, in  FIG. 2 , as being outside of evolved packet core  210 , analysis server  240  may be implemented as a device within evolved packet core  210 , within an eNodeB (e.g., as logic within BBU  218 ), and/or as part of or connected to external network  220 . 
     The quantity of devices and/or networks, illustrated in  FIG. 2 , 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 in  FIG. 2 . Alternatively, or additionally, one or more of the devices of environment  200  may perform one or more functions described as being performed by another one or more of the devices of environment  200 . 
       FIGS. 3A-3C  are diagrams illustrating components of an eNodeB corresponding to various embodiments described herein. 
     As shown in  FIG. 3A , an eNodeB may include BBU  218  and one or more RRHs  219 . BBU  218  may be connected to each of RRHs  219  via a CPRI link  350 . BBU  218  may include a baseband (BB) component  310  and core communication (CC) component  320 . BB component  310  may provide digital baseband processing, such as processing relating to the conversion of packetized data, received by CC component  320 , to digital baseband signals. BB component  310  may also convert digital baseband signals, received from an RRH  219 , to packetized data. More generally, BB component  210  may perform protocol processing for the Radio Link Control (RLC) layer, Packet Data Convergence Protocol (PDCP) layer, Media Access Control (MAC) layer, and physical (PHY) network layer. The transmission techniques may include LTE-specific multiple-input multiple-output (MIMO), multilevel modulation, Orthogonal Frequency-Division Multiple Access (OFDMA) processing, and Single Carrier Frequency-division Multiple Access (SC-FDMA) processing. Other transmission protocols include Hybrid Automatic Repeat Request (H-ARQ), power control, and/or inter-cell interference control. 
     CC component  320  may, for example, perform IP layer protocol processing, call control processing, operations, administration and maintenance (OAM) processing, network address translation (NAT) processing, and other functions. CC component  320  may communicate with evolved packet core  210 , such as with SGW  212 , to communicate packet data. That is, CC component  320  may receive packet data from SGW  212  and forward the packet data to RRH  219 . Similarly, CC component  320  may receive packet data from BB component  310  and forward the packet data to SGW  212 . 
     RRH  219  may include transmission control (TRX) processing component  330 , amplifier (AMP)  340 , antennas  345 , and DSP  360 . TRX component  330  may perform functions relating to wireless signal processing, including distortion compensation processing, digital-to-analog conversion and analog-to-digital conversion of transmission signals. AMP  340  may perform amplification of the transmission power of the wireless signals transmitted over antennas  345 . AMP  340  may also amplify wireless signals that are received from antennas  345 . 
     DSP  360  may perform digital processing of the digital baseband signals received over CPRI link  350 . DSP  360  may operate to measure, analyze, and/or filter, in the digital domain, the analog signals that are to be transmitted (or were received) using antennas  345 . The operation of DSP  360  with respect to the measuring, analyzing, and filtering will be described in more detail below with reference to  FIGS. 4-9 . 
     DSP  360  may be physically implemented within RRH  219  or may be implemented as a separate component that may be installed external to RRH  219 . For example, DSP  360  may be implemented as a device designed to be inserted in-line with a fiber-based CPRI interface (e.g., one port of DSP  360  may be inserted into a CPRI interface of RRH  219  and the fiber line to BBU  218  may be inserted into a second port of DSP  360 ). In this manner, DSP  360  may be installed separately from RRH  219 . Control signaling (e.g., measurements or analysis data), associated with DSP  360 , may be communicated using CPRI link  350 , or may be communicated out-of-band relative to CPRI link  350  (e.g., DSP  360  may communicate with BBU  218  and/or analysis server  240  using another communication link). 
       FIG. 3B  is a diagram illustrating components of an eNodeB corresponding to another implementation. The implementation of the eNodeB, as shown in  FIG. 3B , is similar to that of  FIG. 3A . In  FIG. 3B , however, the measure, analyzing, and filtering of the digital baseband signals may be performed at BBU  218 . As illustrated, BBU  218  may include or be associated with a DSP  360  for each CPRI link  350  to RRHs  219 . As with DSP  360 , as illustrated in  FIG. 3A , DSP  360  may be implemented within BBU  218  or may be implemented as a separate component that may be installed external to BBU  218 . 
       FIG. 3C  is a diagram illustrating components of an eNodeB corresponding to another implementation. The implementation of the eNodeB, as shown in  FIG. 3C , is similar to that of  FIGS. 3A and 3B . In  FIG. 3C , however, the measuring, analyzing, and filter of the digital baseband signals may be performed at both BBU  218  and RRHs  219 . As illustrated, each end of CPRI link  350  may include a DSP  360 . 
       FIG. 4  illustrates an example data structure  400  which may be stored by analysis server  240 . Data structure  400  may be used by analysis server  240  to analyze measurements from a number of DSPs  360 . Analysis server  240  may, for example, based on frequency spectra measurements associated with some or all of the DSPs  360  associated with a eNodeB, perform a correlation analysis, or other analysis to determine corrective actions that may optimize the overall RAN interface associated with the eNodeB. The fields shown for data structure  400  are examples. Data structure  400  may include fewer, additional, or different fields. 
     Data structure  400  may include DSP identification (ID) field  410 , data from DSP field  420 , and DSP corrective actions field  430 . DSP identification field  410  may store a value that identifies a particular DSP  360 . For example, DSP identification field  410  may store a hardware value associated with a particular DSP  360 , a value associated with a particular RRH at which the DSP is installed, a value associated with a particular BBU at which DSP  360  is installed, and/or a value associated with a particular CPRI link  350  on which the DSP operates. Data from DSP field  420  may include data measured by the DSP identified in DSP identification field  410 . For example, field  420  may include frequency spectra of the digital baseband data that is sampled by DSP  360  at various times, performance metrics relating to the digital baseband data (e.g., the bandwidth of the corresponding analog signal, etc.), or other data. DSP corrective actions field  430  may store an indication of any filters, or other mechanisms for corrective actions, that are implemented by or associated with the corresponding DSP identified in DSP identification field  410 . For example, analysis server  240  may determine that a particular DSP  360  should implement a particular finite impulse response (FIR) filter. Parameters describing the filter may be stored in DSP corrective actions field  430 . 
     Two example records are illustrated for data structure  400 . The first record may be associated with the DSP labeled as “DSP100.” For this DSP, data from DSP field  420  may store a number of frequency spectrum samples (e.g., the DSP may periodically record the frequency spectrum over a one second interval and transmit the spectrum to analysis server  240 ). DSP corrective actions field  430  may indicate the digital filters that are being applied by the DSP (e.g., “filter1” and “filter2”). The second record may be associated with the DSP labeled as “DSP110.” For this DSP, data from DSP field  420  may store performance indicators relating to the digital baseband signal (e.g., the bandwidth). DSP corrective actions field  430  may indicate the digital filters that are being applied by the DSP (e.g., “filter3”). 
       FIG. 5  is a flowchart illustrating an example of a process  500  relating to improving RAN performance using DSPs  360 . Process  500  may be performed by, for example, analysis server  240 . Alternatively or additionally, some or all of process  500  may be performed by BBU  218 , RRHs  219 , and/or DSPs  360 . 
     Process  500  may include receiving data, relating to the digital baseband signals, from one or more DSPs (block  510 ). As previously mentioned, DSPs  360  may measure and/or sample the digital baseband signals corresponding to the CPRI link to which the DSPs are associated. For instance, a DSP  360  may occasionally or periodically calculate frequency spectrum for a particular sample of the digital baseband signal (e.g., a one second sample). Alternatively, DSP  360  may measure and/or calculate other metrics relating to the digital baseband signal, such as the bandwidth of the signal. DSP  360  may transmit the measured and/or calculated data to analysis server  240 , which may store or otherwise maintain the data in a data structure, such as data structure  400 . 
     Process  500  may further include analyzing the received data to determine one or more digital filters (or other digital signal processing techniques) to implement (block  520 ). In one implementation, analysis server  240  may determine digital filters to implement at a DSP on a per-DSP basis. For instance, analysis server  240  may analyze the data from a particular DSP  360  to determine one or more infinite impulse response (IIR) for FIR digital filters that may reduce the interference associated with the corresponding digital baseband signal. As one example, assume the radio signals received by a particular RRH  219  include interference in a particular frequency band associated with the signal. Analysis server  240  may identify the particular frequency band associated with the interference and determine a filter (e.g., a band-stop digital filter) appropriate for reducing the interference within the particular frequency band. In some situations, instead of analyzing the received data at analysis server  240 , the analysis and determination of the digital filters may be done by DSP  360  or by the RRH  219  and/or BBU  218  and is associated with DSP  360 . 
     In some implementations, the analysis performed (at block  520 ) may be an analysis performed based on data received from multiple DSPs  360 . In this situation, the analysis may be performed based on the goal of improving the RAN performance at the eNodeB level (or higher level). For example, analysis server  240  may determine a number of digital filters, each associated with a particular DSP  360 , to improve the overall throughput of the radio interface of the eNodeB. For instance, a filter at a particular DSP  360  may lower the performance of the RRH associated with the particular DSP  360  but may still be desirable if the filter, potentially in conjunction with other filters implemented by other DSPs  360 , increase the performance enough to make up for the reduced performance caused by the filter associated with the particular DSP  360 . In this situation, the analysis (at block  520 ) may include a correlation-based analysis in which the digital baseband signals, associated with multiple CPRI links, are correlated to determine common interference or noise conditions associated with different RRHs. In this case, the analysis may perform “interference hunting,” in which interference, potentially from multiple interacting interference sources (in the RF domain). The interacting interference may be detected, by DSPs  360 , and filters may be determined to reduce the overall interference. 
     Process  500  may further include updating the DSPs to implement the determined digital filters (or other digital signal processing techniques) (block  530 ). For example, analysis server  240  may transmit one or more messages to DSPs  360  to cause the DSPs to implement the determined digital filters. 
       FIG. 6  is a flowchart illustrating an example of a process  600  relating to improving RAN by tuning antennas based on data received from DSPs. Process  600  may be performed by, for example, analysis server  240 . Alternatively or additionally, some or all of process  600  be may performed by BBU  218 , RRH  219 , and/or DSPs  360 . 
     Process  600  may include receiving data, relating to the digital baseband signals, from one or more DSPs (block  610 ). As previously mentioned, DSPs  360  may measure and/or sample the digital baseband signals corresponding to the CPRI link to which DSPs are associated. The reception of data, at block  610 , may be similar to the reception of data performed at block  510  ( FIG. 5 ). 
     Process  600  may further include analyzing the received data to determine modifications of antenna tuning parameters (block  620 ). The antenna tuning parameters may relate to electrical tuning of an antenna(s), connected to an RRH  219 , to allow for, for example, adjustable orientation of the main antenna lobe in the vertical (tilt) and horizontal (azimuth) plane, as well as the width of the antenna lobe. Examples of parameters that may be tuned include antenna downtilt, azimuth, and beam width. In one implementation, analysis server  240  may determine antenna parameters to tune on a per-DSP basis or per-CPRI link basis. For instance, analysis server  240  may analyze the data from a particular DSP  360  to determine the antenna parameters to tune. The tuning may be based on a goal of maximizing a signal-to-noise (SNR) ration of the RF signals that are transmitted or received over the corresponding antenna. 
     In some implementations, the analysis performed (at block  620 ) may be an analysis performed based on data received from multiple DSPs  360 . In this situation, the analysis may be performed based on the goal of simultaneously tuning multiple antennas to maximize the RAN performance. 
     Process  600  may further include tuning the antennas (block  630 ). For example, analysis server  240  may transmit one or more messages to RRHs  219 , corresponding to the antennas that are to be tuned. The messages may include the values for the antenna parameters that are to be tuned and may cause RRHs  219  to adjust the antenna parameters. As previously mentioned, tuning of the antenna parameters may cause, for example, adjustments to the orientation of the antenna lobe in the vertical (tilt) and horizontal (azimuth) plane, as well as the width of the antenna lobe. 
       FIG. 7  is a flowchart illustrating an example of a process  700  relating to improving RAN performance by updating operational parameters associated with network equipment. Process  700  may be performed by, for example, analysis server  240 . Alternatively or additionally, some or all of process  700  be may performed by BBU  218 , RRH  219 , and/or DSPs  360 . 
     Process  700  may include receiving data, relating to the digital baseband signals, from one or more DSPs (block  710 ). As previously mentioned, DSPs  360  may measure and/or sample the digital baseband signals corresponding to the CPRI link to which the DSPs are associated. The reception of data, at block  710 , may be similar to the reception of data performed at block  510  ( FIG. 5 ). 
     Process  700  may further include analyzing the received data to determine modifications to operational parameters of network equipment (block  720 ). The operational parameters to modify may include Level 1 layer (physical layer) parameters in the Open Systems Interconnection (OSI) network model. The operational parameters may relate to, for example, operation of BBU  218  (e.g., operation of BB component  310  and/or CC component  320 ) and/or operation of RRH  219  (e.g., operation of TRX component  330  and/or AMP  340 ). In one implementation, analysis server  240  may determine the operational parameters to modify on a per-DSP basis or per-CPRI link basis. For instance, analysis server  240  may analyze the data from a particular DSP  360  to determine the operational parameters to modify. The modification of the operational parameters may be based on a goal of maximizing a signal-to-noise (SNR) ratio of the RF signals that are transmitted or received over the corresponding antenna. 
     In some implementations, the analysis performed (at block  720 ) may be an analysis performed based on data received from multiple DSPs  360 . In this situation, the analysis may be performed based on the goal of simultaneously tuning multiple operational parameters to maximize the RAN performance. 
     Process  700  may further include updating the operation parameters associated with the network equipment (block  730 ). For example, analysis server  240  may transmit one or more messages to BBU  218 , RRH  219 , or other network equipment. The messages may include updated values for the operation parameters that are to be modified and may the network equipment to adjust the operational parameters. 
     In some implementations, process  500 ,  600 , and  700  may be executed iteratively. That is, analysis server  240  may generate digital filters, adjust antenna parameters, and/or adjust operation parameters of network equipment, respectively, and then observe the effect of the operation on the received data (e.g., blocks  610 ,  710 , or  810 ). Analysis server  240  may continue to perform adjustments to further optimize performance of the RAN. In some implementations, all or some of processes  500 ,  600 , and  700  may be performed at the same time, and/or the parameters relating to the various processes may be determined in conjunction with one another. 
       FIG. 8  is a flowchart illustrating an example of a process  800  relating to identification of external sources of interference. Process  800  may be performed by, for example, analysis server  240 . 
     Process  800  may include receiving data, relating to the digital baseband signals, from multiple DSPs (block  810 ). As previously mentioned, DSPs  360  may measure and/or sample the digital baseband signals corresponding to the CPRI link to which the DSPs are associated. The reception of data, at block  810 , may be similar to the reception of data performed at block  510  ( FIG. 5 ). 
     Process  800  may further include analyzing the received data, associated with the multiple DSPs, to identify a location of an external source of interference (block  820 ). In one implementation, the identification of the external source of interference may include identifying a physical location or area of the external source of interference. For example, frequency spectrum samples from a number of DSPs  360  may indicate that there is common interference source associated with each of the DSPs. A common interference source may include, for example, an electronic device or radio, that through malfunction (or for another reason) is generating radio interference in the frequency range used by RRHs  219 . The magnitude of the interference may be different in the frequency spectra for each of the multiple DSPs  360 . Because the location of the antenna associated with each DSP  360  may be known, analysis server  240  may use triangulation techniques, or other techniques, to estimate the physical location of the external source of interference. 
     Process  800  may further include outputting an indication of the external source of the interference (block  830 ). For example, analysis server  230  may inform an operator, or other user, of the detected interference source. The operator may investigate the source of the interference, such as by traveling to the indicated location to determine what is causing the interference. 
       FIG. 9  is a diagram of example components of device  900 . One or more of the devices described above (e.g., with respect to illustrated in  FIGS. 1A-1C, 2 , and/or  3 A- 3 C) may include one or more devices  900 . Device  900  may include bus  910 , processor  920 , memory  930 , input component  940 , output component  950 , and communication interface  960 . In another implementation, device  900  may include additional, fewer, different, or differently arranged components. 
     Bus  910  may include one or more communication paths that permit communication among the components of device  900 . Processor  920  may include a processor, microprocessor, or processing logic that may interpret and execute instructions. Memory  930  may include any type of dynamic storage device that may store information and instructions for execution by processor  920 , and/or any type of non-volatile storage device that may store information for use by processor  920 . 
     Input component  940  may include a mechanism that permits an operator to input information to device  900 , such as a keyboard, a keypad, a button, a switch, etc. Output component  950  may include a mechanism that outputs information to the operator, such as a display, a speaker, one or more light emitting diodes (LEDs), etc. 
     Communication interface  960  may include any transceiver-like mechanism that enables device  900  to communicate with other devices and/or systems. For example, communication interface  960  may include an Ethernet interface, an optical interface, a coaxial interface, or the like. Communication interface  960  may include a wireless communication device, such as an infrared (IR) receiver, a Bluetooth radio, or the like. The wireless communication device may be coupled to an external device, such as a remote control, a wireless keyboard, a mobile telephone, etc. In some embodiments, device  900  may include more than one communication interface  960 . For instance, device  900  may include an optical interface and an Ethernet interface. 
     Device  900  may perform certain operations relating to one or more processes described above. Device  900  may perform these operations in response to processor  920  executing software instructions stored in a computer-readable medium, such as memory  930 . A computer-readable medium may be defined as a non-transitory memory device. A memory device may include space within a single physical memory device or spread across multiple physical memory devices. The software instructions may be read into memory  930  from another computer-readable medium or from another device. The software instructions stored in memory  930  may cause processor  920  to perform processes described herein. Alternatively, hardwired circuitry may be used in place of or in combination with software instructions to implement processes described herein. Thus, implementations described herein are not limited to any specific combination of hardware circuitry and software. 
     The foregoing description of implementations provides illustration and description, but is not intended to be exhaustive or to limit the possible implementations to the precise form disclosed. Modifications and variations are possible in light of the above disclosure or may be acquired from practice of the implementations. For example, while series of blocks has been described with regard to  FIGS. 5-8 , the order of the blocks may be modified in other implementations. Further, non-dependent blocks may be performed in parallel. 
     Additionally, while an example of a data structure is illustrated in  FIG. 4  as including certain types of information, in practice, these data structures may store additional, fewer, different, or differently arranged types of information than shown in these figures. Furthermore, while these data structures are shown as tables, in practice, these data structures may take the form of any other type of data structure, such as an array, a linked list, a hash table, a tree, and/or any other type of data structure. 
     The actual software code or specialized control hardware used to implement an embodiment is not limiting of the embodiment. Thus, the operation and behavior of the embodiment has been described without reference to the specific software code, it being understood that software and control hardware may be designed based on the description herein. 
     Even though particular combinations of features are recited in the claims and/or disclosed in the specification, these combinations are not intended to limit the disclosure of the possible implementations. In fact, many of these features may be combined in ways not specifically recited in the claims and/or disclosed in the specification. Although each dependent claim listed below may directly depend on only one other claim, the disclosure of the possible implementations includes each dependent claim in combination with every other claim in the claim set. 
     Further, while certain connections or devices are shown, in practice, additional, fewer, or different, connections or devices may be used. Furthermore, while various devices and networks are shown separately, in practice, the functionality of multiple devices may be performed by a single device, or the functionality of one device may be performed by multiple devices. Further, multiple ones of the illustrated networks may be included in a single network, or a particular network may include multiple networks. Further, while some devices are shown as communicating with a network, some such devices may be incorporated, in whole or in part, as a part of the network. 
     To the extent the aforementioned embodiments collect, store or employ personal information provided by individuals, it should be understood that such information shall be used in accordance with all applicable laws concerning protection of personal information. Additionally, the collection, storage and use of such information may be subject to consent of the individual to such activity, for example, through well known “opt-in” or “opt-out” processes as may be appropriate for the situation and type of information. Storage and use of personal information may be in an appropriately secure manner reflective of the type of information, for example, through various encryption and anonymization techniques for particularly sensitive information. 
     No element, act, or instruction used in the present application should be construed as critical or essential unless explicitly described as such. An instance of the use of the term “and,” as used herein, does not necessarily preclude the interpretation that the phrase “and/or” was intended in that instance. Similarly, an instance of the use of the term “or,” as used herein, does not necessarily preclude the interpretation that the phrase “and/or” was intended in that instance. Also, as used herein, the article “a” is intended to include one or more items, and may be used interchangeably with the phrase “one or more.” Where only one item is intended, the terms “one,” “single,” “only,” or similar language is used. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.