Recent Posts
- 
        2019-02-08
        Cilium Code Walk Through: CNI Create NetworkThis 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 代码-编译成字节码-注入内核-获取结果-展示” 整个过程更加便捷。下面我们将搭建一个基础环境,... 
- 
        2019-01-25
        Cilium Cheat SheetTL;DRCilium is an eBPF-based open sourcesoftware. It provides transparent network connectivity, L3-L7 security, andloadbalancing between application workloads [1].This post serves as a cheat sheet of cilium 1.5.0 CLIs. Note that command setvaries among different cil... 
- 
        2018-12-17
        [译] Linux 网络栈监控和调优:发送数据(2017)译者序本文翻译自 2017 年的一篇英文博客Monitoring and Tuning the Linux Networking Stack: Sending Data。如果能看懂英文,建议阅读原文,或者和本文对照看。这篇文章写的是 “Linux networking stack”,这里的 ”stack“ 不仅仅是内核协议栈,而是包括内核协议栈在内的,从应用程序通过系统调用写数据到 socket,到数据被组织成一个或多个数据包最终被物理网卡发出去的整个路径。所以文章有三方面,交织在一起,看起来非常累(但是很过瘾): 原理及代码... 
- 
        2018-12-16
        DNS 问题分析示例(2019)1 DNS 基础知识互联网基于 TCP/IP 协议。为了方便管理网络内的主机,整个互联网分为若干个域(domain),每个域又可以再分为若干个子域,例如,.com,.org,.edu 都是顶级域,而google.com 是.com 下面的子域。网络中的任意一台主机(host)都会属于某个域,并且有自己的名字,称为主机名(hostname)。例如 example.com 就是.com 域中一台主机名为 example.com(或example,hostname 和 domain name 的区别,见这里)的主机。域名/主机名是为了... 
- 
        2018-12-14
        tcpdump/wireshark 抓包及分析(2019)本文将展示如何使用 tcpdump 抓包,以及如何用 tcpdump 和 wireshark 分析网络流量。文中的例子比较简单,适合作为入门参考。 1 基础环境准备 1.1 Pull Docker 镜像 1.2 运行容器 1.3 安装 tcpdump 2 HTTP/TCP 抓包 2.1 HTTP 请求:下载测试页面 2.2 抓包:打到标准输出 2.3 抓包:存文件 3 流量分析: tcpdump 3.1 每... 
- 
        2018-12-05
        [译] Linux 网络栈监控和调优:接收数据(2016)注意:本文内容已经太老,基于 kernel 3.13 和 1Gbps 网卡驱动 igb,建议移步 kernel 5.10 + 25Gbps 驱动版: Linux 网络栈原理、监控与调优:前言 Linux 中断(IRQ/softirq)基础:原理及内核实现 Linux 网络栈接收数据(RX):原理及内核实现 Monitoring Linux Network Stack Linux 网络栈接收数据(RX):配置调优译者序本文翻译自 2016 年的一篇英文博客Monitoring and Tuning the Linux N...