Application cache acceleration using device content caching

By storing content data in the content cache of the server device and computing device, and quickly transmitting it to the requesting device using hardware and software processors, the network burden problem caused by simultaneous requests of popular content is solved, and the efficiency and speed of the content distribution network are improved.

CN120435855APending Publication Date: 2025-08-05LILAC CLOUD INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380088083.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-11-17
Filing Date
2023-11-03
Publication Date
2025-08-05

AI Technical Summary

Technical Problem

In content distribution networks, simultaneous requests of popular content lead to a large amount of data being transmitted from the source to the edge cluster server through the network and further transmitted to the requesting device, causing network burden and inefficiency.

Method used

By storing content data in the content cache of the server device and the computing device, the hardware processor and software processor of the computing device determine the location of the content data and quickly transmit it to the requesting device, network transmission is reduced.

Benefits of technology

It improves the efficiency and speed of content data transmission, reduces network burden, and optimizes the performance of content distribution network.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN120435855A_ABST
    Figure CN120435855A_ABST
Patent Text Reader

Abstract

In an embodiment, content data transfer in a content delivery network (CDN) to a requesting device may be handled by a server device using a content cache of a computing device associated with the server device. The computing device may be a component of the server device, local to the server device, and / or directly connected to the server device. The server device receives a request to transmit the content data, determines that a location of the content data is in the content cache, and in response to this determination, sends an instruction to the computing device to provide the content data to the requesting device. In one embodiment, before or in response to receiving the request to deliver the content data, the server device may retrieve the content data and provide the content data to the computing device for storage in the content cache.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This international (PCT) application is a continuation-in-part of U.S. patent application No. 18 / 056,363, filed on November 17, 2022, which is hereby incorporated by reference in its entirety. Technical Field

[0003] The present disclosure relates generally to accelerating application cache usage, and more particularly to accelerating application cache usage using a device's content cache. Background Art

[0004] In a typical content delivery network (CDN), edge cluster servers are configured to receive requests for content from downstream devices, retrieve the content from one or more upstream origin devices or networks, and transmit the retrieved content via one or more downstream networks to each device that has requested the content.

[0005] In these CDNs, content retrieval and delivery to requesting devices are performed on a one-to-one basis. Therefore, for popular content that is simultaneously requested and consumed by multiple devices, a large amount of data needs to be transferred from the source through the network to the edge cluster server, and then further transferred through the network to each requesting device. Summary of the Invention BRIEF DESCRIPTION OF THE DRAWINGS

[0006] Figure 1 Illustrated is an example system for content distribution using content caching in accordance with one or more embodiments.

[0007] Figure 2 Illustrated is an example system for content distribution using content caching in accordance with one or more embodiments.

[0008] Figure 3 Illustrated is an example message flow between devices according to one or more embodiments.

[0009] Figure 4 Illustrated is an example message flow between devices according to one or more embodiments.

[0010] Figure 5 Illustrated is data exchange for retrieving content data from a content cache in an example system according to one or more embodiments.

[0011] Figure 6 is a flow chart of an example method for delivering content data to a requesting device in a CDN.

[0012] Figure 7is a flow chart of an example method for storing content data in a content cache.

[0013] Figure 8 is a flow chart of an example method for obtaining content data from a content cache.

[0014] Figure 9 Shows that it is achievable Figures 1 to 8 A block diagram of an example computing system that illustrates the features and processes of the system.

[0015] Reference symbols having the same numbers in the various drawings indicate similar elements. DETAILED DESCRIPTION

[0016] In the following description, for purposes of explanation, numerous specific details are set forth to provide a thorough understanding. One or more embodiments may be practiced without these specific details. Features described in one embodiment may be combined with features described in different embodiments. In some examples, well-known structures and devices are described with reference to block diagram form to avoid unnecessarily obscuring the present invention.

[0017] Details of the specific embodiments are provided with respect to the various figures and the description below. Those skilled in the art may be able to ascertain other enhancements, features, details and / or advantages of the specific embodiments after reading this description and viewing the drawings.

[0018] Furthermore, the specific embodiments described herein may be implemented in any computing system environment known in the art, which may include one or more processors and a computer-readable medium configured to store logic implemented by the one or more processors and / or executable by the one or more processors to cause the one or more processors to perform the operations specified by the logic.

[0019] The description presented herein conveys sufficient information to enable one of ordinary skill in the art to make and use the invention and provides the context and requirements for specific embodiments of the invention.

[0020] It should also be noted that various modifications to the disclosed embodiments will be readily apparent to those skilled in the art, and that the general principles defined herein may be applied to other embodiments and applications without departing from the spirit and scope of the invention. Therefore, the present invention is not intended to be limited to the embodiments shown and described herein, but should be accorded the widest scope consistent with the principles and features disclosed herein.

[0021] Furthermore, unless otherwise specifically defined herein, all terms should be given their broadest possible interpretations, including the meanings implied by the specification and as understood by one of ordinary skill in the art and / or as defined in dictionaries, treatises, etc.

[0022] In addition, the term "about" when used herein to modify a value indicates that the value is included and a range that is less than and greater than the value within a reasonable range. In the absence of any other indication, this reasonable range is plus or minus 10% of the value. For example, "about 10 milliseconds" indicates 10ms ± 1ms, so that the range includes all values within the range of up to and including 9ms and 11ms. In addition, the term "including" indicates an inclusive list of those components that are exactly described, but does not exclude any other elements. For example, "the list includes red and green" indicates that the list includes, but is not limited to, red and green. Therefore, the list may also include other colors that are not exactly described.

[0023] 1. General Overview

[0024] 2. System Architecture

[0025] 2.1 System with Embedded Content Cache for Content Data Delivery

[0026] 2.2 System using content cache for content data delivery

[0027] 3. Example Implementation

[0028] 3.1 Data Flow for Content Data Transmission Between Devices

[0029] 3.2 Data Exchange in the Example System

[0030] 3.3 Transmitting content data to the requesting device

[0031] 3.4 Storing content data in the content cache

[0032] 3.5 Obtaining content data from the content cache

[0033] 4. Miscellaneous; Extensions

[0034] 5. Hardware Overview

[0035] 1. General Overview

[0036] In one embodiment, the delivery of content data to a requesting device in a content delivery network (CDN) can be handled by a server device using a content cache of a computing device associated with the server device. The computing device can be a component of the server device, local to the server device, and / or directly connected to the server device. The server device receives a request to deliver the content data, determines the location of the content data in the content cache, and, in response to this determination, sends an instruction to the computing device to provide the content data to the requesting device.

[0037] In one embodiment, prior to or in response to receiving the request to transfer the content data, the server device may retrieve the content data and provide the content data to the computing device for storage in the content cache.

[0038] In one or more embodiments, before indicating and sending the content data to be stored in the content cache, the server device may determine whether the content data should be stored in the content cache. This determination may be based on a number of factors related to how the content data is utilized within the CDN, such as demand, popularity, frequency of use, size, age, etc.

[0039] In one or more embodiments, a hardware processor receives the request to transmit the content data from the requesting device. The hardware processor can be a component of a network interface card (NIC) associated with the server device. The NIC can be a component of the server device or be in electrical communication with the server device. In response to this request, the hardware processor transmits a first message to a software processor of the server device requesting the location of the content data. The software processor can be a central processing unit (CPU), a graphics processing unit (GPU), or some other type of integrated circuit (IC) configured to execute a software program. The software processor determines the location of the content data. When the content data is located in the content cache, the software processor transmits a second message to the hardware processor, the second message indicating that the content data is stored in the content cache. As a result, the hardware processor retrieves the content data from the content cache and transmits the content data to the requesting device.

[0040] The description may include embodiments beyond those described in this general overview, and the claims may recite such embodiments.

[0041] 2. System Architecture

[0042] 2.1 System with Embedded Content Cache for Content Data Delivery

[0043] Figure 1An example system 100 is illustrated for content data delivery using an embedded content cache 104 in a computing device 102. The system 100 includes a server device 106 electrically coupled to the computing device 102, with the computing device 102 being associated with the server device 106. In one or more embodiments, the server device 106 includes a hardware processor 108 and is configured to provide content to at least one of the requesting devices 110. In some embodiments, the server device 106 also includes a memory device for storing instructions and / or content and / or a software processor for executing software programs.

[0044] The server device 106 can be coupled to one or more content sources 114. The sources 114 may include any device, network, and / or memory accessible to the server device 106, from which content can be retrieved and / or requested for delivery to the requesting device 110. Some example source(s) 114 include, but are not limited to, the Internet, a streaming service, a content server, a cache and / or memory of the server device 106, and the like. The server device 106 can connect to the sources 114 via a fabric relay (in one approach) and / or via one or more additional networks.

[0045] Computing device 102 may include any hardware device (including a hardware processor and memory), such as a NIC, a network interface controller, a network adapter, a physical network interface, etc. In system 100, according to one embodiment, computing device 102 includes a content cache 104 for storing content data provided by server device 106, with content cache 104 enabling fast retrieval of content data to satisfy requests from requesting device 110. Content cache 104 may include any type of memory, such as non-volatile random access memory (NVRAM), programmable read-only memory (PROM), erasable PROM (EPROM), flash EPROM, content addressable memory (CAM), ternary content addressable memory (TCAM), etc. In some embodiments, content cache 104 includes a very fast access memory type to enable content data transfer with minimal latency over network 112.

[0046] In one embodiment, the content cache 104 may be embedded in the computing device 102. In several non-limiting examples, the embedded content cache 104 may be a component within the computing device 102, may reside on a printed circuit board of the computing device 102, may be an electronic chip that is plugged into a socket on a printed circuit board of the computing device 102, and so forth.

[0047] The computing device 102 is electrically coupled to the network 112 to connect to the requesting device 110. In various embodiments, the requesting device 110 may also be electrically coupled to the network 112 and / or components within the network 112. The network 112 may include one or more network devices arranged at appropriate locations within the network 112 to route, transmit, switch, and process data within the network 112 and to / from devices outside the network 112. The network devices may be configured to operate the data plane and the control plane in various ways and to connect various devices within and / or outside the network 112. The network 112 may be a wired network, a wireless network, or a combination thereof. In one embodiment, the network 112 may be, for example, an edge network for wireless requesting devices.

[0048] For a wireless network, the network device may include one or more Gi local area network (LAN) devices, N6 LAN devices, packet data network gateway (P-GW) devices, serving gateway (S-GW) devices, evolved packet core (EPC) devices, mobile backhaul (MBH) devices, wireless routers, wireless switches, radio receiver devices, radio transmitter devices, etc.

[0049] For a wired network, the network devices may include one or more broadband network gateway (BNG) devices, residential gateway (RG) devices, customer premises equipment (CPE) devices, Ethernet devices, fiber optic devices, routers, switches, etc.

[0050] In one embodiment, requesting device 110 may be a set-top box installed at a consumer location (such as a home, restaurant, etc.), a subscriber premises device in an enterprise or business, or the like.

[0051] In one embodiment, server device 106 runs an application stack to process application layer requests from requesting devices 110 and executes all application policies and business logic for servicing such requests, including application layer protocols such as Hypertext Transfer Protocol (HTTP), Hypertext Transfer Protocol Secure (HTTPS), Web Real-Time Communication (WebRTC), etc. Server device 106 also runs a transport stack to communicate with each requesting device 110. For example, Transmission Control Protocol (TCP) / Internet Protocol (IP), User Datagram Protocol (UDP), QUIC, and / or other transport layer protocols. Because server device 106 manages the application stack and the transport stack, this functionality does not reside on computing device 102, thereby preserving the computing device's processing power and allowing computing device 102 to operate according to any application protocol (including, but not limited to, HTTP / 1.1, HTTP / 2, HTTP / 3, WebRTC, etc.).

[0052] In one approach, server device 106 may be proximate to and / or located near computing device 102, such as in the same enclosure, in the same room, in the same server rack, in the same cabinet, etc. In this approach, server device 106 may share resources (e.g., processor, memory, connections, etc.) with computing device 102. In another approach, computing device 102 (and content cache 104) may be a component of server device 106.

[0053] In another approach, the content cache 104 of the computing device 102 may be located physically remote from the server device 106 , such as in a different room, in a different building, in a different location, in a different city, in a different country, etc. However, even when remotely located, the content cache 104 may be managed by the server device 106 .

[0054] The server device 106 may also be configured to handle all management, processing, security, and policy decisions regarding the application layer on the network 112. Thus, application layer requests for content data will be transmitted to the server device 106 for processing, as other devices within the network 112 will generally not be able to understand and / or process application layer requests. In additional embodiments, other application layer related data may also be forwarded to the server device 106 for processing, rather than being handled by any other device in the network 112 or the computing device 102.

[0055] In one embodiment, content cache 104 can be viewed as a general-purpose cache for storing content therein, as directed by server device 106, thereby enabling the data stored in content cache 104 to be controlled by server device 106. In one embodiment, content cache 104 is configured to operate according to any application protocol, including but not limited to HTTP / 1.1, HTTP / 2, HTTP / 3, WebRTC, etc.

[0056] Server device 106 may control what data is stored in content cache 104 by sending instructions to computing device 102. Computing device 102 is configured to store content data (and possibly other data, such as metadata, non-content information, etc.) in content cache 104 upon receiving the content data, for example, from server device 106. Computing device 102 is also configured to retrieve content data from content cache 104 and transmit the retrieved content data to one or more requesting devices 110, such as in response to an application layer request for content data sent by requesting device 110 and processed by server device 106.

[0057] In one embodiment, computing device 102 may include a command-aware hardware architecture configured to generate and / or execute command bundles, including command bundles sent from server device 106. The command-aware hardware architecture may be implemented using a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), or some other hardware device capable of efficiently processing command bundles.

[0058] Each command bundle is an "executable file" that encodes all or some of the operations to be performed. A command bundle is a compact, general-purpose, hardware-independent format that can be used to describe any program to be executed on a command-aware hardware architecture.

[0059] Each command in a command bundle is a logically independent atomic operation. Each command can be complex because it may require the execution of multiple discrete functions to execute the command. Each command also explicitly defines a set of inputs (data and arguments that may be empty) and a set of outputs (the outputs can be simple or complex, such as flags, 0 or 1, arguments, values or sets of values, functions, etc.).

