IP Library Granted Patent US 10,999,221
Granted Patent B2
US 10,999,221 · App. 16/459,651 · Granted May 4, 2021

Transaction based scheduling

Inventors: Barak Gafni (Campbell, CA); Aviv Kfir (Nili, IL); Benny Koren (Zichron Yaakov, IL)
Assignee: MELLANOX TECHNOLOGIES TLV LTD.
H04L49/90H04L47/621H04L47/6255H04L47/805
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 10,999,221
App. No.
16/459,651
Granted
May 4, 2021
Kind
B2
Abstract

One embodiment includes a communication apparatus, including multiple interfaces including at least one egress interface to transmit packets belonging to multiple flows to a network, and control circuitry to queue packets belonging to the flows in respective flow-specific queues for transmission via a given egress interface, and to arbitrate among the flow-specific queues so as to select packets for transmission responsively to dynamically changing priorities that are assigned such that all packets in a first flow-specific queue, which is assigned a highest priority among the queues, are transmitted through the given egress interface until the first flow-specific queue is empty, after which the control circuitry assigns the highest priority to a second flow-specific queue, such that all packets in the second flow-specific queue are transmitted through the given egress interface until the second flow-specific queue is empty, after which the control circuitry assigns the highest priority to another flow-specific queue.

Claims (32)

1. A communication apparatus, comprising:

multiple interfaces including at least one egress interface, which is configured to transmit packets belonging to multiple flows to a packet data network; and

control circuitry, which is configured to:

identify a respective one of the flows to which a respective one of the packets belongs responsively to at least a part of a packet header of the respective one of the packets;

queue the packets belonging to a plurality of the flows in respective flow-specific queues for transmission via a given egress interface, including at least first and second flow-specific queues; and

arbitrate among the flow-specific queues so as to select the packets for transmission responsively to dynamically changing priorities that are assigned to the flow-specific queues, and which is configured to assign the priorities to the flow-specific queues, wherein all the packets in the first flow-specific queue, which is assigned a highest priority among the flow-specific queues, are transmitted through the given egress interface until the first flow-specific queue is empty, after which the control circuitry is configured to assign the highest priority to the second flow-specific queue, such that all the packets in the second flow-specific queue are transmitted through the given egress interface until the second flow-specific queue is empty, after which the control circuitry is configured to assign the highest priority to another of the flow-specific queues.

2. The communication apparatus according to claim 1 , wherein the control circuitry is configured to exclusively serve the first flow-specific queue so that none of the other flow-specific queues are served until after the first flow-specific queue which is currently being served is empty, after which the control circuitry is configured to exclusively serve the second flow-specific queue, none of the other flow-specific queues being served until after the second flow-specific queue which is currently being served is empty.

3. The communication apparatus according to claim 1 , wherein the control circuitry is configured to assign the priorities to the flow-specific queues responsively to any one or more of the following: a queue-age; a longest queue; a shortest queue; a flow importance; or round-robin.

4. The communication apparatus according to claim 1 , further comprising a memory, which is configured to store the packets in a plurality of physical queues, and wherein the control circuitry is configured to assign the flow-specific queues among the plurality of physical queues.

5. The communication apparatus according to claim 4 , wherein the control circuitry is configured to serve one of the physical queues to which the first flow-specific queue, assigned the highest priority, is assigned, until all the packets belonging to the first flow-specific queue have been transmitted and the first flow-specific queue is empty.

6. The communication apparatus according to claim 1 , wherein the control circuitry is configured to compute the respective one of the flows to which the respective one of the packets belongs based at least on a hash of at least the part of the packet header of the respective one of the packets.

7. The communication apparatus according to claim 1 , wherein at least the part of the packet header includes any one or more of the following: a source and destination internet protocol (IP) address; a source and destination layer 4 port identifier; a protocol type; or a source and destination media access control (MAC) address.

8. A communication method, comprising:

transmitting packets belonging to multiple flows to a packet data network;

identifying a respective one of the flows to which a respective one of the packets belongs responsively to at least a part of a packet header of the respective one of the packets;

queuing the packets belonging to a plurality of the flows in respective flow-specific queues for transmission via a given egress interface, including at least first and second flow-specific queues;

arbitrating among the flow-specific queues so as to select the packets for transmission responsively to dynamically changing priorities that are assigned to the flow-specific queues; and

assigning the priorities to the flow-specific queues wherein all the packets in the first flow-specific queue, which is assigned a highest priority among the flow-specific queues, are transmitted through the given egress interface until the first flow-specific queue is empty, after which the highest priority is assigned to the second flow-specific queue, such that all the packets in the second flow-specific queue are transmitted through the given egress interface until the second flow-specific queue is empty, after which the highest priority is assigned to another of the flow-specific queues.

9. The communication method according to claim 8 , further comprising exclusively serving the first flow-specific queue so that none of the other flow-specific queues are served until after the first flow-specific queue which is currently being served is empty, after which exclusively serving the second flow-specific queue none of the other flow-specific queues being served until after the second flow-specific queue which is currently being served is empty.

10. The communication method according to claim 8 , wherein the assigning includes assigning the priorities to the flow-specific queues responsively to any one or more of the following: a queue-age; a longest queue; a shortest queue; a flow importance; or round-robin.

11. The communication method according to claim 8 , further comprising:

storing the packets in a plurality of physical queues; and

assigning the flow-specific queues among the plurality of physical queues.

12. The communication method according to claim 11 , further comprising serving one of the physical queues to which the first flow-specific queue, assigned the highest priority, is assigned, until all the packets belonging to the first flow-specific queue have been transmitted and the first flow-specific queue is empty.

13. The communication method according to claim 8 , further comprising computing the respective one of the flows to which the respective one of the packets belongs based at least on a hash of at least the part of the packet header of the respective one of the packets.

14. The communication method according to claim 8 , wherein at least the part of the packet header includes any one or more of the following: a source and destination internet protocol (IP) address; a source and destination layer 4 port identifier; a protocol type; or a source and destination media access control (MAC) address.

15. A software product, comprising a non-transient computer-readable medium in which program instructions are stored, which instructions, when read by a central processing unit (CPU), cause the CPU to:

transmit packets belonging to multiple flows to a packet data network;

identify a respective one of the flows to which a respective one of the packets belongs responsively to at least a part of a packet header of the respective one of the packets;

queue the packets belonging to a plurality of the flows in respective flow-specific queues for transmission via a given egress interface, including at least first and second flow-specific queues;

arbitrate among the flow-specific queues so as to select the packets for transmission responsively to dynamically changing priorities that are assigned to the flow-specific queues; and

assign the priorities to the flow-specific queues wherein all the packets in the first flow-specific queue, which is assigned a highest priority among the flow-specific queues, are transmitted through the given egress interface until the first flow-specific queue is empty, after which the highest priority is assigned to the second flow-specific queue, such that all the packets in the second flow-specific queue are transmitted through the given egress interface until the second flow-specific queue is empty, after which the highest priority is assigned to another of the flow-specific queues.

Assignments (2)
MERGER Recorded Dec 15, 2021
From: MELLANOX TECHNOLOGIES TLV LTD.
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 058517/0564 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 4, 2019
From: GAFNI, BARAK; KFIR, AVIV; KOREN, BENNY
To: MELLANOX TECHNOLOGIES TLV LTD.
Reel/Frame 049668/0383 →
Cited By (1)
US 12,650,768