This primitive will add a new header (gre) to the packet at a particular location of the header-stack.
This is a set of primitives which monitor various metrics of tcp flows in smart-nic to provide regular feedback to a control plane.
This primitive searches for a pattern in the payload and increments a counter if it matches. One problem with doing this in smart-nic as opposed to tofino is that, this reduces the throughtput of the effective packets by upto 90%.
Ideally, netronome supports IPSec, still figuring out how to encrypt/decrypt.
- Host-based Congestion-control.
- Virtualization (e.g. VXLAN, GRE, VFP)
- Service Chaining.
- Network routing based on data-locality (routing to a certain core on the host, where the related data is present).
- Deep-packet Inspection (when payload is encrypted).
- RDMA-based applications.
- Application Acceleration (micro-services on the FPGA of nic).
- Data distribution offload.
- Network Functions (e.g. SLB, firewalls, NAT, etc).
- Network Security (DDoS, IDS , etc).
- Computation based on network data.
- Load the nfp kernel module :
sudo modprobe nfp nfp_pf_netdev=0 nfp_dev_cpp=1
- Start the run-time environment :
sudo systemctl start nfp-sdk6-rte
sudo systemctl start nfp-sdk6-rte-debug
- Build the program using the below command :
sudo nfp4build -s AMDA0096-0001:0 -l lithium -o <prog_name>.nffw -p nfp-build -4 <prog_name>.p4
- Load the firmware using the command :
sudo nfp-nffw load -s <prog_name>.nffw
- Load the design on the nic :
sudo rtecli design-load -f <prog_name>.nffw -p nfp-build/pif_design.json -c user_config.json
Now you must see the vf interfaces in ifconfig.