Frequently Asked Questions#
What is the VPP agent?#
A control plane agent for a VPP data plane. It comes with various plugins for programming data plane network functions. The VPP agent is separate from VPP data plane. You can use the VPP agent for developing customized or out-of-the-box VPP-based CNFs.
Note that you can use the VPP agent with the Linux kernel data plane to develop applications.
What is cn-infra?#
Infrastructure and plugins for building control plane agents for CNFs and applications.
Is Ligato an application?#
Not really. Think of Ligato components, such as VPP agent plugins, as building blocks for your CNF and/or cloud native application implementations.
What is the relationship between the VPP agent and cn-infra?#
They compliment each other. Both provide plugins you can use to develop CNFs. For example, a VPP-based CNF uses VPP agent plugins for programming the data plane, and cn-infra plugins (e.g. etcd connector, REST, gRPC, etc.) for communications with external applications.
What is a CNF?#
Cloud Native Network Function. Containerized network functions subscribing to cloud native architectural and operational principles.
What is VPP?#
Vector Packet Processing is a software platform for forwarding packets. FD.io is the open source project for VPP.
Is VPP part of Ligato?#
No. Ligato includes the VPP agent along with other plugins providing overall management, control and lifecycle support for VPP-based CNFs and cloud-native applications.
However, to ensure VPP agent and VPP compatibility, and maintain its lightweight “footprint”, the Ligato/vpp-agent docker images include the VPP data plane.
Can I use Ligato to build non-VPP cloud native apps?#
Yes. One example is an experimental BGP agent that does not use the VPP data plane.
Is Ligato a CNCF project?#
Ligato is a member of the larger CNCF ecosystem. Many Ligato plugins build on CNCF projects such as gRPC, etcd, and Prometheus.
Any current solutions using Ligato?#
Contiv-VPP and Network Service Mesh (NSM) use Ligato.
What is a plugin?#
Small chunk of code performing a specific function. Ligato comes with multiple out-of-the-box plugins. You can develop new plugins that perform customized functions, and you need only use the plugins required for your applications.
How does a Ligato-built CNF talk to external apps?#
Ligato provides plugins, and you can craft your own, for communicating with external applications such as etcd data stores or gRPC clients.
What is a Key Value (KV) Data Store?#
Data store (or database) of key-value (KV) pairs. Ligato supports the commonly used/deployed KV data store solutions. You can create plugins to communicate with other external KV data stores.
What programming language does Ligato use?#
Go Programming Language developed by Google. Other cloud native projects including Kubernetes and etcd use Go. Advantages over other programming languages used in distributed systems include speed,concurrency and simplicity.
What is protobufs?#
Protocol Buffers is a language/platform-neutral method that defines the structure and serialized format of data associated with an object.
What is a resync?#
A VPP agent process that maintains consistency between configuration data provided from an external source, internal VPP agent state, and the VPP runtime.
What is a model?#
A model defines a configuration object. See Model Specification and proto.Message for more details.
What is the microservice label?#
A unique value assigned to a group of VPP agents watching the KV data store for configuration changes. For more details, see keys and microservice label.
What does northbound (NB) mean? Same for southbound (SB)?#
NB means configuration data originates from an external source such as a KV data store. SB means configuration data present in the VPP data plane.
How do I get started?#
Start with the Quickstart Guide to quickly build and program a VPP-based CNF.
Any tutorials I can follow?#
See tutorials beginning with coding up a “Hello World” plugin.
Any examples I can look at?#
Is there a CLI?#
Agentctl supplies you with numerous CLI commands for working with Ligato.
How do I find the Ligato and VPP versions I am working with?#
To show VPP agent info, use agentctl status or GET /dump/info/version REST API.
To show VPP version info, use agentctl VPP or POST /vpp/command REST API.
How do I configure a Ligato-based application?#
Ligato employs a stateless configuration approach. VPP agents “listen” for configuration updates stored as key-value pairs in a KV data store. The quickstart guide shows an example of configuration data put to an etcd data store.
You can develop applications that use other configuration techniques including kubectl, clientv2, gRPC, REST, agentctl, and customized methods best suited for the application.
What is a conf file?#
A file containing plugin configuration values applied when you initialize the plugin. Most, but not all plugins have their own conf file. See Conf files for more details and examples.
What is the KV Scheduler?#
The KV Scheduler plugin supports dependency resolution, and computes the proper programming sequence for multiple interdependent configuration items. It works with VPP and Linux agents on the southbound (SB) side, and external data stores and rpc clients on the northbound (NB) side.
To learn more, see KV Scheduler.
What is a Descriptor?#
A construct used by the KV Scheduler that describes a particular configuration object such as a VPP route. Descriptors define dependencies and supported CRUD operations to perform against that object. To learn more, see KV Descriptors.
What is a KV Scheduler Transaction?#
A series of configuration actions planned and executed by the KV Scheduler. You can view transaction plans with the following:
KV Scheduler Troubleshooting#
See KV Scheduler Troubleshooting.
What RPCs are supported by Ligato?#
gRPC and REST.
What REST APIs are supported?#
See VPP Agent REST API and KV Scheduler REST API.
Can I develop my own set of customized APIs?#
The REST Handler tutorial shows you how to create a REST API for the Hello World plugin.
Where can I find support for Ligato?#
Ligato is open source software. Use the Ligato slack room or Github issues to communicate with the greater Ligato community.
Github Issues URLs:
Before opening an issue, collect as much data as possible, including:
- VPP Agent version/commit ID
- VPP version/commit ID
- VPP Agent logs (best with debug enabled)
- KVDB store dump if possible
- Description of desired function
This will help the community to quickly pinpoint and fix the problem.