mbox series

[V6,0/6] Passthrough specific network traffic in COLO

Message ID 20210420151537.64360-1-chen.zhang@intel.com (mailing list archive)
Headers show
Series Passthrough specific network traffic in COLO | expand

Message

Zhang, Chen April 20, 2021, 3:15 p.m. UTC
Due to some real user scenarios don't need to monitor all traffic.
And qemu net-filter also need function to more detailed flow control.
This series give user ability to passthrough kinds of COLO network stream.

For example, windows guest user want to enable windows remote desktop
to touch guest(UDP/TCP 3389), This case use UDP and TCP mixed, and the
tcp part payload always different caused by real desktop display
data(for guest time/ mouse display....).

Another case is some real user application will actively transmit information
include guest time part, primary guest send data with time 10:01.000,
At the same time secondary guest send data with time 10:01.001,
it will always trigger COLO checkpoint(live migrate) to drop guest performance.

  V6:
    - Change QAPI IPFlowSpec protocol from enum to str.
    - Use getprotobyname to handle the protocols.
    - Optimize code in net.

  V5:
    - Squash original 1-3 QAPI patches together.
    - Rename some data structures to avoid misunderstanding.
    - Reuse InetSocketAddressBase in IPFlowSpec.
    - Add new function in util/qemu-sockets.c to parse
      InetSocketAddressBase.
    - Update HMP command define to reuse current code.
    - Add more comments.

  V4:
    - Fix QAPI code conflict for V6.0 merged patches.
    - Note this feature for V6.1.

  V3:
    - Add COLO passthrough list lock.
    - Add usage demo and more comments.

  V2:
    - Add the n-tuple support.
    - Add some qapi definitions.
    - Support multi colo-compare objects.
    - Support setup each rules for each objects individually.
    - Clean up COLO compare definition to .h file.
    - Rebase HMP command for stable tree.
    - Add redundant rules check.


Zhang Chen (6):
  qapi/net: Add IPFlowSpec and QMP command for COLO passthrough
  util/qemu-sockets.c: Add inet_parse_base to handle
    InetSocketAddressBase
  hmp-commands: Add new HMP command for COLO passthrough
  net/colo-compare: Move data structure and define to .h file.
  net/colo-compare: Add passthrough list to CompareState
  net/net.c: Add handler for COLO passthrough connection

 hmp-commands.hx        |  26 +++++++
 include/monitor/hmp.h  |   2 +
 include/qemu/sockets.h |   1 +
 monitor/hmp-cmds.c     |  82 ++++++++++++++++++++
 net/colo-compare.c     | 162 +++++++++++-----------------------------
 net/colo-compare.h     | 118 +++++++++++++++++++++++++++++
 net/net.c              | 166 +++++++++++++++++++++++++++++++++++++++++
 qapi/net.json          |  68 +++++++++++++++++
 util/qemu-sockets.c    |  14 ++++
 9 files changed, 519 insertions(+), 120 deletions(-)

Comments

Zhang, Chen April 28, 2021, 3:26 a.m. UTC | #1
Please give me for comments for this series, Ping....

Thanks
Chen

