Plugins Sysrepo


Required dependencies

Install FRR build required dependencies, check Building FRR document for specific platform required packages. Below are debian systems required packages:

sudo apt-get install git autoconf automake libtool make \
                       libprotobuf-c-dev protobuf-c-compiler build-essential \
                       python3-dev python3-pytest python3-sphinx libjson-c-dev \
                       libelf-dev libreadline-dev cmake libcap-dev bison flex \
                       pkg-config texinfo gdb libgrpc-dev python3-grpc-tools libpcre2-dev



FRR requires version 2.1.128 or newer, in this document we will be compiling and installing libyang version 2.1.148.

git clone
cd libyang
git checkout v2.1.148
mkdir build; cd build
      -DCMAKE_BUILD_TYPE:String="Release" ..
sudo make install



The following code block assumes you have installed libyang v2.1.148, if you have libyang v2.1.128 change sysrepo version to 2.2.105.

git clone
cd sysrepo/
git checkout v2.2.150
mkdir build; cd build
      -DCMAKE_BUILD_TYPE:String="Release" ..
sudo make install

Verify that sysrepo is installed correctly:

sudo sysrepoctl -l


Follow the steps of Building FRR

Make sure to use --enable-sysrepo configure-time option while building FRR.

Below is an example of frr configure-time options, your options might vary, however in order to allow sysrepo plugin you have to keep --enable-sysrepo option:

./configure \
    --localstatedir=/var/opt/frr \
    --sbindir=/usr/lib/frr \
    --sysconfdir=/etc/frr \
    --enable-multipath=64 \
    --enable-user=frr \
    --enable-group=frr \
    --enable-vty-group=frrvty \
    --enable-configfile-mask=0640 \
    --enable-logfile-mask=0640 \
    --enable-fpm \
    --enable-sysrepo \
    --with-pkg-git-version \
make check
sudo make install


Install FRR YANG modules in Sysrepo datastore:

cd frr/yang/
sudo sysrepoctl -i ./ietf/ietf-interfaces.yang -o frr -g frr
sudo sysrepoctl -i frr-vrf.yang -o frr -g frr
sudo sysrepoctl -i frr-interface.yang -o frr -g frr
sudo sysrepoctl -i frr-route-types.yang -o frr -g frr
sudo sysrepoctl -i frr-filter.yang -o frr -g frr
sudo sysrepoctl -i frr-route-map.yang -o frr -g frr
sudo sysrepoctl -i frr-isisd.yang -o frr -g frr
sudo sysrepoctl -i frr-bfdd.yang -o frr -g frr
sudo sysrepoctl -i ./ietf/ietf-routing-types.yang -o frr -g frr
sudo sysrepoctl -i  frr-nexthop.yang -o frr -g frr
sudo sysrepoctl -i  frr-if-rmap.yang -o frr -g frr
sudo sysrepoctl -i  frr-ripd.yang -o frr -g frr
sudo sysrepoctl -i  frr-ripngd.yang -o frr -g frr
sudo sysrepoctl -i  frr-affinity-map.yang -o frr -g frr
sudo sysrepoctl -i ./ietf/frr-deviations-ietf-interfaces.yang -o frr -g frr

Start FRR daemons with sysrepo plugin:

sudo /usr/lib/frr/isisd -M sysrepo --log stdout

Any daemon running with -M sysrepo will subscribe to its frr yang moduels on sysrepo and you be able to configure it by editing module configuration on sysrepo.

Managing the configuration


To test FRR intergartion with sysrepo, sysrepocfg tool can be used to edit frr configuration on sysrepo


Edit sysrepo running datastore configuration for the desiged frr module:

sudo sysrepocfg -E nano -d running -m frr-isisd -f json

Paste the following json configuration:

  "frr-isisd:isis": {
    "instance": [
        "area-tag": "testnet",
        "vrf": "default",
        "is-type": "level-1"

Exit and save config to the same file.

After that, this configuration should get reflected to vtysh:

show run
Building configuration...

Current configuration:
frr version 9.2-dev-MyOwnFRRVersion
frr defaults traditional
hostname bullseye
router isis testnet
 is-type level-1


To manage sysrepo configuration through netconf you can use netopeer2 as a netfconf server that can be easily integrated with sysrepo.