VPP Agent 简介

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 配置。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值