Load balancing the servicing of received packets
First Claim
1. A method of load balancing the processing of packets received at a computer system, comprising:
- maintaining a plurality of queues, wherein each said queue is serviced by a separate service process configured to facilitate the processing of a packet in accordance with one or more communication protocols;
receiving packets at a communication interface of a computer system, wherein the communication interface is configured to place the packets onto a descriptor ring; and
executing a single interrupt service routine configured to;
receive the packets from the descriptor ring;
replace descriptor ring buffers in which the packets were received;
distribute the packets among the queues; and
signal the service process associated with each queue into which a packet was distributed.
2 Assignments
0 Petitions
Accused Products
Abstract
A system and method for distributing a portion of the processing of a received packet among a plurality of service threads. When an ISR or similar process retrieves a packet from a communication interface via a receive descriptor ring, it places the packet on one of a plurality of service queues. Each queue has an associated service thread or process that initiates upper layer protocol processing for queued packets. The ISR may select a particular service queue based on the packet'"'"'s communication flow or connection. Alternatively, the ISR may use a processor identifier provided by the communication interface to select a queue (e.g., in a multi-processor computer system). Or, other information provided by the interface may be used.
52 Citations
36 Claims
-
1. A method of load balancing the processing of packets received at a computer system, comprising:
-
maintaining a plurality of queues, wherein each said queue is serviced by a separate service process configured to facilitate the processing of a packet in accordance with one or more communication protocols; receiving packets at a communication interface of a computer system, wherein the communication interface is configured to place the packets onto a descriptor ring; and executing a single interrupt service routine configured to; receive the packets from the descriptor ring; replace descriptor ring buffers in which the packets were received; distribute the packets among the queues; and signal the service process associated with each queue into which a packet was distributed. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of load balancing the processing of packets received at a computer system, the method comprising:
-
maintaining a plurality of queues, wherein each said queue is serviced by a separate service process configured to facilitate the processing of a packet in accordance with one or more communication protocols; receiving packets at a communication interface of a computer system, wherein the communication interface is configured to place the packets onto a descriptor ring; and executing a single interrupt service routine configured to; receive the packets from the descriptor ring; replace descriptor ring buffers in which the packet were received; distribute the packets among the queues; and signal the service process associated with each queue into which a packet was distributed.
-
-
11. A method of processing a received packet, comprising:
-
receiving a first packet at a communication interface of a multi-processor computer system; executing an interrupt service routine to; retrieve the first packet from a receive descriptor ring buffer; replace the receive descriptor ring buffer; place the first packet onto one of a plurality of service queues; and signal a first service process associated with the selected service queue; and executing said first service process to; retrieve the first packet from the service queue; and facilitate processing of the first packet through an upper layer communication protocol. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24)
-
-
25. A computer readable storage medium storing instructions that, when executed by a computer, cause the computer to perform a method of processing a received packet, the method comprising:
-
receiving a first packet at a communication interface of a multi-processor computer system; executing an interrupt service routine to; retrieve the first packet from a receive descriptor ring buffer; replace the buffer; place the first packet onto one of a plurality of service queues; and signal a first service process associated with the selected service queue; and executing said first service process to; retrieve the first packet from the service queue; and facilitate processing of the first packet through an upper layer communication protocol.
-
-
26. A computer system, comprising:
-
multiple processors; a communication interface configured to receive a packet from a communication link; a plurality of service queues; an interrupt process configured to; receive the packet from the communication interface; select a first service queue from the plurality of service queues; and place the packet into the first service queue; and a first service process, distinct from the interrupt process, wherein said first service process is configured to remove the packet from the first service queue and initiate processing of the packet through one or more communication protocols. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34, 35, 36)
-
Specification