# US 9,521,088 B2 · Dynamically determining how many network packets to process

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,521,088 B2
- Document ID: US9521088B2
- Status: Granted
- Kind: B2
- Application number: 13/891,089
- Filed: 2013-05-09
- Published: 2013-11-14
- Granted: 2016-12-13
- Earliest claimed: 2012-05-09
- Assignees: Citrix Systems, Inc.
- Applicants: Citrix Systems, Inc.
- Inventors: Mohit Saxena; Ramanjaneyulu Y Talla; Saravana Annamalaisami
- Web page: https://patentgrep.com/patent/US9521088B2

## CPC

- H04L 47/10: Flow control; Congestion control
- H04L 47/762: triggered by the network
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A packet quota value, which indicates a maximum number of network packets that a network appliance processes before switching to a different task, is modified. Log data, which includes multiple log entries spanning a time interval, is accessed. Each log entry includes a processing time that indicates how much time the network appliance spent performing network traffic tasks before switching to the different task. The log data is analyzed. Responsive to the analysis indicating that a current state of network traffic is heavier than a maximum state of network traffic that was observed during the time interval, the packet quota value is increased. Responsive to the analysis indicating that the current state of network traffic is lighter than a minimum state of network traffic that was observed during the time interval, the packet quota value is decreased.

## Claims

### Claim 1

A method for modifying a packet quota value that indicates a maximum number of network packets that a network appliance performs network traffic tasks on to process and forward the network packets before switching to a different task, comprising:
accessing log data that includes multiple log entries spanning a time interval, each log entry including a processing time that indicates how much time the network appliance spent performing the network traffic tasks before switching to the different task, where the different task is a housekeeping task or an offloaded task;
analyzing the log data;
responsive to the analysis indicating that a current state of network traffic is heavier than a maximum state of network traffic that was observed during the time interval, increasing the packet quota value to increase the maximum number of network packets on which the network appliance performs the network traffic tasks before switching to the different task; and
responsive to the analysis indicating that the current state of network traffic is lighter than a minimum state of network traffic that was observed during the time interval, decreasing the packet quota value to decrease the maximum number of network packets on which the network appliance performs the network traffic tasks before switching to the different task.

### Claim 2 (depends on 1)

The method of claim 1, wherein analyzing the log data comprises determining the current state of network traffic.

### Claim 3 (depends on 2)

The method of claim 2, wherein determining the current state of network traffic comprises:
identifying a most-recent log entry; and
determining that the processing time of the identified log entry represents the current state of network traffic.

### Claim 4 (depends on 2)

The method of claim 2, wherein analyzing the log data further comprises determining the maximum state of network traffic that was observed during the time interval.

### Claim 5 (depends on 4)

The method of claim 4, wherein determining the maximum state of network traffic that was observed during the time interval comprises:
identifying a log entry, other than a most-recent log entry, with a largest processing time; and
determining that the processing time of the identified log entry represents the maximum state of network traffic that was observed during the time interval.

### Claim 6 (depends on 4)

The method of claim 4, wherein analyzing the log data further comprises comparing the current state of network traffic to the maximum state of network traffic that was observed during the time interval.

### Claim 7 (depends on 2)

The method of claim 2, wherein analyzing the log data further comprises determining the minimum state of network traffic that was observed during the time interval.

### Claim 8 (depends on 7)

The method of claim 7, wherein determining the minimum state of network traffic that was observed during the time interval comprises:
identifying a log entry, other than a most-recent log entry, with a smallest processing time; and
determining that the processing time of the identified log entry represents the minimum state of network traffic that was observed during the time interval.

### Claim 9 (depends on 7)

The method of claim 7, wherein analyzing the log data further comprises comparing the current state of network traffic to the minimum state of network traffic that was observed during the time interval.

### Claim 10 (depends on 1)

The method of claim 1, wherein increasing the packet quota value comprises doubling the packet quota value.

### Claim 11 (depends on 1)

