新书速递
导读:BPF通过一种软件定义的方式,将内核的行为和数据暴露给用户空间,开发者可以通过在用户空间编写BPF程序,加载到内核空间执行,进而实现对内核行为的灵活管理和控制。
在计算机系统中,包过滤器通常有一个特定的用途,那就是提供给应用程序来监控系统的网络与内核运行的相关信息。这些监控程序对于系统的开发者、运维者、或者是安全管理者,都有着重要的意义。
有了更加细粒度的网络数据和内核运行数据,对于开发者来说,就可以根据当前系统的运行情况,合理的优化程序,提高程序的性能同时降低资源开销;对于系统运维者来说,能够拿到精确全面的系统运行数据,可以更好的对系统进行监控,保证系统的可靠性与高可用性;对于安全管理者来说,可以从这些网络和内核行为中,发现异常,进而在攻击行为发生的早期,发现攻击并且能够快速的进行响应和修复。
BPF(Berkeley Packet Filter)就是这样的一种包过滤器,从其诞生之初,就引起了人们的广泛关注与应用,尤其是近年来,随着微服务和云原生的发展和落地,BPF更是成为了内核开发者最受追捧的技术之一。
可观测性是一种新兴的实践,尝试从不同角度来解决问题。可观测性被定义成一种能力,可以对给定系统提出的任意问题,寻求到复杂的答案。可观测性、日志和度量聚合三者的主要区别是收集的数据内容。如果可观测性的实践需要随时随地回答任意问题,那么唯一可行的方式就是收集系统中生成的所有数据,在需要回答问题的时候聚合收集到的数据。
Linux容器是Linux内核实现进程隔离和管理进程的一系列特性的抽象。传统上内核负责资源管理,并提供任务隔离和安全。在Linux系统中,容器基于内核的命名空间和cgroups特性。命名空间将任务彼此隔离。在一个命名空间内,你仿佛看不到系统内其他任务在运行。cgroups是提供资源管理的组件。从操作的角度看,cgroups对资源使用提供了细粒度控制,例如,CPU、磁盘I/O、网络等。在过去的十年里,随着Linux容器的普及,软件工程师设计大型分布式系统和计算平台的方式已经发生变化。多租户计算平台已经完全依赖于内核中的这些特性。
今天给大家介绍一本讲解Linux内核观测技术BPF的第一本书:《Linux内核观测技术BPF》。本书将详细地介绍BPF架构的每个组件,你可以学习使用BPF的扩展性以及数据共享机制。同时,本书还会提供一些具体示例,涉及栈跟踪分析、网络过滤和运行时隔离等内容。
内容简介
本书是一本面向系统工程师的实践指南,皆在帮助他们获得Linux内核中BPF虚拟机的专业知识。
通过本书,你不仅可以深入了解BPF程序的生命周期,熟悉日常工作所需的基本概念,增强有关性能优化、网络和安全方面的知识。
还可以学习如何编写观测和修改内核行为的应用程序,以及通过代码注入的方式对内核事件进行监控、跟踪和安全观测等内容。
同时,本书展示了相关的C、Go和Python代码示例。
本书将BPD知识系统的汇总在一起,使BPF爱好者能系统地学习这一技术。
译者简介
范彬
在容器技术领域工作多年,潜心研究,对Docker、Kubernetes技术有丰富的实践经验,一直保持热情和努力去研究新的内核和网络等方面的技术。现任中国电信天翼云容器组组长,带领团队研发了具有100%自主知识产权的天翼云容器引擎平台,并在金融等多个行业得到成功应用。
狄卫华
趣头条资深架构师,拥有近15年的软件研发和架构经验,专注于高并发、微服务架构和云原生技术,具有丰富的大型软件架构设计和实施落地经验;熟悉Linux内核技术和网络、擅长性能调优和问题排查定位;熟悉Kubernetes 和Docker 技术,有丰富的容器化实践经验。
作者简介
大卫·卡拉维拉(David Calavera)
是Netlify的CTO,曾是Docker的维护者以及Runc、Go和BCC工具及其他开源项目的贡献者。他构建和促进了Docker插件生态系统,因Docker项目的工作而闻名。David非常喜欢使用火焰图和进行性能优化。
洛伦佐·丰塔纳(Lorenzo Fontana)
是Sysdig开源团队的成员,主要负责CNCF(云本地计算基础)的Falco项目,该项目通过内核模块和eBPF实现了容器运行时安全和异常检测功能。他对分布式系统、软件定义网络、Linux内核和性能分析充满热情。
目录
●第1章 引言9
1.1 BPF的历史10
1.2 架构12
1.3 小结13
●第2章 运行第一个BPF程序14
2.1 编写BPF程序14
2.2 BPF程序类型17
2.3 BPF验证器24
2.4 BPF类型格式26
2.5 BPF尾部调用27
2.6 小结27
●第3章 BPF映射28
3.1 创建BPF映射28
3.2 使用BPF映射30
3.3 BPF映射类型40
3.4 BPF虚拟文件系统52
3.5 小结55
●第4章 BPF跟踪56
4.1 探针57
4.2 跟踪数据可视化71
4.3 小结81
●第5章 BPF工具82
5.1 BPFTool82
5.2 BPFTrace92
5.3 kubectl-trace97
5.4 eBPF Exporter98
5.5 小结100
●第6章 Linux网络和BPF102
6.1 BPF和数据包过滤103
6.2 基于BPF的流量控制分类器115
6.3 小结125
●第7章 XDP126
7.1 XDP程序概述127
7.2 XDP和BCC138
7.3 测试XDP程序141
7.4 XDP用户案例147
7.5 小结149
●第8章 Linux内核安全、能力和Seccomp150
8.1 能力150
8.2 Seccomp154
8.3 BPF的LSM钩子162
8.4 小结163
●第9章 真实的用户案例164
9.1 Sysdig eBPF上帝视角164
9.2 Flowmill167
上下滑动查看
点击链接了解详情并购买
更多精彩回顾
书讯 |华章计算机拍了拍你,并送来了8月书单(下)
书讯 | 华章计算机拍了拍你,并送来了8月书单(上)
上新 | 三个男人一台戏,为云原生应用和OpenShift写了一本书
书单 | 《天才引导的历程》| 西安交通大学送给准大一新生的礼物
干货 | 机器人干活,我坐一边喝茶——聊聊最近爆火的RPA
收藏 | 揭秘阿里巴巴的客群画像
点击阅读原文购买