[0060] Server device 106 can transmit a command bundle to computing device 102 for execution by a single hardware platform. The command bundle can include instructions on how to handle content data, where to find the content data, where to transfer the content data, and so on. Thus, each command in a command bundle can be executed on a single hardware entity. In one approach, this single hardware entity can be the entirety of the command-aware hardware architecture of computing device 102. In another approach, this single hardware entity can be a single hardware module within a command-aware hardware processor of another device in network 112. Multiple commands in a command bundle can be executed one at a time on the same hardware entity.

[0061] In one approach, the instructions may be sent by the application in a command bundle. In another embodiment, the command bundle may include content along with or within the command bundle, such as one or more parameters or arguments. This command bundle may also include instructions as a set of commands that specify instructions on how to handle content, where to find content, where to store content, where to transmit content, etc.

[0062] In one or more embodiments, the system 100 may include Figure 1 More or fewer components may be shown. Figure 1 The components shown can be local to each other or remote from each other. In various methods, Figure 1 The components shown may be implemented in hardware and / or software. Operations described with respect to one component may be performed by another component instead.

[0063] In one or more embodiments, a data repository can be used to store information for system 100 and can be any type of storage unit and / or device for storing data (e.g., a file system, a database, a collection of tables, or any other storage mechanism). In addition, the data repository can include multiple different storage units and / or devices. The multiple different storage units and / or devices may or may not be of the same type or located at the same physical site. In addition, the data repository can be implemented or executed on the same computing system as system 100. Alternatively or in addition, the data repository can be implemented or executed on a computing system separate from system 100. In addition, the data repository can be communicatively coupled to any device in system 100 to transmit and receive data via a direct connection or via a network.

[0064] When a particular requesting device 110 generates a request for content data, this request is transmitted to the server device 106 over the network 112. In one approach, the computing device 102 may receive the request and then provide the request to the server device 106. The server device 106 processes the content request, determines where the content data is located to fulfill the request, obtains the content data, and transmits the content data over the network 112 to the requesting device 110.

[0065] 2.2 System using content cache for content data delivery

[0066] Figure 2 An example system 200 is illustrated for content data delivery using a content cache 204 associated with a computing device 202. The system 200 includes a server device 106 electrically coupled to the computing device 202, the computing device 202 being associated with the server device 106. In one or more embodiments, the server device 106 includes a hardware processor 108 and is configured to provide content to at least one of the requesting devices 110. In some embodiments, the server device 106 also includes a memory device for storing instructions and / or content and / or a software processor for executing software programs.

[0067] The server device 106 can be coupled to one or more content sources 114. The sources 114 may include any device, network, and / or memory accessible to the server device 106, from which content can be retrieved and / or requested for delivery to the requesting device 110. Some example source(s) 114 include, but are not limited to, the Internet, a streaming service, a content server, a cache and / or memory of the server device 106, and the like. The server device 106 can connect to the sources 114 via a fabric relay (in one approach) and / or via one or more additional networks.

[0068] The computing device 202 may include any hardware device (including a hardware processor and memory), such as a NIC, a network interface controller, a network adapter, a physical network interface, etc. In the system 200, according to one embodiment, the computing device 202 may be directly electrically coupled to the requesting device 206 without utilizing the network 112. In this manner, the computing device 202 is able to very quickly provide content data to the requesting device 206, which may be located locally on the computing device 202.

[0069] Computing device 202 is associated with a content cache 204 for storing content data provided by server device 106, with content cache 204 enabling rapid retrieval of content data to satisfy requests from requesting device 110 and / or requesting device 206. Content cache 204 may include any type of memory, such as NVRAM, PROM, EPROM, Flash EPROM, CAM, TCAM, etc. In some embodiments, content cache 204 includes a very fast-access memory type to enable delivery of content data with minimal latency over network 112 and / or directly to requesting device 206.

[0070] In one embodiment, the content cache 204 may be located locally at the computing device 202. In another embodiment, the content cache 204 may be separate from the computing device 202 or located remotely.

[0071] In various embodiments, Figure 1 Other actions described in Figure 2 In one or more embodiments, the system 200 may include Figure 2 More or fewer components may be shown. Figure 2 The components shown can be local to each other or remote from each other. In various methods, Figure 2 The components shown may be implemented in hardware and / or software. Operations described with respect to one component may be performed by another component instead.

[0072] In one or more embodiments, a data repository can be used to store information for system 200 and can be any type of storage unit and / or device for storing data (e.g., a file system, a database, a collection of tables, or any other storage mechanism). In addition, the data repository can include multiple different storage units and / or devices. The multiple different storage units and / or devices may or may not be of the same type or located at the same physical site. In addition, the data repository can be implemented or executed on the same computing system as the system 200. Alternatively or in addition, the data repository can be implemented or executed on a computing system separate from the system 200. In addition, the data repository can be communicatively coupled to any device in the system 200 to transmit and receive data via a direct connection or via a network.

[0073] 3. Example Implementation

[0074] For the sake of clarity, detailed examples are described below. The components and / or operations described below should be understood as specific examples that may not be applicable to certain embodiments. Therefore, the components and / or operations described below should not be interpreted as limiting the scope of any one of the claims.

[0075] 3.1 Data Flow for Content Data Transmission Between Devices

[0076] Figure 3 An example data flow 300 between devices according to one or more embodiments is illustrated. In this description, the computing device is considered to be a NIC of a server device. However, this is not required in the various embodiments described herein and is merely used as a way to correlate message exchanges between the various devices. Figure 3 Any of the described singular messages may include multiple messages that divide data between the multiple messages.

[0077] Message 302 is a request for specific content data transmitted from a requesting device to a NIC. Upon receiving message 302, the NIC forwards message 302 to a server device and / or transmits another message 304 to the server device including the information contained in message 302 and the request. The server device is configured to handle these types of requests, and when the server device determines that the content data is already stored in the NIC's content cache, the server device instructs the NIC to provide the content data from the content cache in message 306. In one approach, message 306 may include the storage location where the NIC will locate the content data stored in the content cache. Once the NIC obtains the content data, the NIC provides the content data from the content cache to the requesting device in message 308.

[0078] In various approaches, data flow 300 may further include encapsulation operations, compression operations, encryption operations, or any other packet or message modification techniques that enable more secure, efficient, and / or reliable data transmission.

[0079] Figure 4 An example data flow 400 between devices according to one or more embodiments is illustrated. In this specification, the computing device is considered to be a NIC of a server device. However, this is not required in the various embodiments described herein and is merely used as a way to correlate message exchanges between the various devices. Figure 4 Any of the described singular messages may include multiple messages that divide data between the multiple messages.

[0080] Message 402 is a request for specific content data transmitted from a requesting device to the NIC. Upon receiving message 402, the NIC forwards message 402 to the server device and / or transmits another message 404 to the server device, including the information contained in message 402 and the request. The server device is configured to handle these types of requests and, after retrieving the requested content data from the server device's memory, sends the content data to the NIC in message 406. Additionally, in message 408, the server device provides the NIC with a storage location for storing the content data in the NIC's content cache. In this way, upon receiving any subsequent requests for the same content data, the server device will always know where the specific content data is stored within the NIC's content cache.

