IP Library Patent Application 12853729
Patent Application
App. No. 12/853,729

MANAGING CLIENT REQUESTS FOR DATA

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 None
App. No.
12/853,729
Filed
Aug 10, 2010
Art Unit
2454
USPC
709/232
Abstract

Network traffic is distributed between a plurality of networked computers. The traffic comprises requests that are received into the network and replicated to each computer. For each request, each computer makes a decision based on attributes of the request as to whether to process or ignore the request, such that each request is processed by only one computer. Each computer periodically broadcasts a signal to each of the other computers to confirm that it is online. When a first computer is no longer online, the traffic is redistributed amongst the remaining online computers, wherein traffic that is already processed by the remaining computers is not redistributed, traffic that would have been processed by the first computer is split evenly between the remaining computers, and each computer decides independently and identically how to redistribute the traffic without communicating with the other computers.

Claims (52)

1 . A method of distributing network traffic between a plurality of networked computers, wherein:

said traffic comprises requests that are received into said network and replicated to each computer, and

for each request, each computer makes a decision based on attributes of said request as to whether to process or ignore the request, such that each request is processed by only one computer; comprising the steps of:

periodically broadcasting a signal to each of the other computers to confirm that it is online;

determining a condition to the effect that a first computer is no longer online; and

redistributing said traffic amongst the remaining online computers, wherein:

traffic that is already processed by said remaining computers is not redistributed;

traffic that would have been processed by said first computer is split evenly between said remaining computers; and

each computer decides independently and identically how to redistribute said traffic without communicating with the other computers.

2 . A method according to claim 1 , wherein each said computer makes a decision about whether to process or ignore said request by creating a hash of attributes of said request and determining whether it is responsible for requests having that hash.

3 . A method according to claim 2 , wherein for any value of said hash, said computer establishes whether it is responsible for requests having that hash by:

(a) creating a first list of said networked computers, said first list being ordered and numbered;

(b) calculating a first variable by taking the modulus of the hash with respect to the number of computers in said list;

(c) identifying the computer at the position in the list indicated by said first variable; and

(d) if said identified computer is said computer, establishing that it is responsible for requests having said hash.

4 . A method according to claim 3 , further comprising the steps of:

determining that said identified computer is offline;

removing said identified computer from said list to create a second list and numbering said list;

calculating a modified hash by dividing said hash by said number of computers in said first list; and

performing steps (b) and (c) of claim 3 again, replacing said first list with said second list and said hash with said modified hash; and

if said identified computer is said computer, establishing that it is responsible for requests having the unmodified hash.

5 . A method according to claim 2 , wherein each of said computers calculates a responsibilities table by determining whether it is responsible for requests having each possible hash value, and each computer consults said responsibilities table to determine whether it is responsible for each request.

6 . A method according to claim 1 , wherein at least one of said computers is passive and is considered to be offline unless one of the other computers goes offline.

7 . A method according to claim 1 , wherein each of said computers is a traffic manager, a plurality of servers are connected to said network, and each traffic manager is configured to route requests to one of said servers.

8 . A traffic manager for processing requests received over a network, comprising a processor, memory and communication means, wherein said processor is configured to:

maintain communication with a plurality of similar traffic managers via said communication means;

receive a request via said communication means;

determine, based on attributes of said request, whether to process or ignore the request;

determine a condition to the effect that a first traffic manager is no longer online; and

allocate to itself a portion of the traffic handled by said first traffic manager without transferring any traffic that it already handles to other traffic managers, and without negotiating with said other traffic managers.

9 . A traffic manager according to claim 8 , wherein said processor is configured to determine whether to process or ignore said request by creating a hash of attributes of said request and determining whether it is responsible for requests having that hash.

10 . A traffic manager according to claim 9 , wherein for any value of said hash, said processor is configured to establish whether it is responsible for requests having that hash by:

(a) creating a first list of said traffic managers, said first list being ordered and numbered;

(b) calculating a first variable by taking the modulus of the hash with respect to the number of computers in said list;

(c) identifying the traffic manager at the position in the list indicated by said first variable; and

(d) if said identified traffic manager is said traffic manager, establishing that it is responsible for requests having said hash.

11 . A traffic manager according to claim 10 , further comprising the steps of:

determining that said identified traffic manager is offline;

removing said identified traffic manager from said list to create a second list and numbering said list;

calculating a modified hash by dividing said hash by said number of traffic managers in said first list; and

performing steps (b) and (c) of claim 10 again, replacing said first is with said second list and said hash with said modified hash; and

if said identified traffic manager is said traffic manager, establishing that it is responsible for requests having the unmodified hash.

12 . A traffic manager according to claim 9 , wherein said processor is further configured to calculate a responsibilities table by determining whether it is responsible for requests having each possible hash value, and to consult said responsibilities table to determine whether it is responsible for each request.

13 . A traffic manager according to claim 8 , wherein said traffic manager is further networked to a plurality of servers, and said processor is further configured to route requests to one of said servers.

14 . A computer-readable medium having computer-readable instructions executable by a computer such that, when executing said instructions, a computer will perform the steps of:

maintaining communication with a plurality of similar computers via said communication means;

receive a request via said communication means;

determine, based on attributes of said request, whether to process or ignore the request;

determine a condition to the effect that a first computer is no longer online; and

allocate to itself a portion of the traffic handled by said first computer without transferring any traffic that it already handles to other computers, and without negotiating with said other computers.

15 . Instructions executable by a computer or by a network of computers such that when executing said instructions said computer(s) will perform a method as defined by claim 1 .

16 . A computer system programmed to execute program instructions according to claim 15 .

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY NAME PREVIOUSLY RECORDED ON REEL 035521 FRAME 0069. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST IN PATENTS. Recorded Jun 2, 2015
From: JPMORGAN CHASE BANK, N.A.
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035807/0680 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Apr 28, 2015
From: BARCLAYS BANK PLC
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 035521/0069 →
PATENT SECURITY AGREEMENT Recorded Dec 27, 2013
From: RIVERBED TECHNOLOGY, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 032421/0162 →
RELEASE OF PATENT SECURITY INTEREST Recorded Dec 26, 2013
From: MORGAN STANLEY & CO. LLC, AS COLLATERAL AGENT
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 032113/0425 →
SECURITY AGREEMENT Recorded Dec 20, 2012
From: RIVERBED TECHNOLOGY, INC.; OPNET TECHNOLOGIES, INC.
To: MORGAN STANLEY & CO. LLC
Reel/Frame 029646/0060 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 2, 2012
From: RIVERBED TECHNOLOGY LIMITED
To: RIVERBED TECHNOLOGY, INC.
Reel/Frame 027644/0888 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 26, 2012
From: ZEUS TECHNOLOGY LIMITED
To: RIVERBED TECHNOLOGY LIMITED
Reel/Frame 027603/0331 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 19, 2010
From: GARRETT, OWEN JOHN; CONLON, DECLAN SEAN; HORNEY, MATTHEW MORGAN
To: ZEUS TECHNOLOGY LIMITED
Reel/Frame 025160/0710 →