qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Zhang, Chen" <chen.zhang@intel.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: Lukas Straub <lukasstraub2@web.de>,
	Li Zhijian <lizhijian@cn.fujitsu.com>,
	Jason Wang <jasowang@redhat.com>,
	qemu-dev <qemu-devel@nongnu.org>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Zhang Chen <zhangckid@gmail.com>
Subject: RE: [PATCH V4 3/7] qapi/net: Add new QMP command for COLO passthrough
Date: Mon, 22 Mar 2021 09:59:46 +0000	[thread overview]
Message-ID: <ecf5a9f4ba3044bebefbb7c19be9fb93@intel.com> (raw)
In-Reply-To: <87tup7gmgu.fsf@dusky.pond.sub.org>



> -----Original Message-----
> From: Markus Armbruster <armbru@redhat.com>
> Sent: Saturday, March 20, 2021 12:03 AM
> To: Zhang, Chen <chen.zhang@intel.com>
> Cc: Jason Wang <jasowang@redhat.com>; qemu-dev <qemu-
> devel@nongnu.org>; Eric Blake <eblake@redhat.com>; Dr. David Alan
> Gilbert <dgilbert@redhat.com>; Li Zhijian <lizhijian@cn.fujitsu.com>; Lukas
> Straub <lukasstraub2@web.de>; Zhang Chen <zhangckid@gmail.com>
> Subject: Re: [PATCH V4 3/7] qapi/net: Add new QMP command for COLO
> passthrough
> 
> Zhang Chen <chen.zhang@intel.com> writes:
> 
> > Since the real user scenario does not need COLO to monitor all traffic.
> > Add colo-passthrough-add and colo-passthrough-del to maintain a COLO
> > network passthrough list.
> >
> > Signed-off-by: Zhang Chen <chen.zhang@intel.com>
> > ---
> >  net/net.c     | 10 ++++++++++
> >  qapi/net.json | 40 ++++++++++++++++++++++++++++++++++++++++
> >  2 files changed, 50 insertions(+)
> >
> > diff --git a/net/net.c b/net/net.c
> > index 725a4e1450..7c7cefe0e0 100644
> > --- a/net/net.c
> > +++ b/net/net.c
> > @@ -1199,6 +1199,16 @@ void qmp_netdev_del(const char *id, Error
> **errp)
> >      }
> >  }
> >
> > +void qmp_colo_passthrough_add(L4_Connection *conn, Error **errp) {
> > +    /* Setup passthrough connection */
> 
> Do you mean to say
> 
>        /* TODO implement */
> 
> ?

Yes, I will input real code here in 7/7 patch.

> 
> > +}
> > +
> > +void qmp_colo_passthrough_del(L4_Connection *conn, Error **errp) {
> > +    /* Delete passthrough connection */ }
> 
> Likewise.
> 
> > +
> >  static void netfilter_print_info(Monitor *mon, NetFilterState *nf)  {
> >      char *str;
> > diff --git a/qapi/net.json b/qapi/net.json index
> > cd4a8ed95e..ec7d3b1128 100644
> > --- a/qapi/net.json
> > +++ b/qapi/net.json
> > @@ -851,3 +851,43 @@
> >    'data': { 'protocol': 'IP_PROTOCOL', '*id': 'str', '*src_ip': 'str', '*dst_ip': 'str',
> >      '*src_port': 'int', '*dst_port': 'int' } }
> >
> > +##
> > +# @colo-passthrough-add:
> > +#
> > +# Add passthrough entry according to customer's needs in COLO-compare.
> 
> QEMU doesn't have customers, it has users :)

Thanks note.

> 
> > +#
> > +# Returns: Nothing on success
> > +#
> > +# Since: 6.1
> > +#
> > +# Example:
> > +#
> > +# -> { "execute": "colo-passthrough-add",
> > +#      "arguments": { "protocol": "tcp", "id": "object0", "src_ip":
> "192.168.1.1",
> > +#      "dst_ip": "192.168.1.2", "src_port": 1234, "dst_port": 4321 } }
> > +# <- { "return": {} }
> > +#
> > +##
> > +{ 'command': 'colo-passthrough-add', 'boxed': true,
> > +     'data': 'L4_Connection' }
> > +
> > +##
> > +# @colo-passthrough-del:
> > +#
> > +# Delete passthrough entry according to customer's needs in COLO-
> compare.
> > +#
> > +# Returns: Nothing on success
> > +#
> > +# Since: 6.1
> > +#
> > +# Example:
> > +#
> > +# -> { "execute": "colo-passthrough-del",
> > +#      "arguments": { "protocol": "tcp", "id": "object0", "src_ip":
> "192.168.1.1",
> > +#      "dst_ip": "192.168.1.2", "src_port": 1234, "dst_port": 4321 } }
> > +# <- { "return": {} }
> > +#
> > +##
> > +{ 'command': 'colo-passthrough-del', 'boxed': true,
> > +     'data': 'L4_Connection' }
> > +
> 
> To make sense of this, I have to refer back to PATCH 1 and 2:
> 
>    { 'enum': 'IP_PROTOCOL', 'data': [ 'tcp', 'udp', 'dccp', 'sctp', 'udplite',
>        'icmp', 'igmp', 'ipv6' ] }
> 
>    { 'struct': 'L4_Connection',
>      'data': { 'protocol': 'IP_PROTOCOL', '*id': 'str', '*src_ip': 'str', '*dst_ip': 'str',
>        '*src_port': 'int', '*dst_port': 'int' } }
> 
> Please squash the three patches together.