[0081] In conjunction with storing the content data in the content cache at the location specified by the server device, the NIC provides the content data from the content cache to the requesting device in message 410 .

[0082] In various approaches, data flow 400 may further include encapsulation operations, compression operations, encryption operations, or any other packet or message modification techniques that enable more secure, efficient, and / or reliable data transmission.

[0083] 3.2 Data Exchange in the Example System

[0084] Figure 5 Illustrated is data exchange in an example system 500 for retrieving content data from a content cache according to one or more embodiments.

[0085] System 500 includes a content cache 502 and a server device 504. Content cache 502 may include any type of memory, such as NVRAM, PROM, EPROM, Flash EPROM, CAM, TCAM, and the like.

[0086] As shown, server device 504 includes RAM 506 for rapid data storage and retrieval and one or more disk media 508 for long-term data storage. Although not explicitly shown, according to various embodiments, other types of memory storage may be used in place of or in combination with RAM 506 and disk media 508, such as those other memory types described herein or other memory types known in the art.

[0087] The content data may have characteristics and parameters associated with the content data that can be used to determine where to store the content data within the system 500. Disk media 508 provides long-term storage at a cost, but does not provide as fast retrieval as content cache 502 and / or RAM 506. Therefore, certain characteristics of the content data may be tracked and / or monitored to determine where to store the content data. Some example characteristics include the popularity and / or demand for the content data. When it is determined that certain content data is more popular and more frequently requested by requesting devices, the server device may determine to place certain content data in the content cache 502.

[0088] Thus, content data that is least in demand, least popular, easiest to retrieve, etc., may be placed on disk media 508. Once this content data stored on disk media 508 reaches a threshold popularity, a threshold number of cumulative requests, has been requested a threshold number of times within a period of time, etc., the content data may be moved 518 from disk media 508 to RAM 506. However, if any of those parameters drops below a threshold level for maintaining the content data in RAM 506, the same content data may be moved 520 from RAM 506 to disk media 508.

[0089] In another example, content data stored to disk media 508 that achieves a higher threshold popularity, accumulates a greater threshold number of requests, is needed a greater threshold number of times within a period of time, etc., may be moved 516 directly from disk media 508 to content cache 502. However, if any of those parameters drops below a threshold level for maintaining the content data in content cache 502 or in RAM 506, this same content data may be moved 512 to disk media 508.

[0090] In one example, content data stored to RAM 506 that achieves a certain threshold popularity, accumulates a certain threshold number of requests, is needed a certain threshold number of times within a period of time, etc., may be moved 514 from RAM 506 to content cache 502. However, if any of those parameters drops below a threshold level for maintaining the content data in content cache 502, this same content data may be moved 510 to RAM 506.

[0091] Intelligent placement and movement of content data into and out of content cache 502 may be performed during transfer from persistent storage (e.g., reading content data from content cache 502) to temporary storage (e.g., provided to CPU cache, RAM 506, other device memory 508, etc.).

[0092] In various approaches, data flow 500 may further include encapsulation / decapsulation operations, compression / expansion operations, encryption / decryption operations, or any other packet or message modification techniques that enable more secure, efficient, and / or reliable transmission of content data.

[0093] 3.3 Transmitting content data to the requesting device

[0094] Figure 6 is a flow diagram of an example method 600 for delivering content data to a requesting device in a CDN, according to one or more embodiments. Figure 6 One or more of the operations illustrated may be modified, rearranged, or omitted altogether. Figure 6 The specific sequence of operations illustrated should not be construed as limiting the scope of one or more embodiments. In one embodiment, a computing device of a CDN may execute method 600 to provide content to one or more end-user devices. In other embodiments, method 600 may be executed by software and / or hardware devices in the network. Figure 6 The remainder of the description will describe method 600 from the perspective of a server device that provides content to devices connected to a CDN.

[0095] In operation 602, the server device receives a request from a requesting device to transfer content data. The server device may be connected across any communication channel such as a wired or wireless network, the Internet, a direct connection, radio frequency (RF), and / or Bluetooth. TM The server receives the request via a connection, a near field communication (NFC) channel, or the like. The requesting device may be any device that is in electronic communication with the server device. In one example, the requesting device may be a consumer of the content data, such as a set-top box, a streaming device, a smart TV, a smartphone, a tablet computer, a gaming console, or a computer.

[0096] The request may include information that enables the server device to determine what content data is being requested. In one approach, the information may include an identifier specific to the requested content data, such as a digital object identifier (DOI), a universal product code (UPC), etc. In one embodiment, the information may include a location where the server device can access and / or retrieve the requested content data.

[0097] In one embodiment, the server device is configured to operate in a CDN shared by one or more devices that consume content delivered by the server device.

[0098] In response to receiving the request to transfer the content data, the server device determines the location of the content data in operation 604. In one embodiment, the location may be included in the request and / or referenced by the request in a manner that enables the server device to locate and / or obtain the requested content data.

[0099] In one example, the request includes a reference to the location of the content data in a content cache of a computing device associated with the server device. In another example, the server device may have prior knowledge or information indicating that the requested content data is available at a particular location. This prior knowledge or information may be available to the server device based on previously providing the requested content data from this particular location to the same or a different requesting device, by receiving confirmation of where the content data is stored, or by polling other devices in a network (such as a CDN) for data stored in their respective content caches or other storage devices.

[0100] In response to determining that the content data is stored in a content cache of a computing device associated with the server device, the server device sends an instruction to the computing device to provide the content data to the requesting device in operation 606. In this embodiment, the content data is stored in the content cache of the computing device before being provided to the requesting device, and the server device determines that the content data is stored in the content cache of the computing device to obtain and transmit to the requesting device.

[0101] According to one embodiment, the computing device may include a command-aware hardware processor configured to generate and / or execute command bundles. The command-aware hardware processor may be implemented using a field programmable gate array (FPGA), an application-specific integrated circuit (ASIC), a NIC, a server co-processor, or some other hardware device capable of efficiently processing command bundles.

[0102] In various approaches, a command bundle executable by a computing device may be provided and / or received from the server device, a component of the computing device, or another server device over a network, such as a CDN, etc. In one example, the computing device may be a NIC in electronic communication with the server device.

[0103] Each command bundle is an "executable file" that encodes all or some of the operations to be performed by the computing device. A command bundle is a compact, general-purpose, hardware-independent format that can be used to describe any program to be executed on a command-aware hardware processor. Each command in a command bundle is a logically independent atomic operation. Each command can be complex because it may require the execution of multiple discrete functions to execute the command. Each command also explicitly defines a set of inputs (data and arguments that may be empty) and a set of outputs (the outputs can be simple or complex, such as flags, 0s or 1s, arguments, values or sets of values, functions, etc.).

[0104] According to one embodiment, the computing device may be a component and / or located locally on the server device, such as a NIC of the server device for interfacing with a network (e.g., a CDN). Located locally means that the computing device may be in the same server rack as the server device, in the same server room as the server device, and / or in the same building as the server device.

[0105] In one approach, method 600 may include additional operations performed in response to sending the instruction to the computing device to provide the content data. These additional operations may include retrieving the content data from the content cache of the computing device and transmitting the content data to the requesting device. In this approach, the computing device may be a NIC of a server device, and in response to determining that the requested content data is available in the content cache of the NIC, the server device may retrieve the requested content data from this local content cache and transmit the requested content data to the requesting device.

[0106] According to one embodiment, before providing the content data to the requesting device, the server device may cause the content data to be stored in the content cache of the computing device. Causing the content data to be stored in the content cache may include instructing and / or directing the computing device to store the content data in the content cache, providing an address to store the content cache, directly storing the content data in the content cache, etc.

[0107] Furthermore, in yet another embodiment, the server device (or some other component or device in the network) may process the content data before storing it in the content cache of the computing device. Processing the content data may include, but is not limited to, one or more of the following actions: compression and / or decompression, transcoding, tunneling, network transmission protocol processing, encryption and / or decryption, etc. In this manner, the content data may be modified and / or altered in a manner that enables faster delivery to the requesting device after retrieval from the content cache of the computing device.

[0108] In one embodiment, the server device (or some other component or device in the network) may process the content data before providing it to the requesting device. This processing may be performed by the server device regardless of whether the server device initially causes the content data to be stored in the computing device's content cache. In this embodiment, the server device may process the content data by performing, but not limited to, one or more of the following actions: compression and / or decompression, transcoding, tunneling, network transmission protocol processing, encryption and / or decryption, etc. In this manner, the content data may be modified and / or altered in a manner that enables faster, more efficient, and / or more secure delivery of the content data to the requesting device after retrieval from the computing device's content cache.

[0109] Tunnel processing may include encapsulation and decapsulation, as well as other possible operations. Network transport protocol processing may include Transmission Control Protocol (TCP) processing, Transport Layer Security (TLS) processing, QUIC processing, etc.

[0110] In one approach, the content cache of a computing device may be physically located on the computing device. Furthermore, in this approach, the content cache may be managed by a server device, such that the location of data stored in the content cache, which data is stored in the content cache, how long the stored data is retained, which data is overwritten, which data is removed, etc., may be specified and / or directly controlled by the server device.

[0111] In one embodiment, one or more packets comprising the requested content may be encapsulated in at least one overlay packet by a tunnel device in the network before being transmitted to the requesting device. The tunnel device may be a router, a server, or some other network device capable of terminating and initiating tunnels within the network. In one embodiment, the server device may include a tunnel device and / or functionality of the tunnel device for encapsulating and decapsulating packets and overlay packets. Each overlay packet includes an overlay header. Any suitable overlay and / or tunneling method and / or protocol may be used for the overlay packets, such as Virtual Extensible Local Area Network (VXLAN), IP Security (IPSec), General Packet Radio Service (GPRS) Tunneling Protocol (GTP), etc.

[0112] 3.4 Storing content data in content cache

[0113] Figure 7 is a flow diagram of an example method 700 for storing content data in a content cache according to one or more embodiments. Figure 7 One or more of the operations illustrated may be modified, rearranged, or omitted altogether. Figure 7The specific sequence of operations illustrated should not be construed as limiting the scope of one or more embodiments. In one embodiment, a computing device of a CDN may execute method 700 to provide content to one or more end-user devices. In other embodiments, method 700 may be executed by software and / or hardware devices in the network. Figure 7 The remainder of the description will describe method 700 from the perspective of a server device that provides content to devices connected to a CDN.

[0114] In operation 702, the server device receives a request from a requesting device to transfer content data. The requesting device may be connected across any communication channel (such as a wired or wireless network, the Internet, a direct connection, RF and / or Bluetooth). TM The server receives the request via a connection, NFC channel, or the like. The requesting device may be any device that is in electronic communication with the server device. In one example, the requesting device may be a consumer of the content data, such as a set-top box, a streaming device, a smart TV, a smartphone, a tablet computer, a gaming console, or a computer.

[0115] The request may include information that enables the server device to determine what content data is being requested. In one approach, the information may include an identifier specific to the requested content data, such as a DOI, UPC, etc. In one embodiment, the information may include a location where the server device can access and / or retrieve the requested content data.

[0116] In one embodiment, the server device is configured to operate in a CDN shared by one or more devices that consume content delivered by the server device.

[0117] In operation 704, the server device determines whether to store the content data in a content cache of a computing device associated with the server device. Operation 704 is performed in response to receiving a request to transfer the content data. The server device may determine whether to store the content data in the content cache based on any relevant information accessible to the server device related to the content cache and / or the requested content data. For example, the server device may decide to store the content data in the content cache if the content cache has available space to store the requested content data.

[0118] In one embodiment, the server device determines that the amount of data stored in the content cache of the computing device does not exceed a size threshold. Based on this determination of the size of the data currently stored in the content cache, the server device may select to store the content data in the content cache of the computing device. The size threshold may be predetermined by the server device or may be a dynamic value that is adjusted based on operational conditions such as how long the data has been stored in the content cache, the frequency of requesting and retrieving data from the content cache, and so forth.

[0119] In operation 706, the server device provides the content data to the computing device for storage in a content cache of the computing device. Operation 706 is performed in response to the server device determining to store the content data in the content cache of the computing device.

[0120] According to one method, a computing device may obtain content data from a storage location provided by a server device for storage in a content cache of the computing device. In this method, the server device does not obtain the content data and does not provide the content data to the computing device. Instead, the computing device obtains and stores the content data based on the location provided by the server device.

[0121] In an alternative approach, the server device sends the content data to the computing device for storage in the computing device's content cache. In this approach, if the content data does not reside on the server device, the server device may search for or have prior knowledge of the current storage location of the content data, obtain the content data, and provide the content data to the computing device for storage in the computing device's content cache.

[0122] In one embodiment, the content cache of the computing device may be physically located on the computing device. In addition, in this embodiment, the content cache may be managed by the server device, so that the location of data stored in the content cache, which data is stored in the content cache, how long the stored data is retained, which data is overwritten, which data is removed, etc. can be specified and / or directly controlled by the server device.

[0123] According to one embodiment, a server device (or some other component or device in a network) may process content data. Processing the content data may include, but is not limited to, one or more of the following actions: compression and / or decompression, transcoding, tunneling, network transport protocol processing, encryption and / or decryption, etc. In this manner, the content data may be modified and / or altered in a manner that enables faster delivery to the requesting device after retrieval from the computing device's content cache. Tunneling may include encapsulation and decapsulation, among other possible operations. Network transport protocol processing may include TCP processing, TLS processing, QUIC processing, etc.

[0124] In one embodiment, the server device may determine that resource utilization associated with the server device exceeds a utilization threshold. In response to such a determination, the server device may move the second content data from a storage location accessible to the server device (CPU cache, RAM, other device memory, etc.) to a content cache of the computing device.

[0125] Any measurable resource can be compared to a resource utilization threshold. Some example resources include, but are not limited to, storage space in a content cache, storage space in a server device, processing power of a server device, processing power of a computing device, bandwidth of one or more transmission channels between a server device and a requesting device, energy usage of a server device, energy usage of a computing device, and the like. The usage of any of these various resources can be monitored, tracked, and / or requested by a server device for comparison to a specified usage threshold, thereby allowing the server device to understand how efficiently the various resources are being used when delivering content to a requesting device.

