Smart NIC Cards - The Linux Channel
Smart NIC Cards - The Linux Channel

NIC Cards (Network Interface Cards) traditionally contain controller chip which takes care of the core aspects, such as packet reception, buffering (till they are read by OS device drivers), etc. But these days increasingly modern NIC cards can perform several CPU Network Offload functions such as packet/frame checksum, etc.

We can view and set these offload options/parameters via ethtool command as shown below:

ethtool command to set or view NIC card features

As you can see above some of these offload options drastically change the performance of the NIC card. Especially features such as GRO (generic-receive-offload), LRO (large-receive-offload), TSO (tcp-segmentation-offload) and so on. This enables an Operating System (for example such as Linux Kernel) to offload these operations to Hardware controller of the NIC Card then performing the same within a CPU. Thus boosting its packet processing rates. For example here is a screenshot of Linux Kernel Source (via Bootlin) in which we can see some clues how the flow of the code diverts when some offload is enabled:

Linux Kernel Source v5 6 15 - ip_output c - net ipv4 ip_output c - IP Checksum Offload - Bootlin

Smart NIC Cards (or SmartNIC): Such hardware offload features of modern NIC cards is crucial to process packets and support packet data transfer rates of around 1Gbps, 10Gbps, even 40Gbps and so on. But beyond that such as 100Gbps and so on, at times even a high-end Xeon/ Intel/ AMD processors will struggle if need to support transfer rates of around 100Gbps or beyond (situations like Link Bonding). These are the situations we need what we call as Smart NIC Cards. A Smart NIC card implements most of the network traffic processing on the NIC itself that would necessarily be performed by the CPU (i.e Operating System) in the case of a traditional NIC card. While traditional NIC Card do support some basic offload features, a Smart NIC can do the same and beyond so that such as TCP/IP Acceleration, NIC Virtualization, DPDK support, OVS Hardware Acceleration, QoS and ACL Acceleration, Cloud and Virtualization support and so on.

Architecture of Smart NIC can be:

  • DPU (Data Processing Unit) based on ASIC
  • FPGA based
  • System-on-a-Chip (SOC) based

So here is my multi-episode detailed YouTube video series on Smart NIC Cards and the big-picture of the same:

Also recommend you to watch my detailed video demo on Network Packet Processing GRO (Generic Receive Offload) as discussed in the video episodes above: