Scalable communication with a packet processing unit

By adding an extended object part to the packet, processing coordination between the NIC and the processing unit is achieved, the problem of insufficient communication efficiency and flexibility in the existing system is solved, the system adaptability and scalability is improved, and a variety of network applications are supported.

CN109936558BActive Publication Date: 2025-07-04INTEL CORP
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201811364193.3
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2017-12-18
Filing Date
2018-11-16
Publication Date
2025-07-04
Estimated Expiration
2038-11-16

AI Technical Summary

Technical Problem

The lack of effective processing collaboration mechanisms in the communication between the NIC and the processing unit of the existing systems leads to insufficient programming flexibility and agility, making it difficult to adapt to the high performance requirements of emerging network trends.

Method used

By adding a scalable extended object part to the grouping, processing collaboration between the NIC and the processing unit is realized, and processing unit extension object engine is used to insert and strip the extended object part, provide metadata and control messages, and support inline packet processing.

Benefits of technology

Improves communication efficiency and flexibility between the NIC and the processing unit, supports protocol processing requirements for different applications, extends the life of existing SoCs, and is easy to scale to NFV use cases.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN109936558B_ABST
    Figure CN109936558B_ABST
Patent Text Reader

Abstract

Certain embodiments described herein provide a system for implementing communication between a packet processing unit and a network interface controller (NIC) using extended objects. The system may include a memory, one or more processors, and a processing unit extended object engine. The processing unit extended object engine may be configured to: receive a packet at the packet processing unit, where the packet processing unit is on a system-on-chip (SoC), add an extended object portion to the packet to create a modified packet, and cause the modified packet to be transmitted to a NIC located on the same SoC. In an example, the extended object portion includes type data and partition data. The packet may be an Ethernet packet, and the extended object portion may be added before the payload portion of the packet.
Need to check novelty before this filing date? Find Prior Art

Description

BACKGROUND OF THE INVENTION

[0001] Emerging network trends in both data centers and telecommunications networks are imposing increasingly high performance requirements on systems. Application performance depends on the proper use of the network and the efficient use of data traffic on the network. A network interface controller (NIC) (also known as a network interface card, network adapter, LAN adapter, physical network interface, and other similar terms) is a computer hardware component that connects a computer to a network and provides a dedicated, full-time connection to the network for an application. Often, the NIC is included on a system-on-chip (SoC). An SoC is an integrated circuit (also known as an “IC” or “chip”) that integrates the components of a computer or other electronic system on a substrate (typically, silicon). The SoC can contain digital, analog, mixed-signal, and often includes radio frequency functionality, all on a single substrate. BRIEF DESCRIPTION OF THE DRAWINGS

[0002] To provide a more complete understanding of the present disclosure and its features and advantages, reference is made to the following description, taken in conjunction with the accompanying drawings, in which like reference numerals represent like parts, and in which:

[0003] Figure 1 is a block diagram of a system for implementing scalable communication with a packet processing unit according to an embodiment of the present disclosure;

[0004] Figure 2 is a block diagram of a portion of a system for implementing scalable communication with a packet processing unit according to an embodiment of the present disclosure;

[0005] Figure 3 is a block diagram of a portion of a system for implementing scalable communication with a packet processing unit according to an embodiment of the present disclosure;

[0006] Figure 4 is a block diagram of a portion of a system for implementing scalable communication with a packet processing unit according to an embodiment of the present disclosure;

[0007] Figure 5 is a block diagram of a portion of a system for implementing scalable communication with a packet processing unit according to an embodiment of the present disclosure;

[0008] Figure 6 is a block diagram of a portion of a system for implementing scalable communication with a packet processing unit according to an embodiment of the present disclosure;

[0009] Figure 7 is a block diagram of a portion of a system for implementing scalable communication with a packet processing unit according to an embodiment of the present disclosure;

[0010] Figure 8is a flowchart showing potential operations that may be associated with a system according to an embodiment;

[0011] Figure 9 is a flowchart showing potential operations that may be associated with a system according to an embodiment; and

[0012] Figure 10 is a flowchart showing potential operations that may be associated with a system according to an embodiment.

[0013] The figures in the drawings are not necessarily drawn to scale as their dimensions may vary significantly without departing from the scope of the present disclosure. DETAILED DESCRIPTION

[0014] Example Embodiment

[0015] The following detailed description sets forth examples of apparatus, methods, and systems related to a system for enabling scalable communication with a packet processing unit. For example, for convenience, features such as (multiple) structures, (multiple) functions, and / or (multiple) characteristics are described with reference to one embodiment; any suitable one or more of the described features may be utilized to implement various embodiments.

[0016] In the following description, various aspects of illustrative implementations will be described using terms commonly employed by those of ordinary skill in the art to convey the substance of their work to others in the art. However, it will be apparent to those of ordinary skill in the art that the embodiments disclosed herein may be practiced using only some of the described aspects. For purposes of explanation, specific numbers, materials, and configurations are set forth in order to provide a thorough understanding of illustrative implementations. However, it will be apparent to those of ordinary skill in the art that the embodiments disclosed herein may be practiced without specific details. In other instances, well-known features are omitted so as not to obscure the illustrative implementations.

[0017] In the following detailed description, reference is made to the accompanying drawings, which form a part hereof, and in which like reference numerals always refer to like parts, and in which embodiments that may be practiced are shown by way of illustration. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure. Accordingly, the following detailed description should not be taken in a limiting sense. For purposes of the present disclosure, the phrase “A and / or B” means (A), (B), or (A and B). For purposes of the present disclosure, the phrase “A, B, and / or C” means (A), (B), (C), (A and B), (A and C), (B and C), or (A, B, and C).

