Multi-tenant data processing unit
The multi-tenant DPU addresses inefficiencies in SmartNICs by using tag gateways and engines to enforce policies, ensuring secure and efficient resource allocation and data isolation among tenants.
Patent Information
- Application Number
- JP2025511612
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-08-22
- Filing Date
- 2023-04-24
- Publication Date
- 2025-09-25
AI Technical Summary
Current acceleration devices, such as SmartNICs, fail to propagate tenant-specific data attributes across components, leading to inefficiencies and security risks due to independent component operations and software intermediation overhead.
A multi-tenant capable DPU with tag gateways and data processing engines that assign and enforce tags to ensure tenant isolation and performance, using hardware-based tag policies to manage resource allocation and data access.
Ensures secure and efficient resource utilization and data isolation among tenants by enforcing tag policies across components, preventing nosy and noisy neighbor issues.
Smart Images

Figure 2025531690000001_ABST
Abstract
Description
[Technical Field]
[0001] Embodiments of the present disclosure generally relate to a data processing unit (DPU) that assigns different tags to different tenants using the DPU. The DPU can include multiple data processing engines (DPEs) that can enforce different policies based on the tags to, for example, ensure tenant isolation (prevent nosy neighbors) and meet performance requirements (prevent noisy neighbors). [Background technology]
[0002] Current acceleration devices, such as smart network interface cards / controllers (SmartNICs), contain various components, such as I / O gateways, processor subsystems, networks-on-chips (NoCs), storage and data accelerators, data processing engines, and programmable logic (PL). In the prior art, these various components within an acceleration device are treated as single, integrated components that simply pass processing or transform data before forwarding it to the next component. These components either interface with each other via a common bus protocol, such as Advanced eXtensible Interface (AXI), or have protocol bridging functionality that converts one component's protocol, such as PCIe, to another component's protocol, such as AXI.
[0003] When transmitting data from one component to the next, properties or attributes of the data specific to a component or to a tenant servicing functionality for that tenant are not propagated to the next component, making the two components invisible to each other, even if both components may perform specific functions servicing the same tenant. In other words, different components within the same accelerator device act independently of each other, even though they may perform interrelated operations. Some prior art involves software intermediation (e.g., a hypervisor or component firmware) to reacquire tenant-specific attributes across various components (although bridges may create fuzzy boundaries) so that each time one component receives processing or data from another, the receiving component can reacquire tenant properties through the intermediary software. However, this software intermediation introduces overhead, especially when enabling services across components for multiple tenant functions. Furthermore, some tenants may not trust the intervening hypervisor or other software entity on their behalf (as in bare-metal deployments). Summary of the Invention
[0004] One embodiment describes a multi-tenant capable DPU including a first tag gateway configured to couple to a host, a second tag gateway configured to couple to a network, where the first tag gateway and the second tag gateway are configured to assign different tags to data received from different tenants, and a plurality of DPEs configured to enforce different tag policies based on the different tags when processing the received data.
[0005] Another embodiment described herein is a multi-tenant DPU including: a first tag gateway coupled to a local interface of the DPU; a second tag gateway coupled to a remote interface of the DPU, where the first tag gateway and the second tag gateway are configured to assign different tags to data received from different tenants in the DPU; and a plurality of data processing engines (DPEs) configured to (i) segregate data received from different tenants and (ii) enforce different tag policies based on the different tags when processing the received data to ensure performance criteria for the tenants are met.
[0006] Another embodiment described herein is a method that includes receiving data from multiple tenants at a first tag gateway of a data processing unit (DPU), assigning different tags to data received from different tenants of the multiple tenants, and enforcing different tag policies when the tagged data from the multiple tenants is processed by a data processing engine (DPE) in the DPU.
[0007] In a manner in which the above-recited features may be understood in detail, a more particular description briefly summarized above may be made by reference to exemplary implementations, some of which are illustrated in the accompanying drawings. It should be noted, however, that the accompanying drawings illustrate only typical example implementations and therefore should not be considered limiting of the scope thereof. [Brief explanation of the drawings]
[0008] [Figure 1] 1 illustrates a system including a multi-tenant DPU, according to one embodiment. [Figure 2] 1 illustrates a DPU implemented as a system-on-chip, according to one embodiment. [Figure 3]1 is a flowchart for establishing an end-to-end binding in a DPU according to one embodiment. [Figure 4] 1 is a flowchart for assigning tags to tenants and using those tags to process data at DPEs within a DPU, according to one embodiment. [Figure 5] 1 illustrates the use of tags to share resources among tenants, according to some embodiments. [Figure 6] 1 illustrates the use of tags to share resources among tenants, according to some embodiments. DETAILED DESCRIPTION OF THE INVENTION
[0009] For ease of understanding, wherever possible, identical reference numbers have been used to indicate identical elements common to the figures. It is contemplated that elements of one embodiment may be beneficially incorporated in other embodiments.
[0010] Various features are described below with reference to the drawings. It should be noted that the drawings may or may not be drawn to scale, and that elements of similar structure or function are represented by similar reference numerals throughout the drawings. It should be noted that the drawings are intended only to facilitate the description of the features. They are not intended as an exhaustive description of the features or as limitations on the scope of the claims. In addition, the illustrated example need not have all the aspects or advantages shown. An aspect or advantage described in connection with a particular embodiment is not necessarily limited to that embodiment and may be implemented in any other embodiment, even if not so illustrated or explicitly described.
[0011] Embodiments herein describe using a data processing unit (DPU), such as a SmartNIC, an artificial intelligence unit, a network storage unit, or a database acceleration unit, to create tag bindings that can be used to assign tags to data corresponding to different tenants. In one embodiment, the DPU includes a tag gateway at the interface between the host and a network element (e.g., a switch) that recognizes and tags data corresponding to tenants. These tags are then recognized by data processing engines (DPEs) within the DPU, such as an AI engine, a cryptographic engine, a direct memory access (DMA) engine, or the like. These DPEs can be configured to enforce tag policies that provide security and performance isolation between tenants. For example, one of the tenants cannot access data intended for another tenant (e.g., to prevent nosy neighbors) or take more than its share of resources within the DPE (e.g., to prevent noisy neighbors). In this way, tag bindings can be created end-to-end through the DPU, and different DPEs within the DPU enforce tag policies tailored to specific tenants.
[0012] 1 illustrates a system 100 including a multi-tenant enabled DPU 110, according to one embodiment. Specifically, system 100 illustrates connecting DPU 110 to a host 105 and a network 135. For example, host 105 may include one or more processors (e.g., processor complexes) and memory that communicate with DPU 110 using any number of PCIe connections 140.
[0013] Network 135 may include any number of network elements (e.g., one or more switches) coupled to DPU 110 by Ethernet connection 150. In one embodiment, DPU 110 may be a SmartNIC where host 105 uses DPE 120 in DPU 110 to perform data processing tasks that would otherwise be performed by a processor on host 105. DPU 110 may be an AI accelerator unit for performing AI or machine learning tasks, a crypto unit for encrypting and decrypting data transmitted between host 105 and network 135, a network storage unit, a database acceleration unit for a cloud computing environment, etc.
[0014] In one embodiment, the connection between DPU 110 and host 105 is a local interface, while the connection between DPU 110 and network 135 is a remote interface. These different interfaces may use different communication protocols. For example, the local interface between host 105 and DPU 110 may use PCIe, Compute Express Link (CXL), or Cache Coherent Interconnect for Accelerators (CCIX). The interface between DPU 110 and network 135 may use InfiniBand or Ethernet.
[0015] DPU 110 includes a tag gateway 115 that tags data created by different tenants sharing DPU 110. For example, multiple hosts 105 may be attached to DPU 110 at different physical ports, with each host 105 being a different tenant. In another embodiment, a particular host 105 may have multiple VMs, each treated as a different tenant (e.g., running different applications or associated with different customers within a cloud computing environment or data center). Thus, a tenant may be a physical computing system (e.g., host 105), a virtual machine or container, a particular application, or a customer within a data center environment. Thus, a tenant may correspond to a physical component (e.g., different ports) or may be a logical construct (e.g., different customers using the same virtual machine or the same host 105).
[0016] The tag gateway 115A receives data from the host 105 and tags the data using attributes in the data. In other words, the tag gateway 115A can use identifying attributes in the received data to determine that the data is from a particular tenant and then assign a tag to that data that corresponds to the identified tenant. For example, the gateway 115 can use an ID in the data to identify the tenant and provide a tag. In another embodiment, the gateway 115 can evaluate the source of the data (e.g., the host or VM that sent the data, the application ID, the port on which the data was received, etc.) to identify the tenant and provide a tag. In yet another embodiment, the gateway 115 can evaluate the destination or address range of the data to identify the tenant and tag the data.
[0017] In this embodiment, DPU 110 includes trusted entity 130, which may be the only entity within DPU 110 authorized to configure tag gateway 115A. DPU 110 may include a firewall that ensures that only trusted entity 130 can configure tag gateway 115A to create tag bindings that link attributes within data (e.g., ID, source information, destination information, etc.) to specific tags. Thus, unauthorized external actors cannot gain access to tag gateway 115A to change or spoof tag bindings. That is, tags are unspoofable and cannot be changed.
[0018] In one embodiment, DPU 110 includes a full hardware firewall so that tags assigned by tag gateway 115 are trusted. That is, all other hardware, firmware, and software entities within DPU 110 cannot change tags set by tag gateway 115. Meanwhile, in another embodiment, DPU 110 can support trusted and untrusted tags. Each of the downstream hardware components within DPU 110 (e.g., DPE 120) can distinguish between trusted and untrusted tags.
[0019] In one embodiment, an untrusted tag is assigned to a tenant that accepts a lower level of service (e.g., at a lower or no cost) and is also willing to suffer from the noisy or nosy neighbor effect. For example, a cloud service provider may offer a very low or no-cost level of service to educational institutions. These educational institutions receive computational, storage, and networking resources for students to run research applications. This educational tenant is assigned an untrusted tag that provides best effort (or excess computing power) but does not have the same level of data isolation as a tenant that is assigned a trusted tag. In another example, an untrusted tag may also be used in a DPU to bypass cryptographic engines / accelerators, thus saving the cloud service provider power and costs in providing these services to educational tenants.
[0020] Once tagged, the data is fed into a pipeline 119 that includes multiple DPEs 120. The DPEs 120 can be AI engines / accelerators, database engines / accelerators, cryptographic engines / accelerators, compression engines / accelerators, etc. The DPEs 120 can be formed from hard circuitry, programmable logic (PL), or a combination of both.
[0021] In one embodiment, all of the DPEs 120 in a DPU 110 may be the same type of engine or accelerator. For example, a DPU 110 may be designed to accelerate AI tasks associated with data transmitted between the host 105 and the network 135. In that case, all of the DPEs 120 may be AI engines. That is, the DPEs 120 may be homogeneous. Alternatively, the DPEs 120 may be heterogeneous, such as DPE 120A being a DMA engine and DPE 120B being a cryptographic engine.
[0022] 1, DPEs 120 are arranged in pipeline 119 so that data can be processed sequentially by multiple DPEs 120, but this is merely an example. For example, data for one tenant may pass through DPEs 120A and 120B, while data for another tenant may be processed only by DPE 120A and not by DPE 120B. In general, DPU 110 may have any number of DPEs 120, and a particular tenant may use all, a subset, or none of the DPEs 120 when its data is transmitted through DPU 110.
[0023] DPE 120 includes tag policy 125, which defines how differently tagged data should be processed by DPE 120. Stated another way, tag policy 125 indicates how DPE 120 should process data for each of the tenants that may use DPU 110. For example, tag policy 125A may indicate that data tagged for tenant A should be able to use a maximum of 25% of the hardware resources within DPE 120A. Thus, when DPE 120A receives a burst of traffic from tenant A, even if it has unused resources available, tag policy 125A prevents DPE 120 from providing more than 25% of its resources to process tenant A's traffic. Thus, if, a short time later, DPE 120A receives a burst of traffic from tenant B for which up to 75% of DPE 120A's resources should be provided, those resources are immediately available to tenant B. In this example, tags and tag policy 125 prevent a noisy neighbor (e.g., tenant A) from using resources that should be used for tenant B.
[0024] Furthermore, tag policy 125 can provide tenant isolation, in which tenants cannot access each other's data. For example, DPU 110 may include memory (not shown) that stores tenant data. If DPE 120 attempts to access data for tenant A while processing data for tenant B, tag policy can stop the attempt. This prevents a nosy neighbor situation in which one tenant may attempt to access data for another tenant on a shared resource (DPU 110 or a hardware component within DPU 110). On the other hand, tag policy 125 may indicate that some tenants can access data for other tenants. For example, tenants A and B may be virtual machines used by the same customer, while tenant C may be a virtual machine for a different customer. Tag policy 125 may allow tenants A and B to share data with each other, but not allow tenants A and B to access tenant C's data, or vice versa.
[0025] The tag policies 125 of the DPEs 120 may be the same or different. For example, tag policy 125A for DPE 120A may be different from tag policy 125B for DPE 120B. For example, tag policy 125 may give tenant A a larger share of the hardware resources in DPE 120A compared to DPE 120B.
[0026] Trusted entity 130 may be tasked with configuring tag policy 125. In one embodiment, only trusted entity 130 can configure and modify tag policy 125. This prevents unauthorized actors from altering the security and performance isolation established by tag policy 125. Furthermore, while FIG. 1 depicts trusted entity 130 as part of DPU 110, in other embodiments, trusted entity 130 may be external to DPU 110 and have a verified communication path to DPU 110 to perform the functions described above.
[0027] The remote interface of DPU 110 includes a tag gateway 115B that tags data received from network 135. Similar to the local interface and tag gateway 115A, gateway 115B can use physical attributes to tag data, such as identifying the tenant and on which port the data was received. Alternatively or additionally, gateway 115B can tag received data using attributes within the data, such as IP address, source / destination information, or traffic flow identifier. Thus, gateway 115B can perform logical tagging, whereby different traffic flows received on the same port can be identified as different tenants.
[0028] In general, the tagging performed by gateway 115 and tag policy 125 creates end-to-end bindings for each tenant as data flows from host 105 to network 135 and from network 135 to host 105. Furthermore, data traveling in the opposite direction may be associated with the same tenant and therefore assigned the same tag despite the interface for DPU 110 using a different protocol. For example, a particular traffic flow received at DPU 110 from network 135 may be part of the same tenant as data received at DPU 110 from host 105. Tag bindings can link different attributes to the same tag. For example, tag gateway 115A may tag all data with a particular ID defined by the PCIe protocol with tag A, while gateway 115B tags all data with a particular IP address with tag A. Thus, data for the same tenant may be communicated to DPU 110 using different communication protocols, but the tag binding in tag gateway 115 can nevertheless assign the data to the same tag using different attributes, thereby indicating that the data is for the same tenant. Thus, data for the same tenant can be assigned the same tag regardless of which direction the data flows through DPU 110.
[0029] FIG. 2 illustrates a DPU implemented as a system-on-chip (SoC) 200, according to one embodiment. The SoC 200 (e.g., an integrated circuit (IC)) may include a tag gateway 115, a DPE 120, and a trusted entity 130. In addition, FIG. 2 illustrates a tag binding 205 in the tag gateway 115, which may be generated by the trusted entity 130. As described above, the tag binding 205 may associate or link attributes in data received by the SoC 200 from a host or network to a particular tag. For example, the tag gateway 115 may identify the ID, source, destination, address space, IP address, etc., and use the attributes to index into the tag binding 205 to identify the tag for the data. In one embodiment, each tenant may be assigned a different tag, but different traffic flows may be assigned the same tag if these flows are part of the same tenant.
[0030] Because the interfaces used by gateways 115A and 115B may use different communication protocols, e.g., PCIe, CXL, or CCIX for gateway 115A and Ethernet for gateway 115B, tag binding 205A may include different attributes than tag binding 205B.
[0031] In this example, the DPE 120 includes a wrapper 215 (e.g., hardware circuitry) that enforces the tag policy 125. For example, before received data is processed by the DPE 120, the data first passes through a corresponding wrapper 215. The wrapper 215 can then enforce policies on the tagged data, such as ensuring that the DPE 120 does not access differently tagged data or ensuring that the DPE 120 does not allocate more resources than necessary to process the data. For example, if the wrapper 215 determines that the DPE 120 will consume more resources than allowed to process the received tagged data (e.g., if the wrapper 215 receives a burst of data from a particular tenant), the wrapper can block some of the data (or throttle the data) so that the DPE 120 does not consume more resources than necessary to process the data in accordance with the tag policy 125.
[0032] However, using wrapper 215 to enforce tag policies is only one example. In other embodiments, DPE 120 may include a table that stores tag policies 125. DPE 120 may index into the table using a tag to identify a particular policy for that tag.
[0033] In yet another embodiment, trusted entity 130 can statically assign DPEs 120 to particular tenants. For example, Tenant A may be assigned two DPEs, and Tenant B may be assigned four DPEs. Tags can be used to route only Tenant A's data to Tenant A's two assigned DPEs, while only Tenant B's data is routed to Tenant B's four DPEs. In another example, SoC 200 may include multiple parallel pipelines of DPEs, and each pipeline may be statically assigned to a particular tenant; for example, Tenant A's data is processed only by the first pipeline, Tenant B's data is processed only by the second pipeline, and Tenant C's data is processed only by the third and fourth pipelines.
[0034] SoC 200 also includes a network-on-chip (NoC) 210 that facilitates communication between gateway 115 and DPE 120, and between DPEs 120. Although not shown, NoC 210 may include tag policies to provide data isolation and meet performance requirements for tagged tenant data. However, NoC 210 is optional.
[0035] 2 shows an SoC implementation of the DPU, which may include a single IC, in other embodiments, the DPU may be implemented using multiple ICs. For example, the DPU may include an anchor die that includes some of the hardware components shown in FIG. 2 and a chiplet that includes the remaining hardware components.
[0036] 3 is a flowchart of a method 300 for establishing end-to-end bindings in a DPU, according to one embodiment. In block 305, a trusted entity (e.g., trusted entity 130 of FIG. 1) establishes tag bindings for external attributes of a communication protocol. As described above, a DPU may have a local interface that communicates with a host using a first communication protocol (e.g., PCIe or CXL) and a remote interface that communicates with a network device, such as a switch, using a second communication protocol (e.g., TCP / IP or UDP).
[0037] Because of different communication protocols, a trusted entity may generate different tag bindings that rely on different attributes. Thus, tag bindings can be customized depending on the interface in which they are deployed.
[0038] In block 310, the trusted entity stores the tag binding in a tag gateway in the DPU.
[0039] In block 315, the trusted entity establishes a tag policy for the tag. The trusted entity may generate a tag policy for all hardware components within the DPU that process tenant data. The tag policy may establish data isolation requirements for each tag (i.e., each tenant). The isolation requirements may enable security isolation between tenants and / or performance isolation between tenants.
[0040] In block 320, the trusted entity configures the DPEs to enforce the tag policy. This can be done in a variety of ways, such as using a wrapper, using a table, or statically assigning a particular DPE to particular tagged data. Furthermore, embodiments herein are not limited to providing the tag policy to the DPU, but may also be provided to an NoC or memory controller within the DPU.
[0041] 4 is a flowchart of a method 400 for assigning tags to tenants and using those tags to process data at DPEs within a DPU, according to one embodiment. At block 405, the DPU receives data from multiple tenants. In one embodiment, the data includes data packets, which may depend on the communication protocol.
[0042] In one embodiment, the DPU receives packets on two different interfaces. One interface may be a local interface connected to one or more host computing systems (e.g., host 105 of FIG. 1). Another interface may be a remote interface connected to one or more network devices part of a network (e.g., network 135). The network may be a local area network (LAN), such as a cloud service provider's (CSP's) data center network, or a wide area network (WAN), such as the Internet. In one embodiment, the interfaces use different communication protocols, such as PCIe or Ethernet.
[0043] In block 410, the DPU assigns a different tag to each of the tenants sending data to the DPU. For example, a tag gateway in the DPU can evaluate attributes in the received data to identify which tenant sent the data. As described above, a tenant can be a physical computing system, a virtual machine or container, a particular application, or a customer in a data center environment. Thus, a tenant can correspond to a physical component (e.g., different ports) or can be a logical construct (e.g., different customers using the same virtual machine or the same host). The data can include attributes such as ID, source / destination addresses, port numbers, memory addresses, etc., and the tag gateway can use these attributes to identify a specific tag for the data, which corresponds to the tenant sending the data.
[0044] The tag gateway can then attach a tag to the data. The DPU can use a variety of different communication protocols to transmit data internally. Regardless of the protocol, the DPU can ensure that the tag remains with the data so that internal hardware components such as DPEs, DMA controllers, memory controllers, and NoCs can identify the tag and perform some action on the data based on the tag attached to it.
[0045] In block 415, a hardware component within the DPU (e.g., a DPE) enforces different tag policies when data for multiple tenants is processed. For example, the DPE may include a wrapper or policy table that uses the tags assigned in block 410 to enforce corresponding tag policies. In one embodiment, tag policies may be defined to prevent nosy and noisy neighbors (i.e., tenants).
[0046] Block 415 may include two sub-blocks to prevent nosy and noisy neighbors. In block 420, the DPE isolates data for tenants. That is, when processing data for tenant A, the tag policy may prevent the DPE from accessing data for another tenant. Or, the tag policy may indicate that tenant A can access data for tenant B but not data for tenant C.
[0047] In block 425, the DPE ensures that performance criteria are met for the tenants. For example, the DPE may prevent Tenant A from using more than 33% of the hardware resources, even if there are currently unused hardware resources within the DPE. In this way, the DPE has available hardware resources even when it receives data for a different tenant. Figures 5 and 6 describe different strategies for dealing with nosy and noisy neighbors.
[0048] 5 and 6 illustrate the use of tags to share resources among tenants, according to some embodiments. FIG. 5 illustrates a DPE pipeline 500 that uses tag policies to ensure that the DPEs can meet desired performance criteria for tenants. The pipeline 500 includes DPEs 120A-C, each with its own hardware resources 505A-C. DPE 120A guarantees that Tenant A can access up to 66% of its hardware resources 505A, while Tenant B can access up to 34% of its hardware resources 505A. DPE 120B guarantees that Tenant A can access up to 66% of its hardware resources 505B, while Tenant B can access up to 34% of its hardware resources 505B. DPE 120C guarantees that Tenant A can access up to 50% of its hardware resources 505C, while Tenant B can access up to 50% of its hardware resources 505C. These hardware allocations can be set by tag policies. In particular, the tag policies for each of the DPEs need not be the same because DPE 120C allocates its hardware resources 505C to tenants A and B differently than DPEs 120A and 120B.
[0049] Ensuring that tenants cannot exceed their maximum allocation of resources within a DPE prevents the noisy neighbor problem, in which one tenant may use most or all of the resources within a DPE, and then when data for another tenant arrives at that DPE, it has no available hardware resources, thereby causing that tenant's data to wait, even though the tenant may have higher priority data. However, by using tags to identify tenant data, hardware resources 505 can be partitioned according to priority, thereby ensuring that the DPE has available resources for different tenants.
[0050] Although not shown, the problem of nosy neighbors can be solved by DPE 120 having a firewall or control policy that prevents hardware resources processing Tenant A data from accessing Tenant B data, and vice versa.
[0051] 6 illustrates multiple DPE pipelines 600A-C with their respective DPEs. That is, pipeline 600A includes DPEs 120D-F, pipeline 600B includes DPEs 120G-I, and pipeline 600C includes DPEs 120J-L. In one embodiment, the DPEs within pipelines 600 are the same, so that pipelines 600 may perform the same task (e.g., a digital signal processing task or a machine learning task). That is, each pipeline 600 may include the same three DPEs (which may be three of the same type or a combination of different types of DPEs).
[0052] Instead of partitioning the hardware resources within the DPE, in this embodiment, a trusted entity can assign each pipeline 600 to a respective tenant. That is, data for tenant A is processed only by pipeline 600A, while data for tenant B is processed only by pipelines 600B and 600C. Thus, data for tenant B has twice the processing bandwidth than data for tenant A. In this way, each DPE 120 can be dedicated to or assigned to one tenant. Doing so solves the noisy neighbor problem, since each pipeline 600 is limited to a single tenant. Furthermore, one tenant can be prioritized over another by allocating more pipelines to the higher-priority tenant (tenant B in this example).
[0053] In the foregoing, reference is made to the embodiments presented in this disclosure. However, the scope of the disclosure is not limited to the specific described embodiments. Instead, any combination of the described features and elements, whether associated with different embodiments or not, is contemplated for implementing and practicing the contemplated embodiments. Moreover, while the embodiments disclosed herein may achieve advantages over other possible solutions or prior art, whether or not a particular advantage is achieved by a given embodiment does not limit the scope of the disclosure. Accordingly, the foregoing aspects, features, embodiments, and advantages are merely illustrative and are not considered elements or limitations of the appended claims unless expressly recited in the claims.
[0054] As will be appreciated by one skilled in the art, embodiments disclosed herein may be embodied as a system, method, or computer program product. Accordingly, aspects may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, microcode, etc.), or an embodiment combining software and hardware aspects, all of which may be generally referred to herein as a "circuit," "module," or "system." Furthermore, aspects may take the form of a computer program product embodied in one or more computer-readable medium(s) having computer-readable program code embodied therein.
[0055] Any combination of one or more computer-readable media may be utilized. The computer-readable medium may be a computer-readable signal medium or a computer-readable storage medium. The computer-readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (non-exhaustive list) of computer-readable storage media include an electrical connection having one or more wires, a portable computer floppy disk, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disk read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this specification, a computer-readable storage medium is any tangible medium that can contain or store a program for use by or in connection with an instruction execution system, apparatus, or device.
[0056] A computer-readable signal medium may include a propagated data signal in which computer-readable program code is embodied, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electromagnetic, optical, or any suitable combination thereof. A computer-readable signal medium is not a computer-readable storage medium but may be any computer-readable medium that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
[0057] The program code embodied on the computer readable medium may be transmitted using any suitable medium, including but not limited to wireless, wireline, fiber optic cable, RF, etc., or any suitable combination of the foregoing.
[0058] Computer program code for carrying out operations of aspects of the present disclosure may be written in any combination of one or more programming languages, including, for example, object-oriented programming languages such as Java, Smalltalk, C++, and conventional procedural programming languages such as the "C" programming language or similar programming languages. The program code may execute entirely on the user's computer, partially on the user's computer as a standalone software package, partially on the user's computer, partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet Service Provider).
[0059] Aspects of the present disclosure are described below with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments presented in the present disclosure. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer program instructions. These computer program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing apparatus, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in the flowchart and / or block diagram blocks.
[0060] These computer program instructions may also be stored on a computer-readable storage medium, and the instructions may direct a computer, programmable data processing apparatus, and / or other device to function in a particular manner to produce an article of manufacture including instructions that implement the functions / acts specified in the flowchart and / or block diagram blocks.
[0061] Computer program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus, or other device to create a computer-implemented process, such that the instructions executing on the computer or other programmable apparatus provide a process for implementing the functions / acts specified in the flowchart and / or block diagram blocks.
[0062] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may in fact be executed substantially concurrently, or the blocks may be executed in the reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, may be implemented by a dedicated hardware-based system that performs the specified functions or acts or a combination of dedicated hardware and computer instructions.
[0063] The above-disclosed technology may be illustrated in the following non-limiting examples.
[0064] Example 1. A multi-tenant capable data processing unit (DPU), comprising: a first tag gateway configured to couple to a host; a second tag gateway configured to couple to a network, the first tag gateway and the second tag gateway configured to assign different tags to data received from different tenants; and a plurality of data processing engines (DPEs) configured to enforce different tag policies based on the different tags when processing the received data.
[0065] Example 2. The DPU of example 1, wherein the data is received at the first tag gateway using a first communication protocol that is different from a second communication protocol used by the data received at the second tag gateway.
[0066] Example 3. The DPU of Example 2, wherein the first tag gateway is configured to evaluate a first attribute associated with the first communication protocol when assigning the tag, and the second tag gateway is configured to evaluate a second attribute associated with the second communication protocol when assigning the tag, and wherein a first value of the first attribute and a second value of the second attribute are associated with the same tag to indicate that the first value and the second value are associated with the same tenant.
[0067] Example 4. The DPU of example 1, wherein the tag provides end-to-end binding through the DPU such that multiple DPEs enforce the same tag policy for a particular tag.
[0068] Example 5. The DPU of Example 1, wherein the tag is unspoofable and cannot be altered by multiple DPEs, and a first portion of the tag is a trusted tag and a second portion of the tag is an untrusted tag by multiple DPEs.
[0069] Example 6. The DPU of Example 1, further comprising a trusted entity configured to (i) establish tag bindings in a first tag gateway and a second tag gateway used to assign tags to received data, and (ii) configure different tag policies in each of a plurality of DPEs.
[0070] Example 7. The DPU of example 1, wherein multiple DPEs include respective wrappers that enforce different tag policies.
[0071] Example 8. The DPU of Example 1, wherein the different tag policies indicate that a first tenant is allocated a larger maximum share of hardware resources at a first DPE of the plurality of DPEs compared to a second tenant.
[0072] Example 9. The DPU of Example 1, wherein the different tag policies indicate that a first tenant is allocated more dedicated DPEs among the plurality of DPEs than a second tenant.
[0073] Example 10. The DPU of example 1, wherein the DPU is implemented as a smart network interface controller (SmartNIC).
[0074] Example 11. A multi-tenant capable data processing unit (DPU), comprising: a first tag gateway coupled to a local interface of the DPU; a second tag gateway coupled to a remote interface of the DPU, the first tag gateway and the second tag gateway configured to assign different tags to data received from different tenants in the DPU; and a plurality of data processing engines (DPEs) configured to (i) segregate data received from different tenants and (ii) enforce different tag policies based on the different tags when processing the received data to ensure performance criteria for the tenants are met.
[0075] Example 12. The DPU of Example 11, wherein the data is received at the first tag gateway using a first communication protocol that is different from a second communication protocol used by the data received at the second tag gateway.
[0076] Example 13. The DPU of Example 12, wherein the first tag gateway is configured to evaluate a first attribute associated with the first communication protocol when assigning the tag, and the second tag gateway is configured to evaluate a second attribute associated with the second communication protocol when assigning the tag, and wherein a first value of the first attribute and a second value of the second attribute are associated with the same tag to indicate that the first value and the second value are associated with the same tenant.
[0077] Example 14. The DPU of example 11, wherein the tag provides end-to-end binding through the DPU such that multiple DPEs enforce the same tag policy for a particular tag.
[0078] Example 15. A method including receiving data from a plurality of tenants at a first tag gateway of a data processing unit (DPU), assigning different tags to data received from different tenants of the plurality of tenants, and enforcing different tag policies when the tagged data from the plurality of tenants is processed by a data processing engine (DPE) in the DPU.
[0079] Example 16. The method of Example 15, further including receiving data from multiple tenants at a second tag gateway of the DPU and assigning different tags to data received from different tenants of the multiple tenants using the second tag gateway, wherein the data is received at the first tag gateway using a first communication protocol that is different from a second communication protocol used by the data received at the second tag gateway.
[0080] Example 17. The method of Example 16, wherein a first tag gateway evaluates a first attribute associated with a first communication protocol when assigning a tag, and a second tag gateway evaluates a second attribute associated with a second communication protocol when assigning a tag, and a first value of the first attribute and a second value of the second attribute are associated with the same tag to indicate that the first value and the second value are associated with the same tenant.
[0081] Example 18. The method of example 15, wherein the tag provides end-to-end binding through the DPU such that for a particular tag, the DPEs enforce the same tag policy.
[0082] Example 19. The method of example 15, wherein the tag is unspoofable and cannot be altered by the DPE.
[0083] Example 20. The method of example 15, further including: using a trusted entity to establish, at the first tag gateway, a tag binding used to assign tags to received data; and using the trusted entity to configure different tag policies at each of the DPEs.
[0084] While the above is directed to particular examples, other and further examples may be devised without departing from the basic scope thereof, which scope is determined by the following claims.
Claims
1. A multi-tenant data processing unit (DPU), comprising: a first tag gateway configured to couple to the host; a second tag gateway configured to couple to a network, the first tag gateway and the second tag gateway configured to assign different tags to data received from different tenants; and a plurality of data processing engines (DPEs) configured to enforce different tag policies based on the different tags when processing the received data.
2. 2. The DPU of claim 1, wherein the tag is unspoofable and cannot be altered by the plurality of DPEs, a first portion of the tag is a trusted tag, and a second portion of the tag is an untrusted tag by the plurality of DPEs.
3. 2. The DPU of claim 1, further comprising a trusted entity configured to: (i) establish tag bindings at the first tag gateway and the second tag gateway used to assign tags to received data; and (ii) configure the different tag policies at each of the plurality of DPEs.
4. The DPU of claim 1 , wherein the plurality of DPEs include respective wrappers that enforce the different tag policies.
5. 2. The DPU of claim 1, wherein the different tag policies indicate that a first tenant is allocated a larger maximum share of hardware resources in a first DPE of the plurality of DPEs than a second tenant.
6. The DPU of claim 1 , wherein the different tag policies indicate that a first tenant is allocated more dedicated DPEs of the plurality of DPEs than a second tenant.
7. The DPU of claim 1 , wherein the DPU is implemented as a Smart Network Interface Controller (SmartNIC).
8. A multi-tenant data processing unit (DPU), comprising: a first tag gateway coupled to a local interface of the DPU; a second tag gateway coupled to a remote interface of the DPU, the first tag gateway and the second tag gateway configured to assign different tags to data received from different tenants in the DPU; and a plurality of data processing engines (DPEs) configured to (i) segregate data received from different tenants, and (ii) enforce different tag policies based on the different tags when processing the received data to ensure performance criteria for the tenants are met.
9. 9. The DPU of claim 1 or 8, wherein the data is received at the first tag gateway using a first communication protocol that is different from a second communication protocol used by the data received at the second tag gateway.
10. 13. The DPU of claim 12, wherein the first tag gateway is configured to evaluate a first attribute associated with the first communication protocol when assigning the tag, and the second tag gateway is configured to evaluate a second attribute associated with the second communication protocol when assigning the tag, and a first value of the first attribute and a second value of the second attribute are associated with the same tag to indicate that the first value and the second value are associated with the same tenant.
11. 9. The DPU of claim 1 or 8, wherein the tag provides end-to-end binding through the DPU such that for a particular tag, the multiple DPEs enforce the same tag policy.
12. 1. A method comprising: receiving data from a plurality of tenants at a first tag gateway of a data processing unit (DPU); assigning different tags to the data received from different tenants of the plurality of tenants; and enforcing different tag policies when the tagged data from the multiple tenants is processed by a data processing engine (DPE) within the DPU.
13. receiving data from the plurality of tenants at a second tag gateway of the DPU; 13. The method of claim 12, further comprising: using the second tag gateway to assign different tags to the data received from different tenants of the plurality of tenants, wherein the data is received at the first tag gateway using a first communication protocol that is different from a second communication protocol used by data received at the second tag gateway.
14. 13. The method of claim 12, wherein the tag provides an end-to-end binding through the DPU such that the DPEs enforce the same tag policy for a particular tag, and the tag is non-spoofable and cannot be modified by the DPE.
15. using a trusted entity to establish a tag binding at the first tag gateway used to assign a tag to the received data; 16. The method of claim 15, further comprising: using the trusted entity to configure the different tag policies at each of the DPEs.