Received: by 2002:a05:7208:9594:b0:7e:5202:c8b4 with SMTP id gs20csp1727907rbb; Mon, 26 Feb 2024 21:49:29 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCUVSPZBqW69x+57RdrHKa2MtiHjTi6MfZKvWCB/cW+Cd+IasmZR8XgV3bqwrgO05nHSX93WzJ8DBfCaBcJ31QJkx+jS2eADqBOQ7jBLAg== X-Google-Smtp-Source: AGHT+IFYP542D+ULcxWRzoCHxIfVPrrQX0Ty3s4xbajwDX31MjRctJMuResxxfTKlanj8nKQqski X-Received: by 2002:aa7:9d10:0:b0:6e3:847d:3311 with SMTP id k16-20020aa79d10000000b006e3847d3311mr8275882pfp.5.1709012969582; Mon, 26 Feb 2024 21:49:29 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709012969; cv=pass; d=google.com; s=arc-20160816; b=O3+uzcV48kNM/AOZE1K19zi21aL+jTW18FhYfu+YQhgP+xCQX71mp6Ju/X17bq8xH2 e1IlFPldKFpKAXwfLzl/uPZIC4Aem6Mly3r3osLEWUpLuTJE3n3YVBDajDdiVYnoqcpv CCV+RAhsNHa+BV42mI1hbqIPnh8lwxKup/5LFXOjqZKDr9xvWbrcyLoCDL4ksRZvitbr hr4Js/JIPpHg8oZTvn4LSXjZ0HdthOKoy3j+6ah7vLaQ3kNu6eFmle9xLLdoQKZ6UH2H 51bKC29I6WeZYpUo7Dj9enIYjmAw3FkejeA6maa4juKC2yRNXfskRLga/4XNfHGziTut mvQw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:list-unsubscribe:list-subscribe :list-id:precedence:dkim-signature; bh=deoGECJCnFvm1xZVCOoPfcDHKJqlnBIaPn+xka19knA=; fh=o+JhqlCIzILhUZ62LSVb5y5SXo6awCwenVzjmjFl6Ws=; b=0suuK9BAc1AFbfcPbJNoq2zLglzERnVr0/HMAVHaAvv+tYIFjDN8hzZb9xPzQ4UgpS wBeEaOXkYAARC1rHvjslF4/bo+e67u+JcEi+x2yv4tuAincHkIEveLIojdHNzCLNqcRm +aMo5NrrZbGGX/O3Uhg52cljUo2R7j7V9xt8uO0UJAZd09MrbbYJaMCi3QRQt+OkRK4t l8uHOWLwccly+Bf5PNonvmbeA/biHzt0IEv2xl0hBSvcaJqWszOOAL2il0+Y73XFyj4q b/eAcqtGdeubzme5YYGcn5Zw86iCfi2RjpnljLMtQY6z8Z/fNFTiSU4/0+1wn04Qy25U IyMg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=sHx7eLz8; arc=pass (i=1 spf=pass spfdomain=google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-82729-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82729-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id bx41-20020a056a02052900b005e45abbc54asi4956623pgb.186.2024.02.26.21.49.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 26 Feb 2024 21:49:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-82729-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=sHx7eLz8; arc=pass (i=1 spf=pass spfdomain=google.com dkim=pass dkdomain=google.com dmarc=pass fromdomain=google.com); spf=pass (google.com: domain of linux-kernel+bounces-82729-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-82729-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com 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 sy.mirrors.kernel.org (Postfix) with ESMTPS id 88039B247FE for ; Tue, 27 Feb 2024 05:49:26 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 621925337F; Tue, 27 Feb 2024 05:49:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="sHx7eLz8" Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A1C7852F92 for ; Tue, 27 Feb 2024 05:49:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709012954; cv=none; b=C1PuRkZFZReJGcEzNo/fvDszlyYOQmkxfKYOYITKNZIEizdnJawJIlsRgjVe18LOjgr6F8XcjJmh+TXpXJCqeNZPjWzqml37meNBznM9LHM4j2n0ld7qX1ZcX2HHCCbln0Vyu4AZc0XcrjdxPAJ2ippAaUslskG5TGI67kOsR5M= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709012954; c=relaxed/simple; bh=MMmdAPM25fgbVawN9y+wbIsKlWz4iuPJaLJ6mcayEq0=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=NLuVKHIWNjMYNtIKM4znfZrUnVtKA0RP3JOn84If4AZwc0gjV/UUwxg8yMFsbSBm1K0QcJViwuI+VjmlHLTz2f3FnQypnZFofliOnsLrKl172c3lsQTac6x9YpDTbsbVdsXRXtBXTcmwP2hJNRpTzSTCOu14BIBVGjPFJ0lEraE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=sHx7eLz8; arc=none smtp.client-ip=209.85.208.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-56619428c41so7143a12.0 for ; Mon, 26 Feb 2024 21:49:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1709012951; x=1709617751; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=deoGECJCnFvm1xZVCOoPfcDHKJqlnBIaPn+xka19knA=; b=sHx7eLz890KskTbWZ8QhtEVqEDKL7oWs0UGvf7It+KcK5ap1nEjsEg6zY+ykmRqGuP IcW6SD4BiTUiK0cudMpm9jYQlvaYLQOIGX4pQOhTrGHYQLhRQQ6MqQlbJXztAuoGS35a mS4J6AqkkIfgmLe7O9MCg/xYHLe1Di7CezNZjeee6JsH6zEKQUzW+j+sN8FvPK7rZXdV 3KU+e1oAabxF5u/09D0iKn8noUpZqnaMpQmTSVxszymj295dALmIoobko+N26eJ7V5D3 OG/XvbCF0rT55BMpwp5Kt4dWdfqXtQzCcoFnI2W5ISObdQupL9X87OGaqR2tnfhuPWJY 1n1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709012951; x=1709617751; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=deoGECJCnFvm1xZVCOoPfcDHKJqlnBIaPn+xka19knA=; b=TTSNZEgghGebr6wyYgLv8wJeZbmqolMoRixx1ZCRgAp4BvEErZ2tnt3IJBFK6uhaAo QwdDtDg0ici0KsUOj0P6OWjdsl7BA49o37QNlPvWJrAEo4BTsRjzeerQ20rrNdd5UiVE AKgk+4Jb66wNa97w9BDqTjqjsKPAICwQNF5Yty54bRbwEix0GxZxHSuZ+2WisGjfGyLV 1YlxYFcY9YLZi0gCno2CCICMvVnWkxpyyU3hGZ4IAyLS0nw8bKJUq9l0P7KTbUIAtKuU Z1sQbO9cYqMuQdtke7PhcyI7SRzvk6VFieqxYTKGn37oOB1sTlxvF3JoxAFz+RTYwUL9 uRmA== X-Forwarded-Encrypted: i=1; AJvYcCUyDUtduccADjoj4DTX2npcatACUiERYy8c/xZKYzArYxj2vUoAUq1oKM2r+ynCxcXQ+htYkOJWJ3tDaC2Fl3QSMYi52N3IsvVkplEh X-Gm-Message-State: AOJu0Yw3QP13Q1R3YqwfWILsmOfU3KqaD/FGbVrCRsdXlCid4EIn95u+ zhIWGrevi6MPI436jwa+epzmg065XccksiC3ioH51IfCv9XTfm2wq1swLIYsv6+46uDwZ1MbuxC RLCly6iTd28S8Ptz3CSJuF00x5CB8rq9ysug1 X-Received: by 2002:a50:d490:0:b0:565:733d:2b30 with SMTP id s16-20020a50d490000000b00565733d2b30mr155366edi.4.1709012950500; Mon, 26 Feb 2024 21:49:10 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <202402271050366715988@zte.com.cn> In-Reply-To: <202402271050366715988@zte.com.cn> From: Eric Dumazet Date: Tue, 27 Feb 2024 06:48:58 +0100 Message-ID: Subject: Re: [PATCH] net/ipv4: add tracepoint for icmp_send To: xu.xin16@zte.com.cn Cc: davem@davemloft.net, rostedt@goodmis.org, mhiramat@kernel.org, dsahern@kernel.org, kuba@kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, netdev@vger.kernel.org, yang.yang29@zte.com.cn, he.peilin@zte.com.cn, liu.chun2@zte.com.cn, jiang.xuexin@zte.com.cn, zhang.yunkai@zte.com.cn Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Feb 27, 2024 at 3:50=E2=80=AFAM wrote: > > 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: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D > 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 th= e > 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: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D > Switch to the tracing directory. > cd /sys/kernel/debug/tracing > Filter for destination port unreachable. > echo "type=3D=3D3 && code=3D=3D3" > events/icmp/icmp_send/filter > Enable trace event. > echo 1 > events/icmp/icmp_send/enable > > 3. Result View: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > udp_client_erro-11370 [002] ...s.12 124.728002: icmp_send: > icmp_send: type=3D3, code=3D3.From 127.0.0.1:41895 to 127.0.0.1:6666 ulen= =3D23 > skbaddr=3D00000000589b167a > > 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 =3D udp_hdr(skb); > + struct iphdr *iph =3D ip_hdr(skb); > + __be32 *p32; > + > + __entry->sport =3D ntohs(uh->source); > + __entry->dport =3D ntohs(uh->dest); > + __entry->ulen =3D ntohs(uh->len); > + __entry->skbaddr =3D skb; > + __entry->type =3D type; > + __entry->code =3D code; > + > + p32 =3D (__be32 *) __entry->saddr; > + *p32 =3D iph->saddr; > + > + p32 =3D (__be32 *) __entry->daddr; > + *p32 =3D iph->daddr; > + ), > + FYI, ICMP can be generated for many other protocols than UDP. > + TP_printk("icmp_send: type=3D%d, code=3D%d. From %pI4:%u = to %pI4:%u ulen=3D%d skbaddr=3D%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, in= t code, __be32 info, > struct net *net; > struct sock *sk; > > + trace_icmp_send(skb_in, type, code); I think you missed many sanity checks between lines 622 and 676 Honestly, a kprobe BPF based solution would be less risky, and less maintenance for us.