qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 0/9] For QEMU 2.5: Add a net filter and a netbuf


From: Jason Wang
Subject: Re: [Qemu-devel] [PATCH 0/9] For QEMU 2.5: Add a net filter and a netbuffer plugin based on the filter
Date: Mon, 27 Jul 2015 12:53:32 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.8.0


On 07/24/2015 06:55 PM, Yang Hongyang wrote:
> This patch add a net filter between network backend and NIC devices.
> All packets will pass by this filter.
> Also implement a netbuffer plugin for example, the netbuffer plugin
> could be used by VM FT solutions like Macrocheckpointing,
> to buffer/release packets.
> Based on this, dump plugin could be easily implemented.
>
> I've done some simple tests on this series,
> backend, tap,user
> NIC, e1000,virtio-net
>
> There's still some missing functions to be done, I've posted this
> early in order to gain more comments, thank you!
>
> TODO:
>   multiqueue support.
>
>                 +--------------+       +-------------+
>   +----------+  |    filter    |       |frontend(NIC)|
>   |      peer+-->              |       |             |
>   | network  <--+backend       <-------+ peer        |
>   | backend  |  |         peer +------->             |
>   +----------+  +--------------+       +-------------+
>
> Usage:
>   -netdev tap,id=bn0  # you can use whatever backend as needed
>   -netdev filter,id=f0,backend=bn0
>   -netdev filter-<plugin>,id=p0,filter=f0
>   -device e1000,netdev=f0
> NOTE:
>   You can attach multiple plugins to the filter, dynamically add/remove
> filter and filter-<plugin>.
>
> The netbuffer plugin:
> Usage:
>   -netdev tap,id=bn0  # you can use whatever backend as needed
>   -netdev filter,id=f0,backend=bn0
>   -netdev filter-buffer,id=p0,filter=f0
>   -device e1000,netdev=f0
>
> Will supply a public API to release the buffer. But there's no
> callers currently.
> To test this feature, it's quite simple, just use
> netdev_add filter-buffer,id=p0,filter=f0
> to buffer packets,
> netdev_del p0
> will release packets.
>
> You can also implement whatever plugin you needed based on this filter.
>
> Yang Hongyang (9):
>   netdev: Add a net filter
>   virtio-net: add filter support
>   filter: remove plugins when remove filter
>   filter: remove filter before remove network backend
>   filter: add netbuffer plugin
>   introduce qemu_find_net_clients_by_model
>   net/queue: export qemu_net_queue_append
>   move out net queue structs define
>   add a public api to release buffer
>
>  hw/net/virtio-net.c  |  17 ++-
>  include/net/filter.h |  21 ++++
>  include/net/net.h    |   5 +
>  include/net/queue.h  |  26 ++++
>  net/Makefile.objs    |   2 +
>  net/clients.h        |   6 +
>  net/filter-buffer.c  | 185 ++++++++++++++++++++++++++++
>  net/filter.c         | 331 
> +++++++++++++++++++++++++++++++++++++++++++++++++++
>  net/net.c            |  51 +++++++-
>  net/queue.c          |  31 +----
>  qapi-schema.json     |  40 ++++++-
>  11 files changed, 679 insertions(+), 36 deletions(-)
>  create mode 100644 include/net/filter.h
>  create mode 100644 net/filter-buffer.c
>  create mode 100644 net/filter.c
>

Hi:

Can you answer my question at
http://lists.gnu.org/archive/html/qemu-devel/2015-07/msg04653.html?

The main concern is why it must be a new kind of netdev?

Thanks



reply via email to

[Prev in Thread] Current Thread [Next in Thread]