VPP Agent 简介
文章目录
- VPP Agent Overview
- VPP Agent 架构
- 体系架构图
- VPP Agent 功能
- VPP Agent Features
- VPP 配置和管理
- 重新同步
- 插件概念
- 说明
- CN-Infra
- Plugins
- 配置插件
- GoVPPMux
- Orchestrator
- Rest API
- Telemetry
- KVScheduler
- 默认提供的 VPP 核心功能插件
- Linux 插件
- CN-Infra 提供的 Plugin
- VPP-Agent-ctl
VPP Agent Overview
VPP Agent 是为 VPP 基于云原生虚拟网元、 GO 语言实现的控制面/管理面 Agent,该 Agent 构建于云原生基础架构平台(CN-Infra)上。 VPP Agent 可以用做为基于 VPP 开发的虚拟网元的控制或管理的 Agent。
代码仓库: https://github.com/ligato/vpp-agent.git
wiki: https://ligato-docs.readthedocs.io
文档: https://docs.ligato.io
VPP Agent 架构
VPP Agent 是一组特定于 VPP 的插件,它们使用 CN Infra 框架与云中的其他服务/微服务(例如 KV 数据存储、消息传递、日志仓库等)交互。VPP Agent 通过更高级别的模型驱动 API向客户端应用程序公开 VPP 功能。使用此 API 的客户端可以是外部的(通过 REST、gRPC API、Etcd 或消息总线传输连接到 VPP Agent),也可以是在同一 Linux 进程中运行在同一CN Infra 框架上的本地应用程序和/或扩展插件。
体系架构图
VPP Agent 功能
VPP Agent Features
- 管理 VPP 平台
- 管理相关的 Linux 配置
- 处理配置项之间的依赖关系
- 故障转移同步机制(重新同步)
- 从 VPP 收集统计数据
- 北向 API
- 基于事务的日志记录
VPP 配置和管理
通过 CLI 设置 VPP 并不总是方便的。 VPP CLI 命令主要反映二进制 API 调用,这有几个缺点,特别是必须按特定顺序调用它们(因为某些配置项可能依赖于其他配置项),或者单个命令通常只设置配置项的一部分(例如接口,set int state GigabitEthernet0/3/0 up -> set int mtu ip4 9000 GigabitEthernet0/3/0 -> set int ip address GigabitEthernet0/3/0 192.168.40.91/24)。
VPP Agent 解决了许多这样的问题:一方面定义易于阅读的原始定义 API,另一方面定义高级依赖项解决机制。经常被引用的项使用逻辑名称(而不是生成的索引),以确保更好的可读性和更方便的设置。
另一个重要特性是能够检索现有的 VPP 配置。 数据读取不仅用于状态报告,更重要的是用于重新同步。
我们还经常遇到这样的情况,即已配置的 VPP 按预期工作,重新启动/重新配置后,VPP 状态看起来完全相同,但没有像以前那样工作。这种行为的原因是二进制 API 调用在重新启动期间遵循了错误的顺序,配置 VPP 只是表面上正确的。这也可以通过 VPP 代理解决——插件确保所有 API 调用都以正确的顺序调用,以使其正常工作。
重新同步
重新同步是 Agent 的主要功能之一—它确保从外部源提供的配置、内部代理状态和实际 VPP 状态之间的一致性。自动重新同步从任何连接的持久数据存储中获取所有数据,并解释对VPP 的更改。同步还针对 Linux 主机执行。默认情况下,重新同步在代理启动时启动,但也可以在某些事件( VPP 重新启动、重新连接到数据库)时自动启动。
插件概念
Agent 是基于插件的。它允许构建只执行基本任务(基本配置)的简单 Agent,或者使用各种插件构建通用解决方案。许多插件的行为可以在启动时使用特定的配置文件进行设置或修改。插件定义在 Agent 中是标准化的,因此可以使用自定义的用户定义插件轻松扩展插件,并与其他自定义插件或任何预定义插件一起启动,以满足用户需求。
说明
VPP Agent 是管理平面,提供配置和监控服务。它不会决定如何处理到达任何接口的数据包,也不会根据实际 VPP 状态更改任何配置参数(路由、FIB)。
CN-Infra
- 基于插件(仅使用你需要的组件构建 Agent)
- 连接到各种类型的外部数据库
- 可通过 REST 或 GRPC 访问
- 插件和其他组件(数据库、VPP 等)的运行状况检查
- 信息传递(Kafka)
Plugins
VPP Agent 有如下插件
配置插件
GoVPPMux
对 GOVPP 的封装,提供对 VPP 的访问,每个插件都可以使用 GoVPP mux 与 VPP 交互,GoVPP mux 为 VPP 实例提供独立的通信通道。通信通过共享内存段前缀完成,插件还支持自定义前缀,以连接到多 VPP 环境中的正确 VPP 实例。
Orchestrator
在单个代理实例从多个源(KV data store、GRPC 等)接收配置数据的场景中,orchestrator 用于同步检索到的数据并解决来自各个源的冲突。然后,数据处理插件将数据视为来自单个源。
Rest API
一个核心插件,对外暴露 REST API,可用于传递 VPP CLI命令、检索现有 VPP 配置或代理北向 API 对象。
Telemetry
对 VPP 收集统计数据用于监控
KVScheduler
KV 调度器是任何 VPP 或 Linux 相关数据处理的第一步。它验证配置项依赖项的存在,处理本地缓存,并在可能或基础插件允许的情况下执行重试。KV 调度器不直接处理数据(不调用任何 VPP 二进制 API),只确定实现所需结果所需的操作。数据被处理成其他插件中的低级对象。
默认提供的 VPP 核心功能插件
ACL plugin,Interface plugin,IPSec plugin,L2 plugin,L3 plugin,NAT plugin,Punt plugin,STN plugin
Linux 插件
Linux Interface plugin,Linux L3 plugin,Namespace plugin
CN-Infra 提供的 Plugin
日志管理,监控管理,Kfaka
VPP-Agent-ctl
VPP Agent ctl 是一种实用工具,其主要目的是测试和排除 VPP 代理故障。该工具允许将 Agent 中当前支持的任何类型的预定义配置放入 ETCD,使用自定义数据指定键和值(作为JSON),或读取当前 ETCD 配置。
VPP Agent 简介相关推荐
- FD.io/VPP — VPP Agent — 架构设计
目录 文章目录 目录 VPP Agent 的分层架构 KVScheduler VPP plugins VPP Agent 与 VPP Data Plane 的通信机制 VPP Agent 的软件架构 ...
- FD.io/VPP — VPP Agent — Quickstart
目录 文章目录 目录 部署架构 安装步骤 安装 ETCD 容器部署 VPP & VPP Agent 编译安装 VPP Agent Managing the VPP Agent etcdctl ...
- FD.io/VPP — VPP Agent — Overview
目录 文章目录 目录 VPP Agent VPP Agent 的设计理念 VPP Agent 的功能特性 VPP Agent VPP Agent: https://github.com/ligato/ ...
- java agent简介
java agent简介 主要就是两种,一种的方法是premain,一种是agentmain.这两种的区别是: premain是在jvm启动的时候类加载到虚拟机之前执行的 agentmain是可以在j ...
- Cisco VPP(1) 简介
一.简介 VPP全称Vector Packet Processing,是Cisco2002年开发的商用代码. 2016年2月11号,Linux基金会创建FD.io项目.Cisco将VPP代码的开源版本 ...
- java agent简介热部署SDK接入
思考: 我们在平时使用arthas的类方法监控,类增强,到底是怎么在应用启动后还能对类进行修改的呢,他到底是基于什么场景下孕育出来的呢,今天我们就来聊一聊java-agent,当了解完了agent机制 ...
- FD.io/VPP — VPP Agent — Telemetry Plugin
目录 文章目录 目录 Telemetry Plugin Telemetry Config Telemetry REST API Telemetry metrics VPP runtime VPP bu ...
- Linux CRDA(Central Regulatory Domain Agent)简介
这是一篇介绍CRDA的原文,来自于http://lwn.net/Articles/271037/,这里简单介绍一下. 通过下面的文章,我们可以获知如下信息: 1.CRDA作用: 消除host driv ...
- 负载、集群功能Beetle Agent简介
Beetle Agent是基于Beetle开发的代理服务软件,其主要目的是接收用户请求并根据实际请求的信息进行一个负载处理,它可以灵活地把请求分发到不同的应用服务器并把应用服务器处理的结果返回给具体的 ...
最新文章
- 计算机在生物科学领域的应用论文,大学生物科学教学中计算机的应用
- stm32for循环几个机械周期_波浪理论之五:循环周期理论
- margin:auto实现绝对定位元素的水平垂直居中
- 复数基础——数组_1
- 2597 团伙(并查集就是好用!)
- [leetcode] 55. 跳跃游戏
- 让FireFox火狐支持迅雷精简版
- protues仿真51单片机驱动继电器
- 幼儿园清明节活动设计方案
- 控制面板Plesk, cPanel, DirectAdmin, whmcs,WDCP, AMH比较
- DSPE-PEG7-Mal新研博美 小分子PEG的循环节可以做到1-36个
- chrome无法访问商店,打不开网页怎么办,五步轻松解决
- 软件开发中常见知识总结
- Mybatis学习笔记(上)
- E波段通信系统参考文献E-band info(整理)
- 工业互联网二级节点总体架构
- lazada代运营-代运营服务平台
- FCM 模糊C均值聚类算法
- python sympy库实现代数符号运算及表达式推导
- ERROR: Could not find com.android.tools.build:gradle:3.5.0. Searched in the following locations: