ArthurChiao's Blog

Recent Posts

  • 2021-10-07

    [译] 写给工程师:关于证书(certificate)和公钥基础设施(PKI)的一切(SmallStep, 2018)

    译者序本文翻译自 2018 年的一篇英文博客:Everything you should know about certificates and PKI but are too afraid to ask,作者 MIKE MALONE。这篇长文并不是枯燥、零碎地介绍 PKI、X.509、OID 等概念,而是从前因后果、历史沿革的角度把这些东西串联起来,逻辑非常清晰,让读者知其然,更知其所以然。证书和 PKI 的目标其实很简单:将名字关联到公钥(bind names to public keys)。加密方式的演进: MAC ...

  • 2021-09-14

    [译] 基于角色的访问控制(RBAC):演进历史、设计理念及简洁实现(Tailscale, 2021)

    译者序本文翻译自 2021 年的一篇英文博客:RBAC like it was meant to be。很多系统(例如 Kubernetes、AWS)都在使用某种形式的 RBAC 做权限/访问控制。本文基于 access control 的发展历史,从设计层面分析了DAC -> MAC -> RBAC -> ABAC的演进历程及各模型的优缺点、适用场景等,然后从实际需求出发,一步步地设计出一个实用、简洁、真正符合 RBAC 理念的访问控制系统。作为对比,如果想看看表达能力更强(但也更复杂)的 RBAC/ABAC...

  • 2021-09-10

    [译] Control Group v2(cgroupv2 权威指南)(KernelDoc, 2021)

    译者序本文翻译自 2021 年 Linux 5.10 内核文档:Control Group v2,它是描述 cgroupv2 用户空间侧的设计、接口和规范的权威文档。原文非常全面详细,本文只翻译了目前感兴趣的部分,其他部分保留原文。另外,由于技术规范的描述比较抽象,因此翻译时加了一些系统测试输出、内核代码片段和链接,便于更好理解。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。以下是译文。 译者序 1 引言 1.1 术语 1.2 cgroup 是什么? ...

  • 2021-09-01

    [译] Linux 异步 I/O 框架 io_uring:基本原理、程序示例与性能压测(2020)

    译者序本文组合翻译了以下两篇文章的干货部分,作为 io_uring 相关的入门参考: How io_uring and eBPF Will Revolutionize Programming in Linux, ScyllaDB, 2020 An Introduction to the io_uring Asynchronous I/O Framework, Oracle, 2020io_uring 是 2019 年 Linux 5.1 内核首次引入的高性能异步 I/O 框架,能显著加速 I/O 密集型应用的性能。但如果你的...

  • 2021-08-27

    [译] Linux Socket Filtering (LSF, aka BPF)(KernelDoc,2021)

    译者序本文翻译自 2021 年 Linux 5.10 内核文档:Linux Socket Filtering aka Berkeley Packet Filter (BPF),文档源码见 Documentation/networking/filter.rst。Linux Socket Filtering (LSF) 是最初将 BSD 系统上的数据包过滤技术BPF(伯克利包过滤器)移植到 Linux 系统时使用的名称,但后来大家还是更多称呼其为BPF(aka:as known as)。本文介绍了 Linux BPF 的一些底层设计...

  • 2021-08-15

    [译] LLVM eBPF 汇编编程(2020)

    译者序本文翻译自 2020 年 Quentin Monnet 的一篇英文博客:eBPF assembly with LLVM。Quentin Monnet 是 Cilium 开发者之一,此前也在从事网络、eBPF 相关的开发。翻译已获得 Quentin Monnet 授权。文章介绍了如何直接基于 LLVM eBPF 汇编开发 BPF 程序,虽然给出的两个例子极其简单,但其流程对于开发更大的程序也是适用的。为什么不用 C,而用汇编这么不友好的编程方式呢?至少有两个特殊场景: 测试特定的 eBPF 指令流 对程序的某个特定部分进...

  • 2021-08-01

    [译] [论文] XDP (eXpress Data Path):在操作系统内核中实现快速、可编程包处理(ACM,2018)

    译者序本文翻译自 2018 年 ACM CoNEXT 大会上的一篇文章:The eXpress Data Path: Fast Programmable Packet Processing in the Operating System Kernel作者阵容豪华,包括来自 Cilium 的 Daniel Borkmann、John Fastabend 等。论文引用信息: Toke Høiland-Jørgensen, Jesper Dangaard Brouer, Daniel Borkmann, JohnFastabend,...

  • 2021-07-18

    [译] Cilium:BPF 和 XDP 参考指南(2021)

    译者序本文翻译自 Cilium 1.10 的官方文档:BPF and XDP Reference Guide。 几年前翻译过一版:Cilium:BPF 和 XDP 参考指南(2019),对应 Cilium v1.6。本文对排版做了一些调整,以更适合网页阅读。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。以下是译文。 本文的目标读者是 “希望在技术层面对 BPF 和 XDP 有更深入理解的开发者和用户”。虽然阅读本文有助于拓宽读者对 Cilium 的认识,但这并不是使用 Cilium 的前提条件。BPF ...

  • 2021-07-13

    BPF 进阶笔记(三):BPF Map 内核实现

    关于本文内核目前支持 30 来种BPF map 类型。本文整理一些与这些 map 相关的内核实现。关于 “BPF 进阶笔记” 系列平时学习使用 BPF 时所整理。由于是笔记而非教程,因此内容不会追求连贯,有基础的同学可作查漏补缺之用。文中涉及的代码,如无特殊说明,均基于内核 5.8/5.10 版本。 BPF 进阶笔记(一):BPF 程序(BPF Prog)类型详解:使用场景、函数签名、执行位置及程序示例 BPF 进阶笔记(二):BPF Map 类型详解:使用场景、程序示例 BPF 进阶笔记(三):BPF Map 内核实现 ...

  • 2021-07-13

    BPF 进阶笔记(二):BPF Map 类型详解:使用场景、程序示例

    关于本文内核目前支持 30 来种BPF map 类型。对于主要的类型,本文将介绍其: 使用场景:适合用来做什么? 程序示例:一些实际例子。本文参考: notes-on-bpf-3,内容较老,基于内核 4.14 BPF Features by Linux Kernel Version,bcc 文档,v0.20.0关于 “BPF 进阶笔记” 系列平时学习使用 BPF 时所整理。由于是笔记而非教程,因此内容不会追求连贯,有基础的同学可作查漏补缺之用。文中涉及的代码,如无特殊说明,均基于内核 5.8/5.10 版本。 BPF ...