Optimized user equipment network access selection

A method and device is disclosed to select a network access link for an application in a user equipment (UE) device to use for communicating with a network. The method may include determining a plurality of network access links associated with the UE device and determining one or more criteria associated with a request to access a network. The criteria may include throughput, financial cost, latency, or signal strength. The method may include determining a score for each of the plurality of network access links with respect to the criteria. The score score may be based on historical data related to the criteria. The method may include comparing the score for each of the plurality of network access links with the criteria and selecting one of the network access links for an application to use to communicate with the network.

BACKGROUND

User devices may access a network through different access links, such as through WiFi networks, Fifth Generation (5G) wireless networks (e.g., 5G New Radio (NR) networks), wired networks (e.g., cable or fiber), macrocells, small cells, etc. Each access link may have advantages or disadvantages as measured by resource usage, latency, and/or throughput, for example.

DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS

Methods disclosed below allow applications running on user equipment to select network access links based on various criteria or requirements, such as latency or throughput among other things. Different applications running in the user equipment may select different network access links based on the specific needs of the application. For example, one application may use a network access link with low latency and low throughput while, simultaneously, another application may use a network access link with high latency and high throughput. In some implementations, a single application may use multiple separate connections for different needs (e.g., one connection for low latency needs, another connection for throughput).

FIG.1is a diagram illustrating an exemplary environment100in which systems and methods described herein may be implemented. Referring toFIG.1, environment100may include user equipment (UE) devices110-1through110-3(referred to individually as UE device110and collectively as UE devices110), wireless stations120-1through120-4(referring to individually as wireless station120and collectively as wireless stations120), integrated access and backhaul (IAB) anchor130, core network140, network devices150, and a link160. The dashed lines A1-A4represent wireless network access links from UE devices110. Dashed lines B1-B3represent wireless backhaul links from wireless stations120to other devices such as IAB anchor130. Solid lines B4and B5represent wired backhaul links from wireless stations120to other devices such as IAB anchor130.

UE device110may include a mobile device, such as a wireless or cellular telephone device (e.g., a conventional cell phone with data processing capabilities), a smart phone, a personal digital assistant (PDA) that can include a radiotelephone, etc. In another implementation, UE device110may include any type of mobile or fixed computer device or system, such as a personal computer (PC), a laptop, a tablet computer, a notebook, a netbook, a wearable computer (e.g., a wrist watch, eyeglasses, etc.), a game playing device, a music playing device, etc. In other implementations, UE device110may be implemented as a machine-type communications (MTC) device, an Internet of Things (IoT) device, a machine-to-machine (M2M) device, etc., that includes communication functionality, such as a home appliance device, a home monitoring device, a camera, etc. UE device110may wirelessly connect to wireless stations120.

In an exemplary implementation, UE devices110may use wireless channels to communicate with wireless stations120. The wireless channels may correspond, for example, to a physical layer in accordance with different radio access technology (RAT) types. Wireless channels may correspond to a physical layer associated with Fifth Generation (5G) New Radio (NR) standards. In other implementations, the wireless channels may correspond to physical layers associated with Fourth Generation (4G), 4.5G or other air interfaces. In an exemplary implementation, UE devices110may be 5G-capable devices that provide voice communication, mobile broadband services (e.g., video streaming, real-time gaming, high-speed Internet access etc.), best effort data traffic, and/or other types of applications via a 5G NR service using, for example, millimeter wave (mmWave) radio frequencies (e.g., 24.25 to 52.6 GHz) or other radio frequencies (e.g., sub-6 GHz including 5 to 30 MHz and 410 to 7125 MHz).

Wireless stations120(sometimes referred to as base stations, relays, or IAB nodes) may each include a network device that has computational and wireless communication capabilities. Wireless stations120may each include a transceiver system that connects UE device110to other components of a radio access network (RAN) and core network140using wireless and/or wired interfaces. In one implementation, wireless station120may be a 5G capable device, such as a next generation Node B (gNodeB or gNB), configured to receive 5G communications over a RAN. In such implementations, wireless stations120may include one or more radio frequency (RF) transceivers (also referred to as cells and/or base station sectors) facing particular directions. For example, wireless stations120may include three RF transceivers and each RF transceiver may service a 120° sector of a 360° field of view. Each RF transceiver may also include an antenna array. The antenna array may include an array of controllable antenna elements configured to send and receive 5G NR wireless signals via one or more antenna beams. The antenna elements may be digitally controllable to electronically tilt, or adjust the orientation of, an antenna beam in a vertical direction and/or horizontal direction. In some implementations, the antenna elements may additionally be controllable via mechanical steering using one or more motors associated with each antenna element.

