• Z
    colo-compare: introduce colo compare initialization · 7dce4e6f
    Zhang Chen 提交于
    This a COLO net 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
    +--------------------------------------------------------------+
    
    In COLO-compare, we do packet comparing job.
    Packets coming from the primary char indev will be sent to outdev.
    Packets coming from the secondary char dev will be dropped after comparing.
    colo-comapre need two input chardev and one output chardev:
    primary_in=chardev1-id (source: primary send packet)
    secondary_in=chardev2-id (source: secondary send packet)
    outdev=chardev3-id
    
    usage:
    
    primary:
    -netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,downscript=/etc/qemu-ifdown
    -device e1000,id=e0,netdev=hn0,mac=52:a4:00:12:78:66
    -chardev socket,id=mirror0,host=3.3.3.3,port=9003,server,nowait
    -chardev socket,id=compare1,host=3.3.3.3,port=9004,server,nowait
    -chardev socket,id=compare0,host=3.3.3.3,port=9001,server,nowait
    -chardev socket,id=compare0-0,host=3.3.3.3,port=9001
    -chardev socket,id=compare_out,host=3.3.3.3,port=9005,server,nowait
    -chardev socket,id=compare_out0,host=3.3.3.3,port=9005
    -object filter-mirror,id=m0,netdev=hn0,queue=tx,outdev=mirror0
    -object filter-redirector,netdev=hn0,id=redire0,queue=rx,indev=compare_out
    -object filter-redirector,netdev=hn0,id=redire1,queue=rx,outdev=compare0
    -object colo-compare,id=comp0,primary_in=compare0-0,secondary_in=compare1,outdev=compare_out0
    
    secondary:
    -netdev tap,id=hn0,vhost=off,script=/etc/qemu-ifup,down script=/etc/qemu-ifdown
    -device e1000,netdev=hn0,mac=52:a4:00:12:78:66
    -chardev socket,id=red0,host=3.3.3.3,port=9003
    -chardev socket,id=red1,host=3.3.3.3,port=9004
    -object filter-redirector,id=f1,netdev=hn0,queue=tx,indev=red0
    -object filter-redirector,id=f2,netdev=hn0,queue=rx,outdev=red1
    Signed-off-by: NZhang Chen <zhangchen.fnst@cn.fujitsu.com>
    Signed-off-by: NLi Zhijian <lizhijian@cn.fujitsu.com>
    Signed-off-by: NWen Congyang <wency@cn.fujitsu.com>
    Signed-off-by: NJason Wang <jasowang@redhat.com>
    7dce4e6f
qemu-options.hx 154.8 KB