[0018] Figure 1FIG. 0 is a block diagram of a system 100 for implementing scalable communication with a packet processing unit according to an embodiment of the present disclosure. The system 100 may include one or more network elements 102a - 102c and one or more remote devices 120. The network element 102a may include one or more devices 104a and 104b and one or more applications 106a and 106b. The device 104a may include one or more network interface controllers (NICs) 110a and 110b, a processing unit 112a, and one or more queues 114a. Each of the one or more NICs may include a NIC extended object engine. For example, the NIC 110a may include a NIC extended object engine 116a, and the NIC 110b may include a NIC extended object engine 116b. The processing unit 112a may include a processing unit extended object engine 118a. The device 104b may include a NIC 110c, one or more processing units 112b and 112c, and one or more queues 114b. The processing units 112b and 112c may share a processing unit extended object engine 118b. In an example, the network element 102a may further include a NIC 110d. The network element 102b may include an application 106c and a NIC 110e. The network element 102c may include a device 104c and an application 106d. The device 104c may include one or more NICs 110f and 110g, a processing unit 112d, and one or more queues 114c. The network elements 102a - 102c may communicate with each other using a network 122.

[0019] Each of the devices 104a - 104c may be a system on a chip (SoC), a multi-chip package (MCP), discrete components linked together on a board, etc. Each of the processing units 112a - 112d may be an external programmable entity, such as an FPGA, an accelerator, a packet processing unit, or some other processing unit. Each of the applications 106a and 106b may be a virtual network function (VNF).

[0020] It should be understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the present disclosure. For example, each network element may have one or more devices, and each device may have one or more NICs and processing units. The system 100 provides substantial flexibility as any suitable arrangement and configuration may be provided without departing from the teachings of the present disclosure.

[0021] System 100 may be configured to allow a scalable, two-way in-band messaging infrastructure in the form of grouped scalable extended object parts for communication between a NIC and a processing unit. The grouped extended object parts may include partitions. The partitions may include metadata to assist the NIC or an application in processing the packet. On the send path, the NIC may insert an extended object part into the packet to convey the metadata to the processing unit or application. In an example, the processing unit processes the extended object part and strips the extended object part from the packet such that the extended object part of the packet persists only within the NIC up to the processing unit boundary region. On the receive path, the extended object part may be generated by the processing unit and processed and stripped by the NIC. In some examples, it may be desirable to retain some or all of the extended object parts when the packet is conveyed from the NIC to an application to deliver data to the application.

[0022] Figure 1 The components of may be coupled to each other via one or more interfaces using any suitable connection (wired or wireless), which provides a viable path for network (e.g., network 122, etc.) communication. Additionally, Figure 1 Any one or more of these components of may be combined with or removed from the architecture based on specific configuration requirements. System 100 may include a configuration capable of performing Transmission Control Protocol / Internet Protocol (TCP / IP) communication for sending or receiving packets in a network. System 100 may also operate in conjunction with the User Datagram Protocol / IP (UDP / IP) or any other suitable protocol, as appropriate and based on specific requirements.

[0023] For the purpose of illustrating specific example techniques of system 100, it is important to understand the communications that may traverse the network environment. The following foundational information may be considered as a basis for properly interpreting this disclosure.

[0024] Modern networking devices such as NICs may experience significant pressure to provide the required level of programming flexibility and agility when adapting to new use cases and providing additional features. In many current systems, there are devices in front of the NIC, and the NIC is typically not a discrete NIC but part of a SoC. Current solutions treat the NIC and other devices as separate entities, where each entity is programmed through independent channels (e.g., separate PCIe channels), and each entity provides its own monolithic processing model. Additionally, the innovation speed in some systems (e.g., some cloud and network virtual function (NFV) markets) exceeds the regular pace of current SoCs, especially the development of application-specific integrated circuit (ASIC) silicon. The requirement for additional features is typically addressed by adding an FPGA-based packet processing unit to the SoC (which results in a NIC+FPGA platform). An FPGA is a highly programmable device that can be configured to perform analysis on packets and then pass the packets to the NIC. However, passing the packets from the FPGA to the NIC is not enough, and the packets also need to pass some additional information, e.g., the results of the analysis performed by the FPGA (e.g., what type of security is associated with the packet, whether the packet is an IPSec packet, which destination or queue should receive the packet, etc.). What is needed is a system that can deliver some additional information to the NIC about the processing that has been done or what should be done with the packet, and can enable processing coordination between the NIC and the packet processing unit / accelerator.

[0025] As Figure 1 Outlined, a system capable of enabling processing coordination between a NIC and a processing unit can solve these problems (and other problems). System 100 can be configured to enable processing coordination between a NIC (e.g., NIC 110a) and one or more processing units (e.g., processing unit 112a) by adding a scalable in-band extension object part to the packet for distributed workload processing. The added extension object part can allow the processing unit to provide different metadata to the NIC depending on the configuration of the processing unit. For example, different packets can include different types and lengths of extension object parts depending on the type of packet transmitted by the processing unit and the configuration of the processing unit. The extension object part can be added to packets transmitted between the NIC and the processing unit, between the NIC and one or more processing units, between one or more NICs and the processing unit, and / or between one or more NICs and one or more processing units. Each extension object part can include one or more partitions, and each partition can include packet-specific context, metadata, processing rules, receive descriptor extensions for the application to use, FPGA programming flow, or other application-specific objects.

