Multi-tenant optimized serverless deployment using intelligent network interface cards and universal storage

By creating containers on intelligent network interface cards and using universal storage devices, the problems of function execution, data proximity and security in multi-tenant serverless architecture are solved, and low-latency, high-bandwidth and scalable function execution are achieved.

CN113785273BActive Publication Date: 2025-09-12CISCO TECHNOLOGY INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN202080033102.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-05-08
Filing Date
2020-05-01
Publication Date
2025-09-12
Estimated Expiration
2040-05-01

AI Technical Summary

Technical Problem

In a multi-tenant serverless architecture, how to effectively move function execution close to the data to reduce latency and improve security and scalability.

Method used

By using intelligent network interface cards (NICs) and universal storage devices, containers are created to execute serverless functions at the NIC layer and access data through the PCIe bus. The agent policy determines whether the function is executed on the NIC or the host processor.

Benefits of technology

It enables multi-tenant serverless function execution with low latency, high bandwidth, and high security, protects host servers from malicious code attacks, and provides scalable processing capabilities.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113785273B_ABST
    Figure CN113785273B_ABST
Patent Text Reader

Abstract

A multi-tenant optimized serverless deployment using a network interface card and a universal storage device may be provided. A first request to execute a first function may be received. Next, a determination may be made to execute the first function at a first network interface card. The first network interface card may include multiple processors. A container may be created at the first network interface card. The container may include at least one processor from the multiple processors. The first function may be executed at the container.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] This application was filed on May 1, 2020, as a PCT international patent application and claims priority to U.S. Provisional Patent Application Serial No. 16 / 406,872, filed on May 8, 2019, the entire disclosure of which is incorporated by reference in its entirety. Technical Field

[0002] The present disclosure relates generally to multi-tenant data storage and, more particularly, to multi-tenant serverless function execution on intelligent network interface cards and universal storage devices. Background Art

[0003] Multi-tenancy is an architecture in which a single software instance serves multiple user devices. Each user is called a tenant. Multi-tenancy can be economical because software development and maintenance costs are shared. Multi-tenancy can be particularly useful for applications developed using serverless architecture. Serverless architecture, also known as Function as a Service (FaaS), is a type of cloud computing service that allows users to develop, run, and manage application functions without the complexity of building and maintaining physical and software-based infrastructure typically associated with developing and launching applications. BRIEF DESCRIPTION OF THE DRAWINGS

[0004] The accompanying drawings, which are incorporated in and constitute a part of this disclosure, illustrate various embodiments of the present disclosure. In the drawings:

[0005] FIG1 is a block diagram of an example operating environment;

[0006] Figure 2 is a block diagram of a network interface card;

[0007] Figure 3 is a block diagram of a system for providing a multi-tenant optimized serverless deployment using network interface cards and general purpose storage devices;

[0008] Figure 4 is a flow chart of a method for providing a multi-tenant optimized serverless deployment using network interface cards and universal storage; and

[0009] Figure 5 is a block diagram of a computing device. DETAILED DESCRIPTION

[0010] Overview

[0011] Various aspects of the invention are set out in the independent claims and preferred features are set out in the dependent claims. Features of one aspect may apply to each aspect alone or in combination with other aspects.

[0012] A multi-tenant optimized serverless deployment using a network interface card and commodity storage may be provided. A first request to execute a first function may be received. Next, a determination may be made to execute the first function at a first network interface card. The first network interface card may include multiple processors. A container may then be created at the first network interface card. The container may include at least one processor from the multiple processors. The first function may be executed at the container.

[0013] The above summary and the following exemplary embodiments are merely exemplary and illustrative and should not be construed as limiting the scope of the present disclosure as described and claimed. Furthermore, features and / or variations other than those set forth herein may also be provided. For example, embodiments of the present disclosure may involve various feature combinations and sub-combinations described in the exemplary embodiments.

[0014] Example Embodiments