Wireless stations120may include an evolved Node B (eNodeB or eNB), an evolved LTE (eLTE) eNB, a gNB, a radio network controller (RNC), a remote radio head (RRH), a baseband unit (BBU), a small cell node (e.g., a picocell node, a femtocell node, a microcell node, a repeater, a relay, etc.), or another type of wireless station/node that provides wireless access to/from UE devices110and other wireless stations120. Environment100may include a split gNB that may include multiple gNB-distributed units (DUs) connected to a gNB-centralized unit (CU) connected to core network140. For example, the gNB-DUs may support multiple different carriers and bandwidths. As an alternative to a split gNB scenario, the system may be similarly applicable to an Option 3×, split-eNB case (e.g., via a W1 interface), or alternatively, for a connection to an evolved packet core (EPC)/5G core interworking.

The radio access network in environment100may include functional splitting, such as Options 1-8 that may include an EPC network and/or a NG core (NGC) network, or the splitting of the various layers (e.g., physical layer, Media Access Control (MAC) layer, Radio Link Control (RLC) layer, and Packet Data Convergence Protocol (PDCP) layer), plane splitting (e.g., user plane, control plane, etc.), CU and DU, interface splitting (e.g., F1-U, F1-C, E1, Xn-C, Xn-U, X2-C, Common Public Radio Interface (CPRI), etc.) as well as other types of services, such as dual connectivity (DC) or higher (e.g., a secondary cell group (SCG) split bearer service, a MCG split bearer, an SCG bearer service, E-UTRA-NR (EN-DC), NR-E-UTRA-DC (NE-DC), NG RAN E-UTRA-NR DC (NGEN-DC), or another type of DC (e.g., multi-radio access technology (RAT) (MR-DC), single-RAT (SR-DC), etc.), carrier aggregation (CA) (e.g., intra-band, inter-band, contiguous, non-contiguous, etc.), network slicing, coordinated multipoint (CoMP), various duplex systems (e.g., frequency division duplex (FDD), time division duplex (TDD), half-duplex FDD (H-FDD), etc.), and/or another type of connectivity service (e.g., NSA) (e.g., non-standalone NR, non-standalone E-UTRA, etc.), SA (e.g., standalone NR or standalone E-UTRA)).

Wireless stations120may be configured to communicate in environment100in a hop-by-hop manner until reaching IAB anchor130. For example, wireless stations120may be part of a RAN connecting UE devices110to IAB anchor130. Wireless stations120may forward data received from UE devices110, as well as data received from other wireless stations120to IAB anchor130. Wireless stations120may communicate with each other over wireless channels and/or wired channels. For example, in some instances, one or more wireless stations120may be configured to communicate via wired connections, such as fiber optic cables. In such implementations, wireless stations120may use wired connections to communicate with other wireless stations120when wireless communications are not available (e.g., a line of sight is not available between wireless stations120). While some wireless stations120(e.g., an IAB node) may communicate with core network140by reaching IAB anchor130in a hop-by-hop manner, in other embodiments, wireless stations120(e.g., regular eNBs or gNBs) may communicate directly to core network140using a wired and backhaul.

IAB anchor130, also referred to as an IAB donor130or anchor station, may include one or more computing devices or systems that are part of a wireless station that acts as an interface between the RAN associated with UE devices110and wireless stations120, and core network140. The term “IAB anchor130” or “anchor station130” includes any base station that aggregates data from wireless stations120and/or UE devices110and connects to core network140via a wired connection160, such as via a fiber connection. In an exemplary implementation, IAB anchor130may include some similar elements/components as wireless stations120. For example, IAB anchor130may include one or more RF transceivers facing particular directions, such as three RF transceivers and each RF transceiver may service a 120° sector of a 360° field of view. Each RF transceiver may also include an antenna array that includes an array of controllable antenna elements configured to send and receive 5G NR wireless signals via one or more antenna beams. As with links120, antenna elements in IAB anchor130may be digitally controllable to electronically steer an antenna beam vertically or horizontally. In some implementations, the antenna elements may additionally be controllable via mechanical steering using one or more motors. IAB anchor130may also connect to core network140via link160. In an exemplary implementation, link160may be a fiber optic link. In one embodiment, IAB anchor130may have a split architecture with CU and DU functionality.

Core network140may include one or more wired, wireless and/or optical networks that are capable of receiving and transmitting data, voice and/or video signals. For example, core network140may include a local area network (LAN), a wide area network (WAN), a metropolitan area network (MAN), an optical network, a cable television network, a satellite network, a wireless network (e.g., a code division multiple access (CDMA) network, a general packet radio service (GPRS) network), an ad hoc network, a telephone network (e.g., the Public Switched Telephone Network (PSTN) or a cellular network), an intranet, the Internet or a combination of networks capable of transmitting data. In one implementation, core network140provides packet-switched services and wireless Internet protocol (IP) connectivity to different components in environment100, such as UE devices110, to provide, for example, data, voice, and/or multimedia services. In some implementations, core network140may include a network for delivering data (e.g., multimedia services) between UE device110and an external network (such as another LAN, WAN, MAN, ad hoc network, etc.).

