This section of the user guide describes how to use the Cisco Nexus SmartNIC (formerly ExaNIC) as a developer. There are at least three different APIs that can be used depending on requirements:
-
Existing sockets applications can be accelerated with the exasock TCP/UDP acceleration library. Generally this is simply a matter of running the application with the
exasock
command. For more details and known limitations, see the exasock usage guide. -
Sending and receiving packets with low latency using the SmartNIC API library (libexanic). Refer to the internals primer for an introduction to the architecture of SmartNIC cards, and the libexanic usage guide for API details. It is possible to use libexanic simultaneously with exasock (e.g. receiving UDP frames with libexanic and sending TCP frames with exasock), and it is also possible to use exasock to pre-build TCP frames and then send them using libexanic (see the TCP acceleration section).
-
Writing your own logic to run on the SmartNIC card's FPGA using the SmartNIC FDK. For more information refer to the FDK documentation. Note that the FDK is an optional component that is licensed separately. When running a custom firmware image, all network interfaces are still exposed to software (subject to filtering by the user FPGA logic), so the normal software APIs are still available.