DNA vs netmap

Posted · Add Comment

In the past months I have received a few emails about how to position DNA with respect to netmap. To many people they look like two competing solutions, but in reality they are just two solutions to the same problem. Yesterday I had a nice meeting with Luigi Rizzo, the author of netmap.

I personally know Luigi since almost 15 years as we both live pretty close. The first time I saw him (1999 or so) he was hacking a driver for a CD-ROM drive on FreeBSD while speaking with me. Impressive. He was telling me about projects he previously did, including a PC-based bridge able to run a few university departments. I have to admit that if I have started to code in the kernel, it’s also because he has inspired me showing that the kernel was a radical new (for me) way of looking at things. I decided to go for Linux, he’s a recognized FreeBSD contributor, but our view are not that far.

Even if DNA and netmap have been developed in totally independent ways, they solve the same problem: how to move packets back/forth a network adapter without using too many CPU cycles. And I believe it’s no surprise that the performance of DNA and netmap is basically the same. So yesterday we’ve not discussed about who’s faster, but we talked about where we wanted to drive our technologies.

As you can see from the backboard (pictures are courtesy of our common friend Gianmarco), we have some ideas on the next thing to do. First of all, both DNA and netmap are not the ultimate goal, but instead some enabling technologies for improving networking on operating systems. They are not revolutionary in the sense that the idea of memory mapping is out for years, but companies like Endace and Napatech (that used it for so long time) have been unable to use it properly and thus drive innovation anywhere. If you look at at their technology 15 years ago and today, you will see that nothing changed: just pass me the packet and I will do the rest. In my view (and I think I can also mostly speak for Luigi), we need to go beyond simple packet juggling. Modern network and applications are significantly different from similar applications developed in the last decade. Operating systems changed too, and thus it’s time to rethink a few things, and not just to wait until somebody else would do that. Stay tuned!