Multi-access protocol handling

A multi-access protocol stack with a convergence and adaptation sublayer addresses the challenge of managing data traffic across multiple networks, improving data rate and reliability in edge computing environments.

WO2026000449A1PCT designated stage Publication Date: 2026-01-02INTEL CORP +4
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
PCT/CN2024/102757
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2024-06-29
Publication Date
2026-01-02

AI Technical Summary

Technical Problem

Existing multi-access protocols struggle to efficiently manage data traffic across multiple access networks, failing to meet diverse application requirements in terms of rate, latency, and reliability, particularly in resource-constrained edge computing environments.

Method used

Implementing a multi-access protocol stack with a convergence sublayer for multi-access specific tasks such as path selection, aggregation, splitting/reordering, and lossless switching, along with an adaptation sublayer for tunneling and network security, to dynamically adapt traffic distribution across available paths based on network conditions.

Benefits of technology

Enhances data rate and reliability by intelligently managing traffic across multiple access networks, meeting diverse application needs and optimizing resource usage in edge computing scenarios.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN2024102757_02012026_PF_FP_ABST
    Figure CN2024102757_02012026_PF_FP_ABST
Patent Text Reader

Abstract

Handling of multi-access network protocol packets is offloaded to a network interface device. The network interface device is coupled to a host device using an interface and coupled to a plurality of wireless networks. The network interface device receives a packet over one or more of the wireless networks from a client device for the host device. The network interface device includes a multi-access network protocol service executable by a processor to: identify that the packet comprises header data of a multi-access network protocol to encapsulate packet data from an application run on the client device; strip the header data of the multi-access network protocol from the packet to prepare the packet data for consumption by a service run on the host device; and send the packet data to the host device over the interface.
Need to check novelty before this filing date? Find Prior Art

Description

MULTI-ACCESS PROTOCOL HANDLINGBACKGROUND

[0001] A datacenter may include one or more platforms each comprising at least one processor and associated memory modules. Each platform of the datacenter may facilitate the performance of any suitable number of processes associated with various applications running on the platform. These processes may be performed by the processors and other associated logic of the platforms. Each platform may additionally include I / O controllers, such as network adapter devices, which may be used to send and receive data on a network for use by the various applications.

[0002] Edge computing, including mobile edge computing, may offer application developers and content providers cloud-computing capabilities and an information technology service environment at the edge of a network. Edge computing may have some advantages when compared to traditional centralized cloud computing environments. For example, edge computing may provide a service to a user equipment (UE) with a lower latency, a lower cost, a higher bandwidth, a closer proximity, or an exposure to real-time radio network and context information.

[0003] BIREF DESCRIPTION OF THE DRAWINGS

[0004] FIG. 1 illustrates a block diagram of components of a datacenter in accordance with certain embodiments.

[0005] FIG. 2 is a simplified block diagram illustrating an example computing network.

[0006] FIG. 3 is a simplified block diagram illustrating an example edge computing network.

[0007] FIG. 4 is a simplified block diagram illustrating example elements of an example computing system.

[0008] FIG. 5 is a simplified block diagram illustrating an example service for packet processing in a multi-access network protocol.

[0009] FIG. 6 is a block diagram illustrating an example multi-access protocol stack.

[0010] FIG. 7 is simplified block diagram illustrating an example multi-access  connection between an example host system and an example client system.

[0011] FIGS. 8A-8B are block diagrams illustrating example protocol stack implementations.

[0012] FIGS. 8C-8E are block diagrams illustrating example data formats in an example multi-access protocol.

[0013] FIG. 9 is a simplified block diagram illustrating an example data flow in a system implementing an example multi-access protocol.

[0014] FIG. 10 is a simplified block diagram of a computing system including an example network interface device.

[0015] FIG. 11 is a simplified block diagram illustrating an example data flow in a system implementing an example multi-access protocol using an example network interface device.

[0016] FIG. 12 is a simplified block diagram illustrating an example data flow in a network interface device.

[0017] FIGS. 13A-13B are simplified block diagrams illustrating an example steering mode in an example multi-access protocol.

[0018] FIG. 14 is a simplified block diagram illustrating an example redundancy mode in an example multi-access protocol.

[0019] FIG. 15 is a simplified block diagram illustrating an example splitting mode in an example multi-access protocol.

[0020] FIG. 16 is a simplified block diagram illustrating an example computing system.

[0021] Like reference numbers and designations in the various drawings indicate like elements.DETAILED DESCRIPTION

[0022] The following disclosure provides many different embodiments, or examples, for implementing different features of the present disclosure. Specific examples of components and arrangements are described below to simplify the present disclosure. These are, of course, merely examples and are not intended to be limiting. Further, the present disclosure may repeat reference numerals and / or letters in the various examples. This repetition is for the purpose of simplicity and clarity and does not in itself dictate a relationship  between the various embodiments and / or configurations discussed. Different embodiments may have different advantages, and no particular advantage is necessarily required of any embodiment.

[0023] FIG. 1 illustrates a block diagram of components of a datacenter 100 in accordance with certain embodiments. In the embodiment depicted, datacenter 100 includes a plurality of platforms 102, data analytics engine 104, and datacenter management platform 106 coupled together through network 108. A platform 102 may include platform logic 110 with one or more central processing units (CPUs) 112, memories 114 (which may include any number of different modules) , chipsets 116, communication interfaces 118, and any other suitable hardware and / or software to execute a hypervisor 120 or other operating system capable of executing processes associated with applications running on platform 102. In some embodiments, a platform 102 may function as a host platform for one or more guest systems 122 that invoke these applications. The platform may be logically or physically subdivided into clusters and these clusters may be enhanced through specialized networking accelerators and the use of Compute Express Link (CXL) memory semantics to make such cluster more efficient, among other example enhancements.

[0024] An example platform 102 may include platform logic 110. Platform logic 110 comprises, among other logic enabling the functionality of platform 102, one or more CPUs 112, memory 114, one or more chipsets 116, and communication interface 118. Although three platforms are illustrated, datacenter 100 may include any suitable number of platforms. In various embodiments, a platform 102 may reside on a circuit board that is installed in a chassis, rack, compossible servers, disaggregated servers, or other suitable structures that comprises multiple platforms coupled together through network 108 (which may comprise, e.g., a rack or backplane switch) .

[0025] CPUs 112 may respectively comprise any suitable number of processor cores. The cores may be coupled to one or more other cores, to memory 114, to at least one chipset 116, and / or to communication interface 118, through one or more controllers residing on CPU 112 and / or chipset 116. In particular embodiments, a CPU 112 is embodied within a socket that is permanently or removably coupled to platform 102. Although four CPUs are shown, a platform 102 may include any suitable number of CPUs.

[0026] Memory 114 may comprise any form of volatile or non-volatile memory  including, without limitation, magnetic media (e.g., one or more tape drives) , optical media, random access memory (RAM) , read-only memory (ROM) , flash memory, removable media, or any other suitable local or remote memory component or components. Memory 114 may be used for short, medium, and / or long-term storage by platform 102. Memory 114 may store any suitable data or information utilized by platform logic 110, including software embedded in a computer readable medium, and / or encoded logic incorporated in hardware or otherwise stored (e.g., firmware) . Memory 114 may store data that is used by cores of CPUs 112. In some embodiments, memory 114 may also comprise storage for instructions that may be executed by the cores of CPUs 112 or other processing elements (e.g., logic resident on chipsets 116) to provide functionality associated with components of platform logic 110. Additionally or alternatively, chipsets 116 may respectively comprise memory that may have any of the characteristics described herein with respect to memory 114. Memory 114 may also store the results and / or intermediate results of the various calculations and determinations performed by CPUs 112 or processing elements on chipsets 116. In various embodiments, memory 114 may comprise one or more modules of system memory coupled to the CPUs through memory controllers (which may be external to or integrated with CPUs 112) . In various embodiments, one or more particular modules of memory 114 may be dedicated to a particular CPU 112 or other processing device or may be shared across multiple CPUs 112 or other processing devices.

[0027] A platform 102 may also include one or more chipsets 116 comprising any suitable logic to support the operation of the CPUs 112. In various embodiments, chipset 116 may reside on the same package as a CPU 112 or on one or more different packages. A chipset may support any suitable number of CPUs 112. A chipset 116 may also include one or more controllers to couple other components of platform logic 110 (e.g., communication interface 118 or memory 114) to one or more CPUs. Additionally or alternatively, the CPUs 112 may include integrated controllers. For example, communication interface 118 could be coupled directly to CPUs 112 via integrated I / O controllers resident on one or more of the CPUs.

[0028] Chipsets 116 may respectively include one or more communication interfaces 128. Communication interface 128 may be used for the communication of signaling and / or data between chipset 116 and one or more I / O devices, one or more networks 108, and / or one or more devices coupled to network 108 (e.g., datacenter management platform 106 or  data analytics engine 104) . For example, communication interface 128 may be used to send and receive network traffic such as data packets. In a particular embodiment, communication interface 128 may be implemented through one or more I / O controllers, such as one or more physical network interface controllers (NICs) , also known as network interface cards or network adapters. An I / O controller may include electronic circuitry to communicate using any suitable physical layer and data link layer standard such as Ethernet (e.g., as defined by an IEEE 802.3 standard) , Fibre Channel, InfiniBand, Wi-Fi, cellular broadband networks (e.g., LTE, 5G, etc. ) , or other suitable standard. An I / O controller may include one or more physical ports that may couple to a cable (e.g., an Ethernet cable) . An I / O controller may enable communication between any suitable element of chipset 116 (e.g., switch 130) and another device coupled to network 108. In some embodiments, network 108 may comprise a switch with bridging and / or routing functions that is external to the platform 102 and operable to couple various I / O controllers (e.g., NICs) distributed throughout the datacenter 100 (e.g., on different platforms) to each other. In various embodiments an I / O controller may be integrated with the chipset (e.g., may be on the same integrated circuit or circuit board as the rest of the chipset logic) or may be on a different integrated circuit or circuit board that is electromechanically coupled to the chipset. In some embodiments, communication interface 128 may also allow I / O devices integrated with or external to the platform (e.g., disk drives, other NICs, etc. ) to communicate with the CPU cores.

[0029] Switch 130 may couple to various ports (e.g., provided by NICs) of communication interface 128 and may switch data between these ports and various components of chipset 116 according to one or more link or interconnect protocols, such as Peripheral Component Interconnect Express (PCIe) , Compute Express Link (CXL) , HyperTransport, GenZ, OpenCAPI, and others, which may alternatively or collectively apply the general principles and / or specific features discussed herein. Switch 130 may be a physical or virtual (e.g., software) switch.

[0030] Platform logic 110 may include an additional communication interface 118. Similar to communication interface 128, communication interface 118 may be used for the communication of signaling and / or data between platform logic 110 and one or more networks 108 and one or more devices coupled to the network 108. For example, communication interface 118 may be used to send and receive network traffic such as data  packets. In a particular embodiment, communication interface 118 comprises one or more physical I / O controllers (e.g., NICs) . These NICs may enable communication between any suitable element of platform logic 110 (e.g., CPUs 112) and another device coupled to network 108 (e.g., elements of other platforms or remote nodes coupled to network 108 through one or more networks) . In particular embodiments, communication interface 118 may allow devices external to the platform (e.g., disk drives, other NICs, etc. ) to communicate with the CPU cores. In various embodiments, NICs of communication interface 118 may be coupled to the CPUs through I / O controllers (which may be external to or integrated with CPUs 112) . Further, as discussed herein, I / O controllers may include functionality to offload packet processing from CPUs, including in multi-access protocols, among other example features.

[0031] Platform logic 110 may receive and perform any suitable types of processing requests. A processing request may include any request to utilize one or more resources of platform logic 110, such as one or more cores or associated logic. For example, a processing request may comprise a processor core interrupt; a request to instantiate a software component, such as an I / O device driver 124 or virtual machine 132; a request to process a network packet received from a virtual machine 132 or device external to platform 102 (such as a network node coupled to network 108) ; a request to execute a workload (e.g., process or thread) associated with a virtual machine 132, application running on platform 102, hypervisor 120 or other operating system running on platform 102; or other suitable request.

[0032] In various embodiments, processing requests may be associated with guest systems 122. A guest system may comprise a single virtual machine (e.g., virtual machine 132a or 132b) or multiple virtual machines operating together (e.g., a virtual network function (VNF) 134 or a service function chain (SFC) 136) . As depicted, various embodiments may include a variety of types of guest systems 122 present on the same platform 102.

