# US 2014/0195645 A1 · Proxy application with dynamic filter updating

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

- Number: US 2014/0195645 A1
- Document ID: US20140195645A1
- Status: Published application
- Kind: A1
- Application number: 13/734,864
- Filed: 2013-01-04
- Published: 2014-07-10
- Earliest claimed: 2013-01-04
- Assignees: Netflix, Inc.
- Applicants: Netflix, Inc.
- Inventors: Michael Cohen; Benjamin Schmaus; Matthew Hawthorne; Benjamin Christensen; Daniel Jacobson
- Web page: https://patentgrep.com/patent/US20140195645A1

## CPC

- H04L 67/566: Grouping or aggregating service requests, e.g. for unified processing
- G06F 9/45516: {Runtime code conversion or optimisation}
- H04L 41/082: the condition being updates or upgrades of network functionality
- H04L 47/80: Actions related to the user profile or the type of traffic
- H04L 67/56: Provisioning of proxy services (store-and-forward switching systems in data switching networks H04L12/54)
- H04L 67/562: Brokering proxy services
- H04L 67/60: Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources (admission control or resource allocation H04L47/70)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The disclosure describes a proxy server application that supports the dynamic modification of proxy rules implemented by a proxy server. The proxy rules implemented by the proxy server specify network behaviors to be performed at various points during the handling of requests from client applications. A proxy server implements the proxy rules by processing one or more user-generated network traffic filters for managing network traffic. In an embodiment, users generate network traffic filters by creating network traffic filter source code that specify processing steps to be performed by a proxy server relative to network messages the proxy server receives. In an embodiment, user-generated network traffic filters may be added, removed, reordered, or otherwise modified in a proxy server application at runtime in order to respond to current network conditions or to achieve other desired proxy configurations.

## Claims

### Claim 1

A method comprising:
in a proxy server that is configured to receive requests directed toward one or more origin servers and to distribute the requests to one or more of the origin servers for processing, loading, from a data repository, one or more first network traffic filters, wherein each of the one or more first network traffic filters comprises an executable unit of computer program code specifying processing criteria and one or more actions;
while the proxy server is executing and without ending execution of the proxy server, performing one or more of: loading and initiating operation of one or more second network traffic filters; removing one or more of the first network traffic filters; reordering one or more of the first network traffic filters;
receiving, at the proxy server, a network message;
for a particular network traffic filter of the one or more first network traffic filters, wherein the particular network traffic filter comprises particular processing criteria and one or more particular actions:
determining whether the network message satisfies the particular processing criteria;
in response to determining that the network message satisfies the particular processing criteria, causing the one or more particular actions to be performed;
wherein the method is performed on one or more computing devices.

### Claim 2 (depends on 1)

The method of claim 1, wherein the one or more first network traffic filters comprise one or more of:
a first network traffic filter chain comprising one or more pre-processing network traffic filters that are configured to process the requests before the requests are distributed to the one or more of the origin servers;
a second network traffic filter chain comprising one or more dispatch network traffic filters that are configured to distribute the requests to the one or more of the origin servers; and
a third network traffic filter chain comprising one or more post-processing network traffic filters that are configured to process responses returned by the one or more of the origin servers before the response is sent to a requesting client.

### Claim 3 (depends on 2)

The method of claim 2, wherein the one or more first network traffic filters further comprise one or more of:
a fourth network traffic filter chain comprising one or more static network traffic filters that are configured to process requests and return response messages without distributing the requests to the one or more of the origin servers; and
a fifth network traffic filter chain comprising one or more error network traffic filters that are configured to process errors generated by one or more other network traffic filters.

### Claim 4 (depends on 1)

The method of claim 1, wherein the one or more particular actions include one or more of: validating the network message, authenticating the network message, modifying the network message, caching the network message, storing information associated with the network message, sending the network message to one or more second network elements, causing the sending or delivery of the network message to be delayed, modifying application behavior, replying to the network message.

### Claim 5 (depends on 1)

The method of claim 1, wherein the determining whether the network message satisfies the particular processing criteria includes examining one or more of: a header associated with the network message, a message body associated with the network message, contextual data generated by one or more of the first network traffic filters and second network traffic filters.

### Claim 6 (depends on 1)

The method of claim 1, wherein the determining whether the network message satisfies the particular specified criteria includes determining one or more of: a type of device that generated the network message, a network address associated with the network message, a geographic location associated with a client generating the network message, a user associated with the network message, a resource requested by the network message.

### Claim 7 (depends on 1)

The method of claim 1, wherein determining whether the network message satisfies the particular specified criteria is based at least in part on one or more of: random sampling, algorithmic sampling.