[0026] In an example, a packet processing unit can be added in series with an existing NIC to extend the packet processing functionality of the NIC. A NIC extension engine (e.g., NIC extension object engine 116a) and / or a processing unit extension engine (e.g., processing unit extension object engine 118a) can be configured to allow an extension object portion to be inserted into a packet transmitted between the NIC and the processing unit to assist inline packet processing and to transmit metadata between the NIC and the processing unit. In a particular example, an existing driver of the NIC can be extended to configure the processing unit using network packets specifically tagged with an extension label that assists in programming the processing unit and / or carries metadata necessary for packet processing within the NIC and the processing unit. If the NIC or an application is configured to provide a certain feedback to the processing unit (e.g., queue eight is full or queue one is low), the processing unit can add one or more partitions in the extension object portion to a packet going to the NIC and provide guidance on how to process the packet (e.g., to which one or more queues the data should be sent, or to which one or more queues the data should not be sent). In another example, the priority of a packet can be based on something other than the contents of the standard packet fields, and the processing unit can include a type indicator in the extension object portion that causes the NIC to ignore the priority normally assigned to the packet based on the standard packet fields and assign a different priority to the packet.

[0027] The NIC and the packet processing unit can use the extension object portion of a packet to send control messages / async events back to the host (e.g., network element 102a) or an application (e.g., application 106a). In a particular example, the extension object portion can include data that can be used to route a packet to a queue (e.g., one or more queues 114a) that can be associated with a software control agent in an existing driver within a hypervisor or virtual machine. This helps to repurpose a data queue (e.g., a direct memory access (DMA) queue) to be used as a control queue and can provide a full-rate in-band messaging infrastructure for exchanging extension labels and partitions between the NIC and the processing unit.

[0028] Current SoCs that include NICs and FPGAs treat the FPGA as a separate bump-in-the-wire island region. The FPGA is programmed independently of the NIC and executes its own monolithic processing model. For example, an FPGA handling overlay processing encapsulates packets from the NIC, even though the packets have been parsed by the NIC, requiring the FPGA to parse each outgoing packet to determine where to insert the overlay header. Since the parsing information is internal to the NIC, this parsing information is lost at the NIC-to-FPGA boundary and needs to be recreated by the FPGA again. System 100 can be configured to convey an extended object portion that can be used to carry parsing results from the NIC to the processing unit as metadata in one or more partitions, and thereby maintain a unified programming model for the NIC and the processing unit. This leverages existing silicon capabilities, avoids a complete redesign of the SoC, and scales well to NFV applications on its own.

[0029] Different applications (e.g., different VNFs) require different protocols, processing, etc. Some services require checking and / or analyzing the payload portion of a packet, and some services ignore the payload portion and only check and / or analyze the header. Depending on the application being executed, System 100 can be configured such that the processing unit can assist in checking and / or analyzing the header portion of a packet, process the header portion of the packet, and / or transfer relevant metadata related to the header to the application. If the application wishes to only analyze and / or check the header, the processing unit can provide and extract relevant metadata about the header and provide the relevant metadata to the application. If the application is interested in the payload, System 100 can be configured such that the processing unit can assist in checking and / or analyzing the payload portion of a packet, process the payload portion of the packet, and / or transfer relevant metadata related to the payload portion (e.g., bytes, type, etc.) to the application. The processing unit can provide metadata to the NIC, and the NIC can provide some feedback from the host or application to the processing unit.

[0030] System 100 can be configured to extend the life of an existing SoC by allowing the NIC and the processing unit to use existing base silicon rather than configuring the processing unit to implement the extended object portion. For applications that require extended processing, the system can be configured to use the existing base silicon, where the processing unit is configured to implement the extended object portion, or an additional processing unit is configured such that the extended object portion can be added to the current SoC. This can help keep the product cost relatively low and allow the system to scale to NFV use cases relatively easily. To support the extended object portion in existing silicon, programmable extension tags can be inserted into and stripped from the NIC and the processing unit, which can assist in inline packet processing.

[0031] In some examples, existing silicon may be configured to route packets to a repurposed data queue pair (e.g., one or more queues 114a) based on an extended tag, which then acts as a control and event queue. This can help facilitate the extension of existing multi-queue drivers to take advantage of the acceleration features provided by the NIC and processing unit. An alternate data queue pair (e.g., one or more queues 114a) may also be built into the existing silicon for special NIC and processing unit programming.

[0032] The extended object portion may include partitions, and the partitions may include intermediate processing results from the NIC, such as protocol offsets and classification indicators. Similarly, the partitions may include processing results from the processing unit, such as encryption success / failure results, port associations of packets, arrival timestamps, etc. In some other applications, the partitions may also be used to program the processing unit. The extended object portion may be embedded within a regular traffic packet or within a unique programming packet of a container. The programming packet may include classification rules, personality profiles, FPGA-specific flows, etc. The extended object portion may be transmitted via standard Ethernet in the EtherType portion of the packet. The extended object portion is stackable (i.e., the extended object portion is added on top of the existing EtherType content of the original packet), such that when multiple NICs and processing units are deployed in a mesh topology, the structure of the original packet is maintained, and the resulting packet can be forwarded by a standard Ethernet switch.