[0015] The following detailed description refers to the accompanying drawings. Wherever possible, the same reference numerals are used in the drawings and the following description to refer to the same or similar elements. Although embodiments of the present disclosure may be described, modifications, adaptations, and other implementations are possible. For example, elements shown in the drawings may be replaced, added to, or modified, and the methods described herein may be modified by replacing, reordering, or adding stages to the disclosed methods. Therefore, the following detailed description does not limit the present disclosure. Instead, the proper scope of the present disclosure is defined by the appended claims.

[0016] In serverless application development, applications can be broken down into small, independently deployable modular functions, such as routing network traffic, making online payments, or checking inventory. Each function of an application can be executed independently of other functions in a container. Containers provide the necessary environment for the function to execute, including code, runtime, system tools, system libraries, and more. However, one challenge can be keeping function execution as close to the data as possible. Due to the ephemeral nature of execution and direct connection to data, ensuring that these functions execute as close to the data as possible can be desirable.

[0017] The present disclosure provides a process for performing multi-tenant optimized serverless deployment using a network interface card (NIC) and a universal storage device. These processes can provide a process layer that is migrated to a lower level in the stack, thereby allowing multi-tenancy at the NIC layer, thereby allowing serverless functions to be executed near the location where network traffic flows out to the host server. For example, a container can be created at a NIC associated with a host server. The NIC can be an intelligent NIC and can include an agent that can determine to execute a serverless function locally on the NIC based on administrator-defined policies. The agent can then use one or more of the NIC's processors to create a container. The function can then be executed in the container. Access to data on the universal storage device can be provided via a peripheral component interconnect express (PCIe) bus.

[0018] Figure 1 is a block diagram of an example operating environment 100 in which a multi-tenant optimized serverless deployment using network interface cards and general purpose storage may be provided. Figure 1 As shown, operating environment 100 may include server 102 , NIC 104 , switch 106 , user device 108 , host processor 110 , and orchestrator 112 .

[0019] Server 102 can be a standalone server or can be part of a network of servers in a data center infrastructure. For example, server 102 can be part of a serverless computing infrastructure that can operate to provide Function as a Service (FaaS), which can allow users to develop, run, and manage application functions. Server 102 can support a multi-tenant environment in which multiple requests can be serviced simultaneously.

[0020] For example, the server 102 can be operated to provide a platform for user devices 108, including, for example, a first user device 108A, a second user device 108B, and a third user device 108C. The server 102 can provide a platform for developing, running, and managing the functions of applications based on a serverless architecture. The user devices 108 can request infrastructure through the switch 106 to perform one or more functions of the serverless application. The switch 106 can provide a communication link between the user devices 108 and the server 102. Although the server 102 is shown as being associated with three user devices, the user devices 108 can include any number of user devices and are not limited to three.

[0021] The orchestrator 112 is operable to create one or more containers for executing one or more serverless functions. For example, the orchestrator 112 may create multiple containers using one or more processors of the host processor 110. The orchestrator 112 may have visibility across application policies and application component runtime performance, as well as infrastructure performance metrics including processing resources, storage resources, and network resources. Based on application policies, the orchestrator 112 may deploy containers for executing serverless functions. In addition, if the data used to process / compute the serverless function exceeds a predetermined limit, the orchestrator 112 may scale the container. In addition, the orchestrator 112 may handle failures of containers by performing automatic failover.

[0022] The server 102 can be coupled to NICs 104, which include, for example, a first NIC 104A, a second NIC 104B, a third NIC 104C, a fourth NIC 104D, a fifth NIC 104E, and a sixth NIC 104F. The NICs 104 can provide a physical layer to communicatively couple the server 102 to the user device 108 and other servers (not shown). The NICs 104 can be integrated into the server 102 or can be externally coupled to the server 102. Although the server 102 is shown as being coupled to six NICs, the NICs 104 are not limited to six NICs and can include any number of NICs. In addition, the number of NICs can be changed by removing NICs or inserting additional NICs. In an example embodiment, the NICs 104 are also referred to as smart NICs 104.