[0033] A virtual machine 132 may emulate a computer system with its own dedicated hardware. A virtual machine 132 may run a guest operating system on top of the hypervisor 120. The components of platform logic 110 (e.g., CPUs 112, memory 114, chipset 116, and communication interface 118) may be virtualized such that it appears to the guest operating system that the virtual machine 132 has its own dedicated components.

[0034] A virtual machine 132 may include a virtualized NIC (vNIC) , which is used by the virtual machine as its network interface. A vNIC may be assigned a media access control  (MAC) address, thus allowing multiple virtual machines 132 to be individually addressable in a network.

[0035] In some embodiments, a virtual machine 132b may be paravirtualized. For example, the virtual machine 132b may include augmented drivers (e.g., drivers that provide higher performance or have higher bandwidth interfaces to underlying resources or capabilities provided by the hypervisor 120) . For example, an augmented driver may have a faster interface to underlying virtual switch 138 for higher network performance as compared to default drivers.

[0036] VNF 134 may comprise a software implementation of a functional building block with defined interfaces and behavior that can be deployed in a virtualized infrastructure. In particular embodiments, a VNF 134 may include one or more virtual machines 132 that collectively provide specific functionalities (e.g., wide area network (WAN) optimization, virtual private network (VPN) termination, firewall operations, load-balancing operations, security functions, etc. ) . A VNF 134 running on platform logic 110 may provide the same functionality as traditional network components implemented through dedicated hardware. For example, a VNF 134 may include components to perform any suitable NFV workloads, such as virtualized Evolved Packet Core (vEPC) components, Mobility Management Entities, 3rd Generation Partnership Project (3GPP) control and data plane components, etc.

[0037] SFC 136 is group of VNFs 134 organized as a chain to perform a series of operations, such as network packet processing operations. Service function chaining may provide the ability to define an ordered list of network services (e.g., firewalls, load balancers) that are stitched together in the network to create a service chain.

[0038] A hypervisor 120 (also known as a virtual machine monitor) may comprise logic to create and run guest systems 122. The hypervisor 120 may present guest operating systems run by virtual machines with a virtual operating platform (e.g., it appears to the virtual machines that they are running on separate physical nodes when they are actually consolidated onto a single hardware platform) and manage the execution of the guest operating systems by platform logic 110. Services of hypervisor 120 may be provided by virtualizing in software or through hardware assisted resources that require minimal software intervention, or both. Multiple instances of a variety of guest operating systems may be managed by the hypervisor 120. Separate platforms 102 may have separate instantiations of  a hypervisor 120.

[0039] Hypervisor 120 may be a native or bare-metal hypervisor that runs directly on platform logic 110 to control the platform logic and manage the guest operating systems. Alternatively, hypervisor 120 may be a hosted hypervisor that runs on a host operating system and abstracts the guest operating systems from the host operating system. Various embodiments may include one or more non-virtualized platforms 102, in which case any suitable characteristics or functions of hypervisor 120 described herein may apply to an operating system of the non-virtualized platform.

[0040] Hypervisor 120 may include a virtual switch 138 that may provide virtual switching and / or routing functions to virtual machines of guest systems 122. The virtual switch 138 may comprise a logical switching fabric that couples the vNICs of the virtual machines 132 to each other, thus creating a virtual network through which virtual machines may communicate with each other. Virtual switch 138 may also be coupled to one or more networks (e.g., network 108) via physical NICs of communication interface 118 so as to allow communication between virtual machines 132 and one or more network nodes external to platform 102 (e.g., a virtual machine running on a different platform 102 or a node that is coupled to platform 102 through the Internet or other network) . Virtual switch 138 may comprise a software element that is executed using components of platform logic 110. In various embodiments, hypervisor 120 may be in communication with any suitable entity (e.g., a SDN controller) which may cause hypervisor 120 to reconfigure the parameters of virtual switch 138 in response to changing conditions in platform 102 (e.g., the addition or deletion of virtual machines 132 or identification of optimizations that may be made to enhance performance of the platform) .

[0041] Hypervisor 120 may include any suitable number of I / O device drivers 124. I / O device driver 124 represents one or more software components that allow the hypervisor 120 to communicate with a physical I / O device. In various embodiments, the underlying physical I / O device may be coupled to any of CPUs 112 and may send data to CPUs 112 and receive data from CPUs 112. The underlying I / O device may utilize any suitable communication protocol, such as PCI, PCIe, Universal Serial Bus (USB) , Serial Attached SCSI (SAS) , Serial ATA (SATA) , InfiniBand, Fibre Channel, an IEEE 802.3 protocol, an IEEE 802.11 protocol, or other current or future signaling protocol.

[0042] The underlying I / O device may include one or more ports operable to communicate with cores of the CPUs 112. In one example, the underlying I / O device is a physical NIC or physical switch. For example, in one embodiment, the underlying I / O device of I / O device driver 124 is a NIC of communication interface 118 having multiple ports (e.g., Ethernet ports) .

[0043] In other embodiments, underlying I / O devices may include any suitable device capable of transferring data to and receiving data from CPUs 112, such as an audio / video (A / V) device controller (e.g., a graphics accelerator or audio controller) ; a data storage device controller, such as a flash memory device, magnetic storage disk, or optical storage disk controller; a wireless transceiver; a network processor; or a controller for another input device such as a monitor, printer, mouse, keyboard, or scanner; or other suitable device.

[0044] In various embodiments, when a processing request is received, the I / O device driver 124 or the underlying I / O device may send an interrupt (such as a message signaled interrupt) to any of the cores of the platform logic 110. For example, the I / O device driver 124 may send an interrupt to a core that is selected to perform an operation (e.g., on behalf of a virtual machine 132 or a process of an application) . Before the interrupt is delivered to the core, incoming data (e.g., network packets) destined for the core might be cached at the underlying I / O device and / or an I / O block associated with the CPU 112 of the core. In some embodiments, the I / O device driver 124 may configure the underlying I / O device with instructions regarding where to send interrupts.

[0045] In some embodiments, as workloads are distributed among the cores, the hypervisor 120 may steer a greater number of workloads to the higher performing cores than the lower performing cores. In certain instances, cores that are exhibiting problems such as overheating or heavy loads may be given less tasks than other cores or avoided altogether (at least temporarily) . Workloads associated with applications, services, containers, and / or virtual machines 132 can be balanced across cores using network load and traffic patterns rather than just CPU and memory utilization metrics.

[0046] The elements of platform logic 110 may be coupled together in any suitable manner. For example, a bus may couple any of the components together. A bus may include any known interconnect, such as a multi-drop bus, a mesh interconnect, a ring interconnect, a point-to-point interconnect, a serial interconnect, a parallel bus, a coherent (e.g., cache  coherent) bus, a layered protocol architecture, a differential bus, or a Gunning transceiver logic (GTL) bus.

[0047] Elements of the data system 100 may be coupled together in any suitable, manner such as through one or more networks 108. A network 108 may be any suitable network or combination of one or more networks operating using one or more suitable networking protocols. A network may represent a series of nodes, points, and interconnected communication paths for receiving and transmitting packets of information that propagate through a communication system. For example, a network may include one or more firewalls, routers, switches, security appliances, antivirus servers, or other useful network devices. A network offers communicative interfaces between sources and / or hosts, and may comprise any local area network (LAN) , wireless local area network (WLAN) , metropolitan area network (MAN) , Intranet, Extranet, Internet, wide area network (WAN) , virtual private network (VPN) , cellular network, or any other appropriate architecture or system that facilitates communications in a network environment. A network can comprise any number of hardware or software elements coupled to (and in communication with) each other through a communications medium. In various embodiments, guest systems 122 may communicate with nodes that are external to the datacenter 100 through network 108.

[0048] A data center, such as introduced above, may be utilized in connection with a cloud, edge, machine-to-machine, or IoT system. Indeed, principles of the solutions discussed herein may be employed in datacenter systems (e.g., server platforms) and / or devices utilized to implement a cloud, edge, or IoT environment, among other example computing environments. For instance, FIG. 2 is a block diagram 200 showing an overview of a configuration for edge computing, which includes a layer of processing referred to in many of the following examples as an “edge cloud” or “edge system” . As shown, the edge cloud 210 is co-located at an edge location, such as an access point or base station 240, a local processing hub 250, or a central office 220, and thus may include multiple entities, devices, and equipment instances. The edge cloud 210 is located much closer to the endpoint (consumer and producer) data sources 260 (e.g., autonomous vehicles 261, user equipment 262, business and industrial equipment 263, video capture devices 264, drones 265, smart cities and building devices 266, sensors and IoT devices 267, etc. ) than the cloud data center 230. Compute, memory, and storage resources which are offered at the edges in the edge cloud 210 may be  leveraged to provide ultra-low latency response times for services and functions used by the endpoint data sources 260 as well as reduce network backhaul traffic from the edge cloud 210 toward cloud data center 230 thus improving energy consumption and overall network usages among other benefits.

[0049] Compute, memory, and storage are scarce resources, and generally decrease depending on the edge location (e.g., fewer processing resources being available at consumer endpoint devices, than at a base station, than at a central office) . However, the closer that the edge location is to the endpoint (e.g., user equipment (UE) ) , the more that space and power is often constrained. Thus, edge computing attempts to reduce the resources needed for network services, through the distribution of more resources which are located closer both geographically and in network access time. In this manner, edge computing attempts to bring the compute resources to the workload data where appropriate, or bring the workload data to the compute resources.

[0050] Edge gateway servers may be equipped with pools of memory and storage resources to perform computation in real-time for low latency use-cases (e.g., autonomous driving or video surveillance) for connected client devices. Or as an example, base stations may be augmented with compute and acceleration resources to directly process service workloads for connected user equipment, without further communicating data via backhaul networks. Or as another example, central office network management hardware may be replaced with standardized compute hardware that performs virtualized network functions and offers compute resources for the execution of services and consumer functions for connected devices. Within edge computing networks, there may be scenarios in services which the compute resource will be “moved” (e.g., migrated) to the data, as well as scenarios in which the data will be “moved” to the compute resource. Or as an example, base station compute, acceleration and network resources can provide services in order to scale to workload demands on an as needed basis by activating dormant capacity (subscription, capacity on demand) in order to manage corner cases, emergencies or to provide longevity for deployed resources over a significantly longer implemented lifecycle.

[0051] FIG. 3 illustrates operational layers among endpoints, an edge cloud, and cloud computing environments. Specifically, FIG. 3 depicts examples of computational use cases 305, utilizing the edge cloud 210 among multiple illustrative layers of network  computing. The layers begin at an endpoint (devices and things) layer 300, which accesses the edge cloud 210 to conduct data creation, analysis, and data consumption activities. The edge cloud 210 may span multiple network layers, such as an edge devices layer 310 having gateways, on-premise servers, or network equipment (nodes 315) located in physically proximate edge systems; a network access layer 320, encompassing base stations, radio processing units, network hubs, regional data centers (DC) , or local network equipment (equipment 325) ; and any equipment, devices, or nodes located therebetween (in layer 312, not illustrated in detail) . The network communications within the edge cloud 210 and among the various layers may occur via any number of wired or wireless mediums, including via connectivity architectures and technologies not depicted.

[0052] Examples of latency, resulting from network communication distance and processing time constraints, may range from less than a millisecond (ms) when among the endpoint layer 300, under 5 ms at the edge devices layer 310, to even between 10 to 40 ms when communicating with nodes at the network access layer 320. Beyond the edge cloud 210 are core network 330 and cloud data center 340 layers, each with increasing latency (e.g., between 50-60 ms at the core network layer 330, to 100 or more ms at the cloud data center layer) . As a result, operations at a core network data center 335 or a cloud data center 345, with latencies of at least 50 to 100 ms or more, will not be able to accomplish many time-critical functions of the use cases 305. Each of these example latency values are provided for purposes of illustration and contrast; it will be understood that the use of other access network mediums and technologies may further reduce the latencies. In some examples, respective portions of the network may be categorized as “close edge” , “local edge” , “near edge” , “middle edge” , or “far edge” layers, relative to a network source and destination. For instance, from the perspective of the core network data center 335 or a cloud data center 345, a central office or content data network may be considered as being located within a “near edge” layer ( “near” to the cloud, having high latency values when communicating with the devices and endpoints of the use cases 305) , whereas an access point, base station, on-premise server, or network gateway may be considered as located within a “far edge” layer (“far” from the cloud, having low latency values when communicating with the devices and endpoints of the use cases 305) . It will be understood that other categorizations of a particular network layer as constituting a “close” , “local” , “near” , “middle” , or “far” edge may be based  on latency, distance, number of network hops, or other measurable characteristics, as measured from a source in any of the network layers 300-340.