[0033] Turning to Figure 1 the infrastructure of, FIG. 100 shows a system 100 according to an example embodiment. Generally, the system 100 may be implemented in any type or topology of network. Network 122 represents a series of points or nodes of an interconnected communication path for receiving and transmitting information packets propagated through the system 100. Network 122 provides a communication interface between nodes and may be configured as any local area network (LAN), virtual local area network (VLAN), wide area network (WAN), wireless local area network (WLAN), metropolitan area network (MAN), intranet, extranet, virtual private network (VPN), and any other suitable architecture or system that facilitates communication in a network environment, or any suitable combination thereof, including wired communication and / or wireless communication.

[0034] In system 100, network traffic including packets, frames, signals, data, etc. can be sent and received according to any suitable communication messaging protocol. Suitable communication messaging protocols can include multi-layer schemes, such as, for example, the Open Systems Interconnection (OSI) model, or any derivative or variation thereof (e.g., Transmission Control Protocol / Internet Protocol (TCP / IP), User Datagram Protocol / IP (UDP / IP)). Messages can be passed through the network according to various network protocols (e.g., Ethernet, Infiniband, OmniPath, etc.). Additionally, radio signal communication via a cellular network can be provided in system 100. Suitable interfaces and infrastructure can be provided to enable communication with the cellular network.

[0035] As used herein, the term "packet" refers to a data unit that can be routed between a source node and a destination node on a packet-switched network. A packet includes a source network address and a destination network address. These network addresses can be Internet Protocol (IP) addresses in a TCP / IP messaging protocol. As used herein, the term "data" refers to any type of binary, digital, voice, video, text, or script data, or any type of source code or object code, or any other suitable information in any suitable format that can be transferred from one point to another in an electronic device and / or network. Data can assist in determining the state of a network element or network. The term "state" includes a state, condition, operating level of a resource, congestion of a network, data related to the traffic or flow pattern of a network, or another type of data or information that helps to determine the performance, state, condition, etc. of a network and / or resource, either generally or in relation to one or more network elements. Additionally, messages, requests, responses, and queries are forms of network traffic and can thus include packets, frames, signals, data, etc.

[0036] In an example implementation, network elements 102a - 102c are intended to include network elements, network devices, servers, routers, switches, gateways, bridges, load balancers, processors, modules, or any other suitable devices, components, elements, or objects operable to exchange information in a network environment. Network elements 102a - 102c can include any suitable hardware, software, components, modules, or objects that facilitate their operation, as well as suitable interfaces for receiving, sending, and / or otherwise transferring data or information in a network environment. This can include appropriate algorithms and communication protocols that allow for efficient exchange of data or information. Each of network elements 102a - 102c can be virtual or include virtual elements.

[0037] Regarding the internal structure associated with system 100, each of network elements 102a - 102c may include a memory element for storing information to be used in the operations outlined herein. In appropriate cases and based on specific needs, each of network elements 102a - 102c may retain information in any suitable memory element (e.g., random access memory (RAM), read-only memory (ROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), application-specific integrated circuit (ASIC), etc.), software, hardware, firmware, or any other suitable component, device, element, or object. Any memory item among the memory items discussed herein should be construed as being included within the broad term "memory element". Additionally, the information used, tracked, sent, or received in system 100 may be provided in any database, register, queue, table, cache, control list, or other storage structure, all of which may be referenced at any suitable time frame. Any such storage option may also be included within the broad term "memory element" as used herein.

[0038] In a particular example implementation, the functions outlined herein may be implemented by logic encoded in one or more tangible media (e.g., embedded logic provided in an ASIC, digital signal processor (DSP) instructions, software (potentially including object code and source code) executed by a processor or other similar machine, etc.), the one or more tangible media may include non-transitory computer-readable media. In some of these instances, the memory element may store data for the operations described herein. This includes the memory element being able to store software, logic, code, or processor instructions that are executed to perform the activities described herein.

[0039] In an example implementation, elements of system 100 (e.g., network elements 102a - 102c) may include software modules (e.g., NIC extension object engine 116a, processing unit extension object engine 118b, etc.) for implementing or facilitating the operations outlined herein. These modules may be suitably combined in any appropriate manner, which may be based on specific configuration and / or provisioning requirements. In an example embodiment, such operations may be performed by hardware, implemented external to these elements, or included in some other network device to achieve the desired functionality. Additionally, the modules may be implemented as software, hardware, firmware, or any suitable combination thereof. These elements may also include software (or reciprocating software) that may coordinate with other network elements to achieve the operations outlined herein.

[0040] Additionally, each of the network elements 102a - 102c may include a processor that can execute software or algorithms to perform the activities discussed herein. The processor may execute any type of instructions associated with data for implementing the operations detailed herein. In one example, the processor may transform an element or article (e.g., data) from one state or thing to another. In another example, the activities outlined herein may be implemented using fixed logic or programmable logic (e.g., software / computer instructions executed by a processor), and the elements identified herein may be a type of programmable processor, programmable digital logic (e.g., Field Programmable Gate Array (FPGA), Erasable Programmable Read - Only Memory (EPROM), Electrically Erasable Programmable Read - Only Memory (EEPROM)), or an ASIC that includes digital logic, software, code, electronic instructions, or any suitable combination thereof. Any of the potential processing elements, modules, and machines described herein should be construed as being included within the broad term "processor".

[0041] Go to Figure 2 , Figure 2 is a block diagram of an example of packet 136 for system 100. Packet 136 may include a header portion 124, an extended object portion 126, and a payload portion 128. The extended object portion 126 may be located before the layer 3 portion of packet 136. In an example, the extended object portion 126 may be located before the payload portion 128.

