From 74d75e5da2528b19e499474ba22d2c684e3264b8 Mon Sep 17 00:00:00 2001 From: DavadDi Date: Tue, 27 Oct 2020 20:34:24 +0800 Subject: [PATCH] add bpf type socket filter --- socket_filter/BPF_PROG_TYPE_SOCKET_FILTER.md | 1334 ++++++++++++++++++ socket_filter/socket-filter.graffle | Bin 0 -> 136184 bytes 2 files changed, 1334 insertions(+) create mode 100644 socket_filter/BPF_PROG_TYPE_SOCKET_FILTER.md create mode 100644 socket_filter/socket-filter.graffle diff --git a/socket_filter/BPF_PROG_TYPE_SOCKET_FILTER.md b/socket_filter/BPF_PROG_TYPE_SOCKET_FILTER.md new file mode 100644 index 0000000..0eecdd8 --- /dev/null +++ b/socket_filter/BPF_PROG_TYPE_SOCKET_FILTER.md @@ -0,0 +1,1334 @@ +# BPF_PROG_TYPE_SOCKET_FILTER + +[toc] + +```bash +✗ ls -hl sockex* +-rw-r--r-- 1 dwh0403 staff 661B Sep 21 22:22 sockex1_kern.c +-rw-r--r-- 1 dwh0403 staff 1.1K Sep 21 22:22 sockex1_user.c +-rw-r--r-- 1 dwh0403 staff 4.8K Sep 21 22:22 sockex2_kern.c +-rw-r--r-- 1 dwh0403 staff 1.2K Sep 21 22:22 sockex2_user.c +-rw-r--r-- 1 dwh0403 staff 6.1K Sep 21 22:22 sockex3_kern.c +-rw-r--r-- 1 dwh0403 staff 2.5K Sep 21 22:22 sockex3_user.c +``` + +该程序类型可以访问的函数列表如下,参见 https://github.com/DavadDi/bpf_study/blob/master/bpf-prog-type.md + +| `BPF_PROG_TYPE_SOCKET_FILTER` | `BPF_FUNC_skb_load_bytes()`
`BPF_FUNC_skb_load_bytes_relative()`
`BPF_FUNC_get_socket_cookie()`
`BPF_FUNC_get_socket_uid()`
`BPF_FUNC_perf_event_output()`
`Base functions` | +| ----------------------------- | ------------------------------------------------------------ | +| | | +`Base functions` 分组 + +| `Base functions` | `BPF_FUNC_map_lookup_elem()`
`BPF_FUNC_map_update_elem()`
`BPF_FUNC_map_delete_elem()`
`BPF_FUNC_map_peek_elem()`
`BPF_FUNC_map_pop_elem()`
`BPF_FUNC_map_push_elem()`
`BPF_FUNC_get_prandom_u32()`
`BPF_FUNC_get_smp_processor_id()`
`BPF_FUNC_get_numa_node_id()`
`BPF_FUNC_tail_call()`
`BPF_FUNC_ktime_get_boot_ns()`
`BPF_FUNC_ktime_get_ns()`
`BPF_FUNC_trace_printk()`
`BPF_FUNC_spin_lock()`
`BPF_FUNC_spin_unlock()` | +| ---------------- | ------------------------------------------------------------ | +| | | + +最简单的样例 sock_example.c + +```c +/* eBPF example program: + * - creates arraymap in kernel with key 4 bytes and value 8 bytes + * + * - loads eBPF program: + * r0 = skb->data[ETH_HLEN + offsetof(struct iphdr, protocol)]; + * *(u32*)(fp - 4) = r0; + * // assuming packet is IPv4, lookup ip->proto in a map + * value = bpf_map_lookup_elem(map_fd, fp - 4); + * if (value) + * (*(u64*)value) += 1; + * + * - attaches this program to loopback interface "lo" raw socket + * + * - every second user space reads map[tcp], map[udp], map[icmp] to see + * how many packets of given protocol were seen on "lo" + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "bpf_insn.h" +#include "sock_example.h" + +char bpf_log_buf[BPF_LOG_BUF_SIZE]; + +static int test_sock(void) +{ + int sock = -1, map_fd, prog_fd, i, key; + long long value = 0, tcp_cnt, udp_cnt, icmp_cnt; + + map_fd = bpf_create_map(BPF_MAP_TYPE_ARRAY, sizeof(key), sizeof(value), + 256, 0); + if (map_fd < 0) { + printf("failed to create map '%s'\n", strerror(errno)); + goto cleanup; + } + + struct bpf_insn prog[] = { + BPF_MOV64_REG(BPF_REG_6, BPF_REG_1), + BPF_LD_ABS(BPF_B, ETH_HLEN + offsetof(struct iphdr, protocol) /* R0 = ip->proto */), + BPF_STX_MEM(BPF_W, BPF_REG_10, BPF_REG_0, -4), /* *(u32 *)(fp - 4) = r0 */ + BPF_MOV64_REG(BPF_REG_2, BPF_REG_10), + BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -4), /* r2 = fp - 4 */ + BPF_LD_MAP_FD(BPF_REG_1, map_fd), + BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0, BPF_FUNC_map_lookup_elem), + BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 2), + BPF_MOV64_IMM(BPF_REG_1, 1), /* r1 = 1 */ + BPF_RAW_INSN(BPF_STX | BPF_XADD | BPF_DW, BPF_REG_0, BPF_REG_1, 0, 0), /* xadd r0 += r1 */ + BPF_MOV64_IMM(BPF_REG_0, 0), /* r0 = 0 */ + BPF_EXIT_INSN(), + }; + size_t insns_cnt = sizeof(prog) / sizeof(struct bpf_insn); + + prog_fd = bpf_load_program(BPF_PROG_TYPE_SOCKET_FILTER, prog, insns_cnt, + "GPL", 0, bpf_log_buf, BPF_LOG_BUF_SIZE); + if (prog_fd < 0) { + printf("failed to load prog '%s'\n", strerror(errno)); + goto cleanup; + } + + sock = open_raw_sock("lo"); // 在所有网卡上添加? tcpdump -i any + + if (setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, &prog_fd, + sizeof(prog_fd)) < 0) { + printf("setsockopt %s\n", strerror(errno)); + goto cleanup; + } + + for (i = 0; i < 10; i++) { + key = IPPROTO_TCP; + assert(bpf_map_lookup_elem(map_fd, &key, &tcp_cnt) == 0); + + key = IPPROTO_UDP; + assert(bpf_map_lookup_elem(map_fd, &key, &udp_cnt) == 0); + + key = IPPROTO_ICMP; + assert(bpf_map_lookup_elem(map_fd, &key, &icmp_cnt) == 0); + + printf("TCP %lld UDP %lld ICMP %lld packets\n", + tcp_cnt, udp_cnt, icmp_cnt); + sleep(1); + } + +cleanup: + /* maps, programs, raw sockets will auto cleanup on process exit */ + return 0; +} + +int main(void) +{ + FILE *f; + + f = popen("ping -c5 localhost", "r"); + (void)f; + + return test_sock(); +} +``` + + + +## 1. 基于协议的出口流量统计 + +sockex1_kern.c + +```c +#include +#include +#include +#include +#include +#include "bpf_legacy.h" + +struct { + __uint(type, BPF_MAP_TYPE_ARRAY); + __type(key, u32); + __type(value, long); + __uint(max_entries, 256); +} my_map SEC(".maps"); + +SEC("socket1") +int bpf_prog1(struct __sk_buff *skb) +{ + int index = load_byte(skb, ETH_HLEN + offsetof(struct iphdr, protocol)); + long *value; + + if (skb->pkt_type != PACKET_OUTGOING) + return 0; + + value = bpf_map_lookup_elem(&my_map, &index); + if (value) + __sync_fetch_and_add(value, skb->len); // 同步获取并同步更新 + + return 0; +} +char _license[] SEC("license") = "GPL"; +``` + +sockex1_user.c + +```c +// SPDX-License-Identifier: GPL-2.0 +#include +#include +#include +#include +#include +#include "sock_example.h" +#include +#include + +int main(int ac, char **argv) +{ + struct bpf_object *obj; + int map_fd, prog_fd; + char filename[256]; + int i, sock; + FILE *f; + + snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]); + + if (bpf_prog_load(filename, BPF_PROG_TYPE_SOCKET_FILTER, + &obj, &prog_fd)) + return 1; + + map_fd = bpf_object__find_map_fd_by_name(obj, "my_map"); + + sock = open_raw_sock("lo"); + + assert(setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, &prog_fd, + sizeof(prog_fd)) == 0); + + f = popen("ping -4 -c5 localhost", "r"); + (void) f; + + for (i = 0; i < 5; i++) { + long long tcp_cnt, udp_cnt, icmp_cnt; + int key; + + key = IPPROTO_TCP; + assert(bpf_map_lookup_elem(map_fd, &key, &tcp_cnt) == 0); + + key = IPPROTO_UDP; + assert(bpf_map_lookup_elem(map_fd, &key, &udp_cnt) == 0); + + key = IPPROTO_ICMP; + assert(bpf_map_lookup_elem(map_fd, &key, &icmp_cnt) == 0); + + printf("TCP %lld UDP %lld ICMP %lld bytes\n", + tcp_cnt, udp_cnt, icmp_cnt); + sleep(1); + } + + return 0; +} +``` + +运行结果 + +```bash +./sockex1 +TCP 0 UDP 0 ICMP 0 bytes +``` + + + +## 2. 基于 IP 地址的流量统计 + +sockex2_kern.c + +```c +#include +#include +#include +#include +#include +#include +#include +#include +#include "bpf_legacy.h" +#define IP_MF 0x2000 +#define IP_OFFSET 0x1FFF + +struct vlan_hdr { + __be16 h_vlan_TCI; + __be16 h_vlan_encapsulated_proto; +}; + +struct flow_key_record { + __be32 src; + __be32 dst; + union { + __be32 ports; + __be16 port16[2]; + }; + __u16 thoff; + __u8 ip_proto; +}; + +static inline int proto_ports_offset(__u64 proto) +{ + switch (proto) { + case IPPROTO_TCP: + case IPPROTO_UDP: + case IPPROTO_DCCP: + case IPPROTO_ESP: + case IPPROTO_SCTP: + case IPPROTO_UDPLITE: + return 0; + case IPPROTO_AH: + return 4; + default: + return 0; + } +} + +static inline int ip_is_fragment(struct __sk_buff *ctx, __u64 nhoff) +{ + return load_half(ctx, nhoff + offsetof(struct iphdr, frag_off)) + & (IP_MF | IP_OFFSET); +} + +static inline __u32 ipv6_addr_hash(struct __sk_buff *ctx, __u64 off) +{ + __u64 w0 = load_word(ctx, off); + __u64 w1 = load_word(ctx, off + 4); + __u64 w2 = load_word(ctx, off + 8); + __u64 w3 = load_word(ctx, off + 12); + + return (__u32)(w0 ^ w1 ^ w2 ^ w3); +} + +static inline __u64 parse_ip(struct __sk_buff *skb, __u64 nhoff, __u64 *ip_proto, + struct flow_key_record *flow) +{ + __u64 verlen; + + if (unlikely(ip_is_fragment(skb, nhoff))) + *ip_proto = 0; + else + *ip_proto = load_byte(skb, nhoff + offsetof(struct iphdr, protocol)); + + if (*ip_proto != IPPROTO_GRE) { + flow->src = load_word(skb, nhoff + offsetof(struct iphdr, saddr)); + flow->dst = load_word(skb, nhoff + offsetof(struct iphdr, daddr)); + } + + verlen = load_byte(skb, nhoff + 0/*offsetof(struct iphdr, ihl)*/); + if (likely(verlen == 0x45)) + nhoff += 20; + else + nhoff += (verlen & 0xF) << 2; + + return nhoff; +} + +static inline __u64 parse_ipv6(struct __sk_buff *skb, __u64 nhoff, __u64 *ip_proto, + struct flow_key_record *flow) +{ + *ip_proto = load_byte(skb, + nhoff + offsetof(struct ipv6hdr, nexthdr)); + flow->src = ipv6_addr_hash(skb, + nhoff + offsetof(struct ipv6hdr, saddr)); + flow->dst = ipv6_addr_hash(skb, + nhoff + offsetof(struct ipv6hdr, daddr)); + nhoff += sizeof(struct ipv6hdr); + + return nhoff; +} + +static inline bool flow_dissector(struct __sk_buff *skb, + struct flow_key_record *flow) +{ + __u64 nhoff = ETH_HLEN; + __u64 ip_proto; + __u64 proto = load_half(skb, 12); + int poff; + + if (proto == ETH_P_8021AD) { + proto = load_half(skb, nhoff + offsetof(struct vlan_hdr, + h_vlan_encapsulated_proto)); + nhoff += sizeof(struct vlan_hdr); + } + + if (proto == ETH_P_8021Q) { + proto = load_half(skb, nhoff + offsetof(struct vlan_hdr, + h_vlan_encapsulated_proto)); + nhoff += sizeof(struct vlan_hdr); + } + + if (likely(proto == ETH_P_IP)) + nhoff = parse_ip(skb, nhoff, &ip_proto, flow); + else if (proto == ETH_P_IPV6) + nhoff = parse_ipv6(skb, nhoff, &ip_proto, flow); + else + return false; + + switch (ip_proto) { + case IPPROTO_GRE: { + struct gre_hdr { + __be16 flags; + __be16 proto; + }; + + __u64 gre_flags = load_half(skb, + nhoff + offsetof(struct gre_hdr, flags)); + __u64 gre_proto = load_half(skb, + nhoff + offsetof(struct gre_hdr, proto)); + + if (gre_flags & (GRE_VERSION|GRE_ROUTING)) + break; + + proto = gre_proto; + nhoff += 4; + if (gre_flags & GRE_CSUM) + nhoff += 4; + if (gre_flags & GRE_KEY) + nhoff += 4; + if (gre_flags & GRE_SEQ) + nhoff += 4; + + if (proto == ETH_P_8021Q) { + proto = load_half(skb, + nhoff + offsetof(struct vlan_hdr, + h_vlan_encapsulated_proto)); + nhoff += sizeof(struct vlan_hdr); + } + + if (proto == ETH_P_IP) + nhoff = parse_ip(skb, nhoff, &ip_proto, flow); + else if (proto == ETH_P_IPV6) + nhoff = parse_ipv6(skb, nhoff, &ip_proto, flow); + else + return false; + break; + } + case IPPROTO_IPIP: + nhoff = parse_ip(skb, nhoff, &ip_proto, flow); + break; + case IPPROTO_IPV6: + nhoff = parse_ipv6(skb, nhoff, &ip_proto, flow); + break; + default: + break; + } + + flow->ip_proto = ip_proto; + poff = proto_ports_offset(ip_proto); + if (poff >= 0) { + nhoff += poff; + flow->ports = load_word(skb, nhoff); + } + + flow->thoff = (__u16) nhoff; + + return true; +} + +struct pair { + long packets; + long bytes; +}; + +struct { + __uint(type, BPF_MAP_TYPE_HASH); + __type(key, __be32); + __type(value, struct pair); + __uint(max_entries, 1024); +} hash_map SEC(".maps"); + +SEC("socket2") +int bpf_prog2(struct __sk_buff *skb) +{ + struct flow_key_record flow = {}; + struct pair *value; + u32 key; + + if (!flow_dissector(skb, &flow)) + return 0; + + key = flow.dst; + value = bpf_map_lookup_elem(&hash_map, &key); + if (value) { + __sync_fetch_and_add(&value->packets, 1); + __sync_fetch_and_add(&value->bytes, skb->len); + } else { + struct pair val = {1, skb->len}; + + bpf_map_update_elem(&hash_map, &key, &val, BPF_ANY); + } + return 0; +} + +char _license[] SEC("license") = "GPL"; +``` + +sockex2_user.c + +```c +// SPDX-License-Identifier: GPL-2.0 +#include +#include +#include +#include +#include +#include "sock_example.h" +#include +#include +#include + +struct pair { + __u64 packets; + __u64 bytes; +}; + +int main(int ac, char **argv) +{ + struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY}; + struct bpf_object *obj; + int map_fd, prog_fd; + char filename[256]; + int i, sock; + FILE *f; + + snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]); + setrlimit(RLIMIT_MEMLOCK, &r); + + if (bpf_prog_load(filename, BPF_PROG_TYPE_SOCKET_FILTER, + &obj, &prog_fd)) + return 1; + + map_fd = bpf_object__find_map_fd_by_name(obj, "hash_map"); + + sock = open_raw_sock("lo"); + + assert(setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, &prog_fd, + sizeof(prog_fd)) == 0); + + f = popen("ping -4 -c5 localhost", "r"); + (void) f; + + for (i = 0; i < 5; i++) { + int key = 0, next_key; + struct pair value; + + while (bpf_map_get_next_key(map_fd, &key, &next_key) == 0) { + bpf_map_lookup_elem(map_fd, &next_key, &value); + printf("ip %s bytes %lld packets %lld\n", + inet_ntoa((struct in_addr){htonl(next_key)}), + value.bytes, value.packets); + key = next_key; + } + sleep(1); + } + return 0; +} +``` + +运行结果 + +```bash +#./sockex2 +ip 0.0.0.1 bytes 472 packets 4 +ip 0.0.0.1 bytes 944 packets 8 +ip 0.0.0.1 bytes 1416 packets 12 +ip 0.0.0.1 bytes 1888 packets 16 +``` + + + +## 3. 基于源 IP + 目的 IP 端口统计 + +sockex3_kern.c + +```c +/* Copyright (c) 2015 PLUMgrid, http://plumgrid.com + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2 of the GNU General Public + * License as published by the Free Software Foundation. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "bpf_legacy.h" +#define IP_MF 0x2000 +#define IP_OFFSET 0x1FFF + +#define PROG(F) SEC("socket/"__stringify(F)) int bpf_func_##F + +struct { + __uint(type, BPF_MAP_TYPE_PROG_ARRAY); + __uint(key_size, sizeof(u32)); + __uint(value_size, sizeof(u32)); + __uint(max_entries, 8); +} jmp_table SEC(".maps"); + +#define PARSE_VLAN 1 +#define PARSE_MPLS 2 +#define PARSE_IP 3 +#define PARSE_IPV6 4 + +/* protocol dispatch routine. + * It tail-calls next BPF program depending on eth proto + * Note, we could have used: + * bpf_tail_call(skb, &jmp_table, proto); + * but it would need large prog_array + */ +static inline void parse_eth_proto(struct __sk_buff *skb, u32 proto) +{ + switch (proto) { + case ETH_P_8021Q: + case ETH_P_8021AD: + bpf_tail_call(skb, &jmp_table, PARSE_VLAN); + break; + case ETH_P_MPLS_UC: + case ETH_P_MPLS_MC: + bpf_tail_call(skb, &jmp_table, PARSE_MPLS); + break; + case ETH_P_IP: + bpf_tail_call(skb, &jmp_table, PARSE_IP); + break; + case ETH_P_IPV6: + bpf_tail_call(skb, &jmp_table, PARSE_IPV6); + break; + } +} + +struct vlan_hdr { + __be16 h_vlan_TCI; + __be16 h_vlan_encapsulated_proto; +}; + +struct flow_key_record { + __be32 src; + __be32 dst; + union { + __be32 ports; + __be16 port16[2]; + }; + __u32 ip_proto; +}; + +static inline int ip_is_fragment(struct __sk_buff *ctx, __u64 nhoff) +{ + return load_half(ctx, nhoff + offsetof(struct iphdr, frag_off)) + & (IP_MF | IP_OFFSET); +} + +static inline __u32 ipv6_addr_hash(struct __sk_buff *ctx, __u64 off) +{ + __u64 w0 = load_word(ctx, off); + __u64 w1 = load_word(ctx, off + 4); + __u64 w2 = load_word(ctx, off + 8); + __u64 w3 = load_word(ctx, off + 12); + + return (__u32)(w0 ^ w1 ^ w2 ^ w3); +} + +struct globals { + struct flow_key_record flow; +}; + +struct { + __uint(type, BPF_MAP_TYPE_ARRAY); + __type(key, __u32); + __type(value, struct globals); + __uint(max_entries, 32); +} percpu_map SEC(".maps"); + +/* user poor man's per_cpu until native support is ready */ +static struct globals *this_cpu_globals(void) +{ + u32 key = bpf_get_smp_processor_id(); + + return bpf_map_lookup_elem(&percpu_map, &key); +} + +/* some simple stats for user space consumption */ +struct pair { + __u64 packets; + __u64 bytes; +}; + +struct { + __uint(type, BPF_MAP_TYPE_HASH); + __type(key, struct flow_key_record); + __type(value, struct pair); + __uint(max_entries, 1024); +} hash_map SEC(".maps"); + +static void update_stats(struct __sk_buff *skb, struct globals *g) +{ + struct flow_key_record key = g->flow; + struct pair *value; + + value = bpf_map_lookup_elem(&hash_map, &key); + if (value) { + __sync_fetch_and_add(&value->packets, 1); + __sync_fetch_and_add(&value->bytes, skb->len); + } else { + struct pair val = {1, skb->len}; + + bpf_map_update_elem(&hash_map, &key, &val, BPF_ANY); + } +} + +static __always_inline void parse_ip_proto(struct __sk_buff *skb, + struct globals *g, __u32 ip_proto) +{ + __u32 nhoff = skb->cb[0]; + int poff; + + switch (ip_proto) { + case IPPROTO_GRE: { + struct gre_hdr { + __be16 flags; + __be16 proto; + }; + + __u32 gre_flags = load_half(skb, + nhoff + offsetof(struct gre_hdr, flags)); + __u32 gre_proto = load_half(skb, + nhoff + offsetof(struct gre_hdr, proto)); + + if (gre_flags & (GRE_VERSION|GRE_ROUTING)) + break; + + nhoff += 4; + if (gre_flags & GRE_CSUM) + nhoff += 4; + if (gre_flags & GRE_KEY) + nhoff += 4; + if (gre_flags & GRE_SEQ) + nhoff += 4; + + skb->cb[0] = nhoff; + parse_eth_proto(skb, gre_proto); + break; + } + case IPPROTO_IPIP: + parse_eth_proto(skb, ETH_P_IP); + break; + case IPPROTO_IPV6: + parse_eth_proto(skb, ETH_P_IPV6); + break; + case IPPROTO_TCP: + case IPPROTO_UDP: + g->flow.ports = load_word(skb, nhoff); + case IPPROTO_ICMP: + g->flow.ip_proto = ip_proto; + update_stats(skb, g); + break; + default: + break; + } +} + +PROG(PARSE_IP)(struct __sk_buff *skb) +{ + struct globals *g = this_cpu_globals(); + __u32 nhoff, verlen, ip_proto; + + if (!g) + return 0; + + nhoff = skb->cb[0]; + + if (unlikely(ip_is_fragment(skb, nhoff))) + return 0; + + ip_proto = load_byte(skb, nhoff + offsetof(struct iphdr, protocol)); + + if (ip_proto != IPPROTO_GRE) { + g->flow.src = load_word(skb, nhoff + offsetof(struct iphdr, saddr)); + g->flow.dst = load_word(skb, nhoff + offsetof(struct iphdr, daddr)); + } + + verlen = load_byte(skb, nhoff + 0/*offsetof(struct iphdr, ihl)*/); + nhoff += (verlen & 0xF) << 2; + + skb->cb[0] = nhoff; + parse_ip_proto(skb, g, ip_proto); + return 0; +} + +PROG(PARSE_IPV6)(struct __sk_buff *skb) +{ + struct globals *g = this_cpu_globals(); + __u32 nhoff, ip_proto; + + if (!g) + return 0; + + nhoff = skb->cb[0]; + + ip_proto = load_byte(skb, + nhoff + offsetof(struct ipv6hdr, nexthdr)); + g->flow.src = ipv6_addr_hash(skb, + nhoff + offsetof(struct ipv6hdr, saddr)); + g->flow.dst = ipv6_addr_hash(skb, + nhoff + offsetof(struct ipv6hdr, daddr)); + nhoff += sizeof(struct ipv6hdr); + + skb->cb[0] = nhoff; + parse_ip_proto(skb, g, ip_proto); + return 0; +} + +PROG(PARSE_VLAN)(struct __sk_buff *skb) +{ + __u32 nhoff, proto; + + nhoff = skb->cb[0]; + + proto = load_half(skb, nhoff + offsetof(struct vlan_hdr, + h_vlan_encapsulated_proto)); + nhoff += sizeof(struct vlan_hdr); + skb->cb[0] = nhoff; + + parse_eth_proto(skb, proto); + + return 0; +} + +PROG(PARSE_MPLS)(struct __sk_buff *skb) +{ + __u32 nhoff, label; + + nhoff = skb->cb[0]; + + label = load_word(skb, nhoff); + nhoff += sizeof(struct mpls_label); + skb->cb[0] = nhoff; + + if (label & MPLS_LS_S_MASK) { + __u8 verlen = load_byte(skb, nhoff); + if ((verlen & 0xF0) == 4) + parse_eth_proto(skb, ETH_P_IP); + else + parse_eth_proto(skb, ETH_P_IPV6); + } else { + parse_eth_proto(skb, ETH_P_MPLS_UC); + } + + return 0; +} + +SEC("socket/0") +int main_prog(struct __sk_buff *skb) +{ + __u32 nhoff = ETH_HLEN; + __u32 proto = load_half(skb, 12); + + skb->cb[0] = nhoff; + parse_eth_proto(skb, proto); + return 0; +} + +char _license[] SEC("license") = "GPL"; +``` + +sockex3_user.c + +```c +// SPDX-License-Identifier: GPL-2.0 +#include +#include +#include +#include +#include "sock_example.h" +#include +#include +#include + +struct flow_key_record { + __be32 src; + __be32 dst; + union { + __be32 ports; + __be16 port16[2]; + }; + __u32 ip_proto; +}; + +struct pair { + __u64 packets; + __u64 bytes; +}; + +int main(int argc, char **argv) +{ + int i, sock, key, fd, main_prog_fd, jmp_table_fd, hash_map_fd; + struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY}; + struct bpf_program *prog; + struct bpf_object *obj; + char filename[256]; + const char *title; + FILE *f; + + snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]); + setrlimit(RLIMIT_MEMLOCK, &r); + + obj = bpf_object__open_file(filename, NULL); + if (libbpf_get_error(obj)) { + fprintf(stderr, "ERROR: opening BPF object file failed\n"); + return 0; + } + + /* load BPF program */ + if (bpf_object__load(obj)) { + fprintf(stderr, "ERROR: loading BPF object file failed\n"); + goto cleanup; + } + + jmp_table_fd = bpf_object__find_map_fd_by_name(obj, "jmp_table"); + hash_map_fd = bpf_object__find_map_fd_by_name(obj, "hash_map"); + if (jmp_table_fd < 0 || hash_map_fd < 0) { + fprintf(stderr, "ERROR: finding a map in obj file failed\n"); + goto cleanup; + } + + bpf_object__for_each_program(prog, obj) { + fd = bpf_program__fd(prog); + + title = bpf_program__title(prog, false); + if (sscanf(title, "socket/%d", &key) != 1) { + fprintf(stderr, "ERROR: finding prog failed\n"); + goto cleanup; + } + + if (key == 0) + main_prog_fd = fd; + else + bpf_map_update_elem(jmp_table_fd, &key, &fd, BPF_ANY); + } + + sock = open_raw_sock("lo"); + + /* attach BPF program to socket */ + assert(setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, &main_prog_fd, + sizeof(__u32)) == 0); + + if (argc > 1) + f = popen("ping -4 -c5 localhost", "r"); + else + f = popen("netperf -l 4 localhost", "r"); + (void) f; + + for (i = 0; i < 5; i++) { + struct flow_key_record key = {}, next_key; + struct pair value; + + sleep(1); + printf("IP src.port -> dst.port bytes packets\n"); + while (bpf_map_get_next_key(hash_map_fd, &key, &next_key) == 0) { + bpf_map_lookup_elem(hash_map_fd, &next_key, &value); + printf("%s.%05d -> %s.%05d %12lld %12lld\n", + inet_ntoa((struct in_addr){htonl(next_key.src)}), + next_key.port16[0], + inet_ntoa((struct in_addr){htonl(next_key.dst)}), + next_key.port16[1], + value.bytes, value.packets); + key = next_key; + } + } + +cleanup: + bpf_object__close(obj); + return 0; +} +``` + +最终运行结果如下 + +```bash +# 依赖于 netperf +# wget http://repo.iotti.biz/CentOS/7/x86_64/netperf-2.7.0-1.el7.lux.x86_64.rpm +# rpm -ivh netperf-2.7.0-1.el7.lux.x86_64.rpm +#./sockex3 +IP src.port -> dst.port bytes packets +127.0.0.1.12865 -> 127.0.0.1.48537 148 2 +127.0.0.1.48537 -> 127.0.0.1.12865 108 2 +``` + + + +## 4. 内核中的结构 + +### 创建 socket-raw + +``` +sock = open_raw_sock("lo"); +``` + +open_raw_sock 原型定义如下 + +```c +static inline int open_raw_sock(const char *name) +{ + // 数据链路层的头信息 + // 更多可以参考 https://www.cnblogs.com/zhangshenghui/p/6097492.html + struct sockaddr_ll sll; + int sock; + + // SOCK_DGRAM 不包含链路层头, SOCK_RAW 包含链路层头的完整数据包 + // 如果只要是 IPv4 可以这样写 htons(ETH_P_IP),其他的还有 ETH_P_ARP 和 ETH_P_IPV6等 + // int socket(int domain, int type, int protocol); + // protocol 是网络字节序,所以需要使用 htons 进行转换 + sock = socket(PF_PACKET, SOCK_RAW | SOCK_NONBLOCK | SOCK_CLOEXEC, htons(ETH_P_ALL)); + if (sock < 0) { + printf("cannot create raw socket\n"); + return -1; + } + + memset(&sll, 0, sizeof(sll)); + sll.sll_family = AF_PACKET; + sll.sll_ifindex = if_nametoindex(name); // interface索引,0 匹配所有的网络接口卡 man 3 if_nametoindex + sll.sll_protocol = htons(ETH_P_ALL); + if (bind(sock, (struct sockaddr *)&sll, sizeof(sll)) < 0) { + printf("bind to %s: %s\n", name, strerror(errno)); + close(sock); + return -1; + } + + return sock; +} +``` + +PF_PACKET 协议是专门用于抓包的,往系统网络层注册一个协议,分为两种方式: + +* 通过套接字,打开指定的网卡,然后使用 recvmsg 读取,实际过程需要需要将报文从内核区拷贝到用户区。 + +* 使用 packet_mmap,使用共享内存方式,在内核空间中分配一块内核缓冲区,然后用户空间程序调用 mmap 映射到用户空间。将接收到的 skb 拷贝到那块内核缓冲区中,这样用户空间的程序就可以直接读到捕获的数据包了。PACKET_MMAP 减少了系统调用,不用 recvmsg 就可以读取到捕获的报文,相比原始套接字 + recvfrom的方式,减少了一次拷贝和一次系统调用。 + + +libpcap 就是采用第二种方式。往外发的包和进来的包都会调到 [net/packet/af_packet.c](https://github.com/torvalds/linux/blob/master/net/packet/af_packet.c) 这个文件里面的 packet_rcv 函数(PACKET_MMAP调用的是 tpacket_rcv() 函数),其中 outgoing 方向(出去的包)会在 dev_queue_xmit_nit 里面遍历 ptype_all 链表进行所有网络协议处理的时候调用到 packet_rcv;incoming 方向(从外面其他机器进来的包)会在 __netif_receive_skb_core 函数里面同样办法遍历 ptype_all 进行处理的时候调用到 packet_rcv。 + +用两张图分别描述 tcpdump 两种实现方式:原始套接字 + recvfrom 的方式和 pcap_mmap 共享内存方式,包含用户空间和内核空间。 + +**raw socket + recvfrom的方式** + +![image](https://jgsun.github.io/images/posts/network/tcpdump/pcap_recvfrom.png) + +**pcap_mmap共享内存方式** + +![image](https://jgsun.github.io/images/posts/network/tcpdump/pcap_mmap.png) + +### 为 socket 设置 BPF 程序 + +```c +setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, &prog_fd, sizeof(prog_fd) +__sys_setsockopt + sock_setsockopt(sock, level, optname, optval, + sk_attach_bpf(ufd, sk) + __sk_attach_prog(prog, sk) +``` + +`setsockopt` 函数完成 sock 与 bpf 程序的关联,在内核 3.19 中添加,提交记录 [`89aa075832b0`](https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=89aa075832b0da4402acebd698d0411dcc82d03e) + +```bash +introduce new setsockopt() command: + +setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, &prog_fd, sizeof(prog_fd)) + +where prog_fd was received from syscall bpf(BPF_PROG_LOAD, attr, ...) +and attr->prog_type == BPF_PROG_TYPE_SOCKET_FILTER + +setsockopt() calls bpf_prog_get() which increments refcnt of the program, +so it doesn't get unloaded while socket is using the program. + +The same eBPF program can be attached to multiple sockets. + +User task exit automatically closes socket which calls sk_filter_uncharge() +which decrements refcnt of eBPF program +``` + +相关文件 net/core/filter.c + +```c +1539 int sk_attach_bpf(u32 ufd, struct sock *sk) +1540 { +1541 struct bpf_prog *prog = __get_bpf(ufd, sk); +1542 int err; +1543 +1544 if (IS_ERR(prog)) +1545 return PTR_ERR(prog); +1546 +1547 err = __sk_attach_prog(prog, sk); +1548 if (err < 0) { +1549 bpf_prog_put(prog); +1550 return err; +1551 } +1552 +1553 return 0; +1554 } + +1421 static int __sk_attach_prog(struct bpf_prog *prog, struct sock *sk) +1422 { +1423 struct sk_filter *fp, *old_fp; +1424 +1425 fp = kmalloc(sizeof(*fp), GFP_KERNEL); +1426 if (!fp) +1427 return -ENOMEM; +1428 +1429 fp->prog = prog; +1430 +1431 if (!__sk_filter_charge(sk, fp)) { +1432 kfree(fp); +1433 return -ENOMEM; +1434 } +1435 refcount_set(&fp->refcnt, 1); +1436 +1437 old_fp = rcu_dereference_protected(sk->sk_filter, +1438 lockdep_sock_is_held(sk)); +1439 rcu_assign_pointer(sk->sk_filter, fp); +1440 +1441 if (old_fp) +1442 sk_filter_uncharge(sk, old_fp); +1443 +1444 return 0; +1445 } +``` + +`sock` 结构中的 `sk_filter` 字段定义了 bpf prog 相关的信息。 + +```c +// include/net/sock.h + 346 struct sock { + 347 /* + // .. + 416 struct sk_filter __rcu *sk_filter; + // ... + } + + // include/linux/filter.h + 552 struct sk_filter { + 553 refcount_t refcnt; + 554 struct rcu_head rcu; + 555 struct bpf_prog *prog; + 556 }; + + + 521 struct bpf_binary_header { + 522 u32 pages; + 523 u8 image[] __aligned(BPF_IMAGE_ALIGNMENT); + 524 }; + + // BPF_PROG_RUN(filter, ctx) + 526 struct bpf_prog { + 527 u16 pages; /* Number of allocated pages */ + 528 u16 jited:1, /* Is our filter JIT'ed? */ + 529 jit_requested:1,/* archs need to JIT the prog */ + 530 gpl_compatible:1, /* Is filter GPL compatible? */ + 531 cb_access:1, /* Is control block accessed? */ + 532 dst_needed:1, /* Do we need dst entry? */ + 533 blinded:1, /* Was blinded */ + 534 is_func:1, /* program is a bpf function */ + 535 kprobe_override:1, /* Do we override a kprobe? */ + 536 has_callchain_buf:1, /* callchain buffer allocated? */ + 537 enforce_expected_attach_type:1; /* Enforce expected_attach_type checking at attach time */ + 538 enum bpf_prog_type type; /* Type of BPF program */ + 539 enum bpf_attach_type expected_attach_type; /* For some prog types */ + 540 u32 len; /* Number of filter blocks */ + 541 u32 jited_len; /* Size of jited insns in bytes */ + 542 u8 tag[BPF_TAG_SIZE]; + 543 struct bpf_prog_aux *aux; /* Auxiliary fields */ + 544 struct sock_fprog_kern *orig_prog; /* Original BPF program */ + 545 unsigned int (*bpf_func)(const void *ctx, + 546 const struct bpf_insn *insn); + 547 /* Instructions for interpreter */ + 548 struct sock_filter insns[0]; + 549 struct bpf_insn insnsi[]; + 550 }; + 551 +``` + +`bpf_prog_put` 实现对于 prog 程序的管理,定义在 kernel/bpf/syscall.c + +```c +1748 void bpf_prog_put(struct bpf_prog *prog) +1749 { +1750 __bpf_prog_put(prog, true); +1751 } + +1714 static void __bpf_prog_put_rcu(struct rcu_head *rcu) +1715 { +1716 struct bpf_prog_aux *aux = container_of(rcu, struct bpf_prog_aux, rcu); +1717 +1718 kvfree(aux->func_info); +1719 kfree(aux->func_info_aux); +1720 bpf_prog_uncharge_memlock(aux->prog); +1721 security_bpf_prog_free(aux); +1722 bpf_prog_free(aux->prog); +1723 } +``` + +### 触发 BPF 程序 + +触发逻辑 net/packet/af_packet.c,对于出口和入口流量最终都会调用 packet_rcv 函数。 + +```c +2033 /* +2034 * This function makes lazy skb cloning in hope that most of packets +2035 * are discarded by BPF. +2036 * +2037 * Note tricky part: we DO mangle shared skb! skb->data, skb->len +2038 * and skb->cb are mangled. It works because (and until) packets +2039 * falling here are owned by current CPU. Output packets are cloned +2040 * by dev_queue_xmit_nit(), input packets are processed by net_bh +2041 * sequencially, so that if we return skb to original state on exit, +2042 * we will not harm anyone. +2043 */ +2044 +2045 static int packet_rcv(struct sk_buff *skb, struct net_device *dev, +2046 struct packet_type *pt, struct net_device *orig_dev) +2047 { +2048 struct sock *sk; +2049 struct sockaddr_ll *sll; +2050 struct packet_sock *po; +2051 u8 *skb_head = skb->data; +2052 int skb_len = skb->len; +2053 unsigned int snaplen, res; +2054 bool is_drop_n_account = false; +2055 +2056 if (skb->pkt_type == PACKET_LOOPBACK) +2057 goto drop; +2058 +2059 sk = pt->af_packet_priv; +2060 po = pkt_sk(sk); +2061 +2062 if (!net_eq(dev_net(dev), sock_net(sk))) +2063 goto drop; +2064 +2065 skb->dev = dev; +2066 +2067 if (dev->header_ops) { +2068 /* The device has an explicit notion of ll header, +2069 * exported to higher levels. +2070 * +2071 * Otherwise, the device hides details of its frame +2072 * structure, so that corresponding packet head is +2073 * never delivered to user. +2074 */ +2075 if (sk->sk_type != SOCK_DGRAM) +2076 skb_push(skb, skb->data - skb_mac_header(skb)); +2077 else if (skb->pkt_type == PACKET_OUTGOING) { +2078 /* Special case: outgoing packets have ll header at head */ +2079 skb_pull(skb, skb_network_offset(skb)); +2080 } +2081 } +2082 +2083 snaplen = skb->len; +2084 +2085 res = run_filter(skb, sk, snaplen); // 调用 sock 上的 BPF Prog +2086 if (!res) +2087 goto drop_n_restore; +2088 if (snaplen > res) +2089 snaplen = res; +2090 +2091 if (atomic_read(&sk->sk_rmem_alloc) >= sk->sk_rcvbuf) +2092 goto drop_n_acct; +2093 +2094 if (skb_shared(skb)) { +2095 struct sk_buff *nskb = skb_clone(skb, GFP_ATOMIC); +2096 if (nskb == NULL) +2097 goto drop_n_acct; +2098 +2099 if (skb_head != skb->data) { +2100 skb->data = skb_head; +2101 skb->len = skb_len; +2102 } +2103 consume_skb(skb); +2104 skb = nskb; +2105 } +2106 +2107 sock_skb_cb_check_size(sizeof(*PACKET_SKB_CB(skb)) + MAX_ADDR_LEN - 8); +2108 +2109 sll = &PACKET_SKB_CB(skb)->sa.ll; +2110 sll->sll_hatype = dev->type; +2111 sll->sll_pkttype = skb->pkt_type; +2112 if (unlikely(po->origdev)) +2113 sll->sll_ifindex = orig_dev->ifindex; +2114 else +2115 sll->sll_ifindex = dev->ifindex; +2116 +2117 sll->sll_halen = dev_parse_header(skb, sll->sll_addr); +2118 +2119 /* sll->sll_family and sll->sll_protocol are set in packet_recvmsg(). +2120 * Use their space for storing the original skb length. +2121 */ +2122 PACKET_SKB_CB(skb)->sa.origlen = skb->len; +2123 +2124 if (pskb_trim(skb, snaplen)) +2125 goto drop_n_acct; +2126 +2127 skb_set_owner_r(skb, sk); +2128 skb->dev = NULL; +2129 skb_dst_drop(skb); +2130 +2131 /* drop conntrack reference */ +2132 nf_reset_ct(skb); +2133 +2134 spin_lock(&sk->sk_receive_queue.lock); +2135 po->stats.stats1.tp_packets++; +2136 sock_skb_set_dropcount(sk, skb); +2137 __skb_queue_tail(&sk->sk_receive_queue, skb); +2138 spin_unlock(&sk->sk_receive_queue.lock); +2139 sk->sk_data_ready(sk); +2140 return 0; +2141 +2142 drop_n_acct: +2143 is_drop_n_account = true; +2144 atomic_inc(&po->tp_drops); +2145 atomic_inc(&sk->sk_drops); +2146 +2147 drop_n_restore: +2148 if (skb_head != skb->data && skb_shared(skb)) { +2149 skb->data = skb_head; +2150 skb->len = skb_len; +2151 } +2152 drop: +2153 if (!is_drop_n_account) +2154 consume_skb(skb); +2155 else +2156 kfree_skb(skb); +2157 return 0; +2158 } + + +2003 static unsigned int run_filter(struct sk_buff *skb, +2004 const struct sock *sk, +2005 unsigned int res) +2006 { +2007 struct sk_filter *filter; +2008 +2009 rcu_read_lock(); +2010 filter = rcu_dereference(sk->sk_filter); +2011 if (filter != NULL) +2012 res = bpf_prog_run_clear_cb(filter->prog, skb); // 运行 bpf 程序 +2013 rcu_read_unlock(); +2014 +2015 return res; +2016 } +``` + + + +## 参考 + +* [图解linux tcpdump](https://jgsun.github.io/2019/01/21/linux-tcpdump/) \ No newline at end of file diff --git a/socket_filter/socket-filter.graffle b/socket_filter/socket-filter.graffle new file mode 100644 index 0000000000000000000000000000000000000000..d2036979a95c95b9fc1f0b3eaf8deecd8f8c0126 GIT binary patch literal 136184 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%0AL<{yuxpf#> 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 bWoJ-J1qJ{B000620swLV003|k0ssI2YZg-D literal 0 HcmV?d00001