[0053] The various use cases 305 may access resources under usage pressure from incoming streams, due to multiple services utilizing the edge cloud. To achieve results with low latency, the services executed within the edge cloud 210 balance varying requirements in terms of: (a) Priority (throughput or latency) and Quality of Service (QoS) (e.g., traffic for an autonomous car may have higher priority than a temperature sensor in terms of response time requirement; or, a performance sensitivity / bottleneck may exist at a compute / accelerator, memory, storage, or network resource, depending on the application) ; (b) Reliability and Resiliency (e.g., some input streams need to be acted upon and the traffic routed with mission-critical reliability, where as some other input streams may be tolerate an occasional failure, depending on the application) ; (c) Physical constraints (e.g., power, cooling and form-factor, etc. ) ; and (d) contractual agreements (e.g., Service Level Agreements (SLA) or Service Level Objectives (SLO) ) .

[0054] The end-to-end service view for these use cases involves the concept of a service-flow and is associated with a transaction. The transaction details the overall service requirement for the entity consuming the service, as well as the associated services for the resources, workloads, workflows, and business functional and business level requirements. The services executed with the “terms” described may be managed at each layer in a way to assure real time, and runtime contractual compliance for the transaction during the lifecycle of the service. When a component in the transaction is missing its agreed to Service Level Agreement (SLA) , the system as a whole (components in the transaction) may provide the ability to (1) understand the impact of the SLA violation, and (2) augment other components in the system to resume overall transaction SLA, and (3) implement actions to remediate.

[0055] Thus, with these variations and service features in mind, edge computing within the edge cloud 210 may provide the ability to serve and respond to multiple applications of the use cases 305 (e.g., object tracking, video surveillance, connected cars, etc. ) in real-time or near real-time, and meet ultra-low latency requirements for these multiple applications. These advantages enable a whole new class of applications (e.g., Virtual Network Functions (VNFs) , Function as a Service (FaaS) , Edge as a Service (EaaS) , standard processes, etc. ) , which cannot leverage conventional cloud computing due to latency or other limitations.

[0056] However, with the advantages of edge computing comes the following traditional caveats. The devices located at the edge are often resource constrained and therefore there is pressure on usage of edge resources. Typically, this is addressed through the pooling of memory and storage resources for use by multiple users (tenants) and devices. The edge may be power and cooling constrained and therefore the power usage needs to be accounted for by the applications that are consuming the most power. There may be inherent power-performance tradeoffs in these pooled memory resources, as many of them are likely to use emerging memory technologies, where more power requires greater memory bandwidth. Likewise, improved security of hardware and root of trust trusted functions are also required because edge locations may be unmanned and may even need permissioned access (e.g., when housed in a third-party location) . Such issues may be magnified in the edge cloud 210 in a multi-tenant, multi-owner, or multi-access setting, where services and applications are requested by many users, especially as network usage dynamically fluctuates and the composition of the multiple stakeholders, use cases, and services changes.

[0057] At a more generic level, an edge computing system may be described to encompass any number of deployments at the previously discussed layers operating in the edge cloud 210 (network layers 300-340) , which provide coordination from client and distributed computing devices. One or more edge gateway nodes, one or more edge aggregation nodes, and one or more core data centers may be distributed across layers of the network to provide an implementation of the edge computing system by or on behalf of a telecommunication service provider ( “telco” , “TSP” , or communication service providers (CmSP) ) , internet-of-things service provider, cloud service provider (CSP) , enterprise entity, or any other number of entities. Various implementations and configurations of the edge computing system may be provided dynamically, such as when orchestrated to meet service objectives.

[0058] Consistent with the examples provided herein, a client compute node may be embodied as any type of endpoint component, device, appliance, or other thing capable of communicating as a producer or consumer of data. Further, the label “node” or “device” as used in the edge computing system does not necessarily mean that such node or device operates in a client or agent / minion / follower role; rather, any of the nodes or devices in the edge computing system refer to individual entities, nodes, or subsystems which include  discrete or connected hardware or software configurations to facilitate or use the edge cloud 210.

[0059] As such, the edge cloud 210 is formed from network components and functional features operated by and within edge gateway nodes, edge aggregation nodes, or other edge compute nodes among network layers 310-330. The edge cloud 210 thus may be embodied as any type of network that provides edge computing and / or storage resources which are proximately located to radio access network (RAN) capable endpoint devices (e.g., mobile computing devices, IoT devices, smart devices, etc. ) , which are discussed herein. In other words, the edge cloud 210 may be envisioned as an “edge” which connects the endpoint devices and traditional network access points that serve as an ingress point into service provider core networks, including mobile carrier networks (e.g., Global System for Mobile Communications (GSM) networks, Long-Term Evolution (LTE) networks, 5G / 6G networks, etc. ) , while also providing storage and / or compute capabilities. Other types and forms of network access (e.g., Wi-Fi, long-range wireless, wired networks including optical networks, etc. ) may also be utilized in place of or in combination with such 3GPP carrier networks. Indeed, multiple different wireless networks may be used concurrently, for instance, in association with a multi-access protocol, such as discussed herein.

[0060] In FIG. 4, various client endpoints 410 (in the form of mobile devices, computers, autonomous vehicles, business computing equipment, industrial processing equipment) exchange requests and responses that are specific to the type of endpoint network aggregation. For instance, client endpoints 410 may obtain network access via a wired broadband network, by exchanging requests and responses 422 through an on-premise network system 432. Some client endpoints 410, such as mobile computing devices, may obtain network access via a wireless broadband network, by exchanging requests and responses 424 through an access point (e.g., a cellular network tower) 434. Some client endpoints 410, such as autonomous vehicles may obtain network access for requests and responses 426 via a wireless vehicular network through a street-located network system 436. However, regardless of the type of network access, the TSP may deploy aggregation points 442, 444 within the edge cloud 210 to aggregate traffic and requests. Thus, within the edge cloud 210, the TSP may deploy various compute and storage resources, such as at edge aggregation nodes 440, to provide requested content. The edge aggregation nodes 440 and  other systems of the edge cloud 210 are connected to a cloud or data center 460, which uses a backhaul network 450 to fulfill higher-latency requests from a cloud / data center for websites, applications, database servers, etc. Additional or consolidated instances of the edge aggregation nodes 440 and the aggregation points 442, 444, including those deployed on a single server framework, may also be present within the edge cloud 210 or other areas of the TSP infrastructure.

[0061] Even with advancements in wireless communication technologies, such as 5G and beyond, it is expected that no single access technology will be able to alone meet the similarly advancing future demands of human and machine communications, such as between client or user endpoints and edge systems or data center systems, such as the above. Multi-access traffic management may be vital for addressing ever increasing performance requirements of current and future applications, including edge applications. For instance, emerging applications such as robotics and remote control may require extremely low packet loss (e.g., loss ratios of less than 10-12) and low latency (e.g., less than 1ms) , among other example factors. However, driving more data through a scarce and finite radio spectrum present a challenge to such advancements and a single access technology may not be able to deliver the needed data rates of some present and future applications. As an example, consider N available (wireless) connections between a client and edge, each of which has some data rate (R) and packet loss rate (P) . In such cases, seamlessly combining multiple independent connections to deliver user data may result in linear improvement in data rate and exponential improvement in reliability. However, achieving the maximum data rate (400Mbps) and the highest reliability (10-12) at the same time may not be possible using traditional approaches. Hence, the multi-access challenge is to manage data traffic across all available access networks and meet diverse application requirements in rate, latency, and reliability.

[0062] Further complicating the question is that different applications may have different requirements. For example, a background data-centric application such as email or drop box may not care about delay or throughput, and therefore may prefer a Wi-Fi connection with lower cost. In another example, an ultra reliable and low latency communications (URLLC) application such as robot control and collision avoidance may require very high reliability and low latency, and therefore may prefer sending duplicated  packets over multiple connections simultaneously. Also, a real-time high-definition video streaming application may expect high throughput, and therefore may prefer splitting traffic over multiple connections through bandwidth aggregation, among other examples.

[0063] Multi-access traffic management may be performed end-to-end according to multi-access protocols (e.g., Generic Multi-Access (GMA) protocol) agreed upon and used between a client and server / network. A multi-access protocol may provide for flexible selection of network paths and leverage network intelligence and policies to dynamically adapt traffic distribution across selected paths under changing network / link conditions. In the example of GMA, the multi-access protocol stack may include two sublayers: a convergence sublayer and adaptation sublayer. The convergence sublayer may perform multi-access specific tasks such as access (path) selection, multi-link (path) aggregation, splitting / reordering, lossless switching, keep-alive, and probing. GMA may encode additional control information at this sublayer, including key, sequence number, and time stamp. The adaptation sublayer may perform functions to handle tunneling, network layer security, and network address translation (NAT) . Existing protocols, including user datagram protocol (UDP) and IP security (IPSec) , can be reused in GMA and other example multi-access protocols.

[0064] In some implementations, logic on a client or server utilized for managing multi-access client-server connectivity may be capable of intelligently distributing traffic load across available access links to make more efficient radio resource usage and take better advantage of multi-access connectivity. For instance, logic may consider data describing connectivity conditions of different access networks in determining multi-access traffic distribution. For example, the end-to-end packet delay measurements can be used to identify which access provides better latency performance. When serving quality of service (QoS) flows requiring high reliability, packet drop ratio measurements may give a good indication of whether redundant transmission over multiple access networks is beneficial. In addition to end-to-end packet statistics, radio access network (RAN) measurements can indicate network quality degradation caused by deteriorating radio link quality or access network congestion, in a timely fashion. Example RAN measurements include radio link quality indicators, such as reference signal received power (RSRP) , reference signal received quality (RSRQ) , and received signal strength indicator (RSSI) , and access network utilization levels, such as physical resource blocks (PRB) usage for 3GPP access and basic service set (BSS) load for the wireless local area  network (WLAN) , among other examples.

[0065] FIG. 5 is a simplified block diagram 500 showing an example multi-access traffic management framework, where traffic management logic (e.g., implemented in a software-based client or server on an endpoint, edge, or server device) intelligently determines traffic management configurations and informs how to route packets over multiple paths and priority handling for different QoS flows. In this example, the on-device logic may be implemented as multi-access (MA) intelligence logic 505, for instance, for an edge device. Application QoS data 510 may be received, as well as network data 515. Access link data 520 may be obtained (e.g., measuring attributes of various access networks (e.g., 535, 540, 545, etc. ) available for use in the connection) to determine traffic management configurations 525 for a connection between a device and one or multiple other devices (e.g., a client devices or user endpoints (UEs) (e.g., 530a-e) ) . and edge, client and server, etc. ) . The logic may perform packet filtering and flow classification to categorize incoming data traffic into different QoS classes, based on for example ETSI / MEC traffic management interfaces (APIs) , or other examples. Traffic shaping and reliability enhancement may also be provided through the logic to manage QoS classes with different priority, including rate control and jitter control. In addition, a network coding engine may be applied to high reliability traffic flows to efficiently exploit multipath diversity. Further, MA intelligence logic 505 may perform multi-access packet scheduling 550 to decide which portion traffic of a multi-connectivity data flow will be routed over the available connection paths. This selection may be based on end-to-end measurements from the convergence sublayer or / and lower-layer measurements from the access networks 535, 540, 545 (e.g., RAN) , among other examples.