[0126] The value of a particular utilization threshold is related to the resource being measured. When the resource is processing power, the resource utilization threshold may be the percentage of processing power being used, the number of processor cycles per unit time, the average processor usage rate, etc. When the resource is memory space, the resource utilization threshold may be the percentage or portion of the memory space currently storing data, the average percentage of the memory space that has stored data over a period of time, etc.

[0127] In one embodiment, resource utilization may correspond to the popularity and / or demand for certain content data stored in the content cache and / or server device. When certain content data is determined to be more popular and more frequently requested by requesting devices, the server device may determine to maintain the presence of certain content data in the content cache of the computing device, even if the resource utilization threshold indicates that certain content data should be removed from the content cache.

[0128] Intelligent placement and movement of content data into and out of a computing device's content cache may be performed during transfer from persistent storage (e.g., reading content data from a content cache) to temporary storage (e.g., provided to a CPU cache, RAM, disk media, other device memory, etc.).

[0129] In one embodiment, the server device may determine that a trigger condition associated with the content data has occurred. In response to detecting / determining that the trigger condition has occurred, the server device may evict the content data from the content cache of the computing device. The trigger condition may be related to the content data and / or a utilization metric of the content cache (e.g., the amount of data stored in the content cache, the popularity of the content data, the demand for the content data, the last use of the content data, etc.) falling below / above a utilization threshold. In various examples, evicting the content data from the content cache may include deleting the content data from the content cache, marking the memory space storing the content data in the content cache as free, overwriting the content data, etc.

[0130] According to one embodiment, a computing device may include a command-aware hardware processor configured to generate and / or execute command bundles. The command-aware hardware processor may be implemented using an FPGA, an ASIC, a NIC, a server co-processor, or some other hardware device capable of efficiently processing command bundles. In various approaches, the command bundles executable by the computing device may be provided and / or received from a server device, a component of the computing device, or another server device via a network (such as a CDN). In one example, the computing device may be a NIC in electronic communication with the server device.

[0131] Each command bundle is an "executable file" that encodes all or some of the operations to be performed by the computing device. A command bundle is a compact, general-purpose, hardware-independent format that can be used to describe any program to be executed on a command-aware hardware processor. Each command in a command bundle is a logically independent atomic operation. Each command can be complex because it may require the execution of multiple discrete functions to execute the command. Each command also explicitly defines a set of inputs (data and arguments that may be empty) and a set of outputs (the outputs can be simple or complex, such as flags, 0s or 1s, arguments, values or sets of values, functions, etc.).

[0132] According to one embodiment, the computing device can be a component and / or located locally on the server device, such as a NIC of the server device for interfacing with a network (e.g., a CDN). Located locally means that the computing device can be in the same server rack as the server device, in the same server room as the server device, and / or in the same building as the server device.

[0133] In one embodiment, one or more packets including the requested content may be encapsulated in at least one overlay packet by a tunneling device in the network before being transmitted to the requesting device. The tunneling device may be a router, a server, or some other network device capable of terminating and initiating tunnels within the network. In one embodiment, the server device may include a tunneling device and / or functionality of the tunneling device for encapsulating and decapsulating packets and overlay packets. Each overlay packet includes an overlay header. Any suitable overlay and / or tunneling method and / or protocol may be used for the overlay packets, such as VXLAN, IPSec, GTP, etc.

[0134] 3.5 Obtaining content data from the content cache

[0135] Figure 8 is a flow diagram of an example method 800 for retrieving content data from a content cache. Figure 8 One or more of the operations illustrated may be modified, rearranged, or omitted altogether. Figure 8The specific sequence of operations illustrated should not be construed as limiting the scope of one or more embodiments. In one embodiment, a computing device of a CDN may execute method 800 to provide content to one or more requesting devices. In other embodiments, method 800 may be executed by software and / or hardware devices in the network. Figure 8 The remainder of the description will describe method 800 from the perspective of a hardware processor of a server device within a CDN.

[0136] In operation 802, the hardware processor receives a request from a requesting device to transfer content data. This request may specify the location of the requested content data, an identifier of the content data, and / or information that the hardware processor may use to search, find, obtain, and / or acquire the requested content data.

[0137] Can be used across any communication channel (such as wired or wireless network, Internet, direct connection, RF and / or Bluetooth TM The request is received by the processor via a wireless connection (e.g., a NFC channel, etc.). The requesting device can be any device that is in electrical communication with the hardware processor. In one example, the requesting device can be a consumer of content data, such as a set-top box, a streaming device, a smart TV, a smartphone, a tablet computer, a gaming console, or a computer.

[0138] The request may include information that enables the hardware processor to determine what content data is being requested. In one approach, the information may include an identifier specific to the requested content data, such as a DOI, UPC, etc. In one embodiment, the information may include a location where the hardware processor can access and / or retrieve the requested content data.

[0139] In one embodiment, a server device (and its hardware processor) is configured to operate in a CDN shared by one or more devices that consume content delivered by the server device.

[0140] According to one embodiment, a computing device may include a command-aware hardware processor (such as the hardware processor in operation 802) configured to generate and / or execute command bundles. The command-aware hardware processor may be implemented using an FPGA, an ASIC, a NIC, a server co-processor, or some other hardware device capable of efficiently processing command bundles. In various approaches, the command bundles executable by the computing device may be provided and / or received from a server device, a component of the computing device, or another server device via a network (such as a CDN). In one example, the computing device may be a NIC in electronic communication with the server device.

[0141] Each command bundle is an "executable file" that encodes all or some of the operations to be performed by the computing device. A command bundle is a compact, general-purpose, hardware-independent format that can be used to describe any program to be executed on a command-aware hardware processor. Each command in a command bundle is a logically independent atomic operation. Each command can be complex because it may require the execution of multiple discrete functions to execute the command. Each command also explicitly defines a set of inputs (data and arguments that may be empty) and a set of outputs (the outputs can be simple or complex, such as flags, 0s or 1s, arguments, values or sets of values, functions, etc.).

[0142] In operation 804, the hardware processor transmits a first message to a software processor (eg, of a server device) at the location of the requested content data. This first message is sent in response to receiving a request to transfer the content data.

[0143] The software processor may be a CPU, a GPU, an integrated circuit, an FPGA, an ASIC, or some other processor configured to manage and / or control a content cache accessible to a server device.

[0144] In operation 806, the hardware processor receives a second message from the software processor indicating that the content data is stored in the content cache of the hardware processor. The second message may be transmitted by the software processor to the hardware processor using any available communication channel, such as a direct connection, a bus, a wireless connection, etc. Some example communication channels include, but are not limited to, serial, serial peripheral interface (SPI), integrated circuit bus (I2C), improved integrated circuit bus (I3C), etc. This second message may include a location, address, or other information that the hardware processor may use to obtain, acquire, and / or retrieve the requested content data from the content cache without polling and / or searching the content cache or its index to find the storage location of the content data.

[0145] In response to receiving the second message, the hardware processor retrieves the content data from the content cache of the hardware processor in operation 808. In other words, the second message provides information (location, address, and / or identifier) about where the requested content data is stored, thereby allowing the hardware processor to obtain the requested content data. The hardware processor may copy the content data, in whole or in part or in blocks, to RAM or some other fast memory device local to the hardware processor, where the parts or blocks are retrieved by the hardware processor along with the content data provided and / or transmitted to the requesting device.

[0146] In operation 810, the hardware processor transmits the content data to the requesting device. Any communication channel that connects the server device to the requesting device may be used, such as a wired or wireless network, the Internet, a direct connection, RF, and / or Bluetooth. TM connection, NFC channel, etc.) to achieve the transfer. In addition, the content data can be delivered to the requesting device as streaming content, so that the requested parts or packets of content are continuously delivered as the content is consumed on the requesting device.

