Open cybernagle opened 1 year ago
它是一个虚拟机,内置在内核当中,通过 bpf() 与其交互。 那么其虚拟机的细节是这样的,自定义的寄存器,自定义的指令,通过编译器将其转换成 eBPF 指令,在内核当中通过 JIT 翻译成对应的 CPU 指令集。
这个东西的优势在哪里?
首先介绍了 bcc 来开发一个 hello world. 进而运行该 hello world 主要需要介绍的点是在于:
首先是关于 ebpf 的虚拟机, 虚拟机里面包含什么呢? 首先是寄存器以及指令集,有了寄存器以及指令集之后, 一个 ebpf 程序会被编译器编译成前面提到的虚拟机层次的寄存器以及指令集. 然后通过JIT 的方式被翻译成机器码.
有了上面的基础概念, 接下来就文章就开始示例一个在 network level 的 ebpf 程序以及其与 kerne 交互的细节. 其中包括:
本章的目的在于深挖上一章节当中,关于将(不确定是下面的哪个, 第三个是正确的)
关于细节部分, 本章的内容实际上就是列举一个程序代码片段. 然后 one by one 的进行解释. 从而从程序片段对 bpf call 的过程有一个实际的理解.
那么一个对 map 进行访问的程序包含哪些部分呢?
JIT 的新解决方案: https://github.com/qmonnet/rbpf
Learning eBPF
第一章 什么是 eBPF ?
它是一个虚拟机,内置在内核当中,通过 bpf() 与其交互。 那么其虚拟机的细节是这样的,自定义的寄存器,自定义的指令,通过编译器将其转换成 eBPF 指令,在内核当中通过 JIT 翻译成对应的 CPU 指令集。
这个东西的优势在哪里?
第二章的逻辑线一个 ebpf 的 hello world 程序
首先介绍了 bcc 来开发一个 hello world. 进而运行该 hello world 主要需要介绍的点是在于:
第三章的逻辑线 深入解析一个 ebpf 程序
首先是关于 ebpf 的虚拟机, 虚拟机里面包含什么呢? 首先是寄存器以及指令集,有了寄存器以及指令集之后, 一个 ebpf 程序会被编译器编译成前面提到的虚拟机层次的寄存器以及指令集. 然后通过JIT 的方式被翻译成机器码.
有了上面的基础概念, 接下来就文章就开始示例一个在 network level 的 ebpf 程序以及其与 kerne 交互的细节. 其中包括:
第四章的逻辑线 深入理解 bpf() 这个 syscall
本章的目的在于深挖上一章节当中,关于将(不确定是下面的哪个, 第三个是正确的)
关于细节部分, 本章的内容实际上就是列举一个程序代码片段. 然后 one by one 的进行解释. 从而从程序片段对 bpf call 的过程有一个实际的理解.
那么一个对 map 进行访问的程序包含哪些部分呢?