Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C eBPF:默认bpf程序/映射?_C_Linux Kernel_Bpf_Ebpf - Fatal编程技术网

C eBPF:默认bpf程序/映射?

C eBPF:默认bpf程序/映射?,c,linux-kernel,bpf,ebpf,C,Linux Kernel,Bpf,Ebpf,使用最新的netnext内核,我面临着bpf的奇怪行为。启用所有BPF内核选项(包括CONFIG\u BPF\u JIT\u ALWAYS\u ON)且未加载任何BPF程序时,bpftool报告以下内容: # ./bpftool prog show 2: cgroup_skb tag 7be49e3934a125ba loaded_at Feb 05/10:17 uid 0 xlated 296B jited 229B memlock 4096B map

使用最新的
netnext
内核,我面临着
bpf
的奇怪行为。启用所有BPF内核选项(包括
CONFIG\u BPF\u JIT\u ALWAYS\u ON
)且未加载任何
BPF
程序时,
bpftool
报告以下内容:

# ./bpftool prog show
2: cgroup_skb  tag 7be49e3934a125ba
        loaded_at Feb 05/10:17  uid 0
        xlated 296B  jited 229B  memlock 4096B  map_ids 2,3
3: cgroup_skb  tag 2a142ef67aaad174
        loaded_at Feb 05/10:17  uid 0
        xlated 296B  jited 229B  memlock 4096B  map_ids 2,3
4: cgroup_skb  tag 7be49e3934a125ba
        loaded_at Feb 05/10:17  uid 0
        xlated 296B  jited 229B  memlock 4096B  map_ids 4,5
5: cgroup_skb  tag 2a142ef67aaad174
        loaded_at Feb 05/10:17  uid 0
        xlated 296B  jited 229B  memlock 4096B  map_ids 4,5
6: cgroup_skb  tag 7be49e3934a125ba
        loaded_at Feb 05/10:17  uid 0
        xlated 296B  jited 229B  memlock 4096B  map_ids 6,7
7: cgroup_skb  tag 2a142ef67aaad174
        loaded_at Feb 05/10:17  uid 0
        xlated 296B  jited 229B  memlock 4096B  map_ids 6,7
#
# ./bpftool map show
2: lpm_trie  flags 0x1
        key 8B  value 8B  max_entries 1  memlock 4096B
3: lpm_trie  flags 0x1
        key 20B  value 8B  max_entries 1  memlock 4096B
4: lpm_trie  flags 0x1
        key 8B  value 8B  max_entries 1  memlock 4096B
5: lpm_trie  flags 0x1
        key 20B  value 8B  max_entries 1  memlock 4096B
6: lpm_trie  flags 0x1
        key 8B  value 8B  max_entries 1  memlock 4096B
7: lpm_trie  flags 0x1
        key 20B  value 8B  max_entries 1  memlock 4096B
#
这是程序包含的内容:

# ./bpftool prog dump xlated id 2
   0: (bf) r6 = r1
   1: (69) r7 = *(u16 *)(r6 +192)
   2: (b4) (u32) r8 = (u32) 0
   3: (55) if r7 != 0x8 goto pc+14
   4: (bf) r1 = r6
   5: (b4) (u32) r2 = (u32) 16
   6: (bf) r3 = r10
   7: (07) r3 += -4
   8: (b4) (u32) r4 = (u32) 4
   9: (85) call bpf_skb_load_bytes#6169312
  10: (18) r1 = map[id:2]
  12: (bf) r2 = r10
  13: (07) r2 += -8
  14: (62) *(u32 *)(r2 +0) = 32
  15: (85) call bpf_map_lookup_elem#73712
  16: (15) if r0 == 0x0 goto pc+1
  17: (44) (u32) r8 |= (u32) 2
  18: (55) if r7 != 0xdd86 goto pc+14
  19: (bf) r1 = r6
  20: (b4) (u32) r2 = (u32) 24
  21: (bf) r3 = r10
  22: (07) r3 += -16
  23: (b4) (u32) r4 = (u32) 16
  24: (85) call bpf_skb_load_bytes#6169312
  25: (18) r1 = map[id:3]
  27: (bf) r2 = r10
  28: (07) r2 += -20
  29: (62) *(u32 *)(r2 +0) = 128
  30: (85) call bpf_map_lookup_elem#73712
  31: (15) if r0 == 0x0 goto pc+1
  32: (44) (u32) r8 |= (u32) 2
  33: (b7) r0 = 1
  34: (55) if r8 != 0x2 goto pc+1
  35: (b7) r0 = 0
  36: (95) exit
#
有趣的是,我没有显式加载任何
eBPF
程序。我想知道现在内核中是否出现了一个默认的
eBPF
blob


这在机器启动后立即发生。这个系统与另一个系统(运行相同的内核和选项,并且我没有看到多个cgroup_skb程序存在此问题)之间的唯一区别是存在
/sys/fs/cgroup/unified
cgroup2 fs。我不知道这是否与我的问题有关,但我不知道如何禁用
/sys/fs/cgroup/unified
,不允许卸载。

正如Qeole所怀疑的,这是来自systemd,特别是systemd v235引入了IP访问控制eBPF功能,并公开了两个配置选项,IPAddressDeny和IPAddressAllow。(我不知道是否可以在编译时禁用它)。

我不知道。您是否可能正在计算机上运行将eBPF程序附加到cGroup的程序?或者这是在启动机器之后发生的,没有任何特定的运行吗?我很想看看sytemd,但我不完全确定这是罪魁祸首。如果可以的话,我可以试着看一看。需要进一步的调查,但这个系统公关可能是相关的:啊,那毕竟是系统公关:-)。“我们可以关闭它吗”这一部分可能更容易分类,但我对systemd的了解非常有限,我无法在这一点上进一步帮助。是的,systemd是一个罪魁祸首,因为现在我降级到了没有IPAccess功能的早期版本;systemd太胖了,无法快速理解它并进行相应调整;-)