From: Yang Hongyang <yanghy@cn.fujitsu.com>
To: Jason Wang <jasowang@redhat.com>, qemu-devel@nongnu.org
Cc: thuth@redhat.com, stefanha@redhat.com,
zhang.zhanghailiang@huawei.com, lizhijian@cn.fujitsu.com,
armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH v10 00/10] Add a netfilter object and netbuffer filter
Date: Mon, 14 Sep 2015 13:36:22 +0800 [thread overview]
Message-ID: <55F65CD6.1020009@cn.fujitsu.com> (raw)
In-Reply-To: <55F659A4.7090705@redhat.com>
On 09/14/2015 01:22 PM, Jason Wang wrote:
>
>
> On 09/14/2015 01:09 PM, Yang Hongyang wrote:
>> Hi Stefan,Jason,
>>
>> I've convert this series to base on QOM, and introducing NetQueue apis
>> instead of using Netqueue internals as Stefan suggested. Could you
>> please take a
>> look at it?
>
> Will go through this in next few days.
Thanks a lot.
>
>> Most of the details have been reviewed by Jason, and the whole filter
>> logic
>> isn't changed.
>> One missing feature compared to previous versions is the multiqueue
>> support,
>> however, I've already implemented it, before sending it out, I need to
>> get as
>> many review comments as possible on this series, and addressing it, in
>> order to
>> reduce the iter round...And multiqueue support can be sent later as a
>> seperate
>> series if the base can go in first. If there has to be another few
>> rounds, I
>> will include multiqueue patches.
>
> Sounds good. There's one more thing which may be implemented. I'd expect
> a unit test for buffer filter. (This could be done by a separate patch
> on top).
The 10th patch "tests: add test cases for netfilter object" might contains
basic tests on buffer filter using qmp, the netfilter object is an abstract
object, so in order to test it, we must use a concrete filter as the buffer
filter.
>
> Thanks
>
>>
>> Thanks in advance.
>>
>> On 09/09/2015 03:24 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-v10
>>>
>>> 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
>>>
>>> TODO:
>>> - multiqueue
>>>
>>> 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 (10):
>>> 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
>>>
>>> include/net/filter.h | 68 ++++++++++++++++
>>> include/net/net.h | 6 +-
>>> include/net/queue.h | 20 ++++-
>>> include/qemu/typedefs.h | 1 +
>>> net/Makefile.objs | 2 +
>>> net/filter-buffer.c | 169 ++++++++++++++++++++++++++++++++++++++
>>> net/filter.c | 213
>>> ++++++++++++++++++++++++++++++++++++++++++++++++
>>> net/net.c | 116 ++++++++++++++++++++------
>>> 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, 833 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
>>>
>>
>
> .
>
--
Thanks,
Yang.
next prev parent reply other threads:[~2015-09-14 5:36 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-09 7:24 [Qemu-devel] [PATCH v10 00/10] Add a netfilter object and netbuffer filter Yang Hongyang
2015-09-09 7:24 ` [Qemu-devel] [PATCH v10 01/10] qmp: delete qemu opts when delete an object Yang Hongyang
2015-09-09 7:24 ` [Qemu-devel] [PATCH v10 02/10] init/cleanup of netfilter object Yang Hongyang
2015-09-14 8:54 ` Daniel P. Berrange
2015-09-14 8:56 ` Daniel P. Berrange
2015-09-14 9:05 ` Yang Hongyang
2015-09-16 9:28 ` Jason Wang
2015-09-16 11:11 ` Yang Hongyang
2015-09-09 7:24 ` [Qemu-devel] [PATCH v10 03/10] netfilter: hook packets before net queue send Yang Hongyang
2015-09-09 7:24 ` [Qemu-devel] [PATCH v10 04/10] net: merge qemu_deliver_packet and qemu_deliver_packet_iov Yang Hongyang
2015-09-09 7:24 ` [Qemu-devel] [PATCH v10 05/10] net/queue: introduce NetQueueDeliverFunc Yang Hongyang
2015-09-09 7:24 ` [Qemu-devel] [PATCH v10 06/10] netfilter: add an API to pass the packet to next filter Yang Hongyang
2015-09-16 9:29 ` Jason Wang
2015-09-09 7:24 ` [Qemu-devel] [PATCH v10 07/10] netfilter: print filter info associate with the netdev Yang Hongyang
2015-09-09 7:24 ` [Qemu-devel] [PATCH v10 08/10] net/queue: export qemu_net_queue_append_iov Yang Hongyang
2015-09-09 7:24 ` [Qemu-devel] [PATCH v10 09/10] netfilter: add a netbuffer filter Yang Hongyang
2015-09-14 9:04 ` Daniel P. Berrange
2015-09-14 9:53 ` Yang Hongyang
2015-09-16 9:42 ` Jason Wang
2015-09-16 11:19 ` Yang Hongyang
2015-09-09 7:24 ` [Qemu-devel] [PATCH v10 10/10] tests: add test cases for netfilter object Yang Hongyang
2015-09-14 5:09 ` [Qemu-devel] [PATCH v10 00/10] Add a netfilter object and netbuffer filter Yang Hongyang
2015-09-14 5:22 ` Jason Wang
2015-09-14 5:36 ` Yang Hongyang [this message]
2015-09-16 9:48 ` Jason Wang
2015-09-16 11:22 ` Yang Hongyang
2015-09-14 9:05 ` Daniel P. Berrange
2015-09-14 9:14 ` Yang Hongyang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55F65CD6.1020009@cn.fujitsu.com \
--to=yanghy@cn.fujitsu.com \
--cc=armbru@redhat.com \
--cc=jasowang@redhat.com \
--cc=lizhijian@cn.fujitsu.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=thuth@redhat.com \
--cc=zhang.zhanghailiang@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).