ArthurChiao's Blog

Recent Posts

  • 2019-03-06

    [译] 数据中心网络:Spine-Leaf 架构设计综述(2016)

    译者序本文内容翻译自 Cisco 的白皮书 Cisco Data Center Spine-and-Leaf Architecture:DesignOverview(2016),翻译非逐字逐句,请酌情参考。搜索 spine-leaf 资料时看到这篇非常棒的文档,故通过翻译的方式做个笔记顺便加深理解(不知是否有没有中文版)。本文翻译仅供个人学习交流,无任何商业目的,如有侵权将及时删除。另外,发现思科、华为、华三等厂商的官网上都有大量的优秀文档,其最终目的虽然是推介产品,但其中关于基础设施的内容大部分都是厂商无关的,可以作为很好的学...

  • 2019-03-04

    [译] 数据中心网络:hierarchical(分层)网络设计综述(2014)

    译者序本文内容翻译自 Cisco 的一门叫 Connecting Networks 的教材(2014),英文版可以在官网在线阅读,也可以在这里下载 PDF(仅前三章)。搜索网络架构的资料时偶然看到这本小册子,其中关于基础网络和数据中心网络架构设计的内容非常不错,因此通过翻译的方式(不知道有没有中文版)做个笔记顺便加深理解。本文翻译仅供个人学习交流,无商业目的,如有侵权将及时删除。本篇翻译自原书第一章第一节,介绍经典的数据中心三级网络架构:接入层-汇聚层-核心层。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。...

  • 2019-02-21

    [译] 现代网络负载均衡与代理导论(2017)

    译者序本文翻译自 Envoy 作者 Matt Klein 2017 年的一篇英文博客 Introduction to modernnetwork load balancing and proxying。Service mesh 是近两年网络、容器编排和微服务领域最火热的话题之一。Envoy 是目前service mesh 数据平面的首选组件。Matt Klein 是 Envoy 的设计者和核心开发。文章循序渐进,从最简单的中间代理(middle proxy)负载均衡,逐步过渡到大型互联网公司经典的L4/L7 两级架构,再到包括 ...

  • 2019-02-18

    [译] 深入理解 iptables 和 netfilter 架构

    译者序本文翻译自 2015 年的一篇英文博客 A Deep Dive into Iptables and NetfilterArchitecture。这篇对 iptables 和 netfilter 的设计和原理介绍比较全面,不足的是没有那张内核协议栈各hook 点位置和 iptables 规则优先级的经典配图,这里补充如下(来自Wikipedia):另外,本文只讲理论,而下面这篇则侧重实战(基于 iptables 做 NAT): (译) NAT - 网络地址转换可作为本文的补充阅读。由于译者水平有限,本文不免存在遗漏或错误之...

  • 2019-02-17

    [译] NAT - 网络地址转换(2016)

    译者序本文翻译自 2016 年的一篇英文博客 NAT - Network Address Translation 。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。以下是译文。 译者序 1 绪论 2 网络内的数据包 3 Linux 和 Netfilter 4 例子:将私有网络通过 NAT 连接到互联网 4.1 类比:地主和租户的信件收发 4.2 从租户问题到计算机世界 4.3 如何设置规则 4.4 NAT 的不足 5 近距离查看 ipta...

  • 2019-02-08

    Cilium Code Walk Through: CNI Create Network

    This post is included inCilium Code Walk Through Series.TL;DRThis post walks through the code of Cilium CNI creating network for a Pod.Call stack (code based on 1.8.2/1.5.1):cmdAdd // plugins/cilium-cni/cilium-cni.go |-loadNet...

  • 2019-02-07

    [译] ltrace 是如何工作的(2016)

    译者序本文翻译自 2016 年的一篇英文博客 How Does ltrace Work。阅读本文之前,强烈建议先阅读下面几篇之前的文章: (译) Linux 系统调用权威指南 (译) strace/ptrace 是如何工作的其中包含了本文所需的部分预备知识。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。以下是译文。太长不读(TL;DR)本文介绍 ltrace 内部是如何工作的,和我们的前一篇文章 strace 是如何工作的 是兄弟篇。文章首先会对比 ltrace 和 strace 的异同;然后介绍 lt...

  • 2019-02-02

    [译] strace 是如何工作的(2016)

    译者序本文翻译自 2016 年的一篇英文博客 How Does strace Work。阅读本文之前,强烈建议先阅读Linux 系统调用权威指南,其中包含了本文所需的部分预备知识。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。以下是译文。太长不读(TL;DR)本文介绍 strace 内部是如何工作的。我们会研究 strace 工具内部所依赖的ptrace 系统调用,对其 API 层及内部实现进行分析,以弄清楚 strace是如何获取被跟踪进程的(系统调用相关的)详细信息的。 译者序 太长不读(TL;DR...

  • 2019-01-30

    [译] Linux 系统调用权威指南(2016)

    译者序本文翻译自 2016 年的一篇英文博客 The Definitive Guide to Linux SystemCalls。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。以下是译文。太长不读(TL;DR)本文介绍了 Linux 程序是如何调用内核函数的。包括: 几种发起系统调用的方式 如何手动写汇编代码发起系统调用(包括示例) 系统调用的内核入口(entry points)和内核出口(exit points) glibc wrappers 系统调用相关的内核 bug 其他更多内容 译者序...

  • 2019-01-27

    bcc/ebpf 安装及示例(2019)

    eBPF 是 Linux 内核近几年最为引人注目的特性之一,通过一个内核内置的字节码虚拟机,完成数据包过滤、调用栈跟踪、耗时统计、热点分析等等高级功能,是 Linux 系统和 Linux 应用的功能和性能分析利器。较为完整的 eBPF 介绍可参见这篇内核文档。eBPF 程序使用 C 语言的一个子集(restricted C)编写,然后通过 LLVM 编译成字节码注入到内核执行。bcc是 eBPF 的一个外围工具集,使得 “编写 BPF 代码-编译成字节码-注入内核-获取结果-展示” 整个过程更加便捷。下面我们将搭建一个基础环境,...