Protocol-independent receive-side scaling
First Claim
1. A method, comprising:
- detecting, based on packet headers of an incoming packet, one or more protocol headers of a set of possible protocol header combinations for routing the incoming packet, the set of possible protocol header combinations being modifiable to include later-developed protocols;
determining, for the incoming packet, a flow hash N-tuple definition as a protocol-independent arbitrary set of bits based on the detected one or more protocol headers;
applying the flow hash N-tuple definition to the incoming packet to form a flow hash N-tuple header vector;
computing a flow hash from the flow hash N-tuple header vector;
identifying, based on the computed flow hash, a set of destination queues for the incoming packet;
determining whether the identified set of destination queues are owned by a virtual machine; and
delivering the packet directly to the virtual machine, bypassing a hypervisor, if the identified set of destination queues are owned by the virtual machine.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method for protocol independent receive side scaling (RSS) includes storing a plurality of RSS hash M-tuple definitions, each definition corresponding to one of a set of possible protocol header combinations for routing an incoming packet, the set of possible protocol header combinations being modifiable to include later-developed protocols. Based on initial bytes of the incoming packet, a pattern of protocol headers is detected, and used to select one of the plurality of RSS hash M-tuple definitions. The selected RSS hash M-tuple definition is applied as a protocol-independent arbitrary set of bits to the headers of the incoming packet to form a RSS hash M-tuple vector, which is used to compute a RSS hash. Based on the RSS hash, a particular queue is selected from a set of destination queues identified for the packet, and the packet is delivered to the selected particular queue.
-
Citations
20 Claims
-
1. A method, comprising:
-
detecting, based on packet headers of an incoming packet, one or more protocol headers of a set of possible protocol header combinations for routing the incoming packet, the set of possible protocol header combinations being modifiable to include later-developed protocols; determining, for the incoming packet, a flow hash N-tuple definition as a protocol-independent arbitrary set of bits based on the detected one or more protocol headers; applying the flow hash N-tuple definition to the incoming packet to form a flow hash N-tuple header vector; computing a flow hash from the flow hash N-tuple header vector; identifying, based on the computed flow hash, a set of destination queues for the incoming packet; determining whether the identified set of destination queues are owned by a virtual machine; and delivering the packet directly to the virtual machine, bypassing a hypervisor, if the identified set of destination queues are owned by the virtual machine. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A chip, comprising:
-
one or more memories storing a plurality of flow hash N-tuple definitions, each flow hash N-tuple definition corresponding to one of a set of possible protocol header combinations for routing an incoming packet, the set of possible protocol header combinations being modifiable to include later-developed protocols; and one or more processors in communication with the one or more memories, the one or more processors configured to; detect, based on a packet header of the incoming packet, a pattern of protocol headers; determine, for the incoming packet, a flow hash N-tuple definition based on the detected pattern of protocol headers; apply the flow hash N-tuple definition to the incoming packet to form a flow hash N-tuple header vector; compute a flow hash from the flow hash N-tuple header vector; identify, based on the computed flow hash, a set of destination queues for the incoming packet; determine whether the identified set of destination queues are owned by a virtual machine; and deliver the packet directly to the virtual machine, bypassing a hypervisor, if the identified set of destination queues are owned by the virtual machine. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. A system, comprising:
-
a hypervisor having a first plurality of receive queues; a virtual machine having a second plurality of receive queues; and a chip coupled to the hypervisor and the virtual machine, wherein the chip is configured to; receive an incoming packet; determine, for the incoming packet, a flow hash N-tuple definition; apply the flow hash N-tuple definition to the incoming packet to form a flow hash N-tuple header vector; compute a flow hash from the flow hash N-tuple header vector; identify, based on the computed flow hash, a set of destination queues for the incoming packet; determine whether the identified set of destination queues are owned by a virtual machine; and deliver the packet directly to the virtual machine, bypassing the hypervisor, if the identified set of destination queues are owned by the virtual machine. - View Dependent Claims (20)
-
Specification