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

[Xen-devel] [PATCH V4 0/8] COLO-Proxy: Make Xen COLO use userspace colo-proxy



Because of some reason, We no longer support COLO kernel proxy.
So we send this patch set to make Xen use userspace colo-proxy in qemu.

Below is a COLO userspace proxy ascii figure:

 Primary qemu                                                           
Secondary qemu
+--------------------------------------------------------------+       
+----------------------------------------------------------------+
| +----------------------------------------------------------+ |       |  
+-----------------------------------------------------------+ |
| |                                                          | |       |  |     
                                                      | |
| |                        guest                             | |       |  |     
                   guest                              | |
| |                                                          | |       |  |     
                                                      | |
| +-------^--------------------------+-----------------------+ |       |  
+---------------------+--------+----------------------------+ |
|         |                          |                         |       |        
                ^        |                              |
|         |                          |                         |       |        
                |        |                              |
|         |  +------------------------------------------------------+  |        
                |        |                              |
|netfilter|  |                       |                         |    |  |   
netfilter            |        |                              |
| +----------+ +----------------------------+                  |    |  |  
+-----------------------------------------------------------+ |
| |       |  |                       |      |        out       |    |  |  |     
                |        |  filter excute order       | |
| |       |  |          +-----------------------------+        |    |  |  |     
                |        | +------------------->      | |
| |       |  |          |            |      |         |        |    |  |  |     
                |        |   TCP                      | |
| | +-----+--+-+  +-----v----+ +-----v----+ |pri +----+----+sec|    |  |  | 
+------------+  +---+----+---v+rewriter++  +------------+ | |
| | |          |  |          | |          | |in  |         |in |    |  |  | |   
         |  |        |              |  |            | | |
| | |  filter  |  |  filter  | |  filter  +------>  colo   <------+ +-------->  
filter   +--> adjust |   adjust     +-->   filter   | | |
| | |  mirror  |  |redirector| |redirector| |    | compare |   |  |    |  | | 
redirector |  | ack    |   seq        |  | redirector | | |
| | |          |  |          | |          | |    |         |   |  |    |  | |   
         |  |        |              |  |            | | |
| | +----^-----+  +----+-----+ +----------+ |    +---------+   |  |    |  | 
+------------+  +--------+--------------+  +---+--------+ | |
| |      |   tx        |   rx           rx  |                  |  |    |  |     
       tx                        all       |  rx      | |
| |      |             |                    |                  |  |    |  
+-----------------------------------------------------------+ |
| |      |             +--------------+     |                  |  |    |        
                                           |            |
| |      |   filter excute order      |     |                  |  |    |        
                                           |            |
| |      |  +---------------->        |     |                  |  
+--------------------------------------------------------+            |
| +-----------------------------------------+                  |       |        
                                                        |
|        |                            |                        |       |        
                                                        |
+--------------------------------------------------------------+       
+----------------------------------------------------------------+
         |guest receive               | guest send
         |                            |
+--------+----------------------------v------------------------+
|                                                              |                
          NOTE: filter direction is rx/tx/all
|                         tap                                  |                
          rx:receive packets sent to the netdev
|                                                              |                
          tx:receive packets sent by the netdev
+--------------------------------------------------------------+

You can know the detail from here:

http://wiki.qemu.org/Features/COLO
https://github.com/qemu/qemu/blob/master/docs/colo-proxy.txt

V4:
   - Because the origin 3/7 has been merged,
     remove it in this series.
   - Add new patch "COLO-Proxy: Add colo-compare notify args"
     to support qemu side patch:
     https://lists.nongnu.org/archive/html/qemu-devel/2017-02/msg07265.html

   - Add colo_userspace_proxy macro as a separate patch.
   - Add some comments about COLO and fix some typo in patch 2/7.
   - Fix some bug and typo in patch 7/7.
   - Rebase codes on upstream Xen.

V3:
   - remove the 'RFC' tag.
   - fix some bug in patch 7/7.
   - fix codestyle.

V2:
   - Address wei's comments, use macro to reuse codes.
   - Do some work on the last patch.
   - Fix some typo.
   - Add LIBXL_HAVE_COLO_USERSPACE_PROXY macro in libxl.h.
   - Some bug fix.

V1: 
   - Initial patch


Zhang Chen (8):
  COLO-Proxy: Add remus command to open userspace proxy
  COLO-Proxy: Setup userspace colo-proxy on primary side
  COLO-Proxy: Setup userspace colo-proxy on secondary side
  COLO-Proxy: Add primary userspace colo proxy start args
  COLO-Proxy: Add secondary userspace colo-proxy start args
  COLO-Proxy: Add colo-compare notify args
  COLO-Proxy: Use socket to get checkpoint event.
  COLO-proxy: Add colo_userspace_proxy macro

 docs/man/xl.pod.1.in             |   5 ++
 tools/libxl/libxl.h              |   6 ++
 tools/libxl/libxl_colo.h         |   7 ++
 tools/libxl/libxl_colo_proxy.c   | 149 +++++++++++++++++++++++++++++++++++++++
 tools/libxl/libxl_colo_restore.c |  19 +++--
 tools/libxl/libxl_colo_save.c    |  18 ++++-
 tools/libxl/libxl_create.c       |   8 ++-
 tools/libxl/libxl_dm.c           | 138 ++++++++++++++++++++++++++++++++++++
 tools/libxl/libxl_nic.c          | 117 ++++++++++++++++++++++++++++++
 tools/libxl/libxl_types.idl      |  68 +++++++++++++++---
 tools/xl/xl.h                    |   1 +
 tools/xl/xl_cmdtable.c           |   3 +-
 tools/xl/xl_migrate.c            |  28 ++++++--
 tools/xl/xl_parse.c              |  97 +++++++++++++++++++++++++
 tools/xl/xl_vmcontrol.c          |   2 +
 15 files changed, 642 insertions(+), 24 deletions(-)

-- 
2.7.4




_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.