Physical network interface cards (PNICs) may offer hardware acceleration techniques to offload processing of packets using the hardware of the PNICs. When enabled, a system may select packets of some flows to be processed using the hardware acceleration techniques in place of processing the packets in a network stack in software. In some cases, applying the hardware acceleration techniques to process packets in the PNIC may improve network performance because the PNIC can perform the processing of the packets faster in hardware compared to in software. However, PNICs may have limitations around the number of flows that can be processed using the hardware acceleration techniques. Also, the amount of network performance improvement may not be maximized if flows that are offloaded to the PNIC do not benefit much from using the hardware acceleration techniques.
With respect to the discussion to follow and in particular to the drawings, it is stressed that the particulars shown represent examples for purposes of illustrative discussion, and are presented in the cause of providing a description of principles and conceptual aspects of the present disclosure. In this regard, no attempt is made to show implementation details beyond what is needed for a fundamental understanding of the present disclosure. The discussion to follow, in conjunction with the drawings, makes apparent to those of skill in the art how embodiments in accordance with the present disclosure may be practiced. Similar or same reference numbers may be used to identify or otherwise refer to similar or same elements in the various drawings and supporting descriptions. In the accompanying drawings:
In the following description, for purposes of explanation, numerous examples and specific details are set forth in order to provide a thorough understanding of embodiments of the present disclosure. Some embodiments as expressed in the claims may include some or all of the features in these examples, alone or in combination with other features described below, and may further include modifications and equivalents of the features and concepts described herein.
Hardware acceleration techniques using a physical network interface card (PNIC) may enhance the processing of packets that are associated with flows. In some embodiments, the hardware acceleration techniques may include hardware flow offloading and receive side scaling (RSS). Hardware flow offloading is a technique where processing of flows in software is offloaded to the PNIC for processing. Then, the PNIC performs some operations to process packets for the flow. The processing of the packets in hardware may be faster than processing the packets in software. Receive side scaling distributes receive side network traffic across multiple queues that are exposed by the PNIC. Some embodiments enhance receive side scaling processes to intelligently assign queues to flows.
In some embodiments, a system assigns the hardware acceleration techniques to packets of flows based on a classification associated with the flows. In some embodiments, a first classification may be referred to as an “elephant flow” and a second classification may be associated with a “mice flow”. An elephant flow may have characteristics in which the flows may be relatively long-lived and are throughput intensive whereas the mice flows may include characteristics in which the flows are short-lived and send very little data. The system may apply the hardware acceleration techniques to flows that are classified as elephant flows. For example, the system offloads elephant flows to the PNIC for packet processing whereas mice flows are not offloaded to the PNIC and are processed in the network stack in software. In receive side scaling, the system may map elephant flows to separate queues that are dedicated to processing elephant flows. Elephant flows may introduce head-of-line blocking delays for the queue, which means that processing of the packets for an elephant flow in the queue may block processing for packets for mice flows that are in the same queue. By mapping elephant flows to separate queues that do not include packets for mice flows, delays for mice flows may be avoided.
System Overview
Host 102 may include a hypervisor 104 and workloads 106-1 to 106-N. Workloads may refer to virtual machines that are running on a respective host, but this is one example of a virtualized computing instance or compute node. Any suitable technology may be used to provide a workload. Workloads may include not only virtual machines, but also containers (e.g., running on top of a host or guest operating system without the need for a hypervisor or separate operating system or implemented as an operating system level virtualization), virtual private servers, client computers, etc. The workloads may also be complete computation environments containing virtual equivalents of the hardware and software components of a physical computing system. Also, as used herein, the term hypervisor may refer generally to a software layer or component that supports the execution of multiple workloads including system-level software that supports name space containers. Although a virtualized environment is described, some embodiments may be used in an environment that is not virtualized. Also, the term “workload” may refer to a host that is not virtualized.
Host 102 provides resources to allow workloads 106 to send and receive packets to and from physical network 116. In some embodiments, hypervisor 104 includes a network stack 122 for each workload 106 that processes packets for workloads 106. Network stack 122 may perform operations on the packets in software using hypervisor 104. The operations that are performed may be defined by protocols, such as Transfer Control Protocol (TCP)/Internet Protocol (IP). Network stack 122 may include an input/output (I/O) chain that may perform network operations related to the delivery and receipt of packets as well as other operations.
Host 102 also includes physical hardware 110, which includes hardware devices for host 102, such as computer processing units (CPUs), storage, etc. Physical hardware 110 also includes a physical network interface card (PNIC) 112. PNIC 112 may be the physical interface for host 102 to physical network 116. For example, PNIC 112 is an interface that is used to send packets from workloads 106 to physical network 116 and also to receive packets from physical network 116 that are destined for workloads 106. In the receive scenario, PNIC 112 includes queues 114-1 to 114-N that store packets that are received. Queues 114 buffer the incoming packets that are received from physical network 116, but queues 114 may also perform other operations. Then, drivers 108 read the packets corresponding to queues 114 for further processing by network stack 122. Note that the above explanation, and other explanations herein, may reflect a common interpretation or abstraction of actual processing mechanisms. For instance, packets may not actually be stored in queues, but instead descriptors or pointers to packets (that are actually stored in host memory) may be stored in the queue. It is conventional to refer to these descriptors/pointers that identify a packet as the packet themselves to abstract away complexity and explain higher level operations without burdening the reader with unnecessary technical details of well understood mechanisms. Such abstractions in the descriptions herein should not be construed as limiting in any way.
A flow analyzer 118 may analyze packets for flows to classify the flows. Flow analyzer 118 may be implemented in hypervisor 104, such as in a kernel module. However, flow analyzer 118 may be implemented in other areas, such as in user space or in a workload 106-N. In some embodiments, flow analyzer 118 classifies a flow in a first classification, such as an elephant flow classification. Flows not classified in a first classification may be considered classified in a second classification, such as a mice flow. However, other classifications may also be used. As discussed above, an elephant flow may be associated with a longer-lived flow that sends a larger amount of network traffic compared to a mice flow that may be short-lived and send very little network traffic. For example, an elephant flow may be associated with a high-volume connection that includes continuous traffic being sent. A mice flow may only send a short burst of network traffic. The mice flow may be associated with a latency-sensitive application where packet delays affect the performance of the application, whereas elephant flows may be associated with large data transfers in which throughput is more important than latency.
Flow analyzer 118 may classify a flow as an elephant flow using different techniques. In some embodiments, flow analyzer 118 may track an amount of data, such as a number of bytes, that is sent in a flow and determine whether the flow should be classified as an elephant flow based on the amount of data that is sent. In some embodiments, flow analyzer 118 tracks each flow and checks whether a number of bytes has reached a certain threshold. When a threshold limit is met (e.g., the amount is greater than a threshold), flow analyzer 118 determines that this flow is an elephant flow. Although this technique of detecting an elephant flow is described, other techniques may be used, such as machine learning to classify flows. Further examples of detecting elephant flows may be disclosed in U.S. Pat. No. 10,193,771, entitled “Detecting and Handling Elephant Flows”, filed Mar. 31, 2014, which claims priority to U.S. Provisional Application No. 61/913,899, filed on Dec. 9, 2013, both of which are incorporated by reference herein in their entirety.
When flow analyzer 118 detects an elephant flow, flow analyzer 118 may input an entry in flow table 120 that identifies the flow. Flow table 120 may be a software flow table used by hypervisor 104 or a hardware flow table used by PNIC 112. In some embodiments, a tuple, such as a 5-tuple, is used to identify the flow. The 5-tuple may include a source IP address, a destination IP address, a destination port, a source port, and a protocol that is associated with packets sent in the flow. However, other ways of identifying a flow may be appreciated.
Flow analyzer 118 may intercept packets from workloads 106 and determine whether the packets are associated with a flow in flow table 120 that is classified as an elephant flow. Then, as will be described in more detail below, flow analyzer 118 may perform a hardware acceleration technique, such as performing hardware flow offloading or may tag a packet such that receive side scaling can be performed. Further, PNIC 112 may receive packets for workloads 106 and determine whether the packets are associated with a flow in flow table 120 that is classified as an elephant flow. When associated with a flow in flow table 120, PNIC 112 may perform a hardware acceleration technique.
The following will describe the flow analysis to determine elephant flows, and then processes of hardware flow offloading and receive side scaling will be described in more detail.
Flow Analysis
Flow analyzer 118 may classify flows as elephant flows dynamically in real-time after the flows are established. Alternatively, workloads may be tagged as having elephant flows and all flows established for tagged workloads may be tagged as elephant flows automatically without the need for analysis of data being transferred through the flows.
Flow analyzer 118 then analyzes the network traffic of the flow. For example, at 204, flow analyzer 118 may maintain a count of the amount of traffic for the flows. As discussed above, flow analyzer 118 may keep track of the amount of data being sent in a flow and compare that amount of data to a threshold. At 206, flow analyzer 118 determines whether a flow should be classified as an elephant flow. If a flow is not considered an elephant flow (e.g., the amount of data has not met the threshold), the process reiterates to 204 where additional network traffic for flows is analyzed.
At 208, if a flow is considered an elephant flow (e.g., the amount of data has met the threshold), flow analyzer 118 identifies the flow as an elephant flow in flow table 120. The identification may be based on a tuple for the flow as discussed above, and flow analyzer 118 inserts the tuple into flow table 120.
The flows that are identified in flow table 120 may be used to perform hardware flow offloading and receive side scaling. In hardware flow offloading, flow analyzer 118 may identify elephant flows in flow table 120 and offload processing of packets for the flow to PNIC 112. In receive side scaling, flow analyzer 118 may add tags to packets being sent to identify the packets as being associated with an elephant flow. A PNIC 112 that receives the packet may then store the packet in a queue 114 based on the tag. For example, PNIC 112 may store packets that are associated with elephant flows in designated queues 114 that process packets for elephant flows and not packets for mice flows. The following describes both hardware flow offloading and receive side scaling in more detail.
In additional to identifying specific flows for workloads as elephant flows, flow analyzer 118 may tag a workload as being associated with elephant flows in flow table 120. In this case, all flows for a workload may be identified as being elephant flows in flow table 120. For example, when a workload 106 is migrated from a first host to second host, the second host may tag all flows associated with that workload 106 as being elephant flows. Also, at a future time, when a flow is created for a tagged workload 106, flow analyzer 118 may automatically designate the created flow in flow table 120 as an elephant flow upon the flow being initialized. That is, flow analyzer 118 may not analyze the network traffic of the flow to determine whether the flow is an elephant flow. Because workload 106 is tagged, flow analyzer 118 assumes the flow is an elephant flow. Flow analyzer 118 may store identification information (e.g., a tuple) for the flows in flow table 120 to identify the flows as elephant flows.
If workload 106 is not tagged, the process reiterates to 254 to continue to analyze flows. However, if workload 106 is to be tagged, at 258, flow analyzer 118 may identify workload 106 in flow table 120 as having elephant flows. For example, flow analyzer 118 may insert an identifier (e.g., a tuple including an IP address and/or a media access control (MAC) address) for a workload into flow table 120 when the workload is designated as having elephant flows. Since workload 106 is tagged as having elephant flows, existing flows for that workload may be tagged as elephant flows in flow table 120. For example, flow analyzer 118 identifies any flows for the tagged workload as elephant flows in flow table 120, such as by storing a tuple for each flow in flow table 120.
Hardware Acceleration Operation
As will be discussed in more detail below, different hardware acceleration techniques may be performed. The following generally describes performing a hardware acceleration operation, which may use an indicator to perform different hardware acceleration techniques.
At 304, host 102 determines whether the flow corresponds to one of an elephant flow and a mice flow based on an indicator. In some embodiments, the indicator may be a tag for the flow or workload 106 that indicates the flow is associated with an elephant flow. Flows may be tagged if associated with an elephant flow or not tagged if not associated with an elephant flow. Also, the packet may be tagged itself as will be discussed below in receive side scaling.
At 306, host 102 determines whether the packet is associated with an elephant flow. If not, at 308, host 102 does not enable a hardware acceleration technique. Rather, host 102 processes the packet through network stack 122 in hypervisor 104. That is, host 102 processes the packet using software in hypervisor 104. Upon processing the packet, if the packet is being sent from workload 106 for a destination, driver 108 sends the packet to PNIC 112, which sends the packet to the destination, such as to physical network 116 for delivery to another host 102 or another workload. If the packet is being sent to workload 106, hypervisor 104 sends the packet to workload 106.
However, if the packet is associated with an elephant flow, at 310, host 102 enables a hardware acceleration operation on the packet. As will be discussed in more detail below, the operation may be part of a hardware offload operation or a receive side scaling operation.
Hardware Flow Offloading
The following method describes processing performed when workload 106 sends a packet.
At 356, flow analyzer 118 determines whether the packet is an offloaded flow, which is a flow that was classified as an elephant flow. If the packet is not associated with an offloaded flow, at 358, flow analyzer 118 processes the packet through network stack 122 in hypervisor 104.
At 360, if the packet is associated with an offloaded flow, flow analyzer 118 accelerates the processing of the packet in PNIC 112. For example, flow analyzer 118 offloads at least a part of the processing of the packet to PNIC 112. In some embodiments, if PNIC 112 can perform all the operations of network stack 122, PNIC 112 processes the packet entirely and can deliver the packet to the destination or to workload 106. This hardware offload may skip the processing of network stack 122 entirely. In other examples, not all of the packet processing may be performed in PNIC 112. For example, for some operations, packet processing may be offloaded to PNIC 112. The operations that can be performed by PNIC 112 may vary based on configuration, such as some PNICs 112 may be able to perform only certain operations. In this case, network stack 122 may perform some operations, but then when an operation is reached that can be performed by PNIC 112, hypervisor 104 offloads the operation to PNIC 112. When PNIC 112 finishes the processing, if further operations need to be performed in network stack 122, those operations are processed in network stack 122. In some examples, PNIC 112 may be capable of encapsulation and decapsulation of a packet. When encapsulation or decapsulation is needed, hypervisor 104 offloads the encapsulation or decapsulation of the packet to PNIC 112. Then, the other operations may or may not be performed in network stack 122.
The following describes the processing of packets received at host 102 for workload 106.
At 376, flow analyzer 118 determines whether the packet is an offloaded flow, which is a flow that was classified as an elephant flow. If the packet is not associated with an offloaded flow, at 378, flow analyzer 118 processes the packet through network stack 122 in hypervisor 104.
At 380, if the packet is associated with an offloaded flow, PNIC 112 accelerates the processing of the packet in PNIC 112. As discussed above, PNIC 112 processes at least a part of the processing of the packet. When PNIC 112 finishes the processing, the packet is sent to workload 106, such as via hypervisor 104.
Accordingly, hypervisor 104 does not offload short-lived, low throughput mice flows to PNIC 112. The mice flows may have throughput requirements that are low (e.g., the mice flows send very little data) and do not need accelerated hardware processing techniques. Additionally, offloading of the mice flows may impact the packet processing efficiency of elephant flows in PNIC 112 due to the additional cycles spent in offloading the mice flows and removing the flows constantly. That is, the mice flows are short-lived and must be offloaded and removed from PNIC 112 when the mice flows end. The elephant flows are longer lasting and do not need to be removed as fast as mice flows. The hardware flow add, remove, and update operations may make packet processing jittery due to the immediate additional CPU cycles to perform the operations. For example, hypervisor 104 may perform frequent add and remove operations if mice flows are offloaded to PNIC 112 due to the mice flows short duration. This may cause data structures that maintain information for flows in PNIC 112 to update data frequently. The data structures are used for multiple flows and constant accesses for adding and removal of mice flows may cause cache misses when accessing the data structures because the data structures may not include the correct information or may not be available. Additionally, PNIC 112 may have limited hardware flow packet processing capacity and having PNIC 112 process packets for mice flows may use resources that would be better served processing packets for elephant flows. Accordingly, processing the packet in hardware in PNIC 112 for mostly elephant flows more efficiently uses the hardware resources that are available to perform hardware acceleration.
Receive Side Scaling
Receive side scaling may be performed on the receive side of network traffic. For example, a host 102 that receives a packet being sent by another host performs receive side scaling as a hardware acceleration technique. As will be discussed below, in some embodiments, a process is used at a source host 102 to tag packets in elephant flows. Then, a process in a destination host 102 uses the tags to identify packets that are associated with elephant flows and assigns the packets to a queue that is designated for elephant flows.
At 404, flow analyzer 118 identifies the packet as being associated with a flow that is tagged as an elephant flow. Techniques described above to identify a packet associated with a flow in flow table 120 may be used. Then, at 406, flow analyzer 118 adds information, such as a tag, to the packet to identify the packet as being associated with an elephant flow. The tag may be any information that can indicate the packet is associated with an elephant flow. For example, flow analyzer 118 may set a flag to a value in the packet header when the packet is associated with an elephant flow. The tag in this case may be the indicator for the packet to identify the packet as being associated with an elephant flow. After tagging the packet, at 408, host 102 sends the packet to the destination host 102. For example, PNIC 112 in source host 102 sends the packet to physical network 116 to destination host 102. Although the above method is described, other methods may be used to indicate the packet is associated with an elephant flow. For example, source host 102 may communicate information from flow table 120 to other hosts.
Destination host 102 then receives the packet and PNIC 112 processes the packet.
Receive side scaling processor 504 receives packets and can map the packets to queues 114. In some embodiments, receive side scaling processor 504 may include hardware logic that can map packets to queues, such as programmable filters may be used to map packets from flows to specific queues 114. The filters may use a function that maps information from the packet to a queue. Also, receive side scaling processor 504 may use software to map the packets to the queues.
In some embodiments, some queues 114 may be designated for processing elephant flows. For example, queue 114-2 and queue 114-4 may be designated for processing packets for elephant flows. In this case, queue 114-2 and queue 114-4 may not process packets for non-elephant flows (e.g., mice flows) and only process packets for elephant flows. This configuration may free queue 114-1 and queue 114-3 to process packets for mice flows. It is noted that once a flow is mapped to a queue 114, all the packets are typically mapped to the same queue.
In
The following will describe one method of processing packets at receive side scaling processor 504.
At 606, receive side scaling processor 504 determines if the packet is associated with an elephant flow. The tag may be used as an indicator for determining whether the flow is associated with an elephant flow. If the packet is not associated with an elephant flow, this may mean the packet is associated with a mice flow. At 608, receive side scaling processor 504 determines a queue 114 that is not designated for elephant flows. Then, at 610, receive side scaling processor 504 sends the packet to queue 114 that is not designated for elephant flows in PNIC 112. For example, if hardware queues in PNIC 112 are being used, receive side scaling processor 504 sends the packet to queue 114-1 or queue 114-3.
If the packet is associated with an elephant flow, at 612, receive side scaling processor 504 determines a queue 114 that is designated for processing elephant flows. receive side scaling processor 504 may determine queue 114 based on a filter or other method. Then, at 614, receive side scaling processor 504 sends the packet to the designated queue 114 that is processing elephant flows. For example, if hardware queues in PNIC 112 are being used, receive side scaling processor 504 sends the packet to queue 114-2 or queue 114-4.
Accordingly, by mapping packets for elephant flows to separate queues from queues that are processing packets for mice flows, head-of-line blocking is avoided. This may avoid delays in mice flows that are blocked by a large number of packets in queues for elephant flows.
Migration of Workloads
Workloads 106 may migrate from a first host 102 to a second host 102. By using the tagging of workloads 106, network processing of packets for the migrated flows associated with workloads 106 may be proactively processed as elephant flows using the hardware acceleration techniques.
At 706, flow analyzer 118 may tag the workload to be migrated as being associated with processing elephant flows. For example, flow analyzer 118 creates and includes metadata for workload 106 that indicates the workload processes elephant flows. The tag may be considered the indicator in this case. Then, at 708, source host 102 migrates the workload to a destination host 102 with the metadata.
At 806, flow analyzer 118 may configure flow table 120 to identify the migrated workload 106 as being associated with elephant flows. For example, flow analyzer 118 may tag an identifier for the migrated workload 106 in flow table 120. In other examples, flow analyzer 118 may only tag certain flows for migrated workload 106 as being associated with an elephant flow if only certain flows were identified. At 808, flow analyzer 118 may perform hardware acceleration techniques for flows associated with the migrated workload 106.
Accordingly, hardware acceleration techniques may be performed proactively when workload 106 is migrated. For example, flow analyzer 118 does not have to wait to classify flows for migrated workload 106 as elephant flows by counting a number of bytes that are transferred through the flow and waiting until the number reaches a threshold. Rather, flow analyzer 118 may immediately classify flows as being elephant flows and perform hardware acceleration techniques immediately upon migration.
Accordingly, by tagging flows as elephant flows, hardware acceleration techniques may be more efficiently performed. Hardware flow offload may be performed for flows that benefit more from hardware flow offloading. Also, receive side scaling may benefit mice flows by allocating queues for elephant flows. The above may increase the efficiency of the hardware offload or receive side scaling operations.
In some embodiments, a method comprising: receiving a packet for a flow associated with a workload; based on an indicator for the flow, determining whether the flow corresponds to one of an elephant flow or a mice flow; and only when the flow is determined to correspond to an elephant flow, performing a hardware acceleration operation on the packet.
In some embodiments, performing the hardware acceleration operation comprises: offloading an operation on the packet from a network stack to a physical network interface card when the flow is associated with the first classification; and performing the operation using the physical network interface card.
In some embodiments, the network stack performs another operation on the packet.
In some embodiments, performing the hardware acceleration operation comprises: storing identification information for a set of flows associated with a set of workloads in a table based on network traffic associated with respective flows or workloads; determining that identification information for the flow is found in the table, wherein the flow table identifies the flow as being associated with the elephant flow.
In some embodiments, performing the hardware acceleration operation comprises: storing the packet in a queue associated with a physical network interface card, wherein the queue is associated with packets from one or more flows corresponding to elephant flows.
In some embodiments, a first queue stores packets for one or more flows corresponding to elephant flows, and a second queue stores packets for one or more flows that correspond to mice flows.
In some embodiments, performing the hardware acceleration operation comprises: tagging a workload to indicate that the workload is associated with elephant flows; and migrating the workload to a device, wherein information indicating the workload is associated with elephant flows is sent to the device to allow the device to identify a flow associated with the workload as corresponding to the elephant flow.
In some embodiments, a non-transitory computer-readable storage medium containing instructions, that when executed, control a computer system to be operable for: receiving a packet for a flow associated with a workload; based on an indicator for the flow, determining whether the flow corresponds to one of an elephant flow or a mice flow; and only when the flow is determined to correspond to an elephant flow, performing a hardware acceleration operation on the packet.
In some embodiments, performing the hardware acceleration operation comprises: offloading an operation on the packet from a network stack to a physical network interface card when the flow is associated with the first classification; and performing the operation using the physical network interface card.
In some embodiments, the network stack performs another operation on the packet.
In some embodiments, performing the hardware acceleration operation comprises: storing identification information for a set of flows associated with a set of workloads in a table based on network traffic associated with respective flows or workloads; determining that identification information for the flow is found in the table, wherein the flow table identifies the flow as being associated with the elephant flow.
In some embodiments, performing the hardware acceleration operation comprises: storing the packet in a queue associated with a physical network interface card, wherein the queue is associated with packets from one or more flows corresponding to elephant flows.
In some embodiments, a first queue stores packets for one or more flows corresponding to elephant flows, and a second queue stores packets for one or more flows that correspond to mice flows.
In some embodiments, performing the hardware acceleration operation comprises: tagging a workload to indicate that the workload is associated with elephant flows; and migrating the workload to a device, wherein information indicating the workload is associated with elephant flows is sent to the device to allow the device to identify a flow associated with the workload as corresponding to the elephant flow.
In some embodiments, an apparatus comprising: one or more computer processors; and a non-transitory computer-readable storage medium comprising instructions, that when executed, control the one or more computer processors to be operable for: receiving a packet for a flow associated with a workload; based on an indicator for the flow, determining whether the flow corresponds to one of an elephant flow or a mice flow; and only when the flow is determined to correspond to an elephant flow, performing a hardware acceleration operation on the packet.
In some embodiments, performing the hardware acceleration operation comprises: offloading an operation on the packet from a network stack to a physical network interface card when the flow is associated with the first classification; and performing the operation using the physical network interface card.
In some embodiments, the network stack performs another operation on the packet.
In some embodiments, performing the hardware acceleration operation comprises: storing identification information for a set of flows associated with a set of workloads in a table based on network traffic associated with respective flows or workloads; determining that identification information for the flow is found in the table, wherein the flow table identifies the flow as being associated with the elephant flow.
In some embodiments, performing the hardware acceleration technique operation comprises: storing the packet in a queue associated with a physical network interface card, wherein the queue is associated with packets from one or more flows corresponding to elephant flows.
In some embodiments, a first queue stores packets for one or more flows corresponding to elephant flows, and a second queue stores packets for one or more flows that correspond to mice flows.
In some embodiments, performing the hardware acceleration operation comprises: tagging a workload to indicate that the workload is associated with elephant flows; and migrating the workload to a device, wherein information indicating the workload is associated with elephant flows is sent to the device to allow the device to identify a flow associated with the workload as corresponding to the elephant flow.
Many variations, modifications, additions, and improvements are possible, regardless the degree of virtualization. The virtualization software can therefore include components of a host, console, or guest operating system that performs virtualization functions. Plural instances may be provided for components, operations or structures described herein as a single instance. Finally, boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of the disclosure(s). In general, structures and functionality presented as separate components in exemplary configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components.
Some embodiments described herein can employ various computer-implemented operations involving data stored in computer systems. For example, these operations can require physical manipulation of physical quantities—usually, though not necessarily, these quantities take the form of electrical or magnetic signals, where they (or representations of them) are capable of being stored, transferred, combined, compared, or otherwise manipulated. Such manipulations are often referred to in terms such as producing, identifying, determining, comparing, etc. Any operations described herein that form part of one or more embodiments can be useful machine operations.
Further, one or more embodiments can relate to a device or an apparatus for performing the foregoing operations. The apparatus can be specially constructed for specific required purposes, or it can be a general purpose computer system selectively activated or configured by program code stored in the computer system. In particular, various general purpose machines may be used with computer programs written in accordance with the teachings herein, or it may be more convenient to construct a more specialized apparatus to perform the required operations. The various embodiments described herein can be practiced with other computer system configurations including handheld devices, microprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like.
Yet further, one or more embodiments can be implemented as one or more computer programs or as one or more computer program modules embodied in one or more non-transitory computer readable storage media. The term non-transitory computer readable storage medium refers to any data storage device that can store data which can thereafter be input to a computer system. The non-transitory computer readable media may be based on any existing or subsequently developed technology for embodying computer programs in a manner that enables them to be read by a computer system. Examples of non-transitory computer readable media include a hard drive, network attached storage (NAS), read-only memory, random-access memory, flash-based nonvolatile memory (e.g., a flash memory card or a solid state disk), a CD (Compact Disc) (e.g., CD-ROM, CD-R, CD-RW, etc.), a DVD (Digital Versatile Disc), a magnetic tape, and other optical and non-optical data storage devices. The non-transitory computer readable media can also be distributed over a network coupled computer system so that the computer readable code is stored and executed in a distributed fashion.
Finally, boundaries between various components, operations, and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of embodiments. In general, structures and functionality presented as separate components in exemplary configurations can be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component can be implemented as separate components.
These and other variations, modifications, additions, and improvements may fall within the scope of the appended claims(s). As used in the description herein and throughout the claims that follow, “a”, “an”, and “the” includes plural references unless the context clearly dictates otherwise. Also, as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
The above description illustrates various embodiments of the present disclosure along with examples of how aspects of the present disclosure may be implemented. The above examples and embodiments should not be deemed to be the only embodiments, and are presented to illustrate the flexibility and advantages of the present disclosure as defined by the following claims. Based on the above disclosure and the following claims, other arrangements, embodiments, implementations and equivalents may be employed without departing from the scope of the disclosure as defined by the claims.
Number | Name | Date | Kind |
---|---|---|---|
5668810 | Cannella | Sep 1997 | A |
5884313 | Talluri et al. | Mar 1999 | A |
5887134 | Ebrahim | Mar 1999 | A |
5974547 | Klimenko | Oct 1999 | A |
6219699 | McCloghrie et al. | Apr 2001 | B1 |
6393483 | Latif et al. | May 2002 | B1 |
6496935 | Fink et al. | Dec 2002 | B1 |
7012919 | So et al. | Mar 2006 | B1 |
7079544 | Wakayama et al. | Jul 2006 | B2 |
7149817 | Pettey | Dec 2006 | B2 |
7149819 | Pettey | Dec 2006 | B2 |
7362752 | Kastenholz | Apr 2008 | B1 |
7370120 | Kirsch et al. | May 2008 | B2 |
7424710 | Nelson et al. | Sep 2008 | B1 |
7533176 | Freimuth et al. | May 2009 | B2 |
7606260 | Oguchi et al. | Oct 2009 | B2 |
7634622 | Musoll et al. | Dec 2009 | B1 |
7640353 | Shen et al. | Dec 2009 | B2 |
7849168 | Utsunomiya et al. | Dec 2010 | B2 |
7940763 | Kastenholz | May 2011 | B1 |
8004990 | Callon | Aug 2011 | B1 |
8355328 | Matthews et al. | Jan 2013 | B2 |
8442059 | Iglesia et al. | May 2013 | B1 |
8619731 | Montemurro et al. | Dec 2013 | B2 |
8660129 | Brendel et al. | Feb 2014 | B1 |
8819259 | Zuckerman et al. | Aug 2014 | B2 |
8825900 | Gross et al. | Sep 2014 | B1 |
8856518 | Sridharan et al. | Oct 2014 | B2 |
8931047 | Wanser et al. | Jan 2015 | B2 |
8976814 | Dipasquale | Mar 2015 | B2 |
9008085 | Kamble et al. | Apr 2015 | B2 |
9032095 | Traina et al. | May 2015 | B1 |
9116727 | Benny et al. | Aug 2015 | B2 |
9135044 | Maharana | Sep 2015 | B2 |
9143582 | Banavalikar et al. | Sep 2015 | B2 |
9152593 | Galles | Oct 2015 | B2 |
9154327 | Marino et al. | Oct 2015 | B1 |
9197551 | DeCusatis et al. | Nov 2015 | B2 |
9231849 | Hyoudou et al. | Jan 2016 | B2 |
9378161 | Dalal et al. | Jun 2016 | B1 |
9419897 | Cherian et al. | Aug 2016 | B2 |
9460031 | Dalal et al. | Oct 2016 | B1 |
9548924 | Pettit et al. | Jan 2017 | B2 |
9692698 | Cherian et al. | Jun 2017 | B2 |
9762507 | Gandham et al. | Sep 2017 | B1 |
9838276 | Pettit et al. | Dec 2017 | B2 |
9916269 | Machulsky et al. | Mar 2018 | B1 |
9967199 | Lambeth et al. | May 2018 | B2 |
10050884 | Dhanabalan et al. | Aug 2018 | B1 |
10142127 | Cherian et al. | Nov 2018 | B2 |
10158538 | Pettit et al. | Dec 2018 | B2 |
10193771 | Koponen et al. | Jan 2019 | B2 |
10284478 | Yokota | May 2019 | B2 |
10534629 | Pierre et al. | Jan 2020 | B1 |
10567308 | Subbiah et al. | Feb 2020 | B1 |
10666530 | Koponen et al. | May 2020 | B2 |
10997106 | Bandaru et al. | May 2021 | B1 |
11108593 | Cherian et al. | Aug 2021 | B2 |
11221972 | Raman et al. | Jan 2022 | B1 |
11385981 | Silakov et al. | Jul 2022 | B1 |
20020062422 | Butterworth et al. | May 2002 | A1 |
20020069245 | Kim | Jun 2002 | A1 |
20030063556 | Hernandez | Apr 2003 | A1 |
20030093341 | Millard et al. | May 2003 | A1 |
20030130833 | Brownell et al. | Jul 2003 | A1 |
20030140124 | Burns | Jul 2003 | A1 |
20030140165 | Chiu et al. | Jul 2003 | A1 |
20030145114 | Gertner | Jul 2003 | A1 |
20030191841 | DeFerranti et al. | Oct 2003 | A1 |
20030200290 | Zimmerman et al. | Oct 2003 | A1 |
20030217119 | Raman et al. | Nov 2003 | A1 |
20040264472 | Oliver et al. | Dec 2004 | A1 |
20050053079 | Havala | Mar 2005 | A1 |
20060029056 | Perera et al. | Feb 2006 | A1 |
20060041894 | Cheng et al. | Feb 2006 | A1 |
20060104286 | Cheriton | May 2006 | A1 |
20060140118 | Alicherry et al. | Jun 2006 | A1 |
20060206603 | Rajan et al. | Sep 2006 | A1 |
20060206655 | Chappell et al. | Sep 2006 | A1 |
20060236054 | Kitamura | Oct 2006 | A1 |
20060246900 | Zheng | Nov 2006 | A1 |
20060262778 | Haumont et al. | Nov 2006 | A1 |
20070174850 | Zur | Jul 2007 | A1 |
20070258382 | Foll et al. | Nov 2007 | A1 |
20070283412 | Lie et al. | Dec 2007 | A1 |
20080008202 | Terrell et al. | Jan 2008 | A1 |
20080086620 | Morris | Apr 2008 | A1 |
20080267177 | Johnson et al. | Oct 2008 | A1 |
20090006607 | Bu et al. | Jan 2009 | A1 |
20090046581 | Eswaran et al. | Feb 2009 | A1 |
20090089537 | Vick et al. | Apr 2009 | A1 |
20090119087 | Ang et al. | May 2009 | A1 |
20090161547 | Riddle et al. | Jun 2009 | A1 |
20090161673 | Breslau et al. | Jun 2009 | A1 |
20100070677 | Thakkar | Mar 2010 | A1 |
20100115208 | Logan | May 2010 | A1 |
20100157942 | An et al. | Jun 2010 | A1 |
20100165874 | Brown et al. | Jul 2010 | A1 |
20100257263 | Casado et al. | Oct 2010 | A1 |
20100275199 | Smith et al. | Oct 2010 | A1 |
20100287306 | Matsuda | Nov 2010 | A1 |
20110060859 | Shukla et al. | Mar 2011 | A1 |
20110085461 | Liu et al. | Apr 2011 | A1 |
20110164503 | Yong et al. | Jul 2011 | A1 |
20110219170 | Frost et al. | Sep 2011 | A1 |
20110249970 | Eddleston et al. | Oct 2011 | A1 |
20120042138 | Eguchi et al. | Feb 2012 | A1 |
20120054367 | Ramakrishnan et al. | Mar 2012 | A1 |
20120072909 | Malik et al. | Mar 2012 | A1 |
20120079478 | Galles et al. | Mar 2012 | A1 |
20120096459 | Miyazaki | Apr 2012 | A1 |
20120131222 | Curtis et al. | May 2012 | A1 |
20120163388 | Goel et al. | Jun 2012 | A1 |
20120167082 | Kumar et al. | Jun 2012 | A1 |
20120233349 | Aybay | Sep 2012 | A1 |
20120243539 | Keesara | Sep 2012 | A1 |
20120259953 | Gertner | Oct 2012 | A1 |
20120278584 | Nagami et al. | Nov 2012 | A1 |
20120287791 | Xi et al. | Nov 2012 | A1 |
20120320918 | Fomin et al. | Dec 2012 | A1 |
20130033993 | Cardona et al. | Feb 2013 | A1 |
20130058346 | Sridharan et al. | Mar 2013 | A1 |
20130061047 | Sridharan et al. | Mar 2013 | A1 |
20130064088 | Yu et al. | Mar 2013 | A1 |
20130073702 | Umbehocker | Mar 2013 | A1 |
20130125122 | Hansen | May 2013 | A1 |
20130145106 | Kan | Jun 2013 | A1 |
20130286846 | Atlas et al. | Oct 2013 | A1 |
20130287026 | Davie | Oct 2013 | A1 |
20130311663 | Kamath et al. | Nov 2013 | A1 |
20130318219 | Kancherla | Nov 2013 | A1 |
20130318268 | Dalal et al. | Nov 2013 | A1 |
20130322248 | Guo | Dec 2013 | A1 |
20140003442 | Hernandez et al. | Jan 2014 | A1 |
20140056151 | Petrus et al. | Feb 2014 | A1 |
20140067763 | Jorapurkar et al. | Mar 2014 | A1 |
20140074799 | Karampuri et al. | Mar 2014 | A1 |
20140098815 | Mishra et al. | Apr 2014 | A1 |
20140108738 | Kim et al. | Apr 2014 | A1 |
20140115578 | Cooper et al. | Apr 2014 | A1 |
20140123211 | Wanser et al. | May 2014 | A1 |
20140173018 | Westphal et al. | Jun 2014 | A1 |
20140208075 | McCormick, Jr. | Jul 2014 | A1 |
20140215036 | Elzur | Jul 2014 | A1 |
20140233421 | Matthews | Aug 2014 | A1 |
20140244983 | McDonald et al. | Aug 2014 | A1 |
20140245296 | Sethuramalingam et al. | Aug 2014 | A1 |
20140269712 | Kidambi | Sep 2014 | A1 |
20140269754 | Eguchi et al. | Sep 2014 | A1 |
20140372616 | Arisoylu et al. | Dec 2014 | A1 |
20150007317 | Jain | Jan 2015 | A1 |
20150016255 | Bisht et al. | Jan 2015 | A1 |
20150016300 | Devireddy et al. | Jan 2015 | A1 |
20150019748 | Gross, IV et al. | Jan 2015 | A1 |
20150020067 | Brant et al. | Jan 2015 | A1 |
20150033222 | Hussain et al. | Jan 2015 | A1 |
20150052280 | Lawson | Feb 2015 | A1 |
20150071072 | Ratzin et al. | Mar 2015 | A1 |
20150106804 | Chandrashekhar et al. | Apr 2015 | A1 |
20150117445 | Koponen et al. | Apr 2015 | A1 |
20150120959 | Bennett et al. | Apr 2015 | A1 |
20150124825 | Dharmapurikar et al. | May 2015 | A1 |
20150156250 | Varshney et al. | Jun 2015 | A1 |
20150163117 | Lambeth et al. | Jun 2015 | A1 |
20150163142 | Pettit et al. | Jun 2015 | A1 |
20150163144 | Koponen et al. | Jun 2015 | A1 |
20150163145 | Pettit et al. | Jun 2015 | A1 |
20150163146 | Zhang et al. | Jun 2015 | A1 |
20150172075 | DeCusatis et al. | Jun 2015 | A1 |
20150172183 | DeCusatis et al. | Jun 2015 | A1 |
20150180769 | Wang et al. | Jun 2015 | A1 |
20150200808 | Gourlay et al. | Jul 2015 | A1 |
20150212892 | Li et al. | Jul 2015 | A1 |
20150215207 | Qin et al. | Jul 2015 | A1 |
20150222547 | Hayut et al. | Aug 2015 | A1 |
20150237097 | Devireddy et al. | Aug 2015 | A1 |
20150242134 | Takada et al. | Aug 2015 | A1 |
20150261556 | Jain et al. | Sep 2015 | A1 |
20150261720 | Kagan et al. | Sep 2015 | A1 |
20150341247 | Curtis et al. | Nov 2015 | A1 |
20150347231 | Gopal et al. | Dec 2015 | A1 |
20150358288 | Jain et al. | Dec 2015 | A1 |
20150358290 | Jain et al. | Dec 2015 | A1 |
20150381494 | Cherian et al. | Dec 2015 | A1 |
20150381495 | Cherian et al. | Dec 2015 | A1 |
20160006696 | Donley et al. | Jan 2016 | A1 |
20160092108 | Karaje et al. | Mar 2016 | A1 |
20160127227 | Lee et al. | May 2016 | A1 |
20160134511 | Wang et al. | May 2016 | A1 |
20160134702 | Gertner | May 2016 | A1 |
20160162302 | Warszawski et al. | Jun 2016 | A1 |
20160162438 | Hussain et al. | Jun 2016 | A1 |
20160179579 | Amann et al. | Jun 2016 | A1 |
20160182342 | Singaravelu et al. | Jun 2016 | A1 |
20160306648 | Deguillard et al. | Oct 2016 | A1 |
20170024334 | Bergsten et al. | Jan 2017 | A1 |
20170075845 | Kopparthi | Mar 2017 | A1 |
20170093623 | Zheng | Mar 2017 | A1 |
20170099532 | Kakande | Apr 2017 | A1 |
20170118090 | Pettit et al. | Apr 2017 | A1 |
20170161090 | Kodama | Jun 2017 | A1 |
20170161189 | Gertner | Jun 2017 | A1 |
20170214549 | Yoshino et al. | Jul 2017 | A1 |
20170295033 | Cherian et al. | Oct 2017 | A1 |
20180024775 | Miller | Jan 2018 | A1 |
20180024964 | Mao et al. | Jan 2018 | A1 |
20180032249 | Makhervaks et al. | Feb 2018 | A1 |
20180095872 | Dreier et al. | Apr 2018 | A1 |
20180109471 | Chang et al. | Apr 2018 | A1 |
20180152540 | Niell et al. | May 2018 | A1 |
20180260125 | Botes et al. | Sep 2018 | A1 |
20180262599 | Firestone | Sep 2018 | A1 |
20180278684 | Rashid et al. | Sep 2018 | A1 |
20180309641 | Wang et al. | Oct 2018 | A1 |
20180309718 | Zuo | Oct 2018 | A1 |
20180329743 | Pope et al. | Nov 2018 | A1 |
20180331961 | Andrew et al. | Nov 2018 | A1 |
20180331976 | Pope et al. | Nov 2018 | A1 |
20180336346 | Guenther | Nov 2018 | A1 |
20180337991 | Kumar et al. | Nov 2018 | A1 |
20180349037 | Zhao et al. | Dec 2018 | A1 |
20180359215 | Khare et al. | Dec 2018 | A1 |
20190042506 | Devey et al. | Feb 2019 | A1 |
20190044809 | Willis et al. | Feb 2019 | A1 |
20190044866 | Chilikin et al. | Feb 2019 | A1 |
20190075063 | McDonnell et al. | Mar 2019 | A1 |
20190132296 | Jiang | May 2019 | A1 |
20190140924 | Koponen et al. | May 2019 | A1 |
20190158396 | Yu et al. | May 2019 | A1 |
20190173689 | Cherian et al. | Jun 2019 | A1 |
20190200105 | Cheng | Jun 2019 | A1 |
20190235909 | Jin et al. | Aug 2019 | A1 |
20190278675 | Bolkhovitin et al. | Sep 2019 | A1 |
20190280980 | Hyoudou | Sep 2019 | A1 |
20190286373 | Karumbunathan et al. | Sep 2019 | A1 |
20190306083 | Shih et al. | Oct 2019 | A1 |
20200021532 | Borikar et al. | Jan 2020 | A1 |
20200028800 | Strathman et al. | Jan 2020 | A1 |
20200042234 | Krasner et al. | Feb 2020 | A1 |
20200042389 | Kulkarni et al. | Feb 2020 | A1 |
20200042412 | Kulkarni et al. | Feb 2020 | A1 |
20200133909 | Hefty et al. | Apr 2020 | A1 |
20200136996 | Li et al. | Apr 2020 | A1 |
20200213227 | Pianigiani et al. | Jul 2020 | A1 |
20200259731 | Sivaraman | Aug 2020 | A1 |
20200278892 | Nainar et al. | Sep 2020 | A1 |
20200278893 | Niell et al. | Sep 2020 | A1 |
20200314011 | Deval et al. | Oct 2020 | A1 |
20200319812 | He et al. | Oct 2020 | A1 |
20200328192 | Zaman et al. | Oct 2020 | A1 |
20200351181 | Koponen et al. | Nov 2020 | A1 |
20200382329 | Yuan | Dec 2020 | A1 |
20200401320 | Pyati et al. | Dec 2020 | A1 |
20200412659 | Arditti Ilitzky | Dec 2020 | A1 |
20210019270 | Li et al. | Jan 2021 | A1 |
20210026670 | Krivenok et al. | Jan 2021 | A1 |
20210058342 | McBrearty | Feb 2021 | A1 |
20210226846 | Ballard et al. | Jul 2021 | A1 |
20210232528 | Kutch et al. | Jul 2021 | A1 |
20210266259 | Renner, III et al. | Aug 2021 | A1 |
20210314232 | Nainar et al. | Oct 2021 | A1 |
20210357242 | Ballard et al. | Nov 2021 | A1 |
20210377166 | Brar et al. | Dec 2021 | A1 |
20210392017 | Cherian et al. | Dec 2021 | A1 |
20210409317 | Seshan et al. | Dec 2021 | A1 |
20220027147 | Maddukuri et al. | Jan 2022 | A1 |
20220043572 | Said et al. | Feb 2022 | A1 |
20220150055 | Cui et al. | May 2022 | A1 |
20220164451 | Bagwell | May 2022 | A1 |
20220197681 | Rajagopal | Jun 2022 | A1 |
20220206908 | Brar et al. | Jun 2022 | A1 |
20220210229 | Maddukuri et al. | Jun 2022 | A1 |
20220231968 | Rajagopal | Jul 2022 | A1 |
20220272039 | Cardona et al. | Aug 2022 | A1 |
20220335563 | Elzur | Oct 2022 | A1 |
20230004508 | Liu et al. | Jan 2023 | A1 |
Number | Date | Country |
---|---|---|
2672100 | Jun 2008 | CA |
2918551 | Jul 2010 | CA |
101258725 | Sep 2008 | CN |
101540826 | Sep 2009 | CN |
102018004046 | Nov 2018 | DE |
1482711 | Dec 2004 | EP |
3598291 | Jan 2020 | EP |
4160424 | Apr 2023 | EP |
202107297 | Feb 2021 | TW |
2004047377 | Jun 2004 | WO |
2005099201 | Oct 2005 | WO |
2007036372 | Apr 2007 | WO |
2010008984 | Jan 2010 | WO |
2016003489 | Jan 2016 | WO |
2020027913 | Feb 2020 | WO |
2021030020 | Feb 2021 | WO |
Entry |
---|
“8.6. Receive Side-Scaling (RSS)”, https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/performance_tuning_guide/network-rss, Jun. 2, 2020, 2 pages. |
Joe Stringer, VMware, “OVS Hardware Offloads Discussion Panel”, http://www.openvswitch.org//support/ovscon2016/7/1450-stringer.pdf, 37 pages. |
Tom Herbert, et al., “Scaling in the Linux Networking Stack”, https://www.kernel.org/doc/Documentation/networking/scaling.txt, Jun. 2, 2020, 9 pages. |
Anwer, Muhammad Bilal, et al., “Building A Fast, Virtualized Data Plane with Programmable Hardware,” Aug. 17, 2009, 8 pages, VISA'09, ACM, Barcelona, Spain. |
Author Unknown, “Network Functions Virtualisation; Infrastructure Architecture; Architecture of the Hypervisor Domain,” Draft ETSI GS NFV-INF 004 V0.3.1, May 28, 2014, 50 pages, France. |
Koponen, Teemu, et al., “Network Virtualization in Multi-tenant Datacenters,” Technical Report TR-2013-001E, Aug. 2013, 22 pages, VMware, Inc., Palo Alto, CA, USA. |
Le Vasseur, Joshua, et al., “Standardized but Flexible I/O for Self-Virtualizing Devices,” Month Unknown 2008, 7 pages. |
Peterson, Larry L., et al., “OS Support for General-Purpose Routers,” Month Unknown 1999, 6 pages, Department of Computer Science, Princeton University. |
Pettit, Justin, et al., “Virtual Switching in an Era of Advanced Edges,” In Proc. 2nd Workshop on Data Center—Converged and Virtual Ethernet Switching (DCCAVES), Sep. 2010, 7 pages, vol. 22. ITC. |
Spalink, Tammo, et al., “Building a Robust Software-Based Router Using Network Processors,” Month Unknown 2001, 14 pages, ACM, Banff, Canada. |
Turner, Jon, et al., “Supercharging PlanetLab—High Performance, Multi-Application Overlay Network Platform,” SIGCOMM-07, Aug. 27-31, 2007, 12 pages, ACM, Koyoto, Japan. |
Author Unknown, “An Introduction to SmartNICs” The Next Platform, Mar. 4, 2019, 4 pages, retrieved from https://www.nextplatform.com/2019/03/04/an-introduction-to-smartnics/. |
Author Unknown, “In-Hardware Storage Virtualization—NVMe SNAP™ Revolutionizes Data Center Storage: Composable Storage Made Simple,” Month Unknown 2019, 3 pages, Mellanox Technologies, Sunnyvale, CA, USA. |
Author Unknown, “Package Manager,” Wikipedia, Sep. 8, 2020, 10 pages. |
Author Unknown, “VMDK”, Wikipedia, May 17, 2020, 3 pages, retrieved from https://en.wikipedia.org/w/index.php?title=VMDK&oldid=957225521. |
Author Unknown, “vSphere Managed Inventory Objects,” Aug. 3, 2020, 3 pages, retrieved from https://docs.vmware.com/en/VMware-vSphere/6.7/com.vmware.vsphere.vcenterhost.doc/GUID-4D4B3DF2-D033-4782-A030-3C3600DE5A7F.html, VMware, Inc. |
Grant, Stewart, et al., “SmartNIC Performance Isolation with FairNIC: Programmable Networking for the Cloud,” SIGCOMM '20, Aug. 10-14, 2020, 13 pages, ACM, Virtual Event, USA. |
Liu, Ming, et al., “Offloading Distributed Applications onto SmartNICs using iPipe,” SIGCOMM '19, Aug. 19-23, 2019, 16 pages, ACM, Beijing, China. |
Suarez, Julio, “Reduce TCO with Arm Based SmartNICs,” Nov. 14, 2019, 12 pages, retrieved from https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/reduce-tco-with-arm-based-smartnics. |
Angeles, Sara, “Cloud vs. Data Center: What's the difference?” Nov. 23, 2018, 1 page, retrieved from https://www.businessnewsdaily.com/4982-cloud-vs-data-center.html. |
Author Unknown, “Middlebox,” Wikipedia, Nov. 19, 2019, 1 page, Wikipedia.com. |
Doyle, Lee, “An Introduction to smart NICs and their Benefits,” Jul. 2019, 2 pages, retrieved from https://www.techtarget.com/searchnetworking/tip/An-introduction-to-smart-NICs-and-ther-benefits. |
Author Unknown, “vSAN Planning and Deployment” Update 3, Aug. 20, 2019, 85 pages, VMware, Inc., Palo Alto, CA, USA. |
Author Unknown, “What is End-to-End Encryption and How does it Work?,” Mar. 7, 2018, 4 pages, Proton Technologies AG, Geneva, Switzerland. |
Harris, Jim, “Accelerating NVME-oF* for VMs with the Storage Performance Development Kit,” Flash Memory Summit, Aug. 2017, 18 pages, Intel Corporation, Santa Clara, CA. |
Perlroth, Nicole, “What is End-to-End Encryption? Another Bull's-Eye on Big Tech,” The New York Times, Nov. 19, 2019, 4 pages, retrieved from https://nytimes.com/2019/11/19/technology/end-to-end-encryption.html. |
Author Unknown, “Hypervisor,” Aug. 13, 2020, 1 page, VMware.com. |
Author Unknown, “Transparent,” Free On-Line Dictionary of Computing (FOLDOC), Jun. 6, 1996, 1 page, retrieved from http://foldoc.org/transparent. |
Li, Junnan, et al., “DrawerPipe: A Reconfigurable Pipeline for Network Processing on FGPA-Based SmartNIC,” Electronics 2020, Dec. 10, 2019, 24 pages, retrieved from https://www.mdpi.com/2079-9292/9/1/59. |
Mohammadkhan, Ali, et al., “P4NFV: P4 Enabled NFV Systems with SmartNICs,” 2019 IEEE Conference on Network Function Virtualization and Software Defined Networks (NFV-SDN), Nov. 12-14, 2019, 7 pages, IEEE, Dallas, TX, USA. |
Olds, Dan, “OS Virtualization vs. Hypervisor: Why You Should Offer Both,” Oct. 19, 2008, 3 pages, techtarget.com. |
Number | Date | Country | |
---|---|---|---|
20210377188 A1 | Dec 2021 | US |