From patchwork Tue Feb 27 02:50:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: xu.xin16@zte.com.cn X-Patchwork-Id: 207012 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:a81b:b0:108:e6aa:91d0 with SMTP id bq27csp2459636dyb; Mon, 26 Feb 2024 18:58:32 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCWPeXuJJlp6QWAfbJ5UGopDRccbGRDReZmFw+m9ZxXIySQOHnDjTKoh8qyhsxu8F2xxw+Xv8MHVC2NZjEgW8AG2N6TQNw== X-Google-Smtp-Source: AGHT+IHsW8f+9Gq/T+0sA00RPnLvNq8BExiUFULzwlXsTaJQm4cPZ8js7NI55W2c4b7HNrbmys/i X-Received: by 2002:a25:bc85:0:b0:dcb:ccf3:b69 with SMTP id e5-20020a25bc85000000b00dcbccf30b69mr1057525ybk.35.1709002712647; Mon, 26 Feb 2024 18:58:32 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709002712; cv=pass; d=google.com; s=arc-20160816; b=qJEPBgGPsFooFlZfXosaFrubzaRfXic4riOCQIF2brHXF2HG+Mrz+fJyVhXSZ48O3J 0cRJrul/NheYOmrvAUPRz5GtoGx6BfEWRK2Ygw8X0XWabCvwj/sA+8dUb1er0eUHlnmO MohSbJ07kSBgm3Xo23iZewFn93txlTNio0bjjO/mZYsOqGrhOJoj/koI5VUtWRFSUmPy Nf+6iviqUzEn2gnh+03nLNiI2OzS9Emx0pPX6LQHrFpH+W9fEbyGHUWBz0Drzib0naq7 gmr0XFpg7Hp6Vx61wzZAI/MhwCoh3v1tabEGCAWKlMIEQ0N2PRiqrrn+DI6t9j9+2G3i Ixow== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=subject:cc:to:from:mime-version:list-unsubscribe:list-subscribe :list-id:precedence:message-id:date; bh=bOfYOjmv91Fe9XchjNYZtGgBI7ThEgeKUrwmZfR5FFk=; fh=F+6RK3muUIgj50sc6QhA3KLN5auuWXsmXirdvwwYhQg=; b=iWDj5xdMvtroE6DFIBNtlEh6vDpETg1q1uOHpVTHvJlQ6YeyNIDlXt9x3xV2yapCgl JbpKJeL9yiUYeRPy+FjHqom4wVeZyuFEHjbPaLmpSdkxOLxq5eDHBBfqTX06T260YSmM SKC9ZXsxFxYXCLyKm2r30hoaPPoK5vMnTrCUfosVcH3y5rQiffilFWEKvSPudOSk+QZj F/dEWAkS3XwazXLueW6yIukRKA9Jd+vvB0YEp/2E3ghs+d2HXkbaQ66/3QEG6qJ29Ksw 4kPb1rqeSXth/Q2Y4A/+yIYOvyx2LXiPGyDWPnVf0VQE7wx8EWUlmtPU7Wrth3t2/Koz mQvw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=zte.com.cn dmarc=pass fromdomain=zte.com.cn); spf=pass (google.com: domain of linux-kernel+bounces-82631-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82631-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=zte.com.cn Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id q141-20020a632a93000000b005dc4e7d879csi4739333pgq.66.2024.02.26.18.58.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 18:58:32 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-82631-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=zte.com.cn dmarc=pass fromdomain=zte.com.cn); spf=pass (google.com: domain of linux-kernel+bounces-82631-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82631-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=zte.com.cn Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 50C4F282982 for ; Tue, 27 Feb 2024 02:58:32 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 546A51DA2E; Tue, 27 Feb 2024 02:58:16 +0000 (UTC) Received: from mxct.zte.com.cn (mxct.zte.com.cn [58.251.27.85]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 82373610D; Tue, 27 Feb 2024 02:58:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=58.251.27.85 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709002694; cv=none; b=XNIJE4rGMdAzCe4cbsGIot1HsuDNZvtaNaKa1VQMgapl+Yc6yxP7duSz9nPfeqXzePRMr9yCzOSJTw6zCG+pT16M3BYcPSH7B83CTdlytbvxKfseMXVu26AEtstCqwopjDh2cAGn7UEgqFrWXQLU/LoXE/aVO5jMLHv8j9+3/bg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709002694; c=relaxed/simple; bh=AaZ7qsvOSZA9cbUPNq84VziHt8N0O2Mp93ysaLF45VM=; h=Date:Message-ID:Mime-Version:From:To:Cc:Subject:Content-Type; b=D2Tq0I5JA7WDgiJmLj3Km47ywXHcyCTNHRoaIlsC4iQVWzRFQ4xPZAbjkelhRwiUrfUMhgDnw6Bo7Gex8NzeCERhTf0WGeh4Oo6bSUORRQyet9wTTECGXUsMuHbeYM0CUU67jv87snIjqaZKhXOJXDr2ZGC7ZZBpX31AH1d95QQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zte.com.cn; spf=pass smtp.mailfrom=zte.com.cn; arc=none smtp.client-ip=58.251.27.85 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=zte.com.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zte.com.cn Received: from mxde.zte.com.cn (unknown [10.35.20.121]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mxct.zte.com.cn (FangMail) with ESMTPS id 4TkMSC0LSwzCh15; Tue, 27 Feb 2024 10:51:07 +0800 (CST) Received: from mxhk.zte.com.cn (unknown [192.168.250.137]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mxde.zte.com.cn (FangMail) with ESMTPS id 4TkMS20jVpzCHrX8; Tue, 27 Feb 2024 10:50:58 +0800 (CST) Received: from mse-fl1.zte.com.cn (unknown [10.5.228.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mxhk.zte.com.cn (FangMail) with ESMTPS id 4TkMRp0Q4Sz8XrRN; Tue, 27 Feb 2024 10:50:46 +0800 (CST) Received: from xaxapp01.zte.com.cn ([10.88.99.176]) by mse-fl1.zte.com.cn with SMTP id 41R2oZRh081486; Tue, 27 Feb 2024 10:50:35 +0800 (+08) (envelope-from xu.xin16@zte.com.cn) Received: from mapi (xaxapp03[null]) by mapi (Zmail) with MAPI id mid32; Tue, 27 Feb 2024 10:50:36 +0800 (CST) Date: Tue, 27 Feb 2024 10:50:36 +0800 (CST) X-Zmail-TransId: 2afb65dd4dfc2c8-53c3e X-Mailer: Zmail v1.0 Message-ID: <202402271050366715988@zte.com.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 From: To: Cc: , , , , , , , , , , , , , Subject: =?utf-8?q?=5BPATCH=5D_net/ipv4=3A_add_tracepoint_for_icmp=5Fsend?= X-MAIL: mse-fl1.zte.com.cn 41R2oZRh081486 X-Fangmail-Gw-Spam-Type: 0 X-Fangmail-Anti-Spam-Filtered: true X-Fangmail-MID-QID: 65DD4E19.000/4TkMSC0LSwzCh15 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1792019228798980764 X-GMAIL-MSGID: 1792019228798980764 From: xu xin Introduce a tracepoint for icmp_send, which can help users to get more detail information conveniently when icmp abnormal events happen. 1. Giving an usecase example: ============================= When an application experiences packet loss due to an unreachable UDP destination port, the kernel will send an exception message through the icmp_send function. By adding a trace point for icmp_send, developers or system administrators can obtain the detailed information easily about the UDP packet loss, including the type, code, source address, destination address, source port, and destination port. This facilitates the trouble-shooting of packet loss issues especially for those complicated network-service applications. 2. Operation Instructions: ========================== Switch to the tracing directory. cd /sys/kernel/debug/tracing Filter for destination port unreachable. echo "type==3 && code==3" > events/icmp/icmp_send/filter Enable trace event. echo 1 > events/icmp/icmp_send/enable 3. Result View: ================ udp_client_erro-11370 [002] ...s.12 124.728002: icmp_send: icmp_send: type=3, code=3.From 127.0.0.1:41895 to 127.0.0.1:6666 ulen=23 skbaddr=00000000589b167a Signed-off-by: He Peilin Reviewed-by: xu xin Reviewed-by: Yunkai Zhang Cc: Yang Yang Cc: Liu Chun Cc: Xuexin Jiang --- include/trace/events/icmp.h | 57 +++++++++++++++++++++++++++++++++++++++++++++ net/ipv4/icmp.c | 4 ++++ 2 files changed, 61 insertions(+) create mode 100644 include/trace/events/icmp.h diff --git a/include/trace/events/icmp.h b/include/trace/events/icmp.h new file mode 100644 index 000000000000..3d9af5769bc3 --- /dev/null +++ b/include/trace/events/icmp.h @@ -0,0 +1,57 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#undef TRACE_SYSTEM +#define TRACE_SYSTEM icmp + +#if !defined(_TRACE_ICMP_H) || defined(TRACE_HEADER_MULTI_READ) +#define _TRACE_ICMP_H + +#include +#include + +TRACE_EVENT(icmp_send, + + TP_PROTO(const struct sk_buff *skb, int type, int code), + + TP_ARGS(skb, type, code), + + TP_STRUCT__entry( + __field(__u16, sport) + __field(__u16, dport) + __field(unsigned short, ulen) + __field(const void *, skbaddr) + __field(int, type) + __field(int, code) + __array(__u8, saddr, 4) + __array(__u8, daddr, 4) + ), + + TP_fast_assign( + // Get UDP header + struct udphdr *uh = udp_hdr(skb); + struct iphdr *iph = ip_hdr(skb); + __be32 *p32; + + __entry->sport = ntohs(uh->source); + __entry->dport = ntohs(uh->dest); + __entry->ulen = ntohs(uh->len); + __entry->skbaddr = skb; + __entry->type = type; + __entry->code = code; + + p32 = (__be32 *) __entry->saddr; + *p32 = iph->saddr; + + p32 = (__be32 *) __entry->daddr; + *p32 = iph->daddr; + ), + + TP_printk("icmp_send: type=%d, code=%d. From %pI4:%u to %pI4:%u ulen=%d skbaddr=%p", + __entry->type, __entry->code, + __entry->saddr, __entry->sport, __entry->daddr, + __entry->dport, __entry->ulen, __entry->skbaddr) +); + +#endif /* _TRACE_ICMP_H */ + +/* This part must be outside protection */ +#include diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c index e63a3bf99617..437bdb7e2650 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c @@ -92,6 +92,8 @@ #include #include #include +#define CREATE_TRACE_POINTS +#include /* * Build xmit assembly blocks @@ -599,6 +601,8 @@ void __icmp_send(struct sk_buff *skb_in, int type, int code, __be32 info, struct net *net; struct sock *sk; + trace_icmp_send(skb_in, type, code); + if (!rt) goto out;