According to an exemplary implementation, core network140may include a core 5G NR network. In such an implementation, core network140may include network devices150that implement or host network functions, such as a user plane function (UPF), a session management function (SMF), a core access and mobility management function (AMF), a unified data management (UDM), policy control function (PCF), an authentication server function (AUSF), a network slice selection function (NSSF), as well as other network elements associated with billing, security, authentication and authorization, network policies, subscriber profiles, network slicing. In other implementations, core network140may include a 4G core network.

The exemplary configuration illustrated inFIG.1is provided for simplicity. Environment100may include more or fewer devices than illustrated inFIG.1. For example, environment100may include a large number (e.g., hundreds or more) of UE devices110, wireless stations120and IAB anchors130, as well as multiple core networks140. In addition, environment100may include additional elements, such as switches, gateways, routers, monitoring devices, etc., that aid in routing data to/from UE devices110.

Functions are described below as being performed by particular components in environment100. In other implementations, functions described as being performed by one device may be performed by another device or multiple other devices, and/or functions described as being performed by multiple devices may be combined and performed by a single device.

FIG.2is a diagram illustrating an exemplary environment200in one embodiment. Environment200may exist within environment100(shown inFIG.1) and may include wireless station120-1and UE device110-1(also shown inFIG.1). Environment100includes a customer premises250(e.g., an indoor environment) with three access points (APs)202-1,202-2, and202-3(individually AP202and collectively APs202), walls204, and an optical network terminal ONT206.

ONT206may receive data, e.g., on a fiber optic cable, and may transmit data to the appropriate device in customer premises250(e.g., over link205). Likewise, ONT206may receive data from any device in customer premises250(e.g., over link205) and may transmit the data to other devices, e.g., through a fiber optic cable. ONT206may provide customer premises250with Internet access through a connection (not shown inFIG.2) to core network140, television access, telephone service, etc. Other technologies may be used to provide consumer premises250with Internet access, access to core network140, television access, and/or telephone service. For example, ONT206may alternatively or additionally include a modem that transmits and receives data using a coaxial cable and a standard such as the Data Over Cable Services Interface Specification (DOCSIS).

APs202may employ wireless standards (e.g., WiFi), such the IEEE 802.11 family of standards for transmitting and receiving data. One or more of APs202may include the function of a router. For example, one or more of APs202may receive data (e.g., a packet) on one port and may forward the received data on another port in the direction of the destination of the data. For example, an AP202may receive a packet from UE device110and may forward the packet to ONT206. Likewise, AP202may receive a packet from UE device110and forward the packet to a different device, such as a different user equipment device. One or more of APs202may also include a switch, a hub, a firewall, etc.

As noted above, consumer premises250may additionally or alternatively receive Internet service, access to core network140, television access, and/or telephone service using technologies other than those provided by ONT206. For example, consumer premises250may receive these services through modem208. Modem208may transmit and receive data using a coaxial cable and a standard such as DOCSIS. Modem208may provide customer premises250with Internet access through a connection (not shown) to core network140, television access, telephone service, etc. For example, modem208may receive data from any device in customer premises250and transmit the data toward other devices, such as network devices150in core network140.

As shown inFIG.2, UE device110-1may use an access link A2to connect to wireless station120-1, an access link207to connect to AP202-1, an access link209to connect to AP202-2, and/or an access link211to connect to AP202-3. In turn, to connect to modem208, AP202-2may use link216, AP202-1may use link217, and AP202-3may use link215.

The exemplary configuration illustrated inFIG.2is provided for simplicity. Environment200may include more or fewer devices than illustrated inFIG.2. For example, environment200may include a large number (e.g., hundreds or more) of UE devices110, APs202, and/or ONTs206. In addition, environment200may include additional elements, such as switches, gateways, routers, monitoring devices, etc., that aid in routing data to/from UE devices110.

FIG.3is a diagram illustrating example components of a device300(e.g., a computing device) according to an implementation described herein. UE device110, wireless station120, IAB anchor130, network devices150, modem208, and/or AP202may each include or be instantiated on one or more devices300. As illustrated inFIG.3, device300may include a bus305, a processor310, a memory310, a communication interface325, an input device330, and/or an output device335. According to other embodiments, device300may include fewer components, additional components, different components, or a different arrangement of components than those illustrated inFIG.3and described herein.

