0%

随着分布式系统和云计算的普及,网络越来越成为计算的瓶颈,为了提升在网络性能,各种方案被提出来,包括 DPDK、RDMA、SmartNIC 等方案,随着 eBPF 的逐渐成熟,它也越来越多的被应用到改善网络性能,从而在云计算环境带来更大的收益。在各种网络方案中,Ciilum 是一个基于 eBPF 的性能优异的方案,覆盖了分布式系统的绝大多数场景。本文将介绍 Ciilum 通信的整个链路,如果你还不了解 eBPF,你可以先看看我的 这篇博客

阅读全文 »

使用 BPF 的内核子系统也是 BPF 基础设施的一部分,像网络子系统、追踪子系统都可以 attch BPF 程序,这篇博客 中讲述了 tc 和 XDP 在 Cilium 整个数据链路的位置。在 eBPF XDP 子系统 中介绍了 XDP 子系统,网络包在还未进入网络协议栈之前就处理,带来巨大的性能提升。也正是因为协议栈此时还没有从包中提取出元数据,因此 XDP BPF 程序无法利用这些元数据。与 XDP 相比,tc BPF 程序在内核栈中稍后面的一些地方执行,因此它们可以访问更多的元数据和一 些核心的内核功能。

阅读全文 »

使用 BPF 的内核子系统也是 BPF 基础设施的一部分,像网络子系统、追踪子系统都可以 attch BPF 程序,这篇博客 中讲述了 tc 和 XDP 在 Cilium 整个数据链路的位置。XDP 为 Linux 内核提供了高性能、可编程的网络数据路径,XDP BPF 程序会被 attach 到网络驱动的最早阶段,驱动收到包之后就会触发 BPF 程序的执行。由于网络包在还未进入网络协议栈之前就处理,它给 Linux网络带来了巨大的性能提升,甚至性能比DPDK还要高。

阅读全文 »

eBPF Map 是用户空间和内核空间进行数据交换、信息传递的桥梁,它以 key/value 方式将数据存储在内核中,可以被任何知道它们的BPF程序访问。在内核空间的程序创建 BPF Map 并返回对应的 文件描述符,在用户空间运行的程序就可以通过这个文件描述符来访问并操作BPF Map。eBPF Map 支持多种数据结构类型,在 上一篇博客 中已经简单介绍过,本文将通过代码实例展示其使用方法,所有代码可以在我的 Github 中找到。

阅读全文 »

eBPF 源于 BPF,本质上是处于内核中的一个高效与灵活的虚类虚拟机组件,以一种安全的方式在许多内核 hook 点执行字节码。BPF 最初的目的是用于高效网络报文过滤,经过重新设计,eBPF 不再局限于网络协议栈,已经成为内核顶级的子系统,演进为一个通用执行引擎。开发者可基于 eBPF 开发性能分析工具、软件定义网络、安全等诸多场景。本文将介绍 eBPF 的前世今生,并构建一个 eBPF 环境进行开发实践,文中所有的代码可以在我的 Github 中找到。

阅读全文 »

在 Linux 内核 4.0 前,Linux 内核并没有对硬件交换模块的支持,尽管在 bridge 实现了一个软网桥,所有的交换都是通过 CPU 实现的,但是并没有实现对于真正硬件交换机的支持,通用接口层面一直没有合理的解决方案。Linux 4.0 引入了 switchdev 框架,全称是 Ethernet switch device driver model,它代表一类具有「交换」能力芯片的多网口设备的抽象,使得内核可以将「交换」功能 offload 到硬件上。

阅读全文 »

kubeadm 是一种工具,旨在为创建 Kubernetes 集群提供最佳实践的快速路径,它以用户友好的方式执行必要的操作,以使可以最低限度的可行,安全的启动并运行群集。只需将kubeadm,kubeletkubectl安装到服务器,其他核心组件以容器化方式快速部署。

阅读全文 »

RDMA,即 Remote Direct Memory Access,是一种绕过远程主机 OS kernel 访问其内存中数据的技术,概念源自于 DMA 技术。在 DMA 技术中,外部设备(PCIe 设备)能够绕过 CPU 直接访问 host memory;而 RDMA 则是指外部设备能够绕过 CPU,不仅可以访问本地主机的内存,还能够访问另一台主机上的用户态内存。由于不经过操作系统,不仅节省了大量 CPU 资源,同样也提高了系统吞吐量降低了系统的网络通信延迟,在高性能计算和深度学习训练中得到了广泛的应用。本文将介绍 RDMA 的架构与原理,并讲解 RDMA 网络使用方法,测试代码在 Github 上可以找到。

阅读全文 »

SR-IOV 全称 Single Root I/O Virtualization,是 Intel 在 2007年提出的一种基于硬件的虚拟化解决方案。在虚拟化场景中,CPU 与内存是最先解决的,但是 I/O 设备一直没有很好的解决办法,Intel 有 VT-d(Virtualization Technology for Directed I/O)可以将物理服务器的 PCIe 设备直接提供给虚拟机使用,也就是我们常说的 Passthrough,但是直通面临一个问题是 PCIe 设备只能给一个虚拟机使用,其他虚拟机就只能干瞪眼,这肯定是不行的,所以有了 SR-IOV,一个物理设备可以虚拟出多个虚拟设备给虚拟机使用。

阅读全文 »