[0042] Go to Figure 3 , Figure 3 is a block diagram showing example details of the extended object portion 126 for system 100 according to an embodiment of the present disclosure. The extended object portion 126 may include a type portion 130 and one or more partition portions 132a - 132c. The type portion 130 may include data in addition to the type data in the header portion 124 to help identify packet 136. For example, the type portion 130 may identify packet 136 as a video frame of a particular type or source, a VOIP frame, a priority frame, a packet with enhanced quality of service, an index or queue of packets to be delivered, a sequence number related to packet 136, etc. Each of the one or more partition portions 132a - 132c may include data to assist the NIC in processing, analyzing, and / or routing packet 136. For example, each of the one or more partition portions 132a - 132c may include packet - specific context, metadata, processing rules, receive descriptor extensions for the application to use, FPGA programming streams, decrypted inline IPSec security indices, parsing information, load - balancing routing, etc.

[0043] In an example, packets having the same or similar header portions 124 and payload portions 128 but different extended object portions 126 can be transmitted to the same NIC. Additionally, packets having similar header portions 124 (e.g., the destination identifier is changed), payload portions 128, and extended object portions 126 can be transmitted to multiple NICs. Additionally, packets having similar header portions 124 (e.g., the destination identifier is changed), payload portions 128, and different extended object portions 126 can be transmitted to multiple NICs. In a particular example, a packet processing unit (e.g., processing unit 112a) can process 200 gigabits per second, but NIC 110a can only process 100 gigabits per second. Using the extended object engine (e.g., processing unit extended object engine 118a), the processing unit can send 100 gigabits to NIC 110a and another 100 gigabits to NIC 110b, to NIC 110c on another device 104b, or to NIC 110f in another network element 102c.

[0044] Go to Figure 4 , Figure 4 is a block diagram of example details of a portion of system 100 in accordance with an embodiment of the present disclosure. The header portion 124 can include header information for the packet 138 (e.g., source identifier, destination identifier, type, etc.). In an example, if the packet 138 is an Ethernet packet, the header portion 124 can include a MAC destination address, a MAC source address, a packet type identifier, etc. The extended object portion 126 can be inserted into the packet 138 to create the packet 136 for communication between one or more NICs and the processing unit.

[0045] Go to Figure 5 , Figure 5 is a block diagram of a portion of system 100 in accordance with an embodiment of the present disclosure. In an example, the application 106a can transmit the packet 138a to the NIC 110a to request data and / or one or more services. The NIC 110a can receive the packet 138a and, in response, transmit a packet similar to the packet 138a (a packet without the extended object portion 126) or a modified packet 136 to the processing unit 112a. The processing unit 112a can receive the modified packet 136, remove the extended object portion 126, and transmit the packet 138b to the remote device 120 to satisfy the request for data and / or one or more services.

[0046] In response to the request, the remote device 120 can use packet 138b to respond to the processing unit 112a. The processing unit 112a can receive the response and transmit the modified packet 136 to the NIC 110a. The NIC 110a can receive the modified packet 136, remove the extended object portion 126, and transmit packet 138a to the application 106a. In an example, the extended object portion 126 can be hidden from the application 106a. The NIC 110a can perform or initiate one or more actions based on the data in the extended object portion 126 (e.g., select a queue or application to send the packet or data related to the packet, etc.), and then remove the extended object portion 126 before transmitting packet 138a to the application 106a.

[0047] Go to Figure 6 , Figure 6 FIG. is a block diagram of a portion of the system 100 in accordance with an embodiment of the present disclosure. In an example, the application 106a can transmit a packet to the NIC 110a to request data and / or one or more services. The packet can be similar to packet 138a and not include the extended object portion 126, or the application 106a can transmit the modified packet 136a to the NIC 110a. The modified packet 136a can include a header portion 124, an extended object portion 126a, and a payload portion 128. The extended object portion 126a can be similar to the extended object portion 126, include data similar to the extended object portion 126, include a portion of the data in the extended object portion 126, or include data different from the data in the extended object portion 126. The NIC 110a can receive the packet, and in response, transmit the modified packet 136b to the processing unit 112a. The modified packet 136b can include a header portion 124, an extended object portion 126b, and a payload portion 128. The extended object portion 126b can be similar to the extended object portion 126 and / or 126a, include data similar to the extended object portion 126 and / or 126a, include a portion of the data in the extended object portion 126 and / or 126a, or include data different from the data in the extended object portion 126 and / or 126a. The processing unit 112a can receive the modified packet 136b, remove the extended object portion 126, and transmit the packet 138 to the remote device 120 to satisfy the request for data and / or one or more services.

[0048] In response to the request, the remote device 120 may use packet 138 to respond to the processing unit 112a. The processing unit 112a may receive the response and transmit the modified packet 136b to the NIC 110a. The NIC 110a may receive the modified packet 136b and transmit the modified packet 138a to the application 106a. When transmitting the modified packet 136a to convey information to the application 106a, the NIC 110a may add or retain all or a portion of the extended object portion 126 in the modified packet 136b.

[0049] Go to Figure 7 , Figure 7 is a block diagram of a portion of the system 100 in accordance with an embodiment of the present disclosure. In an example, the application 106a may transmit a metadata packet 140 to the NIC 110a to request data and / or one or more services. The metadata packet 140 may include a header portion 124, a metadata portion 134, and a payload portion 128. The metadata portion 134 may include metadata, an extended tag, or other data. In an example, the metadata packet 140 may include an L2 extended tag having a predefined length. The application may use the metadata portion 134 to provide feedback to the NIC 110a and / or the processing unit 112a to request data or specific routing of a packet by the NIC 110a, request specific programming for the processing unit 112a, or other requests for specific packet routing and / or processing. The NIC 110a and the processing unit 112a may use the data in the metadata portion 134 to determine the data to be included in the extended object portion 126.