[0066] Through multi-access management, a device can simultaneously connect to multiple access networks (e.g., Wi-Fi, LTE, 5G, DSL, and SATCOM (Satellite Communications) . In some implementations, these multiple connections may be seamlessly combined below the transport layer (L4) to improve quality of experience for applications that do not have such built-in multi-path capabilities. Multi-access convergence protocols, such as GMA, may be utilized to facilitate such example implementations and manage data traffic across multiple network paths.

[0067] Turning to FIG. 6, a diagram 600 is shown of an example protocol stack for a multi-access management service framework. The user plane protocol stack may include two  layers: a convergence layer 605 and an adaptation layer 610a-c. The convergence layer 605 is responsible for multi-access operations, including multi-link (path) aggregation, splitting / reordering, lossless switching / retransmission, etc. The convergence layer 605 operates on top of the adaptation layer 610. From the perspective of a transmitter, a user payload 615 (e.g., IP packet) is processed by the convergence layer 605 first, and then by the adaptation layer 610 before being transported over a delivery connection. From the receiver's perspective, an IP packet received over a delivery connection is processed by the adaptation layer first, and then by the convergence layer.

[0068] GMA implements an encapsulation protocol (e.g., GMA Encapsulation (GMAE) ) for use in encoding additional control information (e.g., Timestamp, Sequence Number, etc. ) to support multi-access operations for the convergence layer. In one example, a UDP-based GMA control protocol may be implemented for the convergence layer, along with corresponding enhancements to the GMA encapsulation protocol. The GMA protocol may operate between endpoints that have been configured to use GMA through MAMS management messages [MAMS] or other management logic. From the perspective of applications, the GMA protocol serves as a multi-path tunneling protocol operating below the network layer (L3) , and therefore can support any legacy single-path transport protocol (e.g., TCP, UDP, QUIC, etc. ) . From the perspective of an underlay access network, GMA is a light-weight transport protocol for multi-path operation, removing unnecessary complexity and overhead (e.g., end-to-end encryption, congestion control, reliable transmission, etc. ) as seen in a modern transport protocol (e.g., QUIC, etc. ) . Moreover, GMA can be extended to support advanced multi-path operations (e.g., network coding, network-based traffic steering, in-band QoS monitoring, etc. ) , among other example features.

[0069] Turning to the simplified block diagram 700 of FIG. 7, an example client device 530 (e.g., smartphone, laptop, robot, drone, etc. running one or more applications, microservices, or other programs 770) may connect to another device 705 (e.g., a gateway, server, edge device, host system, etc. ) via both Wi-Fi (756) and cellular data (760) (e.g., 5G, LTE, etc. ) connections, operating as a delivery connection. Through the multi-access protocol a virtual connection 710 (e.g., IPv4, IPv6, or Ethernet) may be established between the client 530 and the other device 705 (e.g., a host server hosting one or more service 780) . In this example, the virtual connection 710 serves as the anchor, providing the IP address and  connectivity for end-to-end Internet access, and delivery connections provide multiple paths between client 530 and the other device 705 to support multi-access traffic management. As shown in the example of FIG. 7, the client 530 may include a virtual connection endpoint 720, a convergence layer endpoint 725, and multiple adaptation layer endpoints 730a-b (e.g., corresponding to the access or delivery connections (e.g., LTE 755 and WiFi 760) ) . Likewise, the gateway or server device (e.g., 705) may include a virtual connection endpoint 735, a convergence layer endpoint 740, and adaptation layer endpoints (e.g., LTE adaptation layer endpoint 745a and WiFi adaptation layer endpoint 745b, etc. ) .

[0070] In some implementations, a virtual connection 710 may be implemented as a Multi-Access Protocol Data Unit (MA-PDU) connection (e.g., as specified in 3GPP ATSSS) . Per-packet aggregation allows the MA-PDU connection to use the combined bandwidth of multiple delivery connections (e.g., 755, 760) . Moreover, packets may be duplicated over multiple connections to achieve high reliability and low latency, where duplicated packets are eliminated by the receiving side. Such multi-access traffic management may involve an additional control message exchange between the two devices (e.g., 530, 705) .

[0071] In one example, UDP may be used as the adaptation layer protocol. FIGS. 8A-8B show example UDP-based GMA user-plane 800a and control-plane protocol stacks 800b. UDP tunnelling is performed by selecting ports at the client from the dynamic port range, and are configured at gateway and provided to clients through MAMS messages (e.g., MX UP Setup Config [MAMS] ) . A GMA encapsulation format 800c is shown in FIG. 8C, where a GMA header 805 is nested within an IP header 815 (e.g., of the virtual connection) and a UDP header 810 (e.g., of the adaptation layer) and encapsulates a payload 820 (e.g., which may include one or more additional protocol headers) . The GMA header 805 may include a mandatory "Flags" field (e.g., in the first two bytes) . Table 1 illustrates example Flags field bit definitions in accordance with one example implementation (e.g., wherein bit 0 is the most significant bit and bit 15 is the least significant bit) . The receiver may first decode the Flags field to determine the length of the GMA header, and then decode optional fields accordingly. Table 2 illustrates example optional fields in one example implementation of a GMA header:

[0072] TABLE 1: Example Flag Field Bits

[0073] TABLE 2: Example GMA Header Fields

[0074] The receiver may first decode the Flags field to determine the length of the GMA header, and then decode optional fields accordingly. The fields may be transmitted in regular network byte order and appear in the order of their corresponding flag bits. If a flag bit is not set, the corresponding optional field is absent. FIG. 8D shows an example GMA header format 800d with the example optional fields (such introduced in Table 2) . Some GMA header fields (e.g., Client ID, Flow ID, and PPP) may be designed to support fine granular packet classification. GMA header fields (unlike IP header fields) do not change regardless of how a GMA PDU is delivered, since they are encapsulated as part of UDP payload. Therefore, an intermediate node (e.g., a router, Access Point, Base Station, etc. ) can perform active queue management (AQM) based on these GMA header fields directly. Other GMA header fields (e.g., Delivery SN, Flow SN, and Timestamp) may be designed to support multi-path traffic management. For example, Flow SN allows reordering at the receiver when a flow is split over multiple connections. In the meantime, Delivery SN is needed for packet loss measurement per delivery connection, and Timestamp allows in-band one-way-delay (OWD) measurement, which can then be used to detect congestion and buffer overflow at intermediate nodes. Moreover, Delivery SN and Flow SN can be used to support the Fast Packet Loss Detection mechanism for minimizing multi-path reordering delay, among other examples.

[0075] FIG. 8E shows an example packet format with a header including a GMA header 805 (e.g., nested within IP header 810 and TCP header 815 (and, in this example, Ethernet header 822) ) and a payload 820. The payload 820, in this example, includes a TCP / IP packet (e.g., generated by a client application or host service) , which includes an IP header 825, a TCP header 830, and payload 835 encapsulated by the GMA header 805, among other  examples. A GMA payload, in some instances, may be protected by a symmetric key cipher, (e.g., AES256-GCM) . A GMA receiver may use the Client ID field to determine the corresponding key for decryption. Moreover, the GMA payload may be selectively encrypted, with the GMA header authenticated (e.g., but not encrypted) , among other examples.

[0076] FIG. 9 is a simplified block diagram 900 illustrating an example conventional GMA topology. An example client device 530 is shown that includes user space (and operating system) 905 and kernel space 910. Likewise, a server system 705 is provided that includes respective user space (and operating system) 920 and kernel space 925. The client 530 and server 705 may include respective GMA service logic (e.g., 930, 935) to enable multi-access communication between the client 530 and server 705 over various wireless access networks (e.g., 540, 545) utilizing GMA. The service logic (e.g., 930, 935) may implement all or a portion of the multi-access intelligence for the device. In one example, the GMA service (e.g., 930, 935) may be implemented as an application running on the client 530 and server (or host) 705. The client 530, in this example may execute one or more applications (e.g., 915) and data from the application 915 in the client device 530 may be send to kernel space 910 of the client 530 using a kernel virtual networking device (e.g., a TUN device) 940 and forwarded to the user space GMA service 930 to be repackaged and forwarded out through one or more of the delivery networks (e.g., wireless WiFi 540 and / or 5G 545) in accordance with a particular mode (e.g., redundant mode, aggregation mode, single-wireless-access mode) . When the packets arrive over these delivery networks to the server node 705, the packets are parsed and transferred from server kernel space 925 to server user space 920 where the GMA service application (e.g., 935) processes the received packet to perform GMA handling, where the data is then sent back to the kernel again (e.g., sent to kernel TUN device 945) and then ultimately to the server’s data service 950 run in server user space 920 (where the data service 950 is the intended consumer or recipient of the data of the client application 915) .

[0077] In the example of FIG. 9, the transport of a packet using GMA involves the packet data twice traversing the kernel-user space boundary of not only the client 530, but also the server 705. Such an implementation can be inefficient and heavily consumes system resources when GMA is used to establish a GMA connection for the sending of packets between the client 530 and host 705. Further, for host, server, edge, gateways, and other example systems that are configured to concurrently connect to multiple clients, the overhead  associated with handling GMA packets may be particularly burdensome and limit the use of such systems in many applications. For instance, while CPU usage of one GMA client main thread at 100%the speed of upload / download can reach 2.5Gbps, the CPU usage of the corresponding GMA server is 180%. Such heavy resource costs may be particularly limiting to edge devices and other systems, which may be resource-light, among other example considerations.

[0078] In an enhanced implementation, a network interface device (e.g., a smart NIC, infrastructure processing unit (IPU) , data processing unit (DPU) , etc. ) may be utilized to offload GMA packet handling tasks from server, edge, host, and gateway devices to make multi-connection applications more feasible. For example, a network interface device may be provided and coupled to a server system, the network interface device utilizing its internal processor (e.g., an internal CPU) to execute a GMA service in user space together with an implementation of a TCP / IP stack in user space to offload GMA work from the server host’s CPU resources. In some implementations, client-side enhancement may also be implemented, such as flexible mode selection in the client for building GMA connections between the client and server, and client kernel GMA logic to handle GMA package sending in the client to reduce kernel / user space switching within the client, among other examples. In some implementations, an application programming interface (API) may be provided that is associated with the network interface device and configured to allow an application, operating system, or other controller to discover capabilities of the network interface device (e.g., including its capabilities to offload GMA work from a host processor) and request use of the network interface device to perform such offloading, among other example implementations.

[0079] Turning to FIG. 10, a simplified block diagram 1000 is shown illustrating an example network interface device 1005, such as an infrastructure processing unit (IPU) , smart network interface controller (smart NIC) , or other networking device posing networking interfaces, networking circuitry, memory, and microcontroller (e.g., CPU) . In this example, a network interface device 1005 is coupled to host hardware 1004, and a device 1050 coupled via an interface 1006 (e.g., a PCIe interface, a CXL interface, etc. ) . The network interface device 1005, host hardware 1040, device 1050, and interface 1006 may be implemented in circuitry. For example, the network interface device 1005, host hardware 1004, device 1050, and interface 1006 may be communicably coupled components of a compute node, server blade,  server rack, or any other computing hardware. The host hardware 1004 includes at least one processor circuit and memory (each not pictured) . network interface device 1005 also includes at least one processor 1020, memory 1014, an accelerator 1025, and a network interface device 1016 (e.g., a wired and / or wireless Ethernet network interface) . The network interface device 1016 may provide an interface to other devices via a network (e.g., a local area network (LAN) , a wide area network (WAN) , the Internet, etc. ) and may support the Institute of Electrical and Electronics Engineers (IEEE) suite of Ethernet standards (e.g., 802.1, 802.3, etc. ) . The device 1050 may be any type of peripheral device, such as a PCIe-compatible device. Although the PCIe interface 1006 is used as a reference example of an interface, other interfaces may be used in the operating environment. For example, a Compute Express  (CXL) interface, a peripheral component interconnect (PCI) , interface, a universal serial bus (USB) interface, a serial peripheral interconnect (SPI) , an integrated interconnect (I2C) , or a Universal Chiplet Interconnect Express (UCIe) interface may be used instead of the PCIe interface 1006, among other examples. Therefore the device 1050 may be a USB device, PCI device, PCIe device, CXL device, UCIe device, I2C, and / or an SPI device and provide I / O resources (e.g., for virtualization) in accordance with its corresponding I / O protocol or technology. The network interface device 1005 further includes a direct memory access (DMA) engine to facilitate DMA transactions, among other example features.

[0080] The host hardware 1004 may be representative of one or more processors and memory to execute one or more virtual machines (VMs) , such as VM 1008a, VM 1008b, and VM 1008c (or other containers or other isolated domains) . The network interface device 1005 includes one or more programmable or fixed function processors to perform offload of operations that could have been performed by processors of the host hardware 1004. The network interface device 1005 may therefore be considered as an “offload device. ” More generally, the network interface device 1005 may perform virtual switch operations, manage storage transactions (e.g., compression, cryptography, virtualization) , and manage operations performed on other IPUs, smart NICs, compute nodes, servers, and / or devices.

[0081] An example network interface device 1005, such as shown in the example of FIG. 10, may be coupled to a host server node and leveraged to accelerate the data flow associated with the GMA protocol, with offloaded TCP / IP protocol logic and a flexible GMA (or FlexGMA) service implemented in user space of the network interface device. For instance,  turning to the simplified block diagram 1100 of FIG. 11, GMA service 1105 may be executed using the CPU processor (or SOC processor cores) 1020 of the network interface device 1005. Accordingly, the wireless data that is tagged with GMA protocol can be sorted, parsed, merged in the SOC 1020 of the network interface device 1005. As GMA data handling can generally consume large amounts of CPU resource for large data accesses, an optimized FlexGMA service 1105 implemented in the network interface device can assist the host 705 by freeing up its CPU resources for the data services (e.g., 950) it provides (e.g., on unpacked GMA payloads) . In one example implementations, such as illustrated in FIG. 11, a network interface device-executed GMA service 1105 may be combined with Data Plane Development Kit (DPDK) or other technology to implement TCP / IP packet processing at the network interface device and enable an interface (e.g., the DPDK memif interface) at the frontend of the network interface device (e.g., instead of a TUN device) to achieve high serviceability and high-performance throughput. By so doing, host / server node CPU resources may be saved and reserved for handling core customer application tasks. Further, by providing full user space GMA service and TCP / IP processing at the network interface device, accelerated network throughput may be utilized when implementing multi-access solutions, such as GMA, among other example applications and benefits.

[0082] Continuing with the example of FIG. 11, when an application 915 executed on a client device (e.g., 530) requests to build a connection and send one or more messages to a host 705 (e.g., associated with a service 950 executed on the host) , the application 915 may call a GMA mode selection (e.g., from a corresponding defined API) from the GMA service 930 in the client system 530. Accordingly, a packet that is to carry the messages is wrapped in kernel space 910 of the client 530 by a GMA bond service 1120 run in client kernel space. The GMA bond service 1120 may be a kernel space service on the client configured to handle packets between the TUN device 940 and the various wireless access interfaces (e.g., a WiFi interface 1140, a 5G interface 1145, etc. ) . While the FlexGMA service 930 of the client operates in the control plane, the GMA bond service 1120 operates in the data plane. In some implementations, the GMA bond service 1120 handles data aggression / splitting (e.g., in aggregation mode) , redundant packet handling (e.g., in redundancy mode) , or interface switching to select a specific one of the multiple available wireless deliver networks (for steering) in kernel space. In such implementations, there may be no user space and kernel  space switches for data handling in GMA protocol phase, among other example implementations.

[0083] When a multi-access request (e.g., a GMA request) is generated from the client 530 and sent out to the host server 705through one of the available wireless delivery networks (e.g., WiFi 545, 5G 540, etc. ) , the packets arrive firstly at the network interface device 1005. In one example, network acceleration hardware 1025 of the network interface device (e.g., implemented in an FPGA) will inspect the packet and determine that the packet (incorporating a GMA package) should be passed for GMA processing using the CPU 1020 (e.g., in an IPU SOC) of the network interface device 1005 based on the forwarding logic of the network accelerator 1025. The packets may then be forwarded to the TCP / IP stack logic 1110 (e.g., DPDK) executed in the CPU 1020 and then for further handling by the GMA service 1105 executed in the CPU 1020. When the network interface device NIC interface 1130 receives the packet, it may call the TCP / IP stack logic 1110 (e.g., call DPDK Accelerated Network Stack (ANS) ) to parse the TCP / IP packet header components and then send on the data to the GMA service logic 1105 to parse the GMA protocols, including identifying a particular mode (e.g., Redundant, Aggregation, or Single-Wireless-Access mode, etc. ) to apply for the connection. For instance, in accordance with the mode identified in the GMA header of the packet (e.g., by the GMA header Flow ID field value) , the GMA service 1105 may process the data packet to be split, merged, or passed through without any further handling according to the mode selection in GMA header. Meanwhile the socket information and mode ID for the connection between the client application 915 and the host 705 may be stored in a socket database (DB) in or associated with the GMA service 1105. The socket DB may be used to generate or handle corresponding response packets generated by and sent from the host 705 back to the client 530. After the GMA service 1005 parses and processes the GMA header information, the GMA service 1005 may move the packet to the GMA frontend 1130, where the data will be prepared to be sent over the interface 1006 coupling the network interface device to the host (e.g., by encapsulating the data into a virtIO-net packet and sending this packet out to the server host 705 through a FPGA VF / FP) , among other examples.

[0084] Similar to the sending of a packet from a client to a host system over an network interface using GMA, when a GMA packet is to be sent (e.g., as a response or rely) from the server to the client, the packet is sent down to the network interface device (e.g.,  with virtIO-net format to the GMA frontend) , the data will be wrapped using the GMA service 1105 according to GMA protocol to add a GMA header (e.g., including mode information to identify whether Redundant, Aggregation, or Single-wireless-access mode should be applied to the data) . The network interface device TCP / IP logic (e.g., DPDK-ANS) may be called again for re-packaging the data (with GMA header) (e.g., based on a NIC interface packet header) . After encapsulation, the packet is then send out to client through the network interface device backend 1135 over the one or more wireless delivery networks (e.g., 540, 545, etc. ) .

[0085] As introduced above, multiple multi-access modes may be applied to a connection, such as identified in a GMA header of a packet. In some implementations, three modes are supported: Redundant mode, Aggregation mode, and Single-wireless-access mode. In Redundant mode, for the data downlink path (from server to client) , the GMA service of the network interface device (e.g., an IPU) will encapsulate a GMA header on an existing IP packet, and use its TCP / IP stack (e.g., through a call to DPDK-ANS) for secondary packaging (e.g., NIC interface packet header) . This packet is then duplicated and sent to two or more of a client’s wireless access endpoints (e.g., to each of the Wi-Fi client endpoint 1140 and the 5G client endpoint 1145) to send duplicate copies of the packet over multiple delivery networks from the network interface device to the client. In the case of the uplink path (from client to server) , multiple redundant copies of a packet are sent from the client to the network interface device and the GMA service in the network interface device may split (or remove) the packet header of GMA, and eliminate the redundant GMA packet copies upon successful reception.

[0086] In the case of Aggregation mode, for the downlink path (from server to client) , the GMA service in the network interface device encapsulates a GMA header on the existing IP packet (from the server host) , and may split the traffic (e.g., using a round robin algorithm) to use different delivery networks (e.g., a Wi-Fi and cellular network) at the same time to transmit the packet. Accordingly, the network interface device may utilize its TCP / IP stack logic (e.g., through a call to DPDK-ANS) for secondary packaging (NIC interface packet header) and send the packet to the client’s Wi-Fi and 5G endpoints. In the case of the uplink path (from client to server) , packet portions are received at the network interface device over multiple different delivery networks (e.g., WiFi and 5G) , and the GMA service of the network interface device splits the packet header of GMA and aggregates and merges the packet  segments received from the Wi-Fi and 5G connections, among other examples.

[0087] In the case of the Single wireless access mode, for the downlink path (from server to client) , the GMA service of the network interface device encapsulates a GMA header on the existing IP packet, then call the TCP / IP stack 1110 (e.g., DPDK-ANS) for secondary packaging (NIC interface packet header) before sending the packet on one of the delivery networks (e.g., WI-FI or 5G) accordingly. In the uplink direction (from client to server) , the GMA service in the network interface device splits the packet header of GMA, identifies the single wireless access mode packet, and then forwards the packet to the host (e.g., over interface 1006) .

[0088] FIG. 12 is a simplified block diagram 1200 of an example IPU 1005 including FPGA-based acceleration hardware and an SOC processing device. Using the processor 1020 of the IPU, network service and applications can be offloaded for execution on the SOC of the IPU, including GMA protocol service logic 1105. In one example, the GMA service 1105 may be implemented as a FlexGMA service in the IPU as a DPDK-based user space service following the GMA protocol to accelerate the multi-access network logic in the IPU. As shown in the example of FIG. 12, components may include routing logic and / or data structures (e.g., flow table 1205) used by the FPGA-based accelerator 1025 to determine, for packets received at the IPU 1005, whether to forward the packet to the SOC 1020 or up to the host directly (over interface 1006) . For instance, the accelerator 1025 may inspect the packet to detect the presence of a GMA flag at ingress and forward the GMA-compliant packets to SOC side. The accelerator 1025 may cause the SOC-based GMA logic 1105 to be bypassed when an incoming packet is non-GMA or non-compliant. The backend 1135 may implement the NIC interface of the IPU device 1005, in one example using a DPDK Poll Mode Driver (PMD) driver to handle the packet receiving and sending with the external network through the FPGA accelerator 1025. The TCP / IP protocol stack executed at the SOC 1020 may be implemented using DPDK-ANS and be responsible for encapsulation and removal of headers from the packet according the TCP / IP protocol.

[0089] Continuing with the example of FIG. 11, the frontend 1130 serves as the interface to connect the IPU 1005 (e.g., through the FPGA accelerator 1025) and to a host and may handle the packet with virtIO-net protocol, for instance, to enable virtualization (e.g., with one or more VMs and corresponding services or microservices executed on the host) . In  one example, a shared memory packet interface (e.g., a memif interface) is created to share memory with FlexGMA service component 1105 for data transactions. The GMA service may be implemented as a FlexGMA service 1105 and serves as the core logic executed within the IPU for handling GMA data flows. In one example implementation, the GMA service may be a software-based engine implemented based on DPDK 1210 (or another example platform) . The GMA service 1105 may communicate with backend 1135 and handle packet transactions between the GMA service 1105 and the backend module 1135. The GMA service 1105 may also handle calls to the DPDK-ANS stack 1110 to parse TCP / IP protocol of received packets. The GMA service 1105 may manage the connection information between host and various client applications using the socket DB 1220 and handle the GMA-compliant packets with GMA protocol, including the merging and splitting of data (e.g., in accordance with the identified GMA mode to be applied) . Further, the GMA service 1105 may communicate with the frontend 1130 and handle packet transactions between the GMA service 1105 and frontend 1130 through memory sharing over the memif interface (e.g., using shared memory in memory of the host or the network interface device) .

[0090] Using a FlexGMA service, multiple different GMA modes may be supported for wireless acceleration using an enhanced network interface device. Turning to the examples of FIGS. 13A-15, to select a mode, an application (e.g., 915) executed on a respective one of the clients (e.g., 530) may call an API of the client GMA service 930 to build a respective connection to the server host 705. Using the API call, the application selects one of the available modes and sends the application’s network socket information as a control credit to the client’s GMA service logic. The client GMA service 930 may then make an I / O system call (e.g., ioctl) to the GMA bond service 1120 in the kernel of the client 530 to send the control credit to the GMA bond service for binding a TUN device 940 to one or more of the delivery network interfaces (e.g., Wi-Fi interface 1140 and 5G interface 1145) . On the remote server side, the connection information along with GMA mode information will be saved in socket DB 1220 at the GMA service 1105 of the network interface device 1005, with this socket DB information used by the GMA service 1105 of the network interface device 1005 to parse the packet (s) accordingly.

[0091] FIGS. 13A-13B are simplified block diagrams 1300a-b showing an example implementation for the handling of a packet in a Single Access mode for GMA wireless access.  In this mode, a single one of the available delivery networks (e.g., 5G or WiFi) is selected as a single connectivity interface. When this mode is requested or the mode selection is decided by dynamic congestion detection, the GMA service 930 will call ioctl to GMA bond service 1120 in kernel to bind TUN device 940 to a selected one of the physical network interfaces (e.g., 1140 or 1145) . FIG. 13A shows an example flow when the 5G interface 1145 is selected as the delivery network and FIG. 13B shows an example flow when the WiFi interface 1140 is instead selected when in Single Access mode. When data is sent from a client application 915 through the socket 1305 to the TUN device 940, the GMA bond service 1120 will rewrap the packet with a GMA header (such as in the example of FIGS. 8D-8E) and sends out packets for the application over a single one of the 5G or WiFi connection with the network interface device 1005. When the data stream arrives at the network interface device 1005, the GMA-compliant packets are identified and transferred to the GMA software stack implemented and executed using the CPU processor 1020 of the network interface device 1005. Using the GMA stack on the network interface device, the GMA data stream is first parsed using the user space TCP / IP protocol logic 1110 (e.g., implemented using DPDK-ANS) on the network interface device and then parsed by the FlexGMA service 1105 in the network interface device according to the socket info stored in socket DB to strip the GMA header from the packet (s) . In Single Access mode, data handling is relatively simple, as no merge or aggregation are performed prior to forwarding the data (e.g., using virtIO-net protocol) to the host over the network interface device interface 1006.

[0092] Turning to FIG. 14, a simplified block diagram 1400 is shown illustrating an example flow for the handling of a packet in a Redundant mode of a GMA wireless communication. Redundant mode may be selected for use, for instance, for critical packet transmissions to ensure lower packet loss ratio. In Redundant mode, multiple wireless delivery networks are selected and used concurrently to send redundant packet copies in a critical data transfer. In the example of FIG. 14, a GMA packet in Redundant mode is dual cast over both a 5G 540 and WiFi connection 545 concurrently. In the example flow shown in FIG. 14, a client application 915 may first establish a TCP connection with the remote server host, and the application may call the GMA service API for mode selection, and send the application’s network socket information as a control credit to the client’s GMA service 930. In the event the application selects the use of Redundant mode, the GMA service will make a call (e.g., via  ioctl) to the client kernel GMA bond service 1120 to send the control credit for the GMA bond service to use to bind the TUN device 940 to two or more (or all) of the available wireless delivery network interfaces (e.g., to both the Wi-Fi interface 1140 and 5G interface 1145) . In the client kernel layer, the TUN device 940 builds connections with the two or more delivery networks (e.g., using WiFi interface 1140 and 5G interface 1145) and, when connected to the remote service side (via the network interface device) , the connection information and GMA mode information are associated with the application and saved by the network interface device GMA service 1105. With the connection established, packets may be generated by the client application 915 and sent from the application to the TUN device 940 through the client kernel’s TCP / IP stack to wrap the data as a TCP / IP packet. The data may then be passed to the client GMA bond service 1120, which re-wraps the packet with a GMA (or FlexGMA) header (e.g., as in the examples of FIG. 8D-8E) , pushes the packets through TCP / IP stack and multicasts the GMA-wrapped packets over two or more of the different multiple wireless connections (e.g., WiFi 540 and 5G 545) simultaneously to 5G interface and WIFI connectivity (will through TCP / IP stack again) . As such, any losses, errors, or performance issues on one of the connections is mitigated by the duplicate packet transmission on the other wireless connection (s) .

[0093] Continuing with the example of Redundant mode GMA show in FIG. 14, on the host side, when the network interface device (e.g., an IPU outfitted with GMA service logic) receives the packets, the GMA-compliant packets will be transferred (by the network accelerator 1025) to the software stack of the processor 1020 implementing the user space TCP / IP stack 1110 and GMA service. In this example, the GMA packets may be first parsed by the TCP / IP stack and then passed for processing by the GMA service 1105 based on socket information for the corresponding client application (e.g., as stored in socket DB 1220) . In the event all of the multi-cast copies of the GMA packet arrive successfully at the network interface device, the duplicated data may be handled by the network interface device GMA service logic on a First-In-First-Out (FIFO) basis, with the first received copy of the data being processed for consumption by the host first (e.g., by stripping GMA header information from the packet) and being sent onto the host 705 (e.g., via the virtIO-net protocol) . The redundant copies of the packet arriving behind the first copy may be discarded at the network interface device (e.g., using the GMA service 1105) .

[0094] Turning to FIG. 15, a simplified block diagram 1500 is shown illustrating an example Aggregation mode for GMA wireless access. The Aggregation mode may be used, for instance, in connection with attempts to improve data transmission throughput, where multiple concurrent wireless channels are used for data transfer, with the data dynamically split (by the sender) between the multiple channels (e.g., using both WiFi 545 and 5G channels 540) to increase the throughput of the data transmission. Link congestion at the various available wireless delivery networks (e.g., 540, 545) may be accounted for in determining which network channels to use and what share of the data to send over which channel, etc. As an example, an application may elect to build and use an Aggregate mode link in cases where the data to be transmitted (or received) by the client to (or from) a host is large and would benefit from the wider pipe offered by aggregating the bandwidth of multiple wireless delivery networks, among other example instances. In the example of FIG. 15, a client application 915 may work to establish a connection to a remote host server 705 and may select the Aggregate mode during GMA mode selection (e.g., using an API of the client GMA service 930) . In Aggregate mode the client 530 may communicate with the server to configure (e.g., during the establishment of the connection) the mix of delivery networks to use to communicate data between the client the remote server including other aspects of the communication (e.g., source IP address / port, destination IP address / port, protocol, GMA mode, etc. ) . In this example, as data is generated by the client application for sending to the server, the data is sent from the application 915 to the TUN device 940 through a client TCP / IP stack to wrap the data in a TCP / IP packet. The packet is then passed to the client GMA bond service 1120 which re-wraps the packet with a GMA header (e.g., such as the header shown and described in the examples of FIGS. 8D-8E) and works to send out the application data through a stream of packets distributed between the multiple connections (e.g., by a round-robin or other algorithm) offered by the available support wireless delivery networks (e.g., 540, 545) .

[0095] Continuing with the example of FIG. 15, on the server side of Aggregation mode, the network interface device 1005 may receive packets in the stream sent from the client over multiple delivery networks. As the network interface device receives the packet, GMA-compliant packets are transferred to the software stack of the CPU 1020 (from the network accelerator 1025) and the GMA data is first parsed using the user space TCP / IP stack  of the network interface device 1005 (to remove the first level of TCP / IP encapsulation) and then parsed by the GMA service 1105 based on the data stream socket info stored in socket DB 1220 to remove GMA header data from the packets and prepare the packets for consumption by the host 705. Accordingly, the GMA service 1105 aggregates all of the data originating from a given client application (e.g., whether received on the WiFi or 5G path) and the data stream is merged based on the IDs in the GMA header (e.g., based on the Flow SN value in the GMA header) . Then the data is then sent to host over the network interface device’s frontend (e.g., using virtIO-net protocol) , for consumption by the host 705.

[0096] Downlink traffic from the server to the various clients connected to it (via a network interface device) may be according to the connection and mode established (e.g., based on the request of the client’s respective application (s) ) , such as discussed above. Whereas traffic passes first through the TCP / IP stack to the GMA service in uplink traffic, downlink traffic progresses in reverse, with a GMA header and an additional TCP / IP header being added to downlink packet by the network interface device’s logic (first through the GMA service 1105 and then through the TCP / IP stack logic 1110) before being transmitted over one or multiple delivery networks to the client in accordance with the selected GMA mode.

[0097] Note that the apparatus’ , methods’ , and systems described above may be implemented in any electronic device or system as aforementioned. As a specific illustration, FIG. 16 provides an exemplary implementation of a processing device such as one that may be included in a network processing device. It should be appreciated that other processor architectures may be provided to implement the functionality and processing of requests by an example network processing device, including the implementation of the example CDS device components and functionality discussed above.

[0098] Referring to FIG. 16, a block diagram 1600 is shown of an example data processor device (e.g., a central processing unit (CPU) ) 1612 coupled to various other components of a platform in accordance with certain embodiments. Although CPU 1612 depicts a particular configuration, the cores and other components of CPU 1612 may be arranged in any suitable manner. CPU 1612 may comprise any processor or processing device, such as a microprocessor, an embedded processor, a digital signal processor (DSP) , a network processor, an application processor, a co-processor, a system on a chip (SOC) , or other device to execute code. CPU 1612, in the depicted embodiment, includes four processing elements  (cores 1602 in the depicted embodiment) , which may include asymmetric processing elements or symmetric processing elements. However, CPU 1612 may include any number of processing elements that may be symmetric or asymmetric.

[0099] In one embodiment, a processing element refers to hardware or logic to support a software thread. Examples of hardware processing elements include: a thread unit, a thread slot, a thread, a process unit, a context, a context unit, a logical processor, a hardware thread, a core, and / or any other element, which is capable of holding a state for a processor, such as an execution state or architectural state. In other words, a processing element, in one embodiment, refers to any hardware capable of being independently associated with code, such as a software thread, operating system, application, or other code. A physical processor (or processor socket) typically refers to an integrated circuit, which potentially includes any number of other processing elements, such as cores or hardware threads.

[0100] A core may refer to logic located on an integrated circuit capable of maintaining an independent architectural state, wherein each independently maintained architectural state is associated with at least some dedicated execution resources. A hardware thread may refer to any logic located on an integrated circuit capable of maintaining an independent architectural state, wherein the independently maintained architectural states share access to execution resources. As can be seen, when certain resources are shared and others are dedicated to an architectural state, the line between the nomenclature of a hardware thread and core overlaps. Yet often, a core and a hardware thread are viewed by an operating system as individual logical processors, where the operating system is able to individually schedule operations on each logical processor.

[0101] Physical CPU 1612, as illustrated in FIG. 16, includes four cores-cores 1602A, 1602B, 1602C, and 1602D, though a CPU may include any suitable number of cores. Here, cores 1602 may be considered symmetric cores. In another embodiment, cores may include one or more out-of-order processor cores or one or more in-order processor cores. However, cores 1602 may be individually selected from any type of core, such as a native core, a software managed core, a core adapted to execute a native Instruction Set Architecture (ISA) , a core adapted to execute a translated ISA, a co-designed core, or other known core. In a heterogeneous core environment (e.g., asymmetric cores) , some form of translation, such as binary translation, may be utilized to schedule or execute code on one or both cores.

[0102] A core 1602 may include a decode module coupled to a fetch unit to decode fetched elements. Fetch logic, in one embodiment, includes individual sequencers associated with thread slots of cores 1602. Usually a core 1602 is associated with a first ISA, which defines / specifies instructions executable on core 1602. Often machine code instructions that are part of the first ISA include a portion of the instruction (referred to as an opcode) , which references / specifies an instruction or operation to be performed. The decode logic may include circuitry that recognizes these instructions from their opcodes and passes the decoded instructions on in the pipeline for processing as defined by the first ISA. For example, as decoders may, in one embodiment, include logic designed or adapted to recognize specific instructions, such as transactional instructions. As a result of the recognition by the decoders, the architecture of core 1602 takes specific, predefined actions to perform tasks associated with the appropriate instruction. It is important to note that any of the tasks, blocks, operations, and methods described herein may be performed in response to a single or multiple instructions; some of which may be new or old instructions. Decoders of cores 1602, in one embodiment, recognize the same ISA (or a subset thereof) . Alternatively, in a heterogeneous core environment, a decoder of one or more cores (e.g., core 1602B) may recognize a second ISA (either a subset of the first ISA or a distinct ISA) .

[0103] In various embodiments, cores 1602 may also include one or more arithmetic logic units (ALUs) , floating point units (FPUs) , caches, instruction pipelines, interrupt handling hardware, registers, or other suitable hardware to facilitate the operations of the cores 1602.

[0104] Bus 1608 may represent any suitable interconnect coupled to CPU 1612. In one example, bus 1608 may couple CPU 1612 to another CPU of platform logic (e.g., via UPI) . I / O blocks 1604 represents interfacing logic to couple I / O devices 1610 and 1615 to cores of CPU 1612. In various embodiments, an I / O block 1604 may include an I / O controller that is integrated onto the same package as cores 1602 or may simply include interfacing logic to couple to an I / O controller that is located off-chip. As one example, I / O blocks 1604 may include PCIe interfacing logic. Similarly, memory controller 1606 represents interfacing logic to couple memory 1614 to cores of CPU 1612. In various embodiments, memory controller 1606 is integrated onto the same package as cores 1602. In alternative embodiments, a memory controller could be located off chip.

[0105] As various examples, in the embodiment depicted, core 1602A may have a  relatively high bandwidth and lower latency to devices coupled to bus 1608 (e.g., other CPUs 1612) and to NICs 1610, but a relatively low bandwidth and higher latency to memory 1614 or core 1602D. Core 1602B may have relatively high bandwidths and low latency to both NICs 1610 and PCIe solid state drive (SSD) 1615 and moderate bandwidths and latencies to devices coupled to bus 1608 and core 1602D. Core 1602C would have relatively high bandwidths and low latencies to memory 1614 and core 1602D. Finally, core 1602D would have a relatively high bandwidth and low latency to core 1602C, but relatively low bandwidths and high latencies to NICs 1610, core 1602A, and devices coupled to bus 1608.

[0106] “Logic” , as used herein, may refer to hardware, firmware, software and / or combinations of each to perform one or more functions. In various embodiments, logic may include a microprocessor or other processing element operable to execute software instructions, discrete logic such as an application specific integrated circuit (ASIC) , a programmed logic device such as a field programmable gate array (FPGA) , a memory device containing instructions, combinations of logic devices (e.g., as would be found on a printed circuit board) , or other suitable hardware and / or software. Logic may include one or more gates or other circuit components. In some embodiments, logic may also be fully embodied as software.

[0107] A design may go through various stages, from creation to simulation to fabrication. Data representing a design may represent the design in a number of manners. First, as is useful in simulations, the hardware may be represented using a hardware description language (HDL) or another functional description language. Additionally, a circuit level model with logic and / or transistor gates may be produced at some stages of the design process. Furthermore, most designs, at some stage, reach a level of data representing the physical placement of various devices in the hardware model. In the case where conventional semiconductor fabrication techniques are used, the data representing the hardware model may be the data specifying the presence or absence of various features on different mask layers for masks used to produce the integrated circuit. In some implementations, such data may be stored in a database file format such as Graphic Data System II (GDS II) , Open Artwork System Interchange Standard (OASIS) , or similar format.

[0108] In some implementations, software-based hardware models, and HDL and other functional description language objects can include register transfer language (RTL) files,  among other examples. Such objects can be machine-parsable such that a design tool can accept the HDL object (or model) , parse the HDL object for attributes of the described hardware, and determine a physical circuit and / or on-chip layout from the object. The output of the design tool can be used to manufacture the physical device. For instance, a design tool can determine configurations of various hardware and / or firmware elements from the HDL object, such as bus widths, registers (including sizes and types) , memory blocks, physical link paths, fabric topologies, among other attributes that would be implemented in order to realize the system modeled in the HDL object. Design tools can include tools for determining the topology and fabric configurations of system on chip (SoC) and other hardware device. In some instances, the HDL object can be used as the basis for developing models and design files that can be used by manufacturing equipment to manufacture the described hardware. Indeed, an HDL object itself can be provided as an input to manufacturing system software to cause the described hardware.

[0109] In any representation of the design, the data may be stored in any form of a machine readable medium. A memory or a magnetic or optical storage such as a disc may be the machine-readable medium to store information transmitted via optical or electrical wave modulated or otherwise generated to transmit such information. When an electrical carrier wave indicating or carrying the code or design is transmitted, to the extent that copying, buffering, or re-transmission of the electrical signal is performed, a new copy is made. Thus, a communication provider or a network provider may store on a tangible, machine-readable medium, at least temporarily, an article, such as information encoded into a carrier wave, embodying techniques of embodiments of the present disclosure.

[0110] A module as used herein refers to any combination of hardware, software, and / or firmware. As an example, a module includes hardware, such as a micro-controller, associated with a non-transitory medium to store code adapted to be executed by the micro-controller. Therefore, reference to a module, in one embodiment, refers to the hardware, which is specifically configured to recognize and / or execute the code to be held on a non-transitory medium. Furthermore, in another embodiment, use of a module refers to the non-transitory medium including the code, which is specifically adapted to be executed by the microcontroller to perform predetermined operations. And as can be inferred, in yet another embodiment, the term module (in this example) may refer to the combination of the  microcontroller and the non-transitory medium. Often module boundaries that are illustrated as separate commonly vary and potentially overlap. For example, a first and a second module may share hardware, software, firmware, or a combination thereof, while potentially retaining some independent hardware, software, or firmware. In one embodiment, use of the term logic includes hardware, such as transistors, registers, or other hardware, such as programmable logic devices.

[0111] Use of the phrase ‘to’ or ‘configured to, ’ in one embodiment, refers to arranging, putting together, manufacturing, offering to sell, importing and / or designing an apparatus, hardware, logic, or element to perform a designated or determined task. In this example, an apparatus or element thereof that is not operating is still ‘configured to’ perform a designated task if it is designed, coupled, and / or interconnected to perform said designated task. As a purely illustrative example, a logic gate may provide a 0 or a 1 during operation. But a logic gate ‘configured to’ provide an enable signal to a clock does not include every potential logic gate that may provide a 1 or 0. Instead, the logic gate is one coupled in some manner that during operation the 1 or 0 output is to enable the clock. Note once again that use of the term ‘configured to’ does not require operation, but instead focus on the latent state of an apparatus, hardware, and / or element, where in the latent state the apparatus, hardware, and / or element is designed to perform a particular task when the apparatus, hardware, and / or element is operating.

[0112] Furthermore, use of the phrases ‘capable of / to, ’ and or ‘operable to, ’ in one embodiment, refers to some apparatus, logic, hardware, and / or element designed in such a way to enable use of the apparatus, logic, hardware, and / or element in a specified manner. Note as above that use of to, capable to, or operable to, in one embodiment, refers to the latent state of an apparatus, logic, hardware, and / or element, where the apparatus, logic, hardware, and / or element is not operating but is designed in such a manner to enable use of an apparatus in a specified manner.

[0113] A value, as used herein, includes any known representation of a number, a state, a logical state, or a binary logical state. Often, the use of logic levels, logic values, or logical values is also referred to as 1’s and 0’s , which simply represents binary logic states. For example, a 1 refers to a high logic level and 0 refers to a low logic level. In one embodiment, a storage cell, such as a transistor or flash cell, may be capable of holding a single logical value  or multiple logical values. However, other representations of values in computer systems have been used. For example, the decimal number ten may also be represented as a binary value of 418A0 and a hexadecimal letter A. Therefore, a value includes any representation of information capable of being held in a computer system.

[0114] Moreover, states may be represented by values or portions of values. As an example, a first value, such as a logical one, may represent a default or initial state, while a second value, such as a logical zero, may represent a non-default state. In addition, the terms reset and set, in one embodiment, refer to a default and an updated value or state, respectively. For example, a default value potentially includes a high logical value, e.g., reset, while an updated value potentially includes a low logical value, e.g., set. Note that any combination of values may be utilized to represent any number of states.

[0115] The embodiments of methods, hardware, software, firmware, or code set forth above may be implemented via instructions or code stored on a machine-accessible, machine readable, computer accessible, or computer readable medium which are executable by a processing element. A non-transitory machine-accessible / readable medium includes any mechanism that provides (e.g., stores and / or transmits) information in a form readable by a machine, such as a computer or electronic system. For example, a non-transitory machine-accessible medium includes random-access memory (RAM) , such as static RAM (SRAM) or dynamic RAM (DRAM) ; ROM; magnetic or optical storage medium; flash memory devices; electrical storage devices; optical storage devices; acoustical storage devices; other form of storage devices for holding information received from transitory (propagated) signals (e.g., carrier waves, infrared signals, digital signals) ; etc., which are to be distinguished from the non-transitory mediums that may receive information there from.

[0116] Instructions used to program logic to perform embodiments of the disclosure may be stored within a memory in the system, such as DRAM, cache, flash memory, or other storage. Furthermore, the instructions can be distributed via a network or by way of other computer readable media. Thus a machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer) , but is not limited to, floppy diskettes, optical disks, Compact Disc, Read-Only Memory (CD-ROMs) , and magneto-optical disks, Read-Only Memory (ROMs) , Random Access Memory (RAM) , Erasable Programmable Read-Only Memory (EPROM) , Electrically Erasable Programmable  Read-Only Memory (EEPROM) , magnetic or optical cards, flash memory, or a tangible, machine-readable storage used in the transmission of information over the Internet via electrical, optical, acoustical or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc. ) . Accordingly, the computer-readable medium includes any type of tangible machine-readable medium suitable for storing or transmitting electronic instructions or information in a form readable by a machine (e.g., a computer) .

