IP Library Granted Patent US 9,614,775
Granted Patent B2
US 9,614,775 · App. 14/609,842 · Granted Apr 4, 2017

Data transmission using modified weighted fair queue algorithm

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 9,614,775
App. No.
14/609,842
Granted
Apr 4, 2017
Kind
B2
Abstract

To transmit data packets over a shared data path, data packets of a first message and a second message are received and stored, respectively, in first and second queues. First and second data packets are then extracted from, respectively, the first and second messages. First and second priority values are calculated, respectively, for the first and second data packets and are associated thereto. If the first priority value is determined to be lower than the second priority value, then the first packet is transmitted over the shared data path. If the second priority value is determined to be lower than the first priority value, then the second packet is transmitted over the shared data path.

Claims (78)

1. A method of transmitting data received from a plurality of data sources over a shared data path, the method comprising:

receiving and storing data of a first message in a first queue and extracting a first data chunk from the first message;

receiving and storing data of a second message in a second queue and extracting a second data chunk from the second message;

storing the extracted first and second data chunks in a third queue, wherein the third queue is configured to store a next data chunk, if any, to be sent from each of the first and second queues;

calculating first and second priority values for the first and second data chunks, respectively;

associating the first and second priority values, respectively, with the first and second data chunks stored in the third queue;

determining which of the first and second priority values indicates a higher priority;

if the first priority value indicates the higher priority, transmitting the first data chunk over the shared data path; and

if the second priority value indicates the higher priority, transmitting the second data chunk over the shared data path.

2. The method of claim 1 , wherein the first and second priority values are calculated based on, respectively, priorities assigned to the first and second queues.

3. The method of claim 2 , wherein the first and second priority values are calculated based on, respectively, sizes of the first and second data chunks.

4. The method of claim 3 , further comprising:

storing the priority value associated with the transmitted data chunk as a virtual time; and

calculating a third priority value based on the virtual time, the priority assigned to the queue storing the message from which the transmitted data chunk was extracted, and the size of the transmitted data chunk.

5. The method of claim 4 , further comprising:

extracting a third data chunk from the message from which the transmitted data chunk was extracted; and

associating the third priority value with the third data chunk.

6. The method of claim 5 , further comprising:

determining that the third priority value matches a priority value previously associated with a data chunk extracted from one of the messages; and

responsive to the determining:

adjusting the third priority value to a value that does not match a priority value associated with any data chunk, and

associating the adjusted third priority value with the third data chunk.

7. The method of claim 2 , further comprising:

determining that the priority assigned to one of the first and second queues has changed; and

responsive to the determining, recalculating the priority value for the data chunk extracted from the message stored in the queue to which the changed priority is assigned.

8. The method of claim 4 , further comprising:

determining that the virtual time exceeds a maximum value; and

responsive to the determining:

setting the virtual time to an initial value, and

recalculating each of the priority values associated with the data chunks, based on the virtual time.

9. A non-transitory computer-readable medium that stores instructions that are executable by a host computer, where the instructions, when executed, cause the host computer to perform a method of transmitting data received from a plurality of data sources over a shared data path, the method comprising:

receiving and storing data of a first message in a first queue and extracting a first data chunk from the first message;

receiving and storing data of a second message in a second queue and extracting a second data chunk from the second message;

storing the extracted first and second data chunks in a third queue, wherein the third queue is configured to store a next data chunk, if any, to be sent from each of the first and second queues;

calculating first and second priority values for the first and second data chunks, respectively;

associating the first and second priority values, respectively, with the first and second data chunks stored in the third queue;

determining which of the first and second priority values indicates a higher priority;

if the first priority value indicates the higher priority, transmitting the first data chunk over the shared data path; and

if the second priority value indicates the higher priority, transmitting the second data chunk over the shared data path.

10. The computer-readable medium of claim 9 , wherein calculating the first and second priority values is based on, respectively, priorities assigned to the first and second queues.

11. The computer-readable medium of claim 10 , wherein calculating the first and second priority values is based on, respectively, sizes of the first and second data chunks.

12. The computer-readable medium of claim 11 , wherein the method further comprises:

storing the priority value associated with the transmitted data chunk as a virtual time; and

calculating a third priority value based on the virtual time, the priority assigned to the queue storing the message from which the transmitted data chunk was extracted, and the size of the transmitted data chunk.

13. The computer-readable medium of claim 12 , wherein the method further comprises:

extracting a third data chunk from the message from which the transmitted data chunk was extracted; and

associating the third priority value with the third data chunk.

14. The computer-readable medium of claim 13 , wherein the method further comprises:

determining that the third priority value matches a priority value previously associated with a data chunk extracted from one of the messages; and

responsive to the determining:

adjusting the third priority value to a value that does not match a priority value associated with any data chunk, and

associating the adjusted third priority value with the third data chunk.

15. The computer-readable medium of claim 10 , wherein the method further comprises:

determining that the priority assigned to one of the first and second queues has changed; and

responsive to the determining, recalculating the priority value for the data chunk extracted from the message stored in the queue to which the changed priority is assigned.

16. The computer-readable medium of claim 12 , wherein the method further comprises:

determining that the virtual time exceeds a maximum value; and

responsive to the determining:

setting the virtual time to an initial value, and

recalculating each of the priority values associated with the data chunks based on the virtual time.

17. A computer system, comprising:

a processor;

memory; and

an interface that connects the computer system to a shared data path,

wherein the processor is programmed to perform a method of transmitting data received from a plurality of data sources over the shared data path, the method comprising:

receiving and storing data of a first message in a first queue and extracting a first data chunk from the first message,

receiving and storing data packets of a second message in a second queue and extracting a second data chunk from the second message,

storing the extracted first and second data chunks in a third queue, wherein the third queue is configured to store a next data chunk, if any, to be sent from each of the first and second queues,

calculating first and second priority values for the first and second data chunks, respectively,

associating the first and second priority values, respectively, with the first and second data chunks stored in the third queue,

determining which of the first and second priority values indicates a higher priority,

if the first priority value indicates the higher priority, transmitting the first data chunk over the shared data path, and

if the second priority value indicates the higher priority, transmitting the second data chunk over the shared data path.

18. The system of claim 17 , wherein the first and second priority values are calculated based on, respectively, priorities assigned to the first and second queues.

19. The system of claim 18 , wherein the first and second priority values are calculated based on, respectively, sizes of the first and second data chunks.

20. The system of claim 19 , wherein the method further comprises:

storing the priority value associated with the transmitted data chunk as a virtual time; and

calculating a third priority value based on the virtual time, the priority assigned to the queue storing the message from which the transmitted data chunk was extracted, and the size of the transmitted data chunk.

Assignments (2)
CHANGE OF NAME Recorded Apr 15, 2024
From: VMWARE, INC.
To: VMWARE LLC
Reel/Frame 067102/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 30, 2015
From: LEE, PHILIP DONALD
To: VMWARE, INC.
Reel/Frame 034852/0715 →