[0050] The NIC 110a may receive the metadata packet 140 and, in response, transmit the modified packet 136 to the processing unit 112a. The processing unit 112a may receive the modified packet 136, remove the extended object portion 126, and transmit the packet 138 to the remote device 120 to satisfy the request for data and / or one or more services. In response to the request, the remote device 120 may use the packet 138 to respond to the processing unit 112a. The processing unit 112a may receive the response and transmit the modified packet 136b to the NIC 110a. The NIC 110a may receive the modified packet 136b and transmit a packet similar to the packet 138, a modified packet similar to the modified packet 138a, or an extended tag packet similar to the metadata packet 140 to the application 106a. In response, the application 106a may use the metadata packet 140 to transmit feedback data to the NIC 110a and the processing unit 112a, request specific routing of a packet, and / or request specific data processing.

[0051] Go to Figure 8 ,Figure 8 is an example flowchart showing possible operations of process 800 that may be associated with enabling scalable communication with a packet processing unit. In an embodiment, one or more operations of process 800 may be performed by the NIC extension object engine 116 and / or the processing unit extension object engine 118. At 802, the processing unit receives a packet. For example, the packet may be received from a NIC (e.g., NIC 110a), a processing unit (e.g., processing unit 112b or 112d), or a remote device 120. At 804, the system determines whether an extended object portion needs to be added to the packet. If an extended object portion does not need to be added to the packet, the packet is transmitted to the next destination (without modification), as in 808. If an extended object portion does need to be added to the packet, the extended object portion is added to the packet, as in 806, and the packet is transmitted to the next destination, as in 808. For example, the packet may be transmitted from processing unit 112b to NIC 110a on device 104a (a different SoC), NIC 110c on the same SoC, NIC 110g in network element 102c (a different network element), processing unit 112c on the same SoC, processing unit 112d in network element 102c (a different network element), or some other NIC or processing unit. Additionally, the packet may be transmitted to more than one NIC or processing unit.

[0052] Go to Figure 9 , Figure 9is an example flowchart showing possible operations of process 900 that may be associated with enabling scalable communication with a packet processing unit. In an embodiment, one or more operations of process 900 may be performed by the NIC extension object engine 116 and / or the processing unit extension object engine 118. At 902, the NIC receives a packet having an extended object portion. At 904, the extended object portion is processed. For example, the extended object portion may include a type portion 130 that identifies the packet as an enhanced quality source of a video frame. Additionally, the extended object portion may include one or more partition portions 132a - 132c to assist the NIC in processing, analyzing, and / or routing the packet. At 906, the system determines whether an action needs to be initiated based on the extended object portion. If an action needs to be initiated based on the extended object portion, then the action is initiated as in 908, and as in 910 the system determines whether the extended object portion needs to be removed from the packet. If an action does not need to be initiated based on the extended object portion, then as in 910 the system determines whether the extended object portion needs to be removed from the packet. If the extended object portion does not need to be removed from the packet, then the packet is transmitted to the next destination as in 914. If the extended object portion needs to be removed from the packet, then the extended object portion is removed from the packet as in 912, and the packet is transmitted to the next destination as in 914. In another example, an extended tag (e.g., metadata portion 134) may be added to the packet before transmitting the packet to the next destination.

[0053] Go to Figure 10 , Figure 10is an example flowchart showing possible operations of process 1000 that may be associated with enabling scalable communication with a packet processing unit. In an embodiment, one or more operations of process 1000 may be performed by NIC extension object engine 116 and / or processing unit extension object engine 118. At 1002, a device receives a packet. At 1004, the system determines whether the packet includes an extended object portion. If the packet includes an extended object portion, the system determines whether an action needs to be initiated based on the extended object portion, as in 1006. If an action does not need to be initiated based on the extended object portion, the system determines whether the extended object portion needs to be removed from the packet, as in 1010. If an action needs to be initiated based on the extended object portion, the action is initiated as in 1008, and the system determines whether the extended object portion needs to be removed from the packet as in 1010. If the extended object portion does not need to be removed from the packet, the packet is transmitted to the next destination as in 1014. If the extended object portion needs to be removed from the packet, the extended object portion is removed from the packet as in 1012, and the packet is transmitted to the next destination as in 1014. In an example, the next destination may be a device similar to the device that received the packet. More specifically, a processing unit (e.g., processing unit 112b) may transmit the packet to a processing unit on the same device (e.g., processing unit 112c is on the same device 104b as processing unit 112b), a processing unit on the same network but on a different device (e.g., processing unit 112a is on the same network element 102a as processing unit 112b, but processing unit 112a is on device 104b while the processing unit is on device 104b), or a processing unit on a different network element (e.g., processing unit 112d is on network element 102c, and network element 102c is different from network element 102a that includes processing unit 112b). In another example, the next destination may be a NIC on the same device (e.g., NIC110c is on the same device 104b as processing unit 112b), a NIC on the same network element but on a different device (e.g., NIC 110a is on the same network element 102a as processing unit 112b, but NIC 110a is on device 104b while the processing unit is on device 104b), or a NIC on a different network element (e.g., NIC 110e is on network element 102b, and network element 102b is different from network element 102a that includes processing unit 112b).

