Load-balancing utilizing one or more threads of execution for implementing a protocol stack
First Claim
Patent Images
1. A network device comprising:
- a interface module communicatively coupled to a communication network to receive a data packet;
a computer-readable medium to store information and instructions;
a processor to implement a protocol stack by executing said information and instructions, the protocol stack to provide functions including,splitting said data packet into a payload, a header, and a metadata information;
determining a load based on at least one of a system load, a trend of said system load, a traffic type, and a trend of said traffic type;
processing said data packet by a single thread of execution when the load is determined to be within a capacity of the single thread of execution to handle.processing said data packet by a receive thread of execution and a drainer thread of execution when the load is determined to be outside of the capacity of the single thread of execution to handle; and
an application wherein the payload of said data packet is utilized.
2 Assignments
0 Petitions
Accused Products
Abstract
Embodiments of the present invention provide a novel method of implementing a network communication protocol. In one embodiment, the state of the network communication process is determined based upon one or more conditions. The protocol stack is then executed as a single thread of execution if the network communication process is in a first state. Alternatively, the protocol stack is executed as a receive thread of execution and a drainer thread of execution if the network communication process is in a second state.
34 Citations
29 Claims
-
1. A network device comprising:
-
a interface module communicatively coupled to a communication network to receive a data packet; a computer-readable medium to store information and instructions; a processor to implement a protocol stack by executing said information and instructions, the protocol stack to provide functions including, splitting said data packet into a payload, a header, and a metadata information; determining a load based on at least one of a system load, a trend of said system load, a traffic type, and a trend of said traffic type; processing said data packet by a single thread of execution when the load is determined to be within a capacity of the single thread of execution to handle. processing said data packet by a receive thread of execution and a drainer thread of execution when the load is determined to be outside of the capacity of the single thread of execution to handle; and an application wherein the payload of said data packet is utilized. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method of performing network communication comprising:
-
buffering a plurality of data packets, the buffering includes splitting each of the plurality of data packets in into a payload, a header, and a metadata information; determining a suitable type of execution thread for processing a load wherein the load is measured based on at least one of a system load, a trend of said system load, a traffic type, and a trend of said traffic type, wherein the determining includes, processing said plurality of data packets according to a protocol utilizing a single thread of execution when the single thread can handle the load; and processing said plurality of data packets according to a protocol utilizing a receive thread of execution and a drainer thread of execution when the single thread cannot handle the load. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A method of implementing a network communication protocol stack comprising:
-
determining a suitable type of execution thread for processing a load wherein the load is measured based on at least one of a system load, a trend of said system load, a traffic type, and a trend of said traffic type, wherein the determining includes, executing a single thread of execution in a low system load; executing a receive thread of execution and a drainer thread of execution in a high system load, wherein said single thread of execution including, receiving a plurality of data packets; aggregating said plurality of data packets; splitting said aggregated data packets into an aggregate header and an aggregate payload; creating metadata concerning said aggregate header and said aggregate payload; routing said aggregate payload utilizing said aggregate header and said metadata; controlling flow of said aggregate payload utilizing said aggregate header and said metadata; and delivering said aggregate payload to a destination application according to said aggregate header and said metadata.
-
-
19. A method of implementing a network communication protocol stack comprising:
-
determining a suitable type of execution thread for processing a load wherein the load is measured based on at least one of a system load, a trend of said system load, a traffic type, and a trend of said traffic type, wherein the determining includes, executing a single thread of execution in a low system load; executing a receive thread of execution and a drainer thread of execution in a high system load, wherein said receive thread of execution including, receiving a plurality of data packets; aggregating said plurality of data packets; splitting said aggregated data packets into an aggregate header and an aggregate payload; and creating metadata concerning said aggregate header and said aggregate payload. - View Dependent Claims (20)
-
-
21. A computer-readable medium having program instructions which when executed by a network device implement a protocol stack coupled to an interface module to receive a data packet from a communication network and cause the network device to perform operations:
-
receiving the data packet from the communication network coupled to the protocol stack through the interface module; spitting the data packet into a payload, a header, and a metadata information; buffering the payload into a payload buffer; buffering the header into a header buffer; buffering the metadata information into a metadata buffer; determining suitable type of execution thread for processing a load wherein the load is measured based on at least one of a system load, a trend of said system load, a traffic type, and a trend of said traffic type, wherein the determining includes, processing a first and second portion of a header of said data packet utilizing a first thread of execution in a low system load, processing said first portion of said header of said packet utilizing a second thread of execution and handing-off processing of said second portion of said header to a third thread of execution in a high system load; and delivering the payload to a destination application. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29)
-
Specification