Clixon is a management framework that can be used by networking devices and other computer systems. Clixon provides a datastore, CLI, NETCONF and RESTCONF interfaces all defined by YANG.
Most of the projects using Clixon are for networking devices. But Clixon can be used for other YANG-based systems as well due to a modular and pluggable architecture.
Clixon has a transaction mechanism that ensures configuration operations are atomic. It also features a generated interactive command-line interface using CLIgen.
The goal of Clixon is to provide a useful, production-grade, scalable and free YANG based configuration tool.
Clixon is open-source and dual licensed. Either Apache License, Version 2.0 or GNU General Public License Version 2.
Clixon provides YANG functionality with Netconf, Restconf and CLI that can be integrated with a “base system” in several ways. Two primary integrations are outlined here:
- Plugin integration where clixon handles all user interaction with the interaction with the base system with backend plugins. This is the primary Clixon usage model.
- Client integration where the base system uses clixon primarily for configurations as a “side-car”. There is some ongoing work to make Clixon also work for this usage.
This describes how to integrate a base system with clixon using plugins.
The Clixon architecture consists of a backend daemon with configuration datastores and a set of internal clients: cli, restconf and netconf.
The clients provide frontend interfaces to users of the system, such as a Network Management System (NMS) or just a live user. The external interfaces includes interactive CLI, RESTCONF over HTTP/HTTPS, and XML NETCONF over TCP or SSH. Internally, the clients and backend communicate over Inter-Process Communication (IPC) bus via NETCONF over a UNIX socket. It is possible to run over an INET socket as well.
The backend manages a configuration datastore and implements a transaction mechanism for configuration operations (eg, create, read, update, delete) . The datastore supports candidate, running and startup configurations.
A system integrating Clixon using plugins, typically starts with a set of YANG specifications that should be implemented. You then write backend plugins that interact with the base system. The plugins are written in C using the Clixon API and a set of plugin callbacks. The main callback is a transaction callback, where you specify how configuration changes are made to your system.
You can also design an interactive CLI using CLIgen, where you specify the CLI commands and write CLI plugins. You will have to write CLI rules, but Clixon can generate the configuration part of the CLI, including set, delete, show commands for a specific syntax.
Notifications are supported both for CLI, netconf and restconf clients, sometimes referred to as “streams”.
In a client architecture, the base system keeps existing APIs and only YANG-based configurations are exposed via Clixon. The base system acts as a clixon client and uses the clixon client module to subscribe to configuration events using Netconf message passing.
In comparison, the tighter plugin architecture uses dynamically loaded plugins, callbacks and a shared datastore. See clixon client api for more details.
Clixon supports GNU/Linux, FreeBSD and Docker. MacOS may work. Linux platforms include 32 and 64 bits Ubuntu, Alpine, Raspian, etc.
Clixon supports standards including YANG, NETCONF, RESTCONF, XML and XPath. See Standards for more details.
How to get Clixon¶
Get the Clixon source code from Github:
git clone firstname.lastname@example.org:clicon/clixon.git
The user-manual is this document.
For reference documentation of the C-code, Doxygen is used. To build the reference documentation you need to check out the source code, and type
make doc, eg:
git clone email@example.com:clicon/clixon.git cd clixon ./configure make doc
direct your browser to:
file:///<your home path>/clixon/doc/html/index.html