IP Library Granted Patent US 6,987,763
Granted Patent B2
US 6,987,763 · App. 09/848,335 · Granted Jan 17, 2006

Load balancing

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 6,987,763
App. No.
09/848,335
Granted
Jan 17, 2006
Kind
B2
Abstract

A system, computer program product and method for distributing incoming packets among several servers or other network devices, such as routers or proxies. The distribution is based on calculations, which include data associated with each of the packets. The data is selected to be invariant from packet to packet within a session. The system and method preferably operate independently from the servers or other devices, and therefore do not require feedback from the servers, and do not require the maintenance of a session table.

Claims (80)

1. A system for distributing a packet received over a network, the system comprising:

(a) a plurality of servers connected to the network; and

(b) a load balancer, connected to the network, for selecting one of the plurality of servers according to a calculation, wherein said calculation is performed according to the formula:

((SRC_IP_ADDR+DEST_IP_ADDR+DEST_PORT) % N)

wherein SRC_IP_ADDR is the source IP address of the packet; DEST_IP_ADDR is the destination IP address of the packet; DEST_PORT is the Port of the destination of the packet; % is a modulo operation; and N is the number of servers.

2. The system of claim 1 , wherein said calculation is determined such that each packet from a particular session is sent to the same server.

3. The system of claim 2 , wherein said load balancer does not maintain a session table.

4. The system claim 1 , wherein said calculation is independent of any feedback from the plurality of servers.

5. The system claim 4 , wherein said load balancer does not receive feedback from said plurality of servers.

6. The system of claim 1 , wherein said calculation is based on data associated with the packet.

7. The system of claim 6 , wherein said data is invariant from packet to packet within a session.

8. The system of claim 6 , wherein at least a portion of the data is associated with a source of the packet.

9. The system of claim 6 , wherein at least a portion of the data is associated with a destination of the packet.

10. The system of claim 6 , wherein at least a portion of the data is associated with a destination port of the packet.

11. The system of claim 6 , wherein at least a portion of the data is associated with a source port of the packet.

12. The system of claim 6 , wherein at least a portion of the data is associated with a protocol number of the packet.

13. The system of claim 1 , wherein said plurality of servers are redundant servers.

14. The system of claim 1 , wherein said load balancer is termed a first load balancer, and further comprising a second load balancer, connected to the network, for selecting, according to the formula, one of the plurality of servers for receiving another packet received over the network.

15. The system according to claim 14 , wherein said second load balancer is operable only if said first load balancer is inoperable.

16. The method of claim 1 , wherein said calculation is based on data associated with the packet.

17. The method of claim 16 , wherein said data is invariant from packet to packet within a session.

18. The method of claim 16 , wherein at least a portion of the data is associated with a source of the packet.

19. The method of claim 16 , wherein at least a portion of the data is associated with a destination of the packet.

20. The method of claim 16 , wherein at least a portion of the data is associated with a destination port of the packet.

21. The method of claim 16 , wherein at least a portion of the data is associated with a source port of the packet.

22. The method of claim 16 , wherein at least a portion of the data is associated with a protocol number of the packet.

23. The system of claim 1 , further comprising a plurality of routers/proxies, each of said routers/proxies receiving the packet, and each of said router/proxies performing a calculation for selecting one of the routers/proxies for handling the packet.

24. A system of claim 23 , wherein each of the routers/proxies performs the calculation based on data associated with the packet.

25. A system for distributing a packet received over a network, the system comprising:

(a) a plurality of servers connected to the network; and

(b) a load balancer, connected to the network, for selecting one of the plurality of servers according to a calculation, wherein said calculation is performed according to the formula:

((SRC_IP_ADDR+SRC_PORT+DEST_IP_ADDR+DEST_PORT+PROTOCOL) % N)

wherein SRC_IP_ADDR is the source IP address of the packet; SRC PORT is the source port number of the packet, DEST_IP_ADDR is the destination IP address of the packet; DEST_PORT is the port of the destination of the packet; PROTOCOL is the protocol number of the packet, % is a modulo operation; and N is the number of servers.

26. A method for load balancing a plurality of servers, comprising:

(a) receiving a packet;

(b) determining a source IP address of said packet, a destination IP address of said packet and a port of the destination of said packet;

(c) identifying one of the plurality of servers according to a calculation, wherein the calculation is performed according to the following formula:

((SRC_IP_ADDR+DES_IP_ADDR+DEST_PORT) % N)

wherein SRC_IP_ADDR is the source IP address of the packet; DEST_IP_ADDR is the destination IP address of the packet; DEST_PORT is the port of the destination of the packet; % is a modulo operator; and N is the number of servers; and further comprising:

(d) distributing said packet to the identified one of said plurality of servers.

27. A method for load balancing a plurality of servers, comprising:

(a) receiving a packet;

(b) determining a source IP address of said packet, a destination IP address of said packet and a port of the destination of said packet;

(c) identifying one of the plurality of servers according to a calculation, wherein the formula is calculated according to the formula

((SRC_IP_ADDR+SRC_PORT+DEST_IP_ADDR+DEST_PORT+PROTOCOL) % N)