[0023] Figure 2 1 is a block diagram illustrating an example of one of the NICs 104 (ie, the first NIC 104A). Figure 2 As shown, the first NIC 104A may include multiple processors 202, including, for example, a first processor 202A, a second processor 202B, a third processor 202C, a fourth processor 202D, a fifth processor 202E, and a sixth processor 202F. Each of the multiple processors 202 may be a multi-core low-power processor. Although the multiple processors 202 are shown as including six processors, the multiple processors 202 are not limited to six processors and may include any number of processors. Furthermore, the number of processors may be changed by removing processors from the first NIC 104A or inserting additional processors.

[0024] The first NIC 104A may also include firmware 204 and an application-specific integrated circuit (ASIC) 206. The ASIC 206 may be an integrated circuit customized to process data traffic between the user device 108 and the server 102. The ASIC 206 may be a system on a chip (SoC) or a field programmable gate array (FPGA). The ASIC 206 may include one or more local processors and one or more local memory blocks. The firmware 204 may sit on top of the ASIC 206 and may operate with the ASIC 206 to process data packets received from the user device 108. For example, the firmware 204 and the ASIC 206 may operate to process data packets of network traffic to determine the destination of the data packets. The firmware 204 and the ASIC 206 may be closely associated with the multiple processors 202. For example, the multiple processors 202 may be embedded on the ASIC 206.

[0025] The first NIC 104A may also include a proxy 208. The proxy 208 may be operable to determine whether to execute a request on the first NIC 104A. The proxy 208 may determine to execute a request on the first NIC 104A based on a policy defined by an administrator or user device 108. The policy may be based on multiple data points. For example, the proxy 208 may make this determination based on one or more of the following: i) latency requirements of the first function; ii) network traffic ingested into the first NIC 104A; iii) location of data associated with the first function; iv) load parameters from the first NIC 104A and the host processor 110; and iv) security domain. The policy may define whether running the first function on the multiple processors 202 itself is acceptable or whether running the first function on the first NIC 104A is required from a security perspective.

[0026] By using the data points listed above, the agent 208 can determine whether to execute the first function on the first NIC 104A, another NIC 104, or the host processor 110. For example, the agent 208 can execute the first function locally at the first NIC 104A when the latency requirement of the first function is critical. That is, when the latency requirement of the first function is less than a predetermined latency value, the agent 208 can run the first function on the first NIC 104A. For example, because the bandwidth of the first NIC 104A may be sized for network traffic, lower latency may result. Therefore, the first function requiring lower latency can be executed locally on the first NIC 104A. In addition, the first NIC 104A may include direct memory access (DMA) acceleration, which may also result in lower latency. In addition, when the load on one of the host processors 110 exceeds a predetermined load, the agent 208 can determine to execute the first function locally.

[0027] However, when the first function does not include a latency requirement, the agent 208 may determine not to execute the first function on the first NIC 104A. Furthermore, when the latency requirement associated with the first function is greater than a predetermined value, the agent 208 may determine to execute the first function on the host processor 110. Furthermore, when the load on the first NIC 104A exceeds a predetermined value, the agent 208 may determine not to execute the first function on the first NIC 104A. When the agent 208 determines not to execute the first function on the first NIC 104A, the agent 208 may send the first request to the second NIC 104B or the host processor 110. Thus, by considering policies defined by an administrator or user device 108, as well as environmental considerations regarding network traffic and real-time input from the operating environment 100, the agent 208 can efficiently schedule the execution of serverless functions across the NICs 104 and host processors. To execute the first function on the first NIC 104A, the agent 208 may create a container on the first NIC 104A using the plurality of processors 202. For example, the agent 208 may include a container engine operable to create the container. In some embodiments, the agent 208 may collaborate with the orchestrator 112 to create the container.