[0117] The following examples pertain to embodiments in accordance with this Specification. Example 1 is an apparatus including: an interface to couple to a host device; a network interface to couple to a wireless network and receive a packet over the wireless network from a client device for the host device; a processor; a multi-access network protocol service executable by the processor to: identify that the packet includes header data of a multi-access network protocol to encapsulate packet data from an application run on the client device; strip the header data of the multi-access network protocol from the packet to prepare the packet data for consumption by a service run on the host device; and send the packet data to the host device over the interface.

[0118] Example 2 includes the subject matter of example 1, further including circuitry to parse the packet and determine whether to forward the packet as-is to the host device or to pre-process the packet with the multi-access network protocol service.

[0119] Example 3 includes the subject matter of example 2, where the circuitry parses the packet to identify that the packet includes the header data and passes the packet to the multi-access network protocol service based on presence of the header data of the multi-access network protocol in the packet.

[0120] Example 4 includes the subject matter of any one of examples 2-3, where the circuitry includes a programmable processor to accelerate networking tasks, and the programmable processor is separate from the processor,

[0121] Example 5 includes the subject matter of any one of examples 1-4, further including transport layer logic executable by the processor to parse a first transport layer header of the packet, where the first transport layer header encapsulates the header data of a multi-access network protocol and the packet data.