[0054] It is also important to note that the previous flowchart (i.e., Figures 8 - 10) The operations in [the example] only illustrate some of the possible relevant scenarios and patterns that can be performed by or within system 100. Some of these operations can be deleted or removed where appropriate, or these operations can be significantly modified or changed without departing from the scope of the present disclosure. Additionally, multiple of these operations have been described as being performed simultaneously or in parallel with one or more additional operations. However, the timing of these operations can be significantly changed. The foregoing operation flow is provided for purposes of example and discussion. System 100 provides substantial flexibility because any suitable arrangement, chronological order, configuration, and timing mechanism can be provided without departing from the teachings of the present disclosure.

[0055] Although the present disclosure has been described in detail with reference to specific arrangements and configurations, these example configurations and arrangements can be significantly changed without departing from the scope of the present disclosure. Additionally, specific components can be combined, separated, eliminated, or added based on specific requirements and implementations. Further, although system 100 has been illustrated with reference to specific elements and operations that facilitate the communication process, these elements and operations can be replaced by any suitable architecture, protocol, and / or process that implements the intended functionality of system 100.

[0056] Many other changes, substitutions, variations, alterations, and modifications will be apparent to those skilled in the art, and the present disclosure is intended to cover all such changes, substitutions, variations, alterations, and modifications that fall within the scope of the appended claims. To assist the United States Patent and Trademark Office (USPTO) and, additionally, any readers of any patent issued on this application in interpreting the appended claims, the applicant wishes to note that the applicant: (a) does not intend any of the appended claims to invoke paragraph 6 of 35 U.S.C. § 112 as it exists on the date of filing hereof, unless the term “means for...” or “step for...” is specifically used in a particular claim; and (b) does not intend to be limited by any statement in the specification in any way that is not otherwise reflected in the appended claims.

[0057] Other Descriptions and Examples

[0058] Example C1 is at least one machine-readable storage medium having one or more instructions that, when executed by at least one processor, cause the at least one processor to: receive a packet at a processing unit on a system-on-chip (SoC), add an extended object portion to the packet to create a modified packet, and transmit the modified packet to a network interface controller (NIC) located on the same SoC.

[0059] In example C2, the subject matter of example C1 can optionally include: wherein the extended object portion is added before the payload portion of the packet.

[0060] In Example C3, the subject matter of any one of Examples C1-C2 may optionally include: wherein the packet is an Ethernet packet.

[0061] In Example C4, the subject matter of any one of Examples C1-C3 may optionally include: wherein the one or more instructions further cause at least one processor to transmit the modified packet to a second NIC.

[0062] In Example C5, the subject matter of any one of Examples C1-C4 may optionally include: wherein the second NIC is on a second SoC.

[0063] In Example C6, the subject matter of any one of Examples C1-C5 may optionally include: wherein the extended object portion includes type data and partition data.

[0064] In Example C7, the subject matter of any one of Examples C1-C6 may optionally include: wherein the one or more instructions, when executed by at least one processor, further cause at least one processor to receive feedback regarding the modified packet from the NIC.

[0065] In Example A1, a system-on-chip (SoC) may include a first network element, a memory, an extended object engine, and at least one processor. The at least one processor is configured to cause the extended object engine to add an extended object portion to a packet received at the first network element to create a modified packet, and transmit the modified packet to a second network element located on the same SoC.

[0066] In Example A2, the subject matter of Example A1 may optionally include: wherein the first network element is a processing unit.

[0067] In Example A3, the subject matter of any one of Examples A1-A2 may optionally include: wherein the second network element is a network interface controller.

[0068] In Example A4, the subject matter of any one of Examples A1-A3 may optionally include: wherein the extended object portion is added before the payload portion of the packet.

[0069] In Example A5, the subject matter of any one of Examples A1-A4 may optionally include: wherein the packet is an Ethernet packet.

[0070] Example M1 is a method including: receiving a packet at a processing unit on a system-on-chip (SoC), adding an extended object portion to the packet to create a modified packet, and transmitting the modified packet to a network interface controller (NIC) located on the same SoC.

[0071] In Example M2, the subject matter of Example M1 may optionally include: wherein an extended object portion is added before the grouped payload portion.

[0072] In Example M3, the subject matter of any one of Examples M1 - M2 may optionally include: wherein the grouping is an Ethernet packet.

[0073] In Example M4, the subject matter of any one of Examples M1 - M3 may optionally include: receiving feedback regarding the modified packet from the NIC.

[0074] In Example M5, the subject matter of any one of Examples M1 - M4 may optionally include: transmitting the modified packet to a second NIC.

[0075] In Example M6, the subject matter of any one of Examples M1 - M5 may optionally include: wherein the second NIC is on a second SoC.

[0076] Example S1 is a system for implementing communication between a packet processing unit and a network interface controller (NIC) using an extended object, the system may include a memory, one or more processors, and a processing unit extended object engine. The processing unit extended object engine may be configured to: receive a packet at the packet processing unit, wherein the packet processing unit is on a system on a chip (SoC), add an extended object portion to the packet to create a modified packet, and cause the modified packet to be transmitted to a NIC located on the same SoC.

[0077] In Example S2, the subject matter of Example S1 may optionally include: wherein the extended object portion is added before the payload portion of the packet.

[0078] In Example S3, the subject matter of any one of Examples S1 - S2 may optionally include: wherein the packet is an Ethernet packet.