> -----Original Message-----
> From: Zhang, Chen <chen.zhang@intel.com>
> Sent: Tuesday, April 20, 2021 11:16 PM
> To: Jason Wang <jasowang@redhat.com>; qemu-dev <qemu-
> devel@nongnu.org>; Eric Blake <eblake@redhat.com>; Dr. David Alan
> Gilbert <dgilbert@redhat.com>; Markus Armbruster <armbru@redhat.com>;
> Daniel P. Berrangé <berrange@redhat.com>; Gerd Hoffmann
> <kraxel@redhat.com>; Li Zhijian <lizhijian@cn.fujitsu.com>
> Cc: Zhang Chen <zhangckid@gmail.com>; Zhang, Chen
> <chen.zhang@intel.com>; Lukas Straub <lukasstraub2@web.de>
> Subject: [PATCH V6 0/6] Passthrough specific network traffic in COLO
> 
> Due to some real user scenarios don't need to monitor all traffic.
> And qemu net-filter also need function to more detailed flow control.
> This series give user ability to passthrough kinds of COLO network stream.
> 
> For example, windows guest user want to enable windows remote desktop
> to touch guest(UDP/TCP 3389), This case use UDP and TCP mixed, and the tcp
> part payload always different caused by real desktop display data(for guest
> time/ mouse display....).
> 
> Another case is some real user application will actively transmit information
> include guest time part, primary guest send data with time 10:01.000, At the
> same time secondary guest send data with time 10:01.001, it will always
> trigger COLO checkpoint(live migrate) to drop guest performance.
> 
>   V6:
>     - Change QAPI IPFlowSpec protocol from enum to str.
>     - Use getprotobyname to handle the protocols.
>     - Optimize code in net.
> 
>   V5:
>     - Squash original 1-3 QAPI patches together.
>     - Rename some data structures to avoid misunderstanding.
>     - Reuse InetSocketAddressBase in IPFlowSpec.
>     - Add new function in util/qemu-sockets.c to parse
>       InetSocketAddressBase.
>     - Update HMP command define to reuse current code.
>     - Add more comments.
> 
>   V4:
>     - Fix QAPI code conflict for V6.0 merged patches.
>     - Note this feature for V6.1.
> 
>   V3:
>     - Add COLO passthrough list lock.
>     - Add usage demo and more comments.
> 
>   V2:
>     - Add the n-tuple support.
>     - Add some qapi definitions.
>     - Support multi colo-compare objects.
>     - Support setup each rules for each objects individually.
>     - Clean up COLO compare definition to .h file.
>     - Rebase HMP command for stable tree.
>     - Add redundant rules check.
> 
> 
> Zhang Chen (6):
>   qapi/net: Add IPFlowSpec and QMP command for COLO passthrough
>   util/qemu-sockets.c: Add inet_parse_base to handle
>     InetSocketAddressBase
>   hmp-commands: Add new HMP command for COLO passthrough
>   net/colo-compare: Move data structure and define to .h file.
>   net/colo-compare: Add passthrough list to CompareState
>   net/net.c: Add handler for COLO passthrough connection
> 
>  hmp-commands.hx        |  26 +++++++
>  include/monitor/hmp.h  |   2 +
>  include/qemu/sockets.h |   1 +
>  monitor/hmp-cmds.c     |  82 ++++++++++++++++++++
>  net/colo-compare.c     | 162 +++++++++++-----------------------------
>  net/colo-compare.h     | 118 +++++++++++++++++++++++++++++
>  net/net.c              | 166 +++++++++++++++++++++++++++++++++++++++++
>  qapi/net.json          |  68 +++++++++++++++++
>  util/qemu-sockets.c    |  14 ++++
>  9 files changed, 519 insertions(+), 120 deletions(-)
> 
> --
> 2.25.1
Zhang, Chen May 12, 2021, 7:05 a.m. UTC | #2
Hi Markus, Jason and Dave.

This series has been modified according to previous suggestions. 
Please review it again to make sure I fully understand comments.

Thanks
Chen

