[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
- Re: [Qemu-devel] [PATCH 1/9] netdev: Add a net filter, (continued)
- [Qemu-devel] [PATCH 8/9] move out net queue structs define, Yang Hongyang, 2015/07/24
- [Qemu-devel] [PATCH 5/9] filter: add netbuffer plugin, Yang Hongyang, 2015/07/24
- [Qemu-devel] [PATCH 9/9] add a public api to release buffer, Yang Hongyang, 2015/07/24
- [Qemu-devel] [PATCH 7/9] net/queue: export qemu_net_queue_append, Yang Hongyang, 2015/07/24
- Re: [Qemu-devel] [PATCH 0/9] For QEMU 2.5: Add a net filter and a netbuffer plugin based on the filter, zhanghailiang, 2015/07/25
- Re: [Qemu-devel] [PATCH 0/9] For QEMU 2.5: Add a net filter and a netbuffer plugin based on the filter,
Jason Wang <=
- Re: [Qemu-devel] [PATCH 0/9] For QEMU 2.5: Add a net filter and a netbuffer plugin based on the filter, Yang Hongyang, 2015/07/29