Accelerated packet processing in a network acceleration device
First Claim
1. A method comprising:
- receiving, with an intermediate network device, a packet from a client device of a first network that requests content from a remote network device of a second network, wherein the intermediate network device is positioned between the client device and the remote network device;
identifying, with a classifier module of the intermediate network device, an application protocol with which the packet conforms;
determining, based on the identified application protocol, a portion of a payload of the packet that is necessary to inspect in order to determine whether the packet represents a request for content currently cached by the intermediate network device;
inspecting, with a classifier module of the intermediate network device, only the determined portion of the payload of the packet prior to queuing the packet for subsequent full processing by the intermediate network device without inspecting a remaining portion of the payload;
issuing, with the classifier module, a request to begin retrieving and loading the requested content from a mass storage device within the intermediate network device to a memory within the intermediate network device based on the determination;
queuing, with the classifier module, the packet within a queue of the intermediate network device; and
after queuing the packet, processing the packet with a packet processing module of the intermediate network device to assemble a response that includes the content from the memory.
1 Assignment
0 Petitions
Accused Products
Abstract
In general, techniques are described for reducing response times to retrieve content in an intermediate network device. In particular, the intermediate network device receives a packet from a client device of a first network that requests content from a remote network device of a second network, inspects the packet to determine whether the requested content has been previously cached to either of a first and a second memory of the device, issues a request to load the requested content from the second memory to the first memory based on the determination and queues the packet within in the queue. After queuing the packet, the intermediate network device then processes the packet to assemble a response that includes the content from the memory.
-
Citations
49 Claims
-
1. A method comprising:
-
receiving, with an intermediate network device, a packet from a client device of a first network that requests content from a remote network device of a second network, wherein the intermediate network device is positioned between the client device and the remote network device; identifying, with a classifier module of the intermediate network device, an application protocol with which the packet conforms; determining, based on the identified application protocol, a portion of a payload of the packet that is necessary to inspect in order to determine whether the packet represents a request for content currently cached by the intermediate network device; inspecting, with a classifier module of the intermediate network device, only the determined portion of the payload of the packet prior to queuing the packet for subsequent full processing by the intermediate network device without inspecting a remaining portion of the payload; issuing, with the classifier module, a request to begin retrieving and loading the requested content from a mass storage device within the intermediate network device to a memory within the intermediate network device based on the determination; queuing, with the classifier module, the packet within a queue of the intermediate network device; and after queuing the packet, processing the packet with a packet processing module of the intermediate network device to assemble a response that includes the content from the memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. An intermediate network device positioned between a client device of a first network and a remote network device of a second network, the intermediate device comprising:
-
a memory for caching a first plurality of cached data objects; a mass storage device for caching a second plurality of cached data objects; a queue; a classifier module that receives a packet from the client device of the first network that requests content from the remote network device of the second network, identifies an application protocol with which the packet conforms, determines, based on the identified application protocol, a portion of a payload of the packet that is necessary to inspect in order to determine whether the packet represents a request for content currently cached by the intermediate network device, inspects only the determined portion of the payload of the packet prior to queuing the packet for subsequent full processing by the intermediate network device without inspecting a remaining portion of the payload to determine whether the requested content is cached to either the memory or the mass storage device, issues a request to begin retrieving and loading the requested content from the mass storage device within the intermediate network device to the memory based on the determination, and queues the packet within the queue; and a packet processing module that, after queuing the packet, processes the packet to assemble a response that includes the content from the memory. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. A network system comprising:
-
a first network that includes an intermediate network device and at least one client device; and a second network located remote from the first network and includes a remote network device, wherein the intermediate network device is positioned between the client device and the remote network device and comprises; a memory for caching a first plurality of cached data objects; a mass storage device for caching a second plurality of cached data objects; a queue; a classifier module that receives a packet from the client device of the first network that requests content from the remote network device of the second network, identifies an application protocol with which the packet conforms, determines, based on the identified application protocol, a portion of a payload of the packet that is necessary to inspect in order to determine whether the packet represents a request for content currently cached by the intermediate device, inspects only the determined portion of the payload of the packet prior to queuing the packet for subsequent full processing by the intermediate network device without inspecting a remaining portion of the payload to determine whether the requested content is cached to either the memory or the mass storage device, issues a request to begin retrieving and loading the requested content from the mass storage device within the intermediate network device to the memory based on the determination, and queues the packet within the queue; and a packet processing module that, after queuing the packet, processes the packet to assemble a response that includes the content from the memory. - View Dependent Claims (24, 25, 26, 27, 28, 29)
-
-
30. A non-transitory computer-readable storage medium comprising instructions for causing a programmable processor to:
-
receive, with an intermediate network device, a packet from a client device of a first network that requests content from a remote network device of a second network, wherein the intermediate network device is positioned between the client device and the remote network device; identify, with a classifier module of the intermediate network device, an application protocol with which the packet conforms; determine, based on the identified application protocol, a portion of a payload of the packet that is necessary to inspect in order to determine whether the packet represents a request for content currently cached by the intermediate network device; inspect, with the classifier module, only the determined portion of the payload of the packet prior to queuing the packet for subsequent full processing by the intermediate network device without inspecting a remaining portion of the payload; issue, with the classifier module, a request to begin retrieving and loading the requested content from a mass storage device within the intermediate network device to a memory within the intermediate network device based on the determination; queue, with the classifier module, the packet within a queue of the intermediate network device; and after queuing the packet, process the packet with a packet processing module of the intermediate network device to assemble a response that includes the content from the memory. - View Dependent Claims (31, 32, 33)
-
-
34. A method comprising:
-
receiving, with an intermediate network device, a packet from a client device of a first network that requests content from a remote network device of a second network, wherein the intermediate network device is positioned between the client device and the remote network device; inspecting, with a classifier module of the intermediate network device, the packet to determine whether the requested content is cached by the intermediate network device, wherein inspecting the packet comprises parsing, with the classifier module, a five-tuple from the packet that identifies a flow to which the packet corresponds, accessing, with the classifier module, a flow table stored within the intermediate network device based on the five-tuple to determine an application identifier (ID) associated with the flow to which the packet corresponds, parsing, with the classifier module, an identifier from the packet that uniquely identifies the requested content, and accessing an application table stored within the intermediate network device based on the identifier and application ID to determine whether the requested content has been previously cached to either of the memory and the mass storage device of the intermediate network device; issuing, with the classifier module, a request to begin retrieving and loading the requested content from a mass storage device within the intermediate network device to a memory within the intermediate network device based on the determination; queuing, with the classifier module, the packet within a queue of the intermediate network device; and after queuing the packet, processing the packet with a packet processing module of the intermediate network device to assemble a response that includes the content from the memory.
-
-
35. A method comprising:
-
receiving, with an intermediate network device, a packet from a client device of a first network that requests content from a remote network device of a second network, wherein the intermediate network device is positioned between the client device and the remote network device; inspecting, with a classifier module of the intermediate network device, the packet to determine whether the requested content is cached by the intermediate network device; issuing, with the classifier module, a request to begin retrieving and loading the requested content from a mass storage device within the intermediate network device to a memory within the intermediate network device based on the determination; queuing, with the classifier module, the packet and a tag that includes an application identifier (ID) identifying an application to which the packet belongs within a queue of the intermediate network device; and after queuing the packet, processing the packet with a packet processing module of the intermediate network device to assemble a response that includes the content from the memory, wherein processing the packet includes retrieving, with the packet processing module, the packet and the tag from the queue, and accessing, with the packet processing module, an application table stored within the intermediate network device based on the application ID included within the tag to determine whether the requested content has been previously cached to either of the mass storage device and the memory, wherein processing the packet also includes issuing, with the packet processing module, another request to a memory management module of the intermediate network device that causes the memory management module to retrieve one or more cached data objects corresponding to the requested content from the memory based on the determination made by the packet processing module, and receiving, with the packet processing module, the one or more cached data objects corresponding to the requested content from the memory management module in response to the other request, and wherein processing the packet further includes generating the response that includes the one or more cached data objects corresponding to the requested content received from the memory management module and forwarding the response to the client device that requested the content.
-
-
36. A method comprising:
-
receiving, with an intermediate network device, a packet from a client device of a first network that requests content from a remote network device of a second network, wherein the intermediate network device is positioned between the client device and the remote network device; inspecting, with a classifier module of the intermediate network device, the packet to determine whether the requested content is cached by the intermediate network device; issuing, with the classifier module, a request to begin retrieving and loading the requested content from a mass storage device within the intermediate network device to a memory within the intermediate network device based on the determination; queuing, with the classifier module, the packet within a queue of the intermediate network device; and after queuing the packet, processing the packet with a packet processing module of the intermediate network device to assemble a response that includes the content from the memory, wherein processing the packet further comprises; issuing, with the packet processing module, another request to a memory management module requesting the requested content from the memory; receiving, in response to the other request, an indication that the memory management module has not yet retrieved one or more cached data objects corresponding to the requested content from the mass storage device and loaded the one or more cached data objects into the memory; determining, with the packet processing module, a level of congestion of an intermediate network between the first and second network over which network traffic between the first and second network travels in response to the indication that the content has not yet been retrieved; and forwarding, with the packet processing module, the packet to the remote network device based on the level of congestion of the intermediate network. - View Dependent Claims (37, 38)
-
-
39. An intermediate network device positioned between a client device of a first network and a remote network device of a second network, the intermediate device comprising:
-
a memory for caching a first plurality of cached data objects; a mass storage device for caching a second plurality of cached data objects; a queue; a classifier module that receives a packet from the client device of the first network that requests content from the remote network device of the second network, parses a five-tuple from the packet that identifies a flow to which the packet corresponds, accesses a flow table stored within the intermediate network device based on the five-tuple to determine an application identifier (ID) associated with the flow to which the packet corresponds, parses an identifier from the packet that uniquely identifies the requested content, and accesses an application table stored within the intermediate network device based on the identifier and application ID to determine whether the requested content has been previously cached to either of the memory and the mass storage device of the intermediate network device, issues a request to begin retrieving and loading the requested content from the mass storage device within the intermediate network device to the memory based on the determination, and queues the packet within the queue; and a packet processing module that, after queuing the packet, processes the packet to assemble a response that includes the content from the memory.
-
-
40. An intermediate network device positioned between a client device of a first network and a remote network device of a second network, the intermediate device comprising:
-
a memory for caching a first plurality of cached data objects; a mass storage device for caching a second plurality of cached data objects; a queue; a classifier module that receives a packet from the client device of the first network that requests content from the remote network device of the second network, inspects the packet to determine whether the requested content is cached to either the memory or the mass storage device, issues a request to begin retrieving and loading the requested content from the mass storage device within the intermediate network device to the memory based on the determination, and queues the packet within the queue; a packet processing module that, after queuing the packet, processes the packet to assemble a response that includes the content from the memory; and a memory management module that manages the first and second plurality of cached data objects, wherein the packet processing module further retrieves the packet and the tag from the queue, accesses an application table stored within the intermediate network device based on the application ID included within the tag to determine whether the requested content has been previously cached to either of the first and the second memories, issues another request to the memory management module of the intermediate network device that causes the memory management module to retrieve one or more of the first plurality of data objects corresponding to the requested content from the memory based on the determination made by the packet processing module, receives the one or more of the first plurality of cached data objects corresponding to the requested content from the memory management module in response to the other request, generates the response that includes the one or more of the first plurality of cached data objects corresponding to the requested content received from the memory management module, and forwards the response to the client device that requested the content.
-
-
41. An intermediate network device positioned between a client device of a first network and a remote network device of a second network, the intermediate device comprising:
-
a memory for caching a first plurality of cached data objects; a mass storage device for caching a second plurality of cached data objects; a queue; a classifier module that receives a packet from the client device of the first network that requests content from the remote network device of the second network, inspects the packet to determine whether the requested content is cached to either the memory or the mass storage device, issues a request to begin retrieving and loading the requested content from the mass storage device within the intermediate network device to the memory based on the determination, and queues the packet within the queue; a packet processing module that, after queuing the packet, processes the packet to assemble a response that includes the content from the memory; and a memory management module that manages the first and second plurality of cached data objects, wherein the packet processing module further issues another request to the memory management module requesting the requested content from the memory, receives, in response to the other request, an indication that the memory management module has not yet retrieved one or more of the second plurality of cached data objects corresponding to the requested content from the mass storage device and loaded the one or more of the second plurality of cached data objects into the memory as one or more of the first plurality of cached data objects, determines a level of congestion of an intermediate network between the first and second network over which network traffic between the first and second network travels in response to the indication that the content has not yet been retrieved, and forwards the packet to the remote network device based on the level of congestion of the intermediate network. - View Dependent Claims (42, 43)
-
-
44. A network system comprising:
-
a first network that includes an intermediate network device and at least one client device; and a second network located remote from the first network and includes a remote network device, wherein the intermediate network device is positioned between the client device and the remote network device and comprises; a memory for caching a first plurality of cached data objects; a mass storage device for caching a second plurality of cached data objects; a queue; a classifier module that receives a packet from the client device of the first network that requests content from the remote network device of the second network, inspects the packet to determine whether the requested content is cached to either the memory or the mass storage device, issues a request to begin retrieving and loading the requested content from the mass storage device within the intermediate network device to the memory based on the determination, and queues the packet within the queue; a packet processing module that, after queuing the packet, processes the packet to assemble a response that includes the content from the memory; and a memory management module that manages the first and second plurality of cached data objects, wherein the packet processing module further issues another request to the memory management module requesting the requested content from the memory, receives, in response to the other request, an indication that the memory management module has not yet retrieved one or more of the second plurality of cached data objects corresponding to the requested content from the mass storage device and loaded the one or more of the second plurality of cached data objects into the memory as one or more of the first plurality of cached data objects, determines a level of congestion of an intermediate network between the first and second network over which network traffic between the first and second network travels in response to the indication that the content has not yet been retrieved, and forwards the packet to the remote network device based on the level of congestion of the intermediate network. - View Dependent Claims (45, 46)
-
-
47. A non-transitory computer-readable storage medium comprising instructions for causing a programmable processor to:
-
receive, with an intermediate network device, a packet from a client device of a first network that requests content from a remote network device of a second network, wherein the intermediate network device is positioned between the client device and the remote network device; inspect, with a classifier module of the intermediate network device, the packet to determine whether the requested content is cached by the intermediate network device; issue, with the classifier module, a request to begin retrieving and loading the requested content from a mass storage device within the intermediate network device to a memory within the intermediate network device based on the determination; queue, with the classifier module, the packet within a queue of the intermediate network device; and after queuing the packet, process the packet with a packet processing module of the intermediate network device to assemble a response that includes the content from the memory, wherein the instructions that cause the processor to process the packet include instructions that cause the processor to; issue, with a packet processing module of the intermediate network device, another request to a memory management module requesting the requested content from the memory; receive, in response to the other request, an indication that the memory management module has not yet retrieved one or more cached data objects corresponding to the requested content from the mass storage device and loaded the one or more cached data objects into the memory; determine, with the packet processing module, a level of congestion of an intermediate network between the first and second network over which network traffic between the first and second network travels in response to the indication that the content has not yet been retrieved; and forward, with the packet processing module, the packet to the remote network device based on the level of congestion of the intermediate network. - View Dependent Claims (48, 49)
-
Specification