# US 2021/0240645 A1 · Remote direct memory access based networking gateway

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

- Number: US 2021/0240645 A1
- Document ID: US20210240645A1
- Status: Published application
- Kind: A1
- Application number: 17/215,829
- Filed: 2021-03-29
- Published: 2021-08-05
- Earliest claimed: 2019-11-15
- Assignees: Red Hat, Inc.
- Applicants: Red Hat, Inc.
- Inventors: Michael Tsirkin
- Web page: https://patentgrep.com/patent/US20210240645A1

## CPC

- G06F 13/28: using burst mode transfer, e.g. direct memory access {DMA}, cycle steal (G06F13/32 takes precedence)
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 12/0835: {for main memory peripheral accesses (e.g. I/O or DMA)}
- G06F 13/4282: {on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247)}
- H04L 12/66: Arrangements for connecting between networks having differing types of switching systems, e.g. gateways
- H04L 45/74: Address processing for routing
- H04L 49/9031: {Wraparound memory, e.g. overrun or underrun detection}
- H04L 61/5038: for local use, e.g. in LAN or USB networks, or in a controller area network [CAN]
- H04L 69/22: Parsing or analysis of headers
- G06F 2009/45579: {I/O management, e.g. providing access to device drivers or storage}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F 2009/45595: {Network integration; Enabling network access in virtual machine instances}
- H04L 2101/622: Layer-2 addresses, e.g. medium access control [MAC] addresses
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A system includes a memory including a plurality of rings, an endpoint associated with a ring of the plurality of rings, and a gateway. The gateway is configured to receive a notification from the endpoint regarding a packet made available in the ring associated with the endpoint, access the ring with an RDMA read request, retrieve the packet made available in the ring, and forward the packet on an external network.

## Claims

### Claim 1

A system comprising:
a memory including a first plurality of rings;
an endpoint associated with a ring of the plurality of rings; and
a gateway configured to:
receive a packet address of a packet;
locate the endpoint associated with the packet based on destination address information in the packet;
issuing, by the gateway, an RDMA read request to the endpoint to retrieve the packet made available in a slot in the ring at the endpoint;
temporarily storing the packet at the gateway; and
issuing, by the gateway, an RDMA write request to indicate that the slot can be reused.

### Claim 2 (depends on 1)

The system of claim 1, wherein the rings are virtIO rings.

### Claim 3 (depends on 1)

The system of claim 1, wherein the destination address information is stored in a packet header.

### Claim 4 (depends on 1)

The system of claim 1, wherein the endpoint address is a MAC address.

### Claim 5 (depends on 1)

The system of claim 1, wherein the gateway is further configured to notify the endpoint that the packet has been sent.

### Claim 6 (depends on 5)

The method of claim 5, wherein notifying the endpoint includes issuing, by the gateway, a SEND message to the endpoint.

### Claim 7 (depends on 1)

The system of claim 1, further comprising a second endpoint and wherein each endpoint is assigned a unique MAC address or MAC layer.

### Claim 8

A non-transitory machine-readable medium storing code, which when executed by a gateway, is configured to:
receive a notification from an endpoint regarding a packet made available in a ring associated with the endpoint;
access the ring with an RDMA read request;
retrieve the packet made available in the ring; and
forward the packet on an external network.

### Claim 9 (depends on 8)

The non-transitory machine-readable medium of claim 8, further configured to store the packet in a slot of the ring, and wherein the ring is an available virtIO ring.

### Claim 10 (depends on 9)

The non-transitory machine-readable medium of claim 9, further configured to write the packet into a used virtIO ring to notify the endpoint that packet in the slot has been transferred.

### Claim 11 (depends on 11)

The non-transitory machine-readable medium of claim 11, further configured to store a different packet in the slot.

### Claim 12 (depends on 8)

The non-transitory machine-readable medium of claim 8, further configured to detect a state of the endpoint.

### Claim 13 (depends on 12)

The non-transitory machine-readable medium of claim 12, wherein the state is an idle state.

### Claim 14 (depends on 13)

The non-transitory machine-readable medium of claim 13, further configured to enable notifications on the gateway responsive to detecting that the endpoint is in an idle state.

### Claim 15 (depends on 13)

The non-transitory machine-readable medium of claim 13, further configured to stop polling the ring associated with the endpoint responsive to detecting that the endpoint is in an idle state.

### Claim 16 (depends on 13)

The non-transitory machine-readable medium of claim 13, further configured to wake up the endpoint in the idle state.

### Claim 17 (depends on 16)

The non-transitory machine-readable medium of claim 16, wherein waking up the endpoint includes sending a message to the endpoint.

### Claim 18 (depends on 8)

The non-transitory machine-readable medium of claim 8, further configured to poll the ring associated with the endpoint.

### Claim 19

A non-transitory machine-readable medium storing code, which when executed by a gateway, is configured to:
receive a packet address of a packet;
locate an endpoint associated with the packet based on destination address information in the packet;
issue an RDMA read request to the endpoint to retrieve the packet made available in a slot in a ring at the endpoint;
temporarily store the packet at the gateway; and
issue an RDMA write request to indicate that the slot can be reused.

### Claim 20 (depends on 19)

The non-transitory machine-readable medium of claim 19, wherein at least one of (i) the rings are virtIO rings, (ii) the destination address information is stored in a packet header, (iii) the endpoint address is a MAC address, and (iv) the RDMA read request is issued to a used virtIO ring.