Bus305includes a path that permits communication among the components of device300. For example, bus305may include a system bus, an address bus, a data bus, and/or a control bus. Bus305may also include bus drivers, bus arbiters, bus interfaces, and/or clocks.

Processor310includes one or multiple processors, microprocessors, data processors, co-processors, application specific integrated circuits (ASICs), controllers, programmable logic devices, chipsets, field-programmable gate arrays (FPGAs), application specific instruction-set processors (ASIPs), system-on-chips (SoCs), central processing units (CPUs) (e.g., one or multiple cores), microcontrollers, and/or some other type of component that interprets and/or executes instructions and/or data. Processor310may be implemented as hardware (e.g., a microprocessor), a combination of hardware and software (e.g., a SoC, and/or an ASIC), may include one or multiple memories (e.g., cache, etc.), etc. Processor310may be a dedicated component or a non-dedicated component (e.g., a shared resource).

Processor310may control the overall operation, or a portion of operation(s), performed by device300. Processor310may perform one or multiple operations based on an operating system and/or applications or computer programs (e.g., software320). Processor310may access instructions from memory315, from other components of device300, and/or from a source external to device300(e.g., a network, another device, etc.). Processor310may perform an operation and/or a process based on techniques including, for example, multithreading, parallel processing, pipelining, interleaving, etc.

Memory315includes one or multiple memories or other types of storage media. For example, memory315may include random access memory (RAM), dynamic random access memory (DRAM), cache, read only memory (ROM), a programmable read only memory (PROM), a static random access memory (SRAM), a single in-line memory module (SIMM), a dual in-line memory module (DIMM), a flash memory (e.g., a NAND flash, a NOR flash, etc.), and/or some other type of memory. Memory315may include a hard disk (e.g., a magnetic disk, an optical disk, a magneto-optic disk, a solid state disk, etc.), a Micro-Electromechanical System (MEMS)-based storage medium, and/or a nanotechnology-based storage medium. Memory315may include a drive for reading from and writing to the storage medium. Memory315may be external to and/or removable from device300, such as, for example, a Universal Serial Bus (USB) memory stick, a dongle, a hard disk, mass storage, off-line storage, network attached storage (NAS), or some other type of storing medium (e.g., a compact disk (CD), a digital versatile disk (DVD), a Blu-Ray disk (BD), etc.). Memory315may store data, software, and/or instructions related to the operation of device300. Memory315may be referred to as storage. Memory315may store software that includes an application or a program that provides a function and/or a process. For example, the software may include an operating system and an application (“app”). The term “software” is also intended to include firmware, middleware, microcode, hardware description language (HDL), and/or other forms of instruction.

Communication interface325permits device300to communicate with other devices, networks, systems, devices, and/or the like. Communication interface325includes one or multiple wireless interfaces and/or wired interfaces. For example, communication interface325may include one or multiple transmitters and receivers, or transceivers. Communication interface325may include one or more antennas (e.g., an array of antennas). Communication interface325may operate according to a communication standard and/or protocols. Communication interface325may include processing logic or circuitry (e.g., multiplexing/demultiplexing, filtering, amplifying, converting, error correction, etc.).

Input device330permits an input into device300. For example, input device330may include a keyboard, a mouse, a display, a button, a switch, an input port, speech recognition logic, a biometric mechanism, a microphone, a visual and/or audio capturing device (e.g., a camera, etc.), and/or some other type of visual, auditory, tactile, etc., input component. Output device335permits an output from device300. For example, output device335may include a speaker, a display, a light, an output port, and/or some other type of visual, auditory, tactile, etc., output component. According to some embodiments, input device330and/or output device335may be a device that is attachable to and removable from device300.

Device300may perform a process and/or a function, as described herein, in response to processor310executing software320stored by memory315. Instructions may be read into memory315from another memory315(not shown) or read from another device (not shown) via communication interface325. The instructions stored by memory315cause processor310to perform a process described herein. Alternatively, for example, according to other implementations, device300performs a process described herein based on the execution of hardware (processor310, etc.).

FIG.4is a block diagram of functional components of a device400, also referred to as module400. In an exemplary implementation, module400may monitor, analyze, and determine performance variables, such as throughput, latency, and/or signal strength for access links in environment100. Module400may also select, set up, and establish connections between devices in environment100. Module400includes operating system (OS)402, applications404-1and404-2(singularly “application404,” collectively “applications404”), application criteria logic410(or “criteria logic410”), link score logic420, congestion detection logic425, and link selection logic430. OS402may include connection logic403and application404-1may include connection request logic405. Module400may be implemented by processor310executing instructions stored in memory315of UE device110and/or in a distributed manner among devices in environment100(e.g., core network140, network devices150, and/or wireless station120).

