IP Library Granted Patent US 7,321,556
Granted Patent B1
US 7,321,556 · App. 10/281,809 · Granted Jan 22, 2008

Application prioritization policy engine

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,321,556
App. No.
10/281,809
Granted
Jan 22, 2008
Kind
B1
Abstract

A system and method for enforcing policies on data packets in a computer network is disclosed. The enforcement of policies is done by prioritizing and regulating the flow of data packets. The regulation of prioritized data packets includes a determination of: service level agreement violations, flow control of data packets of a predefined priority and session resettings. For determination of service level agreements the policy engine carries out a response time calculation and finds if it is in consonance with the response time agreed upon in the service level agreement. Flow control in case of a service level agreement violation is implemented either by reducing the server side window size or by delaying acknowledgement packets sent by the client.

Claims (51)

1. A method of regulating flow of one or more data packets in a computer network, the computer network comprising at least one client and at least one server, each of the clients establishing one or more session(s) with the servers to access one or more applications from the servers, the servers providing access to the applications by exchanging the data packets with the clients, the servers being hosted by an application service provider, the application service provider offering one or more service level agreements to the clients, the service level agreements defining priorities for the data packets, the method comprising the steps of:

a. determining whether a service level agreement violation has taken place;

b. if the service level agreement violation has taken place and the time elapsed after the service level agreement violation has taken place is less than a predefined limit, then controlling the flow of the data packets of a predefined priority, wherein controlling the flow of the data packets comprises, at least one of:

i. reducing the window size of the servers;

ii. delaying acknowledgement packets for the data packets sent by the servers, the acknowledgement packets being sent by the clients; and

c. resetting a current session when the number of service level agreement violations exceeds a first predefined limit and number of ongoing sessions exceeds a second predefined limit.

2. The method as recited in claim 1 wherein the step of determining whether the service level agreement violation has taken place comprises the steps of:

i. computing a response time for the data packets sent by the servers; and

ii. comparing the computed response time with the response time agreed upon in the service level agreement for the data packets.

3. The method as recited in claim 1 , wherein the window size of the servers is reduced by an integral multiple of maximum segment size, the maximum segment size being the largest amount of data that a server can store.

4. The method as recited in claim 1 , wherein the step of delaying the acknowledgement packets for the data packets sent by the servers comprises the steps of:

I. determining whether an input data packet is an acknowledgement packet; and

II. storing the input data packet in an array if it is an acknowledgement packet, whereby the receipt of the acknowledgement packet by the servers is delayed.

5. A system for regulating flow of one or more data packets in a computer network, the computer network comprising at least one client and at least one server, each of the clients establishing one or more session(s) with the servers to access one or more applications from the servers, the servers providing access to the applications by exchanging the data packets with the clients, the servers being hosted by an application service provider, the application service provider offering one or more service level agreements to the clients, the service level agreements defining priorities for the data packets, the system comprising:

a. means for determining whether a service level agreement violation has taken place;

b. means for controlling the flow of the data packets of a predefined priority if the service level agreement violation has taken place and the time elapsed after the service level agreement violation has taken place is less than a predefined limit, wherein the means for controlling the flow of the data packets comprises, at least one of:

i. means for reducing the window size of the servers; and

ii. means for delaying acknowledgement packets sent by the servers, the acknowledgement packets being sent by the clients; and

c. means for resetting a current session when the number of service level agreement violations exceeds a first predefined limit and number of ongoing sessions exceeds a second predefined limit.

6. The system as recited in claim 5 wherein the means for determining whether a service level agreement violation has taken place comprises:

i. means for computing a response time for the data packets sent by the servers; and

ii. means for comparing the computed response time with the response time agreed upon in the service level agreement for the data packets.

7. A computer program product for regulating flow on one or more data packets in a computer network, the computer network comprising at least one client and at least one server, each of the clients establishing one or more session(s) with the servers to access one or more applications from the servers, the servers providing access to the applications by exchanging the data packets with the clients, the servers being hosted by an application service provider, the application service provider offering one or more service level agreements to the clients, the service level agreement defining priorities for the data packets, the computer program product comprising:

