[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v11 00/12] Add a netfilter object and netbuffer filt
From: |
Yang Hongyang |
Subject: |
[Qemu-devel] [PATCH v11 00/12] Add a netfilter object and netbuffer filter |
Date: |
Wed, 16 Sep 2015 20:15:56 +0800 |
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
--
1.9.1
- [Qemu-devel] [PATCH v11 00/12] Add a netfilter object and netbuffer filter,
Yang Hongyang <=
- [Qemu-devel] [PATCH v11 01/12] qmp: delete qemu opts when delete an object, Yang Hongyang, 2015/09/16
- Re: [Qemu-devel] [PATCH v11 01/12] qmp: delete qemu opts when delete an object, Markus Armbruster, 2015/09/24
- Re: [Qemu-devel] [PATCH v11 01/12] qmp: delete qemu opts when delete an object, Yang Hongyang, 2015/09/24
- Re: [Qemu-devel] [PATCH v11 01/12] qmp: delete qemu opts when delete an object, Markus Armbruster, 2015/09/24
- Re: [Qemu-devel] [PATCH v11 01/12] qmp: delete qemu opts when delete an object, Yang Hongyang, 2015/09/24
- Re: [Qemu-devel] [PATCH v11 01/12] qmp: delete qemu opts when delete an object, Markus Armbruster, 2015/09/24
- Re: [Qemu-devel] [PATCH v11 01/12] qmp: delete qemu opts when delete an object, Yang Hongyang, 2015/09/24
- Re: [Qemu-devel] [PATCH v11 01/12] qmp: delete qemu opts when delete an object, Yang Hongyang, 2015/09/24
- Re: [Qemu-devel] [PATCH v11 01/12] qmp: delete qemu opts when delete an object, Markus Armbruster, 2015/09/24
- Re: [Qemu-devel] [PATCH v11 01/12] qmp: delete qemu opts when delete an object, Yang Hongyang, 2015/09/24