OS402may include software instructions for managing hardware and software resources of functional components400. For example, OS402may include Windows, Linux, Solaris, OS X, Unix, iOS, Android, and/or an embedded operating system. OS402may implement a protocol or network stack to send and receive packets over different network types, such as the networks described above in environments100and200. For example, the protocol or network stack may include an internet protocol (IP) stack. OS402may host applications, such as application404. OS402may use the network stack to provide connections from applications404in UE device110to other devices, such as network devices150. In one embodiment, connection request logic405(e.g., as part of application404) may send requests for connections to connection logic403.

Connection logic403may include software instructions for survey and determine network access links from UE device110to, for example, core network140. Connection logic403may also select which access link to for an application by determining which access link best meets criteria. In one embodiment, connection logic403includes criteria logic410, score logic420, congestion logic425, and/or link selection logic430.

Application404may include an application that runs on mobile devices or fixed devices. For example, application404may include an email client app (e.g., Gmail app or Outlook), a video-streaming app (e.g., Netflix), a messaging app (e.g., WhatsApp, Signal Messenger, etc.), a video conferencing app (e.g. Zoom, Signal, Facetime, etc.). In one embodiment, application404may include connection request logic405for sending requests to OS402to establish connections to other devices, such as network devices150in core network140. In this embodiment, the request may include criteria for the connection, such as the desired latency, throughput, and/or jitter.

Application criteria logic410may identify criteria desired by application404(e.g., running in UE device110) for an access link. For example, application criteria logic410may determine that application404is an email client, a streaming video application, and/or a messaging application. In one embodiment, criteria logic410may make this determination by inferring the type of application based on traffic patterns or determining the IP address to which application404connects. In another embodiment, application404may identify itself to criteria logic410with specific criteria requests for a connection. Criteria logic410may determine criteria such as: requiring a low latency or not; requiring a high throughput or not; and/or requiring a low jitter or not. For example, criteria logic410may identify a video-streaming application (e.g., Netflix or YouTube) as requiring high throughput without low latency. As another example, criteria logic410may identify a messaging application (e.g., Signal Messenger) as requiring low latency with low throughput. Criteria logic410may also identify the direction of throughput, such as requiring a high throughput from core network140to UE device110but a low throughput from UE device110to core network140.

In some embodiments, criteria logic410may also determine whether a UE device110has a service level agreement (SLA) or quality of service (QoS) agreement (e.g., an agreement with the service provider associated with IAB anchor130and core network140). In such implementations, criteria logic410may assign all applications for UE device110having an SLA or QoS agreement with the service provider as requiring a certain set of criteria. In this manner, a subscriber associated with UE device110may obtain faster service with less delay, jitter, etc., when executing applications.

Link score logic420may determine a score associated with a network access link from UE device110to another device (e.g., wireless station120). For example, link score logic420may determine the throughput, delay, and/or jitter of an access link. For example, score logic420may determine the signal-to-noise ratio (SNR) for network access links (e.g., access links A1-A4or access link207,209, or211). In this example, the SNR may be indicative of or used to determine throughput. In some implementations, link score logic420may determine whether the SNR and/or throughput is greater than or equal to a threshold value. For example, link score logic420may define SNRmin_R for real-time traffic and SNRmin_NR for non-real-time traffic. As discussed in more detail below, if the SNR for a link is below the minimum SNR threshold (e.g., SNRmin_R or SNRmin_NR), data transmission on the link may not be possible and/or be of poor quality. As an example, the minimum SNR for voice communications may be 25 decibels (dB), and the minimum SNR for data may be 18 dB.

In other implementations, link score logic420may use metrics other than SNR to measure or detect channel quality. For example, link score logic420may use a channel quality indicator (CQI) value, a signal-to-interference-plus-noise ratio (SINR) value, a block error rate (BLER) value, a Received Signal Strength Indication (RSSI) value, a Reference Signal Received Quality (RSRQ) value, a Reference Signal Received Power (RSRP) value, and/or using another measure of signal strength or quality. In each case, link score logic420may determine a channel quality metric associated with the signal quality of a particular link or channel.

Congestion detection logic425may include software or logic to detect the congestion for an access link. For example, congestion logic425may check the congestion level of AP202before selecting the access link for use. In this example, the SNR may be indicative of or used to determine throughput. A congested access link may cause delays and even dropped packets. In an exemplary implementation, the congestion level may be estimated by analyzing the throughput level.

