Recent Posts
-
2021-03-12
[译] BPF 可移植性和 CO-RE(一次编译,到处运行)(Facebook,2020)
译者序本文翻译自 2020 年 Facebook 的一篇博客:BPF Portability and CO-RE,作者 Andrii Nakryiko。关于 BPF CO-RE 的目标,引用文中的一段总结就是: 作为一种简单的方式,帮助 BPF 开发者解决简单的移植性问题(例如读取结构体的字段),并且 作为一种不是最优,但可用的方式,帮助 BPF 开发者解决复杂的移植性问题(例如不兼容的数据结构改动、复杂的用户空间控制条件等)。 使开发者能遵循“一次编译、到处运行”(Compile Once – Run E...
-
2021-03-05
[译] [论文] 迈向完全可编程 tc 分类器(cls_bpf)(NetdevConf,2016)
译者序本文翻译自 2016 年 Daniel Borkman 在 NetdevConf 大会上的一篇文章:On getting tc classifier fully programmable with cls_bpf。Daniel 是 eBPF 的核心开发之一,文章从技术层面介绍了 eBPF 的发展历史、核心设计,以及更重要的 —— 在 eBPF 基础之上,cls_bpf 如何使 tc 分类器变得完全可编程。由于 eBPF 发展很快,文中有些描述今天已经过时(例如单个 eBPF 程序允许的最大指令数量),因此翻译时以译注的形式...
-
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...