IP Library Granted Patent US 11,765,250
Granted Patent B2
US 11,765,250 · App. 16/914,206 · Granted Sep 19, 2023

Devices and methods for managing network traffic for a distributed cache

Inventors: Marjan Radi (San Jose, CA); Dejan Vucinic (San Jose, CA)
Assignee: Western Digital Technologies, Inc.
H04L67/568G06F9/546G06F12/0824H04L43/062H04L43/0852H04L43/16H04L45/38H04L67/1097G06F2212/154
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,765,250
App. No.
16/914,206
Granted
Sep 19, 2023
Kind
B2
Abstract

A programmable switch includes ports, and circuitry to receive cache messages for a distributed cache from client devices. The cache messages are queued for sending to memory devices from the ports. Queue occupancy information is generated and sent to a controller that determines, based at least in part on the queue occupancy information, at least one of a cache message transmission rate for a client device, and one or more weights for the queues used by the programmable switch. In another aspect, the programmable switch extracts cache request information from a cache message. The cache request information indicates a cache usage and is sent to the controller, which determines, based at least in part on the extracted cache request information, at least one of a cache message transmission rate for a client device, and one or more weights for queues used in determining an order for sending cache messages.

Claims (66)

1. A programmable switch, comprising:

a plurality of ports configured for communication with a plurality of devices on a network, wherein the programmable switch is configured to route cache messages between client devices on the network and memory devices on the network; and

circuitry configured to:

receive cache messages for a distributed cache from client devices of the plurality of devices;

queue the received cache messages in queues for sending the cache messages from ports of the plurality of ports to memory devices of the plurality of devices;

determine that a queue occupancy of at least one queue at the programmable switch has reached a high threshold value;

in response to determining that the queue occupancy has reached the high threshold value, send a pause frame to at least one client device to temporarily stop the at least one client device from sending additional cache messages;

generate queue occupancy information based on queue occupancies of the queues; and

send the generated queue occupancy information to a controller on the network, wherein the controller is configured to determine, based at least in part on the queue occupancy information, at least one of:

one or more cache message transmission rates for one or more client devices of the plurality of devices, and

one or more weights for one or more queues used by the programmable switch in determining an order for sending cache messages.

2. The programmable switch of claim 1 , wherein the circuitry is further configured to:

receive a cache message from a device of the plurality of devices;

extract cache request information from the received cache message, the cache request information indicating a usage of the distributed cache; and

send the extracted cache request information to the controller, wherein the controller is further configured to determine, based at least in part on the extracted cache request information, at least one of:

the one or more cache message transmission rates for one or more client devices of the plurality of devices, and

the one or more weights for one or more queues used by the programmable switch in determining an order for sending cache messages.

3. The programmable switch of claim 2 , wherein the cache request information indicates at least one of a cache message request rate for the device, a number of pending cache requests at the device, a ratio between cache read requests and cache write requests for the device, and a capacity to receive cache messages at the device.

4. The programmable switch of claim 1 , wherein the circuitry is further configured to determine the high threshold value based on at least one of a maximum cache message size, a buffer size of the programmable switch for temporarily storing the cache messages, a bit rate of at least one port of the plurality of ports, a network latency for transmitting messages between the at least one client device and the programmable switch, and a cache message processing latency of the circuitry.

5. The programmable switch of claim 1 , wherein the circuitry is further configured to:

determine that the queue occupancy has reached an additional high threshold value; and

in response to determining that the queue occupancy has reached the additional high threshold value, send a pause frame to one or more additional client devices to temporarily stop the one or more additional client devices from sending additional cache messages.

6. The programmable switch of claim 1 , wherein the circuitry is further configured to:

extract a priority indicator from a cache message received from a client device of the plurality of devices; and

identify, based at least in part on the extracted priority indicator, a queue for queuing the cache message to be sent from a port of the plurality of ports, wherein the port is configured to send cache messages from a plurality of queues associated with different respective priority indicators.

7. The programmable switch of claim 1 , wherein the circuitry is further configured to identify, based at least in part on a size of a message flow including the cache message, a queue for queuing the cache message to be sent from a port of the programmable switch, and wherein the port is configured to send cache messages from a plurality of queues.

8. A method of managing network traffic for a distributed cache, the method comprising:

receiving a cache message at a programmable switch on a network from a device on the network, wherein the programmable switch is configured to route cache messages between devices on the network;

extracting a priority indicator from the cache message;

