Skip to content

Commit 61843df

Browse files
author
lec-bit
committed
metric
Signed-off-by: lec-bit <glfhzmy@126.com>
1 parent 7fc5794 commit 61843df

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+1681
-368
lines changed

bpf/include/bpf_common.h

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
192 /* this value should be \
2424
small that make compile success */
2525

26+
#define RINGBUF_SIZE (1 << 12)
27+
#define MAP_SIZE_OF_DSTINFO 8192
28+
2629
struct manager_key {
2730
union {
2831
__u64 netns_cookie;
@@ -87,6 +90,14 @@ struct {
8790
__uint(map_flags, BPF_F_NO_PREALLOC);
8891
} kmesh_map1600 SEC(".maps");
8992

93+
struct {
94+
__uint(type, BPF_MAP_TYPE_HASH);
95+
__type(key, __u64);
96+
__type(value, struct bpf_sock_tuple);
97+
__uint(max_entries, MAP_SIZE_OF_DSTINFO);
98+
__uint(map_flags, BPF_F_NO_PREALLOC);
99+
} map_of_orig_dst SEC(".maps");
100+
90101
/*
91102
* From v5.4, bpf_get_netns_cookie can be called for bpf cgroup hooks, from v5.15, it can be called for bpf sockops
92103
* hook. Therefore, ensure that function is correctly used.
@@ -305,4 +316,4 @@ static inline bool is_managed_by_kmesh(struct bpf_sock_ops *skops)
305316
return (*value == 0);
306317
}
307318

308-
#endif
319+
#endif

bpf/include/map_config.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,7 @@
1010
#define tmp_buf km_tmpbuf
1111
#define kmesh_log_events km_log_event
1212
#define map_of_nodeinfo km_nodeinfo
13+
#define map_of_tcp_probe km_tcp_probe
14+
#define map_of_orig_dst km_orig_dst
1315

1416
#endif // _MAP_CONFIG_H_

bpf/kmesh/ads/cgroup_sock.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
#include "filter.h"
1212
#include "cluster.h"
1313
#include "bpf_common.h"
14+
#include "probe.h"
15+
#include "config.h"
1416

1517
#if ENHANCED_KERNEL
1618
#include "route_config.h"
@@ -54,7 +56,6 @@ static inline int sock4_traffic_control(struct bpf_sock_addr *ctx)
5456
if (ret != 0) {
5557
BPF_LOG(ERR, KMESH, "listener_manager failed, ret %d\n", ret);
5658
}
57-
5859
return 0;
5960
}
6061

@@ -70,7 +71,9 @@ int cgroup_connect4_prog(struct bpf_sock_addr *ctx)
7071
if (handle_kmesh_manage_process(&kmesh_ctx) || !is_kmesh_enabled(ctx)) {
7172
return CGROUP_SOCK_OK;
7273
}
74+
observe_on_pre_connect(ctx->sk);
7375
int ret = sock4_traffic_control(ctx);
76+
7477
return CGROUP_SOCK_OK;
7578
}
7679

bpf/kmesh/ads/sockops.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "bpf_log.h"
66
#include "ctx/sock_ops.h"
77
#include "circuit_breaker.h"
8+
#include "probe.h"
89

910
#if KMESH_ENABLE_IPV4
1011
#if KMESH_ENABLE_HTTP
@@ -17,7 +18,6 @@ int sockops_prog(struct bpf_sock_ops *skops)
1718

1819
if (skops->family != AF_INET)
1920
return BPF_OK;
20-
2121
switch (skops->op) {
2222
case BPF_SOCK_OPS_TCP_CONNECT_CB:
2323
skops_handle_kmesh_managed_process(skops);
@@ -31,13 +31,24 @@ int sockops_prog(struct bpf_sock_ops *skops)
3131
} else {
3232
on_cluster_sock_connect(skops);
3333
}
34+
observe_on_connect_established(skops->sk, OUTBOUND);
35+
break;
36+
case BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB:
37+
if (!is_managed_by_kmesh(skops))
38+
break;
39+
40+
observe_on_connect_established(skops->sk, INBOUND);
41+
if (bpf_sock_ops_cb_flags_set(skops, BPF_SOCK_OPS_STATE_CB_FLAG) != 0)
42+
BPF_LOG(ERR, SOCKOPS, "set sockops cb failed!\n");
3443
break;
3544
case BPF_SOCK_OPS_STATE_CB:
3645
if (skops->args[1] == BPF_TCP_CLOSE) {
46+
observe_on_close(skops->sk);
3747
on_cluster_sock_close(skops);
3848
}
3949
break;
4050
}
51+
4152
return BPF_OK;
4253
}
4354

bpf/kmesh/bpf2go/bpf2go.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,18 @@
1818
package bpf2go
1919

2020
// go run github.com/cilium/ebpf/cmd/bpf2go --help
21-
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir kernelnative/$ENHANCED_KERNEL --go-package $ENHANCED_KERNEL -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshCgroupSock ../ads/cgroup_sock.c -- -I../ads/include -I../../include -I../../../api/v2-c -DCGROUP_SOCK_MANAGE -DKERNEL_VERSION_HIGHER_5_13_0=1
21+
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir kernelnative/$ENHANCED_KERNEL --go-package $ENHANCED_KERNEL -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshCgroupSock ../ads/cgroup_sock.c -- -I../ads/include -I../../include -I../../../api/v2-c -I../probes -DCGROUP_SOCK_MANAGE -DKERNEL_VERSION_HIGHER_5_13_0=1
2222
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir dualengine --go-package dualengine -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshCgroupSockWorkload ../workload/cgroup_sock.c -- -I../workload/include -I../../include -I../probes -DKERNEL_VERSION_HIGHER_5_13_0=1
23-
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir kernelnative/$ENHANCED_KERNEL --go-package $ENHANCED_KERNEL -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshSockops ../ads/sockops.c -- -I../ads/include -I../../include -I../../../api/v2-c -DKERNEL_VERSION_HIGHER_5_13_0=1
23+
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir kernelnative/$ENHANCED_KERNEL --go-package $ENHANCED_KERNEL -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshSockops ../ads/sockops.c -- -I../ads/include -I../../include -I../../../api/v2-c -I../probes -DKERNEL_VERSION_HIGHER_5_13_0=1
2424
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir dualengine --go-package dualengine -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshSockopsWorkload ../workload/sockops.c -- -I../workload/include -I../../include -I../probes -DKERNEL_VERSION_HIGHER_5_13_0=1
2525
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir dualengine --go-package dualengine -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshXDPAuth ../workload/xdp.c -- -I../workload/include -I../../include -I../../../api/v2-c -DKERNEL_VERSION_HIGHER_5_13_0=1
2626
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir dualengine --go-package dualengine -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshSendmsg ../workload/sendmsg.c -- -I../workload/include -I../../include -DKERNEL_VERSION_HIGHER_5_13_0=1
2727
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir general --go-package general -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshTcMarkEncrypt ../general/tc_mark_encrypt.c -- -I../general/include -I../../include -DKERNEL_VERSION_HIGHER_5_13_0=1
2828
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir general --go-package general -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshTcMarkDecrypt ../general/tc_mark_decrypt.c -- -I../general/include -I../../include -DKERNEL_VERSION_HIGHER_5_13_0=1
2929

30-
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir kernelnative/$ENHANCED_KERNEL --go-package $ENHANCED_KERNEL -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshCgroupSockCompat ../ads/cgroup_sock.c -- -I../ads/include -I../../include -I../../../api/v2-c -DCGROUP_SOCK_MANAGE -DKERNEL_VERSION_HIGHER_5_13_0=0
30+
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir kernelnative/$ENHANCED_KERNEL --go-package $ENHANCED_KERNEL -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshCgroupSockCompat ../ads/cgroup_sock.c -- -I../ads/include -I../../include -I../../../api/v2-c -I../probes -DCGROUP_SOCK_MANAGE -DKERNEL_VERSION_HIGHER_5_13_0=0
3131
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir dualengine --go-package dualengine -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshCgroupSockWorkloadCompat ../workload/cgroup_sock.c -- -I../workload/include -I../../include -I../probes -DKERNEL_VERSION_HIGHER_5_13_0=0
32-
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir kernelnative/$ENHANCED_KERNEL --go-package $ENHANCED_KERNEL -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshSockopsCompat ../ads/sockops.c -- -I../ads/include -I../../include -I../../../api/v2-c -DKERNEL_VERSION_HIGHER_5_13_0=0
32+
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir kernelnative/$ENHANCED_KERNEL --go-package $ENHANCED_KERNEL -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshSockopsCompat ../ads/sockops.c -- -I../ads/include -I../../include -I../../../api/v2-c -I../probes -DKERNEL_VERSION_HIGHER_5_13_0=0
3333
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir dualengine --go-package dualengine -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshSockopsWorkloadCompat ../workload/sockops.c -- -I../workload/include -I../../include -I../probes -DKERNEL_VERSION_HIGHER_5_13_0=0
3434
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir dualengine --go-package dualengine -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshXDPAuthCompat ../workload/xdp.c -- -I../workload/include -I../../include -I../../../api/v2-c -DKERNEL_VERSION_HIGHER_5_13_0=0
3535
//go:generate go run github.com/cilium/ebpf/cmd/bpf2go --output-dir dualengine --go-package dualengine -cc clang --cflags $EXTRA_CFLAGS --cflags $EXTRA_CDEFINE KmeshSendmsgCompat ../workload/sendmsg.c -- -I../workload/include -I../../include -DKERNEL_VERSION_HIGHER_5_13_0=0

bpf/kmesh/bpf2go/dualengine/kmeshsendmsg_bpfeb.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bpf/kmesh/bpf2go/dualengine/kmeshsendmsg_bpfel.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bpf/kmesh/bpf2go/dualengine/kmeshsendmsgcompat_bpfeb.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bpf/kmesh/bpf2go/dualengine/kmeshsendmsgcompat_bpfel.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bpf/kmesh/bpf2go/dualengine/kmeshxdpauth_bpfeb.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)