Re: svn commit: r307394 - in head: share/man/man4 sys/conf sys/dev/netmap sys/modules/netmap sys/net tools/tools/netmap
Hi, since this commit, my system panic when using netmap pkt-gen with a Chelsio T540-CR NIC (I didn't reproduce it with Intel NIC). - Latest known working system: FreeBSD 12.0-CURRENT #2 r307393 - Crash since: FreeBSD 12.0-CURRENT #1 r307396 On a fresh (r309034) system, here is he behavior: [root@SM]~# pkt-gen -i vcxl0 -f rx -w 4 133.571714 main [2546] interface is vcxl0 133.572025 main [2670] running on 1 cpus (have 8) 133.572377 extract_ip_range [462] range is 10.0.0.1:1234 to 10.0.0.1:1234 133.572393 extract_ip_range [462] range is 10.1.0.1:1234 to 10.1.0.1:1234 Fatal trap 12: page fault while in kernel mode cpuid = 7; apic id = 0e fault virtual address = 0x0 fault code = supervisor write data, page not present instruction pointer = 0x20:0x80d5480e stack pointer = 0x28:0xfe0466ba61e0 frame pointer = 0x28:0xfe0466ba61e0 code segment= base 0x0, limit 0xf, type 0x1b = DPL 0, pres 1, long 1, def32 0, gran 1 processor eflags= interrupt enabled, resume, IOPL = 0 current process = 1900 (pkt-gen) trap number = 12 panic: page fault cpuid = 7 KDB: stack backtrace: #0 0x80971167 at kdb_backtrace+0x67 #1 0x80929b72 at vpanic+0x182 #2 0x809299e3 at panic+0x43 #3 0x80d56e84 at trap_fatal+0x324 #4 0x80d57083 at trap_pfault+0x1e3 #5 0x80d56683 at trap+0x273 #6 0x80d39261 at calltrap+0x8 #7 0x8047c664 at cxgbe_netmap_reg+0x2f4 #8 0x8063d48c at netmap_hw_reg+0x2c #9 0x8063a93b at netmap_do_regif+0x2ab #10 0x8063b564 at netmap_ioctl+0xba4 #11 0x8063f14e at freebsd_netmap_ioctl+0x3e #12 0x8085e47c at devfs_ioctl+0xac #13 0x80eee78d at VOP_IOCTL_APV+0x8d #14 0x80a08901 at vn_ioctl+0x131 #15 0x8085ecdf at devfs_ioctl_f+0x1f #16 0x8098ed7b at kern_ioctl+0x29b #17 0x8098ea71 at sys_ioctl+0x171 Uptime: 4m41s Dumping 1112 out of 16325 MB:..2%..11%..21%..31%..41%.. 51%..61%..71%..81%..91% Dump complete (kgdb) backtrace #0 doadump (textdump=) at pcpu.h:222 #1 0x809295f9 in kern_reboot (howto=260) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/kern/kern_shutdown.c:366 #2 0x80929bab in vpanic (fmt=, ap=) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/kern/kern_shutdown.c:759 #3 0x809299e3 in panic (fmt=0x0) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/kern/kern_shutdown.c:690 #4 0x80d56e84 in trap_fatal (frame=0xfe0466ba6120, eva=0) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/amd64/amd64/trap.c:801 #5 0x80d57083 in trap_pfault (frame=0xfe0466ba6120, usermode=0) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/amd64/amd64/trap.c:658 #6 0x80d56683 in trap (frame=0xfe0466ba6120) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/amd64/amd64/trap.c:421 #7 0x80d39261 in calltrap () at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/amd64/amd64/exception.S:236 #8 0x80d5480e in bzero () at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/amd64/amd64/support.S:53 #9 0x8047c664 in cxgbe_netmap_reg (na=, on=) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/dev/cxgbe/t4_netmap.c:102 #10 0x8063d48c in netmap_hw_reg (na=0xf800055ba400, onoff=1) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/dev/netmap/netmap.c:2788 #11 0x8063a93b in netmap_do_regif (priv=, na=, ringid=, flags=) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/dev/netmap/netmap.c:2050 #12 0x8063b564 in netmap_ioctl (priv=, cmd=, data=0xfe0466ba69b0 "vcxl0", td=0xf8001509a500) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/dev/netmap/netmap.c:2257 #13 0x8063f14e in freebsd_netmap_ioctl (dev=, cmd=3225184658, data=0xfe0466ba69b0 "vcxl0", ffla=, td=0xf8001509a500) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/dev/netmap/netmap_freebsd.c:1389 #14 0x8085e47c in devfs_ioctl (ap=) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/fs/devfs/devfs_vnops.c:831 #15 0x80eee78d in VOP_IOCTL_APV (vop=, a=) at vnode_if.c:1067 #16 0x80a08901 in vn_ioctl (fp=0xf80015191f00, com=, data=0xfe0466ba69b0, active_cred=0xf8019928bd00, td=0x1) at vnode_if.h:448 #17 0x8085ecdf in devfs_ioctl_f (fp=0x0, com=131072, data=0x0, cred=0x4000, td=0xf8001509a500) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/fs/devfs/devfs_vnops.c:789 #18 0x8098ed7b in kern_ioctl (td=, fd=, com=3225184658, data=0xfe0466ba69b0 "vcxl0") at file.h:327 #19 0x8098ea71 in sys_ioctl (td=0xf8001509a500, uap=0xfe0466ba6b10) at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/kern/sys_generic.c:746 #20 0x80d57825 in amd64_syscall (td=, traced=0) at subr_syscall.c:135 #21 0x80d3954b in Xfast_syscall () at /usr/local/BSDRP/BSDRPcur/FreeBSD/src/sys/amd64/amd64/exception.S:396 #22 0x00080100e5ca in ?? () Regards, Olivier
Re: svn commit: r307394 - in head: share/man/man4 sys/conf sys/dev/netmap sys/modules/netmap sys/net tools/tools/netmap
On Wed, Oct 19, 2016 at 12:23:24PM -0400, Shawn Webb wrote: > On Sun, Oct 16, 2016 at 02:13:32PM +, Luigi Rizzo wrote: > > Author: luigi > > Date: Sun Oct 16 14:13:32 2016 > > New Revision: 307394 > > URL: https://svnweb.freebsd.org/changeset/base/307394 > > > > Log: > > Import the current version of netmap, aligned with the one on github. > > > > This commit, long overdue, contains contributions in the last 2 years > > from Stefano Garzarella, Giuseppe Lettieri, Vincenzo Maffione, including: > > + fixes on monitor ports > > + the 'ptnet' virtual device driver, and ptnetmap backend, for > > high speed virtual passthrough on VMs (bhyve fixes in an upcoming > > commit) > > + improved emulated netmap mode > > + more robust error handling > > + removal of stale code > > + various fixes to code and documentation (some mixup between RX and TX > > parameters, and private and public variables) > > > > We also include an additional tool, nmreplay, which is functionally > > equivalent to tcpreplay but operating on netmap ports. > > > > Added: > > head/tools/tools/netmap/ctrs.h (contents, props changed) > > head/tools/tools/netmap/nmreplay.8 (contents, props changed) > > head/tools/tools/netmap/nmreplay.c (contents, props changed) > > Modified: > > head/share/man/man4/netmap.4 > > head/sys/conf/files > > head/sys/dev/netmap/if_ixl_netmap.h > > head/sys/dev/netmap/if_lem_netmap.h > > head/sys/dev/netmap/ixgbe_netmap.h > > head/sys/dev/netmap/netmap.c > > head/sys/dev/netmap/netmap_freebsd.c > > head/sys/dev/netmap/netmap_generic.c > > head/sys/dev/netmap/netmap_kern.h > > head/sys/dev/netmap/netmap_mbq.c > > head/sys/dev/netmap/netmap_mbq.h > > head/sys/dev/netmap/netmap_mem2.c > > head/sys/dev/netmap/netmap_mem2.h > > head/sys/dev/netmap/netmap_monitor.c > > head/sys/dev/netmap/netmap_offloadings.c > > head/sys/dev/netmap/netmap_pipe.c > > head/sys/dev/netmap/netmap_vale.c > > head/sys/modules/netmap/Makefile > > head/sys/net/netmap.h > > head/sys/net/netmap_user.h > > head/tools/tools/netmap/Makefile > > head/tools/tools/netmap/bridge.c > > head/tools/tools/netmap/pkt-gen.c > > head/tools/tools/netmap/vale-ctl.c > > Looks like this broke VIMAGE builds: > > /usr/src/sys/dev/netmap/netmap_freebsd.c:1410:25: error: use of undeclared > identifier 'rd' > CURVNET_SET(TD_TO_VNET(rd)); >^ > /usr/src/sys/dev/netmap/netmap_freebsd.c:1410:25: error: use of undeclared > identifier 'rd' > /usr/src/sys/dev/netmap/netmap_freebsd.c:1410:25: error: use of undeclared > identifier 'rd' > /usr/src/sys/dev/netmap/netmap_freebsd.c:1410:25: error: use of undeclared > identifier 'rd' > 4 errors generated. > --- netmap_freebsd.o --- > *** [netmap_freebsd.o] Error code 1 The attached patch fixes the build. In case it doesn't make it to the list, it's also posted here: http://ix.io/1xFU Thanks, -- Shawn Webb Cofounder and Security Engineer HardenedBSD GPG Key ID: 0x6A84658F52456EEE GPG Key Fingerprint: 2ABA B6BD EF6A F486 BE89 3D9E 6A84 658F 5245 6EEE diff --git a/sys/dev/netmap/netmap_freebsd.c b/sys/dev/netmap/netmap_freebsd.c index 50e2d0f..a3ad322 100644 --- a/sys/dev/netmap/netmap_freebsd.c +++ b/sys/dev/netmap/netmap_freebsd.c @@ -48,6 +48,7 @@ #include +#include #include #include /* sockaddrs */ #include @@ -1407,7 +1408,7 @@ freebsd_netmap_ioctl(struct cdev *dev __unused, u_long cmd, caddr_t data, int error; struct netmap_priv_d *priv; - CURVNET_SET(TD_TO_VNET(rd)); + CURVNET_SET(TD_TO_VNET(td)); error = devfs_get_cdevpriv((void **)); if (error) { /* XXX ENOENT should be impossible, since the priv signature.asc Description: PGP signature
Re: svn commit: r307394 - in head: share/man/man4 sys/conf sys/dev/netmap sys/modules/netmap sys/net tools/tools/netmap
On Sun, Oct 16, 2016 at 02:13:32PM +, Luigi Rizzo wrote: > Author: luigi > Date: Sun Oct 16 14:13:32 2016 > New Revision: 307394 > URL: https://svnweb.freebsd.org/changeset/base/307394 > > Log: > Import the current version of netmap, aligned with the one on github. > > This commit, long overdue, contains contributions in the last 2 years > from Stefano Garzarella, Giuseppe Lettieri, Vincenzo Maffione, including: > + fixes on monitor ports > + the 'ptnet' virtual device driver, and ptnetmap backend, for > high speed virtual passthrough on VMs (bhyve fixes in an upcoming commit) > + improved emulated netmap mode > + more robust error handling > + removal of stale code > + various fixes to code and documentation (some mixup between RX and TX > parameters, and private and public variables) > > We also include an additional tool, nmreplay, which is functionally > equivalent to tcpreplay but operating on netmap ports. > > Added: > head/tools/tools/netmap/ctrs.h (contents, props changed) > head/tools/tools/netmap/nmreplay.8 (contents, props changed) > head/tools/tools/netmap/nmreplay.c (contents, props changed) > Modified: > head/share/man/man4/netmap.4 > head/sys/conf/files > head/sys/dev/netmap/if_ixl_netmap.h > head/sys/dev/netmap/if_lem_netmap.h > head/sys/dev/netmap/ixgbe_netmap.h > head/sys/dev/netmap/netmap.c > head/sys/dev/netmap/netmap_freebsd.c > head/sys/dev/netmap/netmap_generic.c > head/sys/dev/netmap/netmap_kern.h > head/sys/dev/netmap/netmap_mbq.c > head/sys/dev/netmap/netmap_mbq.h > head/sys/dev/netmap/netmap_mem2.c > head/sys/dev/netmap/netmap_mem2.h > head/sys/dev/netmap/netmap_monitor.c > head/sys/dev/netmap/netmap_offloadings.c > head/sys/dev/netmap/netmap_pipe.c > head/sys/dev/netmap/netmap_vale.c > head/sys/modules/netmap/Makefile > head/sys/net/netmap.h > head/sys/net/netmap_user.h > head/tools/tools/netmap/Makefile > head/tools/tools/netmap/bridge.c > head/tools/tools/netmap/pkt-gen.c > head/tools/tools/netmap/vale-ctl.c Looks like this broke VIMAGE builds: /usr/src/sys/dev/netmap/netmap_freebsd.c:1410:25: error: use of undeclared identifier 'rd' CURVNET_SET(TD_TO_VNET(rd)); ^ /usr/src/sys/dev/netmap/netmap_freebsd.c:1410:25: error: use of undeclared identifier 'rd' /usr/src/sys/dev/netmap/netmap_freebsd.c:1410:25: error: use of undeclared identifier 'rd' /usr/src/sys/dev/netmap/netmap_freebsd.c:1410:25: error: use of undeclared identifier 'rd' 4 errors generated. --- netmap_freebsd.o --- *** [netmap_freebsd.o] Error code 1 Thanks, -- Shawn Webb Cofounder and Security Engineer HardenedBSD GPG Key ID: 0x6A84658F52456EEE GPG Key Fingerprint: 2ABA B6BD EF6A F486 BE89 3D9E 6A84 658F 5245 6EEE signature.asc Description: PGP signature
Re: svn commit: r307394 - in head: share/man/man4 sys/conf sys/dev/netmap sys/modules/netmap sys/net tools/tools/netmap
On 16 October 2016 at 10:13, Luigi Rizzowrote: > Author: luigi > Date: Sun Oct 16 14:13:32 2016 > New Revision: 307394 > URL: https://svnweb.freebsd.org/changeset/base/307394 > > Log: > Import the current version of netmap, aligned with the one on github. my tinderbox build failed with this, in sparc64 LINT: In file included from /scratch/tmp/emaste/freebsd/sys/modules/em/../../dev/e1000/if_lem.c:343: /scratch/tmp/emaste/freebsd/sys/dev/netmap/if_lem_netmap.h:42: warning: redundant redeclaration of 'netmap_adaptive_io' [-Wredundant-decls] /scratch/tmp/emaste/freebsd/sys/dev/netmap/netmap_kern.h:1529: warning: previous declaration of 'netmap_adaptive_io' was here *** [if_lem.o] Error code 1 ___ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
Re: svn commit: r307394 - in head: share/man/man4 sys/conf sys/dev/netmap sys/modules/netmap sys/net tools/tools/netmap
On Sunday, October 16, 2016 02:13:32 PM Luigi Rizzo wrote: > Author: luigi > Date: Sun Oct 16 14:13:32 2016 > New Revision: 307394 > URL: https://svnweb.freebsd.org/changeset/base/307394 > > Log: > Import the current version of netmap, aligned with the one on github. > > This commit, long overdue, contains contributions in the last 2 years > from Stefano Garzarella, Giuseppe Lettieri, Vincenzo Maffione, including: > + fixes on monitor ports > + the 'ptnet' virtual device driver, and ptnetmap backend, for > high speed virtual passthrough on VMs (bhyve fixes in an upcoming commit) > + improved emulated netmap mode > + more robust error handling > + removal of stale code > + various fixes to code and documentation (some mixup between RX and TX > parameters, and private and public variables) > > We also include an additional tool, nmreplay, which is functionally > equivalent to tcpreplay but operating on netmap ports. FYI, this broke the build of the following kernel configs from 'make tinderbox': sparc64 LINT kernel failed, check _.sparc64.LINT for details i386 LINT-NOINET kernel failed, check _.i386.LINT-NOINET for details i386 LINT kernel failed, check _.i386.LINT for details pc98 LINT kernel failed, check _.pc98.LINT for details i386 LINT-NOINET6 kernel failed, check _.i386.LINT-NOINET6 for details i386 LINT-NOIP kernel failed, check _.i386.LINT-NOIP for details i386 LINT-VIMAGE kernel failed, check _.i386.LINT-VIMAGE for details amd64 LINT kernel failed, check _.amd64.LINT for details amd64 LINT-NOINET kernel failed, check _.amd64.LINT-NOINET for details powerpc LINT kernel failed, check _.powerpc.LINT for details powerpc LINT64 kernel failed, check _.powerpc.LINT64 for details amd64 LINT-NOINET6 kernel failed, check _.amd64.LINT-NOINET6 for details amd64 LINT-NOIP kernel failed, check _.amd64.LINT-NOIP for details amd64 LINT-VIMAGE kernel failed, check _.amd64.LINT-VIMAGE for details arm LINT kernel failed, check _.arm.LINT for details Some of the errors: (1) In file included from /zoo/jhb/git/freebsd/sys/modules/em/../../dev/e1000/if_lem .c:343: /zoo/jhb/git/freebsd/sys/dev/netmap/if_lem_netmap.h:42: warning: redundant redec laration of 'netmap_adaptive_io' [-Wredundant-decls] /zoo/jhb/git/freebsd/sys/dev/netmap/netmap_kern.h:1529: warning: previous declar (2) /zoo/jhb/git/freebsd/sys/dev/netmap/if_ptnet.c:347:15: error: shift count >= wid th of type [-Werror,-Wshift-count-overflow] (paddr >> 32) & 0x); ^ ~~ /zoo/jhb/git/freebsd/sys/sys/bus.h:882:59: note: expanded from macro 'bus_write_4' bus_space_write_4((r)->r_bustag, (r)->r_bushandle, (o), (v)) ^ For this one I think 'paddr' should be 'uint64_t' instead of 'vm_paddr_t' which should fix the build on 32-bit platforms. (3) /zoo/jhb/git/freebsd/sys/dev/netmap/netmap_pt.c:72:9: error: 'DEBUG' macro redefined [-Werror,-Wmacro-redefined] #define DEBUG /* Enables communication debugging. */ ^ ./opt_global.h:40:9: note: previous definition is here #define DEBUG 1 ^ (4) /zoo/jhb/git/freebsd/sys/dev/netmap/netmap_freebsd.c:671:4: error: format specif ies type 'unsigned long' but the argument has type 'vm_paddr_t' (aka 'unsigned i nt') [-Werror,-Wformat] *nm_paddr, ^ /zoo/jhb/git/freebsd/sys/dev/netmap/netmap_kern.h:249:29: note: expanded from ma cro 'D' __LINE__, __FUNCTION__, ##__VA_ARGS__); \ ^~~ /zoo/jhb/git/freebsd/sys/dev/netmap/netmap_freebsd.c:672:4: error: format specif ies type 'unsigned long' but the argument has type 'rman_res_t' (aka 'unsigned l ong long') [-Werror,-Wformat] rman_get_size(ptn_dev->pci_mem), ^~~ /zoo/jhb/git/freebsd/sys/dev/netmap/netmap_kern.h:249:29: note: expanded from ma cro 'D' __LINE__, __FUNCTION__, ##__VA_ARGS__); \ ^~~ -- John Baldwin ___ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"
svn commit: r307394 - in head: share/man/man4 sys/conf sys/dev/netmap sys/modules/netmap sys/net tools/tools/netmap
Author: luigi Date: Sun Oct 16 14:13:32 2016 New Revision: 307394 URL: https://svnweb.freebsd.org/changeset/base/307394 Log: Import the current version of netmap, aligned with the one on github. This commit, long overdue, contains contributions in the last 2 years from Stefano Garzarella, Giuseppe Lettieri, Vincenzo Maffione, including: + fixes on monitor ports + the 'ptnet' virtual device driver, and ptnetmap backend, for high speed virtual passthrough on VMs (bhyve fixes in an upcoming commit) + improved emulated netmap mode + more robust error handling + removal of stale code + various fixes to code and documentation (some mixup between RX and TX parameters, and private and public variables) We also include an additional tool, nmreplay, which is functionally equivalent to tcpreplay but operating on netmap ports. Added: head/tools/tools/netmap/ctrs.h (contents, props changed) head/tools/tools/netmap/nmreplay.8 (contents, props changed) head/tools/tools/netmap/nmreplay.c (contents, props changed) Modified: head/share/man/man4/netmap.4 head/sys/conf/files head/sys/dev/netmap/if_ixl_netmap.h head/sys/dev/netmap/if_lem_netmap.h head/sys/dev/netmap/ixgbe_netmap.h head/sys/dev/netmap/netmap.c head/sys/dev/netmap/netmap_freebsd.c head/sys/dev/netmap/netmap_generic.c head/sys/dev/netmap/netmap_kern.h head/sys/dev/netmap/netmap_mbq.c head/sys/dev/netmap/netmap_mbq.h head/sys/dev/netmap/netmap_mem2.c head/sys/dev/netmap/netmap_mem2.h head/sys/dev/netmap/netmap_monitor.c head/sys/dev/netmap/netmap_offloadings.c head/sys/dev/netmap/netmap_pipe.c head/sys/dev/netmap/netmap_vale.c head/sys/modules/netmap/Makefile head/sys/net/netmap.h head/sys/net/netmap_user.h head/tools/tools/netmap/Makefile head/tools/tools/netmap/bridge.c head/tools/tools/netmap/pkt-gen.c head/tools/tools/netmap/vale-ctl.c Modified: head/share/man/man4/netmap.4 == --- head/share/man/man4/netmap.4Sun Oct 16 12:55:31 2016 (r307393) +++ head/share/man/man4/netmap.4Sun Oct 16 14:13:32 2016 (r307394) @@ -33,10 +33,10 @@ .Sh NAME .Nm netmap .Nd a framework for fast packet I/O -.Pp +.br .Nm VALE .Nd a fast VirtuAl Local Ethernet using the netmap API -.Pp +.br .Nm netmap pipes .Nd a shared memory packet transport channel .Sh SYNOPSIS @@ -44,28 +44,49 @@ .Sh DESCRIPTION .Nm is a framework for extremely fast and efficient packet I/O -for both userspace and kernel clients. +for userspace and kernel clients, and for Virtual Machines. It runs on .Fx -and Linux, and includes -.Nm VALE , -a very fast and modular in-kernel software switch/dataplane, -and -.Nm netmap pipes , -a shared memory packet transport channel. -All these are accessed interchangeably with the same API. +Linux and some versions of Windows, and supports a variety of +.Nm netmap ports , +including +.Bl -tag -width +.It Nm physical NIC ports +to access individual queues of network interfaces; +.It Nm host ports +to inject packets into the host stack; +.It Nm VALE ports +implementing a very fast and modular in-kernel software switch/dataplane; +.It Nm netmap pipes +a shared memory packet transport channel; +.It Nm netmap monitors +a mechanism similar to +.Xr bpf +to capture traffic +.El .Pp -.Nm , -.Nm VALE -and -.Nm netmap pipes -are at least one order of magnitude faster than +All these +.Nm netmap ports +are accessed interchangeably with the same API, +and are at least one order of magnitude faster than standard OS mechanisms -(sockets, bpf, tun/tap interfaces, native switches, pipes), -reaching 14.88 million packets per second (Mpps) -with much less than one core on a 10 Gbit NIC, -about 20 Mpps per core for VALE ports, -and over 100 Mpps for netmap pipes. +(sockets, bpf, tun/tap interfaces, native switches, pipes). +With suitably fast hardware (NICs, PCIe buses, CPUs), +packet I/O using +.Nm +on supported NICs +reaches 14.88 million packets per second (Mpps) +with much less than one core on 10 Gbit/s NICs; +35-40 Mpps on 40 Gbit/s NICs (limited by the hardware); +about 20 Mpps per core for VALE ports; +and over 100 Mpps for +.Nm netmap pipes. +NICs without native +.Nm +support can still use the API in emulated mode, +which uses unmodified device drivers and is 3-5 times faster than +.Xr bpf +or raw sockets. .Pp Userspace clients can dynamically switch NICs into .Nm @@ -73,8 +94,10 @@ mode and send and receive raw packets th memory mapped buffers. Similarly, .Nm VALE -switch instances and ports, and +switch instances and ports, .Nm netmap pipes +and +.Nm netmap monitors can be created dynamically, providing high speed packet I/O between processes, virtual machines, NICs and the host stack. @@ -89,17 +112,17 @@ and standard OS mechanisms such as .Xr epoll 2 , and .Xr kqueue 2 . -.Nm VALE -and -.Nm netmap pipes +All types of +.Nm netmap ports +and the +.Nm