[0122] Example 6 includes the subject matter of example 5, where the packet data includes a second transport layer header to be parsed by the host device.

[0123] Example 7 includes the subject matter of any one of examples 5-6, where the transport layer logic and the multi-access network protocol service are based on Data Plane Development Kit (DPDK) .

[0124] Example 8 includes the subject matter of any one of examples 5-7, where the first transport layer header and the second transport layer header include respective TCP / IP headers.

[0125] Example 9 includes the subject matter of any one of examples 1-8, where the network interface includes circuitry to couple to a plurality of different wireless networks including the wireless network, and the client device is to couple concurrently through the plurality of different wireless networks to the apparatus.

[0126] Example 10 includes the subject matter of example 9, where the plurality of different wireless networks include a WiFi network and a cellular data network.

[0127] Example 11 includes the subject matter of any one of examples 1-10, where the multi-access network protocol includes a Generic Multi-Access (GMA) -based protocol.

[0128] Example 12 includes the subject matter of any one of examples 1-11, where the multi-access network protocol service is further executable by the processor to: identify that one of a plurality of modes is to be applied to the packet data, where the plurality of modes includes a redundancy mode, a splitting mode, and a steering mode.

[0129] Example 13 includes the subject matter of example 12, where the header data includes information to identify the one of the plurality of modes.