OK.

> 
> I figure colo-passthrough-add adds some kind of packet matching thingy that
> can match packets by source IP, source port, destination IP, destination port,
> and protocol.  Correct?

Yes, you are right.

> 
> The protocol is mandatory, all others are optional.  What does it mean to omit
> an optional one?  Match all?

Yes, match all. The idea from Jason Wang, for example:
User just set the protocol/source IP(tcp/192.168.1.1) , others empty.
The rule will bypass all the TCP packet from the source IP.

> 
> I have no idea what @id is supposed to mean.  Please explain intended use.

The @id means packet hander in Qemu. Because not all the guest network packet into the colo-compare module, the net-filters are same cases.
There modules attach to NIC or chardev socket to work, VM maybe have multi modules running. So we use the ID to set the rule to the specific module. 

Thanks
Chen

> 
> I'm ignoring colo-passthrough-del for now, because I feel need to
> understand -add first.



  reply	other threads:[~2021-03-22 10:01 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-19  3:55 [PATCH V4 0/7] Bypass specific network traffic in COLO Zhang Chen
2021-03-19  3:55 ` [PATCH V4 1/7] qapi/net.json: Add IP_PROTOCOL definition Zhang Chen
2021-03-19 15:46   ` Markus Armbruster
2021-03-22  9:59     ` Zhang, Chen
2021-03-22 12:12       ` Markus Armbruster
2021-03-22 12:43       ` Daniel P. Berrangé
2021-03-23 20:01   ` Dr. David Alan Gilbert
2021-04-15 10:51     ` Zhang, Chen
2021-04-15 15:14       ` Markus Armbruster
2021-04-16  6:03         ` Zhang, Chen
2021-04-16  9:22           ` Markus Armbruster
2021-04-20 11:05             ` Dr. David Alan Gilbert
2021-04-20 15:20               ` Zhang, Chen
2021-03-19  3:55 ` [PATCH V4 2/7] qapi/net.json: Add L4_Connection definition Zhang Chen
2021-03-19 15:48   ` Markus Armbruster
2021-03-22 10:00     ` Zhang, Chen
2021-03-22 12:31       ` Markus Armbruster
2021-03-23  9:06         ` Zhang, Chen
2021-03-23  9:54           ` Markus Armbruster
2021-03-23 20:14             ` Dr. David Alan Gilbert
2021-03-24  6:47               ` Markus Armbruster
2021-03-24  6:51                 ` Markus Armbruster
2021-03-26  2:27                 ` Zhang, Chen
2021-03-24  0:59             ` Zhang, Chen
2021-03-19 15:53   ` Markus Armbruster
2021-03-24  6:56   ` Markus Armbruster
2021-03-19  3:55 ` [PATCH V4 3/7] qapi/net: Add new QMP command for COLO passthrough Zhang Chen
2021-03-19 16:03   ` Markus Armbruster
2021-03-22  9:59     ` Zhang, Chen [this message]
2021-03-22 12:16       ` Markus Armbruster
2021-03-23  9:06         ` Zhang, Chen
2021-03-22 12:36   ` Markus Armbruster
2021-03-23  9:19     ` Zhang, Chen
2021-03-23  9:58       ` Markus Armbruster
2021-03-30  3:38         ` Zhang, Chen
2021-04-06  8:01           ` Markus Armbruster
2021-04-08  3:24             ` Zhang, Chen
2021-03-19  3:55 ` [PATCH V4 4/7] hmp-commands: Add new HMP " Zhang Chen
2021-03-24 10:39   ` Dr. David Alan Gilbert
2021-04-15 10:51     ` Zhang, Chen
2021-04-16  1:21     ` Zhang, Chen
2021-03-19  3:55 ` [PATCH V4 5/7] net/colo-compare: Move data structure and define to .h file Zhang Chen
2021-03-24 11:02   ` Dr. David Alan Gilbert
2021-03-29  1:18     ` Zhang, Chen
2021-03-19  3:55 ` [PATCH V4 6/7] net/colo-compare: Add passthrough list to CompareState Zhang Chen
2021-03-19  3:55 ` [PATCH V4 7/7] net/net.c: Add handler for COLO passthrough connection Zhang Chen

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=ecf5a9f4ba3044bebefbb7c19be9fb93@intel.com \
    --to=chen.zhang@intel.com \
    --cc=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=jasowang@redhat.com \
    --cc=lizhijian@cn.fujitsu.com \
    --cc=lukasstraub2@web.de \
    --cc=qemu-devel@nongnu.org \
    --cc=zhangckid@gmail.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).