Ligato BGP Agent is a BGP information provider. It provides BGP information in an unified format to allow to retrieve BGP information from different sources(different BGP frameworks, eg: GoBGP, ExaBGP) and supporting multiple extensions (different AFI/SAFIS ex: IPV4 / Unicast, IPV6 / Unicast).
The architecture of the
Ligato BGP Agent is shown in the following figure.
Ligato BGP Agent is set of
Ligato CN-Infra Plugin implementations. Purpose of each plugin is to forward retrieved BGP information to clients(registered watchers).
Every plugin has its source of BGP information (GoBGP,ExaBGP, Quagga). Communication with the source is vendor specific and therefore also the retrieved BGP information is usually vendor specific. The BGP information is translated into unified format and forwarded to clients. If the source of the BGP information supports listening for updates, plugin forwards to its clients also informations from updates.
Clients can register directly to plugins, choosing what information they want to consume. Each plugin can expose different set of BGP informations depending at capabilities of their source(GoBGP,ExaBGP,...) or plugin's client target(different plugins for different AFI/SAFI). But each type of BGP information, no matter from which plugin it came, has the same unified format.
Plugins can be clients of other plugins too. This means that the architecture is quite flexible for the future usage. Different plugins can provide different types of BGP information/from different sources and can be kept separate as building stones for (hierarchy of) aggregator plugins. The aggregator plugin uses other plugins to retrieve needed information for its own registered clients. The aggregator plugins can for example provide information for one AFI/SAFI across multiple sources. This can be usefull if one source can provide all needed information or such source exists but can't be used for whatever reason. There are many possibilities how to combine plugins together to satisfy specific use cases.
Currently, only GoBGP plugin that exposes IPv4 reachable routes is available. ExaBGP,Quagga plugins are not implemented.
For a quick start with the BGP Agent, you can use makefile and start examples
The command pulls needed docker images from Dockerhub, setups networking, builds the examples, runs them, validates their output and cleans after them.
You can check in the command output the most basic test, the gobgp_watch_plugin.
GoDoc can be browsed online.