The method of claim 1, wherein decreasing the packet quota value comprises halving the packet quota value.

### Claim 12 (depends on 1)

The method of claim 1, wherein the packet quota value cannot be increased above a maximum value.

### Claim 13 (depends on 1)

The method of claim 1, wherein the packet quota value cannot be decreased below a minimum value.

### Claim 14 (depends on 1)

The method of claim 1, wherein each log entry further includes a timestamp that indicates a particular time interval during which the network appliance performed network traffic tasks before switching to the different task.

### Claim 15 (depends on 14)

The method of claim 14, wherein the timestamp indicates a start of the particular time interval or an end of the particular time interval.

### Claim 16 (depends on 1)

The method of claim 1, wherein an offloaded task is a task offloaded from another server to the network appliance and selected from one of a compression task, inter-process communication task, remote procedure call task, and encryption task.

### Claim 17 (depends on 1)

The method of claim 1, wherein a housekeeping task is selected from one of a timer processing task and statistics collection task performed by the network appliance.

### Claim 18

A non-transitory computer-readable storage medium storing executable computer program instructions for modifying a packet quota value that indicates a maximum number of network packets that a network appliance performs network traffic tasks on to process and forward the network packets before switching to a different task, the instructions performing steps comprising:
accessing log data that includes multiple log entries spanning a time interval, each log entry including a processing time that indicates how much time the network appliance spent performing the network traffic tasks before switching to the different task, where the different task is a housekeeping task or an offloaded task;
analyzing the log data;
responsive to the analysis indicating that a current state of network traffic is heavier than a maximum state of network traffic that was observed during the time interval, increasing the packet quota value to increase the maximum number of network packets on which the network appliance performs the network traffic tasks before switching to the different task; and
responsive to the analysis indicating that the current state of network traffic is lighter than a minimum state of network traffic that was observed during the time interval, decreasing the packet quota value to decrease the maximum number of network packets on which the network appliance performs the network traffic tasks before switching to the different task.

### Claim 19 (depends on 18)

The computer-readable storage medium of claim 18, wherein analyzing the log data comprises determining the current state of network traffic.

### Claim 20 (depends on 19)

The computer-readable storage medium of claim 19, wherein determining the current state of network traffic comprises:
identifying a most-recent log entry; and
determining that the processing time of the identified log entry represents the current state of network traffic.

### Claim 21 (depends on 18)

The non-transitory computer-readable storage medium of claim 18, wherein an offloaded task is a task offloaded from another server to the network appliance and selected from one of a compression task, inter-process communication task, remote procedure call task, and encryption task, and wherein a housekeeping task is selected from one of a timer processing task and statistics collection task performed by the network appliance.

### Claim 22

A system for modifying a packet quota value that indicates a maximum number of network packets that a network appliance performs network traffic tasks on to process and forward the network packets before switching to a different task, the system comprising:
at least one non-transitory computer-readable storage medium storing executable computer program instructions comprising instructions for:
accessing log data that includes multiple log entries spanning a time interval, each log entry including a processing time that indicates how much time the network appliance spent performing the network traffic tasks before switching to the different task, where the different task is a housekeeping task or an offloaded task;
analyzing the log data;
responsive to the analysis indicating that a current state of network traffic is heavier than a maximum state of network traffic that was observed during the time interval, increasing the packet quota value to increase the maximum number of network packets on which the network appliance performs the network traffic tasks before switching to the different task; and
responsive to the analysis indicating that the current state of network traffic is lighter than a minimum state of network traffic that was observed during the time interval, decreasing the packet quota value to decrease the maximum number of network packets on which the network appliance performs the network traffic tasks before switching to the different task;
and a processor for executing the computer program instructions.

### Claim 23 (depends on 22)

The system of claim 22, wherein an offload task is a task offloaded from another communication task, remote procedure call task, and encryption task, and wherein a housekeeping task is selected from one of a timer processing task and statistics collection task performed by the network appliance.
