From af0e21e72cddc40dc87ac8e8117b9da71ac31419 Mon Sep 17 00:00:00 2001 From: "Mohamed S. Mahmoud" Date: Thu, 15 Feb 2024 08:03:52 -0500 Subject: [PATCH] NETOBSERV-1507: some arch still missing fentry hook types this PR fallback to kprobe (#267) Signed-off-by: Mohamed Mahmoud (cherry picked from commit 43038f3ee6b1ab1c8f2da34413e26fdca6dd6b05) --- bpf/rtt_tracker.h | 8 ++++++++ pkg/ebpf/bpf_arm64_bpfel.go | 3 +++ pkg/ebpf/bpf_arm64_bpfel.o | Bin 221536 -> 222784 bytes pkg/ebpf/bpf_powerpc_bpfel.go | 3 +++ pkg/ebpf/bpf_powerpc_bpfel.o | Bin 213464 -> 214680 bytes pkg/ebpf/bpf_s390_bpfeb.go | 3 +++ pkg/ebpf/bpf_s390_bpfeb.o | Bin 218336 -> 219584 bytes pkg/ebpf/bpf_x86_bpfel.go | 3 +++ pkg/ebpf/bpf_x86_bpfel.o | Bin 225888 -> 227088 bytes pkg/ebpf/tracer.go | 18 ++++++++++++++++-- 10 files changed, 36 insertions(+), 2 deletions(-) diff --git a/bpf/rtt_tracker.h b/bpf/rtt_tracker.h index 4d62e98d3..1176a5206 100644 --- a/bpf/rtt_tracker.h +++ b/bpf/rtt_tracker.h @@ -157,4 +157,12 @@ int BPF_PROG(tcp_rcv_fentry, struct sock *sk, struct sk_buff *skb) { return calculate_flow_rtt_tcp(sk, skb); } +SEC("kprobe/tcp_rcv_established") +int BPF_KPROBE(tcp_rcv_kprobe, struct sock *sk, struct sk_buff *skb) { + if (sk == NULL || skb == NULL) { + return 0; + } + return calculate_flow_rtt_tcp(sk, skb); +} + #endif /* __RTT_TRACKER_H__ */ diff --git a/pkg/ebpf/bpf_arm64_bpfel.go b/pkg/ebpf/bpf_arm64_bpfel.go index bc204c628..ad33b0b59 100644 --- a/pkg/ebpf/bpf_arm64_bpfel.go +++ b/pkg/ebpf/bpf_arm64_bpfel.go @@ -120,6 +120,7 @@ type BpfProgramSpecs struct { IngressPcaParse *ebpf.ProgramSpec `ebpf:"ingress_pca_parse"` KfreeSkb *ebpf.ProgramSpec `ebpf:"kfree_skb"` TcpRcvFentry *ebpf.ProgramSpec `ebpf:"tcp_rcv_fentry"` + TcpRcvKprobe *ebpf.ProgramSpec `ebpf:"tcp_rcv_kprobe"` } // BpfMapSpecs contains maps before they are loaded into the kernel. @@ -176,6 +177,7 @@ type BpfPrograms struct { IngressPcaParse *ebpf.Program `ebpf:"ingress_pca_parse"` KfreeSkb *ebpf.Program `ebpf:"kfree_skb"` TcpRcvFentry *ebpf.Program `ebpf:"tcp_rcv_fentry"` + TcpRcvKprobe *ebpf.Program `ebpf:"tcp_rcv_kprobe"` } func (p *BpfPrograms) Close() error { @@ -186,6 +188,7 @@ func (p *BpfPrograms) Close() error { p.IngressPcaParse, p.KfreeSkb, p.TcpRcvFentry, + p.TcpRcvKprobe, ) } diff --git a/pkg/ebpf/bpf_arm64_bpfel.o b/pkg/ebpf/bpf_arm64_bpfel.o index da101f9d91d3b84b8a21527cf72452c3cda95ce6..546a70ad9e4f9fe66dff15ab54a6e344c73a246d 100644 GIT binary patch delta 29508 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 diff --git a/pkg/ebpf/bpf_powerpc_bpfel.go b/pkg/ebpf/bpf_powerpc_bpfel.go index e074d6d88..bacd97f22 100644 --- a/pkg/ebpf/bpf_powerpc_bpfel.go +++ b/pkg/ebpf/bpf_powerpc_bpfel.go @@ -120,6 +120,7 @@ type BpfProgramSpecs struct { IngressPcaParse *ebpf.ProgramSpec `ebpf:"ingress_pca_parse"` KfreeSkb *ebpf.ProgramSpec `ebpf:"kfree_skb"` TcpRcvFentry *ebpf.ProgramSpec `ebpf:"tcp_rcv_fentry"` + TcpRcvKprobe *ebpf.ProgramSpec `ebpf:"tcp_rcv_kprobe"` } // BpfMapSpecs contains maps before they are loaded into the kernel. @@ -176,6 +177,7 @@ type BpfPrograms struct { IngressPcaParse *ebpf.Program `ebpf:"ingress_pca_parse"` KfreeSkb *ebpf.Program `ebpf:"kfree_skb"` TcpRcvFentry *ebpf.Program `ebpf:"tcp_rcv_fentry"` + TcpRcvKprobe *ebpf.Program `ebpf:"tcp_rcv_kprobe"` } func (p *BpfPrograms) Close() error { @@ -186,6 +188,7 @@ func (p *BpfPrograms) Close() error { p.IngressPcaParse, p.KfreeSkb, p.TcpRcvFentry, + p.TcpRcvKprobe, ) } diff --git a/pkg/ebpf/bpf_powerpc_bpfel.o b/pkg/ebpf/bpf_powerpc_bpfel.o index 1b33de675a1c5da94f1fe3acd27479ada68298be..515122a49ce0d1444ce7b70300199fb0f6b9f292 100644 GIT binary patch delta 30111 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%0A~|Gi!)Fl>j3m()KBdByP;o$76XLX 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 diff --git a/pkg/ebpf/bpf_s390_bpfeb.go b/pkg/ebpf/bpf_s390_bpfeb.go index f129c345f..a4b5e44f9 100644 --- a/pkg/ebpf/bpf_s390_bpfeb.go +++ b/pkg/ebpf/bpf_s390_bpfeb.go @@ -120,6 +120,7 @@ type BpfProgramSpecs struct { IngressPcaParse *ebpf.ProgramSpec `ebpf:"ingress_pca_parse"` KfreeSkb *ebpf.ProgramSpec `ebpf:"kfree_skb"` TcpRcvFentry *ebpf.ProgramSpec `ebpf:"tcp_rcv_fentry"` + TcpRcvKprobe *ebpf.ProgramSpec `ebpf:"tcp_rcv_kprobe"` } // BpfMapSpecs contains maps before they are loaded into the kernel. @@ -176,6 +177,7 @@ type BpfPrograms struct { IngressPcaParse *ebpf.Program `ebpf:"ingress_pca_parse"` KfreeSkb *ebpf.Program `ebpf:"kfree_skb"` TcpRcvFentry *ebpf.Program `ebpf:"tcp_rcv_fentry"` + TcpRcvKprobe *ebpf.Program `ebpf:"tcp_rcv_kprobe"` } func (p *BpfPrograms) Close() error { @@ -186,6 +188,7 @@ func (p *BpfPrograms) Close() error { p.IngressPcaParse, p.KfreeSkb, p.TcpRcvFentry, + p.TcpRcvKprobe, ) } diff --git a/pkg/ebpf/bpf_s390_bpfeb.o b/pkg/ebpf/bpf_s390_bpfeb.o index f1d6c7fbf11dbfd8b71ee356c8a76c6110103870..84587efd93cd62351a7838f6b2ccb5bc7703fa6e 100644 GIT binary patch delta 30570 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 delta 29496 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 diff --git a/pkg/ebpf/bpf_x86_bpfel.go b/pkg/ebpf/bpf_x86_bpfel.go index 5b3985473..a06125656 100644 --- a/pkg/ebpf/bpf_x86_bpfel.go +++ b/pkg/ebpf/bpf_x86_bpfel.go @@ -120,6 +120,7 @@ type BpfProgramSpecs struct { IngressPcaParse *ebpf.ProgramSpec `ebpf:"ingress_pca_parse"` KfreeSkb *ebpf.ProgramSpec `ebpf:"kfree_skb"` TcpRcvFentry *ebpf.ProgramSpec `ebpf:"tcp_rcv_fentry"` + TcpRcvKprobe *ebpf.ProgramSpec `ebpf:"tcp_rcv_kprobe"` } // BpfMapSpecs contains maps before they are loaded into the kernel. @@ -176,6 +177,7 @@ type BpfPrograms struct { IngressPcaParse *ebpf.Program `ebpf:"ingress_pca_parse"` KfreeSkb *ebpf.Program `ebpf:"kfree_skb"` TcpRcvFentry *ebpf.Program `ebpf:"tcp_rcv_fentry"` + TcpRcvKprobe *ebpf.Program `ebpf:"tcp_rcv_kprobe"` } func (p *BpfPrograms) Close() error { @@ -186,6 +188,7 @@ func (p *BpfPrograms) Close() error { p.IngressPcaParse, p.KfreeSkb, p.TcpRcvFentry, + p.TcpRcvKprobe, ) } diff --git a/pkg/ebpf/bpf_x86_bpfel.o b/pkg/ebpf/bpf_x86_bpfel.o index 9ebe3a2b72cf126d8bf508946ffde6bb9c9a2379..2929682616484946758b1d783165204cc84e8be2 100644 GIT binary patch delta 29568 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 diff --git a/pkg/ebpf/tracer.go b/pkg/ebpf/tracer.go index 7a4c44194..7cdb4b574 100644 --- a/pkg/ebpf/tracer.go +++ b/pkg/ebpf/tracer.go @@ -62,6 +62,7 @@ type FlowFetcher struct { enableEgress bool pktDropsTracePoint link.Link rttFentryLink link.Link + rttKprobeLink link.Link } type FlowFetcherConfig struct { @@ -141,13 +142,18 @@ func NewFlowFetcher(cfg *FlowFetcherConfig) (*FlowFetcher, error) { } } - var rttFentryLink link.Link + var rttFentryLink, rttKprobeLink link.Link if cfg.EnableRTT { rttFentryLink, err = link.AttachTracing(link.TracingOptions{ Program: objects.BpfPrograms.TcpRcvFentry, }) if err != nil { - return nil, fmt.Errorf("failed to attach the BPF program to tcpReceiveFentry: %w", err) + log.Warningf("failed to attach the BPF program to tcpReceiveFentry: %v fallback to use kprobe", err) + // try to use kprobe for older kernels + rttKprobeLink, err = link.Kprobe("tcp_rcv_established", objects.TcpRcvKprobe, nil) + if err != nil { + return nil, fmt.Errorf("failed to attach the BPF program to tcpReceiveKprobe: %w", err) + } } } @@ -167,6 +173,7 @@ func NewFlowFetcher(cfg *FlowFetcherConfig) (*FlowFetcher, error) { enableEgress: cfg.EnableEgress, pktDropsTracePoint: pktDropsLink, rttFentryLink: rttFentryLink, + rttKprobeLink: rttKprobeLink, }, nil } @@ -300,6 +307,11 @@ func (m *FlowFetcher) Close() error { errs = append(errs, err) } } + if m.rttKprobeLink != nil { + if err := m.rttKprobeLink.Close(); err != nil { + errs = append(errs, err) + } + } // m.ringbufReader.Read is a blocking operation, so we need to close the ring buffer // from another goroutine to avoid the system not being able to exit if there // isn't traffic in a given interface @@ -460,6 +472,7 @@ func kernelSpecificLoadAndAssign(oldKernel bool, spec *ebpf.CollectionSpec) (Bpf EgressFlowParse *ebpf.Program `ebpf:"egress_flow_parse"` IngressFlowParse *ebpf.Program `ebpf:"ingress_flow_parse"` TCPRcvFentry *ebpf.Program `ebpf:"tcp_rcv_fentry"` + TCPRcvKprobe *ebpf.Program `ebpf:"tcp_rcv_kprobe"` } type NewBpfObjects struct { NewBpfPrograms @@ -485,6 +498,7 @@ func kernelSpecificLoadAndAssign(oldKernel bool, spec *ebpf.CollectionSpec) (Bpf objects.EgressFlowParse = newObjects.EgressFlowParse objects.IngressFlowParse = newObjects.IngressFlowParse objects.TcpRcvFentry = newObjects.TCPRcvFentry + objects.TcpRcvKprobe = newObjects.TCPRcvKprobe objects.KfreeSkb = nil } else { if err := spec.LoadAndAssign(&objects, nil); err != nil {