Using the ESnet SmartNIC Framework
This documentation was prepared for the course Applications of Programmable Networking (CS595) which ran during Fall 2023 at Illinois Institute of Technology. It combines – and marginally extends – documentation that was prepared by ESnet for their SmartNIC platform to guide you through the process of developing, configuring, deploying and executing Smart NIC applications on AMD-Xilinx Alveo cards.
Cookbook
The ESnet SmartNIC is an open-source framework to program AMD/Xilinx Alveo FPGA cards. In this cookbook we will use this framework to program these cards using the P4 language. We divide the process into four workflows:
-
The development workflow involves compiling your P4 programs into bitfiles.
-
The deployment workflow involves loading your bitfile onto a card.
-
The execution workflow involves starting the program that has been loaded onto a card.
-
The configuration workflow involves configuring the host where the card is installed.
References
- ESnet SmartNIC block diagram
- Vitis Networking P4 Installation Guide and Release Notes (UG1307)
- Vitis Networking P4 User Guide (UG1308)
- Vitis Networking P4 Getting Started Guide (UG1373)
Prerequisites
If you are a student taking CS595 at IIT in Fall 2023, then Airfield would be your pre-configured system. Everything mentioned in this documentation has been tested on Airfield.
Otherwise, start with the configuration workflow to setup up your host(s) for development and testing.
Dependency and Version information
We will rely on the following:
- Ubuntu 20.04 with Linux 5.4.0-153.
- Vivado 2023.1
- The following IPs: (1) “LogiCORE, Vitis Networking P4 Evaluation License”, (2) “LogiCORE, BCAM, STCAM (LPM), TCAM (All) Evaluation License”, (3) “UltraScale+ Integrated 100G Ethernet No Charge License”. You won’t see item (3) listed directly in the licensing menu, but this link explains how to include it in the license: CMAC license.
- The esnet-smartnic-hw repository (commit: 9ee2cbb).
- The esnet-smartnic-fw repository (commit: 180595c).
- The smartnic-dpdk-docker repository (commit: a52dba3).
- The xilinx-labtools-docker repository (commit: 87f55f2).
Note: The evaluation status of one of the IPs that is used above results in a 48-hour validity period for artefacts.
Copyright and License
This documentation consists of CC BY 4.0-licensed modifications that are derived from separately-licensed earlier work.