Smart or Dumb NICs on Software Gone Wild

Hardware vendors are always making their silicon more complex and feature-rich. Is that a great idea or a disaster waiting to happen? We asked Luke Gorrie, the lead developer of Snabb Switch (an open-source user-land virtual switch written in Lua) about his opinions on the topic.

TL&DL version: Give me a dumb NIC, software can do everything else.

If you want to know more, listen to Episode 93 of Software Gone Wild.


  1. So one CPU per port? Well we had that 40 years ago. What about 100 Gbit/s or even 1 Tbit/s, is it possible?
    1. Yeah, it's so nice to see ksoftirqd eating up core 0 while all the other cores are idle...
  2. I wouldn't write smart NICs off completely quite so easily. For example, doesn't AWS use "smart NICs" in their new Nitro architecture? I write "smart NIC" in quotes because in the case of AWS, I think it is actually an ASIC developed in-house by AWS based on their Annapurna acquisition which does not just networking but also compute and storage.
    1. AWS has a specific challenge: implement network virtualization for bare-metal workloads without touching the ToR switch (ACI style) because that doesn't scale. An extra ASIC in the forwarding path is the only way to do that.
  3. Using your favorite phrase - “it depends” :)
    1. +1 to Bruno’s comment on Nitro, if you provide IaaS, any cycle spent on infra is taken off the total sellable capacity pool. AWS has done a great job to make the difference in performance between baremetal and their infra pretty much negligible while keeping workloads decoupled from the infra, all thanks to Annapurna HW.

    2. Specifically talking about smart NICs, i really enjoyed working with Netronome NICs, crafting pretty futuristic stuff within hours, well designed HW accompanied by well described APIs makes them IMO very distinct in this segment.
    3. There’s number of companies providing P4 front-ends to FPGA’s, which allows to define processing behavior without going into low level programming, space to watch for.

Add comment