PCI Express Load Sharing Network Interface Controller Cluster
First Claim
1. A load balancing apparatus that implements load balancing functions for network traffic between physical network interface controllers (NICs) and system images through a PCI-Express (PCIe) switching cloud, the load balancing apparatus comprising:
- at least one PCIe high-speed serial link comprising a plurality of lanes;
a plurality of network data link layer control functions;
a plurality of GbE physical layer inputs and outputs (IOs); and
a data processing unit coupled to a set of data buffers for parsing, processing, and storing a plurality of data packets, wherein each data packet encapsulates a data frame.
10 Assignments
0 Petitions
Accused Products
Abstract
Embodiments provide load balancing in a virtual computing environment comprising a plurality of PCI-Express switches (the PCIe switching cloud) coupled to a plurality of network interface devices (NICs). An NIC cluster is added between the PCIe switching cloud and the NICs. The NIC cluster is configured to hide NICs from system images and allow the system images to access functions across multiple NICs. The NIC cluster of an embodiment dynamically load balances network resources by performing a hashing function on a header field of received packets. The NIC cluster of an embodiment performs load balancing and state management in association with driver software, which is embedded in the system image. The driver software adds a tag for flow identification to downstream data packets. The NIC cluster distributes data packets based on information in the tag.
172 Citations
40 Claims
-
1. A load balancing apparatus that implements load balancing functions for network traffic between physical network interface controllers (NICs) and system images through a PCI-Express (PCIe) switching cloud, the load balancing apparatus comprising:
-
at least one PCIe high-speed serial link comprising a plurality of lanes; a plurality of network data link layer control functions; a plurality of GbE physical layer inputs and outputs (IOs); and a data processing unit coupled to a set of data buffers for parsing, processing, and storing a plurality of data packets, wherein each data packet encapsulates a data frame. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A network input/output (I/O) clustering system for load balancing in a system of networking virtual machines or system images, the network IO clustering system comprising:
-
a shim driver; and a network interface card (NIC) cluster. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. A method for making a cluster of network interface controllers (NICs) appear as a single virtual NIC to a system of clustered system images that operates in conjunction with that NIC cluster through a PCIe switching cloud, the method comprising:
-
receiving a data packet; verifying that the received data packet is free of errors; storing the error-free data packet in a receive First-In First-Out (FIFO) buffer; executing a flow control mechanism to obtained a first hash value; and sending the data packet to a first NIC associated with the first hash value. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31, 32, 33, 34)
-
-
35. A method for assigning a plurality of network interface cards (NICs) to a system image in a server computer cluster through a PCIe switching cloud, the method comprising:
-
providing a machine usable program code to the system image, wherein the machine usable program code inserts a tag into a downstream data packet; and providing a NIC cluster device which parses the tag to direct the data packet to an associated output. - View Dependent Claims (36, 37, 38, 39, 40)
-
Specification