From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59569) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bSiJH-0002vQ-9p for qemu-devel@nongnu.org; Thu, 28 Jul 2016 06:13:00 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bSiJC-0000LM-FD for qemu-devel@nongnu.org; Thu, 28 Jul 2016 06:12:59 -0400 Received: from [59.151.112.132] (port=52428 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bSiJB-0000Jl-8x for qemu-devel@nongnu.org; Thu, 28 Jul 2016 06:12:54 -0400 From: Zhang Chen Date: Thu, 28 Jul 2016 18:12:19 +0800 Message-ID: <1469700748-19754-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [PATCH V11 0/9] Introduce COLO-compare and filter-rewriter List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu devel , Jason Wang Cc: Zhang Chen , Li Zhijian , Wen Congyang , zhanghailiang , "eddie . dong" , "Dr . David Alan Gilbert" COLO-compare is a part of COLO project. It is used to compare the network package to help COLO decide whether to do checkpoint. Filter-rewriter is a part of COLO project too. It will rewrite some of secondary packet to make secondary guest's connection established successfully. In this module we will rewrite tcp packet's ack to the secondary from primary,and rewrite tcp packet's seq to the primary from secondary. This series depend on [PATCH V3] qemu-char: Add qemu_chr_add_handlers_full() for GMaincontext The full version in this github: https://github.com/zhangckid/qemu/tree/colo-v2.7-proxy-mode-compare-and-rewriter-jul28 v11: - Make patch 5 to a independent patch series. [PATCH V3] qemu-char: Add qemu_chr_add_handlers_full() for GMaincontext - For Jason's comments, merge filter-rewriter to this series. (patch 7,8,9) - Add reverse_connection_key() - remove conn_list in filter-rewriter - remove unprocessed_connections - add some comments v10: - fix typo - Should we make patch 5 independent with this series? This patch just add a API for qemu-char. v9: p5: - use chr_update_read_handler_full() replace the chr_update_read_handler() - use io_watch_poll_prepare_full() replace the io_watch_poll_prepare() - use io_watch_poll_funcs_full replace the io_watch_poll_funcs - avoid code duplication v8: p5: - add new patch: qemu-char: Add qemu_chr_add_handlers_full() for GMaincontext v7: p5: - add [PATCH]qemu-char: Fix context for g_source_attach() in this patch series. v6: p6: - add more commit log. - fix icmp comparison to compare all packet. p5: - add more cpmments in commit log. - change REGULAR_CHECK_MS to REGULAR_PACKET_CHECK_MS - make check old packet independent to compare thread - remove thread_status p4: - change this patch only about Connection and ConnectionKey. - add some comments in commit log. - remove mode in fill_connection_key(). - fix some comments and bug. - move colo_conn_state to patch of "work with colo-frame" - remove conn_list_lock. - add MAX_QUEUE_SIZE, if primary_list or secondary_list biger than MAX_QUEUE_SIZE we will drop packet. p3: - add new independent kernel jhash patch. p2: - add new independent colo-base patch. p1: - add a ascii figure and some comments to explain it - move trace.h to p2 - move QTAILQ_HEAD(, CompareState) net_compares to patch of "work with colo-frame" - add some comments in qemu-option.hx v5: p3: - comments from Jason we poll and handle chardev in comapre thread, Through this way, there's no need for extra synchronization with main loop this depend on another patch: qemu-char: Fix context for g_source_attach() - remove QemuEvent p2: - remove conn->list_lock p1: - move compare_pri/sec_chr_in to p3 - move compare_chr_send to p2 v4: p4: - add some comments - fix some trace-events - fix tcp compare error p3: - add rcu_read_lock(). - fix trace name - fix jason's other comments - rebase some Dave's branch function p2: - colo_compare_connection() change g_queue_push_head() to - g_queue_push_tail() match to sorted order. - remove pkt->s - move data structure to colo-base.h - add colo-base.c reuse codes for filter-rewriter - add some filter-rewriter needs struct - depends on previous SocketReadState patch p1: - except move qemu_chr_add_handlers() to colo thread - remove class_finalize - remove secondary arp codes - depends on previous SocketReadState patch v3: - rebase colo-compare to colo-frame v2.7 - fix most of Dave's comments (except RCU) - add TCP,UDP,ICMP and other packet comparison - add trace-event - add some comments - other bug fix - add RFC index - add usage in patch 1/4 v2: - add jhash.h v1: - initial patch Zhang Chen (9): colo-compare: introduce colo compare initialization colo-base: add colo-base to define and handle packet Jhash: add linux kernel jhashtable in qemu colo-compare: track connection and enqueue packet colo-compare: introduce packet comparison thread colo-compare: add TCP,UDP,ICMP packet comparison filter-rewriter: introduce filter-rewriter initialization filter-rewriter: track connection and parse packet filter-rewriter: rewrite tcp packet to keep secondary connection include/qemu/jhash.h | 61 ++++ net/Makefile.objs | 3 + net/colo-base.c | 199 +++++++++++++ net/colo-base.h | 76 +++++ net/colo-compare.c | 763 ++++++++++++++++++++++++++++++++++++++++++++++++++ net/filter-rewriter.c | 272 ++++++++++++++++++ qemu-options.hx | 51 ++++ trace-events | 14 + vl.c | 4 +- 9 files changed, 1442 insertions(+), 1 deletion(-) create mode 100644 include/qemu/jhash.h create mode 100644 net/colo-base.c create mode 100644 net/colo-base.h create mode 100644 net/colo-compare.c create mode 100644 net/filter-rewriter.c -- 2.7.4