[0028] Figure 3 A system 300 for providing a multi-tenant optimized serverless deployment using NICs and general purpose storage is illustrated. Figure 3 As shown, system 300 may include a server 102, which may include a host processor 110 and an orchestrator 112. Server 102 may be associated with NICs 104, such as a first NIC 104A, a second NIC 104B, and a third NIC 104C. Server 102 may also be associated with multiple storage devices 302, such as a first storage device 302A, a second storage device 302B, and a third storage device 302C. Multiple storage devices 302 may include general-purpose storage devices and may be operable to store data associated with serverless functions. Multiple storage devices 302 may be managed by server 102. The stored data may be accessed via a PCIe bus 304. NIC 104 may access data associated with the serverless functions via PCIe bus 304. System 300 may be operable to perform one or more functions at one of NICs 104, thereby providing a multi-tenant optimized serverless arrangement using NICs 104 and multiple storage devices 302.

[0029] Figure 4 is a flow chart illustrating the general stages involved in a method 400 for providing a multi-tenant optimized serverless deployment using network interface cards and universal storage consistent with an embodiment of the present disclosure. Figure 1 、 Figure 2 and Figure 3 Any of the NICs 104 described herein can be implemented. Figure 5 The computing device 500, described in greater detail, may include a working environment for any NIC 104. The manner in which each stage of the method 400 is implemented will be described in greater detail below.

[0030] Figure 1 、 Figure 2 and Figure 3 The elements shown in the drawings may be implemented in hardware and / or software (including firmware, resident software, micro-code, etc.) or any other circuits or systems. Figure 1 、 Figure 2 and Figure 3 The elements shown in the drawings may be practiced in electronic circuits comprising discrete electronic components, packaged or integrated electronic chips containing logic gates, circuits utilizing a microprocessor, or electronic circuits on a single chip containing electronic components or a microprocessor. Figure 1 、 Figure 2 and Figure 3 The elements shown in FIG may also be implemented using other technologies capable of performing logical operations such as AND, OR, and NOT, including but not limited to mechanical, optical, fluid, and quantum technologies. Figure 5 Described in more detail, Figure 1 、 Figure 2 and Figure 3 The elements shown in FIG. 5 may be practiced in computing device 500 .

[0031] Method 400 may begin at block 405 and proceed to block 410, where a first request to execute a first function may be received. For example, a request to execute the first function may be received from one of user devices 108. The function may be part of a serverless application, and user device 108 may request FaaS via the first request. For example, first user device 108A may send a first request to execute the first function on server 102 to provide multi-tenant FaaS.

[0032] After receiving the first request at block 410, method 400 may proceed to block 415, where a determination may be made to execute the first function at the first NIC 104A. For example, the determination to execute the first function at the first NIC 104A may be made based on policy. For example, an administrator may define a policy for executing serverless functions. This policy may be provided to the agent 208 of each NIC 104. The policy may be based on one or more data points that the agent 208 may reference to make the determination. For example, the agent 208 may make this determination based on one or more of: i) latency requirements for the first function; ii) network traffic ingested into the first NIC 104A, location of data associated with the first function (i.e., proximity); iii) load parameters from the first NIC 104A and the host processor 110; and iv) security domains. For example, a policy may define whether running the first function on the server 102 is acceptable or whether running the first function on the first NIC 104A is required from a security perspective.

[0033] By using the above data points, the agent 208 can determine whether to execute the first function on the first NIC 104A. For example, when the latency requirement of the first function may be critical, the agent 208 may execute the first function at the location of the first NIC 104A. That is, when the latency requirement of the first function may be less than a predetermined latency value, the agent 208 may run the first function on the first NIC 104A. For example, because the bandwidth of the first NIC 104A may be sized for network traffic, lower latency may result. In addition, the first NIC 104A may include DMA acceleration, which may also result in lower latency. In addition, when the load on the host processor 110 exceeds a predetermined load, the agent 208 may determine to execute the first function locally. In addition, the first NIC 104A may determine to execute the first function locally to protect the server 102 from untrusted or harmful functions.

