Load balancing the servicing of received packets
AssigneeSun Microsystems, Inc.
InventorFrancesco R. DiMambro
Life of this patent
Estimating the term…
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.
Claims36
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.
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.
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.
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.
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
Dependencies are inferred from the claim text.