This application is related to U.S. application Ser. No. 16/548,116 titled “DISTRIBUTED CACHE WITH IN-NETWORK PREFETCH”, filed on Aug. 22, 2019, and published as U.S. Patent Application Publication No. 2020/0349080 on Nov. 5, 2020, which is hereby incorporated by reference in its entirety. This application is also related to U.S. application Ser. No. 16/697,019 titled “FAULT TOLERANT DATA COHERENCE IN LARGE-SCALE DISTRIBUTED CACHE SYSTEMS”, filed on Nov. 26, 2019, and published as U.S. Patent Application Publication No. 2020/0351370 on Nov. 5, 2020, which is hereby incorporated by reference in its entirety. This application is also related to U.S. application Ser. No. 16/914,206 titled “DEVICES AND METHODS FOR MANAGING NETWORK TRAFFIC FOR A DISTRIBUTED CACHE”, filed on Jun. 26, 2020, which is hereby incorporated by reference in its entirety. This application is also related to U.S. application Ser. No. 16/916,730 titled “DEVICES AND METHODS FOR FAILURE DETECTION AND RECOVERY FOR A DISTRIBUTED CACHE”, filed on Jun. 30, 2020, which is hereby incorporated by reference in its entirety. This application is also related to U.S. application Ser. No. 17/174,681, titled “DEVICES AND METHODS FOR NETWORK MESSAGE SEQUENCING”, filed on Feb. 12, 2021, which is hereby incorporated by reference in its entirety. This application is also related to U.S. application Ser. No. 17/175,449, titled “MANAGEMENT OF NON-VOLATILE MEMORY EXPRESS NODES”, filed on Feb. 12, 2021, which is hereby incorporated by reference in its entirety. This application is also related to U.S. application Ser. No. 17/353,781, titled “IN-NETWORK FAILURE INDICATION AND RECOVERY”, filed on Jun. 21, 2021, which is hereby incorporated by reference in its entirety.
Current trends in cloud computing, big data, and Input/Output (I/O) intensive applications have led to greater needs for high performance distributed shared memory systems in data centers in terms of low latency, high throughput, and bandwidth. For example, artificial intelligence, graph processing, bioinformatics, and in-memory database applications typically use large data sets and can suffer in performance when data is not quickly accessible in a shared memory and must be loaded into the shared memory from storage. Data may be cached to reduce the latency for accessing the data but managing a distributed cache that is shared by nodes throughout a network presents several challenges.
Current distributed memory systems generally do not support a global coordination of distributed caches among different nodes, which negatively affects overall system performance. For example, different applications with diverse memory request rates that share the same cache memory can be negatively affected, such as where an application accessing the memory for large sequential reads blocks access to the cache memory by a different application. Existing cache management techniques may either over-provision the cache or need user adjustment before operation for the particular applications using the cache. In addition to requiring more memory for over-provisioning or more time for a user to initialize, these existing cache management techniques fail to accommodate for changing workloads during runtime since the cache size assigned to different applications at the initialization stage is fixed and cannot be adjusted during runtime according to their workloads.
The features and advantages of the embodiments of the present disclosure will become more apparent from the detailed description set forth below when taken in conjunction with the drawings. The drawings and the associated descriptions are provided to illustrate embodiments of the disclosure and not to limit the scope of what is claimed.
In the following detailed description, numerous specific details are set forth to provide a full understanding of the present disclosure. It will be apparent, however, to one of ordinary skill in the art that the various embodiments disclosed may be practiced without some of these specific details. In other instances, well-known structures and techniques have not been shown in detail to avoid unnecessarily obscuring the various embodiments.
Network 100 can include, for example, a Storage Area Network (SAN), a Local Area Network (LAN), and/or a Wide Area Network (WAN), such as the Internet. In this regard, one or more of server racks 101, ToR switches 102, aggregated switches 104, and/or network controller 120 may not be physically co-located. Server racks 101, ToR switches 102, aggregated switches 104, and/or network controller 120 may communicate using one or more standards such as, for example, Ethernet.
As shown in the example of
Aggregated switch 104A routes messages between ToR switches 102A and 102B, and between ToR switches 102A and 102B and network controller 120. Similarly, aggregated switch 104B routes messages between ToR switches 102C and 102D, and between ToR switches 102C and 102D and network controller 120. In this regard, server racks 101A and 101B with ToR switches 102A and 102B and aggregated switch 104A may be viewed as a first cluster of devices on network 100. Server racks 101C and 101D with ToR switches 102C and 102D and aggregated switch 104B may be viewed as a second cluster of devices on network 100.
Aggregated switches 104A and 104B can include programmable switches, such as 64 port ToR P4 programmable switches that route messages to and from ToR switches 102 and network controller 120. Such programmable switches can include, for example, a Barefoot Networks Tofino Application Specific Integrated Circuit (ASIC) with ports configured to provide 40 Gigabit Ethernet (GE) frame rates. Other types of programmable switches that can be used as an aggregated switch 104 can include, for example, a Cavium Xpliant programmable switch or a Broadcom Trident 3 programmable switch.
Network controller 120 can include a Software Defined Networking (SDN) controller. As discussed in more detail below, network controller 120 can store distributed cache metrics 20 for a distributed cache stored at different nodes in network 100. Distributed cache metrics 20 can be updated based on cache metrics received from programmable switches, such as ToR switches 102, and used by distributed cache management module 18 to allocate portions of the distributed cache to different applications accessing the distributed cache.
In this regard, ToR switches 102 are configured to inspect packets received by the ToR switch to identify information related to a portion of the distributed cache provided by at least one of the nodes in its respective server rack 101. The ToR switch can determine cache metrics 14 for the portion of the distributed cache using cache metric module 12 and allocate at least a portion of the cache to one or more applications or programs based on the determined cache metrics using cache management module 10. The cache metrics may include, for example, priorities associated with different applications, write-to-read ratios or read-to-write ratios for different applications accessing the cache, memory bandwidths for different applications accessing the cache, cache usage for different applications accessing the cache, and/or indications for cache hit rates or cache miss rates for different applications accessing the cache.
In some implementations, ToR switches 102 and aggregated switches 104 can include, for example, programmable switches that can be programmed to handle different custom protocols. Programmable switches 102 and 104 can include programmable match-action pipelines to provide a configurable data plane and customized packet processing capability with L1/L2 packet switching 16. Examples of such programmable switches can be found in co-pending U.S. application Ser. Nos. 17/174,681, 16/914,206, and 16/916,730, and U.S. Patent Application Publication Nos. 2020/0349080 and 2020/0351370, each of which are incorporated by reference above.
Data planes of programmable switches 102 and 104 in the example of
In some implementations, ToR switches 102 may serve as Non-Volatile Memory express (NVMe) controllers for NVMe nodes in their respective server racks 101. In such implementations, ToR switches 102 can update available namespaces in an NVMe mapping for the server rack and/or perform an NVMe discovery process to determine whether there are one or more newly available namespaces. Such implementations are discussed in more detail in co-pending U.S. application Ser. No. 17/175,449, which is incorporated by reference above.
In addition, the use of a programmable switches 102 and 104 can enable the configuration of high-performance and scalable memory centric architectures by defining customized packet formats and processing behavior. Programmable switches 102 and 104 enable a protocol-independent switch architecture and the use of off-the-shelf switches, as opposed to specially designed Networks on a Chip (NoCs). The processing resources of programmable switches 102 and 104, such as the use of Content Addressable Memory (CAM) or Ternary CAM (TCAM) tables, or other types of match-action tables, can ordinarily provide faster processing and deep packet inspection, such as inspection of NVMe messages within a packet, than can occur at the end nodes.
Those of ordinary skill in the art will appreciate with reference to the present disclosure that other implementations may include a different number or arrangement of server racks 101, ToR switches 102, and aggregated switches 104 than shown in the example of
In addition, some implementations may include a different arrangement of modules, such as a single module executed by a ToR switch 102 for determining cache metrics and for allocating cache memory to different applications accessing the cache. In yet other implementations, cache metrics may be stored in different locations than those shown in
Processor 116 can execute instructions, such as instructions from distributed cache module 26 and application(s) 24, which may include an Operating System (OS) and/or other applications used by node 108. Processor 116 can include circuitry such as a Central Processing Unit (CPU), one or more RISC-V cores, a Graphics Processing Unit (GPU), a microcontroller, a Digital Signal Processor (DSP), an Application-Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), hard-wired logic, analog circuitry and/or a combination thereof. In some implementations, processor 116 can include a System on a Chip (SoC), which may be combined with one or both of memory 118 and interface 122.
Memory 118 can include, for example, a volatile Random Access Memory (RAM) such as Static RAM (SRAM), Dynamic RAM (DRAM), a non-volatile RAM, or other solid-state memory that is used by processor 116 as an internal main memory to store data. Data stored in memory 118 can include data read from storage device 121, data to be stored in storage device 121, instructions loaded from distributed cache module 26 or application(s) 24 for execution by processor 116, and/or data used in executing such applications. In addition to loading data from memory 118, processor 116 may also load data from shared memory locations of other nodes as an external memory or distributed cache. Such data may also be flushed after modification by processor 116 or evicted without modification back to memory 118 or an external node via programmable switch 102.
As shown in
Storage device 121 serves as secondary storage that can include, for example, one or more rotating magnetic disks or non-volatile solid-state memory, such as flash memory. While the description herein refers to solid-state memory generally, it is understood that solid-state memory may comprise one or more of various types of memory devices such as flash integrated circuits, NAND memory (e.g., single-level cell (SLC) memory, multi-level cell (MLC) memory (i.e., two or more levels), or any combination thereof), NOR memory, electrically erasable programmable read only memory (EEPROM), other discrete Non-Volatile Memory (NVM) chips, or any combination thereof.
Interface 122 is configured to interface node 108 with programmable switch 102. Interface 122 may communicate using a standard such as, for example, Ethernet. In this regard, node 108, programmable switch 102, and network controller 120 may not be physically co-located and may communicate over a network such as a LAN or a WAN. As will be appreciated by those of ordinary skill in the art, interface 122 can be included as part of processor 116.
As discussed above with reference to
Memory 134 of programmable switch 102 can include, for example, a volatile RAM such as DRAM, or a non-volatile RAM or other solid-state memory such as register arrays that are used by circuitry 132 to execute instructions loaded from cache management module 10, cache metric module 12, or firmware of programmable switch 102, and/or data used in executing such instructions, such as cache metrics 14. Circuitry 132 can include circuitry such as an ASIC, a microcontroller, a DSP, an FPGA, hard-wired logic, analog circuitry and/or a combination thereof. In some implementations, circuitry 132 can include an SoC, which may be combined with memory 134.
As discussed in more detail below, cache management module 10 and cache metric module 12 can include instructions for implementing processes such as those discussed with reference to
Network controller 120 in the example of
Processor 124 of network controller 120 executes distributed cache module 18 to maintain distributed cache metrics 20 and notify programmable switches 102 of adjustments, as needed. Processor 124 can include circuitry such as a CPU, a GPU, a microcontroller, a DSP, an ASIC, an FPGA, hard-wired logic, analog circuitry and/or a combination thereof. In some implementations, processor 124 can include an SoC, which may be combined with one or both of memory 126 and interface 128. Memory 126 can include, for example, a volatile RAM such as DRAM, a non-volatile RAM, or other solid-state memory that is used by processor 124 to store data. Network controller 120 communicates with programmable switches 102 via interface 128, which is configured to interface with ports of programmable switches 102, and may interface according to a standard, such as Ethernet.
As will be appreciated by those of ordinary skill in the art with reference to the present disclosure, other implementations may include a different arrangement or number of components, or modules than shown in the example of
As shown in
In the example of
The write-to-read ratio can be determined by, for example, identifying an operation code or message type in a packet originated by the application. Such operation codes can include an op code field in the packet indicating a write operation, read operation, or other type of operation. The programmable switch, such as through use of cache metric module 12 in
The bandwidth can be determined by an amount of data requested from and/or sent to the cache or caches associated with the programmable switch. In some implementations, the programmable switch may inspect a packet to identify a data size for a payload of the packet. Cache metric module 12 may then calculate the bandwidth for the application by adding payload sizes for packets originating from the application and dividing the sum by a period of time during which the packets were received. In other implementations, cache metrics 14 may also or alternatively indicate cache usage in a different form, such as by indicating an overall amount of data accessed in the cache by an application.
The hit rate can be determined by inspecting a packet returned from the node storing the cache to identify a field in the packet indicating a cache hit or cache miss. The cache hit indicates that data that was requested by a node was stored in the cache, while a cache miss indicates that the data requested was not stored in the cache. In some implementations, this field may be part of a custom protocol used by devices on network 100. Cache metric module 12 may calculate the hit rate for the application by dividing the number of packets with fields indicating a cache hit by a total number of packets for the application indicating cache hits and cache misses. A destination port number identified in the packet may be used to associate the cache hit and miss indications with the application. A cache module, such as cache module 26 executed by node 108 in
The priority of an application can be determined by identifying a priority field, such as the 802.1Q tag in an Ethernet header as part of the IEEE 802.1Qbb Priority-based Flow Control (PFC) standard. Cache metric module 12 can determine the priority of the application by associating the priority field with the source or destination port number corresponding to the application. In the example of
Cache metrics 14 can be updated by the programmable switch to add new applications accessing the one or more caches associated with the programmable switch or to remove applications that have not accessed the cache during a predetermined period of time (e.g., 5 minutes). In some implementations, cache metrics 14 may include metadata or a column indicating when the cache metrics were last updated by the programmable switch to remove cache metrics for inactive applications. In some cases, the programmable switch may receive a packet from a node executing the application and inspect the packet to identify a release or completion indication indicating that the application no longer needs the cache. In such cases, the programmable switch may delete the cache metrics (i.e., a row in the example cache metrics 14 in
In addition, the programmable switch may also reallocate or redistribute the memory addresses previously allocated or assigned to the inactive application or application that sent the completion. As shown in
Cache management module 10 of the programmable switch can use cache metrics 14 to adjust or allocate cache memory. For example, applications with a greater write-to-read ratio may be assigned a larger portion of cache memory to reduce latency if writes to a storage device (e.g., storage device 121 in
As will be appreciated by those of ordinary skill in the art in light of the present disclosure, cache metrics 14 may include different information than shown in
In block 402, the programmable switch inspects packets to identify information related to access of a cache provided by at least one node (e.g., node 108 in
In block 404, the programmable switch determines one or more cache metrics based on the information identified in block 402. The cache metrics can include, for example, priorities associated with different applications accessing the cache, a write-to-read ratio or read-to-write ratio for an application, memory bandwidths for different applications accessing the cache, and/or indication of cache hit rates or cache miss rates for different applications accessing the cache. In some implementations, a cache metric module (e.g., cache metric module 12 in
In block 406, the programmable switch allocates at least a portion of the cache to at least one application based on the cache metrics determined in block 408. In some implementations, cache management module 10 may use the cache metrics to determine an amount or address range of available cache memory to allocate to an application. During operation, the cache management module may adjust the allocations of cache memory to different applications based on updated cache metrics, inactivity of an application, release of cache memory by an application, or a message from network controller 120 indicating an adjustment to the allocation of the distributed cache.
In block 408, the programmable switch sends the cache metrics determined in block 404 to network controller 120 or to a different programmable switch. The sending of cache metrics may occur periodically to update distributed cache metrics 20 stored by network controller 120. In implementations where the cache metrics are shared with other programmable switches, such as an aggregated switch 104 or other ToR switch 102, the other programmable switch may update some or all of its cache metrics based on the received cache metrics.
The collection of cache metrics from throughout network 100 can ordinarily enable network controller 120 to provide dynamic management of a distributed cache to adjust for changing workloads and accommodate for nodes or other devices in network 100 that may become unavailable. The sharing of cache metrics among different programmable switches and network controller 120 can also better tailor the allocation of cache memory to different applications executing on different nodes in network 100. For example, if a server rack 101 has unused cache memory, network controller 120 may allocate the unused cache memory to an application executing at a node in a different server rack that may otherwise not have enough cache memory available in its own server rack.
Those of ordinary skill in the art will appreciate with reference to the present disclosure that the order of blocks for the cache allocation process of
In block 502, the programmable switch determines that an application is no longer accessing a shared cache provided by at least one node (e.g., node 108 in
In block 504, the programmable switch redistributes a portion of the cache memory that was allocated to the application determined to no longer access the cache. In redistributing the cache memory, cache management module 10 may reevaluate cache metrics 14 and/or may reallocate the portion of cache memory in the same percentages as currently allocated to other applications still accessing the cache.
In block 602, the network controller receives cache metrics from programmable switches for shared caches stored at nodes in network 100 that form a distributed cache. The cache metrics may include those discussed above for the example of cache metrics 14 in
The network controller in block 604 updates distributed cache metrics 20 in block 604 based on the cache metrics received in block 602. In some cases, distributed cache management module 18 may aggregate or recalculate cache metrics for an application that accesses shared caches in different server racks 101. In such cases, the distributed cache metrics for a particular application represent cache metrics from received from different programmable switches. In this regard, the application may also be executed by nodes in different server racks. The distributed cache metrics maintained by the network controller may include, for example, priorities associated with different applications using the distributed cache, write-to-read ratios or read-to-write ratios for applications accessing the distributed cache, memory bandwidths or memory usage of the distributed cache by different applications, and/or cache hit rates or cache miss rates for different applications using the distributed cache.
In block 606, the network controller allocates portions of the distributed cache to different applications based on the distributed cache metrics updated in block 604. For example, distributed cache management module 18 may determine that a first application with a greater write-to-read ratio should be allocated more memory in the distributed cache than a second application with a lower write-to-read ratio. As another example, distributed cache management module 18 may determine that an application with a lower cache hit rate and higher bandwidth should be allocated more memory in the distributed cache than another application with a higher cache hit rate and lower bandwidth.
In block 608, the network controller sends at least one message to at least one programmable switch indicating one or more adjustments to the allocation of cache memory based on the allocation of portions of the distributed cache in block 606. Distributed cache management module 18 may identify the programmable switches that can redistribute or reallocate the cache memory or cache memories in their server rack 101 or in their cluster (e.g., such as for an aggregated switch 104) and send the identified programmable switches messages indicating the adjustment to the cache allocation. In some implementations, distributed cache management module 18 may also send messages to nodes executing the application or applications to notify the applications of the new locations for accessing the reallocated portions of the distributed cache. In other implementations, the programmable switches may instead notify the nodes executing the applications or application of the location of the cache memory allocated to the applications or application.
Those of ordinary skill in the art will appreciate with reference to the present disclosure that the order of blocks for the cache allocation process of
As discussed above, the use of in-line programmable switches and/or a network controller as a centralized point for determining cache metrics and allocating cache memory improves the coherency of the cache allocations and can provide for a more effective usage of a distributed cache. By adjusting cache allocations among different applications or programs during runtime, it is ordinarily possible to tailor use of the distributed cache to the actual workloads and needs of applications.
Those of ordinary skill in the art will appreciate that the various illustrative logical blocks, modules, and processes described in connection with the examples disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. Furthermore, the foregoing processes can be embodied on a computer readable medium which causes processor or controller circuitry to perform or execute certain functions.
To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, and modules have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Those of ordinary skill in the art may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.
The various illustrative logical blocks, units, modules, processor circuitry, and controller circuitry described in connection with the examples disclosed herein may be implemented or performed with a general purpose processor, a GPU, a DSP, an ASIC, an FPGA or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A general purpose processor may be a microprocessor, but in the alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. Processor or controller circuitry may also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, an SoC, one or more microprocessors in conjunction with a DSP core, or any other such configuration.
The activities of a method or process described in connection with the examples disclosed herein may be embodied directly in hardware, in a software module executed by processor or controller circuitry, or in a combination of the two. The steps of the method or algorithm may also be performed in an alternate order from those provided in the examples. A software module may reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable media, an optical media, or any other form of storage medium known in the art. An exemplary storage medium is coupled to processor or controller circuitry such that the processor or controller circuitry can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to processor or controller circuitry. The processor or controller circuitry and the storage medium may reside in an ASIC or a System on a Chip (SoC).
The foregoing description of the disclosed example embodiments is provided to enable any person of ordinary skill in the art to make or use the embodiments in the present disclosure. Various modifications to these examples will be readily apparent to those of ordinary skill in the art, and the principles disclosed herein may be applied to other examples without departing from the spirit or scope of the present disclosure. The described embodiments are to be considered in all respects only as illustrative and not restrictive. In addition, the use of language in the form of “at least one of A and B” in the following claims should be understood to mean “only A, only B, or both A and B.”
Number | Name | Date | Kind |
---|---|---|---|
6044438 | Olnowich | Mar 2000 | A |
6078997 | Young et al. | Jun 2000 | A |
6108737 | Sharma et al. | Aug 2000 | A |
6209065 | Van Doren et al. | Mar 2001 | B1 |
6230243 | Elko et al. | May 2001 | B1 |
6263404 | Borkenhagen et al. | Jul 2001 | B1 |
6298418 | Fujiwara et al. | Oct 2001 | B1 |
6343346 | Olnowich | Jan 2002 | B1 |
6775804 | Dawson | Aug 2004 | B1 |
6829683 | Kuskin | Dec 2004 | B1 |
6868439 | Basu et al. | Mar 2005 | B2 |
6954844 | Lentz et al. | Oct 2005 | B2 |
6993630 | Williams et al. | Jan 2006 | B1 |
7032078 | Cypher et al. | Apr 2006 | B2 |
7376799 | Veazey et al. | May 2008 | B2 |
7673090 | Kaushik et al. | Mar 2010 | B2 |
7716425 | Uysal et al. | May 2010 | B1 |
7975025 | Szabo et al. | Jul 2011 | B1 |
8166251 | Luttrell | Apr 2012 | B2 |
8281075 | Arimilli et al. | Oct 2012 | B2 |
9088592 | Craft et al. | Jul 2015 | B1 |
9313604 | Holcombe | Apr 2016 | B1 |
9442850 | Rangarajan et al. | Sep 2016 | B1 |
9467380 | Hong et al. | Oct 2016 | B2 |
9712381 | Emanuel et al. | Jul 2017 | B1 |
9819739 | Hussain et al. | Nov 2017 | B2 |
9825862 | Bosshart | Nov 2017 | B2 |
9826071 | Bosshart | Nov 2017 | B2 |
9880768 | Bosshart | Jan 2018 | B2 |
9910615 | Bosshart | Mar 2018 | B2 |
9912610 | Bosshart et al. | Mar 2018 | B2 |
9923816 | Kim et al. | Mar 2018 | B2 |
9936024 | Malwankar et al. | Apr 2018 | B2 |
9940056 | Bosshart | Apr 2018 | B2 |
10038624 | Cruz et al. | Jul 2018 | B1 |
10044583 | Kim et al. | Aug 2018 | B2 |
10050854 | Licking et al. | Aug 2018 | B1 |
10063407 | Kodeboyina et al. | Aug 2018 | B1 |
10063479 | Kim et al. | Aug 2018 | B2 |
10063638 | Huang | Aug 2018 | B2 |
10067967 | Bosshart | Sep 2018 | B1 |
10075567 | Licking et al. | Sep 2018 | B1 |
10078463 | Bosshart | Sep 2018 | B1 |
10084687 | Sharif et al. | Sep 2018 | B1 |
10110454 | Kim et al. | Oct 2018 | B2 |
10127983 | Peterson et al. | Nov 2018 | B1 |
10133499 | Bosshart | Nov 2018 | B2 |
10146527 | Olarig et al. | Dec 2018 | B2 |
10158573 | Lee | Dec 2018 | B1 |
10164829 | Watson et al. | Dec 2018 | B1 |
10169108 | Gou et al. | Jan 2019 | B2 |
10225381 | Bosshart | Mar 2019 | B1 |
10230810 | Bhide et al. | Mar 2019 | B1 |
10237206 | Agrawal et al. | Mar 2019 | B1 |
10257122 | Li et al. | Apr 2019 | B1 |
10268634 | Bosshart et al. | Apr 2019 | B1 |
10298456 | Chang | May 2019 | B1 |
10496566 | Olarig et al. | Dec 2019 | B2 |
10503679 | Huang | Dec 2019 | B2 |
10628353 | Prabhakar et al. | Apr 2020 | B2 |
10635316 | Singh et al. | Apr 2020 | B2 |
10742557 | Miriyala | Aug 2020 | B1 |
10761995 | Blaner et al. | Sep 2020 | B2 |
10812388 | Thubert et al. | Oct 2020 | B2 |
10880204 | Shalev et al. | Dec 2020 | B1 |
20030009637 | Arimilli et al. | Jan 2003 | A1 |
20030028819 | Chiu et al. | Feb 2003 | A1 |
20030158999 | Hauck et al. | Aug 2003 | A1 |
20040044850 | George et al. | Mar 2004 | A1 |
20040073699 | Hong et al. | Apr 2004 | A1 |
20040260883 | Wallin et al. | Dec 2004 | A1 |
20050058149 | Howe | Mar 2005 | A1 |
20060265568 | Burton | Nov 2006 | A1 |
20060271598 | Wong et al. | Nov 2006 | A1 |
20070067382 | Sun | Mar 2007 | A1 |
20080010409 | Rao et al. | Jan 2008 | A1 |
20090213850 | Viger et al. | Aug 2009 | A1 |
20090240664 | Dinker et al. | Sep 2009 | A1 |
20090240869 | O'Krafka et al. | Sep 2009 | A1 |
20090313503 | Atluri et al. | Dec 2009 | A1 |
20100008260 | Kim et al. | Jan 2010 | A1 |
20100100604 | Fujiwara | Apr 2010 | A1 |
20100223322 | Mott et al. | Sep 2010 | A1 |
20110004729 | Akkawi et al. | Jan 2011 | A1 |
20110093925 | Krishnamoorthy et al. | Apr 2011 | A1 |
20110238923 | Hooker et al. | Sep 2011 | A1 |
20120110108 | Li et al. | May 2012 | A1 |
20120155264 | Sharma et al. | Jun 2012 | A1 |
20130054897 | Flemming | Feb 2013 | A1 |
20130145008 | Kannan | Jun 2013 | A1 |
20130254325 | Song et al. | Sep 2013 | A1 |
20130263249 | Song et al. | Oct 2013 | A1 |
20140219284 | Chau et al. | Aug 2014 | A1 |
20140241361 | Bosshart | Aug 2014 | A1 |
20140269413 | Hui et al. | Sep 2014 | A1 |
20140269716 | Pruss et al. | Sep 2014 | A1 |
20140278575 | Anton et al. | Sep 2014 | A1 |
20140331001 | Liu et al. | Nov 2014 | A1 |
20140362709 | Kashyap et al. | Dec 2014 | A1 |
20150120859 | Kondo | Apr 2015 | A1 |
20150195216 | Di Pietro et al. | Jul 2015 | A1 |
20150301949 | Koka et al. | Oct 2015 | A1 |
20150319243 | Hussain et al. | Nov 2015 | A1 |
20150378919 | Anantaraman et al. | Dec 2015 | A1 |
20160050150 | Venkatesan et al. | Feb 2016 | A1 |
20160099872 | Kim et al. | Apr 2016 | A1 |
20160112514 | Prakash Usgaonkar | Apr 2016 | A1 |
20160124652 | Adamson | May 2016 | A1 |
20160127492 | Malwankar et al. | May 2016 | A1 |
20160134531 | Assarpour | May 2016 | A1 |
20160156558 | Hong et al. | Jun 2016 | A1 |
20160216913 | Bosshart | Jul 2016 | A1 |
20160246507 | Bosshart | Aug 2016 | A1 |
20160246535 | Bosshart | Aug 2016 | A1 |
20160294451 | Jung et al. | Oct 2016 | A1 |
20160315964 | Shetty et al. | Oct 2016 | A1 |
20160323189 | Ahn et al. | Nov 2016 | A1 |
20170026292 | Smith et al. | Jan 2017 | A1 |
20170054618 | Kim | Feb 2017 | A1 |
20170054619 | Kim | Feb 2017 | A1 |
20170063690 | Bosshart | Mar 2017 | A1 |
20170064047 | Bosshart | Mar 2017 | A1 |
20170093707 | Kim et al. | Mar 2017 | A1 |
20170093986 | Kim et al. | Mar 2017 | A1 |
20170093987 | Kaushalram et al. | Mar 2017 | A1 |
20170187846 | Shalev et al. | Jun 2017 | A1 |
20170214599 | Seo et al. | Jul 2017 | A1 |
20170277477 | Xi | Sep 2017 | A1 |
20170286363 | Joshua et al. | Oct 2017 | A1 |
20170310594 | Kotha | Oct 2017 | A1 |
20170371790 | Dwiel et al. | Dec 2017 | A1 |
20180034740 | Beliveau et al. | Feb 2018 | A1 |
20180060136 | Herdrich et al. | Mar 2018 | A1 |
20180167319 | Qian | Jun 2018 | A1 |
20180167352 | Worley et al. | Jun 2018 | A1 |
20180173448 | Bosshart | Jun 2018 | A1 |
20180176324 | Kumar et al. | Jun 2018 | A1 |
20180234340 | Kim et al. | Aug 2018 | A1 |
20180234355 | Kim et al. | Aug 2018 | A1 |
20180239551 | Bosshart | Aug 2018 | A1 |
20180242191 | Lundqvist et al. | Aug 2018 | A1 |
20180260135 | Hayashida et al. | Sep 2018 | A1 |
20180260330 | Felter et al. | Sep 2018 | A1 |
20180262459 | Wang et al. | Sep 2018 | A1 |
20180285275 | Barczak et al. | Oct 2018 | A1 |
20180329818 | Cheng et al. | Nov 2018 | A1 |
20180335953 | Ramaswamy et al. | Nov 2018 | A1 |
20180337860 | Kim et al. | Nov 2018 | A1 |
20180349163 | Gao et al. | Dec 2018 | A1 |
20180349285 | Ish et al. | Dec 2018 | A1 |
20190012278 | Sindhu et al. | Jan 2019 | A1 |
20190018774 | Birke | Jan 2019 | A1 |
20190042138 | Guim Bernat | Feb 2019 | A1 |
20190044878 | Steffen et al. | Feb 2019 | A1 |
20190050333 | Chacon et al. | Feb 2019 | A1 |
20190058646 | Kim et al. | Feb 2019 | A1 |
20190087341 | Pugsley et al. | Mar 2019 | A1 |
20190146675 | Subramanian et al. | May 2019 | A1 |
20190146907 | Frolikov | May 2019 | A1 |
20190196987 | Shen et al. | Jun 2019 | A1 |
20190220429 | Ranjan et al. | Jul 2019 | A1 |
20190227921 | Frolikov | Jul 2019 | A1 |
20190342785 | Li et al. | Nov 2019 | A1 |
20190354402 | Bivens et al. | Nov 2019 | A1 |
20190370176 | Priyadarshi et al. | Dec 2019 | A1 |
20190391928 | Lin | Dec 2019 | A1 |
20190394261 | DeCusatis et al. | Dec 2019 | A1 |
20200007408 | Siddappa | Jan 2020 | A1 |
20200050402 | Furey et al. | Feb 2020 | A1 |
20200065269 | Balasubramani et al. | Feb 2020 | A1 |
20200068014 | Sarkar et al. | Feb 2020 | A1 |
20200089619 | Hsu et al. | Mar 2020 | A1 |
20200097212 | Lakshman et al. | Mar 2020 | A1 |
20200151104 | Yang | May 2020 | A1 |
20200213156 | Cheng et al. | Jul 2020 | A1 |
20200226068 | Gellerich et al. | Jul 2020 | A1 |
20200233823 | Zhang | Jul 2020 | A1 |
20200250099 | Campbell et al. | Aug 2020 | A1 |
20200259763 | Guim Bernat | Aug 2020 | A1 |
20200293499 | Kohli et al. | Sep 2020 | A1 |
20200313999 | Lee | Oct 2020 | A1 |
20200322287 | Connor | Oct 2020 | A1 |
20200349080 | Radi et al. | Nov 2020 | A1 |
20200351370 | Radi | Nov 2020 | A1 |
20200379668 | Akaike et al. | Dec 2020 | A1 |
20200379922 | Kumar | Dec 2020 | A1 |
20210034250 | Mizuno et al. | Feb 2021 | A1 |
20210034270 | Gupta et al. | Feb 2021 | A1 |
20210049078 | Khan et al. | Feb 2021 | A1 |
20210051751 | Pawar | Feb 2021 | A1 |
20210073086 | Subraya et al. | Mar 2021 | A1 |
20210141910 | Numata | May 2021 | A1 |
20210149807 | Gupta et al. | May 2021 | A1 |
20210173589 | Benisty et al. | Jun 2021 | A1 |
20210194828 | He et al. | Jun 2021 | A1 |
20210218623 | Jain et al. | Jul 2021 | A1 |
20210247935 | Beygi et al. | Aug 2021 | A1 |
20210266219 | Kim | Aug 2021 | A1 |
20210286540 | Tylik et al. | Sep 2021 | A1 |
20210286546 | Hodgson | Sep 2021 | A1 |
20210294506 | Tadokoro | Sep 2021 | A1 |
20210294702 | Guim Bernat | Sep 2021 | A1 |
20210311899 | Smith et al. | Oct 2021 | A1 |
20210318828 | Valtonen | Oct 2021 | A1 |
20220197819 | Kumar | Jun 2022 | A1 |
20220210220 | Shivanna | Jun 2022 | A1 |
Number | Date | Country |
---|---|---|
102163279 | Oct 2020 | KR |
Entry |
---|
Marjan Radi et al., “OmniXtend: direct to caches over commodity fabric”, in 2019 IEEE Symposium on High-Performance Interconnects (HOTI), Santa Clara, CA, USA, Aug. 2019 pp. 59-62. (Year: 2019). |
Ming Liu et al., “IncBricks: toward in-network computation with an in-network cache”, ASPLOS '17: Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems, Apr. 2017 pp. 795-809 (Year: 2017). |
Xin Jin et al., “Netcache: balancing key-value stores with fast in-network caching”, SOSP '17: Proceedings of the 26th Symposium on Operating Systems Principles, Oct. 2017, pp. 121-136 (Year: 2017). |
Zaoxing Liu et al., “DistCache: provable load balancing for large-scale storage systems with distributed caching”, FAST'19: Proceedings of the 17th USENIX Conference on File and Storage Technologies, Feb. 2019, pp. 143-157 (Year: 2019). |
Qing Wang et al., “Concordia: Distributed Shared Memory with In-Network Cache Coherence”, 19th USENIX Conference on File and Storage Technologies, pp. 277-292, Feb. 2021 (Year: 2021). |
Jin et al., NetCache: Balancing Key-Value Stores with Fast In-Network Caching, SOSP '17: Proceedings of the 26th Symposium on Operating Systems Principles, Oct. 2017 pp. 121-136 (Year: 2017). |
Hashemi et al.; “Learning Memory Access Patters”; 15 pages; Mar. 6, 2018; available at https://arxiv.org/pdf/1803.02329.pdf. |
Kim, et al.; “A Framework for Data Prefetching using Off-line Training of Markovian Predictors”; Sep. 18, 2002; 8 pages; available at https://www.comp.nus.edu.sg/˜wongwf/papers/ICCD2002.pdf. |
Cisco White Paper; “Intelligent Buffer Management on Cisco Nexus 9000 Series Switches”; Jun. 6, 2017; 22 pages; available at: https://www.cisco.com/c/en/us/products/collateral/switches/nexus-9000-series-switches/white-paper-c11-738488.html. |
Pending U.S. Appl. No. 17,174,681, filed Feb. 12, 2021, entitled “Devices and Methods for Network Message Sequencing”, Marjan Radi et al. |
Pending U.S. Appl. No. 17,175,449, filed Feb. 12, 2021, entitled “Management of Non-Volatile Memory Express Nodes”, Marjan Radi et al. |
Written Opinion dated Feb. 20, 2020 from International Application No. PCT/US2019/068360, 4 pages. |
Botelho et al.; “On the Design of Practical Fault-Tolerant SDN Controllers”; Sep. 2014; 6 pages; available at: http://www.di.fc.ul.pt/˜bessani/publications/ewsdn14-ftcontroller.pdf. |
Huynh Tu Dang; “Consensus Protocols Exploiting Network Programmability”; Mar. 2019; 154 pages; available at: https://doc.rero.ch/record/324312/files/2019INFO003.pdf. |
Jialin Li; “Co-Designing Distributed Systems with Programmable Network Hardware”; 2019; 205 pages; available at: https://digital.lib.washington.edu/researchworks/bitstream/handle/1773/44770/Li_washington_0250E_20677.pdf?sequence=1&isAllowed=y. |
Liu et al.; “Circuit Switching Under the Radar with REACTOR”; Apr. 2-4, 2014; 16 pages; USENIX; available at: https://www.usenix.org/system/files/conference/nsdi14/nsdi14-paper-liu_he.pdf. |
International Search Report and Written Opinion dated Apr. 27, 2020 from counterpart International Application No. PCT/US2019/068269, 6 pages. |
Leslie Lamport; “Paxos Made Simple”; Nov. 1, 2001; available at: https://lamport.azurewebsites.net/pubs/paxos-simple.pdf. |
Paul Krzyzanowski; “Understanding Paxos”; PK.org; Distributed Systems; Nov. 1, 2018; available at: https://www.cs.rutgers.edu/˜pxk/417/notes/paxos.html. |
Wikipedia; Paxos (computer science); accessed on Jun. 27, 2020; available at: https://en.wikipedia.org/wiki/Paxos_(computer_science). |
Pending U.S. Appl. No. 16/916,730, filed Jun. 30, 2020, entitled “Devices and Methods for Failure Detection and Recovery for a Distributed Cache”, Radi et al. |
Ivan Pepelnjak; Introduction to 802.1Qbb (Priority-based Flow Control-PFC); accessed on Jun. 25, 2020; available at: https://gestaltit.com/syndicated/ivan/introduction-802-1qbb-priority-based-flow-control-pfc/. |
Juniper Networks Inc.; Configuring Priority-Based Flow Control for an EX Series Switch (CLI Procedure); Sep. 25, 2019; available at: https://www.juniper.net/documentation/en_US/junos/topics/task/configuration/cos-priority-flow-control-cli-ex-series.html. |
Pending U.S. Appl. No. 16/914,206, filed Jun. 26, 2020, entitled “Devices and Methods for Managing Network Traffic for a Distributed Cache”, Radi et al. |
Eisley et al.; “In-Network Cache Coherence”; 2006; pp. 321-332; Proceedings of the 39th Annual IEEE/ACM International Symposium on Microarchitecture. |
Jin et al.; “NetCache: Balancing Key-Value Stores with Fast In-Network Caching”; Oct. 28, 2017; pp. 121-136; Proceedings of the 26th Symposium on Operating Systems Principles. |
Li et al.; “Pegasus: Load-Aware Selective Replication with an In-Network Coherence Directory”; Dec. 2018; 15 pages; Technical Report UW-CSE-18-12-01, University of Washington CSE, Seattle, WA. |
Liu et al.; “IncBricks: Toward In-Network Computation with an In-Network Cache”; Apr. 2017; pp. 795-809; ACM SIGOPS Operating Systems Review 51, Jul. 26, No. 2. |
Pending U.S. Appl. No. 16/697,019, filed Nov. 26, 2019, entitled “Fault Tolerant Data Coherence in Large-Scale Distributed Cache Systems”, Marjan Radi et al. |
Vestin et al.; “FastReact: In-Network Control and Caching for Industrial Control Networks using Programmable Data Planes”; Aug. 21, 2018; pp. 219-226; IEEE 23rd International Conference on Emerging Technologies and Factory Automation (ETFA). vol. 1. |
Stefanovici et al.; “Software-Defined Caching: Managing Caches in Multi-Tenant Data Centers”; Aug. 2015; pp. 174-181; SoCC '15: Proceedings of the Sixth ACM Symposium on Cloud Computing; available at: http://dx.doi.org/10.1145/2806777.2806933. |
Mahmood et al.; “Efficient Caching through Stateful SDN in Named Data Networking”; Dec. 14, 2017; Transactions on Emerging Telecommunications Technologies; vol. 29, issue 1; available at: https://onlinelibrary.wiley.com/doi/abs/10.1002/ett.3271. |
Liu et al.; “DistCache: Provable Load Balancing for Large-Scale Storage Systems with Distributed Caching”; Feb. 2019; Proceedings of the 17th USENIX Conference on File and Storage Technologies; available at: https://www.usenix.org/conference/fast19/presentation/liu. |
Pending U.S. Appl. No. 16/548, 116, filed Aug. 22, 2019, entitled “Distributed Cache With In-Network Prefetch”, Marjan Radi et al. |
Ibrar et al.; “PrePass-Flow: A Machine Learning based Technique to Minimize ACL Policy Violation Due to Links Failure in Hybrid SDN”; Nov. 20, 2020; Computer Networks; available at https://doi.org/10.1016/j.comnet.2020.107706. |
Saif et al.; “IOscope: A Flexible I/O Tracer for Workloads' I/O Pattern Characterization”; Jan. 25, 2019; International Conference on High Performance Computing; available at https://doi.org/10.1007/978-3-030-02465-9_7. |
Zhang et al.; “PreFix Switch Failure Prediction in Datacenter Networks”; Mar. 2018; Proceedings of the ACM on the Measurement and Analysis of Computing Systems; available at: https://doi.org/10.1145/3179405. |
Pending U.S. Appl. No. 17/353,781, filed Jun. 21, 2021, entitled “In-Network Failure Indication and Recovery”, Marjan Radi et al. |
International Search Report and Written Opinion dated Oct. 28, 2021 from International Application No. PCT/US2021/039070, 7 pages. |
International Search Report and Written Opinion dated Jun. 1, 2022 from International Application No. PCT/US2022/017608, 7 pages. |
Intel Corporation; “In-Band Network Telemetry Detects Network Performance Issues”; White Paper, Dec. 18, 2020; available at: https://builders.intel.com/docs/networkbuilders/in-band-network-telemetry-detects-network-performance-issues.pdf. |
International Search Report and Written Opinion dated Jul. 7, 2022 from International Application No. PCT/US2022/017633, 10 pages. |
Sabella et al.; “Using eBPF for network traffic analysis”; available at: Year: 2018; https://www.ntop.org/wp-content/uploads/2018/10/Sabella.pdf. |
Number | Date | Country | |
---|---|---|---|
20220385732 A1 | Dec 2022 | US |