[PATCH] net: tracepoint: exposing sk_family in all tcp:tracepoints

Subsystems: networking [tcp], the rest, tracing

STALE2015d LANDED

Landed in mainline as 3dd344ea84e1 on 2021-02-04.

10 messages, 6 authors, 2021-02-04 · open the first message on its own page

[PATCH] net: tracepoint: exposing sk_family in all tcp:tracepoints

From: Hariharan Ananthakrishnan <hidden>
Date: 2021-01-29 00:13:27

Similar to sock:inet_sock_set_state tracepoint, expose sk_family to
distinguish AF_INET and AF_INET6 families.

The following tcp tracepoints are updated:
tcp:tcp_destroy_sock
tcp:tcp_rcv_space_adjust
tcp:tcp_retransmit_skb
tcp:tcp_send_reset
tcp:tcp_receive_reset
tcp:tcp_retransmit_synack
tcp:tcp_probe

Signed-off-by: Hariharan Ananthakrishnan <redacted>
Signed-off-by: Brendan Gregg <redacted>
---
 include/trace/events/tcp.h | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/include/trace/events/tcp.h b/include/trace/events/tcp.h
index cf97f6339acb..a319d2f86cd9 100644
--- a/include/trace/events/tcp.h
+++ b/include/trace/events/tcp.h
@@ -59,6 +59,7 @@ DECLARE_EVENT_CLASS(tcp_event_sk_skb,
 		__field(int, state)
 		__field(__u16, sport)
 		__field(__u16, dport)
+		__field(__u16, family)
 		__array(__u8, saddr, 4)
 		__array(__u8, daddr, 4)
 		__array(__u8, saddr_v6, 16)
@@ -75,6 +76,7 @@ DECLARE_EVENT_CLASS(tcp_event_sk_skb,
 
 		__entry->sport = ntohs(inet->inet_sport);
 		__entry->dport = ntohs(inet->inet_dport);
+		__entry->family = sk->sk_family;
 
 		p32 = (__be32 *) __entry->saddr;
 		*p32 = inet->inet_saddr;
@@ -86,7 +88,8 @@ DECLARE_EVENT_CLASS(tcp_event_sk_skb,
 			      sk->sk_v6_rcv_saddr, sk->sk_v6_daddr);
 	),
 
-	TP_printk("sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c state=%s",
+	TP_printk("family=%s sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c state=%s",
+		  show_family_name(__entry->family),
 		  __entry->sport, __entry->dport, __entry->saddr, __entry->daddr,
 		  __entry->saddr_v6, __entry->daddr_v6,
 		  show_tcp_state_name(__entry->state))
@@ -125,6 +128,7 @@ DECLARE_EVENT_CLASS(tcp_event_sk,
 		__field(const void *, skaddr)
 		__field(__u16, sport)
 		__field(__u16, dport)
+		__field(__u16, family)
 		__array(__u8, saddr, 4)
 		__array(__u8, daddr, 4)
 		__array(__u8, saddr_v6, 16)
@@ -140,6 +144,7 @@ DECLARE_EVENT_CLASS(tcp_event_sk,
 
 		__entry->sport = ntohs(inet->inet_sport);
 		__entry->dport = ntohs(inet->inet_dport);
+		__entry->family = sk->sk_family;
 
 		p32 = (__be32 *) __entry->saddr;
 		*p32 = inet->inet_saddr;
@@ -153,7 +158,8 @@ DECLARE_EVENT_CLASS(tcp_event_sk,
 		__entry->sock_cookie = sock_gen_cookie(sk);
 	),
 
-	TP_printk("sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c sock_cookie=%llx",
+	TP_printk("family=%s sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c sock_cookie=%llx",
+		  show_family_name(__entry->family),
 		  __entry->sport, __entry->dport,
 		  __entry->saddr, __entry->daddr,
 		  __entry->saddr_v6, __entry->daddr_v6,
@@ -192,6 +198,7 @@ TRACE_EVENT(tcp_retransmit_synack,
 		__field(const void *, req)
 		__field(__u16, sport)
 		__field(__u16, dport)
+		__field(__u16, family)
 		__array(__u8, saddr, 4)
 		__array(__u8, daddr, 4)
 		__array(__u8, saddr_v6, 16)
@@ -207,6 +214,7 @@ TRACE_EVENT(tcp_retransmit_synack,
 
 		__entry->sport = ireq->ir_num;
 		__entry->dport = ntohs(ireq->ir_rmt_port);
+		__entry->family = sk->sk_family;
 
 		p32 = (__be32 *) __entry->saddr;
 		*p32 = ireq->ir_loc_addr;
@@ -218,7 +226,8 @@ TRACE_EVENT(tcp_retransmit_synack,
 			      ireq->ir_v6_loc_addr, ireq->ir_v6_rmt_addr);
 	),
 
-	TP_printk("sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c",
+	TP_printk("family=%s sport=%hu dport=%hu saddr=%pI4 daddr=%pI4 saddrv6=%pI6c daddrv6=%pI6c",
+	          show_family_name(__entry->family),
 		  __entry->sport, __entry->dport,
 		  __entry->saddr, __entry->daddr,
 		  __entry->saddr_v6, __entry->daddr_v6)
@@ -238,6 +247,7 @@ TRACE_EVENT(tcp_probe,
 		__array(__u8, daddr, sizeof(struct sockaddr_in6))
 		__field(__u16, sport)
 		__field(__u16, dport)
+		__field(__u16, family)
 		__field(__u32, mark)
 		__field(__u16, data_len)
 		__field(__u32, snd_nxt)
@@ -264,6 +274,7 @@ TRACE_EVENT(tcp_probe,
 		__entry->sport = ntohs(inet->inet_sport);
 		__entry->dport = ntohs(inet->inet_dport);
 		__entry->mark = skb->mark;
+		__entry->family = sk->sk_family;
 
 		__entry->data_len = skb->len - __tcp_hdrlen(th);
 		__entry->snd_nxt = tp->snd_nxt;
@@ -276,7 +287,8 @@ TRACE_EVENT(tcp_probe,
 		__entry->sock_cookie = sock_gen_cookie(sk);
 	),
 
-	TP_printk("src=%pISpc dest=%pISpc mark=%#x data_len=%d snd_nxt=%#x snd_una=%#x snd_cwnd=%u ssthresh=%u snd_wnd=%u srtt=%u rcv_wnd=%u sock_cookie=%llx",
+	TP_printk("family=%s src=%pISpc dest=%pISpc mark=%#x data_len=%d snd_nxt=%#x snd_una=%#x snd_cwnd=%u ssthresh=%u snd_wnd=%u srtt=%u rcv_wnd=%u sock_cookie=%llx",
+		  show_family_name(__entry->family),
 		  __entry->saddr, __entry->daddr, __entry->mark,
 		  __entry->data_len, __entry->snd_nxt, __entry->snd_una,
 		  __entry->snd_cwnd, __entry->ssthresh, __entry->snd_wnd,
base-commit: bbc20b70424aeb3c84f833860f6340adda5141fc
-- 
2.27.0

Re: [PATCH] net: tracepoint: exposing sk_family in all tcp:tracepoints

From: Alexei Starovoitov <hidden>
Date: 2021-01-29 00:17:16

On Thu, Jan 28, 2021 at 4:12 PM Hariharan Ananthakrishnan
[off-list ref] wrote:
quoted hunk
Similar to sock:inet_sock_set_state tracepoint, expose sk_family to
distinguish AF_INET and AF_INET6 families.

The following tcp tracepoints are updated:
tcp:tcp_destroy_sock
tcp:tcp_rcv_space_adjust
tcp:tcp_retransmit_skb
tcp:tcp_send_reset
tcp:tcp_receive_reset
tcp:tcp_retransmit_synack
tcp:tcp_probe

Signed-off-by: Hariharan Ananthakrishnan <redacted>
Signed-off-by: Brendan Gregg <redacted>
---
 include/trace/events/tcp.h | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/include/trace/events/tcp.h b/include/trace/events/tcp.h
index cf97f6339acb..a319d2f86cd9 100644
--- a/include/trace/events/tcp.h
+++ b/include/trace/events/tcp.h
@@ -59,6 +59,7 @@ DECLARE_EVENT_CLASS(tcp_event_sk_skb,
                __field(int, state)
                __field(__u16, sport)
                __field(__u16, dport)
+               __field(__u16, family)
                __array(__u8, saddr, 4)
                __array(__u8, daddr, 4)
                __array(__u8, saddr_v6, 16)
raw tracepoint can access all sk and skb fields already.
Why do you need this?

Re: [PATCH] net: tracepoint: exposing sk_family in all tcp:tracepoints

From: Brendan Gregg <hidden>
Date: 2021-01-29 00:54:58

On Fri, Jan 29, 2021 at 11:16 AM Alexei Starovoitov
[off-list ref] wrote:
On Thu, Jan 28, 2021 at 4:12 PM Hariharan Ananthakrishnan
[off-list ref] wrote:
quoted
Similar to sock:inet_sock_set_state tracepoint, expose sk_family to
distinguish AF_INET and AF_INET6 families.

The following tcp tracepoints are updated:
tcp:tcp_destroy_sock
tcp:tcp_rcv_space_adjust
tcp:tcp_retransmit_skb
tcp:tcp_send_reset
tcp:tcp_receive_reset
tcp:tcp_retransmit_synack
tcp:tcp_probe

Signed-off-by: Hariharan Ananthakrishnan <redacted>
Signed-off-by: Brendan Gregg <redacted>
---
 include/trace/events/tcp.h | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/include/trace/events/tcp.h b/include/trace/events/tcp.h
index cf97f6339acb..a319d2f86cd9 100644
--- a/include/trace/events/tcp.h
+++ b/include/trace/events/tcp.h
@@ -59,6 +59,7 @@ DECLARE_EVENT_CLASS(tcp_event_sk_skb,
                __field(int, state)
                __field(__u16, sport)
                __field(__u16, dport)
+               __field(__u16, family)
                __array(__u8, saddr, 4)
                __array(__u8, daddr, 4)
                __array(__u8, saddr_v6, 16)
raw tracepoint can access all sk and skb fields already.
Why do you need this?

We (Netflix) can dig it out using raw tracepoints and BTF (once it's
rolled out) but this was about fixing the existing tracepoints so they
were more useful.

I think tracepoints and their arguments suit a class of
non-kernel-hacker users: SREs, operators, sysadmins, etc. People who
run and tweak bpftrace one-liners.

Brendan

-- 
Brendan Gregg, Senior Performance Architect, Netflix

Re: [PATCH] net: tracepoint: exposing sk_family in all tcp:tracepoints

From: Jakub Kicinski <kuba@kernel.org>
Date: 2021-02-01 22:07:43

On Fri, 29 Jan 2021 00:12:10 +0000 Hariharan Ananthakrishnan wrote:
Similar to sock:inet_sock_set_state tracepoint, expose sk_family to
distinguish AF_INET and AF_INET6 families.

The following tcp tracepoints are updated:
tcp:tcp_destroy_sock
tcp:tcp_rcv_space_adjust
tcp:tcp_retransmit_skb
tcp:tcp_send_reset
tcp:tcp_receive_reset
tcp:tcp_retransmit_synack
tcp:tcp_probe

Signed-off-by: Hariharan Ananthakrishnan <redacted>
Signed-off-by: Brendan Gregg <redacted>
Eric, any thoughts?

Re: [PATCH] net: tracepoint: exposing sk_family in all tcp:tracepoints

From: Eric Dumazet <edumazet@google.com>
Date: 2021-02-02 07:40:07

On Mon, Feb 1, 2021 at 11:06 PM Jakub Kicinski [off-list ref] wrote:
On Fri, 29 Jan 2021 00:12:10 +0000 Hariharan Ananthakrishnan wrote:
quoted
Similar to sock:inet_sock_set_state tracepoint, expose sk_family to
distinguish AF_INET and AF_INET6 families.

The following tcp tracepoints are updated:
tcp:tcp_destroy_sock
tcp:tcp_rcv_space_adjust
tcp:tcp_retransmit_skb
tcp:tcp_send_reset
tcp:tcp_receive_reset
tcp:tcp_retransmit_synack
tcp:tcp_probe

Signed-off-by: Hariharan Ananthakrishnan <redacted>
Signed-off-by: Brendan Gregg <redacted>
Eric, any thoughts?

I do not use these tracepoints in production scripts, but I wonder if
existing tools could break after this change ?

Or do we consider tracepoints format is not part of the ABI and can be
arbitrarily changed by anyone ?

Re: [PATCH] net: tracepoint: exposing sk_family in all tcp:tracepoints

From: <hidden>
Date: 2021-02-03 16:26:52

On 02/02, Eric Dumazet wrote:
On Mon, Feb 1, 2021 at 11:06 PM Jakub Kicinski [off-list ref] wrote:
quoted
On Fri, 29 Jan 2021 00:12:10 +0000 Hariharan Ananthakrishnan wrote:
quoted
Similar to sock:inet_sock_set_state tracepoint, expose sk_family to
distinguish AF_INET and AF_INET6 families.

The following tcp tracepoints are updated:
tcp:tcp_destroy_sock
tcp:tcp_rcv_space_adjust
tcp:tcp_retransmit_skb
tcp:tcp_send_reset
tcp:tcp_receive_reset
tcp:tcp_retransmit_synack
tcp:tcp_probe

Signed-off-by: Hariharan Ananthakrishnan <redacted>
Signed-off-by: Brendan Gregg <redacted>
Eric, any thoughts?
I do not use these tracepoints in production scripts, but I wonder if
existing tools could break after this change ?
Or do we consider tracepoints format is not part of the ABI and can be
arbitrarily changed by anyone ?
They are not ABI and since we are extending tracepoints with additional
info (and not removing any existing fields) it shouldn't be a problem.

Re: [PATCH] net: tracepoint: exposing sk_family in all tcp:tracepoints

From: Jakub Kicinski <kuba@kernel.org>
Date: 2021-02-03 18:18:01

On Wed, 3 Feb 2021 08:26:04 -0800 sdf@google.com wrote:
On 02/02, Eric Dumazet wrote:
quoted
On Mon, Feb 1, 2021 at 11:06 PM Jakub Kicinski [off-list ref] wrote:  
quoted
Eric, any thoughts?  
quoted
I do not use these tracepoints in production scripts, but I wonder if
existing tools could break after this change ?  
quoted
Or do we consider tracepoints format is not part of the ABI and can be
arbitrarily changed by anyone ?  
They are not ABI and since we are extending tracepoints with additional
info (and not removing any existing fields) it shouldn't be a problem.
Okay, but we should perhaps add the field at the end just to be on the
safe side (and avoid weird alignment of the IP addresses).

Re: [PATCH] net: tracepoint: exposing sk_family in all tcp:tracepoints

From: Hariharan Ananthakrishnan <hidden>
Date: 2021-02-03 18:26:09

On Wed, Feb 3, 2021 at 10:16 AM Jakub Kicinski [off-list ref] wrote:
On Wed, 3 Feb 2021 08:26:04 -0800 sdf@google.com wrote:
quoted
On 02/02, Eric Dumazet wrote:
quoted
On Mon, Feb 1, 2021 at 11:06 PM Jakub Kicinski [off-list ref] wrote:
quoted
Eric, any thoughts?
quoted
I do not use these tracepoints in production scripts, but I wonder if
existing tools could break after this change ?
quoted
Or do we consider tracepoints format is not part of the ABI and can be
arbitrarily changed by anyone ?
They are not ABI and since we are extending tracepoints with additional
info (and not removing any existing fields) it shouldn't be a problem.
Okay, but we should perhaps add the field at the end just to be on the
safe side (and avoid weird alignment of the IP addresses).
I added it after dport to be consistent with the earlier patch to
sock:inet_sock_set_state
https://lore.kernel.org/patchwork/patch/870492/.

Re: [PATCH] net: tracepoint: exposing sk_family in all tcp:tracepoints

From: Jakub Kicinski <kuba@kernel.org>
Date: 2021-02-03 18:45:36

On Wed, 3 Feb 2021 10:25:11 -0800 Hariharan Ananthakrishnan wrote:
On Wed, Feb 3, 2021 at 10:16 AM Jakub Kicinski [off-list ref] wrote:
quoted
On Wed, 3 Feb 2021 08:26:04 -0800 sdf@google.com wrote:  
quoted
They are not ABI and since we are extending tracepoints with additional
info (and not removing any existing fields) it shouldn't be a problem.  
Okay, but we should perhaps add the field at the end just to be on the
safe side (and avoid weird alignment of the IP addresses).  
I added it after dport to be consistent with the earlier patch to
sock:inet_sock_set_state
https://lore.kernel.org/patchwork/patch/870492/.
I see :(

I'll give it a few more hours and if there are no objections apply the
patch.

Re: [PATCH] net: tracepoint: exposing sk_family in all tcp:tracepoints

From: Jakub Kicinski <kuba@kernel.org>
Date: 2021-02-04 17:28:03

On Fri, 29 Jan 2021 00:12:10 +0000 Hariharan Ananthakrishnan wrote:
Similar to sock:inet_sock_set_state tracepoint, expose sk_family to
distinguish AF_INET and AF_INET6 families.

The following tcp tracepoints are updated:
tcp:tcp_destroy_sock
tcp:tcp_rcv_space_adjust
tcp:tcp_retransmit_skb
tcp:tcp_send_reset
tcp:tcp_receive_reset
tcp:tcp_retransmit_synack
tcp:tcp_probe

Signed-off-by: Hariharan Ananthakrishnan <redacted>
Signed-off-by: Brendan Gregg <redacted>
Fixed up white space and applied, thanks!
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help