《云原生网络数据面可观测性最佳实践》—— 一、容器网络内核原理——4.eBPF技术

简介: 《云原生网络数据面可观测性最佳实践》—— 一、容器网络内核原理——4.eBPF技术

eBPF是Linux内核提供可以在不借助内核模块的场景下,对内核进行观测,注入来实现高阶功能的机制。

 

eBPF技术作为内核当前最为突破性的技术,具有轻量级,无侵入的特性,在排查网络问题上可以提供很多帮助,在当前的eBPF生态中,bpftrace和bcc都提供了很多出色的功能协助我们进行观测,本章节会简单介绍eBPF的实现原理以及eBPF在云原生场景下的应用的简单介绍。

 

eBPF能够在实现接近内核模块的功能的基础上,具备上述的有点,得益于内核为eBPF提供的多个改变:

 

提供了高效jit,eBPF代码在内核中会被编译为机器码从而向真正内核代码一样被执行

bpf()系统调用和map机制以及bpf helper辅助函数提供,让内核操作更加便捷

内核在高频通用代码中提供了安全注入点,让eBPF程序只需要关注于代码逻辑

 

下图是eBPF程序的生命流程概述。

 image.png

 

对于一个eBPF程序来说,他的完整的生命流程包括:

 

使用eBPF兼容C语言子集进行代码开发,然后通过clang进行编译

通过各种开发框架进行初步检查,然后通过bpf()系统调用进行加载,在这个过程中会完成map创建和替换以及符号重定位

加载到内核过程中,内核verifier会对程序进行校验,如果通过了校验,则可以被JIT编译为字节码然后被添加到指定位置

当内核代码执行到某个位置,内核会自动执行已经完成加载和attacheBPF程序,例如socket读取和写入会触发sockops这个执行点eBPF程序执行,完成流量统计或者劫持动作

 

eBPF在在安全,网络和可观测行上都有很广泛的应用,也诞生了许多影响力较大的开源项目。

 image.png

 

Linux内核为提升可观测性而提供了多个可执行的点,我们常用的包括:

kprobe,kretprobe,fentry,fexit 通过执行到某个函数是,触发INT3中断,使得eBPF程序可以在进程现场状态下观测到信息

tracepoint 内核debugfs子系统提供可供执行点,内核在固定tracepoint会执行注册eBPF程序

 

我们可以通过一些开源的项目很快体验到eBPF的价值,例如通过bpftrace,我们能够很快看到所有经过内核的数据报文在netfilter中的返回值:

bpftrace -e 'kretprobe:nf_hook_slow {printf("%d %s\n",retval,comm)}'

 

此外,eBPF在容器网络中也扮演着越来越关键的角色,包括cilium,terway,calico等多个知名的网络插件都开始使用eBPF来取代传统的netfilter框架等机制的作用,达到更加高效的抽象。

相关文章
|
17天前
|
安全 测试技术 虚拟化
VMware-三种网络模式原理
本文介绍了虚拟机三种常见网络模式(桥接模式、NAT模式、仅主机模式)的工作原理与适用场景。桥接模式让虚拟机如同独立设备接入局域网;NAT模式共享主机IP,适合大多数WiFi环境;仅主机模式则构建封闭的内部网络,适用于测试环境。内容简明易懂,便于理解不同模式的优缺点与应用场景。
131 0
|
15天前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
228 11
|
27天前
|
机器学习/深度学习 算法 搜索推荐
从零开始构建图注意力网络:GAT算法原理与数值实现详解
本文详细解析了图注意力网络(GAT)的算法原理和实现过程。GAT通过引入注意力机制解决了图卷积网络(GCN)中所有邻居节点贡献相等的局限性,让模型能够自动学习不同邻居的重要性权重。
118 0
从零开始构建图注意力网络:GAT算法原理与数值实现详解
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
零基础入门CNN:聚AI卷积神经网络核心原理与工业级实战指南
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉的核心技术。本文详解CNN的卷积操作、架构设计、超参数调优及感受野计算,结合代码示例展示其在图像分类、目标检测等领域的应用价值。
181 7
|
5月前
|
监控 应用服务中间件 Linux
掌握并发模型:深度揭露网络IO复用并发模型的原理。
总结,网络 I/O 复用并发模型通过实现非阻塞 I/O、引入 I/O 复用技术如 select、poll 和 epoll,以及采用 Reactor 模式等技巧,为多任务并发提供了有效的解决方案。这样的模型有效提高了系统资源利用率,以及保证了并发任务的高效执行。在现实中,这种模型在许多网络应用程序和分布式系统中都取得了很好的应用成果。
132 35
|
5月前
|
机器学习/深度学习 算法 测试技术
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
本文探讨了基于图的重排序方法在信息检索领域的应用与前景。传统两阶段检索架构中,初始检索速度快但结果可能含噪声,重排序阶段通过强大语言模型提升精度,但仍面临复杂需求挑战
139 0
图神经网络在信息检索重排序中的应用:原理、架构与Python代码解析
|
4月前
|
安全 Java 程序员
分析Muduo网络库源码中的TcpServer组件工作原理
简言之,TcpServer 在 Muduo 中的角色,就是一位终极交通指挥员,它利用现代计算机网络的魔法,确保数据如同车辆一般,在信息高速公路上自由、安全、高效地流动。
45 0
|
6月前
|
运维 Cloud Native 测试技术
极氪汽车云原生架构落地实践
随着极氪数字业务的飞速发展,背后的 IT 技术也在不断更新迭代。极氪极为重视客户对服务的体验,并将系统稳定性、业务功能的迭代效率、问题的快速定位和解决视为构建核心竞争力的基石。
|
10月前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
221 13
|
5月前
|
人工智能 Cloud Native 容灾
深圳农商银行三代核心系统全面投产 以云原生架构筑牢数字化转型基石
深圳农商银行完成第三代核心系统全面上云,日均交易超3000万笔,峰值处理效率提升2倍以上。扎根深圳70余年,与阿里云共建“两地三中心”分布式云平台,实现高可用体系及全栈护航。此次云原生转型为行业提供可复制样本,未来将深化云计算与AI合作,推动普惠金融服务升级。
389 17