On 12/29/2015 02:31 PM, Zhang Chen wrote: > Hi~ > Just a small ping... > No news for a week. > Colo proxy is a part of COLO project, we need review and comments. > > > Thanks > zhangchen
Hi, will find sometime to review this this week. Thanks > > > On 12/22/2015 06:42 PM, Zhang Chen wrote: >> From: zhangchen <zhangchen.f...@cn.fujitsu.com> >> >> 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-v2.2-periodic-mode-with-colo-proxyV2 >> >> >> Usage: >> >> primary: >> -netdev tap,id=bn0 -device e1000,netdev=bn0 >> -object >> colo-proxy,id=f0,netdev=bn0,queue=all,mode=primary,addr=host:port >> >> secondary: >> -netdev tap,id=bn0 -device e1000,netdev=bn0 >> -object >> colo-proxy,id=f0,netdev=bn0,queue=all,mode=secondary,addr=host:port >> >> NOTE: >> queue must set "all". See enum NetFilterDirection for detail. >> colo-proxy need queue all packets >> colo-proxy V2 just can compare ip packet >> >> >> ## 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. >> >> V2: >> rebase colo-proxy with qemu-colo-v2.2-periodic-mode >> fix dave's comments >> fix wency's comments >> fix zhanghailiang's comments >> >> v1: >> initial patch. >> >> >> >> zhangchen (10): >> Init colo-proxy object based on netfilter >> Jhash: add linux kernel jhashtable in qemu >> Colo-proxy: add colo-proxy framework >> Colo-proxy: add data structure and jhash func >> net/colo-proxy: Add colo interface to use proxy >> net/colo-proxy: add socket used by forward func >> net/colo-proxy: Add packet enqueue & handle func >> net/colo-proxy: Handle packet and connection >> net/colo-proxy: Compare pri pkt to sec pkt >> net/colo-proxy: Colo-proxy do checkpoint and clear >> >> include/qemu/jhash.h | 61 ++++ >> net/Makefile.objs | 1 + >> net/colo-proxy.c | 939 >> +++++++++++++++++++++++++++++++++++++++++++++++++++ >> net/colo-proxy.h | 24 ++ >> qemu-options.hx | 6 + >> trace-events | 8 + >> vl.c | 3 +- >> 7 files changed, 1041 insertions(+), 1 deletion(-) >> create mode 100644 include/qemu/jhash.h >> create mode 100644 net/colo-proxy.c >> create mode 100644 net/colo-proxy.h >> >