# US 12,120,021 B2 · Server fabric adapter for I/O scaling of heterogeneous and accelerated compute systems

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

- Number: US 12,120,021 B2
- Document ID: US12120021B2
- Status: Granted
- Kind: B2
- Application number: 17/570,261
- Filed: 2022-01-06
- Published: 2022-07-07
- Granted: 2024-10-15
- Earliest claimed: 2021-01-06
- Assignees: Enfabrica Corporation
- Applicants: Enfabrica Corporation
- Inventors: Rochan Sankar; Shrijeet Mukherjee; Ariel Hendel; Carlo Contavalli; Shimon Muller
- Web page: https://patentgrep.com/patent/US12120021B2

## CPC

- H04L 45/566: {Routing instructions carried by the data packet, e.g. active networks}
- H04L 45/38: {Flow based routing}
- H04L 47/2483: involving identification of individual flows
- H04L 47/30: in combination with information about buffer occupancy at either end or at transit nodes
- H04L 49/254: {Centralised controller, i.e. arbitration or scheduling}
- H04L 49/9057: Arrangements for supporting packet reassembly or resequencing
- H04L 67/2866: Architectures; Arrangements
- H04L 69/18: Multiprotocol handlers, e.g. single devices capable of handling multiple protocols
- H04L 69/22: Parsing or analysis of headers
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A server fabric adapter (SFA) communication system is disclosed. In some embodiments, the SFA communication system comprises an SFA communicatively coupled to a plurality of controlling hosts, a plurality of endpoints, and a plurality of network ports. The SFA is configured to receive a network packet from a network port of the plurality of network ports; separate the network packet into different portions, each portion including a header or a payload; map each portion of the network packet to: (i) a controlling host of the plurality controlling hosts, the controlling host being designated as a destination controlling host, or (ii) an endpoint of the plurality of endpoints, the endpoint being designated as a destination endpoint; and forward a respective portion of the network packet to the destination controlling host or the destination endpoint.

## Claims

### Claim 1

A server fabric adapter (SFA) communication system comprising:
an SFA comprising a processor, a plurality of endpoint ports, and a plurality of host ports, the SFA communicatively coupled to a plurality of controlling hosts, a plurality of endpoints, and a plurality of network ports, the SFA configured to:
identify a first set of endpoint ports from the plurality of endpoint ports that connect the SFA to the plurality of endpoints, wherein each respective endpoint port of the first set of endpoint ports has a respective queue for an endpoint from the plurality of endpoints to submit one or more scatter-gather lists (SGLs);
identify a second set of host ports from the plurality of host ports that connect the SFA to a controlling host of the plurality of controlling hosts, wherein each respective host port of the second set of host ports includes one or more respective header queues; and
combine data from the header queues with the SGLs to generate network packets.

### Claim 2 (depends on 1)

The SFA communication system of claim 1, wherein the network packets are used in peer-to-peer traffic.

### Claim 3 (depends on 1)

The SFA communication system of claim 1, wherein the SFA is configured to:
receive a network packet;
divide the network packet into one or more headers and a payload;
identify, from the first set of endpoint ports, an endpoint port;
route the payload to an SGL of a queue associated with the identified endpoint port;
identify, from the second set of host ports, one or more host ports; and
route the one or more headers to one or more header queues associated with the identified host ports.

### Claim 4 (depends on 3)

The SFA communication system of claim 3, wherein the payload is transmitted to or received from an arbitrary memory geometry based on the SGL of memory locations.

### Claim 5 (depends on 1)

The SFA communication system of claim 1, wherein:
the SFA is configured to transmit and receive network packets between one or more endpoints and one or more networks, between a first endpoint and a second endpoint, or between a first network and a second network,
the one or more endpoints, the first endpoint, or the second endpoint are among the plurality of endpoints, and
the one or more networks, the first network, or the second network are associated with one or more network ports of the plurality of network ports.

### Claim 6 (depends on 1)

The SFA communication system of claim 1, wherein the SFA is a scalable and aggregated input/output (I/O) hub.

### Claim 7 (depends on 1)

The SFA communication system of claim 1, wherein the plurality of endpoints include storage elements, memory elements, graphics processing units (GPUs), accelerators, or field programmable gate arrays (FPGAs).

### Claim 8 (depends on 1)

The SFA communication system of claim 1, wherein the plurality of network ports include one or more Ethernet ports to communicate with an external network.

### Claim 9

A method comprising:
providing a server fabric adapter (SFA) comprising a processor, a plurality of endpoint ports, and a plurality of host ports, the SFA communicatively coupled to a plurality of controlling hosts, a plurality of endpoints, and a plurality of network ports;
identifying, by the SFA, a first set of endpoint ports from the plurality of endpoint ports that connect the SFA to the plurality of endpoints, wherein each respective endpoint port of the first set of endpoint ports has a respective queue for an endpoint from the plurality of endpoints to submit one or more scatter-gather lists (SGLs);
identifying, by the SFA, a second set of host ports from the plurality of host ports that connect the SFA to a controlling host of the plurality of controlling hosts, wherein each respective host port of the second set of host ports includes one or more respective header queues; and
combining, by the SFA, data from the header queues with the SGLs to generate network packets.

### Claim 10 (depends on 9)

The method of claim 9, wherein the network packets are used in peer-to-peer traffic.

### Claim 11 (depends on 9)

The method of claim 9, further comprising:
receiving, at the SFA, a network packet;
dividing, by the SFA, the network packet into one or more headers and a payload;
identifying, from the first set of endpoint ports and by the SFA, an endpoint port;
routing, by the SFA, the payload to an SGL of a queue associated with the identified endpoint port;
identifying, from the second set of host ports and by the SFA, one or more host ports; and
routing, by the SFA, the one or more headers to one or more header queues associated with the identified host ports.

### Claim 12 (depends on 11)

The method of claim 11, wherein the payload is transmitted to or received from an arbitrary memory geometry based on the SGL of memory locations.

### Claim 13 (depends on 9)

The method of claim 9, further comprising:
transmitting and receiving, by the SFA, network packets between one or more endpoints and one or more networks, between a first endpoint and a second endpoint, or between a first network and a second network,
wherein the one or more endpoints, the first endpoint, or the second endpoint are among the plurality of endpoints, and
wherein the one or more networks, the first network, or the second network are associated with one or more network ports of a plurality of network ports.

### Claim 14 (depends on 9)

The method of claim 9, wherein the plurality of network ports include one or more Ethernet ports to communicate with an external network.

### Claim 15 (depends on 9)

The method of claim 9, wherein the SFA is a scalable and aggregated input/output (I/O) hub.

### Claim 16 (depends on 9)

The method of claim 9, wherein the plurality of endpoints include storage elements, memory elements, graphics processing units (GPUs), accelerators, or field programmable gate arrays (FPGAs).
