From: Yang Hongyang <yanghy@cn.fujitsu.com>
To: Jason Wang <jasowang@redhat.com>, qemu-devel@nongnu.org
Cc: thuth@redhat.com, zhang.zhanghailiang@huawei.com,
lizhijian@cn.fujitsu.com, armbru@redhat.com,
Yang Hongyang <burnef@gmail.com>,
stefanha@redhat.com
Subject: Re: [Qemu-devel] [PATCH v11 12/12] netfilter: add multiqueue support
Date: Tue, 22 Sep 2015 17:47:23 +0800 [thread overview]
Message-ID: <560123AB.6070600@cn.fujitsu.com> (raw)
In-Reply-To: <56011FB1.1060707@redhat.com>
On 09/22/2015 05:30 PM, Jason Wang wrote:
[...]
>>>>>>
>>>>>> if (!nf->netdev_id) {
>>>>>> error_setg(errp, "Parameter 'netdev' is required");
>>>>>> @@ -165,9 +174,6 @@ static void netfilter_complete(UserCreatable
>>>>>> *uc, Error **errp)
>>>>>> error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "netdev",
>>>>>> "a network backend id");
>>>>>> return;
>>>>>> - } else if (queues > 1) {
>>>>>> - error_setg(errp, "Multi queue is not supported");
>>>>>> - return;
>>>>>> }
>>>>>>
>>>>>> if (get_vhost_net(ncs[0])) {
>>>>>> @@ -187,6 +193,17 @@ static void netfilter_complete(UserCreatable
>>>>>> *uc, Error **errp)
>>>>>> }
>>>>>> QTAILQ_INSERT_TAIL(&nf->netdev->filters, nf, next);
>>>>>>
>>>>>> + if (queues > 1) {
>>>>>> + /*
>>>>>> + * Store the properties of the filter except "type"
>>>>>> property.
>>>>>> + * When there's multiqueue, we will create a new filter
>>>>>> object
>>>>>> + * of the same type and same properties. this hashtable is
>>>>>> used
>>>>>> + * to set newly created object properties.
>>>>>> + */
>>>>>> + proptable = g_hash_table_new_full(NULL, NULL, NULL,
>>>>>> + proptb_free_val_func);
>>>>>> + }
>>>>>
>>>>> I'm thinking whether or not duplicate all the properties in each
>>>>> netfilters is a good method. Maybe we can have a another ojbect with
>>>>> array of pointers to NetFilter objects embedded? Another question is
>>>>> whether or not we need to do this at this level. Maybe we can make the
>>>>> necessary Netfilter multiqueue aware. E.g let buffer filter to have
>>>>> multiqueue also? Then you may only need a single timer?
>>>>
>>>> Sorry I don't get it at first. I also thought about make the buffer
>>>> filter to
>>>> have multiqueue, but there comes problem, how to distinguish which
>>>> queue
>>>> we should go in when receive the packet, we need to add a mechanism to
>>>> distinguish which queue belongs to which net client's queue, that will
>>>> be more complex, while current multiqueue implementation of net clients
>>>> is multiple net clients with the same name, current solution is the
>>>> simplest
>>>> solution I can think of...
>>>
>>> I'm not sure I get this. But there's a queue_index filed in each
>>> NetClientState which may help in this case.
>>
>> Ah, I see, thank you. There's another reason I do this in filter abstract
>> layer is that the concrete filter implementation do not need to deal
>> with the
>> multiqueue, will simplify the filter implement a lot, otherwise, every
>> filter need to implement it's own multiqueue support.
>
> Probably not, just pointing all queues to a single netfilter object may
> be sufficient (e.g for dump). And it's much easier for some kind of
> filter (e.g traffic throttling) if it was multiqueue aware.
I see, will think about doing this other way, thank you!
>
> .
>
--
Thanks,
Yang.
next prev parent reply other threads:[~2015-09-22 9:53 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-16 12:15 [Qemu-devel] [PATCH v11 00/12] Add a netfilter object and netbuffer filter Yang Hongyang
2015-09-16 12:15 ` [Qemu-devel] [PATCH v11 01/12] qmp: delete qemu opts when delete an object Yang Hongyang
2015-09-24 7:43 ` Markus Armbruster
2015-09-24 8:35 ` Yang Hongyang
2015-09-24 9:42 ` Markus Armbruster
2015-09-24 9:59 ` Yang Hongyang
2015-09-24 11:35 ` Markus Armbruster
2015-09-25 1:11 ` Yang Hongyang
2015-09-24 10:06 ` Yang Hongyang
2015-09-24 11:36 ` Markus Armbruster
2015-09-25 1:12 ` Yang Hongyang
2015-09-25 6:40 ` Jason Wang
2015-09-16 12:15 ` [Qemu-devel] [PATCH v11 02/12] init/cleanup of netfilter object Yang Hongyang
2015-09-16 21:09 ` Eric Blake
2015-09-17 1:23 ` Yang Hongyang
2015-09-17 16:09 ` Eric Blake
2015-09-18 1:14 ` Yang Hongyang
2015-09-24 8:41 ` Markus Armbruster
2015-09-24 8:47 ` Yang Hongyang
2015-09-24 11:40 ` Markus Armbruster
2015-09-25 1:13 ` Yang Hongyang
2015-09-24 8:57 ` Yang Hongyang
2015-09-24 11:52 ` Markus Armbruster
2015-09-25 6:45 ` Jason Wang
2015-09-25 14:10 ` Markus Armbruster
2015-09-28 5:47 ` Jason Wang
2015-09-28 5:53 ` Yang Hongyang
2015-09-16 12:15 ` [Qemu-devel] [PATCH v11 03/12] netfilter: hook packets before net queue send Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 04/12] net: merge qemu_deliver_packet and qemu_deliver_packet_iov Yang Hongyang
2015-09-22 7:30 ` Jason Wang
2015-09-22 7:44 ` Yang Hongyang
2015-09-22 8:14 ` Jason Wang
2015-09-22 8:21 ` Yang Hongyang
2015-09-22 9:19 ` Jason Wang
2015-09-22 9:26 ` Yang Hongyang
2015-09-22 9:42 ` Jason Wang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 05/12] net/queue: introduce NetQueueDeliverFunc Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 06/12] netfilter: add an API to pass the packet to next filter Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 07/12] netfilter: print filter info associate with the netdev Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 08/12] net/queue: export qemu_net_queue_append_iov Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 09/12] netfilter: add a netbuffer filter Yang Hongyang
2015-09-24 9:12 ` Markus Armbruster
2015-09-25 7:18 ` Yang Hongyang
2015-09-25 8:18 ` Jason Wang
2015-09-25 15:13 ` Markus Armbruster
2015-09-25 15:07 ` Markus Armbruster
2015-09-28 6:12 ` Jason Wang
2015-09-28 7:38 ` Markus Armbruster
2015-09-28 6:42 ` Yang Hongyang
2015-09-25 8:03 ` Yang Hongyang
2015-09-25 8:18 ` Thomas Huth
2015-09-25 8:22 ` Yang Hongyang
2015-09-25 15:26 ` Markus Armbruster
2015-09-28 6:40 ` Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 10/12] tests: add test cases for netfilter object Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 11/12] netfilter/multiqueue: introduce netfilter name Yang Hongyang
2015-09-16 12:16 ` [Qemu-devel] [PATCH v11 12/12] netfilter: add multiqueue support Yang Hongyang
2015-09-22 7:36 ` Jason Wang
2015-09-22 7:49 ` Yang Hongyang
2015-09-22 8:31 ` Jason Wang
2015-09-22 8:35 ` Yang Hongyang
2015-09-22 9:19 ` Jason Wang
2015-09-22 8:07 ` Yang Hongyang
2015-09-22 8:32 ` Jason Wang
2015-09-22 8:43 ` Yang Hongyang
2015-09-22 9:30 ` Jason Wang
2015-09-22 9:47 ` Yang Hongyang [this message]
2015-09-22 7:39 ` [Qemu-devel] [PATCH v11 00/12] Add a netfilter object and netbuffer filter Jason Wang
2015-09-22 7:59 ` Yang Hongyang
2015-09-24 4:22 ` Jason Wang
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=560123AB.6070600@cn.fujitsu.com \
--to=yanghy@cn.fujitsu.com \
--cc=armbru@redhat.com \
--cc=burnef@gmail.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).