On 09/16/2015 08:15 PM, Yang Hongyang wrote:
> This patch add an netfilter abstract object, captures all network packets
> on associated netdev. Also implement a concrete filter buffer based on
> this abstract object. the "buffer" netfilter could be used by VM FT solutions
> like MicroCheckpointing, to buffer/release packets. Or to simulate
> packet delay.
>
> You can also get the series from:
> https://github.com/macrosheep/qemu/tree/netfilter-v11
>
> Usage:
>  -netdev tap,id=bn0
>  -device e1000,netdev=bn0
>  -object filter-buffer,id=f0,netdev=bn0,chain=in,interval=1000
>
> dynamically add/remove netfilters:
>  object_add filter-buffer,id=f0,netdev=bn0,chain=in,interval=1000
>  object_del f0
>
> NOTE:
>  interval's scale is microsecond.
>  chain is optional, and is one of in|out|all, default is "all".
>        "in" means this filter will receive packets sent to the @netdev
>        "out" means this filter will receive packets sent from the @netdev
>        "all" means this filter will receive packets both sent to/from
>              the @netdev
>
> v11:
>  - address Jason&Daniel's comments
>  - add multiqueue support, the last 2 patches
>  - rebased to the latest master
>
> v10:
>  - Reimplemented using QOM (suggested by stefan)
>  - Do not export NetQueue internals (suggested by stefan)
>  - see individual patch for detail
>
> v9:
>  - squash command description and help to patch 1&3
>  - qapi changes according to Markus&Eric's comments
>  - see individual patch for detail
>
> v8:
>  - some minor fixes according to Thomas's comments
>  - rebased to the latest master branch
>
> v7:
>  - print filter info when execute 'info network'
>  - addressed Jason's comments
>
> v6:
>  - add multiqueue support, please see individual patch for detail
>
> v5:
>  - add a sent_cb param to filter receive_iov api
>  - squash the 4th patch into patch 3
>  - remove dummy sent_cb (buffer filter)
>  - addressed Jason's other comments, see individual patches for detail
>
> v4:
>  - get rid of struct Filter
>  - squash the 4th patch into patch 2
>  - fix qemu_netfilter_pass_to_next_iov
>  - get rid of bh (buffer filter)
>  - release the packet to next filter instead of to receiver (buffer filter)
>
> v3:
>  - add an api to pass the packet to next filter
>  - remove netfilters when delete netdev
>  - add qtest testcases for netfilter
>  - addressed comments from Jason
>
> v2:
>  - add a chain option to netfilter object
>  - move the hook place earlier, before net_queue_send
>  - drop the unused api in buffer filter
>  - squash buffer filter patches into one
>  - remove receive() api from netfilter, only receive_iov() is enough
>  - addressed comments from Jason&Thomas
>
> v1:
>  initial patch.
>
> Yang Hongyang (12):
>   qmp: delete qemu opts when delete an object
>   init/cleanup of netfilter object
>   netfilter: hook packets before net queue send
>   net: merge qemu_deliver_packet and qemu_deliver_packet_iov
>   net/queue: introduce NetQueueDeliverFunc
>   netfilter: add an API to pass the packet to next filter
>   netfilter: print filter info associate with the netdev
>   net/queue: export qemu_net_queue_append_iov
>   netfilter: add a netbuffer filter
>   tests: add test cases for netfilter object
>   netfilter/multiqueue: introduce netfilter name
>   netfilter: add multiqueue support
>
>  include/net/filter.h    |  76 ++++++++++++
>  include/net/net.h       |   6 +-
>  include/net/queue.h     |  20 +++-
>  include/qemu/typedefs.h |   1 +
>  net/Makefile.objs       |   2 +
>  net/filter-buffer.c     | 170 +++++++++++++++++++++++++++
>  net/filter.c            | 306 
> ++++++++++++++++++++++++++++++++++++++++++++++++
>  net/net.c               | 108 +++++++++++++----
>  net/queue.c             |  24 ++--
>  qapi-schema.json        |  18 +++
>  qemu-options.hx         |  18 +++
>  qmp.c                   |   4 +
>  tests/.gitignore        |   1 +
>  tests/Makefile          |   2 +
>  tests/test-netfilter.c  | 200 +++++++++++++++++++++++++++++++
>  vl.c                    |  18 ++-
>  16 files changed, 927 insertions(+), 47 deletions(-)
>  create mode 100644 include/net/filter.h
>  create mode 100644 net/filter-buffer.c
>  create mode 100644 net/filter.c
>  create mode 100644 tests/test-netfilter.c
>

Want to merge this. But have comments on patch 4 and multiqueue patches.
I suggest to drop them in next version so I can merge to reduce the
review iterations. Other optimizations and fixups could be done on top.

Thanks

Reply via email to