[0130] Example 14 includes the subject matter of any one of examples 12-13, further including a socket database structure to associate the packet with a socket, where the socket database structure maintains information for the socket to identify which of the plurality of modes is to be applied to packets associated with the socket.

[0131] Example 15 includes the subject matter of example 14, where the socket is associated with the application.

[0132] Example 16 includes the subject matter of any one of examples 1-15, where the interface is compliant with one of a Peripheral Component Interconnect Express (PCIe) -based protocol or a Compute Express Link (CXL) -based protocol.

[0133] Example 17 includes the subject matter of any one of examples 1-16, where the multi-access network protocol service is further executable by the processor to: receive,  over the interface, a response packet generated by a service executed on the host device in response to the packet; wrap the response packet in a multi-access protocol header to generate a multi-access response packet; wrap the multi-access response packet in a transport layer header; and send the multi-access response packet with the transport layer header to the client device over one or more of the plurality of wireless networks.

[0134] Example 18 is a method including: receiving a packet from a client device over one or more of a plurality of wireless networks, where the plurality of wireless networks couple the client device to a network interface device; determining to offload processing of the packet by a host processor device at the network interface device, where the host processor device is coupled to the network interface device by a physical interface, and determining to offload the processing of the packet is based on the packet being wrapped by a multi-access protocol header; determining, at the network interface device, that a mode in a plurality of different modes of a multi-access protocol is to apply to the packet; processing, at the network interface device, the packet for consumption by the host processor device, where processing the packet is based on the mode and includes removing the multi-access protocol header from the packet; and sending the packet from the network interface device to the host processor device after processing of the packet by the network interface device.

[0135] Example 19 includes the subject matter of example 18, further including: receiving, over the physical interface, a response packet generated by a service executed on the host device in response to the packet; wrapping, at the network interface device, the response packet in a respective multi-access protocol header to generate a multi-access response packet; wrapping the multi-access response packet in a transport layer header; and sending the multi-access response packet with the transport layer header to the client device over one or more of the plurality of wireless networks based on the mode.