Link selection logic430may include software or logic devices to identify possible network access links to choose from (e.g., to link UE device110to core network140). Link selection logic430may also select the network access link for UE device110to use to communicate with core network140. For example, link selection logic430may determine that UE device110-1has many network access links to choose from, one being a path via wireless link A1(FIG.1); the second being link A2to wireless station120-1(FIGS.1and2), link205to ONT206(FIG.2), link207to AP202-1(FIG.2), link209to AP202-2(FIG.2), and/or link211to AP202-3(FIG.2). UE device110-2may have two access links: the first being a path via wireless link A3(FIG.1); and the second path being via link A4to wireless station120-3(FIG.1). In one implementation, link selection logic430may store the network access links during configuration or may identify the network access links in real time when a UE device110is attempting to connect to, for example, core network140.

AlthoughFIG.4shows exemplary components of module400, in other implementations, module400may include fewer components, different components, differently arranged components, or additional components than depicted inFIG.4. For example, module400and/or OS402may include location logic to determine the current location of UE device110(e.g., a global positioning system or GPS). In this example, the location logic may provide the current location to link selection logic430, score logic420, and/or connection logic403to determine and select network access links. In addition, in some implementations, functions described as being performed by module400may be performed by other devices located externally with respect to module400.

FIG.5is a block diagram of information stored in device500, also referred to as module500. In some implementations, device500may be the same device as device400shown inFIG.4. The information may include a network access database502, a historical throughput DB504, a historical cost database506, and a historical latency database508. This information shown inFIG.5may be stored in memory315of UE device110. In other implementations, module500may be implemented externally with respect to UE device110, such as in core network140, network devices150, and/or wireless station120.

Access link DB502stores information related to network access links available to UE device110. For example, referring toFIG.1andFIG.2, access link DB502may store a list of network access links available to UE device110-1. As such, the list may include the identities of the following network access links: link A1(FIG.1) to IAB anchor130; link A2to wireless station120-1(FIGS.1and2); link205to ONT206(FIG.2); link207to AP202-1(FIG.2); link209to AP202-2(FIG.2); and link211to AP202-3(FIG.2).

Throughput DB504stores historical data related to throughput, such as a table with throughput as a function of time (e.g., day of the week, time of year, and/or time of day). For example, throughput DB504may indicate that access link A2to/from wireless station120-1may transmit and/or receive approximately 25 Mbps to/from UE device110-1on a Wednesday at 1 pm. Throughput DB504may also indicate that access link A2to/from wireless station120-1may transmit/receive approximately 5 Mbps to/from UE device110-1on a Friday at 6 pm.

Cost DB506may store historical data related to resource cost. For example, cost DB506may store a table that indicates that the resource cost of accessing wireless station120-1over link A2costs in resource usage, the equivalent of $0.10 per gigabit at any time. Cost DB506may also indicate that the cost of accessing core network140through ONT206may be free at any time.

Latency DB508may store historical data related to latency, such as a table that indicates that the latency associated with accessing core network140as a function of time (e.g., day of the week, time of year, and/or time of day). For example, latency DB508may indicate that the latency associated with wireless station120-1to core network140is 10 ms on Wednesday at 1 pm, 40 ms on Friday at 6 pm, etc.

Signal strength DB510may store historical data related to signal strength (e.g., RSSI), such as a table that indicates the signal strength associated with a wireless signal. In one embodiment, the signal strength may be associated with a location of UE device110. For example, signal strength DB510may indicate that the signal strength associated with wireless station120-1is −97 dBm at customer premises250.

AlthoughFIG.5shows exemplary components of module500, in other implementations, module500may include fewer components, different components, differently arranged components, or additional components than depicted inFIG.5. For example, module500may store information related to historical congestion data, and/or historical SNR data. As another example, module500may store block lists and access lists that identify applications that are or are not permitted to use particular types of network access links. For example, a block list may identify a video streaming application as an application that is not permitted to use a metered network access link (e.g., a cellular access link). In addition, in some implementations, functions described as being performed by module500may be performed by other devices located externally with respect to module500.

FIG.6is a flowchart of a process600for selecting a network access link for UE device110to access a network. Process600may be implemented as software instructions stored in memory315that are executed by processor310(e.g., by one or more of the devices described herein). For example, instructions for process600may be stored in memory315in UE device110and may run on processor210in UE device110. Multiple instances of process600may run at the same time. For example, application404-1and application404-2may both be establishing and using network access links to core network140at the same time (e.g., simultaneously). In addition, application404-1and application404-2may also each use separate network access link to core network140at the same time (e.g., simultaneously).

