Plugin Overview#


This section provides a brief description of the Ligato plugins. For more information on each plugin, click details.


KV Scheduler Plugin#

Details: KV Scheduler Plugin

Core plugin that works with SB VPP and Linux agents, and NB KV data stores and rpc clients. It manages configuration item dependencies, and computes the correct VPP configuration item programming sequence.


VPP plugins#

VPP plugins allow you to manage and control the VPP data plane.

Plugins:

  • GoVPPMux
  • Interface
  • L2
  • L3
  • Access Control List (ACL)
  • ACL-based forwarding (ABF)
  • IPFIX
  • IPSec
  • NAT
  • Punt
  • Segment Routing
  • STN
  • Telemetry
  • Wireguard

GoVPPMux#

Details: GoVPPMux plugin

Use this plugin for communication between the VPP agent and the VPP data plane using GoVPP. This plugin serves as the VPP agent’s G0VPP wrapper, and provides access to VPP through an independent communication channel using a shared memory segment prefix, or socket client. It supports custom prefixes to connect to the correct VPP instance in a multi-VPP environment.


Interface#

Details: Interface plugin

Use this plugin to configure VPP interfaces. You can configure base fields including IP and MAC address, and more advanced features such as unnumbered interfaces or RX-mode.


L2#

Details: L2 plugin

Use this plugin to program bridge domains, L2 forwarding tables (FIBs), and VPP cross connects. Dependent on the interface plugin.


L3#

Details: L3 plugin

Use this plugin to program L3 ARP entries, proxy ARP, VPP routes, IP scan neighbor, VRFs, tunnel endpoint base entries, L3 cross connects, and VRRP. Dependent on the interface plugin.


ACL#

Details: ACL plugin

Use this plugin to program VPP access control lists (ACL). If incoming traffic meets the ACL rules, VPP will perform the configured action on the packets.


ACL-based forwarding (ABF)#

Details: ABF plugin

Use this plugin to program ACL-based forwarding rules. Performs policy-based routing (PBR) where ACL matches determine packet forwarding.


IPFIX#

Details: IPFIX plugin

Use this plugin to implement VPP IPFIX monitoring and flow export.


IPSec#

Details: IPSec plugin

Use this plugin to program VPP security policy databases (SPD), and security associations (SA). It handles relationships between the SPD and SA, or between SPD and an assigned interface.

Note

The IPsec plugin does not configure deprecated IPSec tunnel interfaces. For more details, see VPP interface plugin.


NAT#

Details: NAT plugin

Use this plugin to program VPP NAT. It provides a control plane function for the VPP NAT44 data plane. This plugin also supports DNAT44 with load balancing for optimized resource efficiency in K8s network clusters. Dependent on the interface plugin.


Punt#

Details: Punt plugin

Use this plugin to access the VPP punt feature. Incoming VPP traffic matching a set of pre-defined rules is punted, or redirected, to the host stack or socket.


Segment routing#

Details: SR plugin

Use this plugin to program VPP segment routing IPv6 (SRv6).


STN#

Details: STN plugin

Use this plugin to implement the VPP STN (Steal the NIC) control plane.


Telemetry#

Details: telemetry plugin

Use this plugin to collect VPP telemetry stats for export to external monitoring and management tools.


Wireguard#

Details: Wireguard plugin

Use this plugin to program VPP wireguard VPN tunnels.


Linux plugins#

This section describes the VPP agent’s Linux plugins. You can use these plugins independently, or together with VPP plugins.

Plugins:

  • Linux interface
  • Linux L3
  • IP Tables
  • Namespace
  • Punt

Linux Interface#

Details: Linux Interface plugin

Use this plugin to program Linux interfaces. Interface types include VETH, TAP, loopback, existing, VRF, and dummy.


Linux L3#

Details: Linux L3 plugin

Use this plugin to program Linux routes and ARP entries. Dependent on the Linux interface plugin.


IP Tables#

Details: Linux iptables plugin

Use this plugin to program Linux IPtables.


Namespace#

Details: Namespace plugin

Use this plugin to provide a helper function tied in with the Linux interface and l3 plugins. It manages Linux namespaces, or as a microservice in container-based environment.


Punt#

Details: Punt plugin

Use this plugin to implement the Linux punt-to-host function.


Connection plugins#

VPP agent connection plugins enable external data read/write without the use of a data store.

Plugins:

  • REST
  • gRPC

REST#

Details: REST plugin

Use this plugin to implement REST API support for a plugin or agent.


gRPC#

Details: GRPC plugin

Use this plugin to enable VPP agent gRPC communications.


Database plugins#

Ligato provides plugins for external data store connectivity and integration.

Plugins:

  • Datasync
  • Data Broker
  • etcd
  • Redis
  • Consul
  • Bolt
  • Cassandra
  • FileDB
Datasync#

Details: Datasync plugin

Use this plugin to define data synchronization abstractions between your app plugins and different backend data sources such as data stores, message buses, or rpc-connected clients.


Data broker#

Details: Data Broker plugin

Use this plugin as a common API abstraction for client access to KV data stores and sql databases.


etcd#

Details: etcd plugin

Use this plugin for access to an etcd data store.


Redis#

Details: Redis plugin

Use this plugin for access to a Redis KV data store.


Consul#

Details: Consul plugin

Use this plugin for access to a consul KV data store.


Bolt#

Details: Bolt plugin

Use this plugin for access to a Bolt data store.


Cassandra#

Details: Cassandra

Use this plugin for access to a Cassandra MYSQL data store.


FileDB#

Details: FileDB plugin

Use this plugin to access the OS file system serving as an KV data store.


Infra Plugins#

Ligato provides infra plugins for logging, messaging, process management, status checking and service label.

Plugins:

  • Configurator
  • Orchestrator
  • Status Check
  • Index Map
  • Log Manager
  • Messaging/Kafka
  • Process Manager
  • Service Label

Configurator#

Details: Configurator plugin

Use this plugin to perform operations on the VPP agent configuration.


Orchestrator#

Details: Orchestrator plugin

Use this plugin to synchronize retrieved data from multiple sources, resolve conflicts, and convey configuration data to the KV Scheduler. The orchestrator reads/watches for config updates from NB clients, and communicates config status, running state, metadata, and metrics for NB client consumption.


Status Check#

Details: Status Check plugin

Use this plugin to monitor agent status by collecting and aggregating partial status of VPP agent plugins.


Index Map plugin#

Details: Index Map plugin

Use this plugin to employ a mapping structure that supports configuration item change notifications and retrieval by fields in the value structure.


Log Manager#

Details: Log Manager plugin

Use this plugin to manage global and per-logger log levels.


Messaging/Kafka#

Details: Messaging/Kafka plugin

Use this plugin so agents can publish synchronous/asynchronous messages, and consume selected topics.


Process Manager#

Details: Process Manager plugin

Use this plugin to create a process instance that manages and monitors plugins.


Service Label#

Details: Service Label plugin

Use this plugin with other plugins to obtain the microservice label string that identifies a particular VPP instance.