# US 2018/0322913 A1 · Flow based rate limit

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2018/0322913 A1
- Document ID: US20180322913A1
- Status: Published application
- Kind: A1
- Application number: 15/589,893
- Filed: 2017-05-08
- Published: 2018-11-08
- Earliest claimed: 2017-05-08
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Ben-Zion Friedman; Eliezer Tamir; Manasi Deval
- Web page: https://patentgrep.com/patent/US20180322913A1

## CPC

- G11C 11/4076: Timing circuits (for regeneration management G11C11/406)
- G06F 12/063: {for I/O modules, e.g. memory mapped I/O (I/O protocol G06F13/42)}
- G06F 12/0653: {with centralised address assignment}
- G06F 13/1626: {by reordering requests}
- G06F 13/4217: {with synchronous protocol}
- G11C 8/18: Address timing or clocking circuits; Address control signal generation or management, e.g. for row address strobe [RAS] or column address strobe [CAS] signals
- G06F 11/00: Error detection; Error correction; Monitoring (error detection, correction or monitoring in information storage based on relative movement between record carrier and transducer G11B20/18; monitoring, i.e. supervising the progress of recording or reproducing G11B27/36; in static stores G11C29/00)
- G06F 12/02: Addressing or allocation; Relocation (program address sequencing G06F9/00; arrangements for selecting an address in a digital store G11C8/00)
- G11C 8/00: Arrangements for selecting an address in a digital store (for stores using transistors G11C11/407, G11C11/413)
- G11C: STATIC STORES (semiconductor memory devices H10B)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Disclosed is a mechanism maintain flow rate limits to flows in a server operating in a single root input/output virtualization (SR-IOV) environment. A transmit pipeline assigns a dedicated transmit queue to a flow. A scheduler allocates a flow transmit bandwidth to the dedicated transmit queue to enforce the flow rate limit. The transmit pipeline assigns the dedicated transmit queue to the flow upon receiving a packet of the flow. A queue identifier (ID) for the dedicated transmit queue is forwarded to a tenant process acting as a source of the flow to support forwarding of packets of the flow to the proper transmit queue. The transmit pipeline maintains security by comparing packet destinations of packets with the destination of the flow associated with the dedicated transmit queue. Packets in the dedicated destination queue with destinations that do not match the flow destination may be dropped.

## Claims

### Claim 1

An apparatus comprising:
a memory;
a transmit pipeline coupled to the memory, the transmit pipeline to:
assign at least one of a plurality of transmit queues in the memory to a flow as a dedicated transmit queue based on a destination of the flow,
communicate the dedicated transmit queue to a source of the flow, and
transmit packets of the flow from the dedicated transmit queue,
and a scheduler coupled to the transmit queues, the scheduler to allocate a flow transmit bandwidth to the dedicated transmit queue to enforce a flow rate limit for the flow.

### Claim 2 (depends on 1)

The apparatus of claim 1, further comprising at least one port for transmitting packets stored in the transmit queues, wherein the scheduler enforces a port rate limit for communication via the port and a tenant rate limit for communication from the source of the flow, the port rate limit and the tenant rate limit set to values greater than the flow rate limit.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein the dedicated transmit queue is further assigned based on a tuple for the flow, the tuple including a source of the flow and the destination of the flow.

### Claim 4 (depends on 1)

The apparatus of claim 1, wherein the dedicated transmit queue is further assigned based on a tunnel associated with the flow.

### Claim 5 (depends on 1)

The apparatus of claim 1, further comprising a parser to drop an outgoing packet of the flow when a destination of the outgoing packet does not match the destination of the flow associated with the dedicated transmit queue.

### Claim 6 (depends on 1)

The apparatus of claim 1, further comprising a parser to drop an outgoing packet of the flow from a default queue when a destination of the outgoing packet matches the destination of the flow associated with the dedicated transmit queue.

### Claim 7 (depends on 1)

The apparatus of claim 1, further comprising a parser to send a notification to close a virtual function associated with the flow when an outgoing packet of the flow is stored in a transmit queue and the outgoing packet includes a destination that does not match a destination assigned to the transmit queue.

### Claim 8 (depends on 1)

The apparatus of claim 1, wherein the transmit pipeline is further to:
receive a packet of the flow,
obtain a connection entry identifier (ID) associated with the flow from the packet, and
map the connection entry ID to a queue ID of the dedicated transmit queue.

### Claim 9 (depends on 1)

