From nobody Sun Apr 28 03:25:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1492482130407211.75015454659047; Mon, 17 Apr 2017 19:22:10 -0700 (PDT) Received: from localhost ([::1]:39682 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d0ImO-00039Z-Ss for importer@patchew.org; Mon, 17 Apr 2017 22:22:08 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43303) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d0Il7-0002ZH-Jp for qemu-devel@nongnu.org; Mon, 17 Apr 2017 22:20:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d0Il3-0004Tp-Au for qemu-devel@nongnu.org; Mon, 17 Apr 2017 22:20:49 -0400 Received: from [59.151.112.132] (port=7881 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d0Il2-0004PE-61 for qemu-devel@nongnu.org; Mon, 17 Apr 2017 22:20:45 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 18 Apr 2017 10:20:41 +0800 Received: from G08CNEXCHPEKD01.g08.fujitsu.local (unknown [10.167.33.80]) by cn.fujitsu.com (Postfix) with ESMTP id 8076447CE241; Tue, 18 Apr 2017 10:20:40 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD01.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 18 Apr 2017 10:20:39 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="17851389" From: Zhang Chen To: qemu devel , Jason Wang Date: Tue, 18 Apr 2017 10:20:19 +0800 Message-ID: <1492482020-29745-2-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1492482020-29745-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1492482020-29745-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: 8076447CE241.A9465 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Subject: [Qemu-devel] [PATCH V2 1/2] COLO-compare: Optimize tcp compare for option field X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Li Zhijian , bian naimeng , "eddie . dong" , zhanghailiang , Zhang Chen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In this patch we support packet that have tcp options field. Add tcp options field check, If the packet have options field we just skip it and compare tcp payload, Avoid unnecessary checkpoint, optimize performance. Signed-off-by: Zhang Chen --- net/colo-compare.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index aada04e..049f6f8 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -248,7 +248,32 @@ static int colo_packet_compare_tcp(Packet *spkt, Packe= t *ppkt) spkt->ip->ip_sum =3D ppkt->ip->ip_sum; } =20 - if (ptcp->th_sum =3D=3D stcp->th_sum) { + /* + * Check tcp header length for tcp option field. + * th_off > 5 means this tcp packet have options field. + * The tcp options maybe always different. + * for example: + * From RFC 7323. + * TCP Timestamps option (TSopt): + * Kind: 8 + * + * Length: 10 bytes + * + * +-------+-------+---------------------+---------------------+ + * |Kind=3D8 | 10 | TS Value (TSval) |TS Echo Reply (TSecr)| + * +-------+-------+---------------------+---------------------+ + * 1 1 4 4 + * + * In this case the primary guest's timestamp always different with + * the secondary guest's timestamp. COLO just focus on payload, + * so we just need skip this field. + */ + if (ptcp->th_off > 5) { + ptrdiff_t tcp_offset; + tcp_offset =3D ppkt->transport_header - (uint8_t *)ppkt->data + + (ptcp->th_off * 4); + res =3D colo_packet_compare_common(ppkt, spkt, tcp_offset); + } else if (ptcp->th_sum =3D=3D stcp->th_sum) { res =3D colo_packet_compare_common(ppkt, spkt, ETH_HLEN); } else { res =3D -1; --=20 2.7.4 From nobody Sun Apr 28 03:25:08 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1492482210458901.997559951736; Mon, 17 Apr 2017 19:23:30 -0700 (PDT) Received: from localhost ([::1]:39685 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d0Ine-0003yK-4C for importer@patchew.org; Mon, 17 Apr 2017 22:23:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43302) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d0Il7-0002ZG-JT for qemu-devel@nongnu.org; Mon, 17 Apr 2017 22:20:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d0Il4-0004U3-0I for qemu-devel@nongnu.org; Mon, 17 Apr 2017 22:20:49 -0400 Received: from [59.151.112.132] (port=52499 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d0Il3-0004PA-Bc for qemu-devel@nongnu.org; Mon, 17 Apr 2017 22:20:45 -0400 Received: from unknown (HELO cn.fujitsu.com) ([10.167.33.5]) by heian.cn.fujitsu.com with ESMTP; 18 Apr 2017 10:20:44 +0800 Received: from G08CNEXCHPEKD01.g08.fujitsu.local (unknown [10.167.33.80]) by cn.fujitsu.com (Postfix) with ESMTP id 182A847CE241; Tue, 18 Apr 2017 10:20:42 +0800 (CST) Received: from localhost.localdomain (10.167.226.56) by G08CNEXCHPEKD01.g08.fujitsu.local (10.167.33.89) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 18 Apr 2017 10:20:40 +0800 X-IronPort-AV: E=Sophos;i="5.22,518,1449504000"; d="scan'208";a="17851391" From: Zhang Chen To: qemu devel , Jason Wang Date: Tue, 18 Apr 2017 10:20:20 +0800 Message-ID: <1492482020-29745-3-git-send-email-zhangchen.fnst@cn.fujitsu.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1492482020-29745-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> References: <1492482020-29745-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.226.56] X-yoursite-MailScanner-ID: 182A847CE241.ABFF2 X-yoursite-MailScanner: Found to be clean X-yoursite-MailScanner-From: zhangchen.fnst@cn.fujitsu.com X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 59.151.112.132 Subject: [Qemu-devel] [PATCH V2 2/2] COLO-compare: Optimize tcp compare trace event X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Li Zhijian , bian naimeng , "eddie . dong" , zhanghailiang , Zhang Chen Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Optimize two trace events as one, adjust print format make it easy to read. rename trace_colo_compare_pkt_info_src/dst to trace_colo_compare_tcp_info. Signed-off-by: Zhang Chen --- net/colo-compare.c | 29 +++++++++++++++++------------ net/trace-events | 3 +-- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/net/colo-compare.c b/net/colo-compare.c index 049f6f8..0eaa097 100644 --- a/net/colo-compare.c +++ b/net/colo-compare.c @@ -279,18 +279,23 @@ static int colo_packet_compare_tcp(Packet *spkt, Pack= et *ppkt) res =3D -1; } =20 - if (res !=3D 0 && trace_event_get_state(TRACE_COLO_COMPARE_MISCOMPARE)= ) { - trace_colo_compare_pkt_info_src(inet_ntoa(ppkt->ip->ip_src), - ntohl(stcp->th_seq), - ntohl(stcp->th_ack), - res, stcp->th_flags, - spkt->size); - - trace_colo_compare_pkt_info_dst(inet_ntoa(ppkt->ip->ip_dst), - ntohl(ptcp->th_seq), - ntohl(ptcp->th_ack), - res, ptcp->th_flags, - ppkt->size); + if (res && trace_event_get_state(TRACE_COLO_COMPARE_MISCOMPARE)) { + char ip_src[20], ip_dst[20]; + + strcpy(ip_src, inet_ntoa(ppkt->ip->ip_src)); + strcpy(ip_dst, inet_ntoa(ppkt->ip->ip_dst)); + + trace_colo_compare_tcp_info(ip_src, + ip_dst, + ntohl(ptcp->th_seq), + ntohl(stcp->th_seq), + ntohl(ptcp->th_ack), + ntohl(stcp->th_ack), + res, + ptcp->th_flags, + stcp->th_flags, + ppkt->size, + spkt->size); =20 qemu_hexdump((char *)ppkt->data, stderr, "colo-compare ppkt", ppkt->size); diff --git a/net/trace-events b/net/trace-events index 35198bc..123cb28 100644 --- a/net/trace-events +++ b/net/trace-events @@ -13,8 +13,7 @@ colo_compare_icmp_miscompare(const char *sta, int size) "= : %s =3D %d" colo_compare_ip_info(int psize, const char *sta, const char *stb, int ssiz= e, const char *stc, const char *std) "ppkt size =3D %d, ip_src =3D %s, ip_d= st =3D %s, spkt size =3D %d, ip_src =3D %s, ip_dst =3D %s" colo_old_packet_check_found(int64_t old_time) "%" PRId64 colo_compare_miscompare(void) "" -colo_compare_pkt_info_src(const char *src, uint32_t sseq, uint32_t sack, i= nt res, uint32_t sflag, int ssize) "src/dst: %s s: seq/ack=3D%u/%u res=3D%d= flags=3D%x spkt_size: %d\n" -colo_compare_pkt_info_dst(const char *dst, uint32_t dseq, uint32_t dack, i= nt res, uint32_t dflag, int dsize) "src/dst: %s d: seq/ack=3D%u/%u res=3D%d= flags=3D%x dpkt_size: %d\n" +colo_compare_tcp_info(const char *src, const char *dst, uint32_t pseq, uin= t32_t sseq, uint32_t pack, uint32_t sack, int res, uint32_t pflag, uint32_t= sflag, int psize, int ssize) "src/dst: %s/%s pseq/sseq:%u/%u pack/sack:%u/= %u res=3D%d pflags/sflag:%x/%x psize/ssize:%d/%d \n" =20 # net/filter-rewriter.c colo_filter_rewriter_debug(void) "" --=20 2.7.4