[0034] However, when the first function does not include a latency requirement or when the latency requirement is greater than a predetermined value, the agent 208 may determine not to execute the first function on the first NIC 104A. Furthermore, when the load on the first NIC 104A is greater than a predetermined value, the agent 208 may determine not to execute the first function on the first NIC 104A. When the agent 208 determines not to execute the first function on the first NIC 104A, the agent 208 may send the first request to the second NIC 104B or the host processor 110. Thus, by considering policies defined by an administrator, one or more user devices 108, and environmental considerations surrounding network traffic and real-time input from the operating environment 100, the agent 208 can efficiently schedule the execution of serverless functions across the NICs 104 and host processors 110.

[0035] Once it is determined at block 415 that the first function is to be executed at the first NIC 104A, method 400 may proceed to block 420, where a container may be created at the first NIC 104A. For example, the agent 208 may create a container with a selected number of processors from the processors 202. The number of processors may depend on the processing requirements of the first function. In other examples, the agent 208 may collaborate with the orchestrator 112 to create the container. The container may be communicatively coupled to the storage device 302 via the PCIe bus 304. In one embodiment, the agent 208 may create multiple containers on the first NIC 104A. Each of these multiple containers may perform a function, thereby performing multiple functions simultaneously. In an example embodiment, in response to determining at block 415 that the first function is not to be executed at the first NIC 104A, the first function may be executed at the host processor 110 or another NIC (e.g., the second NIC 104B). In such an embodiment, the container may be created at the host processor 110 or the second NIC 104B.

[0036] Once the container is created at block 420, method 400 may proceed to block 425, where a first function may be executed at the container. The container may access data associated with the first function from one or more storage devices in the plurality of storage devices 302 via PCIe bus 304. After executing the first function at block 425, method 400 may end at block 430.

[0037] Figure 5 A computing device 500 is shown. Figure 5 As shown, computing device 500 may include a processing unit 510 and a memory unit 515. Memory unit 515 may include software modules 520 and a database 525. When executed on processing unit 510, software modules 520 may use network interface cards and general storage devices to perform optimized serverless deployment processes, including, for example, the processes described above with respect to Figure 4 For example, computing device 500 may provide an operating environment for server 102, NIC 104, and user devices 108. Server 102, NIC 104, and multiple user devices 106 may operate in other environments and are not limited to computing device 500.

[0038] The computing device 500 can be implemented using a personal computer, a network computer, a mainframe, a router, or other similar microcomputer-based device. The computing device 500 can include any computer operating environment, such as a handheld device, a multiprocessor system, a microprocessor-based or programmable transmitter electronic device, a minicomputer, a mainframe computer, etc. The computing device 500 can also be practiced in a distributed computing environment in which tasks are performed by remote processing devices. The aforementioned systems and devices are examples and the computing device 500 can include other systems or devices.

[0039] There may be various advantages associated with executing serverless functions in containers on the NIC 104 in terms of latency, scalability, and security. For example, the NICs 104 may be associated with high bandwidth because they can be sized for network traffic and can often include DMA acceleration. Thus, the NICs 104 may provide lower latency compared to containers running on the host processor 110. Furthermore, due to the higher bandwidth and faster access to multiple storage devices 302 via the PCIe bus 302, the NICs 104 may provide an advantageous container for high data throughput functions. Furthermore, because the number of processors 202 on the NIC 104 can be expanded and contracted as needed, the NICs 104 may provide scalable processing power. Furthermore, executing serverless functions on the NIC 104 may protect the server 102 from harmful code because the server 102 may not be directly exposed to the harmful code.

[0040] An embodiment of the present disclosure may provide a method, comprising: receiving a first request to execute a first function; determining to execute the first function on a first network interface card, the first network interface card including a plurality of processors; creating a container on the first network interface card, the container including at least one processor from the plurality of processors; and executing the first function on the container. Receiving the first request to execute the first function may include receiving the first request to execute the first function, wherein the first function is a serverless function.

