top | item 2656193

Line rate 10Gbit/s packet processing on FreeBSD with netmap

114 points| lrizzo | 15 years ago |info.iet.unipi.it | reply

18 comments

order
[+] muppetman|15 years ago|reply
This is really very interesting.

I work with Juniper routers and switches all day and every day, the thing I love about them is they're built on top of FreeBSD (now called JunOS, but it still harks back to FreeBSD when you drop to the shell)

Something small and light and fast, running on FreeBSD with this added would be perfect for customer CPE equipment or for non-essential routing tasks.

Very impressive, I look forward to seeing where this goes.

[+] tptacek|15 years ago|reply
The data path on a Juniper isn't passing mbufs around the FreeBSD IP stack, is it? It's FreeBSD command-and-control, but my understanding is that the packet processing itself might as well be its own rtos.
[+] sc68cal|15 years ago|reply
As many have said on -CURRENT: Thanks for the great work. Do you plan on getting this merged into the FreeBSD tree, and maintaining it?
[+] lrizzo|15 years ago|reply
yes to both questions. merging should start very soon.
[+] smutticus|15 years ago|reply
This is impressive. How is the performance on different packet sizes? Most real world loads would require far fewer than 14.88Mpps since most packets would be equal to MTU. So I'm wondering if performance would increase or decrease with packet size.
[+] lrizzo|15 years ago|reply
please look at the paper linked to the url, which defines the problem and the metrics in more detail.
[+] codepoet|15 years ago|reply
Great! Maybe you could compare this with http://www.ntop.org/PF_RING.html for Linux?
[+] lrizzo|15 years ago|reply
The "old" pf_ring is only meant for packet capture and involves packet copies, so it is several times slower than netmap. There is a newer "Direct Network Access" (DNA) version of pf_ring which avoids copies and has the same performance of netmap, but is much more fragile because in DNA the userspace program writes directly into the NIC registers and rings (so it can crash the entire OS), whereas in netmap the NIC programming is filtered by system calls.
[+] mateuszb|15 years ago|reply
Very clever solution on stack bridging. +1