The apparatus of claim 1, wherein the apparatus is a network interface card coupled to a server, the server for operating a plurality of tenant processes on dedicated hardware resources in single root input/output virtualization (SR-IOV) mode.

### Claim 10 (depends on 1)

The apparatus of claim 1, wherein the source of the flow is a tenant process operating on a server, and communicating the dedicated transmit queue to the source of the flow includes communicating a queue identifier (ID) of the dedicated transmit queue to the tenant process to cause the tenant process to address packets of the flow to the dedicated transmit queue.

### Claim 11 (depends on 1)

The apparatus of claim 1, wherein the transmit pipeline includes an end point to relate the flow rate limit to the flow and assign the dedicated transmit queue to the flow.

### Claim 12 (depends on 1)

The apparatus of claim 1, wherein the transmit pipeline communicates the dedicated transmit queue to the source of the flow via a transmit complete message for an initial packet of the flow.

### Claim 13 (depends on 1)

The apparatus of claim 1, wherein the transmit pipeline communicates the dedicated transmit queue to the source of the flow via metadata in a received packet from the destination of the flow.

### Claim 14 (depends on 1)

The apparatus of claim 1, wherein the transmit pipeline is further to reassign the dedicated transmission queue from an initial source to a secondary source to change an association of the flow between the initial source and the secondary source.

### Claim 15

A method comprising:
receiving a flow rate limit for a flow;
assigning, by a transmit pipeline, a dedicated transmit queue to the flow based on a destination of the flow;
communicating the dedicated transmit queue to a source of the flow;
transmitting packets of the flow from the dedicated transmit queue; and
allocating, by a scheduler, a flow transmit bandwidth to the dedicated transmit queue to enforce the flow rate limit for the flow.

### Claim 16 (depends on 15)

The method of claim 15, further comprising:
forwarding packets from the dedicated transmit queue over a port limited by a port rate limit set to a value greater than the flow rate limit; and
forwarding packets from the source of the flow limited by a tenant rate limit set to a value greater than the flow rate limit.

### Claim 17 (depends on 15)

The method of claim 15, wherein assigning the dedicated transmit queue to the flow includes:
receiving a packet of the flow at a parser,
obtaining a connection entry identifier (ID) associated with the flow from the packet, and
mapping the connection entry ID to a queue ID of the dedicated transmit queue.

### Claim 18 (depends on 15)

The method of claim 15, wherein the source of the flow is a tenant process operating on a server, and communicating the dedicated transmit queue to the source of the flow includes communicating a queue identifier (ID) of the dedicated transmit queue to the tenant process to cause the tenant process to address packets of the flow to the dedicated transmit queue.

### Claim 19 (depends on 15)

The method of claim 15, wherein assigning the dedicated transmit queue to the flow includes relating the flow rate limit to the flow and assigning the dedicated transmit queue to the flow based on the flow rate limit.

### Claim 20

A system comprising:
one or more processors for implementing a tenant process acting as a source of a flow; and
a network interface card including:
a memory;
a transmit pipeline coupled to the memory, the transmit pipeline to:
assign at least one of a plurality of transmit queues to the flow as a dedicated transmit queue based on a destination of the flow,
communicate the dedicated transmit queue to the tenant process, and
transmit packets of the flow from the dedicated transmit queue; and
a scheduler coupled to the transmit queues, the scheduler to allocate a flow transmit bandwidth to the dedicated transmit queue to enforce the flow rate limit for the flow.

### Claim 21 (depends on 20)

The system of claim 20, wherein the processors are further to implement a hypervisor, the hypervisor to communicate the flow rate limit to the network interface card.

### Claim 22 (depends on 20)

The system of claim 20, wherein the transmit pipeline further includes a parser to drop an outgoing packet when a destination of the outgoing packet does not match the destination of the flow associated with the dedicated transmit queue.

### Claim 23 (depends on 20)

The system of claim 20, wherein the transmit pipeline is further to:
receive a packet of the flow,
obtain a connection entry identifier (ID) associated with the flow from the packet, and
map the connection entry ID to a queue ID of the dedicated transmit queue.

### Claim 24 (depends on 20)

The system of claim 20, wherein communicating the dedicated transmit queue to the tenant process includes communicating a queue identifier (ID) of the dedicated transmit queue to the tenant process to cause the tenant process to address packets of the flow to the dedicated transmit queue.

### Claim 25 (depends on 20)

The system of claim 20, wherein the transmit pipeline includes a tunnel end point to relate the flow rate limit to the flow and assign the dedicated transmit queue to the flow.