[0041] In an example embodiment, determining to execute the first function at the first network interface card may include: determining to execute the first function at the first network interface card based on at least one of: an amount of data traffic ingested into the first network interface card; a location of data to be accessed by the first function; a load on the first network interface card; and a security policy specifying execution of the first function on a server hosting the first network interface card.

[0042] According to an embodiment, determining to execute the first function on the first network interface card may include: determining to execute the first function on the first network interface card when a latency requirement of the first function is less than a predetermined latency. Furthermore, determining to execute the first function on the first network interface card may include: determining to execute the first function on the first network interface card when a load on a server hosting the network interface card is greater than a predetermined load. Furthermore, determining to execute the first function on the first network interface card may include: determining to execute the first function on the first network interface card when a security policy specifies executing the first function on the first network interface card. The method may further include: receiving a second request to execute a second function; determining not to execute the second function on the first network interface card; and sending the second request to one of: the second network interface card and a server associated with the first network interface card.

[0043] In an example embodiment, an apparatus may include a memory storage area and a processing unit coupled to the memory storage area. The processing unit is operable to: receive first data traffic including a first request to perform a first function; determine to perform the first function on a first network interface card, the first network interface card including a first plurality of processors; create a container on the first network interface card to perform the first function; and execute the first function in the container.

[0044] According to an example embodiment, a non-transitory computer-readable medium may store instructions that, when executed by a processor, may result in the performance of a method, the method comprising: receiving a first request to perform a first function; determining to perform the first function at one of a plurality of network interface cards, each of the plurality of network interface cards including a plurality of processors; in response to determining to perform the first function at one of the plurality of network interface cards, determining a first network interface card among the plurality of network interface cards to perform the first function; creating a container at the first network interface card; and performing the first function at the container.

[0045] The embodiments of the present disclosure may be implemented as a computer process (method), a computing system, or as an article of manufacture such as a computer program product or a computer-readable medium. A computer program product may be a computer storage medium that is readable by a computer system and encodes a computer program for executing instructions for a computer process. A computer program product may also be a propagation signal on a carrier that is readable by a computing system and encodes a computer program for executing instructions for a computer process. Therefore, the present disclosure may be embodied in hardware and / or software (including firmware, resident software, microcode, etc.). In other words, the embodiments of the present disclosure may take the form of a computer program product on a computer-usable or computer-readable storage medium, which contains a computer-usable or computer-readable program code for use therein or in combination with an instruction execution system. A computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transmit a program for use by an instruction execution system, device, or apparatus or for use therewith.

[0046] A computer usable or computer readable medium can be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples of computer readable media (a non-exhaustive list), computer readable media can include the following: an electrical connection having one or more wires, a portable computer disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), optical fibers, and a portable compact disc read-only memory (CD-ROM). Note that a computer usable or computer readable medium can even be paper or other suitable medium on which the program is printed, as the program can be captured electronically, for example, by optically scanning the paper or other medium, and then compiled, interpreted, or otherwise processed in an appropriate manner if necessary, and then stored in a computer memory.

[0047] Although certain embodiments of the present disclosure have been described, other embodiments may exist. In addition, although embodiments of the present disclosure have been described as being associated with data stored in memory and other storage media, data may also be stored on or read from other types of computer-readable media, such as auxiliary storage devices such as hard disks, floppy disks or CD-ROMs, carrier waves from the Internet, or other forms of RAM or ROM. In addition, semantic data consistent with embodiments of the present disclosure may be analyzed without being stored. In this case, online data mining techniques may be used as data traffic passes through, for example, a cache server or network router. In addition, the stages of the disclosed method may be modified in any way without departing from the present disclosure, including by reordering stages and / or inserting or deleting stages.