### Claim 8 (depends on 1)

The method of claim 1, wherein the proxy server loading one or more first network traffic filters further comprises:
the proxy server receiving one or more execution order values, wherein each execution order value determines an order to evaluate a particular network traffic filter relative to the other first network traffic filters;
the proxy server ordering the first network traffic filters according to the received execution order values.

### Claim 9 (depends on 1)

The method of claim 1, wherein the proxy server loading, from the data repository, one or more first network traffic filters further comprises loading one or more network traffic filter source code files.

### Claim 10 (depends on 9)

The method of claim 9, wherein each of the one or more network traffic filter source code files specifies one or more of: a filter type, an execution order value, processing criteria, and one or more processing actions.

### Claim 11

A non-transitory computer-readable data storage medium storing one or more sequences of instructions which when executed cause one or more processors to perform, in a proxy server that is configured to receive requests directed toward one or more origin servers and to distribute the requests to one or more of the origin servers for processing:
loading, from a data repository, one or more first network traffic filters, wherein each of the one or more first network traffic filters comprises an executable unit of computer program code specifying processing criteria and one or more actions;
while the proxy server is executing and without ending execution of the proxy server, performing one or more of: loading and initiating operation of one or more second network traffic filters; removing one or more of the first network traffic filters; reordering one or more of the first network traffic filters;
receiving, at the proxy server, a network message;
for a particular network traffic filter of the one or more first network traffic filters, wherein the particular network traffic filter comprises particular processing criteria and one or more particular actions:
determining whether the network message satisfies the particular processing criteria;
in response to determining that the network message satisfies the particular processing criteria, causing the one or more particular actions to be performed.

### Claim 12 (depends on 11)

The non-transitory computer-readable data storage medium of claim 11, wherein the one or more first network traffic filters comprise one or more of:
a first network traffic filter chain comprising one or more pre-processing network traffic filters that are configured to process the requests before the requests are distributed to the one or more of the origin servers;
a second network traffic filter chain comprising one or more dispatch network traffic filters that are configured to distribute the requests to the one or more of the origin servers; and
a third network traffic filter chain comprising one or more post-processing network traffic filters that are configured to process responses returned by the one or more of the origin servers before the response is sent to the requesting client.

### Claim 13 (depends on 12)

The non-transitory computer-readable data storage medium of claim 12, wherein the one or more first network traffic filters further comprise one or more of:
a fourth network traffic filter chain comprising one or more static network traffic filters that are configured to process requests and return response messages without distributing the requests to the one or more of the origin servers; and
a fifth network traffic filter chain comprising one or more error network traffic filters that are configured to process errors generated by one or more other network traffic filters.

### Claim 14 (depends on 11)

The non-transitory computer-readable data storage medium of claim 11, wherein the one or more particular actions include one or more of: validating the network message, authenticating the network message, modifying the network message, caching the network message, storing information associated with the network message, sending the network message to one or more second network elements, causing the sending or delivery of the network message to be delayed.

### Claim 15 (depends on 11)

The non-transitory computer-readable data storage medium of claim 11, wherein the determining whether the network message satisfies the particular processing criteria includes examining one or more of: a header associated with the network message, a message body associated with the network message, contextual data generated by one or more of the first network traffic filters and second network traffic filters.

### Claim 16 (depends on 11)

The non-transitory computer-readable data storage medium of claim 11, wherein the determining whether the network message satisfies the particular specified criteria includes determining one or more of: a type of device that generated the network message, a network address associated with the network message, a resource requested by the network message, a geographic location associated with a client generating the network message, a user associated with the network message.

### Claim 17 (depends on 11)

The non-transitory computer-readable data storage medium of claim 11, wherein determining whether the network message satisfies the particular specified criteria is based at least in part on one or more of: random sampling, algorithmic sampling.

### Claim 18 (depends on 11)

The non-transitory computer-readable data storage medium of claim 11, further comprising instructions which, when executed by the one or more processors, cause the one or more processors to perform:
the proxy server receiving one or more execution order values, wherein each execution order value determines an order to evaluate a particular network traffic filter relative to the other first network traffic filters;
the proxy server ordering the first network traffic filters according to the received execution order values.

### Claim 19 (depends on 18)

The non-transitory computer-readable data storage medium of claim 18, wherein the proxy server loading, from the data repository, one or more first network traffic filters further comprises loading one or more network traffic filter source code files.

### Claim 20 (depends on 18)

The non-transitory computer-readable data storage medium of claim 18, wherein each of the one or more network traffic filter source code files specifies one or more of: a filter type, an execution order value, processing criteria, and one or more processing actions.