program instruction means written on a computer readable medium comprising:

a. program instruction means for determining the priorities of the data packets;

b. program instruction means for determining whether a service level agreement violation has taken place, wherein the program instruction means for determination of the service level agreement violation comprises:

i. program instruction means for computing a response time for the data packets sent by the servers; and

ii. program instruction means for comparing the computed response time with the response time agreed upon in the service level agreement for the data packets; and

c. program instruction means for controlling the flow of the data packets of a predefined priority if the service level agreement violation has taken place and the time elapsed after the service level agreement violation has taken place is less than a predefined limit, wherein the program instruction means for controlling the flow of the data packets comprises, at least one of:

i. program instruction means for reducing the window size of the servers; and

ii. program instruction means for delaying acknowledgement packets sent by the servers, the acknowledgement packets being sent by the clients; and

d. program instruction means for resetting a current session when the number of service level agreement violations exceeds a first predefined limit and number of ongoing sessions exceeds a second predefined limit.

8. A method of regulating flow of on one or more data packets in a computer network, the computer network comprising at least one client and at least one server, each of the clients establishing one or more session(s) with the servers to access one or more applications from the servers, the servers providing access to the applications by exchanging the data packets with the clients, the servers being hosted by an application service provider, the application service provider offering one or more service level agreements to the clients, the method comprising the steps of:

a. prioritizing the data packets, the prioritization being done on the basis of the service level agreements;

b. determining whether a service level agreement violation has taken place;

c. if the service level agreement violation has taken place and time elapsed after the service level agreement violation has taken place is less than a predefined limit, then controlling the flow of the data packets of a predefined priority; and

d. resetting a current session when the number of service level agreement violations exceed a first predefined limit and the number of ongoing sessions exceed a second predefined limit.

9. The method as recited in claim 8 wherein the step of determining the service level agreement violation comprises the steps of:

i. computing a response time for the data packets sent by the servers; and

ii. comparing the computed response time with the response time agreed upon in the service level agreement for the data packets.

10. The method as recited in claim 9 wherein the step of controlling the flow of the data packets of the predefined priority comprises the step of reducing the window size of the servers.

11. The method as recited in claim 9 wherein the step of controlling the flow of the data packets of the predefined priority comprises the step of delaying acknowledgement packets for the data packets sent by the servers, the acknowledgement packets being sent by the clients.

12. A method of regulating flow of one or more data packets in a computer network, the computer network comprising at least one client and at least one server, each of the clients establishing one or more session(s) with the servers to access one or more applications from the servers, the servers providing access to the applications by exchanging the data packets with the clients, the servers being hosted by an application service provider, the application service provider offering one or more service level agreements to the clients, the method comprising the steps of:

a. prioritizing the data packets, the prioritization being done on the basis of the service level agreements;

b. determining whether a service level agreement violation has taken place wherein the determination of the service level agreement violation comprises:

i. computing a response time for the data packets sent by the servers; and

ii. comparing the computed response time with the response time agreed upon in the service level agreement for the data packets;

c. if the service level agreement violation has taken place and the time elapsed after the service level agreement violation has taken place is less than a predefined limit, then controlling the flow of the data packets of a predefined priority wherein controlling the flow of the data packets comprises, at least one of:

i. reducing the window size of the servers; and

ii. delaying acknowledgement packets for the data packets sent by the servers, the acknowledgement packets being sent by the clients; and

d. resetting a current session when the number of service level agreement violations exceeds a first predefined limit and the number of ongoing sessions exceeds a second predefined limit.

Assignments (2)
MERGER Recorded Mar 8, 2011
From: IPOLICY NETWORKS PRIVATE LTD.
To: TECH MAHINDRA LIMITED
Reel/Frame 025916/0935 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 4, 2011
From: IPOLICY NETWORKS, INC.
To: IPOLICY NETWORKS PRIVATE LTD.
Reel/Frame 025901/0752 →