Process600may begin with receiving a request for a connection and determining (e.g., surveying for) a group of network access links associated with UE device110(block602). For example, connection logic403may receive a request from connection request logic405for a connection to a server in core network140. Connection logic403may employ link selection logic430to determine that UE device110is associated with the following access links: access link205between UE device110-1and ONT206(FIG.2); access link A1between UE device110-1and wireless station120-1(FIGS.1and2); and access link207between UE device110-1and AP202-1(FIG.2); and access link209between UE device110-1and AP point202-2(FIG.2). Access links may be identified by connection logic403and/or link selection logic430and stored in access link DB502. In one embodiment, connection logic403and/or link selection logic430may determine the identities of network access links on a periodic basis or when requested by connection request logic405, for example. In one embodiment, link selection logic430may exclude network access links that, as identified in a block lists, that are or are not permitted to use particular types of network access links. For example, a block list may identify a video streaming application as an application that is not permitted to use a metered network access link (e.g., a cellular access link).

Process600may continue with the determination of one or more criteria associated with a request to access a network (block604). Criteria logic410may determine one or more criteria for selecting an appropriate access link. The criteria may include a desired throughput, latency, financial cost, and/or signal strength, for example. The criteria may be associated with application402running in UE device110. Criteria logic410may determine the criteria in response to a request to access a network (e.g., a request from connection request logic405to connection logic403). For example, if application402is a game, then criteria logic410may determine one of the criteria to include a low latency (e.g., the timing of the user's input may be critical for game play depending on the game). In this example, criteria logic410may also determine one of the criteria to include a low throughput because only a small amount of data is transmitted from application402(e.g., a game with limited data transmission). On the other hand, if application402is a video streaming service (e.g., YouTube or Netflix), then the criteria may be high throughput without any particular latency requirement (e.g., a high latency specified as a criterion). Criteria logic410may also receive criteria in a request for a connection to core network140. For example, a video streaming application may specify in a request that the criteria is high throughput without regard to latency (or may specify a high latency).

To determine the one or more criteria (block604), criteria logic410may also determine whether a UE device110has an SLA or QoS agreement (e.g., an agreement with the service provider associated with IAB anchor130and core network140). In this case, criteria logic410may assign a requesting application404as requiring a certain set of criteria.

Score logic420may determine and/or score each network access link (e.g., against the criteria determined in block604). Score logic420may determine the latency, throughput, financial cost, location, and/or signal strength of each network access link, for example. Score logic420may generate a score based on, for example, the determined latency, throughput, financial cost, location, and/or signal strength of each network access link. Determining the score may include determining the location of UE device110(block606); determining the throughput of each network access link (block608); determining the resource cost associated with the network access link (block610); determining the latency of each network access link (block612); and/or determining the signal strength of each network access link (block614). In another embodiment, an overall score may be determined based on the individual scores determined in blocks606-614.

In one embodiment, score logic420may score each network access link based on historical data. In this embodiment, score logic420may determine the time and/or location of UE device110(block606). Score logic420may look up historical data associated with UE device110-1in environment200at the current time. For example, score logic420may determine that UE device1100-1is in customer premises250on a Friday at 6 p.m. Score logic420may query throughput DB504, cost DB506, latency DB508, and/or signal strength DB510to determine the historical throughput, cost, latency, and signal strength at that time at that location. Score logic420may determine the score (block618) based on, for example, the latency, throughput, financial cost, location, and/or signal strength.

In one embodiment, the throughput of each of the network access links is determined (block608) by sending data (e.g., test data) to network devices150to measure the throughput. As noted, the throughput may also or alternatively be an estimate (e.g., based on historical measurements) or based on a measurement (e.g., a recent or contemporaneous measurement). For example, score logic420may query throughput DB504(based on time and/or location) to determine the expected throughput for network access links determined in block602. Determining the throughput of a network access link based on historical data may be considered predicting the throughput (e.g., as opposed to measuring the throughput directly). In one embodiment, congestion detection logic425may help determine the congestion and therefore the throughput for an access link. For example, congestion logic425may check the congestion level of AP202-1. In this example, congestion logic425may determine throughput based at least in part on the SNR.

The financial cost of each of the network access links may be determined (block610). For example, score logic420may determine that the financial cost is zero if a link to access a network is not metered. On the other hand, score logic420may determine that the financial cost is expected to be $1 if a link to access a network is metered. An example of a metered network is a link that charges per byte carried by the link, such as $10 per gigabit. An example of a non-metered network is a link that charges per month regardless of usage. The financial cost may also or alternatively be an estimate (e.g., based on historical data) or based on stored service contract information. For example, score logic420may query cost DB506(based on time and/or location) to determine the expected cost for network access links determined in block602. Determining the financial of a network access link based on historical data may be considered predicting the financial cost (e.g., as opposed to determining it based on contractual information).

The latency of one or more of the plurality of access links may be determined (block612). For example, score logic420may send data (e.g., test data) to and from network devices150to measure the throughput. The latency may be an estimate (e.g., based on historical measurements) or based on a measurement (e.g., a recent or contemporaneous measurement). For example, score logic420may query latency DB508(based on time and/or location) to determine the expected latency for network access links determined in block602. Determining the latency of a network access link based on historical data may be considered predicting the latency (e.g., as opposed to measuring the latency directly by measurement).

The signal strength of each of the network access links may be determined (block614). For example, score logic420may query OS402to determine the signal strength of different wireless network connections, such as via AP202-1(link207), AP202-2(link209), AP202-3(link211), and/or wireless station120-1(link A2). The signal strength may be an estimate (e.g., an estimate based on historical measurements) or a measurement (e.g., a recent measurement). In one embodiment, score logic420may query signal strength DB510(based on time and/or location) to determine the expected signal strength for network access links determined in block602. Determining the signal strength of a network access link based on historical data may be considered predicting the signal strength (e.g., as opposed to measuring it directly).

In one embodiment, score logic420may determine a composite score (block618) based on one or more of the determined factors such as, for example, the latency, throughput, financial cost, location, and/or signal strength (e.g., determined in blocks608-614). In one embodiment, some scores may be based on end-to-end considerations and not just the link to the next network device. For example, the score related to latency may include the latency from UE device110-1to wireless station120-1(link A2), the latency from wireless station120-1to wireless station120-2(link B1), the latency from wireless station120-2to IAB anchor130, and from IAB anchor130to core network140(link160). In this respect, connection logic403and/or connection request logic405may request information from environment100and may determine a total latency based on expected latency of each hop in environment100. In one embodiment, connection logic403may determine a total expected latency using a combinatorial optimization algorithm, such as an adapted Dijkstra algorithm.

One of the links in the group of links may be selected for UE device110(e.g., the application running in UE device110) to use (block620). Link selection logic430may select the network access link based on a comparison of the criteria to the score. Link selection logic430may select the network access link that best meets the criteria. For example, link selection logic430may select one of the following links: access link205between UE device110-1and ONT206(FIG.2); access link A1between UE device110-1and wireless station120-1(FIGS.1and2); and access link207between UE device110-1and AP202-1(FIG.2); and access link209between UE device110-1and AP point202-2(FIG.2). In one embodiment, connection logic403responds to connection request logic405in application404with an identification of the connection so that application404. In this embodiment, to use the connection, application404identifies the connection.

In one embodiment, different applications404in the same UE device110may use different network access links to core network140, for example. Thus, a game running in UE device110may use a different network access link (e.g., with a first set of criteria) than a video streaming application (e.g., with a second set of criteria). In this case, the respective application (e.g., either application404-1or application404-2) may identify the connection to OS402when sending or receiving data. In another embodiment, OS402may send data from an application through the network access link based on the application. That is, OS402may use link205for one application and link207for a different connection.

In some implementations, a single application may use multiple separate connections for different needs (e.g., one connection for low latency needs, another connection for throughput). That is, one application may use two different network access links at the same time (e.g., simultaneously). For example, one application404in the same UE device110may use different network access links to core network140for different needs or functions. Thus, a game running in UE device110may use a different network access links (e.g., with a first set of criteria) for sending user input and a different network access link (with a second set of criteria) for receiving detailed scenery information. In this case, the function may identify the connection to OS402when sending or receiving data.

For example, while a series of blocks have been described with respect toFIG.6, and a series of signal flows/messages have been described, the order of the blocks and/or signal flows may be modified in other implementations. Further, non-dependent blocks may be performed in parallel.

The terms “comprises” and “comprising” when used in this specification are taken to specify the presence of stated features, integers, steps or components but does not preclude the presence or addition of one or more other features, integers, steps, components or groups thereof. The term “logic,” as used herein, may refer to a combination of one or more processors configured to execute instructions stored in one or more memory devices, may refer to hardwired circuitry, and/or may refer to a combination thereof. Furthermore, a logic may be included in a single device or may be distributed across multiple, and possibly remote, devices. The term “substantially” is used herein to represent the inherent degree of uncertainty that may be attributed to any quantitative comparison, value, measurement, or other representation. The term “substantially” is also utilized herein to represent the degree by which a quantitative representation may vary from a stated reference without resulting in a change in the basic function of the subject matter at issue.

To the extent the aforementioned embodiments collect, store, or employ personal information of individuals, it should be understood that such information shall be collected, stored, and 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 to the embodiments unless explicitly described as such. Also, as used herein, the article “a” is intended to include one or more items. Further, the phrase “based on” is intended to mean “based, at least in part, on” unless explicitly stated otherwise.