> -----Original Message-----
> From: Eric Blake <ebl...@redhat.com>
> Sent: Saturday, August 21, 2021 5:43 AM
> To: Xu, Tao3 <tao3...@intel.com>
> Cc: Zhang, Chen <chen.zh...@intel.com>; lizhij...@cn.fujitsu.com;
> jasow...@redhat.com; qemu-devel@nongnu.org
> Subject: Re: [PATCH v2] net/colo: check vnet_hdr_support flag when using
> virtio-net
>
> On Thu, Aug 19, 2021 at 09:27:17AM +0800, Tao Xu wrote:
> > When COLO use only one vnet_hdr_support parameter between COLO
> network
> > filter(filter-mirror, filter-redirector or filter-rewriter and
> > colo-compare, packet will not be parsed correctly. Acquire network
> > driver related to COLO, if it is nirtio-net, check vnet_hdr_support
> > flag of COLO network filter and colo-compare.
> >
> > Signed-off-by: Tao Xu <tao3...@intel.com>
> > Signed-off-by: Zhang Chen <chen.zh...@intel.com>
> > ---
>
> > +++ b/qapi/qom.json
> > @@ -241,6 +241,11 @@
> > # @notify_dev: name of the character device backend to be used to
> communicate
> > # with the remote colo-frame (only for Xen COLO)
> > #
> > +# @netdev: id of the network device backend to colo-compare, although
> > +# colo-compare doesn't depend on network device directly, this
> > +# parameter help colo-compare know what network driver it is
> > +# working on
>
> Missing a '(since 6.2)' tag.
>
> Grammar suggestion: s/colo-compare, although/colo-compare. Although/
> s/help/helps/
>
OK.
>
>
> > +#
> > # @compare_timeout: the maximum time to hold a packet from
> @primary_in for
> > # comparison with an incoming packet on @secondary_in in
> > # milliseconds (default: 3000)
> > @@ -264,6 +269,7 @@
> > 'outdev': 'str',
> > 'iothread': 'str',
> > '*notify_dev': 'str',
> > + '*netdev': 'str',
> > '*compare_timeout': 'uint64',
> > '*expired_scan_cycle': 'uint32',
> > '*max_queue_size': 'uint32', diff --git a/qemu-options.hx
> > b/qemu-options.hx index 83aa59a920..b31ce3c87d 100644
> > --- a/qemu-options.hx
> > +++ b/qemu-options.hx
> > @@ -4957,12 +4957,14 @@ SRST
> > stored. The file format is libpcap, so it can be analyzed with
> > tools such as tcpdump or Wireshark.
> >
> > - ``-object colo-
> compare,id=id,primary_in=chardevid,secondary_in=chardevid,outdev=chard
> evid,iothread=id[,vnet_hdr_support][,notify_dev=id][,compare_timeout=@
> var{ms}][,expired_scan_cycle=@var{ms}][,max_queue_size=@var{size}]``
> > + ``-object
> > + colo-
> compare,id=id,primary_in=chardevid,secondary_in=chardevid,outde
> > + v=chardevid,iothread=id[,netdev=netdevid][,vnet_hdr_support][,notify
> > +
> _dev=id][,compare_timeout=@var{ms}][,expired_scan_cycle=@var{ms}][,
> m
> > + ax_queue_size=@var{size}]``
> > Colo-compare gets packet from primary\_in chardevid and
> > secondary\_in, then compare whether the payload of primary packet
> > and secondary packet are the same. If same, it will output
> > primary packet to out\_dev, else it will notify COLO-framework to
> > do
> > - checkpoint and send primary packet to out\_dev. In order to
> > + checkpoint and send primary packet to out\_dev. Although colo-
> compare
> > + does not depend on network device directly, netdevid help
>
> s/help/helps/
OK, will fix in next version.
Thanks
Chen
>
> > + colo-compare know what network driver it is working on. In
> > + order to
> > improve efficiency, we need to put the task of comparison in
> > another iothread. If it has the vnet\_hdr\_support flag,
> > colo compare will send/recv packet with vnet\_hdr\_len.
> > --
> > 2.25.1
> >
> >
>
> --
> Eric Blake, Principal Software Engineer
> Red Hat, Inc. +1-919-301-3266
> Virtualization: qemu.org | libvirt.org