ipfw meets netmap (6.5 Mpps in userspace)
Nikolay Denev
ndenev at gmail.com
Tue Aug 14 19:53:45 UTC 2012
On Aug 13, 2012, at 2:17 PM, Luigi Rizzo <rizzo at iet.unipi.it> wrote:
> I just finished a netmap-enabled version of ipfw/dummynet, which
> runs in userspace and is able to process over 6 million packets per
> second (Mpps) with simple rulesets, and over 2.2 Mpps through
> dummynet pipes (tested on an i7-3400 connected to VALE ports;
> VALE is a software switch part of netmap).
> You can find it at
>
> http://info.iet.unipi.it/~luigi/dummynet/#8696
>
> It works on FreeBSD and Linux.
>
> It even run on OSX, but there is no netmap support there;
> any interest, Apple ? In any case, it should be simple to
> adapt the network backend to talk to other devices.
>
> To run this you might want to use the most recent version of netmap,
> also recently updated so it works with recent kernels
>
> http://info.iet.unipi.it/~luigi/netmap/
>
> (the code is already in FreeBSD HEAD).
>
> On passing, I have also updated the dummynet distributions
> for Linux and Windows, which should now compile for most
> recent version of Linux, and for Windows 32 and 64 bit:
>
> http://info.iet.unipi.it/~luigi/dummynet/
>
> cheers
> luigi
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
Hi Luigi,
I've tried copying netmap sources from HEAD to the latest RELENG_9 branch, but running
kipfw with two VALE interfaces produced immediate kernel panic (transcribed by hand, possible typos):
Fatal trap 12: page fault while in kernel mode
cpuid = 1; apic id = 01
fault virtual address = 0x28
fault code = supervisor read data, page not present
instruction pointer = 0x20:0xffffffff808274da
stack pointer = 0x28:0xffffff88df1a5530
frame pointer = 0x28:0xffffff88df1a5550
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, long 1, def32 0, gran 1
processor eflags = interrupt enabled, resume, IOPL = 0
current process = 2349 (kipfw)
[ thread pid 2349 tid 100612 ]
Stopped at ifunit_ref+0x2a:
db> bt
Tracing pid 2349 tid 100612 td 0xfffffe0094fd1000
ifunit_ref() at ifunit_ref+0x2a
ifioctl() at ifioctl+0x1cd
netmap_ioctl() at netmap_ioctl+0x121
devfs_ioctl_f() at devfs_ioctl_f+0x7b
kern_ioctl() at kern_ioctl+0x115
sys_ioctl() at sys_ioctl+0xfd
amd64_syscall() at amd64_syscall+0x5ea
Xfast_syscall() at Xfast_syscall+0xf7
--- syscall (54, FreeBSD ELF64, sys_ioctl), rip = 0x800b5eaec, rsp = 0x7fffffffd
888, rbp = 0xc0206911 ---
Anyways, many thanks for you great work on NETMAP and not the super cool user-space IPFW!
Cheers,
Nikolay
More information about the freebsd-net
mailing list