Frequently Asked Questions
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.
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.