From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39660) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a4OMl-0000JI-6u for qemu-devel@nongnu.org; Thu, 03 Dec 2015 02:31:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a4OMh-0002hh-VN for qemu-devel@nongnu.org; Thu, 03 Dec 2015 02:31:47 -0500 Received: from [59.151.112.132] (port=44947 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a4OMg-0002aW-Uh for qemu-devel@nongnu.org; Thu, 03 Dec 2015 02:31:43 -0500 References: <1448627251-11186-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> <20151201164445.GB2580@work-vm> From: Zhang Chen Message-ID: <565FF044.1060607@cn.fujitsu.com> Date: Thu, 3 Dec 2015 15:33:24 +0800 MIME-Version: 1.0 In-Reply-To: <20151201164445.GB2580@work-vm> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC PATCH 0/9] Add colo-proxy based on netfilter List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Dr. David Alan Gilbert" Cc: Li Zhijian , Gui jianfeng , Jason Wang , "eddie.dong" , qemu devel , Huang peng , Gong lei , Stefan Hajnoczi , jan.kiszka@siemens.com, hongyang.yang@easystack.cn, zhanghailiang Hi,Dave On 12/02/2015 12:44 AM, Dr. David Alan Gilbert wrote: > * Zhang Chen (zhangchen.fnst@cn.fujitsu.com) wrote: >> Hi,all >> >> This patch add an colo-proxy object, COLO-Proxy is a part of COLO, >> based on qemu netfilter and it's a plugin for qemu netfilter. the function >> keep Secondary VM connect normal to Primary VM and compare packets >> sent by PVM to sent by SVM.if the packet difference,notify COLO do >> checkpoint and send all primary packet has queued. >> >> You can also get the series from: >> >> https://github.com/zhangckid/qemu/tree/colo-proxy-V1 >> >> Usage: >> >> primary: >> -netdev tap,id=bn0 -device e1000,netdev=bn0 >> -object colo-proxy,id=f0,netdev=bn0,queue=all,mode=primary,addr=ip:port >> >> secondary: >> -netdev tap,id=bn0 -device e1000,netdev=bn0 >> -object colo-proxy,id=f0,netdev=bn0,queue=all,mode=secondary,addr=ip:port > If we have more than one NIC on the guest, do you intend to allow > multiple colo-proxy's ? Yes,we support.Colo-proxy based on netfilter, same to filter-buffer, proxy attach your netdev. but we haven't test it > Having read through the series, it looks like the main missing piece > is the work to synchronise sequence numbers. Yes, we will support it in the futrue > I think also you'll need to clean out the connection hash when either > you see both sides have closed the connection or (maybe after some > time of idleness as well? Otherwise we'd just accumulate dead connections > overtime). > > I'm guessing the buffer filter also has to be created on the command line? > How does the order of buffers work? > > Dave In colo-proxy we have done buffer filter's work,so we just need startup colo-proxy. Thanks for review zhangchen >> NOTE: >> queue must set "all". See enum NetFilterDirection for detail. >> colo-proxy need queue all packets >> colo-proxy V1 just a demo of colo proxy,not pass test with colo upstream >> >> >> ## Background >> >> COLO FT/HA (COarse-grain LOck-stepping Virtual Machines for Non-stop Service) >> project is a high availability solution. Both Primary VM (PVM) and Secondary VM >> (SVM) run in parallel. They receive the same request from client, and generate >> responses in parallel too. If the response packets from PVM and SVM are >> identical, they are released immediately. Otherwise, a VM checkpoint (on >> demand)is conducted. >> >> Paper: >> http://www.socc2013.org/home/program/a3-dong.pdf?attredirects=0 >> >> COLO on Xen: >> http://wiki.xen.org/wiki/COLO_-_Coarse_Grain_Lock_Stepping >> >> COLO on Qemu/KVM: >> http://wiki.qemu.org/Features/COLO >> >> By the needs of capturing response packets from PVM and SVM and finding out >> whether they are identical, we introduce a new module to qemu networking >> called colo-proxy. >> >> >> v1: >> initial patch. >> >> >> >> zhangchen (9): >> Init colo-proxy object based on netfilter >> jhash: add linux kernel jhashtable in qemu >> colo-proxy: add colo-proxy framework >> colo-proxy: add colo-proxy setup work >> net/colo-proxy: add colo packet handler >> net/colo-proxy: add packet forward function >> net/colo-proxy: add packet enqueue and handle function >> net/colo-proxy: enqueue primary and secondary packet >> net/colo-proxy: add packet compare and notify checkpoint >> >> include/qemu/jhash.h | 52 ++++ >> net/Makefile.objs | 1 + >> net/colo-proxy.c | 745 +++++++++++++++++++++++++++++++++++++++++++++++++++ >> net/colo-proxy.h | 124 +++++++++ >> qemu-options.hx | 4 + >> vl.c | 3 +- >> 6 files changed, 928 insertions(+), 1 deletion(-) >> create mode 100644 include/qemu/jhash.h >> create mode 100644 net/colo-proxy.c >> create mode 100644 net/colo-proxy.h >> >> -- >> 1.9.1 >> >> >> > -- > Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK > > > . >