ArthurChiao's Blog

Recent Posts

  • 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 ...

  • 2021-07-04

    BPF 进阶笔记(一):BPF 程序(BPF Prog)类型详解:使用场景、函数签名、执行位置及程序示例

    关于本文内核目前支持 30 来种BPF 程序类型。对于主要的程序类型,本文将介绍其: 使用场景:适合用来做什么? Hook 位置:在何处(where)、何时(when)会触发执行?例如在内核协议栈的哪个位置,或是什么事件触发执行。 程序签名(程序 入口函数 签名) 传入参数:调用到 BPF 程序时,传给它的上下文(context,也就是函数参数)是什么? 返回值:返回值类型、含义、合法列表等。 加载方式:如何将程序附着(attach)到执行点? 程序示例:一些实际例子。 延伸阅...

  • 2021-06-27

    Firewalling with BPF/XDP: Examples and Deep Dive

    TL; DR Some beginner-level BPF programs A containerized playground to exercise step by step tc/kernel code analysis to explain how things work in the underlying TL; DR 1 Introduction 1.1 BPF/XDP in a nutshell 1.2 Environment info 1.3 Playgroun...

  • 2021-06-06

    Cilium: Handle Conntrack (CT) related BPF Maps on Agent Restart

    This post digs into the handling of CT (conntrack) related BPFmaps during agent restart. Code based on Cilium 1.9.5.If you’re not familiar with CT, refer toConnection Tracking (conntrack): Design and Implementation Inside Linux Kernel[5] for some basic concepts.This...

  • 2021-06-01

    源码解析:K8s 创建 pod 时,背后发生了什么(五)(2021)

    本文基于 2019 年的一篇文章What happens when … Kubernetes edition!梳理了 k8s 创建 pod(及其 deployment/replicaset)的整个过程,整理了每个重要步骤的代码调用栈,以在实现层面加深对整个过程的理解。原文参考的 k8S 代码已经较老(v1.8/v1.14 以及当时的 master),且部分代码链接已失效;本文代码基于 v1.21。由于内容已经不与原文一一对应(有增加和删减),因此标题未加 “[译]” 等字样。感谢原作者(们)的精彩文章。篇幅太长,分成了几部分: ...

  • 2021-06-01

    源码解析:K8s 创建 pod 时,背后发生了什么(四)(2021)

    本文基于 2019 年的一篇文章What happens when … Kubernetes edition!梳理了 k8s 创建 pod(及其 deployment/replicaset)的整个过程,整理了每个重要步骤的代码调用栈,以在实现层面加深对整个过程的理解。原文参考的 k8S 代码已经较老(v1.8/v1.14 以及当时的 master),且部分代码链接已失效;本文代码基于 v1.21。由于内容已经不与原文一一对应(有增加和删减),因此标题未加 “[译]” 等字样。感谢原作者(们)的精彩文章。篇幅太长,分成了几部分: ...

  • 2021-06-01

    源码解析:K8s 创建 pod 时,背后发生了什么(三)(2021)

    本文基于 2019 年的一篇文章What happens when … Kubernetes edition!梳理了 k8s 创建 pod(及其 deployment/replicaset)的整个过程,整理了每个重要步骤的代码调用栈,以在实现层面加深对整个过程的理解。原文参考的 k8S 代码已经较老(v1.8/v1.14 以及当时的 master),且部分代码链接已失效;本文代码基于 v1.21。由于内容已经不与原文一一对应(有增加和删减),因此标题未加 “[译]” 等字样。感谢原作者(们)的精彩文章。篇幅太长,分成了几部分: ...