[0048] In addition, embodiments of the present disclosure can be practiced in electronic circuits comprising discrete electronic components, packaged or integrated electronic chips containing logic gates, circuits utilizing microprocessors, or electronic circuits on a single chip containing electronic components or microprocessors. Embodiments of the present disclosure can also be practiced using other technologies capable of performing logical operations such as AND, OR, and NOT, including but not limited to mechanical, optical, fluidic, and quantum technologies. Furthermore, embodiments of the present disclosure can be practiced within a general-purpose computer or in any other circuit or system.

[0049] The embodiments of the present disclosure may be implemented via a system on a chip (SOC), wherein Figure 1 Each or many of the components shown in the figure can be integrated into a single integrated circuit. Such a SOC device may include one or more processing units, a graphics unit, a communication unit, a system virtualization unit, and various application functions, all of which can be integrated (or "burned") into a chip substrate as a single integrated circuit. When operating via a SOC, the functions described herein with respect to the embodiments of the present disclosure can be performed via dedicated logic integrated with other components of the computing device 500 on a single integrated circuit (chip).

[0050] For example, embodiments of the present disclosure are described above with reference to block diagrams and / or operational diagrams of methods, systems, and computer program products according to embodiments of the present disclosure. The functions / actions noted in the blocks may not occur in the order shown in any flowchart. For example, depending on the functions / actions involved, two blocks shown in succession may actually be executed substantially simultaneously, or the blocks may sometimes be executed in the reverse order.

[0051] Although the specification includes examples, the scope of the present disclosure is indicated by the appended claims. Furthermore, although the specification has been described in language specific to structural features and / or methodological acts, the claims are not limited to those features or acts. Rather, the specific features and acts described above are disclosed as examples of embodiments of the present disclosure.

Claims

1. A method for providing a multi-tenant optimized serverless deployment, comprising: receiving, at a first network interface card, a first request to perform a first function; Determining, by the first network interface card, whether to execute the first function at the first network interface card, the first network interface card comprising a plurality of processors, wherein determining whether to execute the first function at the first network interface card comprises: determining to execute the first function on the first network interface card when a delay requirement of the first function is less than a predetermined delay value and a load on the first network interface card is not greater than a predetermined load value, wherein the first network interface card to execute the first function is determined from a plurality of network interface cards based on proximity to a location of a data storage device storing data corresponding to the first function; creating, by the first network interface card, a container at the first network interface card in response to determining that the first function is to be performed at the first network interface card, the container including at least one processor from the plurality of processors; and The first function is performed at the container.

2. The method of claim 1 , wherein receiving the first request to perform the first function comprises: The first request to perform the first function is received, wherein the first function is a serverless function.

3. The method according to claim 1 or 2, wherein determining to execute the first function at the first network interface card comprises: Determining to perform the first function at the first network interface card is based on at least one of the following: an amount of data traffic ingested into the first network interface card; or A security policy is specified for performing the first function on a server hosting the first network interface card.

4. The method according to claim 1 or 2, wherein determining to execute the first function at the first network interface card comprises: When the security policy specifies that the first function is to be executed on the first network interface card, it is determined that the first function is to be executed at the first network interface card.

5. The method according to claim 1 or 2, further comprising: receiving a second request to perform a second function; determining not to perform the second function at the first network interface card; as well as The second request is sent to one of: a second network interface card and a server associated with the first network interface card.

6. An apparatus for providing multi-tenant optimized serverless deployment, comprising: Memory storage area; and a processing unit coupled to the memory storage area, wherein the processing unit is operable to: receiving, at a first network interface card, first data traffic comprising a first request to perform a first function; Determining, by the first network interface card, whether to execute the first function at the first network interface card, the first network interface card comprising a plurality of processors, wherein determining whether to execute the first function at the first network interface card comprises: determining to execute the first function on the first network interface card when a delay requirement of the first function is less than a predetermined delay value and a load on the first network interface card is not greater than a predetermined load value, wherein the first network interface card to execute the first function is determined from a plurality of network interface cards based on proximity to a location of a data storage device storing data corresponding to the first function; In response to determining that the first function is to be performed at the first network interface card, creating, by the first network interface card, a container at the first network interface card to perform the first function; and The first function is performed in the container.