> -----Original Message-----
> From: Qemu-devel <qemu-devel-
> bounces+chen.zhang=intel.com@nongnu.org> On Behalf Of Zhang, Chen
> Sent: Wednesday, April 28, 2021 11:27 AM
> To: Jason Wang <jasowang@redhat.com>; qemu-dev <qemu-
> devel@nongnu.org>; Eric Blake <eblake@redhat.com>; Dr. David Alan
> Gilbert <dgilbert@redhat.com>; Markus Armbruster <armbru@redhat.com>;
> Daniel P. Berrangé <berrange@redhat.com>; Gerd Hoffmann
> <kraxel@redhat.com>; Li Zhijian <lizhijian@cn.fujitsu.com>
> Cc: Lukas Straub <lukasstraub2@web.de>; Zhang Chen
> <zhangckid@gmail.com>
> Subject: RE: [PATCH V6 0/6] Passthrough specific network traffic in COLO
> 
> Please give me for comments for this series, Ping....
> 
> Thanks
> Chen
> 
> > -----Original Message-----
> > From: Zhang, Chen <chen.zhang@intel.com>
> > Sent: Tuesday, April 20, 2021 11:16 PM
> > To: Jason Wang <jasowang@redhat.com>; qemu-dev <qemu-
> > devel@nongnu.org>; Eric Blake <eblake@redhat.com>; Dr. David Alan
> > Gilbert <dgilbert@redhat.com>; Markus Armbruster
> <armbru@redhat.com>;
> > Daniel P. Berrangé <berrange@redhat.com>; Gerd Hoffmann
> > <kraxel@redhat.com>; Li Zhijian <lizhijian@cn.fujitsu.com>
> > Cc: Zhang Chen <zhangckid@gmail.com>; Zhang, Chen
> > <chen.zhang@intel.com>; Lukas Straub <lukasstraub2@web.de>
> > Subject: [PATCH V6 0/6] Passthrough specific network traffic in COLO
> >
> > Due to some real user scenarios don't need to monitor all traffic.
> > And qemu net-filter also need function to more detailed flow control.
> > This series give user ability to passthrough kinds of COLO network stream.
> >
> > For example, windows guest user want to enable windows remote
> desktop
> > to touch guest(UDP/TCP 3389), This case use UDP and TCP mixed, and the
> > tcp part payload always different caused by real desktop display
> > data(for guest time/ mouse display....).
> >
> > Another case is some real user application will actively transmit
> > information include guest time part, primary guest send data with time
> > 10:01.000, At the same time secondary guest send data with time
> > 10:01.001, it will always trigger COLO checkpoint(live migrate) to drop guest
> performance.
> >
> >   V6:
> >     - Change QAPI IPFlowSpec protocol from enum to str.
> >     - Use getprotobyname to handle the protocols.
> >     - Optimize code in net.
> >
> >   V5:
> >     - Squash original 1-3 QAPI patches together.
> >     - Rename some data structures to avoid misunderstanding.
> >     - Reuse InetSocketAddressBase in IPFlowSpec.
> >     - Add new function in util/qemu-sockets.c to parse
> >       InetSocketAddressBase.
> >     - Update HMP command define to reuse current code.
> >     - Add more comments.
> >
> >   V4:
> >     - Fix QAPI code conflict for V6.0 merged patches.
> >     - Note this feature for V6.1.
> >
> >   V3:
> >     - Add COLO passthrough list lock.
> >     - Add usage demo and more comments.
> >
> >   V2:
> >     - Add the n-tuple support.
> >     - Add some qapi definitions.
> >     - Support multi colo-compare objects.
> >     - Support setup each rules for each objects individually.
> >     - Clean up COLO compare definition to .h file.
> >     - Rebase HMP command for stable tree.
> >     - Add redundant rules check.
> >
> >
> > Zhang Chen (6):
> >   qapi/net: Add IPFlowSpec and QMP command for COLO passthrough
> >   util/qemu-sockets.c: Add inet_parse_base to handle
> >     InetSocketAddressBase
> >   hmp-commands: Add new HMP command for COLO passthrough
> >   net/colo-compare: Move data structure and define to .h file.
> >   net/colo-compare: Add passthrough list to CompareState
> >   net/net.c: Add handler for COLO passthrough connection
> >
> >  hmp-commands.hx        |  26 +++++++
> >  include/monitor/hmp.h  |   2 +
> >  include/qemu/sockets.h |   1 +
> >  monitor/hmp-cmds.c     |  82 ++++++++++++++++++++
> >  net/colo-compare.c     | 162 +++++++++++-----------------------------
> >  net/colo-compare.h     | 118 +++++++++++++++++++++++++++++
> >  net/net.c              | 166
> +++++++++++++++++++++++++++++++++++++++++
> >  qapi/net.json          |  68 +++++++++++++++++
> >  util/qemu-sockets.c    |  14 ++++
> >  9 files changed, 519 insertions(+), 120 deletions(-)
> >
> > --
> > 2.25.1
>