[0147] According to one embodiment, the software processor may be configured to process the content data after retrieval from the content cache. Processing the content data may include, but is not limited to, compression / decompression operations, transcoding, tunneling, network transmission protocol processing, encryption / decryption operations, etc. According to one embodiment, before, after, or during a period of time when the software processor is processing the content data, the software processor may use the content cache of the hardware processor as a buffer for storing data during the processing phase. In this embodiment, after processing the content data and before transmitting the content data in operation 810, at least a portion of the content data may be stored in the content cache of the hardware processor.

[0148] In one embodiment, the hardware processor can process content data after being released from TCP, where the processing after being released from TCP includes but is not limited to TLS, compression, encryption, storage reading, etc.

[0149] In one embodiment, one or more packets including the requested content may be encapsulated in at least one overlay packet by a tunneling device in the network before being transmitted to the requesting device. The tunneling device may be a router, a server, or some other network device capable of terminating and initiating tunnels within the network. In one embodiment, the server device may include a tunneling device and / or functionality of the tunneling device for encapsulating and decapsulating packets and overlay packets. Each overlay packet includes an overlay header. Any suitable overlay and / or tunneling method and / or protocol may be used for the overlay packets, such as VXLAN, IPSec, GTP, etc.

[0150] Variations of the disclosed embodiments are possible and do not need to be explicitly described in this document to provide one of ordinary skill in the art with the ability to conceive of such variations upon reading this description.

[0151] In the foregoing description, embodiments of the present invention have been described with reference to numerous specific details that may vary between implementations. Accordingly, the description and drawings should be regarded as illustrative rather than restrictive. The sole and exclusive indicator of the scope of the invention, and what the applicants intend as the scope of the invention, is the range of literal equivalents of the set of claims issuing from this application, in the specific form in which the claims issue, including any subsequent corrections.

[0152] 4. Miscellaneous; Extensions

[0153] Embodiments are directed to a system having one or more devices comprising a hardware processor and configured to perform any of the operations described herein and / or recited in any of the claims below. In one embodiment, a non-transitory computer-readable storage medium comprises instructions that, when executed by the one or more hardware processors, result in performance of any of the operations described herein and / or recited in any of the claims.

[0154] According to one or more embodiments, any combination of the features and functions described herein may be used. In the previous description, the embodiments have been described with reference to numerous specific details that may vary between implementations. Therefore, the description and drawings should be regarded as illustrative rather than restrictive. The sole and exclusive indicator of the scope of the present invention and what the applicants intend as the scope of the present invention is the literal equivalents of the set of claims issued from this application in the specific form in which the claims are issued, including any subsequent corrections.

[0155] 5. Hardware Overview

[0156] According to one embodiment, the techniques described herein are implemented by one or more special-purpose computing devices (i.e., computing devices specifically configured to perform a certain function). The special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronics, such as one or more ASICs, FPGAs, or network processing units (NPUs) that are permanently programmed to perform the techniques, or may include one or more general-purpose hardware processors that are programmed according to program instructions in firmware, memory, other storage, or a combination to perform the techniques. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, FPGAs, or NPUs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, data center servers, networking devices, or any other devices that incorporate hard-wired and / or program logic to implement the techniques.

[0157] For example, Figure 9is a block diagram illustrating a computer system 900 upon which embodiments of the present invention may be implemented. Computer system 900 includes a bus 902 or other communication mechanism for communicating information, and a hardware processor 904 coupled with bus 902 for processing information. Hardware processor 904 may be, for example, a general-purpose microprocessor.

[0158] The computer system 900 also includes a main memory 906, such as a random access memory (RAM) or other dynamic storage device, coupled to the bus 902 for storing information and instructions to be executed by the processor 904. The main memory 906 may also be used to store temporary variables or other intermediate information during execution of instructions to be executed by the processor 904. These instructions, when stored in a non-transitory storage medium accessible to the processor 904, cause the computer system 900 to appear as a special-purpose machine customized to perform the operations specified in the instructions.

[0159] Computer system 900 also includes a read-only memory (ROM) 908 or other static storage device coupled to bus 902 for storing static information and instructions for processor 904. A storage device 910, such as a magnetic disk or solid-state drive, is provided and coupled to bus 902 for storing information and instructions.

[0160] Computer system 900 may be coupled via bus 902 to a display 912, such as a liquid crystal display (LCD), a plasma display, an electronic ink display, a cathode ray tube (CRT) monitor, or any other type of device for displaying information to a computer user. An input device 914, including alphanumeric and other keys, may be coupled to bus 902 for communicating information and command selections to processor 904. Alternatively or in addition, computer system 900 may receive user input via cursor control 916, such as a mouse, trackball, touchpad, touch screen, or cursor arrow keys for communicating directional information and command selections to processor 904 and for controlling cursor movement on display 912. Such input devices typically have two degrees of freedom along two axes, a first axis (e.g., x) and a second axis (e.g., y), which allows the device to specify a position in a plane. Display 912 may be configured to receive user input via one or more pressure-sensitive sensors, multi-touch sensors, and / or gesture sensors. Alternatively or additionally, computer system 900 may receive user input via a microphone, a camera, and / or some other type of user input device (not shown).

[0161] The computer system 900 can implement the techniques described herein using custom hard-wired logic, one or more ASICs or FPGAs, firmware and / or program logic that is combined with the computer system to make or program the computer system 900 into a special-purpose machine. According to one embodiment, the techniques herein are performed by the computer system 900 in response to the processor 904 executing one or more sequences of one or more instructions contained in the main memory 906. These instructions can be read into the main memory 906 from another storage medium, such as the storage device 910. Execution of the sequences of instructions contained in the main memory 906 causes the processor 904 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry can be used in place of or in combination with software instructions.

[0162] As used herein, the term "storage media" refers to any non-transitory medium that stores data and / or instructions that cause a machine to operate in a specific manner. Such storage media may include non-volatile media and / or volatile media. Non-volatile media include, for example, solid-state drives or magnetic disks, such as storage device 910. Volatile media include dynamic memory, such as main memory 906. Common forms of storage media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tape or any other magnetic data storage medium, CD-ROMs, any other optical data storage medium, any physical medium with a pattern of holes, RAM, programmable read-only memory (PROM) and erasable PROM (EPROM), flash EPROM, non-volatile random access memory (NVRAM), any other memory chip or cartridge, content addressable memory (CAM), and ternary content addressable memory (TCAM).

