2022年美团技术年货 合辑
用,这是极其困难的事情。此时,eBPF 出现,它以较小的子系统改动,保障了系统 内核的稳定,还具备实时动态加载的特性,能将业务逻辑加载到内核,实现热更新的 动态执行。 eBPF 由 BPF 发 展 而 来,BPF 全 称 Berkeley Packet Filter,1992 年 由 Steven McCanne 和 Van Jacobson 提出,1997 年引入 Linux Kernel Storage、Network 等与内核交互之间; 2. 也可以在内核中的功能模块交互之间; 3. 又可以在内核态与用户态交互之间; 4. 更可以在用户态进程空间。 eBPF 的功能覆盖 XDP、TC、Probe、Socket 等,每个功能点都能实现内核态的 篡改行为,从而使得用户态完全致盲,哪怕是基于内核模块的 HIDS,一样无法感知 到这些行为。 基于 eBPF 的功能函数,从业 技术上,会如何实现呢? XDP/TC 层修改 TCP 包 为了让后门隐藏的更好,最好是不开进程,不监听端口(当前部分我们只讨论网络层 隐藏)。而 eBPF 技术在 XDP、TC、Socket 等内核层的功能,能够实现流量信息修 改,这些功能常被应用在 L3、L4 的网络负载均衡上。比如 Cilium 的网络策略都是 基于 eBPF XDP 实现。eBPF hook 了 XDP 点后,更改了 TCP0 码力 | 1356 页 | 45.90 MB | 1 年前3Cilium的网络加速秘诀
处实现数据包转发、负载均衡、过滤 • xdp 。cilium在内核 XDP 处实现数据包的转发、负载均衡、过滤 • cgroup_sock_addr 。cilium在 cgroup 中实现对service解析 • sock_ops + sk_msg。记录本地应用之间通信的socket,实现本地数据包的加速转发 加速同节点pod间通信 cilium 使用 eBPF 程序,借助 bpf_redirect() 或 bpf_redirect_peer() iptables 等 技术,降低了访 问延时。例如在相同环境下,service 数量达到3K,kube-proxy iptables下 的的延时为0.6ms,而cilium的延时为 0.3ms XDP 加速南北向 nodePort 访问 cilium 借助 eBPF 程序 ,能快速完 成 nodePort 、 LoadBalancer service 的解析和转发,其转发性能能比肩 DPDK 压力下,节省了30%的CPU利用率 2. XDP的性能上限极高,可能是 TC 的 10 倍左右 raw PREROUTING mangle PREROUTING nat PREROUTING tc ingress conntrack filter FORWARD mangle POSTROUING nat POSTROUING tc egress routing XDP kernel0 码力 | 14 页 | 11.97 MB | 1 年前3openEuler 24.03 LTS 技术白皮书
openEuler 24.03 LTS 技术白皮书 • XDP multi-buffer 支持:允许 Jumbo frame 场景下使用 XDP 提升性能。 • Thread-based NAPI polling 支持:允许网卡 NAPI polling 移到内核线程处理,使 CPU 调度器可以合理调度提升性能。 • bpf新增kfunc特性:允许bpf通过符号方式直接调用内核和ko提供的函数,ko可 以通过注册kfunc的方式来动态提供bpf接口。 • bpf 新增 dynamic pointer 特性:在 bpf 中引用动态分配的内存,此前 bpf 使用的内存必须在 verifier 检查时已静态指定。 • perf 新增特性支持:新增支持 ARM SPE 事件的获取;支持用户态直接读取 pmu counter;显示锁的竞争情况;减少生成的 pmu 数据,提升平均处理时间。 openEuler 防止文件系统损坏。 • riscv bpf 新特性支持:支持 trampoline 特性、Zbb 扩展特性、kfunc 支持特性、cpu-v4 指令特性和原子操作指令特性等,扩 展了 bpf 的能力。 • arm64 bpf 新特性支持:新增 bpf 栈变量 ldr/str 优化、pac 支持、trampoline 支持与 cpuv4 指令支持等特性,扩展了 bpf 的能力。 • 内存可靠性分级0 码力 | 45 页 | 6.18 MB | 1 年前305. 李枫 用于 Linux 内核调试的 Python
2) eBPF 2.1 BPF (Berkeley Packet Filter, aka cBPF) https://en.wikipedia.org/wiki/Berkeley_Packet_Filter http://www.tcpdump.org/papers/bpf-usenix93.pdf History is it https://blog.cloudflare.com/bpf-the-forgotten-bytecode/ … Source: net/brendangregg/kernel-recipes-2017-performance-analysis-with-bpf Workflow o Source: ebpfbasics-190611051559.pdf 2.2 eBPF (extended BPF) since Linux Kernel v3.15 and ongoing0 码力 | 63 页 | 4.07 MB | 1 年前32.2.1通过Golang+eBPF实现无侵入应用可观测
安全(内核verifier机制) • 动态可编程(无需重启) eBPF程序加载和校验 02. eBPF程序加载和校验 eBPF事件驱动 Kprobe/Kretprobe Uprobe/Uretprobe XDP Tracepoint Perf 01. eBPF事件驱动 eBPF在云原生场景下的应用 第二部分 网络加速 01.网络加速 From:https://istio.io/latest/ bcc libbpf + bpf + core 编程 bcc 依靠运行时汇编,将整个大型LLVM/Clang 库带入并嵌入其中 编译过程中资源用量大,对Cpu、Mem有要求 依赖内核的头包 bpf 程序跟其他的用户空间的程序没有太大区别 编译成二进制文件,可以适应不同运行环境 libbpf 扮演bpf程序装载机角色 开发人员只需要关注bpf程序的正确性和性能,不 return nil } bpf2go 01. 副标题 //go:generate go run github.com/cilium/ebpf/cmd/bpf2go -cc clang -cflags $BPF_CFLAGS -type insp_pl_event_t - type insp_pl_metric_t bpf ../../../../bpf/packetloss.c --0 码力 | 29 页 | 3.83 MB | 1 年前3openEuler 21.09 技术白皮书
Path (XDP): An eBPF-based high performance, programmable network data path that processes data before network packets enter the network protocol stack to improve network performance. XDP works0 码力 | 36 页 | 3.40 MB | 1 年前3严选 ServiceMesh 实践
策略执行的替代品, Istio 的 RBAC 也是可以满足一部分功能的,比如服务白名 单我们就是通过 RBAC 来实现21/24 规划与展望 /0422/24 性能优化方向 • 方案1: 采用 eBPF/xDP(sockops),优化路径为 SVC <-> Envoy,延迟性能提升10-20%。 Envoy 部署方式 per-pod,跟社区方向一致,也是目前严选采用的部署方案。 • 方案2: 采用 DPDK+Fstack0 码力 | 25 页 | 2.07 MB | 5 月前3蚂蚁金服网络代理演进之路
级(QUIC,MQTT,国密), 云原生 再启程 03前世 F5 BigIP Netscaler自研四层网络代理 2011 2014 2018 未来 Ø 全面使用DPDK技术重构 Ø EBPF,XDP Ø 可编程交换芯片(P4语言) Ø 四层负载均衡-IPVS Ø NAT网关蚂蚁七层网络代理 Google Spanner?蚂蚁七层网络接入代理 Spanner蚂蚁七层网络接入代理 AGNA0 码力 | 46 页 | 19.93 MB | 5 月前3openEuler 21.09 技术白皮书
验 证其内容,抵御 ROP/JOP 攻击。 支持 BTI (Branch Target Identifiers) 特性: 对间接跳转的目标进行限制。与 PA 结合使用 减少控制流攻击。 XDP(eXpress Data Path)支持:基于 ebpf 的 一种高性能、用户可编程的网络数据包传输路径, 在网络报文还未进入网络协议栈之前就对数据进行 处理,提升网络性能。可用于 DDOS0 码力 | 35 页 | 3.72 MB | 1 年前3openEuler 22.03-LTS 技术白皮书
之前验证其内容,抵 御 ROP/JOP 攻击。 • 支持 BTI(Branch Target Identifiers)特性:对间接跳转的目标进行限制。与 PA 结合使用减少控制流攻击。 • XDP(eXpress Data Path)支持:基于 ebpf 的一种高性能、用户可编程的网络数据包传输路径,在网络报文还未 进入网络协议栈之前就对数据进行处理,提升网络性能。可用于 DDOS 防御、防火墙、网络0 码力 | 17 页 | 6.52 MB | 1 年前3
共 33 条
- 1
- 2
- 3
- 4