当前位置: 首页 > 软件库 > 其他开源 > Linux内核 >

L3AF

轻量级 eBPF 项目
授权协议 Apache-2.0
开发语言 Google Go SHELL
所属分类 其他开源、 Linux内核
软件类型 开源软件
地区 不详
投 递 者 安高翰
操作系统 Linux
开源组织
适用人群 未知
 软件概览

L3AF 是一个使用了 eBPF 及相关技术提供“内核函数即服务”的项目,由零售巨头沃尔玛开源。它能够在由 Go 语言编写的高级控制平面的帮助下,提供完整的 eBPF 网络应用程序的生命周期管理,其中包括基于 eBPF 的网络和可观察性解决方案。

L3AF 提供了一个 L3AF Development Environment 开发环境,该环境是一个 Vagrant 虚拟机环境,允许用户开发、测试或只是试用 L3AF。

概述

L3AF 开发环境自动化设置了一个虚拟机,其中包含:

  • 构建 L3AFD 和内核函数所需的依赖项(即 eBPF 程序)
  • 可以将测试流量发送到的简单 Web 服务器(用 Go 编写)
  • 用于衡量 Prometheus 和 Grafana 的指标
  • 本地内核函数存储库(简单的 Python 文件服务器)

主机可以通过用户配置的端口访问虚拟机上的各种服务。

这是一个视觉概述:

先决条件

  • Vagrant
  • 虚拟机
  • L3AFD 源代码
  • curl
  • hey 或任何 HTTP 负载生成器
  • 网络浏览器

  •  
  • DPDK-20.11.3版本使用meson和ninja进行编译安装,过程可参考之前的一篇DPDK-20.11.3在CentOS8.4上编译运行文章,按照这个步骤,编译安装完成之后,可以发现build/app和build/example目录下已经生成了测试用例可执行程序。 这时就可以根据各个用例启动命令去进行启动执行了。 但是,如果想要在测试用例中加些打印信息该怎么办呢?下面就简单介绍一下,如何对d

  • 1.初始化L3GD20端口配置。将端口配置为SPI通信接口。 单片机端口初始化包括I/O端口,I/O端口spi系统时钟。 以STM32F303为例配置端口如下: static void L3GD20_LowLevel_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_AP

  • 1.初始化L3GD20端口配置。将端口配置为SPI通信接口。 单片机端口初始化包括I/O端口,I/O端口spi系统时钟。 以STM32F303为例配置端口如下: static void L3GD20_LowLevel_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_AP

  • 一般来说L3中就两个设置,可不要小看interface_drive,设置错就会导致问题 interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver接口驱动设置 这个设置错误,启动服务是不会报错的,但是服务真的启动了吗?? 启动服务:看似没有问题 [root@controller ~]# systemctl resta

  • dpdk_18_05 应用笔记: l3fwd 例程 查询网卡的 pci 地址 机器上有 4 个的 I350 网卡。 现在只是使用其中01:00.0和01:00.1两个网卡来绑定到 DPDK 作为测试。 lspci | grep Eth > 01:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (

  • 容器是 Docker 又一核心概念。 简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。 本文将具体介绍如何来管理一个容器,包括创建、启动和停止等。 启动 启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(exited)的容器重新启动。 因为 Docker

  • ipvlan 三种模式,l2、l3、l3s,前两种网上资料很多,但第三种却很少,自己看了下代码记录一下。 为什么要看ipvlan?它特别适合做多租户nat场景,这种场景下,用户的内网VPC地址网段可能是重叠的,需要使用net namespace、vrf等手段隔离路由,但通常公网网卡和公网网关就一个,且网关地址和用户公网地址通常不是一个网段的,也就是说不能放到一个二层中。但使用ipvlan l3 m

 相关资料
  • 主要内容:使用普通函数创建 goroutine,使用匿名函数创建goroutine在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。开发人员需要在线程数量和 CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进行处理,同时避免多个任务频繁地在线程间切换执行而损失效率。 虽然,线程池为逻辑编写者提供了线程分配的抽象机制。但是,如果面对随时随地可能发生的并发和线程处理需求,线程池就不是非常直观和方便了。能否

  • Jenkins Pipeline插件有一个称为“轻量级签出”的功能,其中主服务器仅从repo中提取Jenkinsfile,而不是整个repo。配置屏幕中有一个相应的复选框。我想在多分支管道中进行轻量级签出,但我在多分支配置屏幕中没有看到复选框。有什么想法如何实现这一点吗?我注意到一些关闭的问题表明此功能可用,但我无法找到任何有关如何实现它的细节。 相关资料: https://issues.jenk

  • 问题内容: JPanel和JFrame有什么区别,以及与轻量级,重量级的关系? 问题答案: JPanel是允许将多个UI组件放在一起的容器。JFrame是使用Swing编写的窗口。 所有的Swing组件都是所谓的“轻型”组件,因为它们是用Java编写的。例如,如果您运行Swing应用程序并尝试使用UI分析工具(例如Windows中的WinSpy)对其进行分析,则只会看到一个元素:窗口(JFrame

  • 问题内容: 题 我正在寻找Java内存对象缓存API。有什么建议吗?您过去使用过什么解决方案? 当前 现在,我只是在使用地图: 要求 我需要扩展缓存以包括以下基本功能: 最大尺寸 生存时间 但是,我不需要更复杂的功能,例如: 来自多个进程的访问(缓存服务器) 持久性(到磁盘) 意见建议 内存中缓存: Guava CacheBuilder-活动开发。请参阅此演示文稿。 LRUMap-通过API配置。

  • 问题内容: 我目前在一个网站上工作,该网站必须存在于内存可用性非常低的VM上(目前被告知要达到512mb)。不幸的是,至少在不久的将来,数据库和Web应用程序必须是同一台服务器。 现在,我已经在这里通读了一些问题,并尝试进行自己的研究,但是这里有很多选择。从本质上讲,什么是可以安装的轻巧的数据库服务器?SQL或NoSQL并不重要;它不会占用大量数据库资源,但我现在不想随我现在选择的内容而受到限制。

  • 本文向大家介绍Spring boot项目redisTemplate实现轻量级消息队列的方法,包括了Spring boot项目redisTemplate实现轻量级消息队列的方法的使用技巧和注意事项,需要的朋友参考一下 背景 公司项目有个需求, 前端上传excel文件, 后端读取数据、处理数据、返回错误数据, 最简单的方式同步处理, 客户端上传文件后一直阻塞等待响应, 但用户体验无疑很差, 处理数据可