[0163] Storage media are distinct from transmission media, but can be used in conjunction with them. Transmission media participate in the transfer of information between storage media. Examples of transmission media include coaxial cables, copper wire, and optical fiber, including the wires that comprise bus 902. Transmission media can also take the form of acoustic or optical waves, such as those generated during radio and infrared data communications.

[0164] Various forms of media may be involved in carrying one or more sequences of one or more instructions to processor 904 for execution. For example, the instructions may initially be carried on a disk or solid-state drive of a remote computer. The remote computer may load the instructions into its dynamic memory and send the instructions over the network via a NIC, such as an Ethernet network controller or a Wi-Fi controller. The NIC local to computer system 900 may receive data from the network and place the data on bus 902. Bus 902 carries the data to main memory 906, from which processor 904 retrieves the instructions and executes them. The instructions received by main memory 906 may be stored on storage device 910 before or after execution by processor 904, as appropriate.

[0165] Computer system 900 also includes a communication interface 918 coupled to bus 902. Communication interface 918 provides two-way data communication coupled to a network link 920 connected to a local network 922. For example, communication interface 918 can be an integrated services digital network (ISDN) card, a cable modem, a satellite modem, or a modem that provides a data communication connection to a telephone line of a corresponding type. As another example, communication interface 918 can be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links can also be implemented. In any such implementation, communication interface 918 sends and receives electrical signals, electromagnetic signals, or optical signals that carry digital data streams representing various types of information.

[0166] The network link 920 typically provides data communication through one or more networks to other data devices. For example, the network link 920 can provide a connection to a host computer 924 or to data equipment operated by an Internet Service Provider (ISP) 926 through a local network 922. The ISP 926, in turn, provides data communication services through the global packet data communication network now commonly referred to as the "Internet" 928. Both the local network 922 and the Internet 928 use electrical, electromagnetic, or optical signals that carry digital data streams. The signals through the various networks and the signals on the network link 920 and through the communication interface 918 are example forms of transmission media that carry the digital data to and from the computer system 900.

[0167] Computer system 900 can send and receive data, including program code, through the network, network link 920, and communication interface 918. In the Internet example, server 930 can transmit code requested by an application program through Internet 928, ISP 926, local network 922, and communication interface 918. The received code can be executed by processor 904 as it is received and / or stored in storage device 910 or other non-volatile storage for later execution.

Claims

1. A method comprising: The server device receives a request from the requesting device to transmit content data; In response to receiving the request to transfer the content data: determining a location of the content data; as well as In response to determining that the content data is stored in a content cache of a computing device associated with the server device: sending an instruction to the computing device to provide the content data to the requesting device, the content data being stored in the content cache of the computing device before being provided to the requesting device, The method is executed by at least one processor of the server device.

2. The method according to claim 1, wherein receiving the request to transmit the content data comprises a network interface card (NIC) of the server device receiving the request to transmit the content data, the request indicating the requesting device; Wherein determining the location of the content data comprises: the NIC sending a first message to a processor of the server device identifying the content data; and In response to sending the first message, the NIC receives a second message from the processor, the second message indicating that the content data is stored in a content cache of the NIC; and Wherein in response to receiving the instruction to provide the content data to the requesting device, the NIC transfers the content data from the content cache of the NIC to the requesting device.

3. The method of claim 1 , further comprising, in response to sending the instruction to the computing device to provide the content data: retrieving the content data from the content cache of the computing device; and The content data is transmitted to the requesting device.

4. The method of claim 1, further comprising storing the content data in the content cache of the computing device before providing the content data to the requesting device.

5. The method of claim 4 further comprises, before storing the content data in the content cache of the computing device, processing the content data by performing an action selected from the group consisting of compression operations, transcoding, tunneling, network transmission protocol processing, and encryption operations.

6. The method of claim 4 further comprises, before providing the content data to the requesting device, processing the content data by performing an action selected from a group consisting of compression operations, transcoding, tunneling, network transmission protocol processing, and encryption operations.

7. The method of claim 1, wherein the content cache is a component of the computing device and is physically located with the computing device, and wherein the content cache is managed by the server device.

8. The method of claim 1, wherein the content cache of the computing device is located physically remote from the server device, and wherein the content cache of the computing device is managed by the server device.

9. The method of claim 1, wherein the computing device is a command-aware hardware processor configured to execute command bundles.

10. The method of claim 1, wherein the computing device is a network interface card (NIC) in electronic communication with the server device.

11. The method of claim 1 , wherein the content cache of the computing device is configured to operate according to any application protocol.

12. A method comprising: The server device receives a request from the requesting device to transmit content data; In response to receiving the request to transfer the content data: determining whether to store the content data in a content cache of a computing device associated with the server device; as well as In response to determining that the content data is to be stored in the content cache of the computing device: providing the content data to the computing device for storage in the content cache of the computing device, The method is executed by at least one processor of the server device.

13. The method of claim 13, wherein the computing device obtains the content data from a storage location provided by the server device for storage in the content cache of the computing device.

14. The method of claim 13, wherein the computing device is a network interface card (NIC) in electronic communication with the server device, and wherein the server device sends the content data to the NIC for storage in a content cache of the NIC.

15. The method of claim 13, further comprising: processing the content data by performing an action selected from the group consisting of compression, transcoding, tunneling, network transport protocol processing, and encryption; as well as During the processing of the content data, the content cache of the computing device is used as a buffer.

16. A method as claimed in claim 13, wherein determining whether to store the content data in the content cache of the computing device includes determining that the amount of data stored to the content cache of the computing device does not exceed a size threshold, and wherein the content data is stored to the content cache of the computing device in response to determining that the amount of data stored to the content cache of the computing device does not exceed the size threshold.

17. The method of claim 13, further comprising: determining that a resource utilization associated with the server device exceeds a utilization threshold; as well as In response to determining that the resource utilization associated with the server device exceeds the utilization threshold: moving second content data from the server device to the content cache of the computing device.

18. The method of claim 13, further comprising: determining that a trigger condition associated with the content data has occurred; as well as In response to an occurrence of the trigger condition associated with the content data: evicting the content data from the content cache of the computing device.

19. A system comprising: Software processor; as well as A hardware processor configured to perform a first operation, wherein the first operation includes: receiving, at the hardware processor, a request from a requesting device to transfer content data; In response to the request to transfer the content data: the hardware processor transmits a first message to the software processor requesting the location of the content data; receiving, at the hardware processor, a second message from the software processor, the second message indicating that the content data is stored in a content cache of the hardware processor; and In response to receiving the second message: the hardware processor retrieves the content data from the content cache of the hardware processor; and the hardware processor transmits the content data to the requesting device.

20. The system of claim 19, wherein the software processor is configured to perform a second operation comprising processing the content data by performing an action selected from the group consisting of compression, transcoding, tunneling, network transmission protocol processing, and encryption, wherein said content cache of said hardware processor is used as a buffer during said processing of said content data, and The first operation further includes storing the content data in the content cache of the hardware processor after processing the content data and before transmitting the content data.