[0079] In Example S4, the subject matter of any one of Examples S1 - S3 may optionally include: wherein the extended object engine is further configured to receive feedback regarding the modified packet from the NIC.

[0080] In Example S5, the subject matter of any one of Examples S1 - S4 may optionally include: wherein the extended object engine is further configured to cause the modified packet to be transmitted to a second NIC.

[0081] In Example S6, the subject matter of any one of Examples S1 - S5 may optionally include: wherein the second NIC is on a second SoC.

[0082] In Example S7, the subject matter of any one of Examples S1 - S6 may optionally include: wherein the second NIC is on the SoC.

[0083] Example AA1 is an apparatus that includes: a unit for receiving a packet at a processing unit on a system-on-chip (SoC), a unit for adding an extended object portion to the packet to create a modified packet, and a unit for transmitting the modified packet to a network interface controller (NIC) located on the same SoC.

[0084] In example AA2, the subject matter of example AA1 may optionally include: wherein the extended object portion is added before the payload portion of the packet.

[0085] In example AA3, the subject matter of any one of examples AA1 - AA2 may optionally include: wherein the packet is an Ethernet packet.

[0086] In example AA4, the subject matter of any one of examples AA1 - AA3 may optionally include: a unit for transmitting the modified packet to a second NIC.

[0087] In example AA5, the subject matter of any one of examples AA1 - AA4 may optionally include: wherein the second NIC is on a second SoC.

[0088] In example AA6, the subject matter of any one of examples AA1 - AA5 may optionally include: wherein the extended object portion includes type data and partition data.

[0089] In example AA7, the subject matter of any one of examples AA1 - AA6 may optionally include: a unit for receiving feedback regarding the modified packet from the NIC.

[0090] Example X1 is a machine-readable storage medium that includes machine-readable instructions for implementing a method of any one of examples A1 - A4, AA1 - AA7, or M1 - M6 or for implementing an apparatus of any one of examples A1 - A4, AA1 - AA7, or M1 - M6. Example Y1 is an apparatus that includes a unit for performing any one of example methods M1 - M6. In example Y2, the subject matter of example Y1 may optionally include: the unit for performing the method includes a processor and a memory. In example Y3, the subject matter of example Y2 may optionally include: the memory includes machine-readable instructions.

Claims

1. A system for scalable communication, comprising: a unit for receiving a packet at a processing unit on a system-on-chip (SoC); a unit for adding an extended object part to the packet to create a modified packet; and a unit for transmitting the modified packet to a network interface controller (NIC) located on the same SoC.

2. The system according to claim 1, wherein The extended object part is added before the payload part of the packet.

3. The system according to any one of claims 1 and 2, wherein, The packet is an Ethernet packet.

4. The system according to claim 1, further comprising: a unit for transmitting the modified packet to a second NIC.

5. The system according to claim 4, wherein, The second NIC is on a second SoC.

6. The system according to claim 1, wherein The extended object part includes type data and partition data.

7. The system according to claim 1, further comprising: a unit for receiving feedback on the modified packet from the NIC.

8. A system-on-chip (SOC), comprising: a first network element; a memory; an extended object engine; and at least one processor, wherein the at least one processor is configured to cause the extended object engine to perform the following operations: add an extended object part to a packet received at the first network element to create a modified packet; and transmit the modified packet to a second network element located on the same SoC.

9. The SoC according to claim 8, wherein, The first network element is a processing unit.

10. The SoC according to any one of claims 8 and 9, wherein, The second network element is a network interface controller.

11. The SoC according to claim 8, wherein, The extended object part is added before the payload part of the packet.

12. The SoC according to claim 8, wherein, The packet is an Ethernet packet.

13. A method for scalable communication, comprising: receiving a packet at a processing unit on a system-on-chip (SoC); adding an extended object part to the packet to create a modified packet; and transmitting the modified packet to a network interface controller (NIC) located on the same SoC.

14. The method according to claim 13, wherein The extended object part is added before the payload part of the packet.

15. The method according to any one of claims 13 and 14, wherein The packet is an Ethernet packet.

16. The method according to claim 13, further comprising: receiving feedback on the modified packet from the NIC.

17. The method according to claim 13, further comprising: transmitting the modified packet to a second NIC.

18. The method according to claim 17, wherein, The second NIC is on a second SoC.

19. A system for implementing communication between a packet processing unit and a network interface controller (NIC) using extended objects, the system comprising: a memory; one or more processors; and a processing unit extended object engine, wherein the processing unit extended object engine is configured to: cause a packet to be received at the packet processing unit, wherein the packet processing unit is on a system-on-chip (SoC); add an extended object part to the packet to create a modified packet; and cause the modified packet to be transmitted to the NIC located on the same SoC.

20. The system according to claim 19, wherein The extended object part is added before the payload part of the packet.

21. The system according to any one of claims 19 and 20, wherein, The packet is an Ethernet packet.

22. The system according to claim 19, wherein, The extended object engine is further configured to: receive feedback on the modified packet from the NIC.

23. The system according to claim 19, wherein, The extended object engine is further configured to: transmit the modified packet to a second NIC.

24. The system according to claim 23, wherein The second NIC is on a second SoC.

25. The system according to claim 23, wherein The second NIC is on the SoC.

26. A computer program product comprising instructions that, when executed by a processor, cause the processor to perform the method according to any one of claims 13-18.

Citation Information

Patent Citations

  • NUMA aware network interface

    US20140122634A1

  • Data Packet Processing System on a Chip

    US20170208015A1