identifying, based at least in part on the extracted priority indicator, a queue for queuing the cache message to be sent from a port of the programmable switch, wherein the port is configured to send cache messages from a plurality of queues associated with different respective priority indicators;

queuing the received cache message in the queue at the programmable switch;

determining, by the programmable switch, that a queue occupancy of the queue has reached a high threshold value; and

in response to determining that the queue occupancy has reached the high threshold value, sending, by the programmable switch, a pause frame to at least one client device to temporarily stop the at least one client device from sending additional cache messages to the programmable switch.

9. The method of claim 8 , further comprising:

extracting, by the programmable switch, cache request information from the received cache message, the cache request information indicating a cache usage of the distributed cache; and

sending, by the programmable switch, the extracted cache request information to a controller on the network, wherein the controller is configured to determine, based at least in part on the extracted cache request information, at least one of:

one or more cache message transmission rates for one or more client devices using the distributed cache, and

one or more weights for one or more queues used by the programmable switch in determining an order for sending cache messages.

10. The method of claim 8 , further comprising identifying, based at least in part on a size of a message flow including the cache message, the queue for queuing the cache message to be sent from the port of the programmable switch.

11. The method of claim 8 , further comprising:

generating, by the programmable switch, queue occupancy information based on queue occupancies of the plurality of queues; and

sending the generated queue occupancy information to a controller, wherein the controller is further configured to determine, based at least in part on the queue occupancy information, at least one of:

one or more cache message transmission rates for one or more client devices using the distributed cache, and

one or more weights for one or more queues used by the programmable switch in determining an order for sending cache messages.

12. The method of claim 9 wherein the cache request information indicates at least one of a cache message request rate for the device, a number of pending cache requests at the device, a ratio between cache read requests and cache write requests for the device, and a capacity to receive cache messages at the device.

13. The method of claim 8 , further comprising determining the high threshold value based on at least one of a maximum cache message size, a buffer size of the programmable switch for temporarily storing the cache messages, a bit rate of at least one port of the plurality of ports, a network latency for transmitting messages between the at least one client device and the programmable switch, and a cache message processing latency of the programmable switch.

14. The method of claim 8 , further comprising:

determining, by the programmable switch, that the queue occupancy has reached an additional high threshold value; and

in response to determining that the queue occupancy has reached the additional high threshold value, sending a pause frame to one or more additional client devices to temporarily stop the one or more additional client devices from sending additional cache messages to the programmable switch.

15. A controller for a distributed cache, the controller comprising:

an interface configured to communicate with at least one programmable switch on a network, wherein the at least one programmable switch is configured to route cache messages between client devices on the network and memory devices on the network;

means for receiving cache request information from the at least one programmable switch on the network, wherein the cache request information is extracted from at least one cache message by the at least one programmable switch and the cache request information indicates cache request usage in the distributed cache by providing at least one of a cache message request rate for one or more devices, a number of pending cache requests at the one or more devices, a ratio between cache read requests and cache write requests for the one or more devices, and a capacity to receive cache messages at the one or more devices;

means for determining, based at least in part on the received cache request information, at least one of:

one or more cache message transmission rates for one or more client devices using the distributed cache; and

one or more weights for one or more queues used by the at least one programmable switch in determining an order for sending cache messages; and

means for sending at least one of:

the one or more cache message transmission rates to the one or more client devices to adjust a rate at which the client device sends cache messages to a programmable switch of the at least one programmable switch; and

the one or more weights to the at least one programmable switch.

16. The controller of claim 15 , further comprising:

means for receiving queue occupancy information from the at least one programmable switch, the queue occupancy information indicating queue occupancies of queues used by the at least one programmable switch in determining an order for sending cache messages; and

means for determining, based at least in part on the received queue occupancy information, at least one of

the one or more cache message transmission rates, and the one or more weights.

17. The controller of claim 15 , further comprising:

means for collecting at least one of queue occupancy information and cache request information received from the at least one programmable switch, the cache request information indicating cache request usage in the distributed cache; and

means for estimating network traffic based on the collected at least one of queue occupancy information and cache request information.

18. The programmable switch of claim 7 , wherein the identified queue is configured to queue cache messages from message flows that are greater than a threshold size.

Assignments (5)
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 053926 FRAME 0446 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058966/0321 →
SECURITY INTEREST Recorded Sep 29, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 053926/0446 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2020
From: RADI, MARJAN; VUCINIC, DEJAN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 053061/0680 →
Continuity (1)
Related Publication 20210409506A1 · Dec 30, 2021