Recent Posts
-
2022-04-25
[译] BPF ring buffer:使用场景、核心设计及程序示例(2020)
译者序本文翻译自 BPF 核心开发者 Andrii Nakryiko 2020 的一篇文章:BPF ring buffer。文章介绍了 BPF ring buffer 解决的问题及背后的设计,并给出了一些代码示例和内核patch 链接,深度和广度兼备,是学习 ring buffer 的极佳参考。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。以下是译文。 译者序 1 ringbuf 相比 perfbuf 的改进 1.1 降低内存开销(memory overhead) 1.2 保...
-
2022-04-17
Cracking Kubernetes RBAC Authorization (AuthZ) Model (2022)
This post first appeared as Limiting access to Kubernetes resources with RBAC,which was kindly edited, re-illustrated and exemplified by learnk8s.io, andvery friendly to beginners.The version posted here in contrast has a biased focus on the design andimplementation,...
-
2022-02-06
[译] [论文] Raft 共识算法(及 etcd/raft 源码解析)(USENIX, 2014)
译者序本文翻译自 USENIX 2014 论文In Search of an Understandable Consensus Algorithm (Extended Version),文中提出了如今已广泛使用的 Raft 共识算法。在 Raft 之前,Paxos 几乎是共识算法的代名词,但它有两个严重缺点: 很难准确理解(即使对专业研究者和该领域的教授) 很难正确实现(复杂 + 某些理论描述比较模糊)结果正如 Chubby(基于 Paxos 的 Google 分布式锁服务,是 Google 众多全球分布式系统的基础)开发者...
-
2022-01-23
Cracking Kubernetes Network Policy
TL; DRThis post digs into the Kubernetes NetworkPolicy model, then designsa policy enforcer based on the technical requirements and furtherimplements it with less than 100 lines of eBPF code. Hopethat after reading through this post, readers will get a deeper unders...
-
2022-01-02
[译] [论文] BBR:基于拥塞(而非丢包)的拥塞控制(ACM, 2017)
译者序本文翻译自 Google 2017 的论文: Cardwell N, Cheng Y, Gunn CS, Yeganeh SH, Jacobson V.BBR: congestion-based congestion control.Communications of the ACM. 2017 Jan 23;60(2):58-66.论文副标题:Measuring Bottleneck Bandwidth andRound-trip propagation time(测量瓶颈带宽和往返传输时间)。BBR 之前,主流的 T...
-
2021-12-19
Trip.com: First Step towards Cloud Native Security
TL; DRThis post shares our explorations on cloud native securities for Kubernetesas well as legacy workloads, with CiliumNetworkPolicy for L3/L4 accesscontrol as the first step. TL; DR 1 Introduction 1.1 Access control in Kubernetes 1.2 Implementation...
-
2021-12-05
[译] Facebook 流量路由最佳实践:从公网入口到内网业务的全路径 XDP/BPF 基础设施(LPC, 2021)
译者序本文翻译自 Facebook 在 LPC 2021 大会上的一篇分享:From XDP to Socket: Routing of packets beyond XDP with BPF。标题可直译为《从 XDP 到 Socket 的(全路径)流量路由:XDP 不够,BPF 来凑》,因为 XDP 运行在网卡上,而且在边界和流量入口,再往后的路径(尤其是到了内核协议栈)它就管不到了,所以引入了其他一些 BPF 技术来“接力”这个路由过程。另外,这里的“路由”并非狭义的路由器三层路由,而是泛指 L3-L7 流量转发。翻译时加了...
-
2021-11-24
[译] 为 K8s workload 引入的一些 BPF datapath 扩展(LPC, 2021)
译者序本文翻译自 LPC 2021 的一篇分享:BPF datapath extensions for K8s workloads。作者 Daniel Borkmann 和 Martynas Pumputis 都是 Cilium 的核心开发。翻译时补充了一些背景知识、代码片段和链接,以方便理解。翻译已获得作者授权。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。以下是译文。 译者序 0 引言 0.1 Cilium datapath 基础 0.2 Cilium datapath ...
-
2021-11-19
[译] [论文] 可虚拟化第三代(计算机)架构的规范化条件(ACM, 1974)
译者序本文翻译自 1974 年关于可虚拟化计算机架构(即能支持 VM)的经典论文: Popek, Gerald J., and Robert P. Goldberg."Formal requirements for virtualizable third generation architectures."Communications of the ACM 17.7(1974): 412-421.虽然距今已半个世纪,但这篇文章的一些核心思想仍未过时。特别是,它在最朴素的层面介绍了虚拟机是如何工作的(就像 (译) RFC 118...
-
2021-10-21
[译] NAT 穿透是如何工作的:技术原理及企业级实践(Tailscale, 2020)
译者序本文翻译自 2020 年的一篇英文博客:How NAT traversal works。设想这样一个问题:在北京和上海各有一台局域网的机器(例如一台是家里的台式机,一台是连接到星巴克 WiFi 的笔记本),二者都是私网 IP 地址,但可以访问公网,如何让这两台机器通信呢?既然二者都能访问公网,那最简单的方式当然是在公网上架设一个中继服务器:两台机器分别连接到中继服务,后者完成双向转发。这种方式显然有很大的性能开销,而且中继服务器很容易成为瓶颈。有没有办法不用中继,让两台机器直接通信呢?如果有一定的网络和协议基础,就会明白这...