BPF 二进制文件:BTF,CO-RE 和 BPF 性能工具的未来【译】

作者: Brendan Gregg 1. 简述 BTF 和 CO-RE 这两项新技术为 BPF 成为价值十亿美元的产业铺平了道路。目前,有许多 BPF(eBPF)初创公司正在构建网络,安全性和性能产品(并且更多未浮出水面的),但是要求客户安装 LLVM,Clang 和内核头文件依赖(可能消耗超过100 MB的存储空间)是一个额外的负担。 BTF 和 CO-RE 在……

阅读全文

【BPF入门系列-6】BPF 环形缓冲区

译者:范彬 原文地址:BPF ring buffer 当前 perf 缓冲区已成为从内核向用户空间发送数据的标准。BPF 环形缓冲区是一个新的BPF数据结构,解决了 BPF perf 缓冲区内存效率和事件重新排序的问题,同时性能达到或超过了 perf 缓冲区。 它既提供了与 perfbuf 兼容的功能,可轻松进行移植,又提供了具有更好可用性的新的 reserve / commit API……

阅读全文

[译] BPF 可移植性和 CO-RE(一次编译,到处运行)【转载】

译者序 译者: 赵亚楠 原文地址: http://arthurchiao.art/blog/bpf-portability-and-co-re-zh/ 本文翻译自 2020 年 Facebook 的一篇博客: BPF Portability and CO-RE, 作者 Andrii Nakryiko。 关于 BPF CO-RE 的目标,引用文中的一段总结就是: 作为一种简单的方式,帮助 BPF 开发者解决简单的移植性问题(例如读取结构体的字段),并且 作为一种不是最优,但可用的方式,帮助 BPF 开发者 解决复杂的移植……

阅读全文

初识容器安全项目 Falco

1. 为什么需要 Falco? 容器化普及进行的如火如荼,但是无论是公有云环境还是企业内部的容器化环境,都有可能会面对部分异常的用户行为,有些是有意为之,有些可能是无意之失,但是都可能给容器底层的主机造成安全的隐患。 容器的工作模式是共享宿主机内核,从出道以来就面临着各种安全的问题,比如 Fork……

阅读全文

使用 GDB + Qemu 调试 Linux 内核

1. 概述 在某些情况下,我们需要对于内核中的流程进行分析,虽然通过 BPF 的技术可以对于函数传入的参数和返回结果进行展示,但是在流程的调试上还是不如直接 GDB 单步调试来的直接。本文采用的编译方式如下,在一台 16 核 CentOS 7.7 的机器上进行内核源码相关的编译(主要是考虑编译效率),调试则是基于 VirtualBox 的 Ubuntu 20.04 系统中……

阅读全文

【BPF入门系列-5】基于 eBPF 实现容器运行时安全

本文作者: 范彬 1 前言 随着容器技术的发展,越来越多业务甚至核心业务开始采用这一轻量级虚拟化方案。作为一项依然处于发展阶段的新技术,容器的安全性在不断提高,也在不断地受到挑战。天翼云云容器引擎于去年11月底上线,目前已经在22个自研资源池部署上线。天翼云云容器引擎使用 ebpf 技术实现了细粒……

阅读全文

【BPF网络篇系列-2】容器网络延时之 ipvs 定时器篇

1. 前言 趣头条的容器化已经开展了一年有余,累计完成了近 1000 个服务的容器化工作,微服务集群的规模也达到了千台以上的规模。随着容器化服务数量和集群规模的不断增大,除了常规的 API Server 参数优化、Scheduler 优化等常规优化外,近期我们还碰到了 kubernetes 底层负载均衡 ipvs 模块导致的网络抖动问题,在此把整个……

阅读全文

kpatch 热修 ipvs estimation_timer 内核延时问题

1. kpatch 是什么? livepatch 实时或动态内核修补允许为正在运行的内核提供功能增强,无需重新启动系统,这对于某些在线系统修复安全漏洞非常有帮助。 Kpatch 是给 Linux 内核 livepatch 的工具,由 Redhat 公司出品。最早出现的打热补丁工具是 Ksplice。但是 Ksplice 被 Oracle 收购后,一些发行版生产商就不得不开发自己的热补丁工具,分别是 Redhat 的 Kpatch 和……

阅读全文

【BPF网络篇系列-1】k8s api-server slb 异常流量定位分析

1. k8s master 的流量整体架构 最近 k8s 集群新增不少服务,使得集群的 Pod 数量激增,某天接受到线上 3 台 Master 前置 SLB 流量丢失的告警(SLB 为阿里 ACK Master 默认的 SLB,默认 4 层 SLB,监听端口 6443),通过 SLB 控制台查看,在 8:00 - 9:00 的时刻,整个集群的出口流量带宽已经超过 5G,而阿里的 SLB 流量带宽最大为 5Gbps,……

阅读全文

【Linux负载系列-2】Linux CPU 使用率低 Load 负载高场景测试

1. Linux Load 负载高 在 Linux 系统上平均负载包括了运行的进程和正在等待运行的进程,也包括了不可中断状态执行磁盘 I/O 的进程( Uninterruptible Sleep))。这意味着在 Linux 上不能单用 CPU 余量或者饱和度,因为不能单从这个值来推断 CPU 或者磁盘负载。 Linux 系统中如果等待 IO 的进程多了,那么也会导致系统的平均负载升高,则是因为平均负……

阅读全文