Network entities, system and methods performed therein for handling one or more packets in a computer environment
The system improves packet processing performance by adding metadata to packets to guide optimized processing, addressing branch misprediction and cache utilization issues, and achieving efficient handling of high-speed data links.
Patent Information
- Application Number
- PCT/SE2023/050880
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2023-09-07
- Publication Date
- 2025-03-13
AI Technical Summary
Existing networking solutions face performance issues due to branch misprediction, low cache utilization, and the inability to execute highly optimized code for packet processing, especially with increasing data link speeds.
A system comprising a first network entity that adds metadata to packets indicating how to handle them, and a second network entity that processes packets based on this metadata, optimizing packet processing by executing specialized and optimized code for each packet.
This approach minimizes branch mispredictions, improves cache utilization, and enhances packet processing performance, achieving high throughput and low latency even at high data link speeds.
Smart Images

Figure SE2023050880_13032025_PF_FP_ABST
Abstract
Description
[0001] NETWORK ENTITIES, SYSTEM AND METHODS PERFORMED THEREIN FOR HANDLING ONE OR MORE PACKETS IN A COMPUTER ENVIRONMENT
[0002] TECHNICAL FIELD
[0003] Embodiments herein relate to a first network entity, a second network entity, a third network entity, a system and methods performed therein. Furthermore, a computer program product and a computer-readable storage medium are also provided herein. In particular, embodiments herein relate to handling one or more packets of a networking application in a computer environment.
[0004] BACKGROUND
[0005] In a typical communication network, user equipment (UE), also known as wireless communication devices, mobile stations, stations (ST A) and / or wireless devices, communicate via a Radio Access Network (RAN) with one or more core networks (CN). The RAN covers a geographical area which is divided into service areas or cells, with each service area or cell being served by a radio network node such as an access node e.g., a Wi-Fi access point or a radio base station (RBS), which in some networks may also be called, for example, a NodeB, a gNodeB, or an eNodeB. The service area or cell is a geographical area where radio coverage is provided by the radio network node. The radio network node operates on radio frequencies to communicate over an air interface with the UEs within range of the radio network node. The radio network node communicates over a downlink (DL) to the UE and the UE communicates over an uplink (UL) to the radio network node.
[0006] A Universal Mobile Telecommunications System (UMTS) is a third generation (3G) telecommunication network, which evolved from the second generation (2G) Global System for Mobile Communications (GSM). The UMTS terrestrial radio access network (UTRAN) is essentially a RAN using wideband code division multiple access (WCDMA) and / or High-Speed Packet Access (HSPA) for communication with user equipment. In a forum known as the Third Generation Partnership Project (3GPP), telecommunications suppliers propose and agree upon standards for present and future generation networks and investigate e.g., enhanced data rate and radio capacity. In some RANs, e.g., as in UMTS, several radio network nodes may be connected, e.g., by landlines or microwave, to a controller node, such as a radio network controller (RNC) or a base station controller (BSC), which supervises and coordinates various activities of the plural radio network nodes connected thereto. The RNCs are typically connected to one or more core networks.
[0007] Specifications for the Evolved Packet System (EPS) have been completed within the 3GPP and coming 3GPP releases, such as New Radio (NR), are worked on. The EPS comprises the Evolved Universal Terrestrial Radio Access Network (E-UTRAN), also known as the Long-Term Evolution (LTE) radio access network, and the Evolved Packet Core (EPC), also known as System Architecture Evolution (SAE) core network. E-UTRAN / LTE is a 3GPP radio access technology wherein the radio network nodes are directly connected to the EPC core network. As such, the Radio Access Network (RAN) of an EPS has an essentially “flat” architecture comprising radio network nodes connected directly to one or more core networks.
[0008] With the emerging 5G technologies such as NR, the use of very many transmit- and receive-antenna elements may be of great interest as it makes it possible to utilize beamforming, such as transmit-side and receive-side beamforming. Transmit-side beamforming means that the transmitter can amplify the transmitted signals in a selected direction or directions, while suppressing the transmitted signals in other directions. Similarly, on the receive-side, a receiver can amplify signals from a selected direction or directions, while suppressing unwanted signals from other directions. NR is connected to the 5G Core Network (5GC) which comprises a number of Network Functions (NF) such as Session Management Function (SMF), Access Management Function (AMF), Authentication Service Function (AUSF), Policy Control Function (PCF), Unified Data Manager (UDM), Network Repository Function (NRF), Network Exposure Function (NEF), just to mention some. In the 5GC, NFs can discover other NFs by using a discovery service provided by the NRF.
[0009] Networking applications, such as NF, typically follow a parse-and-action model, where the application first parses & classifies the received packet (e.g., the packet header or payload) and then performs a specific task or processing based on the type of the packet. Fig. 1 shows an example networking application with six different processing paths for various types of Ethernet packets, e.g., Address Resolution Protocol (ARP), Internet Protocol (IP), user datagram protocol (UDP), transmission control protocol (TCP), and Quick UDP Internet Connection (QUIC). It is worth mentioning that networking applications may use other layer 2 (L2) protocols, e.g., InfiniBand or custom proprietary protocols, or various layer ? (L7) protocols (e.g., Memcached). Additionally, 5G / 6G cellular gateways may use other criteria to detect branches / paths to parse & classify packets. The parsing & classification done on central processing unit (CPU)-based commodity hardware require executing many branches, which can be highly detrimental to performance as the CPU should first load the code / data from the main memory into the cache memories before being able to execute the packet processing task or tasks. To minimize the performance overhead of branches, newer generations of processors offer various techniques to predict the right path of a branch to hide the memory load latencies. These techniques enable processors to preemptively execute instructions from both sides of a branch before the actual outcome is known. However, the performance penalties still exist in case of a branch misprediction, as the processors must discard the work performed speculatively along the incorrect path and revert to the correct one, resulting in wasted processing cycles and underutilized resources due to the unavailability of code / data in the cache memories. Note that the control flow of the program might be split into more than two branches for some networking applications, as shown in Fig. 1.
[0010] Unfortunately, the existing branch prediction techniques are not very helpful for networking applications, as the outcome of branches depends on the content of the received traffic, i.e. , the result of packet parsing & classification. Therefore, the existing networking solutions are not able to effectively speculate the execution pattern, enabling them to predict the right path and execute the packet processing as efficiently as possible.
[0011] The introduction of faster data links has made packet processing much more challenging on commodity hardware. The data link speeds are constantly increasing, whereas the processing capability of processors is not improving at the same pace due to the slowdown of Moore’s law and the demise of Dennard scaling. Consequently, the reception of packets at a higher rate causes a significant amount of queuing and performance degradation. To be able to process packets at these rates, some works have advocated for (i) offloading computationally expensive operations to programmable network devices & accelerators (typically with limited memory and lack of support for advanced operations) and / or (ii) performing optimizations to maximize the benefits provided by the cache memories. While these efforts improve performance, many networking applications still struggle to achieve high throughput and low latency.
[0012] Existing Approaches to Accelerate Packet Processing, Packet Classification, and Binary Specialization are the following: Profile-guided optimization (PGO): Specializing a binary for a specific workload via profiling+re-compiling has recently gained a lot of interest due to modular Programming Language (PL) tools, e.g., LLVM toolchain, and convenient / accessible profiling tools, e.g., perf. For example, Bolt and Propeller have shown that exploiting dynamic program control flow information, extracted via profiling, could improve large-scale applications’ performance. However, these techniques work best when there exists a defined workload, rather than different and varying workloads. As mentioned earlier, networking applications have many paths, each for a different packet class; therefore, simply profiling the application binary for a single workload would not be enough to process packets efficiently.
[0013] Metron exploits flow steering techniques available on network devices to offload part of the traffic classification done by the routers to distribute packets among processing cores efficiently and minimize inter-core communication. Although Metron offloads parts of traffic classification into network devices, it relies on the general binary to process packets, containing many branches, and it does not produce a highly optimized piece of code for each packet.
[0014] PacketMill improves packet processing on commodity hardware by (i) improving metadata management in modular packet processing frameworks and (ii) applying codeoptimization to these frameworks to achieve higher performance while providing modularity.
[0015] ESwitch is a switch architecture that uses on-the-fly template-based code generation to compile any OpenFlow pipeline into efficient machine code, which can then be readily used as fast path.
[0016] Since CPU-based commodity hardware was not explicitly designed for packet processing, the recent increase in link speeds, e.g., 100 / 200 / 400 Gbps, has caused performance issues for networking applications deployed on top of commodity hardware. To alleviate performance issues, many network providers have started to introduce accelerators to facilitate packet processing at high rates. The common programmable network accelerators for packet processing are (i) smart / programmable Network Interface Cards (NIC), and (ii) programmable switches.
[0017] Smart / Programmable NICs provide either ARM cores or on-board Field-Programmable Gate Array (FPGA) to perform arbitrary processing on the incoming traffic within the NIC, before transferring the traffic to the host. While sounding appealing, benefiting from these offloading resources requires addressing many challenges, e.g., finding the trade-off between cost, flexibility, and performance. For instance, in the case of Smart NICs equipped with low-frequency ARM cores and Application-Specific Integrated Circuit (ASIC)-based packet processors, it is essential to achieve optimal resource allocation while addressing the performance limitations, e.g., communication overhead imposed by Peripheral Component Interconnect express (PCIe), to make the most out of offloading capabilities, i.e., offloading the right amount of stateless and costly operations to ARM cores & ASIC on the NIC vs. keeping the stateful & complex operations on powerful X86 cores on the host. Additionally, both offloaded sections, i.e., running on the smart NIC, and nonoffloaded sections, i.e., running on the X86 CPU, should be optimized to achieve the maximum performance from the hardware.
[0018] FPGA-based NICs provide more flexibility and programmability, but the FPGA-based NICs may require skilled hardware architects with more expertise to implement high- performance and resource-efficient arbitrary logic for packet processing.
[0019] High-speed network switches rely on silicon ASICs to achieve high throughput and low packet processing latencies. Switches can be divided into a data plane and a control plane. The data plane is responsible for forwarding packets between the ports of the switch based on the packet processing logic. The control plane is responsible for configuring / populating some of the data plane match / action data structures, e.g., a Layer 2 forwarding table. Fig. 2 shows a simplified switch architecture with a multi-pipeline data plane. In the data plane, the switch’s silicon chips contain two main types of entities: Packet Processing Pipelines and a Traffic Manager.
[0020] A packet processing pipeline takes as input a sequence of packets from the input ports and transforms them according to the packet processing logic implemented by the packet processing pipeline, including identifying the outgoing port interface of the switch for the incoming traffic. More specifically, a packet processing pipeline may comprise a Parser Module that extracts the headers from the packet; a Logic Module that performs a sequence of packet modification operations, implemented, for instance, using match-action tables; and a Deparser Module that emits the packet in output.
[0021] Each physical port interface on the switch is connected to exactly one of the packet processing pipelines. For example, on a 25.6-Tbps switch with 64 ports, there are four packet processing pipelines, each connected to 16 different port interfaces of the switch. There are two types of packet processing pipelines: Ingress and Egress. The Ingress pipeline processes packets received from the physical port interfaces, whereas the Egress pipeline processes packets leaving the switch through any ports connected to that pipeline. All the Ingress and Egress pipelines are interconnected via the Traffic Manager. The role of the Traffic Manager module is to forward packets from an Ingress pipeline to the correct Egress pipeline. The Traffic Manager also provides functionalities such as scheduling policies and beyond. It is also possible to (i) create loops and send back packets to an Ingress pipeline and (ii) multicast packets to multiple pipelines — not shown in Fig. 2 for brevity.
[0022] A packet processing pipeline contains different entities such as Ternary Content- Addressable Memory (TCAM) and / or Static Random-Access Memory (SRAM), Arithmetic Logic Units (ALUs), Stateful ALUs (SALUs), and more. These entities are used to realize the desired packet processing logic. The packet processing logic typically comprises match and / or action tables, where actions can be header rewriting, arithmetic operations, hash computation, and more. The specific entries comprised in a table can be modified at run-time from the control plane of the switch, e.g., adding a new rule matching traffic towards a specific IP subnet.
[0023] Differences exist between custom-built and programmable packet processing pipelines such as silicon chips. Custom-built chips support limited reconfiguration of the packet processing pipeline, e.g., defining the size of the different L2 and Longest Prefix Match (LPM) tables, where most of the logic is hardcoded in the silicon and cannot be modified. Programmable switches, instead, support expressive reconfigurations of the packet processing pipeline that can be used to completely modify the packet processing parsers and logic. Different languages can be used to express packet processing logic, including Programming Protocol-independent Packet Processors (P4) and Network Programming Language (NPL). Each vendor provides a compiler to transform the packet processing program into the ASIC- specific configuration.
[0024] SUMMARY
[0025] As part of developing embodiments herein one or more problems have been identified, such as:
[0026] • State-of-the-art networking solutions cannot avoid branch misprediction that is detrimental to performance due to low cache utilization.
[0027] • State-of-the-art networking solutions are not capable of executing a highly optimized piece of code for a given packet. • State-of-the-art networking solutions do not utilize programmable network devices to perform code optimizations.
[0028] • State-of-the-art networking solutions may rely on hardware approaches to classify packets, but they do not exploit it to specialize the binary and minimize branch mispredictions.
[0029] An object of embodiments herein is to provide a mechanism that improves handling of packets in an efficient manner.
[0030] According to an aspect the object is achieved, according to embodiments herein, by providing a method performed by a first network entity for handling one or more packets in a computer environment. The first network entity obtains a packet of a networking application, and adds metadata to the packet, wherein the metadata indicates a part of a process that specifies how to handle the packet. The first network entity sends the packet, with the added metadata, to a second network entity in the computer environment for processing the packet.
[0031] According to another aspect the object is achieved, according to embodiments herein, by providing a method performed by a second network entity for handling one or more packets in a computer environment. The second network node receives from a first network entity, a packet of a networking application with added metadata, wherein the metadata indicates a part of a process that specifies how to handle the packet. The second network entity processes the packet in the part of the process based on the metadata.
[0032] According to yet another aspect the object is achieved, according to embodiments herein, by providing a method performed by a third network entity for handling one or more packets in a computer environment. The third network entity configures a first network entity and / or a second network entity to perform the methods herein, respectively.
[0033] According to still another aspect the object is achieved, according to embodiments herein, by providing a method performed by a system for handling one or more packets in a computer environment, wherein the system comprises a first network entity, a second network entity, and a third network entity. The system, at the third network entity, configures the first network entity and / or the second network entity to process one or more packets of a networking application based on metadata attached to the one or more packets. The system, at the first network entity, obtains a packet of the networking application and adds metadata to the packet, wherein the metadata indicates a part of a process that specifies how to handle the packet. The system sends, from the first network entity, the packet, with the added metadata, to the second network entity in the computer environment; and processes, at the second network entity, the packet in the part of the process based on the metadata as configured by the third network entity.
[0034] It is herein provided a first network entity, a second network entity, a third network entity and a system configured to perform the methods herein, respectively.
[0035] Thus, according to an aspect the object is achieved, according to embodiments herein, by providing a first network entity for handling one or more packets in a computer environment. The first network entity is configured to obtain a packet of a networking application, and to add metadata to the packet, wherein the metadata indicates a part of a process that specifies how to handle the packet. The first network entity is further configured to send the packet, with the added metadata, to a second network entity in the computer environment for processing the packet.
[0036] According to another aspect the object is achieved, according to embodiments herein, by providing a second network entity for handling one or more packets in a computer environment. The second network entity receives from a first network entity, a packet of a networking application with added metadata, wherein the metadata indicates a part of a process that specifies how to handle the packet. The second network entity processes the packet in the part of the process based on the metadata.
[0037] According to yet another aspect the object is achieved, according to embodiments herein, by providing a third network entity for handling one or more packets in a computer environment. The third network entity is configured to configure a first network entity and / or a second network entity to perform the methods herein, respectively.
[0038] According to still another aspect the object is achieved, according to embodiments herein, by providing a system for handling one or more packets in a computer environment, wherein the system comprises a first network entity, a second network entity, and a third network entity. The system is configured to, at the third network entity, configure the first network entity and / or the second network entity to process one or more packets of a networking application based on metadata attached to the one or more packets. The system is configured to, at the first network entity, obtain a packet of the networking application and to add metadata to the packet, wherein the metadata indicates a part of a process that specifies how to handle the packet. The system is further configured to send, from the first network entity, the packet, with the added metadata, to the second network entity in the computer environment; and to process, at the second network entity, the packet in the part of the process based on the metadata as configured by the third network entity. It is furthermore provided herein a computer program product comprising instructions, which, when executed on at least one processor, cause the at least one processor to carry out the methods herein, as performed by the first network entity, the second network entity, the third network entity and the system, respectively. It is additionally provided herein a computer- readable storage medium, having stored thereon a computer program product comprising instructions which, when executed on at least one processor, cause the at least one processor to carry out the methods herein, as performed by the first network entity, the second network entity, the third network entity and the system, respectively.
[0039] A system, entities and methods for minimizing mispredictions of networking applications deployed on commodity hardware with at least a second network entity, such as a CPU-based server, and a first network entity, such as a programmable network device, where the first network entity parses the packet and attach metadata containing, for example, an appropriate address for a specialized and an optimized piece of code to process the packet.
[0040] Thus, embodiments herein provide a mechanism that handles packets in an efficient manner.
[0041] BRIEF DESCRIPTION OF THE DRAWINGS
[0042] Examples of embodiments herein are described in more detail with reference to the attached drawings in which:
[0043] Fig. 1 shows a flowchart of an example networking application according to the prior art;
[0044] Fig. 2 shows a simplified switch architecture with a multi-pipeline data plane according to the prior art;
[0045] Fig. 3 shows a schematic overview depicting a computer environment according to embodiments herein;
[0046] Fig. 4 shows a combined flowchart and signaling scheme according to some embodiments herein;
[0047] Fig. 5 shows a schematic flowchart depicting a method performed by a first network entity according to embodiments herein;
[0048] Fig. 6 shows a schematic flowchart depicting a method performed by a second network entity according to embodiments herein;
[0049] Fig. 7 shows a schematic flowchart depicting a method performed by a third network entity according to embodiments herein; Fig. 8 shows a schematic flowchart depicting a method performed by a system according to embodiments herein;
[0050] Fig. 9 shows a high-level overview of some embodiments herein;
[0051] Fig. 10 shows a high-level overview of some embodiments herein;
[0052] Fig. 11 shows a schematic overview depicting a first network entity according to embodiments herein;
[0053] Fig. 12 shows a schematic overview depicting a second network entity according to embodiments herein;
[0054] Fig. 13 shows a schematic overview depicting a third network entity according to embodiments herein;
[0055] Fig. 14 shows a schematic overview depicting a system according to embodiments herein;
[0056] Fig. 15 shows an example of a communication system QQ100 in accordance with some embodiments;
[0057] Fig. 16 shows a UE QQ200 in accordance with some embodiments;
[0058] Fig. 17 shows a network node QQ300 in accordance with some embodiments;
[0059] Fig. 18 is a block diagram of a host QQ400, which may be an embodiment of the host QQ116 of Fig. 15, in accordance with various aspects described herein;
[0060] Fig. 19 is a block diagram illustrating a virtualization environment QQ500 in which functions implemented by some embodiments may be virtualized; and
[0061] Fig. 20 shows a communication diagram of a host QQ602 communicating via a network node QQ604 with a UE QQ606 over a partially wireless connection in accordance with some embodiments.
[0062] DETAILED DESCRIPTION
[0063] Embodiments herein relate to communication networks in general. Fig. 3 is a schematic overview depicting a computer environment 1. The computer environment 1 may be part of any kind of communication network such as a wired communication network and / or a wireless communication network comprising, e.g., an Access Network (AN) and a Core Network (CN). The communication network may comprise logical processing units such as servers or server farms providing compute capacity and may comprise a cloud environment comprising compute capacity in one or more clouds. The communication network 1 may use one or a number of different technologies, such as packet communication, Wi-Fi, Long Term Evolution (LTE), LTE- Advanced, Fifth Generation (5G), NR, Wideband Code Division Multiple Access (WCDMA), Global System for Mobile communications / Enhanced Data rate for GSM Evolution (GSM / EDGE), Worldwide Interoperability for Microwave Access (WiMAX), or Ultra Mobile Broadband (UMB), just to mention a few possible implementations.
[0064] In the computer environment 1 , a first network entity 10 may handle one or more packets, such as a programmable unit, e.g., a switch, an NIC, an accelerator, and / or a scheduler.
[0065] The computer environment 1 further comprises a second network entity 11 for handling packets, such as a processing unit, a computer, a server, or a wireless communication device.
[0066] The computer environment 1 further comprises a third network entity 12 for configuring entities in the computer environment 1.
[0067] The computer environment 1 may thus comprise a system 100 comprising the first network entity 10, the second network entity 11 , and the third network entity 12.
[0068] The first, second and third network entities 10, 11 ,12 may be standalone entities or collocated entities but logically separated within a computer server. The network entities may comprise a network node, a server, a function, a distributed function or similar. Thus, embodiments may be implemented either on a single node, e.g., a network node such as a radio unit, a server, a virtual machine (VM), a CPU, a Graphics Processing Units (GPU), or specialized hardware such as FPGA, or on multiple nodes where each subtask or sub-action is executed independently and communicate with other instances via an interconnect, e.g., Ethernet, InfiniBand, PCIe, Compute Express Link (CXL), and / or NVLink.
[0069] Furthermore, the computer environment 1 may comprise one or more devices such as a network node 13, such as a server, an access node, a UE or a network node comprising one or more functions handling traffic from / to the system 100 of a networking application and / or within the computer environment 1 .
[0070] According to embodiments herein the first network entity 10 obtains a packet of a networking application, such as a networking application with at least two various execution paths. The first network entity 10 adds metadata to the packet, wherein the metadata indicates a part of a process that specifies how to handle the packet. For example, the metadata may indicate an address for the part of the process or a part of a processing code such as an execution path out of the at least two various execution paths. The first network entity 10 sends the packet, with the added metadata, to the second network entity 11 in the computer environment 1 for processing the packet. The second network entity 11 then processes the packet in the part of the process based on, or as indicated by, the metadata.
[0071] Embodiments herein minimize a misprediction for networking applications, since embodiments herein exploit network entities to execute the part of the process, such as a highly optimized code, for each packet. This results in a solution that utilizes available resources more efficiently and uses less power due to an increased performance of the second network entity 11. Embodiments herein may improve the performance of packet processing on commodity hardware, which is essential in the multi-100-Gbps era.
[0072] Fig. 4 is a combined flowchart and signaling scheme according to embodiments herein.
[0073] Action 401. The third network entity 12 may obtain information regarding the networking application, and / or capabilities of the network entities.
[0074] Action 402. The third network entity 12 may further perform an analysis, such as a static analysis, on the received networking application based on the obtained information to (i) find various paths and / or branches in the networking application and / or (ii) check which one or more various paths and / or branches can be assessed in the network for the given networking application. The third network entity 12 may determine the number of paths for the networking application and may generate code that comprises one or more blocks of code for each path, and / or metadata to locate these one or more blocks of code.
[0075] Action 403. The third network entity 12 may further configure the first network entity 10 to parse incoming packets and to embed a metadata into each packet.
[0076] Action 404. The third network entity 12 may further configure the second network entity 11. The third network entity 12 may deploy a code or function such as a binary on the second network entity 11. The function may check a packet, for example, by looking for an attached metadata. If so, the second network entity 11 may use the information provided by the metadata to perform the packet processing in a more optimized way.
[0077] Action 405. The first network entity 10 may receive a packet of the networking application.
[0078] Action 406. The first network entity 10 adds the metadata to the packet, wherein the metadata indicates the part of the process that defines how to handle the packet. The metadata may be prepended, appended, or placed in the middle of the packet. Metadata may comprise additional information to further optimize packet processing, e.g., one or more static states that can be used by the second network entity 11 to perform load balancing. For instance, the first network entity 10 may integrate a CPU core number / ID in the metadata to (i) balance the load among various CPU cores of the second network entity 11 or (ii) send the packets to the appropriate CPU cores in cases where each core only executes a set of execution paths to increase instruction / data cache locality, thereby improving performance.
[0079] Action 407. The first network entity 10 further sends the packet, with the added metadata, to the second network entity 11 .
[0080] Action 408. The second network entity 11 then processes the packet based on the metadata attached to the packet. Thus, the second network entity 11 may use information provided by the metadata to perform the packet processing in a more optimized way. For instance, the second network entity 11 may change Program Counter (PC) by jumping to the address specified by the metadata to run the optimized block of code. The attached metadata may comprise relative, virtual, or physical addresses, which is dependent on the type of the application, the operating system, and / or the commodity server’s features.
[0081] Example embodiments of a method performed by the first network entity 10 for handling one or more packets in the computer environment 1 will now be described with reference to a flowchart depicted in Fig. 5. The actions do not have to be taken in the order stated below, but may be taken in any suitable order. Dashed boxes are optional features. The first network entity 10 may be connected to the second network entity 11 . The one or more packets may be packets from a networking application, e.g., any of the networking applications being hosted on datacentres, such as social media, video streaming platforms, and web servers, and storage / backup services, that may be related to network testing, a database related application, a video related application, a machine learning related application, or a service of data delivery from storage devices. The first network entity 10 may be separated from the second network entity 11 , and the second network entity 11 may be a processing unit, such as a CPU-based server and the first network entity 10 may be a programmable hardware, such as a programmable switch.
[0082] Action 501. The first network entity 10 may obtain a configuration comprising the metadata to be added to one or more packets of a networking application. The configuration may be received from the third network entity 12 or may be configured manually or preconfigured.
[0083] Action 502. The first network entity 10 obtains the packet of the networking application. The networking application may comprise at least two various execution paths. The first network entity 10 may receive the packet from the network node 13 such as a server or similar associated with the networking application.
[0084] Action 503. The first network entity 10 adds the metadata to the packet, wherein the metadata indicates the part of the process that defines how to handle the packet. The added metadata may comprise an address or an indication of location indicating a part of a packet processing code. The metadata may comprise the indication such as an address pointing to the part or a code block of an application code. The added metadata may be related to the networking application, i.e. , the metadata is specialized or configured for a certain networking application.
[0085] Action 504. The first network entity 10 sends the packet, with the added metadata, to the second network entity 11 in the computer environment for processing the packet.
[0086] Example embodiments of a method performed by the second network entity 11 for handling one or more packets in the computer environment will now be described with reference to a flowchart depicted in Fig. 6. The actions do not have to be taken in the order stated below, but may be taken in any suitable order. Dashed boxes are optional features. The first network entity 10 may be connected to the second network entity 11. The one or more packets may be packets from a networking application that may be related to network testing, a database- related application, a video-related application, a machine learning-related application, or a service of data delivery from storage devices. The first network entity 10 may be separated from the second network entity 11 , and the second network entity 11 may be a processing unit, such as a CPU-based server and the first network entity 10 may be a programmable hardware, such as a programmable switch.
[0087] Action 601. The second network entity 11 may obtain a configuration comprising information that specifies how to process one or more packets of the networking application based on metadata. Thus, the information may regard metadata added to one or more packets of the networking application. The configuration may be received from the third network entity 12 or may be configured manually or preconfigured.
[0088] Action 602. The second network entity 11 receives from the first network entity 10, the packet of the networking application with the added metadata. The metadata indicates the part of the process that defines how to handle the packet. The networking application may comprise at least two various execution paths. The added metadata may comprise an address or an indication of location indicating a part of a packet processing code. The metadata may comprise the indication such as an address pointing to the part or a code block of an application code. The added metadata may be related to the networking application, i.e., the metadata is specialized for a certain networking application.
[0089] Action 603. The second network entity 11 processes the packet in the part of the process based on the metadata. The second network entity 11 may process the packet by forwarding the packet to a processing core, such as a CPU, GPU, FPGA or similar, and the processing core executes the indicated part of the packet processing code. The second network entity 11 may jump to the code or part indicated by the address, i.e., the metadata.
[0090] Example embodiments of a method performed by the third network entity 12 for handling one or more packets in the computer environment will now be described with reference to a flowchart depicted in Fig. 7. The actions do not have to be taken in the order stated below, but may be taken in any suitable order. Dashed boxes are optional features. The first network entity 10 and the second network entity 11 may be connected to the third network entity 12. The one or more packets may be packets from a networking application that may be related to network testing, a database-related application, a video-related application, a machine learning-related application, or a service of data delivery from storage devices. The third network entity 12 may be separated from, or co-located with, the first and the second network entity. The third network entity 12 may be a controlling or analyzing unit such as a processing unit, such as a CPU-based server.
[0091] Action 701. The third network entity 12 may analyze the network application to generate the metadata. For example, the third network entity 12 may perform one or more of the following:
[0092] • finding one or more various branches of handling the networking application;
[0093] • checking which branch can be assessed in the computer environment; and
[0094] • synthesizing a program with an optimized code, based on a capability of the first network entity 10 and extracting information from the first and / or second network entity.
[0095] Action 702. The third network entity 12 configures the first network entity 10 and / or the second network entity 11 to perform the methods herein, respectively.
[0096] Example embodiments of a method performed by the system 100 for handling one or more packets in the computer environment will now be described with reference to a flowchart depicted in Fig. 8. The actions do not have to be taken in the order stated below, but may be taken in any suitable order. The system comprises the first network entity 10, the second network entity 11 , and the third network entity 12. The first network entity 10 and the second network entity 11 may be connected to the third network entity 12. The third network entity 12 may be separated from, or co-located with, the first and the second network entity 10 and 11 respectively.
[0097] Action 801. The system 100, at the third network entity 12, configures the first network entity 10 and / or the second network entity 11 to process one or more packets of a networking application based on metadata attached to the one or more packets.
[0098] Action 802. The system 100, at the first network entity 10, obtains the packet of the networking application and adds metadata to the packet, wherein the metadata indicates the part of the process that specifies how to handle the packet.
[0099] Action 803. The system 100, from the first network entity 10, sends the packet, with the added metadata, to the second network entity 11 in the computer environment 1.
[0100] Action 804. The system 100 processes, at the second network entity 11 , the packet in the part of the process based on the metadata as configured by the third network entity 12.
[0101] More specifically, embodiments herein may comprise one or more of the following:
[0102] The third network entity 12 may analyze the networking application to determine and / or generate the metadata for offloading the parsing logic at the first network entity 10 and may also generate specialized code for each path of the process of handling packets of the networking application.
[0103] The first network entity 10 sends the packet to a right part of the synthesized function by attaching the metadata containing additional information, e.g., the appropriate address of the code for processing the packet or other useful information for packet processing such as static states that can be used by CPU-based server to perform load balancing, resulting in, for example, the execution of a specialized and optimized piece of code for the incoming packet and bypassing one or more unnecessary branches of handling the packet of the networking application.
[0104] Embodiments herein propose a solution for minimizing branch mispredictions and execute a part of the process such as an optimized code for each branch or path of the function such as a binary. Embodiments perform one or more of the following: (i) analyzes, at the third network entity 12, the networking application to detect various paths and / or branches and may craft or generate an optimized code for each path,
[0105] (ii) offloads the parsing and classification logic required for detecting each path in first network entities, such as programmable network devices,
[0106] (iii) builds a customized binary or code that contains specialized and optimized code, with a specific address, for each path of the process of handling packets of the networking application, and
[0107] (iv) configures the second network entity 11 to handle one or more packets at, for example, a location of the program and may execute the specialized code for it by specifying the right address of the code or function as metadata in the packet.
[0108] Note that a code such as a binary path may be coarse-grained, e.g., all the IP packet, or fine-grained, e.g., a flow with a certain 5-tuple hash. By performing the embodiments herein, embodiments herein may process each packet in the most efficient way possible by executing a piece of specialized or optimized code with minimized branch mispredictions. Fig. 9 compares the flow of the networking application after and before applying embodiments herein. As shown, embodiments herein, right-hand side of Fig. 9, can avoid running the default processing pipeline, left-hand side of Fig. 9, when the first network entity 10 embedded the metadata in the packet; see the right branch of the right-hand side Fig. 9, which specifies, for example, the appropriate address of the function for a specialized piece of packet processing code.
[0109] The original version of the program has to iteratively parse and classify each packet and process it sequentially. That is, the packet arrives, application parses and classifies packet. Then the packet is processed and determined whether more actions are required, and the packet may be dropped or transmitted. According to embodiments herein, right-hand side of Fig. 9, the second network entity can immediately process the packet in the most efficient way if the packet contains the metadata, previously attached by the first network entity 10. That is, the packet arrives and it is determined whether the packet has added metadata. That not being the case, the packet follows a default processing pipeline, in the full binary, and then transmitted or dropped. In case the packet has added metadata, jump, for example, to the location in the binary with the specialized and optimized code and the packet is processed from the location and then transmitted or dropped.
[0110] Thus, embodiments herein disclose examples where (i) executing the most optimized code for each packet, specifically made for the networking application, by exploiting the network entities to perform the checking, parsing, and classifying and (ii) avoiding unnecessary operations in the software. Instead of performing various unnecessary checking, parsing, and classifying in the software, embodiments herein jump to the right address of the code based on the information provided by the metadata.
[0111] A high-level exemplary overview of a solution is disclosed in Fig. 10, where NetworkAppSynthesizer 101 , being an example of the third network entity 12, performs various actions to minimize branch mispredictions by, for example, synthesizing a specialized binary containing optimized code for each branch and exploiting programmable network devices to transmit each packet to the right address of the synthesized binary. The NetworkAppSynthesizer 101 is expected to be run at control plane, where the network is managed and orchestrated by configuring different network devices and entities. Therefore, embodiments herein affect mostly entities involved in the network configuration and deployment process.
[0112] The entity called NetworkAppSynthesizer 101 may be used to analyze the networking application and synthesize a new binary with an optimized code for each or several most commonly used paths of the application. Additionally, the NetworkAppSynthesizer 101 may configure the relevant entities, e.g., programmable devices 10’, to enable the networking application to run seamlessly, same as before, but using the new synthesized binary.
[0113] Embodiments herein may perform the following action, Actions 111 to 113 are performed during an initialization phase via the NetworkAppSynthesizer 101 , whereas Actions 114 and 115 are performed during an operation phase by other entities configured by NetworkAppSynthesizer 101 when the incoming traffic destined toward the CPU-based server passes through the programmable network devices:
[0114] 111. Receiving configuration: the NetworkAppSynthesizer 101 may receive information regarding the networking application, network entities, both CPU-based 1 T and programmable entities 10’, and potentially the predicted and / or expected traffic workload from the user or network administrator. As for the networking application, the NetworkAppSynthesizer 101 may require the application’s program, e.g., the source code or the binary of the application.
[0115] 112. Synthesizing and deploying the optimized binary: the
[0116] NetworkAppSynthesizer 101 may perform static analysis, e.g., via symbolic execution that is used to find bugs and improve performance for application, on the received program based on the received configuration / information, e.g., the type of the programmable network devices and their capabilities, to (i) find various paths or branches in the program and (ii) check which ones can be assessed in the network for the given networking application. Then, it decides on the number of paths for the new program and synthesizes a new binary that comprises one or more optimized blocks of code for each path, with predicated branches. The number of branches may be dependent on the code, the switch capabilities & memory, and the server running the code, e.g., the number of cores. In cases where the user has provided information regarding the traffic workload, the NetworkAppSynthesizer 101 may use this information to further optimize the binary, e.g., by reordering the various basic blocks to maximize cache locality and minimize Translation Lookaside Buffer (TLB) misses that affects the virtual to physical memory translations. Finally, the NetworkAppSynthesizer 101 may deploy the synthesized binary on the CPU-based commodity hardware 1 T. The synthesized binary performs a check at the beginning of the program to see whether the first network entity 10, e.g., a programmable switch, Infrastructure Processing Unit (IPU), Data Processing Unit (DPU), or smart NIC, has performed the extra parsing, and branch prediction, or not. This check can be performed by looking for attached metadata. If so, the CPU-based commodity hardware 1 T uses the information provided by the metadata to perform the packet processing in a more optimized way. For instance, the CPU-based commodity hardware 1 T may change the PC by jumping to the address specified by the network as the metadata to run the optimized block of code. It is worth mentioning that the attached metadata may contain relative, virtual, or physical addresses, which is dependent on the type of the application, the operating system, and the commodity server’s features. Otherwise, it runs the original variant of the code without any assumptions about the branches. Incorporating addresses into the packet may introduce security concerns in non-trustable environments, as an attacker may force the application to jump to an unauthorized location of the memory. Therefore, one can use known techniques, e.g., encryption, address mapping, and hashing, to prevent any security attacks. It is worth mentioning that the overall size of the synthesized binary could be much larger than the original binary, which may not entirely fit in the cache memories. However, the code for each path is much smaller compared to the original version, which results in fewer mispredictions and cache misses, thereby improving performance. . Configuring programmable network devices: the NetworkAppSynthesizer 101 configures the programmable network devices 10’, being examples of the first network entity 10, e.g., programmable switches, IPUs, DPUs, or smart NICs, to find the appropriate path for a given packet based on the pre-decided branches and conditions in action 112. Then the first network entity 10 may embed the appropriate program address, to be set as the new PC when running the synthesized binary, in the packet as metadata. The metadata can be prepended, appended, or placed in the middle of the packet. Metadata may comprise at least two fields: (i) a pattern to enable the binary to detect the metadata and (ii) the program address to be set as the new PC. The program address is set based on the addresses of different blocks in the synthesized binary produced in action 112. Metadata can contain additional information to further optimize packet processing, e.g., static states that can be used by CPU-based server to perform load balancing. As one implementation, metadata can be added as a new header between Ethernet and IP. In this case, the metadata pattern could be set empty, as the metadata can be detected by simply defining a new EtherType in the Ethernet header. If metadata is not added, e.g., the path or address is not known or the device does not support parsing & classifying packets, the synthesized binary could ignore the metadata and process the packet similarly to the original version of the networking application. Note that the programmable network devices may perform additional processing on the packets, such as any type of packet processing, e.g., packet classification, load balancing, stateless / stateful operations. It is worth mentioning that the first network entity 10 may only use embodiments herein for high-priority traffic classes or packets and let the rest of the traffic to be handled by the original program, i.e., the slow path of the synthesized binary. . Receiving a new packet on a programmable network device: When a configured programmable network device 10’ receives a packet, the programmable network device 10’ may process the packet according to its pre-defined logic and may then attach a new metadata in the packet to specify the appropriate PC for the synthesized binary. . Receiving a new packet on the commodity server: When the CPU-based commodity server 1 T, being an example of the second network entity 11 , receives a new packet, the CPU-based commodity server 1 T will pass the packet to the appropriate application. For instance, the CPU-based commodity server 1 T may rely on Linux-based or kernel-bypass techniques to perform traffic or flow steering to provide the packet to the networking application as efficiently as possible. Upon receiving a new packet, the networking application of the CPU-based commodity server 11’ may first check to see whether the metadata is included in the new packet or not. If so, the CPUbased commodity server 11’ may use the embedded address in the metadata to jump to the right location of the binary and execute the optimized code for the packet processing. If not, it processes the packets based on the original version of the program.
[0117] Execution of an illustrative example.
[0118] The details of the NetworkAppSynthesizer 101 may be described by executing an example in two main stages: (i) initialization and (ii) operation.
[0119] The NetworkAppSynthesizer 101 may be running on the same CPU-based commodity hardware as the processing server. The processing server may run a networking application similar to Fig. 1 , where the networking application process ARP, QUIC, UDP, and TCP packets differently.
[0120] Initialization.
[0121] Action 111 : The network administrator / user provides the network configuration, i.e., information about the available hardware and programmable network devices, and the networking application, to the NetworkAppSynthesizer 101.
[0122] The network may comprise one CPU-based commodity hardware 1 T and one programmable ASIC-based switch 10’. Additionally, the user may provide the application’s source code to the NetworkAppSynthesizer 101.
[0123] Action 112: The NetworkAppSynthesizer 101 analyzes the application’s source code, synthesizes an optimized code for each path, and then deploys it on the CPU-based commodity server.
[0124] In this example, the NetworkAppSynthesizer 101 may use a symbolic execution engine, e.g., a KLEE, to find various execution paths for the networking application, wherein the application’s source code may comprise N paths. Next, the NetworkAppSynthesizer 101 may produce N pieces of optimized code (P_1 , P_2, ... , P_N) for each path based on the hard-coded values and branches traversing that path of the application. Finally, the NetworkAppSynthesizer 101 synthesizes a new binary based on the optimized codes, and the initial check, and may then deploy the new application on the CPU-based commodity hardware 1 T. The optimized code P_i (i=1 ,2,... ,N) is placed on ADRS_P_i (i=1 ,2, ... ,N) of the binary. For simplicity, it is assumed that the networking application follows a run-to-completion model and incoming traffic is distributed uniformly among cores via existing techniques, e.g., Receive Side Scaling (RSS). However, it is worth mentioning that using parallel models and more sophisticated packet steering techniques are complementary and do not affect this action.
[0125] Action 113: The NetworkAppSynthesizer 101 configures the programmable ASIC-based switch 10’ to parse the incoming packets and embeds the metadata into one or more packets. Note that the NetworkAppSynthesizer 101 already knows the various conditions for each path and their respective address in the binary from the previous step.
[0126] The programmable switches may embed a metadata with address ADRS_P_i (i=1 ,2, ... ,N) as a new header with EtherType ET_N (i.e., not used by other protocols).
[0127] Operation
[0128] Action 114: The programmable ASIC-based switch 10’ receives a packet, parses the packet based on the networking applications’ criteria and then attaches the metadata to the packet.
[0129] The programmable ASIC-based switch 10’ may only attach the metadata, e.g., for the TCP and QUIC packets, e.g., 2 out of 6 paths for the application shown in Fig. 1 and let the slow path of the binary handle the rest of the packets.
[0130] Action 115: Finally, the programmable ASIC-based switch 10’ forwards the packet to its designated CPU-based commodity server 1 T. Thus, the CPU-based commodity hardware 1 T receives the packet, forwards, based on the metadata, the packet to a right core, and the core executes the appropriate piece of code, i.e., either highly optimized or the generic slow path, for the packet.
[0131] The synthesized binary at the second network entity 11 may perform the initial check for each received packet and jump to the specialized piece of code if the packet contains metadata, i.e., equivalently, if the packet is a TCP or QUIC packet. The synthesized binary may execute the original program for other types of packets. Note that the synthesized binary may comprise N paths and N optimized piece of code, but since the programmable switch only embeds the metadata for two paths, i.e., TCP and QUIC packets, the rest of the packets may be processed by the slow path. Fig. 11 depicts in a block diagram manner the first network entity 10 for handling one or more packets in the computer environment 1 according to embodiments herein. The first network entity 10 may be connected to the second network entity 11. The one or more packets may be packets from a networking application, e.g., any of the networking applications being hosted on datacentres, such as social media, video streaming platforms, and web servers, and storage / backup services, that may be related to network testing, a database related application, a video related application, a machine learning related application, or a service of data delivery from storage devices. The first network entity 10 may be separated from the second network entity 11 , and the second network entity 11 may be a processing unit, such as a CPU-based server and the first network entity 10 may be a programmable hardware, such as a programmable switch.
[0132] The first network entity 10 may comprise a respective processing circuitry 1101 , e.g., one or more processors, configured to perform the methods herein, respectively.
[0133] The first network entity 10 and / or the processing circuitry 1101 may be configured to obtain the configuration comprising the metadata to be added to the one or more packets of the networking application. The configuration may be received from the third network entity 12 or may be configured manually or preconfigured.
[0134] The first network entity 10 and / or the processing circuitry 1101 is configured to obtain the packet of the networking application. The networking application may comprise at least two various execution paths. The first network entity 10 and / or the processing circuitry 1101 may be configured to receive the packet from the network node 13 such as a server or similar associated with the networking application.
[0135] The first network entity 10 and / or the processing circuitry 1101 is configured to add the metadata to the packet, wherein the metadata indicates the part of the process that defines how to handle the packet. The added metadata may comprise an address or an indication of location indicating a part of a packet processing code. The metadata may comprise the indication such as an address pointing to the part or a code block of an application code. The added metadata may be related to the networking application, i.e. , the metadata is specialized or configured for a certain networking application.
[0136] The first network entity 10 and / or the processing circuitry 1101 is configured to send the packet, with the added metadata, to the second network entity 11 in the computer environment 1 for processing the packet. The first network entity 10 may comprise a memory 1105. The memory comprises one or more units to be used to store data on, such as data packets, parts of packets, headers, payload, metadata, processing time, configurations, data storage, data structures, hash table, indications, events and applications to perform the methods disclosed herein when being executed, and similar. Furthermore, the first network entity 10 may comprise a communication interface 1106 such as comprising a transmitter, a receiver, a transceiver and / or one or more antennas.
[0137] The methods according to the embodiments described herein for first network entity 10 are respectively implemented by means of e.g., a computer program product 1107 or a computer program, comprising instructions, i.e. , software code portions, which, when executed on at least one processor, cause the at least one processor to carry out the actions described herein, as performed by the first network entity 10. The computer program product 1107 may be stored on a computer-readable storage medium 1108, e.g., a disc, a universal serial bus (USB) stick or similar. The computer-readable storage medium 1108 having stored thereon the computer program product, may comprise the instructions which, when executed on at least one processor, cause the at least one processor to carry out the actions described herein, as performed by the first network entity 10. In some embodiments, the computer-readable storage medium may be a transitory or a non-transitory computer-readable storage medium. Thus, embodiments herein may disclose a first network entity for handling one or more packets in a computer environment, wherein the first network entity comprises processing circuitry and a memory, said memory comprising instructions executable by said processing circuitry whereby said first network entity is operative to perform any of the methods herein.
[0138] Fig. 12 depicts in a block diagram manner the second network entity 11 for handling one or more packets in the computer environment 1 according to embodiments herein. The first network entity 10 may be connected to the second network entity 11. The one or more packets may be packets from a networking application that may be related to network testing, a database-related application, a video-related application, a machine learning-related application, or a service of data delivery from storage devices. The first network entity 10 may be separated from the second network entity 11 , and the second network entity 11 may be a processing unit, such as a CPU-based server and the first network entity 10 may be a programmable hardware, such as a programmable switch. The second network entity 11 may comprise a respective processing circuitry 1201 , e.g., one or more processors, configured to perform the methods herein, respectively.
[0139] The second network entity 11 and / or the processing circuitry 1201 may be configured to obtain a configuration comprising information that specifies how to process one or more packets of the networking application based on metadata. Thus, the information may regard metadata added to one or more packets of the networking application. The configuration may be received from the third network entity 12 or may be configured manually or preconfigured.
[0140] The second network entity 11 and / or the processing circuitry 1201 is configured to receive from the first network entity 10, the packet of the networking application with the added metadata. The metadata indicates the part of the process that defines how to handle the packet. The networking application may comprise at least two various execution paths. The added metadata may comprise an address or an indication of location indicating a part of a packet processing code. The metadata may comprise the indication such as an address pointing to the part or a code block of an application code. The added metadata may be related to the networking application, i.e., the metadata is specialized for a certain networking application.
[0141] The second network entity 11 and / or the processing circuitry 1201 is configured to process the packet in the part of the process based on the metadata. The second network entity 11 and / or the processing circuitry 1201 may be configured to process the packet by forwarding the packet to a processing core, such as a CPU or similar, and the processing core executes the indicated part of the packet processing code. The second network entity 11 and / or the processing circuitry 1201 may be configured to jump to the code or part indicated by the address, i.e., the metadata.
[0142] The second network entity 11 may comprise a memory 1205. The memory comprises one or more units to be used to store data on, such as parts of the packet processing code, data packets, parts of packets, headers, payload, metadata, processing time, configurations, data storage, data structures, hash table, indications, events and applications to perform the methods disclosed herein when being executed, and similar. Furthermore, the second network entity 11 may comprise a communication interface 1206 such as comprising a transmitter, a receiver, a transceiver and / or one or more antennas.
[0143] The methods according to the embodiments described herein for the second network entity 11 are respectively implemented by means of e.g., a computer program product 1207 or a computer program, comprising instructions, i.e., software code portions, which, when executed on at least one processor, cause the at least one processor to carry out the actions described herein, as performed by the second network entity 11. The computer program product 1207 may be stored on a computer-readable storage medium 1208, e.g., a disc, a USB stick or similar. The computer-readable storage medium 1208 having stored thereon the computer program product, may comprise the instructions which, when executed on at least one processor, cause the at least one processor to carry out the actions described herein, as performed by the second network entity 11. In some embodiments, the computer-readable storage medium may be a transitory or a non-transitory computer-readable storage medium. Thus, embodiments herein may disclose a second network entity 11 for handling one or more packets in a computer environment 1 , wherein the second network entity 11 comprises processing circuitry and a memory, said memory comprising instructions executable by said processing circuitry whereby said second network entity 11 is operative to perform any of the methods herein.
[0144] Fig. 13 depicts in a block diagram manner the third network entity 12 for handling one or more packets in the computer environment 1 according to embodiments herein. The first network entity 10 and the second network entity 11 may be connected to the third network entity 12. The one or more packets may be packets from a networking application that may be related to network testing, a database-related application, a video-related application, a machine learning-related application, or a service of data delivery from storage devices. The third network entity 12 may be separated from, or co-located with, the first and the second network entity. The third network entity 12 may be a controlling or analyzing unit such as a processing unit, such as a CPU-based server.
[0145] The third network entity 12 may comprise a respective processing circuitry 1301 , e.g., one or more processors, configured to perform the methods herein, respectively.
[0146] The third network entity 12 and / or the processing circuitry 1301 may be configured to analyze the network application to generate the metadata. For example, the third network entity 12 and / or the processing circuitry 1301 may be configured to perform one or more of the following:
[0147] • finding one or more various branches of handling the networking application;
[0148] • checking which branch can be assessed in the computer environment; and
[0149] • synthesizing a program with an optimized code, based on a capability of the first network entity 10 and extracting information from the first and / or second network entity. The third network entity 12 and / or the processing circuitry 1301 is configured to configure the first network entity 10 and / or the second network entity 11 to perform the methods herein, respectively.
[0150] The third network entity 12 may comprise a memory 1305. The memory comprises one or more units to be used to store data on, such as parts of the configurations, packet processing code, data packets, parts of packets, headers, payload, metadata, processing time, configurations, data storage, data structures, hash table, indications, events and applications to perform the methods disclosed herein when being executed, and similar. Furthermore, the third network entity 12 may comprise a communication interface 1306 such as comprising a transmitter, a receiver, a transceiver and / or one or more antennas.
[0151] The methods according to the embodiments described herein for the third network entity 12 are respectively implemented by means of e.g., a computer program product 1307 or a computer program, comprising instructions, i.e. , software code portions, which, when executed on at least one processor, cause the at least one processor to carry out the actions described herein, as performed by the third network entity 12. The computer program product 1307 may be stored on a computer-readable storage medium 1308, e.g., a disc, a USB stick or similar. The computer-readable storage medium 1308 having stored thereon the computer program product, may comprise the instructions which, when executed on at least one processor, cause the at least one processor to carry out the actions described herein, as performed by the third network entity 12. In some embodiments, the computer-readable storage medium may be a transitory or a non-transitory computer-readable storage medium. Thus, embodiments herein may disclose a third network entity 12 for handling one or more packets in a computer environment 1 , wherein the third network entity 12 comprises processing circuitry and a memory, said memory comprising instructions executable by said processing circuitry whereby said third network entity 12 is operative to perform any of the methods herein.
[0152] Fig. 14 depicts in a block diagram manner the system 100 for handling one or more packets in the computer environment according to embodiments herein. The system 100 comprises the first network entity 10, the second network entity 11 , and the third network entity 12. The first network entity 10 and the second network entity 11 may be connected to the third network entity 12. The third network entity 12 may be separated from, or co-located with, the first and the second network entity. The system 100 may comprise a respective processing circuitry, e.g., one or more processors, configured to perform the methods herein, respectively.
[0153] The system 100 is configured to, at the third network entity 12, configure the first network entity 10 and / or the second network entity 11 to process one or more packets of a networking application based on metadata attached to the one or more packets.
[0154] The system 100 is configured to, at the first network entity 10, obtain the packet of the networking application and add metadata to the packet, wherein the metadata indicates the part of the process that specifies how to handle the packet.
[0155] The system 100 is configured to, from the first network entity 10, send the packet, with the added metadata, to the second network entity 11 in the computer environment 1.
[0156] The system 100 is configured to process, at the second network entity 11 , the packet in the part of the process based on the metadata as configured by the third network entity 12.
[0157] The methods according to the embodiments described herein for the system 100 are respectively implemented by means of e.g., a computer program product 1407 or a computer program, comprising instructions, i.e., software code portions, which, when executed on at least one processor, cause the at least one processor to carry out the actions described herein, as performed by the system 100. The computer program product 1407 may be stored on a computer-readable storage medium 1408, e.g., a disc, a USB stick or similar. The computer- readable storage medium 1408 having stored thereon the computer program product, may comprise the instructions which, when executed on at least one processor, cause the at least one processor to carry out the actions described herein, as performed by the system 100. In some embodiments, the computer-readable storage medium may be a transitory or a non- transitory computer-readable storage medium. Thus, embodiments herein may disclose a system 100 for handling one or more packets in a computer environment, wherein the system 100 comprises processing circuitry and a memory, said memory comprising instructions executable by said processing circuitry whereby said system 100 is operative to perform any of the methods herein.
[0158] As will be readily understood by those familiar with communications design, that functions means or modules may be implemented using digital logic and / or one or more microcontrollers, microprocessors, or other digital hardware. In some embodiments, several or all of the various functions may be implemented together, such as in a single ASIC, or in two or more separate devices with appropriate hardware and / or software interfaces between them. Several of the functions may be implemented on a processor shared with other functional components of a wireless device or network node, for example.
[0159] Alternatively, several of the functional elements of the processing means discussed may be provided through the use of dedicated hardware, while others are provided with hardware for executing software, in association with the appropriate software or firmware. Thus, the term “processor” or “controller” as used herein does not exclusively refer to hardware capable of executing software and may implicitly include, without limitation, Digital Signal Processor (DSP) hardware, Read-Only Memory (ROM) for storing software, randomaccess memory for storing software and / or program or application data, and non-volatile memory. Other hardware, conventional and / or custom, may also be included. Designers of communications devices will appreciate the cost, performance, and maintenance trade-offs inherent in these design choices.
[0160] Fig. 15 shows an example of a communication system QQ100 in accordance with some embodiments.
[0161] In the example, the communication system QQ100 includes a telecommunication network QQ102 that includes an access network QQ104, such as a radio access network (RAN), and a core network QQ106, which includes one or more core network nodes QQ108 being examples of network nodes comprising one or more network entities. The access network QQ104 includes one or more access network nodes, such as network nodes QQ110A and QQ110B (one or more of which may be generally referred to as network nodes QQ110, or any other similar 3rdGeneration Partnership Project (3GPP) access nodes or non- 3GPP access points. Moreover, as will be appreciated by those of skill in the art, a network node, being examples of the entities herein, is not necessarily limited to an implementation in which a radio portion and a baseband portion are supplied and integrated by a single vendor. Thus, it will be understood that network nodes include disaggregated implementations or portions thereof. For example, in some embodiments, the telecommunication network QQ102 includes one or more Open-RAN (ORAN) network nodes. An ORAN network node is a node in the telecommunication network QQ102 that supports an ORAN specification (e.g., a specification published by the O-RAN Alliance, or any similar organization) and may operate alone or together with other nodes to implement one or more functionalities of any node in the telecommunication network QQ102, including one or more network nodes QQ110 and / or core network nodes QQ108. Examples of an ORAN network node include an open radio unit (O-RU), an open distributed unit (O-DU), an open central unit (O-CU), including an O-CU control plane (O-CU- CP) or an O-CU user plane (O-CU-UP), a RAN intelligent controller (near-real time or non- real time) hosting software or software plug-ins, such as a near-real time control application (e.g., xApp) or a non-real time control application (e.g., rApp), or any combination thereof (the adjective “open” designating support of an ORAN specification). The network node may support a specification by, for example, supporting an interface defined by the ORAN specification, such as an A1 , F1 , W1 , E1 , E2, X2, Xn interface, an open fronthaul user plane interface, or an open fronthaul management plane interface. Moreover, an ORAN access node may be a logical node in a physical node. Furthermore, an ORAN network node may be implemented in a virtualization environment (described further below) in which one or more network functions are virtualized. For example, the virtualization environment may include an O-Cloud computing platform orchestrated by a Service Management and Orchestration Framework via an 0-2 interface defined by the O-RAN Alliance or comparable technologies. The network nodes QQ110 facilitate direct or indirect connection of user equipment (UE), such as by connecting UEs QQ112A, QQ112B, QQ1120, and QQ112D (one or more of which may be generally referred to as UEs QQ112) to the core network QQ106 over one or more wireless connections.
[0162] Example wireless communications over a wireless connection include transmitting and / or receiving wireless signals using electromagnetic waves, radio waves, infrared waves, and / or other types of signals suitable for conveying information without the use of wires, cables, or other material conductors. Moreover, in different embodiments, the communication system QQ100 may include any number of wired or wireless networks, network nodes, UEs, and / or any other components or systems that may facilitate or participate in the communication of data and / or signals whether via wired or wireless connections. The communication system QQ100 may include and / or interface with any type of communication, telecommunication, data, cellular, radio network, and / or other similar type of system.
[0163] The UEs QQ112 may be any of a wide variety of communication devices, including wireless devices arranged, configured, and / or operable to communicate wirelessly with the network nodes QQ110 and other communication devices. Similarly, the network nodes QQ110 are arranged, capable, configured, and / or operable to communicate directly or indirectly with the UEs QQ112 and / or with other network nodes or equipment in the telecommunication network QQ102 to enable and / or provide network access, such as wireless network access, and / or to perform other functions, such as administration in the telecommunication network QQ102.
[0164] In the depicted example, the core network QQ106 connects the network nodes QQ110 to one or more hosts, such as host QQ116. These connections may be direct or indirect via one or more intermediary networks or devices. In other examples, network nodes may be directly coupled to hosts. The core network QQ106 includes one more core network nodes (e.g., core network node QQ108) that are structured with hardware and software components. Features of these components may be substantially similar to those described with respect to the UEs, network nodes, and / or hosts, such that the descriptions thereof are generally applicable to the corresponding components of the core network node QQ108. Example core network nodes include functions of one or more of a Mobile Switching Center (MSC), Mobility Management Entity (MME), Home Subscriber Server (HSS), Access and Mobility Management Function (AMF), Session Management Function (SMF), Authentication Server Function (AUSF), Subscription Identifier De-concealing function (SIDF), Unified Data Management (UDM), Security Edge Protection Proxy (SEPP), Network Exposure Function (NEF), and / or a User Plane Function (UPF).
[0165] The host QQ116 may be under the ownership or control of a service provider other than an operator or provider of the access network QQ104 and / or the telecommunication network QQ102, and may be operated by the service provider or on behalf of the service provider. The host QQ116 may host a variety of applications to provide one or more service. Examples of such applications include live and pre-recorded audio / video content, data collection services such as retrieving and compiling data on various ambient conditions detected by a plurality of UEs, analytics functionality, social media, functions for controlling or otherwise interacting with remote devices, functions for an alarm and surveillance center, or any other such function performed by a server.
[0166] As a whole, the communication system QQ100 of Fig. 15 enables connectivity between the UEs, network nodes, and hosts. In that sense, the communication system may be configured to operate according to predefined rules or procedures, such as specific standards that include, but are not limited to: Global System for Mobile Communications (GSM); Universal Mobile Telecommunications System (UMTS); Long Term Evolution (LTE), and / or other suitable 2G, 3G, 4G, 5G standards, or any applicable future generation standard (e.g., 6G); wireless local area network (WLAN) standards, such as the Institute of Electrical and Electronics Engineers (IEEE) 802.11 standards (WiFi); and / or any other appropriate wireless communication standard, such as the Worldwide Interoperability for Microwave Access (WiMax), Bluetooth, Z-Wave, Near Field Communication (NFC) ZigBee, LiFi, and / or any low-power wide-area network (LPWAN) standards such as LoRa and Sigfox.
[0167] In some examples, the telecommunication network QQ102 is a cellular network that implements 3GPP standardized features. Accordingly, the telecommunications network QQ102 may support network slicing to provide different logical networks to different devices that are connected to the telecommunication network QQ102. For example, the telecommunications network QQ102 may provide Ultra Reliable Low Latency Communication (URLLC) services to some UEs, while providing Enhanced Mobile Broadband (eMBB) services to other UEs, and / or Massive Machine Type Communication (mMTC)ZMassive loT services to yet further UEs.
[0168] In some examples, the UEs QQ112 are configured to transmit and / or receive information without direct human interaction. For instance, a UE may be designed to transmit information to the access network QQ104 on a predetermined schedule, when triggered by an internal or external event, or in response to requests from the access network QQ104. Additionally, a UE may be configured for operating in single- or multi-RAT or multi-standard mode. For example, a UE may operate with any one or combination of Wi-Fi, NR (New Radio) and LTE, i.e. being configured for multi-radio dual connectivity (MR-DC), such as E- UTRAN (Evolved-UMTS Terrestrial Radio Access Network) New Radio - Dual Connectivity (EN-DC).
[0169] In the example, the hub QQ114 communicates with the access network QQ104 to facilitate indirect communication between one or more UEs (e.g., UE QQ112C and / or QQ112D) and network nodes (e.g., network node QQ110B). In some examples, the hub QQ114 may be a controller, router, content source and analytics, or any of the other communication devices described herein regarding UEs. For example, the hub QQ114 may be a broadband router enabling access to the core network QQ106 for the UEs. As another example, the hub QQ114 may be a controller that sends commands or instructions to one or more actuators in the UEs. Commands or instructions may be received from the UEs, network nodes QQ110, or by executable code, script, process, or other instructions in the hub QQ114. As another example, the hub QQ114 may be a data collector that acts as temporary storage for UE data and, in some embodiments, may perform analysis or other processing of the data. As another example, the hub QQ114 may be a content source. For example, for a UE that is a VR headset, display, loudspeaker or other media delivery device, the hub QQ114 may retrieve VR assets, video, audio, or other media or data related to sensory information via a network node, which the hub QQ114 then provides to the UE either directly, after performing local processing, and / or after adding additional local content. In still another example, the hub QQ114 acts as a proxy server or orchestrator for the UEs, in particular if one or more of the UEs are low energy loT devices.
[0170] The hub QQ114 may have a constant / persistent or intermittent connection to the network node QQ110b. The hub QQ114 may also allow for a different communication scheme and / or schedule between the hub QQ114 and UEs (e.g., UE QQ112C and / or QQ112D), and between the hub QQ114 and the core network QQ106. In other examples, the hub QQ114 is connected to the core network QQ106 and / or one or more UEs via a wired connection. Moreover, the hub QQ114 may be configured to connect to an M2M service provider over the access network QQ104 and / or to another UE over a direct connection. In some scenarios, UEs may establish a wireless connection with the network nodes QQ110 while still connected via the hub QQ114 via a wired or wireless connection. In some embodiments, the hub QQ114 may be a dedicated hub - that is, a hub whose primary function is to route communications to / from the UEs from / to the network node QQ110B. In other embodiments, the hub QQ114 may be a non-dedicated hub - that is, a device which is capable of operating to route communications between the UEs and network node QQ110B, but which is additionally capable of operating as a communication start and / or end point for certain data channels.
[0171] Fig. 16 shows a UE QQ200 in accordance with some embodiments. As used herein, a UE refers to a device capable, configured, arranged and / or operable to communicate wirelessly with network nodes and / or other UEs. Examples of a UE include, but are not limited to, a smart phone, mobile phone, cell phone, voice over IP (VoIP) phone, wireless local loop phone, desktop computer, personal digital assistant (PDA), wireless cameras, gaming console or device, music storage device, playback appliance, wearable terminal device, wireless endpoint, mobile station, tablet, laptop, laptop-embedded equipment (LEE), laptop-mounted equipment (LME), smart device, wireless customer-premise equipment (CPE), vehicle, vehicle-mounted or vehicle embedded / integrated wireless device, etc. Other examples include any UE identified by the 3rd Generation Partnership Project (3GPP), including a narrow band internet of things (NB-loT) UE, a machine type communication (MTC) UE, and / or an enhanced MTC (eMTC) UE. A UE may support device-to-device (D2D) communication, for example by implementing a 3GPP standard for sidelink communication, Dedicated Short-Range Communication (DSRC), vehicle-to-vehicle (V2V), vehicle-to-infrastructure (V2I), or vehicle- to-everything (V2X). In other examples, a UE may not necessarily have a user in the sense of a human user who owns and / or operates the relevant device. Instead, a UE may represent a device that is intended for sale to, or operation by, a human user but which may not, or which may not initially, be associated with a specific human user (e.g., a smart sprinkler controller). Alternatively, a UE may represent a device that is not intended for sale to, or operation by, an end user but which may be associated with or operated for the benefit of a user (e.g., a smart power meter).
[0172] The UE QQ200 includes processing circuitry QQ202 that is operatively coupled via a bus QQ204 to an input / output interface QQ206, a power source QQ208, a memory QQ210, a communication interface QQ212, and / or any other component, or any combination thereof. Certain UEs may utilize all or a subset of the components shown in Figure 16. The level of integration between the components may vary from one UE to another UE. Further, certain UEs may contain multiple instances of a component, such as multiple processors, memories, transceivers, transmitters, receivers, etc.
[0173] The processing circuitry QQ202 is configured to process instructions and data and may be configured to implement any sequential state machine operative to execute instructions stored as machine-readable computer programs in the memory QQ210. The processing circuitry QQ202 may be implemented as one or more hardware-implemented state machines (e.g., in discrete logic, field-programmable gate arrays (FPGAs), application specific integrated circuits (ASICs), etc.); programmable logic together with appropriate firmware; one or more stored computer programs, general-purpose processors, such as a microprocessor or digital signal processor (DSP), together with appropriate software; or any combination of the above. For example, the processing circuitry QQ202 may include multiple central processing units (CPUs).
[0174] In the example, the input / output interface QQ206 may be configured to provide an interface or interfaces to an input device, output device, or one or more input and / or output devices. Examples of an output device include a speaker, a sound card, a video card, a display, a monitor, a printer, an actuator, an emitter, a smartcard, another output device, or any combination thereof. An input device may allow a user to capture information into the UE QQ200. Examples of an input device include a touch-sensitive or presence-sensitive display, a camera (e.g., a digital camera, a digital video camera, a web camera, etc.), a microphone, a sensor, a mouse, a trackball, a directional pad, a trackpad, a scroll wheel, a smartcard, and the like. The presence-sensitive display may include a capacitive or resistive touch sensor to sense input from a user. A sensor may be, for instance, an accelerometer, a gyroscope, a tilt sensor, a force sensor, a magnetometer, an optical sensor, a proximity sensor, a biometric sensor, etc., or any combination thereof. An output device may use the same type of interface port as an input device. For example, a Universal Serial Bus (USB) port may be used to provide an input device and an output device.
[0175] In some embodiments, the power source QQ208 is structured as a battery or battery pack. Other types of power sources, such as an external power source (e.g., an electricity outlet), photovoltaic device, or power cell, may be used. The power source QQ208 may further include power circuitry for delivering power from the power source QQ208 itself, and / or an external power source, to the various parts of the UE QQ200 via input circuitry or an interface such as an electrical power cable. Delivering power may be, for example, for charging of the power source QQ208. Power circuitry may perform any formatting, converting, or other modification to the power from the power source QQ208 to make the power suitable for the respective components of the UE QQ200 to which power is supplied.
[0176] The memory QQ210 may be or be configured to include memory such as random access memory (RAM), read-only memory (ROM), programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), magnetic disks, optical disks, hard disks, removable cartridges, flash drives, and so forth. In one example, the memory QQ210 includes one or more application programs QQ214, such as an operating system, web browser application, a widget, gadget engine, or other application, and corresponding data QQ216. The memory QQ210 may store, for use by the UE QQ200, any of a variety of various operating systems or combinations of operating systems.
[0177] The memory QQ210 may be configured to include a number of physical drive units, such as redundant array of independent disks (RAID), flash memory, USB flash drive, external hard disk drive, thumb drive, pen drive, key drive, high-density digital versatile disc (HD-DVD) optical disc drive, internal hard disk drive, Blu-Ray optical disc drive, holographic digital data storage (HDDS) optical disc drive, external mini-dual in-line memory module (DIMM), synchronous dynamic random access memory (SDRAM), external micro-DIMM SDRAM, smartcard memory such as tamper resistant module in the form of a universal integrated circuit card (UICC) including one or more subscriber identity modules (SIMs), such as a USIM and / or I SIM, other memory, or any combination thereof. The UICC may for example be an embedded UICC (eUlCC), integrated UICC (iUICC) or a removable UICC commonly known as ‘SIM card.’ The memory QQ210 may allow the UE QQ200 to access instructions, application programs and the like, stored on transitory or non-transitory memory media, to off-load data, or to upload data. An article of manufacture, such as one utilizing a communication system may be tangibly embodied as or in the memory QQ210, which may be or comprise a device-readable storage medium.
[0178] The processing circuitry QQ202 may be configured to communicate with an access network or other network using the communication interface QQ212. The communication interface QQ212 may comprise one or more communication subsystems and may include or be communicatively coupled to an antenna QQ222. The communication interface QQ212 may include one or more transceivers used to communicate, such as by communicating with one or more remote transceivers of another device capable of wireless communication (e.g., another UE or a network node in an access network). Each transceiver may include a transmitter QQ218 and / or a receiver QQ220 appropriate to provide network communications (e.g., optical, electrical, frequency allocations, and so forth). Moreover, the transmitter QQ218 and receiver QQ220 may be coupled to one or more antennas (e.g., antenna QQ222) and may share circuit components, software or firmware, or alternatively be implemented separately.
[0179] In the illustrated embodiment, communication functions of the communication interface QQ212 may include cellular communication, Wi-Fi communication, LPWAN communication, data communication, voice communication, multimedia communication, short-range communications such as Bluetooth, near-field communication, location-based communication such as the use of the global positioning system (GPS) to determine a location, another like communication function, or any combination thereof. Communications may be implemented in according to one or more communication protocols and / or standards, such as IEEE 802.11 , Code Division Multiplexing Access (CDMA), Wideband Code Division Multiple Access (WCDMA), GSM, LTE, New Radio (NR), UMTS, WiMax, Ethernet, transmission control protocol / internet protocol (TCP / IP), synchronous optical networking (SONET), Asynchronous Transfer Mode (ATM), QUIC, Hypertext Transfer Protocol (HTTP), and so forth. Regardless of the type of sensor, a UE may provide an output of data captured by its sensors, through its communication interface QQ212, via a wireless connection to a network node. Data captured by sensors of a UE can be communicated through a wireless connection to a network node via another UE. The output may be periodic (e.g., once every 15 minutes if it reports the sensed temperature), random (e.g., to even out the load from reporting from several sensors), in response to a triggering event (e.g., when moisture is detected an alert is sent), in response to a request (e.g., a user initiated request), or a continuous stream (e.g., a live video feed of a patient).
[0180] As another example, a UE comprises an actuator, a motor, or a switch, related to a communication interface configured to receive wireless input from a network node via a wireless connection. In response to the received wireless input the states of the actuator, the motor, or the switch may change. For example, the UE may comprise a motor that adjusts the control surfaces or rotors of a drone in flight according to the received input or to a robotic arm performing a medical procedure according to the received input.
[0181] A UE, when in the form of an Internet of Things (loT) device, may be a device for use in one or more application domains, these domains comprising, but not limited to, city wearable technology, extended industrial application and healthcare. Non-limiting examples of such an loT device are a device which is or which is embedded in: a connected refrigerator or freezer, a TV, a connected lighting device, an electricity meter, a robot vacuum cleaner, a voice controlled smart speaker, a home security camera, a motion detector, a thermostat, a smoke detector, a door / window sensor, a flood / moisture sensor, an electrical door lock, a connected doorbell, an air conditioning system like a heat pump, an autonomous vehicle, a surveillance system, a weather monitoring device, a vehicle parking monitoring device, an electric vehicle charging station, a smart watch, a fitness tracker, a head-mounted display for Augmented Reality (AR) or Virtual Reality (VR), a wearable for tactile augmentation or sensory enhancement, a water sprinkler, an animal- or item-tracking device, a sensor for monitoring a plant or animal, an industrial robot, an Unmanned Aerial Vehicle (UAV), and any kind of medical device, like a heart rate monitor or a remote controlled surgical robot. A UE in the form of an loT device comprises circuitry and / or software in dependence of the intended application of the loT device in addition to other components as described in relation to the UE QQ200 shown in Figure 16.
[0182] As yet another specific example, in an loT scenario, a UE may represent a machine or other device that performs monitoring and / or measurements, and transmits the results of such monitoring and / or measurements to another UE and / or a network node. The UE may in this case be an M2M device, which may in a 3GPP context be referred to as an MTC device. As one particular example, the UE may implement the 3GPP NB-loT standard. In other scenarios, a UE may represent a vehicle, such as a car, a bus, a truck, a ship and an airplane, or other equipment that is capable of monitoring and / or reporting on its operational status or other functions associated with its operation.
[0183] In practice, any number of UEs may be used together with respect to a single use case. For example, a first UE might be or be integrated in a drone and provide the drone’s speed information (obtained through a speed sensor) to a second UE that is a remote controller operating the drone. When the user makes changes from the remote controller, the first UE may adjust the throttle on the drone (e.g. by controlling an actuator) to increase or decrease the drone’s speed. The first and / or the second UE can also include more than one of the functionalities described above. For example, a UE might comprise the sensor and the actuator, and handle communication of data for both the speed sensor and the actuators.
[0184] Figure 17 shows a network node QQ300 in accordance with some embodiments. As used herein, network node refers to equipment capable, configured, arranged and / or operable to communicate directly or indirectly with a UE and / or with other network nodes or equipment, in a telecommunication network. Examples of network nodes include, but are not limited to, access points (APs) (e.g., radio access points), base stations (BSs) (e.g., radio base stations, Node Bs, evolved Node Bs (eNBs) and NR NodeBs (gNBs)), O-RAN nodes or components of an O-RAN node (e.g., O-RU, O-DU, O-CU).
[0185] Base stations may be categorized based on the amount of coverage they provide (or, stated differently, their transmit power level) and so, depending on the provided amount of coverage, may be referred to as femto base stations, pico base stations, micro base stations, or macro base stations. A base station may be a relay node or a relay donor node controlling a relay. A network node may also include one or more (or all) parts of a distributed radio base station such as centralized digital units, distributed units (e.g., in an O-RAN access node) and / or remote radio units (RRUs), sometimes referred to as Remote Radio Heads (RRHs). Such remote radio units may or may not be integrated with an antenna as an antenna integrated radio. Parts of a distributed radio base station may also be referred to as nodes in a distributed antenna system (DAS).
[0186] Other examples of network nodes include multiple transmission and reception point (multi-TRP) 5G access nodes, Multi-Standard Radio (MSR) equipment such as MSR BSs, network controllers such as Radio Network Controllers (RNC) or Base Station Controllers (BSC), Base Transceiver Stations (BTS), transmission points, transmission nodes, Multi- cell / Multicast Coordination Entities (MCE), Operation and Maintenance (O&M) nodes, Operations Support System (OSS) nodes, Self-Organizing Network (SON) nodes, positioning nodes, e.g., Evolved Serving Mobile Location Centers (E-SMLC), and / or Minimization of Drive Tests (MDT).
[0187] The network node QQ300 includes a processing circuitry QQ302, a memory QQ304, a communication interface QQ306, and a power source QQ308. The network node QQ300 may be composed of multiple physically separate components, e.g., a NodeB component and a RNC component, or a BTS component and a BSC component, etc., which may each have their own respective components. In certain scenarios in which the network node QQ300 comprises multiple separate components (e.g., BTS and BSC components), one or more of the separate components may be shared among several network nodes. For example, a single RNC may control multiple NodeBs. In such a scenario, each unique NodeB and RNC pair, may in some instances be considered a single separate network node. In some embodiments, the network node QQ300 may be configured to support multiple radio access technologies (RATs). In such embodiments, some components may be duplicated (e.g., separate memory QQ304 for different RATs) and some components may be reused (e.g., a same antenna QQ310 may be shared by different RATs). The network node QQ300 may also include multiple sets of the various illustrated components for different wireless technologies integrated into network node QQ300, for example GSM, WCDMA, LTE, NR, WiFi, Zigbee, Z-wave, LoRaWAN, Radio Frequency Identification (RFID) or Bluetooth wireless technologies. These wireless technologies may be integrated into the same or different chip or set of chips and other components within network node QQ300.
[0188] The processing circuitry QQ302 may comprise a combination of one or more of a microprocessor, controller, microcontroller, central processing unit, digital signal processor, application-specific integrated circuit, field programmable gate array, or any other suitable computing device, resource, or combination of hardware, software and / or encoded logic operable to provide, either alone or in conjunction with other network node QQ300 components, such as the memory QQ304, to provide network node QQ300 functionality.
[0189] In some embodiments, the processing circuitry QQ302 includes a System On a Chip (SOC). In some embodiments, the processing circuitry QQ302 includes one or more of Radio Frequency (RF) transceiver circuitry QQ312 and baseband processing circuitry QQ314. In some embodiments, the RF transceiver circuitry QQ312 and the baseband processing circuitry QQ314 may be on separate chips (or sets of chips), boards, or units, such as radio units and digital units. In alternative embodiments, part or all of RF transceiver circuitry QQ312 and baseband processing circuitry QQ314 may be on the same chip or set of chips, boards, or units.
[0190] The memory QQ304 may comprise any form of volatile or non-volatile computer- readable memory including, without limitation, persistent storage, solid-state memory, remotely mounted memory, magnetic media, optical media, random access memory (RAM), read-only memory (ROM), mass storage media (for example, a hard disk), removable storage media (for example, a flash drive, a Compact Disk (CD) or a Digital Video Disk (DVD)), and / or any other volatile or non-volatile, non-transitory device-readable and / or computer-executable memory devices that store information, data, and / or instructions that may be used by the processing circuitry QQ302. The memory QQ304 may store any suitable instructions, data, or information, including a computer program, software, an application including one or more of logic, rules, code, tables, and / or other instructions capable of being executed by the processing circuitry QQ302 and utilized by the network node QQ300. The memory QQ304 may be used to store any calculations made by the processing circuitry QQ302 and / or any data received via the communication interface QQ306. In some embodiments, the processing circuitry QQ302 and memory QQ304 is integrated.
[0191] The communication interface QQ306 is used in wired or wireless communication of signaling and / or data between a network node, access network, and / or UE. As illustrated, the communication interface QQ306 comprises port(s) / terminal(s) QQ316 to send and receive data, for example to and from a network over a wired connection. The communication interface QQ306 also includes radio front-end circuitry QQ318 that may be coupled to, or in certain embodiments a part of, the antenna QQ310. Radio front-end circuitry QQ318 comprises filters QQ320 and amplifiers QQ322. The radio front-end circuitry QQ318 may be connected to an antenna QQ310 and processing circuitry QQ302. The radio front-end circuitry may be configured to condition signals communicated between antenna QQ310 and processing circuitry QQ302. The radio front-end circuitry QQ318 may receive digital data that is to be sent out to other network nodes or UEs via a wireless connection. The radio front-end circuitry QQ318 may convert the digital data into a radio signal having the appropriate channel and bandwidth parameters using a combination of filters QQ320 and / or amplifiers QQ322. The radio signal may then be transmitted via the antenna QQ310. Similarly, when receiving data, the antenna QQ310 may collect radio signals which are then converted into digital data by the radio front-end circuitry QQ318. The digital data may be passed to the processing circuitry QQ302. In other embodiments, the communication interface may comprise different components and / or different combinations of components.
[0192] In certain alternative embodiments, the network node QQ300 does not include separate radio front-end circuitry QQ318, instead, the processing circuitry QQ302 includes radio front-end circuitry and is connected to the antenna QQ310. Similarly, in some embodiments, all or some of the RF transceiver circuitry QQ312 is part of the communication interface QQ306. In still other embodiments, the communication interface QQ306 includes one or more ports or terminals QQ316, the radio front-end circuitry QQ318, and the RF transceiver circuitry QQ312, as part of a radio unit (not shown), and the communication interface QQ306 communicates with the baseband processing circuitry QQ314, which is part of a digital unit (not shown).
[0193] The antenna QQ310 may include one or more antennas, or antenna arrays, configured to send and / or receive wireless signals. The antenna QQ310 may be coupled to the radio front-end circuitry QQ318 and may be any type of antenna capable of transmitting and receiving data and / or signals wirelessly. In certain embodiments, the antenna QQ310 is separate from the network node QQ300 and connectable to the network node QQ300 through an interface or port.
[0194] The antenna QQ310, communication interface QQ306, and / or the processing circuitry QQ302 may be configured to perform any receiving operations and / or certain obtaining operations described herein as being performed by the network node. Any information, data and / or signals may be received from a UE, another network node and / or any other network equipment. Similarly, the antenna QQ310, the communication interface QQ306, and / or the processing circuitry QQ302 may be configured to perform any transmitting operations described herein as being performed by the network node. Any information, data and / or signals may be transmitted to a UE, another network node and / or any other network equipment.
[0195] The power source QQ308 provides power to the various components of network node QQ300 in a form suitable for the respective components (e.g., at a voltage and current level needed for each respective component). The power source QQ308 may further comprise, or be coupled to, power management circuitry to supply the components of the network node QQ300 with power for performing the functionality described herein. For example, the network node QQ300 may be connectable to an external power source (e.g., the power grid, an electricity outlet) via an input circuitry or interface such as an electrical cable, whereby the external power source supplies power to power circuitry of the power source QQ308. As a further example, the power source QQ308 may comprise a source of power in the form of a battery or battery pack which is connected to, or integrated in, power circuitry. The battery may provide backup power should the external power source fail.
[0196] Embodiments of the network node QQ300 may include additional components beyond those shown in Figure 17 for providing certain aspects of the network node’s functionality, including any of the functionality described herein and / or any functionality necessary to support the subject matter described herein. For example, the network node QQ300 may include user interface equipment to allow input of information into the network node QQ300 and to allow output of information from the network node QQ300. This may allow a user to perform diagnostic, maintenance, repair, and other administrative functions for the network node QQ300.
[0197] Figure 18 is a block diagram of a host QQ400, which may be an embodiment of the host QQ116 of Figure 15, in accordance with various aspects described herein. As used herein, the host QQ400 may be or comprise various combinations hardware and / or software, including a standalone server, a blade server, a cloud-implemented server, a distributed server, a virtual machine, container, or processing resources in a server farm. The host QQ400 may provide one or more services to one or more UEs.
[0198] The host QQ400 includes processing circuitry QQ402 that is operatively coupled via a bus QQ404 to an input / output interface QQ406, a network interface QQ408, a power source QQ410, and a memory QQ412. Other components may be included in other embodiments. Features of these components may be substantially similar to those described with respect to the devices of previous figures, such as Figures 16 and 17, such that the descriptions thereof are generally applicable to the corresponding components of host QQ400.
[0199] The memory QQ412 may include one or more computer programs including one or more host application programs QQ414 and data QQ416, which may include user data, e.g., data generated by a UE for the host QQ400 or data generated by the host QQ400 for a UE. Embodiments of the host QQ400 may utilize only a subset or all of the components shown. The host application programs QQ414 may be implemented in a container-based architecture and may provide support for video codecs (e.g., Versatile Video Coding (WC), High Efficiency Video Coding (HEVC), Advanced Video Coding (AVC), MPEG, VP9) and audio codecs (e.g., FLAG, Advanced Audio Coding (AAC), MPEG, G.711), including transcoding for multiple different classes, types, or implementations of UEs (e.g., handsets, desktop computers, wearable display systems, heads-up display systems). The host application programs QQ414 may also provide for user authentication and licensing checks and may periodically report health, routes, and content availability to a central node, such as a device in or on the edge of a core network. Accordingly, the host QQ400 may select and / or indicate a different host for over-the-top services for a UE. The host application programs QQ414 may support various protocols, such as the HTTP Live Streaming (HLS) protocol, Real-Time Messaging Protocol (RTMP), Real-Time Streaming Protocol (RTSP), Dynamic Adaptive Streaming over HTTP (MPEG-DASH), etc.
[0200] Figure 19 is a block diagram illustrating a virtualization environment QQ500 in which functions implemented by some embodiments may be virtualized. In the present context, virtualizing means creating virtual versions of apparatuses or devices which may include virtualizing hardware platforms, storage devices and networking resources. As used herein, virtualization can be applied to any device described herein, or components thereof, and relates to an implementation in which at least a portion of the functionality is implemented as one or more virtual components. Some or all of the functions described herein may be implemented as virtual components executed by one or more virtual machines (VMs) implemented in one or more virtual environments QQ500 hosted by one or more of hardware nodes, such as a hardware computing device that operates as a network node, UE, core network node, or host. Further, in embodiments in which the virtual node does not require radio connectivity (e.g., a core network node or host), then the node may be entirely virtualized. In some embodiments, the virtualization environment QQ500 includes components defined by the O-RAN Alliance, such as an O-Cloud environment orchestrated by a Service Management and Orchestration Framework via an 0-2 interface.
[0201] Applications QQ502 (which may alternatively be called software instances, virtual appliances, network functions, virtual nodes, virtual network functions, etc.) are run in the virtualization environment QQ500 to implement some of the features, functions, and / or benefits of some of the embodiments disclosed herein.
[0202] Hardware QQ504 includes processing circuitry, memory that stores software and / or instructions executable by hardware processing circuitry, and / or other hardware devices as described herein, such as a network interface, input / output interface, and so forth. Software may be executed by the processing circuitry to instantiate one or more virtualization layers QQ506 (also referred to as hypervisors or virtual machine monitors (VMMs)), provide VMs QQ508A and QQ508B (one or more of which may be generally referred to as VMs QQ508), and / or perform any of the functions, features and / or benefits described in relation with some embodiments described herein. The virtualization layer QQ506 may present a virtual operating platform that appears like networking hardware to the VMs QQ508.
[0203] The VMs QQ508 comprise virtual processing, virtual memory, virtual networking or interface and virtual storage, and may be run by a corresponding virtualization layer QQ506. Different embodiments of the instance of a virtual appliance QQ502 may be implemented on one or more of VMs QQ508, and the implementations may be made in different ways. Virtualization of the hardware is in some contexts referred to as network function virtualization (NFV). NFV may be used to consolidate many network equipment types onto industry standard high volume server hardware, physical switches, and physical storage, which can be located in data centers, and customer premise equipment.
[0204] In the context of NFV, a VM QQ508 may be a software implementation of a physical machine that runs programs as if they were executing on a physical, non-virtualized machine. Each of the VMs QQ508, and that part of hardware QQ504 that executes that VM, be it hardware dedicated to that VM and / or hardware shared by that VM with others of the VMs, forms separate virtual network elements. Still in the context of NFV, a virtual network function is responsible for handling specific network functions that run in one or more VMs QQ508 on top of the hardware QQ504 and corresponds to the application QQ502.
[0205] Hardware QQ504 may be implemented in a standalone network node with generic or specific components. Hardware QQ504 may implement some functions via virtualization. Alternatively, hardware QQ504 may be part of a larger cluster of hardware (e.g. such as in a data center or CPE) where many hardware nodes work together and are managed via management and orchestration QQ510, which, among others, oversees lifecycle management of applications QQ502. In some embodiments, hardware QQ504 is coupled to one or more radio units that each include one or more transmitters and one or more receivers that may be coupled to one or more antennas. Radio units may communicate directly with other hardware nodes via one or more appropriate network interfaces and may be used in combination with the virtual components to provide a virtual node with radio capabilities, such as a radio access node or a base station. In some embodiments, some signaling can be provided with the use of a control system QQ512 which may alternatively be used for communication between hardware nodes and radio units. Figure 20 shows a communication diagram of a host QQ602 communicating via a network node QQ604 with a UE QQ606 over a partially wireless connection in accordance with some embodiments. Example implementations, in accordance with various embodiments, of the UE (such as a UE QQ112A of Figure 15 and / or UE QQ200 of Figure 16), network node (such as network node QQ110A of Figure 15 and / or network node QQ300 of Figure 17), and host (such as host QQ116 of Figure 15 and / or host QQ400 of Figure 18) discussed in the preceding paragraphs will now be described with reference to Figure 20.
[0206] Like host QQ400, embodiments of host QQ602 include hardware, such as a communication interface, processing circuitry, and memory. The host QQ602 also includes software, which is stored in or accessible by the host QQ602 and executable by the processing circuitry. The software includes a host application that may be operable to provide a service to a remote user, such as the UE QQ606 connecting via an over-the-top (OTT) connection QQ650 extending between the UE QQ606 and host QQ602. In providing the service to the remote user, a host application may provide user data which is transmitted using the OTT connection QQ650.
[0207] The network node QQ604 includes hardware enabling it to communicate with the host QQ602 and UE QQ606. The connection QQ660 may be direct or pass through a core network (like core network QQ106 of Figure 15) and / or one or more other intermediate networks, such as one or more public, private, or hosted networks. For example, an intermediate network may be a backbone network or the Internet.
[0208] The UE QQ606 includes hardware and software, which is stored in or accessible by UE QQ606 and executable by the UE’s processing circuitry. The software includes a client application, such as a web browser or operator-specific “app” that may be operable to provide a service to a human or non-human user via UE QQ606 with the support of the host QQ602. In the host QQ602, an executing host application may communicate with the executing client application via the OTT connection QQ650 terminating at the UE QQ606 and host QQ602. In providing the service to the user, the UE's client application may receive request data from the host's host application and provide user data in response to the request data. The OTT connection QQ650 may transfer both the request data and the user data. The UE's client application may interact with the user to generate the user data that it provides to the host application through the OTT connection QQ650.
[0209] The OTT connection QQ650 may extend via a connection QQ660 between the host QQ602 and the network node QQ604 and via a wireless connection QQ670 between the network node QQ604 and the UE QQ606 to provide the connection between the host QQ602 and the UE QQ606. The connection QQ660 and wireless connection QQ670, over which the OTT connection QQ650 may be provided, have been drawn abstractly to illustrate the communication between the host QQ602 and the UE QQ606 via the network node QQ604, without explicit reference to any intermediary devices and the precise routing of messages via these devices.
[0210] As an example of transmitting data via the OTT connection QQ650, in step QQ608, the host QQ602 provides user data, which may be performed by executing a host application. In some embodiments, the user data is associated with a particular human user interacting with the UE QQ606. In other embodiments, the user data is associated with a UE QQ606 that shares data with the host QQ602 without explicit human interaction. In step QQ610, the host QQ602 initiates a transmission carrying the user data towards the UE QQ606. The host QQ602 may initiate the transmission responsive to a request transmitted by the UE QQ606. The request may be caused by human interaction with the UE QQ606 or by operation of the client application executing on the UE QQ606. The transmission may pass via the network node QQ604, in accordance with the teachings of the embodiments described throughout this disclosure. Accordingly, in step QQ612, the network node QQ604 transmits to the UE QQ606 the user data that was carried in the transmission that the host QQ602 initiated, in accordance with the teachings of the embodiments described throughout this disclosure. In step QQ614, the UE QQ606 receives the user data carried in the transmission, which may be performed by a client application executed on the UE QQ606 associated with the host application executed by the host QQ602.
[0211] In some examples, the UE QQ606 executes a client application which provides user data to the host QQ602. The user data may be provided in reaction or response to the data received from the host QQ602. Accordingly, in step QQ616, the UE QQ606 may provide user data, which may be performed by executing the client application. In providing the user data, the client application may further consider user input received from the user via an input / output interface of the UE QQ606. Regardless of the specific manner in which the user data was provided, the UE QQ606 initiates, in step QQ618, transmission of the user data towards the host QQ602 via the network node QQ604. In step QQ620, in accordance with the teachings of the embodiments described throughout this disclosure, the network node QQ604 receives user data from the UE QQ606 and initiates transmission of the received user data towards the host QQ602. In step QQ622, the host QQ602 receives the user data carried in the transmission initiated by the UE QQ606.
[0212] One or more of the various embodiments improve the performance of OTT services provided to the UE QQ606 using the OTT connection QQ650, in which the wireless connection QQ670 forms the last segment. More precisely, the teachings of these embodiments may improve the latency and packet handling and thereby provide benefits such as reduced user waiting time, better responsiveness or similar.
[0213] In an example scenario, factory status information may be collected and analyzed by the host QQ602. As another example, the host QQ602 may process audio and video data which may have been retrieved from a UE for use in creating maps. As another example, the host QQ602 may collect and analyze real-time data to assist in controlling vehicle congestion (e.g., controlling traffic lights). As another example, the host QQ602 may store surveillance video uploaded by a UE. As another example, the host QQ602 may store or control access to media content such as video, audio, VR or AR which it can broadcast, multicast or unicast to UEs. As other examples, the host QQ602 may be used for energy pricing, remote control of non-time critical electrical load to balance power generation needs, location services, presentation services (such as compiling diagrams etc. from data collected from remote devices), or any other function of collecting, retrieving, storing, analyzing and / or transmitting data.
[0214] In some examples, a measurement procedure may be provided for the purpose of monitoring data rate, latency and other factors on which the one or more embodiments improve. There may further be an optional network functionality for reconfiguring the OTT connection QQ650 between the host QQ602 and UE QQ606, in response to variations in the measurement results. The measurement procedure and / or the network functionality for reconfiguring the OTT connection may be implemented in software and hardware of the host QQ602 and / or UE QQ606. In some embodiments, sensors (not shown) may be deployed in or in association with other devices through which the OTT connection QQ650 passes; the sensors may participate in the measurement procedure by supplying values of the monitored quantities exemplified above, or supplying values of other physical quantities from which software may compute or estimate the monitored quantities. The reconfiguring of the OTT connection QQ650 may include message format, retransmission settings, preferred routing etc.; the reconfiguring need not directly alter the operation of the network node QQ604. Such procedures and functionalities may be known and practiced in the art. In certain embodiments, measurements may involve proprietary UE signaling that facilitates measurements of throughput, propagation times, latency and the like, by the host QQ602. The measurements may be implemented in that software causes messages to be transmitted, in particular empty or ‘dummy’ messages, using the OTT connection QQ650 while monitoring propagation times, errors, etc.
[0215] Although the computing devices described herein (e.g., UEs, network nodes, hosts) may include the illustrated combination of hardware components, other embodiments may comprise computing devices with different combinations of components. It is to be understood that these computing devices may comprise any suitable combination of hardware and / or software needed to perform the tasks, features, functions and methods disclosed herein. Determining, calculating, obtaining or similar operations described herein may be performed by processing circuitry, which may process information by, for example, converting the obtained information into other information, comparing the obtained information or converted information to information stored in the network node, and / or performing one or more operations based on the obtained information or converted information, and as a result of said processing making a determination. Moreover, while components are depicted as single boxes located within a larger box, or nested within multiple boxes, in practice, computing devices may comprise multiple different physical components that make up a single illustrated component, and functionality may be partitioned between separate components. For example, a communication interface may be configured to include any of the components described herein, and / or the functionality of the components may be partitioned between the processing circuitry and the communication interface. In another example, non-computationally intensive functions of any of such components may be implemented in software or firmware and computationally intensive functions may be implemented in hardware.
[0216] In certain embodiments, some or all of the functionality described herein may be provided by processing circuitry executing instructions stored on in memory, which in certain embodiments may be a computer program product in the form of a non-transitory computer- readable storage medium. In alternative embodiments, some or all of the functionality may be provided by the processing circuitry without executing instructions stored on a separate or discrete device-readable storage medium, such as in a hard-wired manner. In any of those particular embodiments, whether executing instructions stored on a non-transitory computer- readable storage medium or not, the processing circuitry can be configured to perform the described functionality. The benefits provided by such functionality are not limited to the processing circuitry alone or to other components of the computing device, but are enjoyed by the computing device as a whole, and / or by end users and a wireless network generally.
[0217] It will be appreciated that the foregoing description and the accompanying drawings represent non-limiting examples of the methods and apparatus taught herein. As such, the apparatus and techniques taught herein are not limited by the foregoing description and accompanying drawings. Instead, the embodiments herein are limited only by the following claims and their legal equivalents.
Claims
CLAIMS1 . A method performed by a first network entity (10) for handling one or more packets in a computer environment (1), the method comprising: obtaining (502) a packet of a networking application; adding (503) metadata to the packet, wherein the metadata indicates a part of a process that specifies how to handle the packet; and sending (504) the packet, with the added metadata, to a second network entity (11) in the computer environment (1) for processing the packet.
2. The method according to claim 1 , wherein the added metadata is related to the networking application.
3. The method according to any of the claims 1-2, wherein the added metadata comprises an address or an indication of location indicating a part of a packet processing code.
4. The method according to any of the claims 1-3, further comprising obtaining (501) a configuration comprising the metadata to be added to one or more packets of a networking application.
5. A method performed by a second network entity (11) for handling one or more packets in a computer environment (1), the method comprising: receiving (602) from a first network entity (10), a packet of a networking application with added metadata, wherein the metadata indicates a part of a process that specifies how to handle the packet; and- processing (603) the packet in the part of the process based on the metadata.
6. The method according to claim 5, wherein the added metadata is related to the networking application.
7. The method according to any of the claims 5-6, wherein the added metadata comprises an address or an indication of location indicating a part of a packet processing code.
8. The method according to claim 7, wherein processing (603) the packet comprises forwarding the packet to a processing core, and the processing core executes the indicated part of the packet processing code.
9. The method according to any of the claims 5-8, further comprising obtaining (601) a configuration comprising information how to process one or more packets of a networking application based on metadata.
10. A method performed by a third network entity for handling one or more packets in a computer environment (1), the method comprising configuring (702) a first network entity (10) and / or a second network entity (11) to perform the method according to any of the claims 1-9, respectively.
11. The method according to claim 10, further comprising analyzing (701) a network application to generate the metadata.
12. The method according to claim 11 , wherein analyzing (701) the network application comprises one or more of the following:• finding one or more various branches of handling the networking application;• checking which branch can be assessed in the computer environment (1); and• synthesizing a program with an optimized code, based on a capability of the first network entity (10) and extracted information from the first and / or second network entity.
13. A method performed by a system (100) for handling one or more packets in a computer environment (1), wherein the system (100) comprises a first network entity (10), a second network entity (11), and a third network entity (12), the method comprising: at the third network entity (12), configuring (801) the first network entity (10) and / or the second network entity (11) to process one or more packets of a networking application based on metadata attached to the one or more packets,at the first network entity (10), obtaining (802) a packet of the networking application and adding metadata to the packet, wherein the metadata indicates a part of a process that specifies how to handle the packet; sending (803), from the first network entity (10), the packet, with the added metadata, to the second network entity (11) in the computer environment (1); and- processing (804) at the second network entity (11), the packet in the part of the process based on the metadata as configured by the third network entity (12).
14. A first network entity (10) for handling one or more packets in a computer environment (1), wherein the first network entity (10) is configured to: obtain a packet of a networking application; add metadata to the packet, wherein the metadata indicates a part of a process that specifies how to handle the packet; and send the packet, with the added metadata, to a second network entity (11) in the computer environment for processing the packet.
15. The first network entity (10) according to claim 14, wherein the added metadata is related to the networking application.
16. The first network entity (10) according to any of the claims 14-15, wherein the added metadata comprises an address or an indication of location indicating a part of a packet processing code.
17. The first network entity (10) according to any of the claims 14-16, wherein the first network entity (10) is configured to: obtain a configuration comprising the metadata to be added to one or more packets of a networking application.
18. A second network entity (11) for handling one or more packets in a computer environment (1), wherein the second network entity (11) is configured to: receive from a first network entity (10), a packet of a networking application with added metadata, wherein the metadata indicates a part of a process that specifies how to handle the packet; and process the packet in the part of the process based on the metadata.
19. The second network entity (11) according to claim 18, wherein the added metadata is related to the networking application.
20. The second network entity (11) according to any of the claims 18-19, wherein the added metadata comprises an address or an indication of location indicating a part of a packet processing code.
21. The second network entity (11) according to claim 20, wherein the second network entity (11) is configured to process the packet by forwarding the packet to a processing core, and the processing core executes the indicated part of the packet processing code.
22. The second network entity (11) according to any of the claims 18-21 , wherein the second network entity (11) is configured to: obtain a configuration comprising information how to process one or more packets of a networking application based on metadata.
23. A third network entity (12) for handling one or more packets in a computer environment (1), wherein the third network entity (12) is configured to configure a first network entity (10) and / or a second network entity (11) to perform the method according to any of the claims 1-9, respectively.
24. The third network entity (12) according to claim 23, wherein the third network entity (12) is configured to analyze a network application to generate the metadata.
25. The third network entity (12) according to claim 24, wherein the third network entity (12) is configured to analyze the network application by performing one or more of the following:• finding one or more various branches of handling the networking application;• checking which branch can be assessed in the computer environment (1); and• synthesizing a program with an optimized code, based on a capability of the first network entity and extracted information from the first and / or second network entity.
26. A system (100) for handling one or more packets in a computer environment (1), wherein the system (100) comprises a first network entity (10), a second network entity (11), and a third network entity (12), wherein the system (100) is configured to: at the third network entity (12), configure the first network entity (10) and / or the second network entity (11) to process one or more packets of a networking application based on metadata attached to the one or more packets, at the first network entity (10), obtain a packet of the networking application and add metadata to the packet, wherein the metadata indicates a part of a process that specifies how to handle the packet; send, from the first network entity (10), the packet, with the added metadata, to the second network entity (11) in the computer environment (1); and process at the second network entity (11) the packet in the part of the process based on the metadata as configured by the third network entity (12).
27. A computer program product comprising instructions, which, when executed on at least one processor, cause the at least one processor to carry out the method according to any of the claims 1-13, as performed by the first network entity (10), the second network entity (11), the third network entity (12) and the system (100), respectively.
28. A computer-readable storage medium, having stored thereon a computer program product comprising instructions which, when executed on at least one processor, cause the at least one processor to carry out the method according to any of the claims 1-13, as performed by the first network entity (10), the second network entity (11), the third network entity (12) and the system (100), respectively.
Citation Information
Patent Citations
Packet Metadata Channels Carrying Infrastructure Metadata in Networks
US20140226662A1
Method and Apparatus for Managing Routing Disruptions in a Computer Network
US20180219980A1
Methods and apparatus for encoding local processing metadata in network headers
US20220174004A1
Metadata prioritization
US20230224382A1
Latency tracking metadata for a network switch data packet
WO2017058137A1