IP Library Granted Patent US 7,400,581
Granted Patent B2
US 7,400,581 · App. 10/378,764 · Granted Jul 15, 2008

Load-balancing utilizing one or more threads of execution for implementing a protocol stack

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,400,581
App. No.
10/378,764
Granted
Jul 15, 2008
Kind
B2
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.

Claims (93)

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. The network device according to claim 1 , wherein said protocol stack further includes,

a payload buffer to store the payload;

a header buffer to store the header; and

a metadata buffer to store the metadata information.

3. The network device according to claim 1 , wherein said interface module comprises a network interface card.

4. The network device according to claim 1 , wherein said protocol stack comprises a transmission control protocol/internet protocol (TCP/IP).

5. The network device according to claim 1 , wherein said single thread of execution comprises:

a network layer;

an internet layer; and

a transport layer.

6. The network device according to claim 1 , wherein said receive thread of execution comprises a network layer.

7. The network device according to claim 1 , wherein said drainer thread of execution comprises a transport layer.

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.

9. The method according to claim 8 , wherein the single thread is utilized during a low system load.

10. The method according to claim 8 , wherein said traffic type comprises an urgent data packet type.

11. The method according to claim 8 , wherein the receive thread and drainer thread are utilized during a high system load.

12. The method according to claim 8 , wherein said single thread of execution comprises:

receiving one of said plurality of data packets;

processing a header of said one of said plurality of data packets; and

delivering a payload of said one of said plurality of data packets to an application according to said header.

13. The method according to claim 8 , wherein said receive thread of execution comprises receiving one of said plurality of data packet.

14. The method according to claim 13 , wherein said drainer thread of execution comprises:

processing a header of said one of said plurality of data packets; and

delivering a payload of said one of said plurality of data packets to an application according to said header.

15. The method according to claim 8 , wherein said single thread of execution comprises:

aggregating one or more of said plurality of data packets destined for an application;

splitting said aggregated one or more of said plurality of data packets to form an aggregated headers and an aggregated payloads;

processing said aggregated headers; and

delivering said aggregated payloads to said application according to said aggregated headers.

16. The method according to claim 8 , wherein said receive thread of execution comprises:

aggregating one or more of said plurality of data packets destined for an application; and

splitting said aggregated one or more of said plurality of data packets to form an aggregated headers and an aggregated payloads.

17. The method according to claim 16 , wherein said drainer thread of execution comprises:

processing said aggregated headers; and

delivering said aggregated payloads to said application according to sad aggregated headers.

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.

20. The method according to claim 19 , wherein said drainer thread of execution comprises:

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.

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.

22. The computer-readable medium according to claim 21 , wherein said first thread of execution comprises a single thread of execution.

23. The computer-readable medium claim 22 , wherein said single thread of execution comprises an internet protocol and a transmission control protocol.

24. The computer-readable medium according to claim 21 , wherein said second thread of execution comprises a receive thread of execution.

25. The computer-readable medium according to claim 24 , wherein said third thread of execution comprises a drainer thread of execution.

26. The computer-readable medium according to claim 25 , wherein said receive thread of execution comprises an internet protocol.

27. The computer-readable medium according to claim 26 , wherein said drainer thread of execution comprises a transmission control protocol.

28. The computer-readable medium according to claim 27 , wherein said internet protocol performs said determining said state of said network device.

29. The computer-readable medium according to claim 27 , wherein said transmission control protocol performs said determining said state of said network device.

Assignments (2)
SECURITY INTEREST Recorded Jul 1, 2024
From: DETECTOR ELECTRONICS, LLC (F/K/A DETECTOR ELECTRONICS CORPORATION); FIREYE, LLC (F/K/A FIREYE INC.); DETECTOR ELECTRONICS BUYER US, LLC; FIREYE BUYER, LLC
To: ALTER DOMUS (US) LLC, AS AGENT
Reel/Frame 068102/0675 →
MERGER AND CHANGE OF NAME Recorded Dec 16, 2015
From: ORACLE USA, INC.; SUN MICROSYSTEMS, INC.; ORACLE AMERICA, INC.
To: ORACLE AMERICA, INC.
Reel/Frame 037303/0336 →