Application data link extension and intelligent selection
By employing AI-driven intelligent network connection selection, the method addresses the limitations of conventional networks by dynamically allocating optimal network resources to software applications, thereby enhancing performance and user experience.
Patent Information
- Application Number
- PCT/CN2023/139114
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-12-15
- Publication Date
- 2025-06-19
AI Technical Summary
Conventional network solutions fail to dynamically select the best-suited network connection or link for software applications, leading to inadequate bandwidth allocation, high latency, and degraded user experience due to the diversity of devices and varying network requirements.
The implementation of an intelligent network connection or link selection method using AI models to classify software applications based on network condition parameters, combined with analysis of device and neighbor network connections, to select the most appropriate network connection or link for data transfer.
This approach enhances network performance by ensuring that applications receive the optimal network resources based on their specific requirements, thereby improving user experience and efficiency.
Smart Images

Figure CN2023139114_19062025_PF_FP_ABST
Abstract
Description
Application Data Link Extension and Intelligent SelectionBACKGROUND
[0001] Recent advancements in artificial intelligence (AI) and machine learning (ML) technologies have led to the development of increasingly sophisticated models capable of understanding and interpreting complex data structures. These models, commonly known as large generative AI models (LXMs) , have a multitude of applications that span across various domains, from natural language processing to computer vision and speech recognition. Their efficacy stems from their ability to learn from massive datasets, gaining an unprecedented depth of understanding and applicability.
[0002] The increasing capabilities of LXMs, including (but not limited to) Large Language Models (LLMs) , Large Speech Models (LSMs) , and Large Vision Models (LVMs) (which are also referred to as Language Vision Models or Vision Language Models (VLMs) ) , offer enhanced functionality in various applications, such as natural language understanding, speech recognition, visual analysis, text generation, speech generation, and image generation. Among the diverse types of LXMs, LLMs are generally known for their capabilities in understanding and generating human language. These models may be trained on extensive textual datasets and may perform a broad range of tasks, such as machine translation, text summarization, and question-answering. LLMs have found applications in a broad range of industries including healthcare, finance, and customer service, among others.
[0003] An LSM is a type of LXM specializing in processing and understanding auditory data. LSMs may translate spoken language into textual form and vice versa. LSMs excel at tasks such as speech-to-text conversion, voice recognition, natural language understanding within a spoken context, providing spoken word responses in machine-generated voices. The efficacy of LSMs lies in their capacity to learn from enormous datasets containing diverse accents, dialects, and languages.
[0004] An LVM is a LXM that is trained to interpret and analyze visual data. LVM models may use convolutional neural networks or similar architectures to process visual inputs and derive meaningful conclusions from them. From image classification to object detection and generating new images in response to natural language prompts, LVMs are growing in popularity and use in diverse areas such as medical imaging, autonomous vehicles, surveillance systems, advertising, and entertainment.SUMMARY
[0005] Various aspects include methods of communicating information that may be performed by a processor of a user computing device. Various aspect methods may include scanning a local network to receive network context information from one or more neighbor devices that include network connections or links to a wide area network (WAN) , using an artificial intelligence (AI) model to classify a software application detected on the user computing device based on one or more network condition parameters associated with the detected software application, analyzing a device network connection or link and at least one neighbor network connection or link of the one or more neighbor devices, selecting a network connection or link for the detected software application based on an output of the AI model and a result of analyzing the device network connection or link and at least one neighbor network connection or link of the one or more neighbor devices, establishing a data transfer link to a neighbor device that includes the selected network connection or link, and using the selected network connection or link and the established data transfer link to the neighbor device to communicate data associated with the detected software application.
[0006] In some aspects, using the AI model to classify the software application detected on the user computing device based on the one or more network condition parameters associated with the detected software application may include using the AI model to classify the software application detected on the user computing device based on a quality of service (QOS) parameter of the detected software application.
[0007] In some aspects, establishing the data transfer link to the neighbor device that may include the selected network connection may include one or more of establishing a universal serial bus (USB) link to the neighbor device, establishing an Ethernet link to the neighbor device, establishing a short-range wireless technology link to the neighbor device, establishing a wireless personal area network connection to the neighbor device, establishing a Wi-Fi link to the neighbor device, establishing a telecommunications link to the neighbor device, or establishing a device-to-device (D2D) link to the neighbor device.
[0008] In some aspects, using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application may include using a mission-critical / ultra-low latency (MCX) link and a tethering link to the neighbor device to communicate the data associated with the detected software application.
[0009] In some aspects, using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application may include offloading a data processing or communication task from a primary network connection of the user computing device to a network connection of the neighbor device.
[0010] In some aspects, using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application may include updating routing information of the user computing device to direct data traffic through the selected network connection.
[0011] In some aspects, selecting the network connection for the detected software application based on the output of the AI model and the result of analyzing the device network connection and at the least one neighbor network connection of the one or more neighbor devices may include selecting the network connection in response to determining that there may be an operational advantage to offloading data to a network connection of a neighboring device.
[0012] In some aspects, selecting the network connection for the detected software application may include selecting multiple network connections, and using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application may include simultaneously using the selected multiple network connections to communicate the data associated with the detected software application.
[0013] In some aspects, simultaneously using the selected multiple network connections to communicate the data associated with the detected software application may include using a first type of network connection of a first neighbor device and a second type of network connection of a second neighbor device, in which the first type of network connection and the second type of network connection are different types of network connections.
[0014] In some aspects, the first type of network connection may be a Wi-Fi network, and the second type of network connection may be a telecommunications network.
[0015] Further aspects may include a computing device having a processing system including at least one processor configured with processor-executable instructions to perform various operations corresponding to the methods summarized above. Further aspects may include a non-transitory processor-readable storage medium having stored thereon processor-executable instructions configured to cause a processing system to perform various operations corresponding to the method operations summarized above. Further aspects may include a computing device having means for performing functions corresponding to the method operations summarized above.BRIEF DESCRIPTION OF THE DRAWINGS
[0016] The accompanying drawings, which are incorporated herein and constitute part of this specification, illustrate exemplary embodiments of the claims, and together with the general description given and the detailed description, serve to explain the features herein.
[0017] FIG. 1A is a component block diagram illustrating example components in a system in package (SIP) that may be included in a computing device and configured to implement some embodiments.
[0018] FIG. 1B is a component block diagram illustrating an example network that includes several user devices connected to the internet via a different network connections or links that are suitable for intelligently selecting a network connection or link in accordance with some embodiments.
[0019] FIGs. 2A and 2B are component block diagrams illustrating example components that could be included in a system that is configured to perform intelligent network connection or link selection operations in accordance with some embodiments.
[0020] FIG. 3 is a process flow diagram illustrating a method 300 for intelligently selecting a network connection or link in accordance with some embodiments.
[0021] FIG. 4 is a component block diagram illustrating an example computing device in the form of a laptop that is suitable for implementing some embodiments.
[0022] FIG. 5 is a component block diagram illustrating an example wireless communication device suitable for use with various embodiments.
[0023] FIG. 6 is a component diagram of an example server suitable for implementing some embodiments.DETAILED DESCRIPTION
[0024] Various embodiments will be described in detail with reference to the accompanying drawings. Wherever possible, the same reference numbers will be used throughout the drawings to refer to the same or like parts. References made to particular examples and implementations are for illustrative purposes and are not intended to limit the scope of the claims.
[0025] Various embodiments include methods, and computing devices and processing systems configured to implement the methods, for using intelligent network connection or link selection to improve the performance and functioning of a communication network and its components. The methods may include scanning (e.g., using Bluetooth Low Energy (BLE) technology, etc. ) for neighbor devices in proximity the device to determine neighbor device network context information, receiving and storing network context information of the neighbor devices, detecting launch of an application on the computing device, using an artificial intelligence (AI) model to classify the detected application based on its network or service requirements, analyzing available network connections or links of both the computing device and the neighbor devices, selecting a network connection or link for the detected application based on the analyzed network connections or links and the network or service requirements of the application, establishing a data connection via the selected network connection or link (which may be through a neighboring device) , and transferring application data over the established data connection.
[0026] The term “computing device” is used herein to refer to (but not limited to) any one or all of personal computing devices, personal computers, workstations, laptop computers, Netbooks, Ultrabook, tablet computers, mobile communication devices, smartphones, user equipment (UE) , personal data assistants (PDAs) , palm-top computers, wireless electronic mail receivers, multimedia internet-enabled cellular telephones, media and entertainment systems, gaming systems (e.g., Nintendo ) , media players (e.g., digital versatile disc (DVD) players, Apple ) , digital video recorders (DVRs) , portable projectors, 3D holographic displays, wearable devices (e.g., earbuds, smartwatches, fitness trackers, augmented reality (AR) glasses, head-mounted displays, etc. ) , vehicle systems (e.g., drones, automobiles, motorcycles, connected vehicles, electric vehicles, automotive displays, advanced driver-assistance systems (ADAS) , etc. ) , cameras (e.g., surveillance cameras, embedded cameras) , smart devices (e.g., smart speakers, smart light bulbs, smartwatches, thermostats, smart glasses, etc. ) , Internet of Things (IOT) devices, other similar devices and systems that include a programmable processing system that may be configured to provide the functionality of various embodiments.
[0027] The term “processing system” is used herein to refer to one or more processors, including multi-core processors, which are organized and configured to perform various computing functions. Various embodiment methods may be implemented in one or more of multiple processors within a processing system as described herein.
[0028] The term “system on chip” (SoC) is used herein to refer to a single integrated circuit (IC) chip that contains multiple resources or independent processors integrated on a single substrate. A single SoC may contain circuitry for digital, analog, mixed-signal, and radio-frequency functions. A single SoC may include a processing system that includes any number of general-purpose or specialized processors (e.g., network processors, digital signal processors, modem processors, video processors, etc. ) , memory blocks (e.g., ROM, RAM, Flash, etc. ) , and resources (e.g., timers, voltage regulators, oscillators, etc. ) . For example, an SoC may include an applications processor that operates as the SoC’s main processor, central processing unit (CPU) , microprocessor unit (MPU) , arithmetic logic unit (ALU) , etc. An SoC processing system also may include software for controlling integrated resources and processors, as well as for controlling peripheral devices.
[0029] The term “system in a package” (SIP) is used herein to refer to a single module or package that contains multiple resources, computational units, cores, or processors on two or more IC chips, substrates, or SoCs. For example, a SIP may include a single substrate on which multiple IC chips or semiconductor dies are stacked in a vertical configuration. Similarly, the SIP may include one or more multi-chip modules (MCMs) on which multiple ICs or semiconductor dies are packaged into a unifying substrate. A SIP also may include multiple independent SOCs coupled together via high-speed communication circuitry and packaged in close proximity, such as on a single motherboard, in a single UE, or in a single CPU device. The proximity of the SoCs facilitates high-speed communications and the sharing of memory and resources.
[0030] The term “large generative AI model” (LXM) is used herein to refer to an advanced computational framework that includes any of a variety of specialized AI models including, but not limited to, large language models (LLMs) , large speech models (LSMs) , large / language vision models (LVMs) , vision language models (VLMs) ) , hybrid models, and multi-modal models. An LXM may include multiple layers of neural networks (e.g., RNN, LSTM, transformer, etc. ) with millions or billions of parameters. LXMs support dialogic interactions and encapsulate expansive knowledge in an internal structure. As a result, rather than merely serving a list of relevant websites, LXMs are capable of providing direct answers and / or are otherwise adept at various tasks, such as text summarization, translation, complex question-answering, conversational agents, etc. In various embodiments, LXMs may operate independently as standalone units, may be integrated into more comprehensive systems and / or into other computational units (e.g., those found in a SoC or SIP, etc. ) , and / or may interface with specialized hardware accelerators to improve performance metrics such as latency and throughput. In some embodiments, the LXM component may be enhanced with or configured to perform an adaptive algorithm that allows the LXM to better understand context information and dynamic user behavior. In some embodiments, the adaptive algorithms may be performed by the same processing system that manages the core functionality of the LXM and / or may be distributed across multiple independent processing systems.
[0031] The increasing capabilities of LXMs, including but not limited to LLMs, LSMs, LVMs, and VLMs, offer enhanced functionality in various applications, such as natural language understanding, speech recognition, visual analysis, text generation, speech generation, and image generation. Among the diverse types of LXMs, LLMs are generally known for their capabilities in understanding and generating human language. These models may be trained on extensive textual datasets and may perform a broad range of tasks, such as machine translation, text summarization, and question-answering. LLMs have found applications in a broad range of industries including healthcare, finance, and customer service, among others.
[0032] An LSM is a type of LXM specializing in processing and understanding auditory data. LSMs may translate spoken language into textual form and vice versa. LSMs excel at tasks such as speech-to-text conversion, voice recognition, natural language understanding within a spoken context, providing spoken word responses in machine-generated voices. The efficacy of LSMs lies in their capacity to learn from enormous datasets containing diverse accents, dialects, and languages.
[0033] An LVM is a LXM that is trained to interpret and analyze visual data. LVM models may use convolutional neural networks or similar architectures to process visual inputs and derive meaningful conclusions from them. From image classification to object detection and generating new images in response to natural language prompts, LVMs are growing in popularity and use in diverse areas such as medical imaging, autonomous vehicles, surveillance systems, advertising, and entertainment.
[0034] The term “neural network” is used herein to refer to an interconnected group of processing nodes (or neuron models) that collectively operate as a software application or process that controls a function of a computing device and / or generates an overall inference result as output. Individual nodes in a neural network may attempt to emulate biological neurons by receiving input data, performing simple operations on the input data to generate output data, and passing the output data (also called “activation” ) to the next node in the network. Each node may be associated with a weight value that defines or governs the relationship between input data and output data. A neural network may learn to perform new tasks over time by adjusting these weight values. In some cases, the overall structure of the neural network and / or the operations of the processing nodes do not change as the neural network learns a task. Rather, learning is accomplished during a “training” process in which the values of the weights in each layer are determined. As an example, the training process may include causing the neural network to process a task for which an expected / desired output is known, comparing the activations generated by the neural network to the expected / desired output, and determining the values of the weights in each layer based on the comparison results. After the training process is complete, the neural network may begin “inference” to process a new task with the determined weights.
[0035] The term “inference” is used herein to refer to a process that is performed at runtime or during the execution of the software application program corresponding to the neural network. Inference may include traversing the processing nodes in the neural network along a forward path to produce one or more values as an overall activation or overall “inference result. ”
[0036] Deep neural networks implement a layered architecture in which the activation of a first layer of nodes becomes an input to a second layer of nodes, the activation of a second layer of nodes becomes an input to a third layer of nodes, and so on. As such, computations in a deep neural network may be distributed over a population of processing nodes that make up a computational chain. Deep neural networks may also include activation functions and sub-functions (e.g., a rectified linear unit that cuts off activations below zero, etc. ) between the layers. The first layer of nodes of a deep neural network may be referred to as an input layer. The final layer of nodes may be referred to as an output layer. The layers in-between the input and final layer may be referred to as intermediate layers, hidden layers, or black-box layers.
[0037] Each layer in a neural network may have multiple inputs and thus multiple previous or preceding layers. Said another way, multiple layers may feed into a single layer. For ease of reference, some of the embodiments are described with reference to a single input or single preceding layer. However, the operations disclosed and described in this application may be applied to each of multiple inputs to a layer and multiple preceding layers.
[0038] The term “recurrent neural network” (RNN) is used herein to refer to a class of neural networks particularly well-suited for sequence data processing. RNNs may include cycles or loops within the network that allow information to persist. This enables RNNs to maintain a “memory” of previous inputs in the sequence, which may be beneficial for tasks in which temporal dynamics and the context in which data appears are relevant.
[0039] The term “long short-term memory network” (LSTM) is used herein to refer to a specific type of RNN that addresses some of the limitations of basic RNNs, particularly the vanishing gradient problem. LSTMs include a more complex recurrent unit that allows for the easier flow of gradients during backpropagation. This facilitates the model’s ability to learn from long sequences and remember over extended periods, making it apt for tasks such as language modeling, machine translation, and other sequence-to-sequence tasks.
[0040] The term “transformer” is used herein to refer to a specific type of neural network that includes an encoder and / or a decoder and is particularly well-suited for sequence data processing. Transformers may use multiple self-attention components to process input data in parallel rather than sequentially. The self-attention components may be configured to weigh different parts of an input sequence when producing an output sequence. Unlike solutions that focus on the relationship between elements in two different sequences, self-attention components may operate on a single input sequence. The self-attention components may compute a weighted sum of all positions in the input sequence for each position, which may allow the model to consider other parts of the sequence when encoding each element. This may offer advantages in tasks that benefit from understanding the contextual relationships between elements in a sequence, such as sentence completion, translation, and summarization. The weights may be learned during the training phase, allowing the model to focus on the most contextually relevant parts of the input for the task at hand. Transformers, with their specialized architecture for handling sequence data and their capacity for parallel computation, often serve as foundational elements in constructing large generative AI models (LXM) .
[0041] The term “embedding layer” is used herein to refer to a specialized layer within a neural network, typically at the input stage, which transforms discrete categorical values or tokens into continuous, high-dimensional vectors. An embedding layer may operate as a lookup table in which each unique token or category is mapped to a point in a continuous vector space. The vectors may be refined during the model’s training phase to encapsulate the characteristics or attributes of the tokens in a manner that is conducive to the tasks the model is configured to perform.
[0042] The term “token” is used herein to refer to a unit of information that an LXM may read as a single input during training and inference. Each token may represent any of a variety of different data types. For example, in text-centric models such as in LLMs, each token may represent one or more textual elements, such as a paragraph (s) , sentence (s) , clause (s) , word (s) , sub-word (s) , character (s) , etc. In models designed for auditory data, such as LSMs, each token may represent a feature extracted from audio signals, such as a phoneme, spectrogram, temporal dependency, Mel-frequency cepstral coefficients (MFCCs) that represent small segments of an audio waveform, etc. In visual models such as LVM, each token may correspond to a portion of an image (e.g., pixel blocks) , sequences of video frames, etc. In hybrid systems that combine multiple modalities (text, speech, vision, etc. ) , each token may be a complex data structure that encapsulates information from various sources. For example, a token may include both textual and visual information, each of which independently contributes to the token’s overall representation in the model.
[0043] There are generally limitations on the total number of tokens that may be processed by AI models. As an example, a model with a limitation of 512 tokens may alter or truncate input sequences that go beyond this specific count.
[0044] Each token may be converted into a numerical vector via the embedding layer. Each vector component (e.g., numerical value, parameter, etc. ) may encode an attribute, quality, or characteristic of the original token. The vector components may be adjustable parameters that are iteratively refined during the model training phase to improve the model’s performance during subsequent operational phases. The numerical vectors may be high-dimensional space vectors (e.g., containing more than 300 dimensions, etc. ) in which each dimension in the vector captures a unique attribute, quality, or characteristic of the token. For example, dimension 1 of the numerical vector may encode the frequency of a word’s occurrence in a corpus of data, dimension 2 may represent the pitch or intensity of the sound of the word at its utterance, dimension 3 may represent the sentiment value of the word, etc. Such intricate representation in high-dimensional space may help the LXM understand the semantic and syntactic subtleties of its inputs. During the operational phase, the tokens may be processed sequentially through layers of the LXM or neural network, which may include structures or networks appropriate for sequence data processing, such as transformer architectures, recurrent neural networks (RNNs) , or long short-term memory networks (LSTMs) .
[0045] The term “sequence data processing” is used herein to refer to techniques or technologies for handling ordered sets of tokens in a manner that preserves their original sequential relationships and captures dependencies between various elements within the sequence. The resulting output may be a probabilistic distribution or a set of probability values, each corresponding to a “possible succeeding token” in the existing sequence. For example, in text completion tasks, the LXM may suggest the possible succeeding token determined to have the highest probability of completing the text sequence. For text generation tasks, the LXM may choose the token with the highest determined probability value to augment the existing sequence, which may subsequently be fed back into the model for further text production.
[0046] Advancements in AI and ML have led to the development of models that are highly adept at interpreting intricate data structures. Large Generative AI Models (LXMs) now have applications in a myriad of fields, from natural language processing to computer vision and auditory data interpretation. The efficacy of these LXMs stems from their advanced learning mechanisms, honed through training on expansive datasets, allowing them to achieve a broad spectrum of understanding and applicability. Within this broad category, Large Language Models (LLMs) have garnered particular interest for their capabilities in both comprehending and generating human language.
[0047] Modern networks may include multiple different types of devices (e.g., laptops, smartphones, TVs, etc. ) that each connected to the internet via a different network connection or link (e.g., Wi-Fi, cellular or telecommunications connections, IP, Ethernet, private networks provided by TV services, etc. ) . For example, an individual may use multiple internet-connected devices (e.g., phones, laptops, watches, TVs, and earbuds, etc. ) that connect to the internet through different network connections or links and technologies (e.g., mobile internet via carrier networks for phones, Wi-Fi, IP or Ethernet for laptops, a private network for TVs, etc. ) . Each device may include its own network requirements and distinct network connection or links. In addition, each device may include a different collection of software applications that each have their own application-specific quality of service (QoS) requirements, characteristics, and / or metrics. A single fixed network connection or link may not be able to adequately meet the quality-of-service requirements of all these applications. As a result, conventional solutions that use a single fixed network connection or link may degrade the user experience due to inadequate network bandwidth allocations, excessive end-to-end network latency, and / or other similar consequences. Conventional network solutions also often use a centralized hub (e.g., a router, modem, etc. ) to manage connectivity in such networks, which may further degrade the user experience and / or introduce additional constraints or limitations.
[0048] There are a number of significant technical challenges and limitations with implementing convention solutions in such networks due to the diversity of devices, varied network connection or links, unique network requirements of each device, application specific quality of service (QoS) requirements, limitations associated with using a centralized hub, inefficiencies of conventional networks, etc. For these and other reasons, conventional solutions do not select the best suited network connection or links, do not accurately or efficiently allocate bandwidth, and / or do not adequately or dynamically adapt to changing network conditions. The various embodiments include computing systems that are equipped with processing systems and components configured to overcome these and other technical challenges and limitations of conventional networks and solutions.
[0049] Some embodiments may include components configured to improve the user experience in environments in which individuals use multiple devices that are each linked to the internet through various different network connection or links. The components may be configured to cooperate with neighboring devices and use advanced artificial intelligence (AI) techniques to intelligently select network connections or links that are tailored to the specific requirements of the different software applications operating on the devices based on any or all of information received from neighbor device (s) , network context information, types of network connections or links, network connection or link qualities, performance parameters of neighboring devices, etc. The components may allow any device in the network to use one or more network connections or links of one or more other neighboring devices in the network to communicate information.
[0050] In some embodiments, the components may be configured to establish and use direct communication links between different types of devices in the network to receive network information. The components may use this information to determine, generate, approximate, or predict the network context information, use the network context information to make inferences, and select a network connection or link for an application based on the inferences. That is, the components may use the network context information to obtain a detailed real-time understanding of the current network conditions and application requirements and use this information to select the most appropriate network connection or communication link. The network context information may include, but is not limited to, information that characterizes the requirements and performance metrics of each application, supported types of network connection or link, setup parameters for each network connection or link type, performance parameters for each network connection or link type, network performance data, the types of network connections or links available (e.g., low latency links, high bandwidth links, test links, etc. ) , the performance characteristics of the available network connection or links, performance characteristics associated with available types of network connections or links, etc.
[0051] In some embodiments, the components may be configured to perform network offloading operations that include transferring data processing or communication tasks from a device’s primary network connection to another network connection that is determined to be better suited for the telecommunications task. For example, a device connected to the internet via Wi-Fi may offload communication tasks to another smartphone that is connected to the internet via telecommunication links and is close enough for a short-range wireless connection (e.g., or Wi-Fi) to establish a direct device-to-device wireless link. In some embodiments, the components may be configured to route traffic through such a neighboring (i.e., within or Wi-Fi range) devices associated with the selected connections or links. For example, the laptop may select the network connection or link and route its traffic through a neighboring smartphone that includes a cellular (e.g., 5G) telecommunications connection or link.
[0052] In some embodiments, the components may be configured to create a self-organizing network of devices. For example, a smartphone, a laptop, and a smart TV may form a self-organized network and create a collaborative network environment to share network context information with each other. Each device may be aware of its neighboring devices and their respective network connection or link capabilities. That is, each device within the network may be aware of the link characteristics of all other devices within the network, including their connections to the internet. As such, every device in the network may have a comprehensive understanding of the available network options within its immediate network environment. The devices may use this information to make informed decisions regarding network connectivity, connection or link selection, application performance optimization, etc.
[0053] In some embodiments, the components may be configured to select the network connection or link based on the needs of their currently executing applications (e.g., bandwidth needs, latency sensitivity, reliability requirements, etc. ) . In some embodiments, the components may be configured to facilitate application-specific network selection. For example, a laptop running a time-sensitive application may select the most suitable network connection or link based on a result of analyzing the network connections or links available from its neighboring devices and the specific requirements of the time-sensitive application. As a further example, the laptop may select an ultra-reliable low latency network provided by the smartphone (or the phone’s low latency network slice, etc. ) for the time-sensitive application and / or use the smartphone as a hotspot.
[0054] In some embodiments, the components may be configured to dynamically route traffic so that the device bypasses its direct network connection or link in favor of a more optimal route through other neighboring devices. For example, instead of a laptop connecting to the internet directly through its base station, it may route its traffic through the TV, which may in turn connect to the internet through a private network. This indirect routing may be based on the assessment that the TV’s network connection or link offers a better fit for the laptop’s application needs at that moment.
[0055] In some embodiments, the components may be configured to use multiple network connections or links simultaneously and / or to combine the bandwidth of multiple network connection or links. For example, a laptop with access to multiple network connections or links (e.g., Wi-Fi, Ethernet, etc. ) may aggregate these links to significantly improve its data transmission capabilities. As another example, the laptop may simultaneously use the Wi-Fi type of network connection of a tablet and the cellular network type of network connection of a smartphone to ensure robust and high-speed internet connectivity for a specific software application (e.g., a document download application, etc. ) .
[0056] In some embodiments, the components may be configured to simultaneously use multiple different network connections or links by dividing data traffic into different streams that may be routed through different network connections or links and paths to the internet. In some embodiments, the components may be configured to allow for application-specific network stream selection. For example, a first application on the device may use a single stream for its data transfer and a second application on the device may use two or more streams for its data transfer. Each application may tailor its network usage based on its specific requirements.
[0057] In some embodiments, the components may be configured to overcome the complexities and technical challenges associated with multi-link data management. For example, there are technical challenges associated with reassembling packets that arrive out of sequence when using multiple network connections or links for data transfer. The components may be configured to manage these packets effectively to maintain data integrity and ensure the proper functioning of the applications.
[0058] Various embodiments may be implemented on a number of single-processor and multiprocessor computer systems, including a system-on-chip (SOC) or system in a package (SIP) . FIG. 1A illustrates an example computing system or SIP 100 architecture that may be used in user end devices implementing the various embodiments.
[0059] With reference to FIG. 1A, the illustrated example SIP 100 includes two SOCs 102, 104, a clock 106, a voltage regulator 108, a wireless transceiver 166, and user input devices 170 (e.g., a touch-sensitive display, a touch pad, a mouse, etc. ) . The first and second SOC 102, 104 may communicate via interconnection bus 150. Various processors 110, 112, 114, 116, 118, 121, 122, may be interconnected to each other and to one or more memory elements 120, system components and resources 124, and a thermal management unit 132 via an interconnection bus 126, which may include advanced interconnects such as high-performance networks-on-chip (NOCs) . Similarly, the processor 152 may be interconnected to the power management unit 154, the mmWave transceivers 156, memory 158, and various additional processors 160 via the interconnection bus 164. These interconnection buses 126, 150, 164 may include an array of reconfigurable logic gates and / or implement a bus architecture (e.g., CoreConnect, AMBA, etc. ) . Communications may be provided by advanced interconnects, such as NOCs.
[0060] In various embodiments, any or all of the processors 110, 112, 114, 116, 121, 122, in the system may operate as the SoC’s main processor, central processing unit (CPU) , microprocessor unit (MPU) , arithmetic logic unit (ALU) , etc. One or more of the coprocessors 118 may operate as the CPU.
[0061] In some embodiments, the first SOC 102 may operate as the central processing unit (CPU) of the mobile computing device that carries out the instructions of software application programs by performing the arithmetic, logical, control and input / output (I / O) operations specified by the instructions. In some embodiments, the second SOC 104 may operate as a specialized processing unit. For example, the second SOC 104 may operate as a specialized 5G processing unit responsible for managing high volume, high speed (e.g., 5 Gbps, etc. ) , and / or very high-frequency short wavelength (e.g., 28 GHz mmWave spectrum, etc. ) communications.
[0062] The first SOC 102 may include a digital signal processor (DSP) 110, a modem processor 112, a graphics processor 114, an applications processor 116, one or more coprocessors 118 (e.g., vector co-processor, CPUCP, etc. ) connected to one or more of the processors, memory 120, data processing unit (DPU) 121, artificial intelligence processor 122, system components and resources 124, an interconnection bus 126, one or more temperature sensors 130, a thermal management unit 132, and a thermal power envelope (TPE) component 134. The second SOC 104 may include a 5G modem processor 152, a power management unit 154, an interconnection bus 164, a plurality of mmWave transceivers 156, memory 158, and various additional processors 160, such as an applications processor, packet processor, etc.
[0063] Each processor 110, 112, 114, 116, 118, 121, 122, 121, 122, 152, 160 may include one or more cores, and each processor / core may perform operations independent of the other processors / cores. For example, the first SOC 102 may include a processor that executes a first type of operating system (e.g., FreeBSD, LINUX, OS X, etc. ) and a processor that executes a second type of operating system (e.g., MICROSOFT WINDOWS 11) . In addition, any, or all of the processors 110, 112, 114, 116, 118, 121, 122, 121, 122, 152, 160 may be included as part of a processor cluster architecture (e.g., a synchronous processor cluster architecture, an asynchronous or heterogeneous processor cluster architecture, etc. ) .
[0064] Any or all of the processors 110, 112, 114, 116, 118, 121, 122, 121, 122, 152, 160 may operate as the CPU of the mobile computing device. In addition, any, or all of the processors 110, 112, 114, 116, 118, 121, 122, 121, 122, 152, 160 may be included as one or more nodes in one or more CPU clusters. A CPU cluster may be a group of interconnected nodes (e.g., processing cores, processors, SOCs, SIPs, computing devices, etc. ) configured to work in a coordinated manner to perform a computing task. Each node may run its own operating system and contain its own CPU, memory, and storage. A task that is assigned to the CPU cluster may be divided into smaller tasks that are distributed across the individual nodes for processing. The nodes may work together to complete the task, with each node handling a portion of the computation. The results of each node’s computation may be combined to produce a final result. CPU clusters are especially useful for tasks that can be parallelized and executed simultaneously. This allows CPU clusters to complete tasks much faster than a single, high-performance computer. Additionally, because CPU clusters are made up of multiple nodes, they are often more reliable and less prone to failure than a single high-performance component.
[0065] The first and second SOC 102, 104 may include various system components, resources, and custom circuitry for managing sensor data, analog-to-digital conversions, wireless data transmissions, and for performing other specialized operations, such as decoding data packets and processing encoded audio and video signals for rendering in a web browser. For example, the system components and resources 124 of the first SOC 102 may include power amplifiers, voltage regulators, oscillators, phase-locked loops, peripheral bridges, data controllers, memory controllers, system controllers, Access ports, timers, and other similar components used to support the processors and software clients running on a computing device. The system components and resources 124 may also include circuitry to interface with peripheral devices, such as cameras, electronic displays, wireless communication devices, external memory chips, etc.
[0066] The first and / or second SOCs 102, 104 may further include an input / output module (not illustrated) for communicating with resources external to the SOC, such as the clock 106, the voltage regulator 108, the wireless transceiver 166 (e.g., cellular wireless transceiver, Bluetooth transceiver, etc. ) , the user input devices 170 (e.g., a touch-sensitive display, a touch pad, a mouse, etc. ) . Resources external to the SOC (e.g., clock 106, voltage regulator 108, wireless transceiver 166) may be shared by two or more of the internal SOC processors / cores.
[0067] In some embodiments, the software responsible for intelligent link selection and data management may be implemented in the applications processor (AP) 116. The AP 116 may analyze link information and communicate with the other devices to make informed decisions about which network connection or link to use. The AP 116 may also control the signaling (e.g., through the modem, etc. ) , which may include directing data traffic through the selected link and managing the flow of data through one or more paths.
[0068] The AP 116 in each device may determine its bandwidth requirements, select the network connection or link that best supports the application, and route the corresponding data traffic through the neighbor device that includes the selected network connection or link. Each application has access to the most suitable network resources for its specific needs, leading to enhanced overall performance and user experience.
[0069] In addition to the example SIP 100 discussed above, various embodiments may be implemented in various computing systems, including a single processor, multiple processors, multicore processors, or any combination thereof.
[0070] FIG. 1B illustrates an example network 151 that includes many user computing devices 103, 105, 107, 109, 111, 113, 115 that connect to the internet 121 via a different network connections or links 131, 133, 135, 137. With reference to FIGs. 1A and 1B, the illustrated network 151 includes a media player 103, laptop 105, tablet 107, smartphone 109, smartwatch 111, smart speaker 113, personal computer 115, any or all of which may include the SIP 100 discussed above.
[0071] The media player 103 includes a network connection or link 131 to the internet 121 via a private network 123 (e.g., provided by TV services, etc. ) . The media player 103, laptop 105, tablet 107, smartphone 109, smartwatch 111, and smart speaker 113 include network connections or links 131 to the internet 121 through Wi-Fi and an access point 117. The personal computer 115 includes a network connection or link 135 to the internet 121 through an IP / Ethernet 119 component. The smartphone 109 and smartwatch 111 include a network connection or link 137 to the internet 121 through cellular connections and a base station 141.
[0072] Each user computing device 103, 105, 107, 109, 111, 113, 115 may include its own network requirements and distinct network connection or links. In addition, each user computing device 103, 105, 107, 109, 111, 113, 115 may include a different collection of software applications that each have their own application-specific requirements (e.g., QoS requirements, etc. ) characteristics, and / or metrics.
[0073] In some embodiments, any of the user computing devices 103, 105, 107, 109, 111, 113, 115 may include direct communication links to any or all of the other user computing devices 103, 105, 107, 109, 111, 113, 115. The user computing devices 103, 105, 107, 109, 111, 113, 115 may be configured to support various wired and wireless protocols for detecting and relaying information between devices, including but not limited to universal serial bus (USB) , IP / Ethernet, Bluetooth, Bluetooth Low Energy (BLE) , Wi-Fi, telecommunications (e.g., LTE, 5G, 6G, etc. ) , device-to-device (D2D) links, etc.
[0074] The user computing devices 103, 105, 107, 109, 111, 113, 115 may be configured to share their network connection or link characteristics (e.g., network connection or link quality, bandwidth, latency, etc. ) with the other user computing devices 103, 105, 107, 109, 111, 113, 115. The user computing devices 103, 105, 107, 109, 111, 113, 115 may be configured to process signals from the other user computing devices 103, 105, 107, 109, 111, 113, 115 to setup a neighbor link and / or manage the data traffic as directed. The user computing devices 103, 105, 107, 109, 111, 113, 115 may be configured to handle data offloading, which may include receiving and / or transmitting data on behalf of another user computing device 103, 105, 107, 109, 111, 113, 115.
[0075] The user computing devices 103, 105, 107, 109, 111, 113, 115 may be configured to send, receive, implement, enforce, and / or use offloading rules and / or custom routing rules that are specific to a software application. The custom routing rules may be used to determine how incoming and outgoing packets for the application should be managed. The offloading rules may include information that may be used to the device to receive and manage data traffic when a neighbor device decides to offload data through the device’s network connection or link.
[0076] FIGs. 2A and 2B illustrate components that could be included in a system configured to perform intelligent network connection or link selection operations in accordance with some embodiments. With reference to FIGs. 1A-2B, a system may include a user device 201 and a neighbor device 203, any or all of which may be user computing devices 103, 105, 107, 109, 111, 113, 115 and / or include the SIP 100 discussed above. The user device 201 may include time-sensitive applications 202, background high bandwidth (High-BW) applications 204, interactive high bandwidth applications 206, a network context information 210 component, an application classification model 212 component, a network connection or link arbitrator 214 component, a neighboring link setup 216 component, data offload switcher 218 component, a Bluetooth / Wi-Fi protocol stack 220, a Bluetooth / Wi-Fi device driver 222, a TCP / IP protocol stack 224, a network card driver 226, and a socket application programming interface (API) 230 component. The neighbor device 203 may share connectivity characteristics with the user device 201 and act as a potential source of alternative network connection or links.
[0077] In some embodiments, the components 210-218 may be configured to select the best available network connection or link for data traffic based on the link’s performance characteristics and the specific requirements of each of the applications 202-206. In some embodiments, the components 210-218 may be configured to share connectivity characteristics with neighboring devices 203. That is, neighboring devices 203 with different internet connectivity may share their connectivity characteristics (e.g., latency, bandwidth, etc. ) with the user device 201 and each other. In some embodiments, the components 210-218 may be configured to arbitrate and select the best link so as to eliminate the need for a centralized hub device.
[0078] In some embodiments, the components 210-218 may be configured to enable routing through neighbor devices 203. That is, the components 210-218 determine and select the best link based on the characteristics of the network connection or link and the characteristics of the device associated with the network connection or link. Unlike conventional network systems in which each device connects directly to a centralized hub, the components 210-218 may use direct communication links to route communications through a neighbor device 203.
[0079] In some embodiments, the network context information 210 component may include an advertiser component and a scanner component. The advertiser component may be configured to broadcast its network context information (e.g., connectivity quality and type, etc. ) . The scanner component may be configured to actively scan and collect network context information from the neighboring devices 203. In some embodiments, the network context information 210 component may be configured to use the Bluetooth / Wi-Fi protocol stack 220 and the Bluetooth / Wi-Fi device driver 222 to scan for neighbor devices in proximity the user computing device, receive and store network context information of the neighbor devices, and / or determine neighbor device network context information.
[0080] In various embodiments, the network context information may include, but is not limited to, network performance data, information characterizing the requirements and / or performance metrics of the applications 202-206, detailed information about the types of network connections or links that are available (e.g., low latency links, high bandwidth links, test links, etc. ) , connectivity information, information identifying the performance characteristics of the available network connection or links, the performance characteristics the different types of network connections or links, a list of the supported types of network connections or links, the available or detected types of network connections or links, link identifiers (link IDs) , setup parameters for each network connection or link type, network connection or link qualities, performance parameters of neighboring devices, hardware specifications neighboring devices, software version information, security protocols in use, service set identifiers (SSID) of connected networks, internet protocol (IP) addresses, media access control (MAC) addresses, signal strength information, connection status, and any other relevant network configuration details that may influence the selection or enhancements of network connections.
[0081] In some embodiments, the application classification model 212 may include or use an artificial intelligence (AI) model that is configured to perform application classification operations, which may include determining the application type of each of the applications 202-206 and matching the best network connection or link based the application type. In some embodiments, the user device 201 may be configured to use a lookup table to perform basic matching. In some embodiments, the user device 201 may be configured to AI model component for a more sophisticated and dynamic matching based on various parameters and evolving conditions to dynamically adapt to changing network environments and application requirements.
[0082] In some embodiments, the application classification model 212 may include or use multiple parameters or information elements (IEs) , such as a running status IE, a target network type IE, and bandwidth and latency requirements IE. The running status IE may identify whether the application is running in the foreground or background. The target network type IE may include information suitable for determining whether the application’s target network is public or private (which may influence the choice of network connection or link based on security, speed, reliability, etc. ) . The bandwidth and latency requirement IE may include information for analyzing the bandwidth and latency needs of the application to match it with a suitable network connection or link.
[0083] In some embodiments, the application classification model 212 may be configured to receive and use input information to generate output that identifies an application type that may be used for network connection or link selection. The input information may include an application history network package IE, application package IE, and application process status IE. The application history network packages IE may include information for analyzing historical network usage patterns to understand typical demands. The application package information may include various details (e.g., package name, permissions, functions, etc. ) that may be used to characterize the application and its network usage. The application process status information may include the current status of the application process and / or its immediate network needs. The output information may identify an application type and / or other information suitable for determining the most suitable network connection or link for the application given its specific requirements and usage patterns.
[0084] In some embodiments, the application classification model 212 may be configured to analyze the current operations of applications 202-206, determine their QOS metrics (e.g., using historical data, metadata and attributes associated with the software package, etc. ) , and determine each application’s specific network requirements based on the determined metrics. For example, the application classification model 212 may analyze various parameters such as network bandwidth usage, latency requirements, data sensitivity, and priority levels of the applications. In some embodiments, the analysis may include analyzing real-time data traffic patterns, historical performance metrics, and the intrinsic characteristics of the applications (determined based on metadata and attributes associated with the software package, etc. ) .
[0085] In some embodiments, the application classification model 212 may be configured to categorize applications into different classes based on their network requirements and behaviors. Examples of such classes include, but are not limited to, high-bandwidth and low-latency applications (e.g., video streaming services, etc. ) , moderate-bandwidth applications (e.g., web browsing, etc. ) , and low-bandwidth high-latency-tolerant applications (e.g., email, text messaging, etc. ) . In some embodiments, the application classification model 212 may be configured to predict future network requirements of the applications 202-206 based on usage patterns and adjust the network configuration proactively to maintain or improve performance. In some embodiments, the proactive network configuration adjustments may include dynamically allocating bandwidth, prioritizing network traffic, and suggesting alternative network connections or links or connections to enhance the overall user experience and / or the efficiency of network resource utilization.
[0086] In some embodiments, the network connection or link arbitrator 214 component may be configured to receive and use the network context information to select the best network connection or link for a given application 202-206. The network connection or link arbitrator 214 component may receive as input information about all available network connections or links and the current type of the application in use, analyze the available network connection or links, and select the network connection or link that best aligns with the application’s requirements (e.g., considering factors such as bandwidth, latency, reliability, etc. ) . In some embodiments, the input to the network connection or link arbitrator 214 component may include, but is not limited to, the determined application type (e.g., high-bandwidth, moderate-bandwidth, low-bandwidth, low-latency, high-latency-tolerant, etc. ) , local network connection or link information, neighboring device network connection or link information, neighboring device workload information, neighboring device battery status, a list of applications operating on the neighboring device, and / or the application types on the neighboring device. In various embodiments, the network connection or link arbitrator 214 may be configured to use any or all of such input to analyze and / or select a network connection or link.
[0087] As an example, the network connection or link arbitrator 214 component may be configured to receive network context information, determine the available links, filter the available links based on whether the associated neighbor device is available (and includes available resources, etc. ) , based on whether the links meet the requirements (e.g., bandwidth, latency, etc., ) of the application, and / or based on whether the links include a data traffic quota or may accommodate the anticipated volume of data traffic.
[0088] In some embodiments, the network connection or link arbitrator 214 component may be configured to generate as output the link identifier value (link ID) of the selected link and send the generated output to the neighboring link setup 216 component. The neighboring link setup 216 component and the data offload switcher 218 component may be configured to receive and use such information to establish and manage the selected data link (which may be identified via the link ID) .
[0089] For example, neighboring link setup 216 component may be configured to establish the network connection or link selected by the network connection or link arbitrator 214. The data offload switcher 218 component may be configured to manage the transition from the current data link of the application 202-206 to the newly selected network connection or link.
[0090] With reference to FIGs. 1A-2B, in operation 1, the network context information 210 component may to scan for neighbor devices 203 in proximity the user computing device 201, receive and store network context information of the neighbor devices, and / or determine neighbor device network context information. That is, the user computing device 201 may become aware of the network contexts of its neighbor devices 203 in operation 1. In operation 2, the user 250 may launch a software application, such as the illustrated time-sensitive application 202. In operation 3, the application classification model 212 may detect currently executing application operations, determine the application is a time-sensitive application 202, and determine the network QoS requirements of the time-sensitive application 202.
[0091] In operation 4, the network connection or link arbitrator 214 component may receive all available network connection or links, including the local network connections or links of the user computing device 201 and the network connections or links of the neighbor device 203, from the network context information 210 component. In operation 5, the network connection or link arbitrator 214 component may receive the application type information from the application classification model 212. In operation 6, the network connection or link arbitrator 214 component may determine and select the best link and send information identifying the selected network connection or link to the neighboring link setup 216 component.
[0092] In operation 7, the neighboring link setup 216 component may setup the selected link and send a “neighbor link setup success” message to the data offload switcher 218 component. In operation 8, the offload switcher 218 component may update the route information of the user computing device 201 for the time-sensitive application 202. In operation 9, the time-sensitive application 202 may use the selected network connections or links to transport data.
[0093] FIG. 3 is a process flow diagram illustrating a method 300 for intelligently selecting a network connection or link in accordance with some embodiments. With reference to FIGs. 1A-3, the method 300 may be performed in a computing device by at least one processor encompassing one or more processors (e.g., 110, 112, 114, 116, 118, 121, 122, 121, 122, 152, etc. ) , components (e.g., 210-218, etc. ) or subsystems discussed in this application. Means for performing the functions of the operations in the method 300 may include at least one processor including one or more of processors 110, 112, 114, 116, 118, 121, 122, 121, 122, 152, and other components (e.g., 210-218, etc. ) described herein. Further, one or more processors of a at least one processor may be configured with software or firmware to perform some or all of the operations of the method 300. In order to encompass the alternative configurations enabled in various embodiments, the hardware implementing any or all of the method 300 is referred to herein as “at least one processor. ”
[0094] In block 302, the at least one processor may scan a local network to receive network context information from one or more neighbor devices that include network connections or links to a wide area network (WAN) . For example, the processor may use the Bluetooth / Wi-Fi protocol stack 220 to actively search for nearby devices connected to different types of WAN links (e.g., cellular, fiber optic, or satellite connections, etc. ) . The processor may collect, aggregate, and use various different types of data (e.g., link type, bandwidth, latency, signal strength, current load, etc. ) to generate or update the network context information that it is suitable for use in assessing the availability and suitability of the WAN links for various applications running on the user device.
[0095] In block 304, the at least one processor may use an AI model to classify a software application detected on the user computing device based on one or more network condition parameters (e.g., QoS requirements, etc. ) associated with the detected software application. For example, the processor may use the AI model to assess a video conferencing application and classify it as a high-bandwidth, low-latency application due to its real-time communication nature and high data throughput needs. As another example, the processor may use the AI model to categorize an email client as a low-bandwidth, high-latency-tolerant application due to its minimal real-time data transfer requirements. This classification may allow the system to prioritize network resources and optimize link selection according to the specific demands of each application, ensuring that applications with more critical or sensitive network needs, such as video streaming or online gaming, receive priority in network connection or link allocation over less demanding applications, like file downloads or background updates.
[0096] In block 306, the at least one processor may analyze or evaluate a device network connection or link and at least one neighbor network connection or link of the one or more neighbor devices. For example, the processor may assess the bandwidth capacity, latency characteristics, reliability, and current usage levels of the network connection or link of the user device (e.g., a home Wi-Fi connection, etc. ) and the network connections or links of nearby devices (e.g., a neighboring device’s cellular data connection, etc. ) . The processor may compare these factors to determine the network connection or link is best suited for the current needs of the software applications operating on the user device. If the user device is engaged in a high-bandwidth activity (e.g., streaming 4K video, etc. ) and the home Wi-Fi is congested or slow, the processor may opt for the faster and less congested cellular link. In some embodiments, the processor may be configured to determine and select the most efficient and effective network connection or link available. In some embodiments, the processor may be configured to evaluate the immediate performance of the network connections or links and also consider future workloads, stability, potential future changes in network conditions, and other conditions and communication parameters.
[0097] In block 308, the at least one processor may select a network connection or link for the detected software application based on an output of the AI model and a result of evaluating the device network connection or link and at least one neighbor network connection or link of the one or more neighbor devices. In some embodiments, the at least one processor may determine whether there is an operational advantage to offloading data to a link of the neighbor device and select the network connection or link in response to determining that there is an operational advantage to offloading the data to a link of the neighbor device. In some embodiments, the at least one processor may select multiple network connections or links in block 308. For example, the processor may divide the data transfer across multiple network connections or links for a data-intensive application (e.g., a cloud backup, a cloud-based gaming service, high-definition video streaming, etc. ) . As such, the processor may simultaneously use the primary Wi-Fi network of the use device and an underutilized Ethernet connection of a neighbor device. The simultaneous use of multiple links may significantly enhance data transfer speeds and efficiency.
[0098] In some embodiments, the processor may be configured to select the network connection or link based on the needs (e.g., bandwidth needs, latency sensitivity, reliability requirements, etc. ) of its currently executing applications. In some embodiments, the processor may be configured to facilitate application-specific network selection. For example, a laptop running a time-sensitive application may select the most suitable network connection or link based on a result of analyzing the network connections or links available from its neighboring devices and the specific requirements of the time-sensitive application. As a further example, the laptop may select an ultra-reliable low latency network provided by the smartphone (or the phone’s low latency network slice, etc. ) for the time-sensitive application and / or use the smartphone as a hotspot.
[0099] In some embodiments, the processor may allocate different types of data traffic to different links and / or different neighbor devices based on the characteristics of the data traffic, links and / or devices. For example, the processor may send real-time gaming traffic over the lower latency Ethernet link and use the Wi-Fi connection for background downloads or updates.
[0100] In block 310, the at least one processor may establish a data transfer link to a neighbor device that includes the selected network connection or link. In various embodiments, the data transfer link may be USB link, an Ethernet link, a short-range wireless technology link (e.g., a Bluetooth link, etc. ) , a wireless personal area network connection or link (e.g., a BLE link, etc. ) , a Wi-Fi link, a telecommunications link (e.g., 5G link, etc. ) , a mission-critical / ultra-low latency (MCX) link, and / or a device-to-device (D2D) link. For example, the processor may establish a D2D link that uses the advanced capabilities (e.g., high data rates, low latency, etc. ) of 5G technologies in response to selecting a high-speed, low-latency telecommunications link offered by the neighbor device. This type of connection would be particularly advantageous for applications requiring real-time data transfer, such as augmented reality (AR) or virtual reality (VR) applications. Alternatively, for less latency-sensitive applications, such as file backups or media downloads, the processor may establish a Wi-Fi link with a neighbor device and use the increased bandwidth available through Wi-Fi for large data transfers.
[0101] In block 312, the at least one processor may use the selected network connection or link and the established data transfer link to the neighbor device to communicate data associated with the detected software application. For example, the processor may offload a data processing or communication task from a primary network connection of the user computing device to a network connection of the neighbor device. As a further example, the processor may offload the high-definition video streaming data to a high-speed telecommunications link on a neighbor device due to its superior bandwidth and lower latency, while concurrently using the local Wi-Fi connection for less critical data tasks such as background updates or synchronizations.
[0102] In some embodiments, the processor may update routing information of the user computing device to direct data traffic through the selected network connection or link. In some embodiments, the processor may be configured to dynamically route traffic so that the device bypasses its direct network connection or link in favor of a more optimal route through other neighboring devices. For example, instead of a laptop connecting to the internet directly through its base station, it may route its traffic through the TV, which may in turn connect to the internet through a private network. This indirect routing may be based on the assessment that the TV’s network connection or link offers a better fit for the laptop’s application needs at that moment.
[0103] In some embodiments, the processor may be configured to use multiple network connections or links simultaneously and / or to combine the bandwidth of multiple network connection or links. For example, a laptop with access to multiple network connections or links (e.g., Wi-Fi, Ethernet, etc. ) may aggregate these links to significantly improve its data transmission capabilities. As another example, the laptop may simultaneously use the Wi-Fi type of network connection of a tablet and the cellular network type of network connection of a smartphone to ensure robust and high-speed internet connectivity for a specific software application (e.g., a document download application, etc. ) . In some embodiments, the at least one processor may simultaneously use multiple selected network connections or links to communicate the data associated with the detected software application. For example, the processor may use a first type of network connection (e.g., Wi-Fi, etc. ) of a first neighbor device and a second type of network connection (e.g., telecommunications, etc. ) of a second neighbor device.
[0104] In some embodiments, the processor may be configured to simultaneously use multiple different network connections (i.e., communication links) by dividing data traffic into different streams that may be routed through different network connections and paths to the internet. In some embodiments, the processor may be configured to allow for application-specific network stream selection. For example, a first application on the device may use a single stream for its data transfer and a second application on the device may use two or more streams for its data transfer. Each application may tailor its network usage based on its specific requirements.
[0105] Various embodiments (including, but not limited to, embodiments described above With reference to FIGs. 1A-3) may be implemented in a wide variety of wireless devices and computing systems including a laptop computer 400, an example of which is illustrated in FIG. 4. With reference to FIGs. 1A-4, a laptop computer may include a at least one processor 402 coupled to volatile memory 404 and a large capacity nonvolatile memory, such as a disk drive 406 or Flash memory. The laptop computer 400 may include a touchpad touch surface 408 that serves as the computer’s pointing device, and thus may receive drag, scroll, and flick gestures. Additionally, the laptop computer 400 may have one or more antenna 410 for sending and receiving electromagnetic radiation that may be connected to a wireless data link and / or cellular telephone transceiver 412 coupled to the at least one processor 402. The computer 400 may also include a BT transceiver 414, a compact disc (CD) drive 416, a keyboard 418, and a display 420 all coupled to the at least one processor 402. Other configurations of the computing device may include a computer mouse or trackball coupled to the at least one processor (e.g., via a universal serial bus (USB) input) as are well known, which may also be used in conjunction with various embodiments.
[0106] FIG. 5 is a component block diagram of a computing device 500 suitable for use with various embodiments. With reference to FIGS. 1A–5, various embodiments may be implemented on a variety of computing devices 500, an example of which is illustrated in FIG. 5 in the form of a smartphone. The computing device 500 may include a first SOC 102 coupled to a second SOC 104. The first and second SoCs 102, 104 may be coupled to internal memory 516, a touch-sensitive display 512, and a speaker 514. The first and second SOCs 102, 104 may also be coupled to at least one subscriber identity module (SIM) 540 and / or a SIM interface that may store information supporting a first 5GNR subscription and a second 5GNR subscription, which support service on a 5G non-standalone (NSA) network.
[0107] The computing device 500 may include an antenna 504 for sending and receiving electromagnetic radiation that may be connected to a wireless transceiver 166 coupled to one or more processors in the first and / or second SOCs 102, 104. The computing device 500 may also include menu selection buttons or rocker switches 520 for receiving user inputs.
[0108] The computing device 500 also includes a sound encoding / decoding (CODEC) circuit 510, which digitizes sound received from a microphone into data packets suitable for wireless transmission and decodes received sound data packets to generate analog signals that are provided to the speaker to generate sound. Also, one or more of the processors in the first and second circuitries 102, 104, wireless transceiver 166 and CODEC 510 may include a digital signal processor (DSP) circuit (not shown separately) .
[0109] Some embodiments may be implemented on any of a variety of commercially available computing devices, such as the server computing device 600 illustrated in FIG. 6. With reference to FIGS. 1B–6, a server device 600 may include a processor 601 coupled to volatile memory 602 and a large capacity nonvolatile memory, such as a disk drive 603. The server device 600 may also include a floppy disc drive, USB, etc. coupled to the processor 601. The server device 600 may also include network access ports 606 coupled to the processor 601 for establishing data connections with a network connection circuit 604 and a communication network 608 (e.g., an Internet protocol (IP) network) coupled to other communication system network elements.
[0110] The processors or processing units discussed in this application may be any programmable microprocessor, microcomputer, or multiple processor chip or chips that can be configured by software instructions (applications) to perform a variety of functions, including the functions of various embodiments described. In some computing devices, multiple processors may be provided, such as one processor within a first circuitry dedicated to wireless communication functions and one processor within a second circuitry dedicated to running other applications. Software applications may be stored in the memory before they are accessed and loaded into the processor. The processors may include internal memory sufficient to store the application software instructions.
[0111] Implementation examples are described in the following paragraphs. While some of the following implementation examples are described in terms of example methods, further example implementations may include: the example methods discussed in the following paragraphs implemented by a computing device including at least one processor coupled to memory and configured (e.g., with processor-executable instructions) to perform operations of the methods of the following implementation examples; the example methods discussed in the following paragraphs implemented by a computing device including means for performing functions of the methods of the following implementation examples; and the example methods discussed in the following paragraphs may be implemented as a non-transitory processor-readable storage medium having stored thereon processor-executable instructions configured to cause a processor of a computing device to perform the operations of the methods of the following implementation examples.
[0112] Example 1: A method of communicating information by a user computing device, the method including scanning a local network to receive network context information from one or more neighbor devices that include network connections or links to a wide area network (WAN) , using an artificial intelligence (AI) model to classify a software application detected on the user computing device based on one or more network condition parameters associated with the detected software application, analyzing a device network connection and at least one neighbor network connection of the one or more neighbor devices, selecting a network connection for the detected software application based on an output of the AI model and a result of analyzing the device network connection and the at least one neighbor network connection of the one or more neighbor devices, establishing a data transfer link to a neighbor device that includes the selected network connection, and using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application.
[0113] Example 2: The method of example 1, in which using the AI model to classify the software application detected on the user computing device based on the one or more network condition parameters associated with the detected software application includes using the AI model to classify the software application detected on the user computing device based on a quality of service (QOS) parameter of the detected software application.
[0114] Example 3: The method of either of examples 1 or 2, in which establishing the data transfer link to the neighbor device that includes the selected network connection includes one or more of establishing a universal serial bus (USB) link to the neighbor device, establishing an Ethernet link to the neighbor device, establishing a short-range wireless technology link to the neighbor device, establishing a wireless personal area network connection to the neighbor device, establishing a Wi-Fi link to the neighbor device, establishing a telecommunications link to the neighbor device, or establishing a device-to-device (D2D) link to the neighbor device.
[0115] Example 4: The method of any of examples 1-3, in which using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application includes using a mission-critical / ultra-low latency (MCX) link and a tethering link to the neighbor device to communicate the data associated with the detected software application.
[0116] Example 5: The method of any of examples 1-4, in which using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application includes offloading a data processing or communication task from a primary network connection of the user computing device to a network connection of the neighbor device.
[0117] Example 6: The method of any of examples 1-5, in which using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application includes updating routing information of the user computing device to direct data traffic through the selected network connection.
[0118] Example 7: The method of any of examples 1-6, in which selecting the network connection for the detected software application based on the output of the AI model and the result of analyzing the device network connection and at the least one neighbor network connection of the one or more neighbor devices includes selecting the network connection in response to determining that there is an operational advantage to offloading data to a network connection of a neighboring device.
[0119] Example 8: The method of any of examples 1-7, in which selecting the network connection for the detected software application includes selecting multiple network connection, and using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application includes simultaneously using the selected multiple network connections to communicate the data associated with the detected software application.
[0120] Example 9: The method of example 8, in which simultaneously using the selected multiple network connections to communicate the data associated with the detected software application includes using a first type of network connection of a first neighbor device and a second type of network connection of a second neighbor device, in which the first type of network connection and the second type of network connection are different types of network connections.
[0121] Example 10: The method of example 9, in which the first type of network connection is a Wi-Fi network, and the second type of network connection is a telecommunications network.
[0122] As used in this application, terminology such as “component, ” “module, ” “system, ” etc., is intended to encompass a computer-related entity. These entities may involve, among other possibilities, hardware, firmware, a blend of hardware and software, software alone, or software in an operational state. As examples, a component may encompass a running process on a processor, the processor itself, an object, an executable file, a thread of execution, a program, or a computing device. To illustrate further, both an application operating on a computing device and the computing device itself may be designated as a component. A component might be situated within a single process or thread of execution or could be distributed across multiple processors or cores. In addition, these components may operate based on various non-volatile computer-readable media that store diverse instructions and / or data structures. Communication between components may take place through local or remote processes, function, or procedure calls, electronic signaling, data packet exchanges, memory interactions, among other known methods of network, computer, processor, or process-related communications.
[0123] A number of different types of memories and memory technologies are available or contemplated in the future, any or all of which may be included and used in systems and computing devices that implement the various embodiments. Such memory technologies / types may include non-volatile random-access memories (NVRAM) such as Magnetoresistive RAM (M-RAM) , resistive random access memory (ReRAM or RRAM) , phase-change random-access memory (PC-RAM, PRAM or PCM) , ferroelectric RAM (F-RAM) , spin-transfer torque magnetoresistive random-access memory (STT-MRAM) , and three-dimensional cross point (3D-XPOINT) memory. Such memory technologies / types may also include non-volatile or read-only memory (ROM) technologies, such as programmable read-only memory (PROM) , field programmable read-only memory (FPROM) , one-time programmable non-volatile memory (OTP NVM) . Such memory technologies / types may further include volatile random-access memory (RAM) technologies, such as dynamic random-access memory (DRAM) , double data rate (DDR) synchronous dynamic random-access memory (DDR SDRAM) , static random-access memory (SRAM) , and pseudostatic random-access memory (PSRAM) . Systems and computing devices that implement the various embodiments may also include or use electronic (solid-state) non-volatile computer storage mediums, such as FLASH memory. Each of the above-mentioned memory technologies include, for example, elements suitable for storing instructions, programs, control signals, and / or data for use in a computing device, system on chip (SOC) or another electronic component. Any references to terminology and / or technical details related to an individual type of memory, interface, standard or memory technology are for illustrative purposes only, and not intended to limit the scope of the claims to a particular memory system or technology unless specifically recited in the claim language.
[0124] Various embodiments illustrated and described are provided merely as examples to illustrate various features of the claims. However, features shown and described with respect to any given embodiment are not necessarily limited to the associated embodiment and may be used or combined with other embodiments that are shown and described. Further, the claims are not intended to be limited by any one example embodiment. For example, one or more of the operations of the methods may be substituted for or combined with one or more operations of the methods.
[0125] The foregoing method descriptions and the process flow diagrams are provided merely as illustrative examples and are not intended to require or imply that the operations of various embodiments must be performed in the order presented. As will be appreciated by one of skill in the art the order of operations in the foregoing embodiments may be performed in any order. Words such as “thereafter, ” “then, ” “next, ” etc. are not intended to limit the order of the operations; these words are simply used to guide the reader through the description of the methods. Further, any reference to claim elements in the singular, for example, using the articles “a, ” “an” or “the” is not to be construed as limiting the element to the singular.
[0126] The various illustrative logical blocks, modules, circuits, and algorithm operations described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and operations have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the claims.
[0127] The hardware used to implement the various illustrative logics, logical blocks, modules, and circuits described in connection with the embodiments disclosed herein may be implemented or performed with a general purpose processor, a digital signal processor (DSP) , an application specific integrated circuit (TCUASIC) , a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general-purpose processor may be a microprocessor, but, in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Alternatively, some operations or methods may be performed by circuitry that is specific to a given function.
[0128] In one or more embodiments, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored as one or more instructions or code on a non-transitory computer-readable medium or non-transitory processor-readable medium. The operations of a method or algorithm disclosed herein may be embodied in a processor-executable software module, which may reside on a non-transitory computer-readable or processor-readable storage medium. Non-transitory computer-readable or processor-readable storage media may be any storage media that may be accessed by a computer or a processor. By way of example but not limitation, such non-transitory computer-readable or processor-readable media may include RAM, ROM, EEPROM, FLASH memory, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that may be used to store target program code in the form of instructions or data structures and that may be accessed by a computer. Disk and disc, as used herein, includes compact disc (CD) , laser disc, optical disc, DVD, floppy disk, and Blu-ray disc where disks usually reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above are also included within the scope of non-transitory computer-readable and processor-readable media. Additionally, the operations of a method or algorithm may reside as one or any combination or set of codes and / or instructions on a non-transitory processor-readable medium and / or computer-readable medium, which may be incorporated into a computer program product.
[0129] The preceding description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the claims. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without departing from the scope of the claims. Thus, the present disclosure is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the following claims and the principles and novel features disclosed herein.
Claims
1.A computing device, comprising:a processor configured to:scan a local network to receive network context information from one or more neighbor devices that include network connections or links to a wide area network (WAN) ;use an artificial intelligence (AI) model to classify a software application detected on the user computing device based on one or more network condition parameters associated with the detected software application;analyze a device network connection and at least one neighbor network connection of the one or more neighbor devices;select a network connection for the detected software application based on an output of the AI model and a result of analyzing the device network connection and the at least one neighbor network connection of the one or more neighbor devices;establish a data transfer link to a neighbor device that includes the selected network connection; anduse the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application.2.The computing device of claim 1, wherein the processor is configured to use the AI model to classify the software application detected on the user computing device based on the one or more network condition parameters associated with the detected software application by using the AI model to classify the software application detected on the user computing device based on a quality of service (QOS) parameter of the detected software application.3.The computing device of claim 1, wherein the processor is configured to establish the data transfer link to the neighbor device that includes the selected network connection by one or more of:establishing a universal serial bus (USB) link to the neighbor device;establishing an Ethernet link to the neighbor device;establishing a short-range wireless technology link to the neighbor device;establishing a wireless personal area network connection to the neighbor device;establishing a Wi-Fi link to the neighbor device;establishing a telecommunications link to the neighbor device; orestablishing a device-to-device (D2D) link to the neighbor device.4.The computing device of claim 1, wherein the processor is configured to use the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application by using a mission-critical / ultra-low latency (MCX) link and a tethering link to the neighbor device to communicate the data associated with the detected software application.5.The computing device of claim 1, wherein the processor is configured to use the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application by offloading a data processing or communication task from a primary network connection of the user computing device to a network connection of the neighbor device.6.The computing device of claim 1, wherein the processor is configured to use the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application by updating routing information of the user computing device to direct data traffic through the selected network connection.7.The computing device of claim 1, wherein the processor is configured to select the network connection for the detected software application based on the output of the AI model and the result of analyzing the device network connection and the at least one neighbor network connection of the one or more neighbor devices by selecting the network connection in response to determining that there is an operational advantage to offloading data to a network connection of a neighboring device.8.The computing device of claim 1, wherein the processor is configured to:select the network connection for the detected software application by selecting multiple network connections; anduse the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application by simultaneously using the selected multiple network connections to communicate the data associated with the detected software application.9.The computing device of claim 8, wherein the processor is configured to simultaneously use the selected multiple network connections to communicate the data associated with the detected software application by using a first type of network connection of a first neighbor device and a second type of network connection of a second neighbor device, wherein the first type of network connection and the second type of network connection are different types of network connections.10.The computing device of claim 9, wherein the first type of network connection is a Wi-Fi network, and the second type of network connection is a telecommunications network.11.A method of communicating information by a user computing device, the method comprising:scanning a local network to receive network context information from one or more neighbor devices that include network connections or links to a wide area network (WAN) ;using an artificial intelligence (AI) model to classify a software application detected on the user computing device based on one or more network condition parameters associated with the detected software application;analyzing a device network connection and at least one neighbor network connection of the one or more neighbor devices;selecting a network connection for the detected software application based on an output of the AI model and a result of analyzing the device network connection and the at least one neighbor network connection of the one or more neighbor devices;establishing a data transfer link to a neighbor device that includes the selected network connection; andusing the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application.12.The method of claim 11, wherein using the AI model to classify the software application detected on the user computing device based on the one or more network condition parameters associated with the detected software application comprises using the AI model to classify the software application detected on the user computing device based on a quality of service (QOS) parameter of the detected software application.13.The method of claim 11, wherein establishing the data transfer link to the neighbor device that includes the selected network connection comprises one or more of:establishing a universal serial bus (USB) link to the neighbor device;establishing an Ethernet link to the neighbor device;establishing a short-range wireless technology link to the neighbor device;establishing a wireless personal area network connection to the neighbor device;establishing a Wi-Fi link to the neighbor device;establishing a telecommunications link to the neighbor device; orestablishing a device-to-device (D2D) link to the neighbor device.14.The method of claim 11, wherein using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application comprises using a mission-critical / ultra-low latency (MCX) link and a tethering link to the neighbor device to communicate the data associated with the detected software application.15.The method of claim 11, wherein using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application comprises offloading a data processing or communication task from a primary network connection of the user computing device to a network connection of the neighbor device.16.The method of claim 11, wherein using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application comprises updating routing information of the user computing device to direct data traffic through the selected network connection.17.The method of claim 11, wherein selecting the network connection for the detected software application based on the output of the AI model and the result of analyzing the device network connection and the at least one neighbor network connection of the one or more neighbor devices comprises selecting the network connection in response to determining that there is an operational advantage to offloading data to a network connection of a neighboring device.18.The method of claim 11, wherein:selecting the network connection for the detected software application comprises selecting multiple network connections; andusing the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application comprises simultaneously using the selected multiple network connections to communicate the data associated with the detected software application.19.The method of claim 11, wherein simultaneously using the selected multiple network connections to communicate the data associated with the detected software application comprises using a first type of network connection of a first neighbor device and a second type of network connection of a second neighbor device, wherein the first type of network connection and the second type of network connection are different types of network connections.20.A computing device, comprising:means for scanning a local network to receive network context information from one or more neighbor devices that include network connections or links to a wide area network (WAN) ;means for using an artificial intelligence (AI) model to classify a software application detected on the user computing device based on one or more network condition parameters associated with the detected software application;means for analyzing a device network connection and at least one neighbor network connection of the one or more neighbor devices;means for selecting a network connection for the detected software application based on an output of the AI model and a result of analyzing the device network connection and the at least one neighbor network connection of the one or more neighbor devices;means for establishing a data transfer link to a neighbor device that includes the selected network connection; andmeans for using the selected network connection and the established data transfer link to the neighbor device to communicate data associated with the detected software application.
Citation Information
Patent Citations
Intelligent connection management for multiple interfaces
US20190132219A1
Network connection method, related apparatus, and system
US20240121840A1
Networking method, and relevant apparatus and system
WO2022237721A1