Miguel Di Ciurcio Filho wrote: > Hello, > > This is a prototype suggestion. I mostly copied and pasted the code from > net/dump.c into net.c and made some adjustments. There is no command line > parsing involved yet, just the internals and small changes in net/tap.c and > net/slirp.c do make the thing work. > > In my tests, using tap as backend, e1000 as a guest device and running iperf > from > guest to host, the overhead of dumping the traffic caused a loss of around 30% > of performance.
No surprise, dump writes are synchronous. The day this is actually hurting someone, we may see asynchronous patches. > > I opened the dumped files in wireshark and they looked fine. When using slirp > all requests were dumped fine too. > > Bugs/limitations: > - I have no clue on how to deal with tap+vhost, is it necessary? I don't think so. Do you can still do "tcpdump -i tap0" in that scenario, don't you? Then definitely not. > - When using virtio-net, I'm not sure how to handle iovec when vnet_hdr=on Let the sending peer report (offset field or callback) where to find the payload in a frame. That channel - or a separate one - could also be used to detect if a peer supports dumping at all (vhost...). Then no peer code need to be extended with dump management code, all could be moved into net.c > - Create a function to add dump to a netdev on the fly, is it necessary? Yes. That way you don't need to shutdown&restart your VM just to enable or disable dumping - quite important in certain tests. > - Handle cleanups > > Miguel Di Ciurcio Filho (4): > net/dump: Make pcap structures public > net: Introduce NetClientDump and auxiliary functions > net/tap: Suggested support for NetClientDump > net/slirp: Suggested support for NetClientDump > > net.c | 90 > +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > net.h | 8 +++++ > net/dump.c | 21 ------------- > net/dump.h | 21 +++++++++++++ > net/slirp.c | 3 ++ > net/tap.c | 3 ++ > qemu-common.h | 1 + > 7 files changed, 126 insertions(+), 21 deletions(-) > Thanks for picking this up! Jan
signature.asc
Description: OpenPGP digital signature