| #
f0ea3689
|
| 15-Feb-2014 |
Luigi Rizzo <luigi@FreeBSD.org> |
This new version of netmap brings you the following:
- netmap pipes, providing bidirectional blocking I/O while moving 100+ Mpps between processes using shared memory channels (no mistake: over
This new version of netmap brings you the following:
- netmap pipes, providing bidirectional blocking I/O while moving 100+ Mpps between processes using shared memory channels (no mistake: over one hundred million. But mind you, i said *moving* not *processing*);
- kqueue support (BHyVe needs it);
- improved user library. Just the interface name lets you select a NIC, host port, VALE switch port, netmap pipe, and individual queues. The upcoming netmap-enabled libpcap will use this feature.
- optional extra buffers associated to netmap ports, for applications that need to buffer data yet don't want to make copies.
- segmentation offloading for the VALE switch, useful between VMs.
and a number of bug fixes and performance improvements.
My colleagues Giuseppe Lettieri and Vincenzo Maffione did a substantial amount of work on these features so we owe them a big thanks.
There are some external repositories that can be of interest:
https://code.google.com/p/netmap our public repository for netmap/VALE code, including linux versions and other stuff that does not belong here, such as python bindings.
https://code.google.com/p/netmap-libpcap a clone of the libpcap repository with netmap support. With this any libpcap client has access to most netmap feature with no recompilation. E.g. tcpdump can filter packets at 10-15 Mpps.
https://code.google.com/p/netmap-ipfw a userspace version of ipfw+dummynet which uses netmap to send/receive packets. Speed is up in the 7-10 Mpps range per core for simple rulesets.
Both netmap-libpcap and netmap-ipfw will be merged upstream at some point, but while this happens it is useful to have access to them.
And yes, this code will be merged soon. It is infinitely better than the version currently in 10 and 9.
MFC after: 3 days
show more ...
|
| #
485ac45a
|
| 04-Feb-2014 |
Peter Grehan <grehan@FreeBSD.org> |
MFC @ r259205 in preparation for some SVM updates. (for real this time)
|
| #
945a2095
|
| 20-Jan-2014 |
Kai Wang <kaiw@FreeBSD.org> |
MFH@260917.
|
| #
4f18ae67
|
| 19-Jan-2014 |
Glen Barber <gjb@FreeBSD.org> |
MFH: Tracking commit (r260891)
Sponsored by: The FreeBSD Foundation
|
| #
f2637526
|
| 16-Jan-2014 |
Luigi Rizzo <luigi@FreeBSD.org> |
netmap_user.h: add separate rx/tx ring indexes add ring specifier in nm_open device name
netmap.c, netmap_vale.c more consistent errno numbers
netmap_generic.c correctly handle failure
netmap_user.h: add separate rx/tx ring indexes add ring specifier in nm_open device name
netmap.c, netmap_vale.c more consistent errno numbers
netmap_generic.c correctly handle failure in registering interfaces.
tools/tools/netmap/ massive cleanup of the example programs (a lot of common code is now in netmap_user.h.)
nm_util.[ch] are going away soon. pcap.c will also go when i commit the native netmap support for libpcap.
show more ...
|
| #
e01ff621
|
| 09-Jan-2014 |
Glen Barber <gjb@FreeBSD.org> |
MFH: tracking commit (head@r260486)
Sponsored by: The FreeBSD Foundation
|
| #
339f59c0
|
| 09-Jan-2014 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Fix build with VIMAGE.
|
| #
fb25194f
|
| 07-Jan-2014 |
Luigi Rizzo <luigi@FreeBSD.org> |
fix use after free when releasing a netmap adapter.
Submitted by: Giuseppe Lettieri
|
| #
17885a7b
|
| 06-Jan-2014 |
Luigi Rizzo <luigi@FreeBSD.org> |
It is 2014 and we have a new version of netmap. Most relevant features:
- netmap emulation on any NIC, even those without native netmap support.
On the ixgbe we have measured about 4Mpps/core/que
It is 2014 and we have a new version of netmap. Most relevant features:
- netmap emulation on any NIC, even those without native netmap support.
On the ixgbe we have measured about 4Mpps/core/queue in this mode, which is still a lot more than with sockets/bpf.
- seamless interconnection of VALE switch, NICs and host stack.
If you disable accelerations on your NIC (say em0)
ifconfig em0 -txcsum -txcsum
you can use the VALE switch to connect the NIC and the host stack:
vale-ctl -h valeXX:em0
allowing sharing the NIC with other netmap clients.
- THE USER API HAS SLIGHTLY CHANGED (head/cur/tail pointers instead of pointers/count as before). This was unavoidable to support, in the future, multiple threads operating on the same rings. Netmap clients require very small source code changes to compile again. On the plus side, the new API should be easier to understand and the internals are a lot simpler.
The manual page has been updated extensively to reflect the current features and give some examples.
This is the result of work of several people including Giuseppe Lettieri, Vincenzo Maffione, Michio Honda and myself, and has been financially supported by EU projects CHANGE and OPENLAB, from NetApp University Research Fund, NEC, and of course the Universita` di Pisa.
show more ...
|
| #
256d9417
|
| 18-Dec-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Fix build.
|
| #
f9790aeb
|
| 15-Dec-2013 |
Luigi Rizzo <luigi@FreeBSD.org> |
split netmap code according to functions: - netmap.c base code - netmap_freebsd.c FreeBSD-specific code - netmap_generic.c emulate netmap over standard drivers - netmap_mbq.c simple mbuf tailq - ne
split netmap code according to functions: - netmap.c base code - netmap_freebsd.c FreeBSD-specific code - netmap_generic.c emulate netmap over standard drivers - netmap_mbq.c simple mbuf tailq - netmap_mem2.c memory management - netmap_vale.c VALE switch
simplify devce-specific code
show more ...
|
| #
50d3286d
|
| 11-Nov-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Merge head r232040 through r258006.
|
| #
5864b3a5
|
| 06-Nov-2013 |
Luigi Rizzo <luigi@FreeBSD.org> |
remove a debugging message
|
| #
bc4c07d8
|
| 05-Nov-2013 |
Luigi Rizzo <luigi@FreeBSD.org> |
remove some test code.
|
| #
954dca4c
|
| 05-Nov-2013 |
Luigi Rizzo <luigi@FreeBSD.org> |
fix a bug when a device has 1 tx (or rx) queue and more than one queue of a different type.
Submitted by: Vincenzo Maffione MFC after: 3 days
|
| #
5ab0d24d
|
| 05-Nov-2013 |
Luigi Rizzo <luigi@FreeBSD.org> |
check errors on return from netmap_attach()
Submitted by: Giuseppe Lettieri MFC after: 3 days
|
| #
3d819cb6
|
| 02-Nov-2013 |
Luigi Rizzo <luigi@FreeBSD.org> |
circumvent a couple of warnings: - on line 2550 intentionally overriding a const qualifier - on line 3219 intentionally converting uint64_t to a pointer
|
| #
ce3ee1e7
|
| 01-Nov-2013 |
Luigi Rizzo <luigi@FreeBSD.org> |
update to the latest netmap snapshot. This includes the following: - use separate memory regions for VALE ports - locking fixes - some simplifications in the NIC-specific routines - performance impro
update to the latest netmap snapshot. This includes the following: - use separate memory regions for VALE ports - locking fixes - some simplifications in the NIC-specific routines - performance improvements for the VALE switch - some new features in the pkt-gen test program - documentation updates
There are small API changes that require programs to be recompiled (NETMAP_API has been bumped so you will detect old binaries at runtime).
In particular: - struct netmap_slot now is 16 bytes to support an extra pointer, which may save one data copy when using VALE ports or VMs; - the struct netmap_if has two extra fields;
MFC after: 3 days
show more ...
|
| #
f9b2a21c
|
| 31-Oct-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Merge head r232040 through r257457. M usr.sbin/portsnap/portsnap/portsnap.8 M usr.sbin/portsnap/portsnap/portsnap.sh M usr.sbin/tcpdump/tcpdump/Makefile
|
| #
76039bc8
|
| 26-Oct-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare to this event, adding if_var.h to files that do need it. Also, include all includes that now are included due to implicit po
The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare to this event, adding if_var.h to files that do need it. Also, include all includes that now are included due to implicit pollution via if_var.h
Sponsored by: Netflix Sponsored by: Nginx, Inc.
show more ...
|
| #
d1d01586
|
| 05-Sep-2013 |
Simon J. Gerraty <sjg@FreeBSD.org> |
Merge from head
|
| #
40f65a4d
|
| 07-Aug-2013 |
Peter Grehan <grehan@FreeBSD.org> |
IFC @ r254014
|
| #
552311f4
|
| 17-Jul-2013 |
Xin LI <delphij@FreeBSD.org> |
IFC @253398
|
| #
cfe30d02
|
| 19-Jun-2013 |
Gleb Smirnoff <glebius@FreeBSD.org> |
Merge fresh head.
|
| #
85233a7d
|
| 05-Jun-2013 |
Luigi Rizzo <luigi@FreeBSD.org> |
- fix a bug in the previous commit that was dropping the last packet from each batch flowing on the VALE switch
- feature: add glue for 'indirect' buffers on the sender side: if a slot has NS_IN
- fix a bug in the previous commit that was dropping the last packet from each batch flowing on the VALE switch
- feature: add glue for 'indirect' buffers on the sender side: if a slot has NS_INDIRECT set, the netmap buffer contains pointer(s) to the actual userspace buffers, which are accessed with copyin(). The feature is not finalised yet, as it will likely need to deal with some iovec variant for proper scatter/gather support. This will save one copy for clients (e.g. qemu) that cannot use the netmap buffer directly.
A curiosity: on amd64 copyin() appears to be 10-15% faster than pkt_copy() or bcopy() at least for sizes of 256 and greater.
show more ...
|