[0136] Example 20 includes the subject matter of any one of examples 18-19, further including: parsing the packet; and determining whether to forward the packet as-is to the host device or to pre-process the packet with the multi-access network protocol service.

[0137] Example 21 includes the subject matter of any one of examples 18-20, further including parsing, at the network interface device, a first transport layer header of the packet, where the first transport layer header encapsulates the header data of a multi-access network protocol and the packet data.

[0138] Example 22 includes the subject matter of example 21, where the packet data includes a second transport layer header to be parsed by the host device.

[0139] Example 23 includes the subject matter of any one of examples 21-22, where the first transport layer header and the second transport layer header include respective TCP / IP headers.

[0140] Example 24 includes the subject matter of any one of examples 18-23, where the network interface includes circuitry to couple to a plurality of different wireless networks including the wireless network, and the client device is to couple concurrently through the plurality of different wireless networks to the method.

[0141] Example 25 includes the subject matter of example 24, where the plurality of different wireless networks include a WiFi network and a cellular data network.

[0142] Example 26 includes the subject matter of any one of examples 18-25, where the multi-access network protocol includes a Generic Multi-Access (GMA) -based protocol.

[0143] Example 27 includes the subject matter of any one of examples 18-26, where the multi-access network protocol service is further executable by the processor to: identify that one of a plurality of modes is to be applied to the packet data, where the plurality of modes includes a redundancy mode, a splitting mode, and a steering mode.

[0144] Example 28 includes the subject matter of example 27, where the header data includes information to identify the one of the plurality of modes.

[0145] Example 29 includes the subject matter of any one of examples 27-28, further including a socket database structure to associate the packet with a socket, where the socket database structure maintains information for the socket to identify which of the plurality of modes is to be applied to packets associated with the socket.

[0146] Example 30 includes the subject matter of example 29, where host device services requests from a plurality of applications on one or more client devices, and the socket database structure is maintain information for a plurality of sockets corresponding to the plurality of applications.

[0147] Example 31 includes the subject matter of any one of examples 18-30, where the interface is compliant with one of a Peripheral Component Interconnect Express (PCIe) -based protocol or a Compute Express Link (CXL) -based protocol.

[0148] Example 32 is a system including means to perform the method of any one of  examples 18-31.

[0149] Example 33 includes the subject matter of example 32, where the means include a non-transitory machine-readable medium with instructions stored thereon, the instructions executable to cause the machine to perform at least a portion of the method of any one of examples 18-31.

[0150] Example 34 is a system including: a host processor device; a network interface device coupled to the host processor device by an interface, where the network interface device includes: a network interface to couple to a plurality of wireless networks and receive a packet over one or more of the plurality of wireless networks from a client device for the host device; a processor; a multi-access network protocol service executable by the processor to:identify that the packet includes header data of a multi-access network protocol to encapsulate packet data from an application run on the client device; strip the header data of the multi-access network protocol from the packet to prepare the packet data for consumption by a service run on the host device; and send the packet data to the host device over the interface.

[0151] Example 35 includes the subject matter of example 34, where the network interface device further includes transport layer logic executable by the processor to parse a first transport layer header of the packet, where the first transport layer header encapsulates the header data of a multi-access network protocol and the packet data.

[0152] Example 36 includes the subject matter of example 35, where the host processor device includes host transport layer logic, and the packet data includes a second transport layer header to be parsed by the host transport layer logic.

[0153] Example 37 includes the subject matter of any one of examples 34-36, further including the client device.

[0154] Example 38 includes the subject matter of any one of examples 34-37, where a plurality of client devices are coupled to the network interface device using the plurality of wireless networks.

[0155] Example 39 includes the subject matter of example 38, where the host device hosts a service to be shared by the plurality of client devices.

[0156] Example 40 includes the subject matter of any one of examples 34-39, where the multi-access network protocol service is further executable by the processor to: receive,  over the interface, a response packet generated by a service executed on the host device in response to the packet; wrap the response packet in a multi-access protocol header to generate a multi-access response packet; wrap the multi-access response packet in a transport layer header; and send the multi-access response packet with the transport layer header to the client device over one or more of the plurality of wireless networks.

[0157] Example 41 includes the subject matter of any one of examples 34-40, further including circuitry to parse the packet and determine whether to forward the packet as-is to the host device or to pre-process the packet with the multi-access network protocol service.

[0158] Example 42 includes the subject matter of example 41, where the circuitry parses the packet to identify that the packet includes the header data and passes the packet to the multi-access network protocol service based on presence of the header data of the multi-access network protocol in the packet.

[0159] Example 43 includes the subject matter of any one of examples 41-42, where the circuitry includes a programmable processor to accelerate networking tasks, and the programmable processor is separate from the processor,

[0160] Example 44 includes the subject matter of any one of examples 34-43, further including transport layer logic executable by the processor to parse a first transport layer header of the packet, where the first transport layer header encapsulates the header data of a multi-access network protocol and the packet data.

[0161] Example 45 includes the subject matter of example 44, where the packet data includes a second transport layer header to be parsed by the host device.

[0162] Example 46 includes the subject matter of any one of examples 44-45, where the transport layer logic and the multi-access network protocol service are based on Data Plane Development Kit (DPDK) .

[0163] Example 47 includes the subject matter of any one of examples 44-46, where the first transport layer header and the second transport layer header include respective TCP / IP headers.

[0164] Example 48 includes the subject matter of any one of examples 34-47, where the network interface includes circuitry to couple to a plurality of different wireless networks including the wireless network, and the client device is to couple concurrently through the plurality of different wireless networks to the apparatus.

[0165] Example 49 includes the subject matter of example 48, where the plurality of different wireless networks include a WiFi network and a cellular data network.

[0166] Example 50 includes the subject matter of any one of examples 34-49, where the multi-access network protocol includes a Generic Multi-Access (GMA) -based protocol.

[0167] Example 51 includes the subject matter of any one of examples 34-50, where the multi-access network protocol service is further executable by the processor to: identify that one of a plurality of modes is to be applied to the packet data, where the plurality of modes includes a redundancy mode, a splitting mode, and a steering mode.

[0168] Example 52 includes the subject matter of example 51, where the header data includes information to identify the one of the plurality of modes.

[0169] Example 53 includes the subject matter of any one of examples 51-52, further including a socket database structure to associate the packet with a socket, where the socket database structure maintains information for the socket to identify which of the plurality of modes is to be applied to packets associated with the socket.

[0170] Example 54 includes the subject matter of example 53, where the socket is associated with the application.

[0171] Example 55 includes the subject matter of any one of examples 34-54, where the interface is compliant with one of a Peripheral Component Interconnect Express (PCIe) -based protocol or a Compute Express Link (CXL) -based protocol.

[0172] Reference throughout this specification to “one embodiment” or “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present disclosure. Thus, the appearances of the phrases “in one embodiment” or “in an embodiment” in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.

[0173] In the foregoing specification, a detailed description has been given with reference to specific exemplary embodiments. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the disclosure as set forth in the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative sense rather than a restrictive sense.  Furthermore, the foregoing use of embodiment and other exemplarily language does not necessarily refer to the same embodiment or the same example, but may refer to different and distinct embodiments, as well as potentially the same embodiment.

Claims

1.An apparatus comprising:an interface to couple to a host device;a network interface to couple to a plurality of wireless networks and receive a packet over one or more of the plurality of wireless networks from a client device for the host device;a processor;a multi-access network protocol service executable by the processor to:identify that the packet comprises header data of a multi-access network protocol, wherein the header data is to encapsulate packet data from an application run on the client device;strip the header data of the multi-access network protocol from the packet to prepare the packet data for consumption by a service run on the host device; andsend the packet data to the host device over the interface.2.The apparatus of Claim 1, further comprising circuitry to parse the packet and determine whether to forward the packet as-is to the host device or to process the packet with the multi-access network protocol service.3.The apparatus of Claim 2, wherein the circuitry parses the packet to identify that the packet comprises the header data and passes the packet to the multi-access network protocol service based on presence of the header data of the multi-access network protocol in the packet.4.The apparatus of Claim 2, wherein the circuitry comprises a programmable processor to accelerate networking tasks, and the programmable processor is separate from the processor.5.The apparatus of Claim 1, further comprising transport layer logic executable by the processor to parse a first transport layer header of the packet, wherein the first transport layer header encapsulates the header data of a multi-access network protocol and the  packet data.6.The apparatus of Claim 5, wherein the packet data comprises a second transport layer header to be parsed by the host device.7.The apparatus of Claim 5, wherein the transport layer logic and the multi-access network protocol service are based on Data Plane Development Kit (DPDK) .8.The apparatus of Claim 5, wherein the first transport layer header and the second transport layer header comprise respective Transmission Control Protocol (TCP)  / Internet Protocol (IP) headers.9.The apparatus of Claim 1, wherein the client device is to couple concurrently through the plurality of different wireless networks to the apparatus.10.The apparatus of Claim 9, wherein the plurality of different wireless networks comprise a WiFi network and a cellular data network.11.The apparatus of Claim 1, wherein the multi-access network protocol comprises a Generic Multi-Access (GMA) -based protocol.12.The apparatus of Claim 1, wherein the multi-access network protocol service is further executable by the processor to: identify that one of a plurality of modes is to be applied to the packet data, wherein the plurality of modes comprises a redundancy mode, a splitting mode, and a steering mode.13.The apparatus of Claim 12, further comprising a socket database structure to associate the packet with a socket, wherein the socket database structure maintains information for the socket to identify which of the plurality of modes is to be applied to packets associated with the socket.14.A method comprising:receiving a packet from a client device over one or more of a plurality of wireless networks, wherein the plurality of wireless networks couple the client device to a network interface device;determining to offload processing of the packet by a host processor device at the network interface device, wherein the host processor device is coupled to the network interface device by a physical interface, and determining to offload the processing of the packet is based on the packet being wrapped by a multi-access protocol header;determining, at the network interface device, that a mode in a plurality of different modes of a multi-access protocol is to apply to the packet;processing, at the network interface device, the packet for consumption by the host processor device, wherein processing the packet is based on the mode and comprises removing the multi-access protocol header from the packet; andsending the packet from the network interface device to the host processor device after processing of the packet by the network interface device.15.The method of Claim 14, further comprising:receiving, over the physical interface, a response packet generated by a service executed on the host device in response to the packet;wrapping, at the network interface device, the response packet in a respective multi-access protocol header to generate a multi-access response packet;wrapping the multi-access response packet in a transport layer header; andsending the multi-access response packet with the transport layer header to the client device over one or more of the plurality of wireless networks based on the mode.16.A system comprising:a host processor device;a network interface device coupled to the host processor device by an interface, wherein the network interface device comprises:a network interface to couple to a plurality of wireless networks and receive a packet over one or more of the plurality of wireless networks from a client device for the host device;a processor;a multi-access network protocol service executable by the processor to:identify that the packet comprises header data of a multi-access network protocol, wherein the header data is to encapsulate packet data from an application run on the client device;strip the header data of the multi-access network protocol from the packet to prepare the packet data for consumption by a service run on the host device; andsend the packet data to the host device over the interface.17.The system of Claim 16, further comprising the client device.18.The system of Claim 16, comprising a plurality of client devices coupled to the network interface device using the plurality of wireless networks.19.The system of Claim 18, wherein the multi-access network protocol service is further executable by the processor to:receive, over the interface, a response packet generated by a service executed on the host device in response to the packet;wrap the response packet in a multi-access protocol header to generate a multi-access response packet;wrap the multi-access response packet in a transport layer header; andsend the multi-access response packet with the transport layer header to the client device over one or more of the plurality of wireless networks.20.The system of Claim 16, further comprising an application programming interface to facilitate discovery of the network interface device and request offloading of multi-access protocol handling by the network interface device.

Citation Information

Patent Citations

  • Path Maximum Transmission Unit Handling For Virtual Private Networks

    US20150288603A1

  • Edge computing over disaggregated radio access network functions

    US20220232423A1

  • Multi-access traffic management

    US20240056885A1

  • Generic multi-access protocols for next generation multi-access networks

    WO2017189176A2

  • Trigger-based keep-alive and probing mechanism for multiaccess management services

    WO2023043521A1