7. The device of claim 6, wherein the first network interface card is operable to access the data from the data storage device via a peripheral component interconnect express bus.

8. The apparatus of claim 6 or 7, wherein the first network interface card comprises an agent, wherein the agent is operable to facilitate creation of the container comprising at least one processor of the plurality of processors.

9. The device according to claim 6 or 7, wherein: The processing unit is further operable to: receiving second data traffic, the second data traffic comprising a second request to perform a second function; determining not to perform the second function at the first network interface card; and The second request is sent to at least one of: a second network interface card or a server associated with the first network interface card.

10. The apparatus of claim 9, wherein the processing unit is operable to determine not to perform the second function at the first network interface card comprises: The processing unit is operable to determine not to perform the second function at the first network interface card based on at least one of: the amount of data traffic ingested into the first network interface card; or A security policy is specified for performing the second function on one of the first network interface card and the server.

11. The apparatus of claim 9, wherein the processing unit is operable to determine not to perform the second function at the first network interface card comprises: The processing unit is operable to determine not to execute the second function at the first network interface card when a load on the first network interface card exceeds a predetermined load.

12. The apparatus of claim 9, wherein the processing unit is operable to determine not to perform the second function at the first network interface card comprises: The processing unit is operable to determine not to perform the second function at the first network interface card when a delay requirement of the second function is greater than a predetermined delay value.

13. A non-transitory computer-readable medium storing a set of instructions that, when executed by a processor, result in performance of a method comprising: receiving, at a first network interface card, a first request to perform a first function; Determining, by the first network interface card, whether to execute the first function at the network interface card among a plurality of network interface cards, each of the plurality of network interface cards including a plurality of processors, wherein determining whether to execute the first function at the first network interface card comprises: determining to execute the first function on the first network interface card when a delay requirement of the first function is less than a predetermined delay value and a load on the first network interface card is not greater than a predetermined load value, wherein the first network interface card to execute the first function is determined from a plurality of network interface cards based on proximity to a location of a data storage device storing data corresponding to the first function; creating, by the first network interface card, a container at the first network interface card in response to determining that the first function is to be performed at the first network interface card among the plurality of network interface cards; and The first function is performed at the container.

14. The non-transitory computer readable medium of claim 13, wherein: The method further comprises: receiving a second request to perform a second function; and A determination is made not to perform the second function at the first network interface card.

15. The non-transitory computer readable medium of claim 13 or 14, further comprising: A server associated with the first network interface card is isolated from performing the first function.

16. The non-transitory computer-readable medium of claim 13 or 14, wherein receiving the first request comprises: The first request is received at the first network interface card proximate to data associated with performance of the first function.

17. An apparatus for providing multi-tenant optimized serverless deployment, comprising: means for receiving, at a first network interface card, a first request to perform a first function; means for determining, by the first network interface card, whether to perform the first function at the first network interface card, the first network interface card comprising a plurality of processors, wherein determining whether to perform the first function at the first network interface card comprises: determining to execute the first function on the first network interface card when a delay requirement of the first function is less than a predetermined delay value and a load on the first network interface card is not greater than a predetermined load value, wherein the first network interface card to execute the first function is determined from a plurality of network interface cards based on proximity to a location of a data storage device storing data corresponding to the first function; means for creating, by the first network interface card, a container at the first network interface card in response to determining to execute the first function at the first network interface card, the container comprising at least one processor of a plurality of processors; and Means for performing said first function at said container.

18. The apparatus according to claim 17, further comprising: Device for carrying out the method according to any one of claims 2 to 5.

19. A computer program, a computer program product or a computer readable medium comprising instructions which, when executed by a computer, cause the computer to perform the steps of the method according to any one of claims 1 to 5.

Citation Information

Patent Citations

  • Shared memory for intelligent network interface cards

    CN108696461A

  • Technologies for control plane separation in a network interface controller

    US20190042741A1