wherein SRC_IP_ADDR is the source IP address of the packet; SRC_PORT is the source port number of the packet; DEST_IP_ADDR is the destination IP address of the packet; DEST_PORT is the port of the destination of the packet; PROTOCOL is the protocol number; % is a modulo operator; and N is the umber of servers; and further comprising:

(d) distributing said packet to the identified one of said plurality of servers.

28. A method for load balancing a plurality of servers, comprising:

(a) receiving a packet;

distributing the received packet to a particular one of the plurality of servers according to a calculation, wherein said calculation is based on data associated with the packet, and wherein

each of said plurality of servers performs the calculation based on data associated with the packet, wherein the calculation is performed according to the formula: ((SRC_IP_ADDR+DES_IP_ADDR+DEST_PORT) % N)

wherein SRC_IP_ADDR is the source IP address of the packet; DEST_IP_ADDR is the destination IP address of the packet ; DEST_PORT is the port of the destination of the packet; % is a modulo operator; and N is the umber of servers.

29. The method of claim 28 , wherein the calculation is performed independently of any feedback from said servers.

30. A computer program product for enabling a computer to load

balance a plurality of servers, the computer program comprising: software instructions for enabling the computer to perform predetermined operations, and

a computer readable medium bearing the software instructions;

the predetermined operations including:

(a) receiving a packet;

(b) determining packet information including a source IP address of the packet, a destination IP address of the packet and a port of the destination of the packet; and

(c) selecting a particular server from the plurality of servers for receiving a particular packet according to a calculation based on the packet information, wherein the calculation is performed according to the formula:

((SRC_IP_ADDR+DEST_IP_ADDR+DEST_PORT) % N)

wherein SRC_IP_ADDR is the source IP address of the packet; DEST_IP_ADDR is the destination IP address of the packet; DEST_PORT is the port of the destination of the packet; % is a modulo operator; and N is the number of servers.

31. The computer program product of claim 30 , wherein the calculation is based on data associated with the packet.

32. A system of distributing a packet over a network, comprising:

a plurality of routers/proxie, each of said routers/proxies receiving the packet, and each of said router/proxies performing a calculation for selecting one of the routers/proxies for handling the packet, wherein the calculation is performed according to the following formula:

((SRC_IP_ADDR+DEST_IP_ADDR+DEST_PORT) % N)

wherein SRC_IP_ADDR is he source IP address of the packet; DEST_IP_ADDR is the destination IP address of the packet; DEST_PORT is the port of the destination of the packet; % is a modulo operator; and N is the number of routers/proxies.

33. The system of claim 32 , wherein the calculation is based on data associated with the data.

34. The system of claim 33 , wherein the data is invarient from packet to packet within a session.

35. The system of claim 33 , wherein at least a portion of the data is associated with a source of the packet.

36. The system of claim 33 , wherein at least a portion of the data is associated with a destination of the packet.

37. The system of claim 33 , wherein at least a portion of the data is associated with a source port number of the packet.

38. The method of claim 33 , wherein at least a portion of the data is associated with a protocol number of the packet.

39. A system of distributing a packet over a network, comprising:

a plurality of servers, each said servers receiving the packet, and each of said servers performing a calculation for selecting one of the routers/proxies for handling the packet, wherein the calculation is performed according to the following formula:

((SRC_IP_ADDR+DEST_IP_ADDR+DEST_PORT) % N)

wherein SRC_IP_ADDR is he source IP address of the packet; DEST_IP_ADDR is the destination IP address of the packet; DEST_PORT is the port of the destination of the packet; % is a modulo operator; and N is the number of servers.

40. The system of claim 39 , wherein the calculation is based on data associated with the packet.

41. The system of claim 39 , further comprising a plurality of routers/proxies, each of said routers/proxies receiving the packet, and each of said router/proxies performing a calculation for selecting one of the routers/proxies for handling the packet.

42. The system of claim 41 , wherein the calculation by each of the router/proxies is based a data associated with the packet.

Assignments (6)
CHANGE OF NAME Recorded May 2, 2017
From: XURA LTD
To: MAVENIR LTD.
Reel/Frame 042383/0797 →
CHANGE OF NAME Recorded Apr 21, 2017
From: COMVERSE LTD
To: XURA LTD
Reel/Frame 042314/0122 →
CORRECTED ASSIGNMENT OF PATENT TO CORRECT ASSIGNORS AND ASSIGNEE. Recorded Feb 27, 2012
From: ROCHBERGER, HAIM; MIZRACHI, YORAM
To: EXALINK LTD.
Reel/Frame 027845/0798 →
CHANGE OF NAME Recorded Jun 3, 2005
From: COMVERSE NETWORKS SYSTEMS, LTD.
To: COMVERSE LTD.
Reel/Frame 016654/0359 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2001
From: MIZRACHI, YORAM; ROCHBERGER, HAIM
To: COMVERSE NETWORK SYSTEMS, LTD.
Reel/Frame 012115/0086 →
INVALID ASSIGNMENT, SEE RECORDING AT REEL 012115, FRAME 0086. (DOCUMENT RE-RECORDED TO CORRECT RECORDATION DATE) Recorded Jul 9, 2001
From: MIZRACHI, YORAM; ROCHBERGER, HAIM
To: COMVERSE NETWORK SYSTEMS, LTD.
Reel/Frame 011995/0842 →