ArthurChiao's Blog

Recent Posts

  • 2021-02-21

    [译] 深入理解 tc ebpf 的 direct-action (da) 模式(2020)

    译者序本文翻译自 2020 年 Quentin Monnet 的一篇英文博客:Understanding tc “direct action” mode for BPF。Quentin Monnet 是 Cilium 开发者之一。如作者所说,da 模式不仅是使用 tc ebpf 程序的推荐方式,而且(据他所知,截至本文写作时)也是唯一方式。所以,很多人一直在使用它(包括通过 Cilium 间接使用),却没有深挖过它到底是什么意思 —— 这样用就行了。本文结合 tc/ebpf 开发史,介绍了 da 模式的来龙去脉,并给出了例子、内...

  • 2021-02-13

    [译] 为容器时代设计的高级 eBPF 内核特性(FOSDEM, 2021)

    译者序本文翻译自 2021 年 Daniel Borkmann 在 FOSDEM 的一篇分享:Advanced eBPF kernel features for the container age。内容是 2019 和 2020 两次 LPC 大会分享的延续, 利用 eBPF 支撑大规模 K8s Service (LPC, 2019) 基于 BPF/XDP 实现 K8s Service 负载均衡 (LPC, 2020)翻译已获得 Daniel 授权。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。以下是译...

  • 2021-01-28

    [译] 利用 ebpf sockmap/redirection 提升 socket 性能(2020)

    译者序本文翻译自 2020 年的一篇英文博客 How to use eBPF for accelerating Cloud Nativeapplications。原文标题非常宽泛,但内容其实很技术:展示了如何编写简单的 BPF 程序做 socket level重定向(redirection)。对于源和目的端都在同一台机器的应用来说,这样可以绕过整个 TCP/IP 协议栈,直接将数据发送到 socket 对端。效果如右下图(懒得画图,直接从 Cilium 分享截个图,所以其中 Cilium 字样,但本文不需要 Cilium):实现...

  • 2021-01-23

    Traffic Mirroring: Theory and Practice (with tc and Tunneling)

    1 Theory 1.1 Technical requirements 1.2 Solutions Capture, filter and copy packets Send copied packets to the destination Challenges Sending via tunneling ...

  • 2021-01-10

    [笔记] Cloud Native Data Center Networking (O'Reilly 2019)

    关于本文本文是读 Cloud Native Data Center Networking (O’Reilly, 2019)时的所做的一些笔记。这本书理论和实践兼备,是现代数据中心网络、云原生数据中心网络设计和 BGP 的很好入门参考。作者 Dinesh G. Dutt 是一家网络公司的首席科学家,在网络行业有 20 多年工作经验,曾是 Cisco Fellow,是 TRILL、VxLAN 等协议的合作者(co-author)之一。 关于本文 1 传统网络架构面临瓶颈 1.1 “应用-网络”架构演进 ...

  • 2020-12-31

    Cilium Code Walk Through: Node & Endpoint Health Probe

    TL; DR 1 Design 1.1 Full-mesh probe 1.2 Types of probes 1.3 Probe results 1.4 A special endpoint: cilium-health-ep 1.5 Summary 2 Implementation 2.1 Initialization: high level overview 2.2 initHealth() -> Launch(...

  • 2020-12-31

    Cilium 源码解析:Node 之间的健康探测(health probe)机制

    TL; DR 1 设计 1.1 Full-mesh 健康探测 1.2 四种 probe 类型 1.3 Probe results 1.4 cilium-health-ep: cilium-health endpoint 1.5 小结 2 实现 2.1 初始化流程 2.2 initHealth() -> Launch() -> runServer() -> server.Serve() 2.3 ru...

  • 2020-12-17

    [译] 云原生世界中的数据包标记(packet mark)(LPC, 2020)

    译者序本文翻译自 2020 年 Joe Stringer 在 Linux Plumbers Conference 的一篇分享:Packet Mark In a Cloud Native World。探讨一个在网络和安全领域非常重要但又讨论甚少的主题:skb mark。skb mark 是打在内核数据包(skb )上的数字标记,例如,可能是一个 16bit 或32bit 整数表示。这个 mark 只存在于每台主机内部,当包从网卡发出去之后,这个信息就丢失了 —— 也就是说,它并没有存储在任何 packet header 中。skb...

  • 2020-11-29

    [译] 利用 eBPF 支撑大规模 K8s Service (LPC, 2019)

    译者序本文翻译自 2019 年 Daniel Borkmann 和 Martynas Pumputis 在 Linux Plumbers Conference 的一篇分享:Making the Kubernetes Service Abstraction Scale using eBPF 。翻译时对大家耳熟能详或已显陈旧的内容(K8s 介绍、Cilium 1.6 之前的版本对 Service实现等)略有删减,如有需要请查阅原 PDF。实际上,一年之后 Daniel 和 Martynas 又在 LPC 做了一次分享,内容是本文的延...

  • 2020-11-24

    [译] 基于 BPF/XDP 实现 K8s Service 负载均衡 (LPC, 2020)

    译者序本文翻译自 2020 年 Daniel Borkmann 和 Martynas Pumputis 在 Linux Plumbers Conference 的一篇分享:K8s Service Load Balancing with BPF & XDP。文章介绍了 K8s 的一些核心网络模型和设计、Cilium 对 K8s Service 的实现、BPF/XDP性能优化,以及他们从中得到的一些实践经验,全是干货。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。 译者序 1 K8s 网络基础:访问...