Skip to content

Frequently Asked Questions

Alex Forencich edited this page Jun 21, 2021 · 6 revisions

What is the difference between OpenNIC and Corundum?

The biggest difference between OpenNIC and Corundum is that OpenNIC uses the Xilinx QDMA IP core for the host interface, while Corundum uses a fully custom DMA subsystem. As a result, OpenNIC benefits from existing software support for the QDMA IP, including both a Linux network device driver in OpenNIC and a DPDK PMD. On the other hand, the DMA subsystem in Corundum is more flexible, supporting scatter/gather DMA for lower CPU overhead as well as per-packet metadata which can be used to interface with user logic and to provide PTP timestamps for all packets. Corundum also supports TCP/UDP/IP checksum offloading, as well as management features including firmware updates over PCIe and communication with optical transceivers. Additionally, Corundum supports a wide range of FPGAs and FPGA boards out-of-the-box, while OpenNIC is limited to devices that are supported by QDMA and does not include reference designs for a wide variety of boards. Both OpenNIC and Corundum can support streaming packet-processing applications, including P4 programs, implemented in user logic.

What is the difference between NetFPGA and Corundum?

NetFPGA is more geared towards switching and packet processing, while Corundum is intended to act as a NIC. Historically NetFPGA NIC reference designs have relied on XDMA and RIFFA for the host interface, neither of which are designed for networking applications and as a result suffer from poor performance.