diff options
| author | Amjad Daraiseh <adaraiseh@okdanetworks.com> | 2024-02-02 01:12:15 -0500 | 
|---|---|---|
| committer | Amjad Daraiseh <adaraiseh@okdanetworks.com> | 2024-02-02 05:41:04 -0500 | 
| commit | 70fba89306afb7ab520ded0a8269136b76d5d813 (patch) | |
| tree | 203d61a344c2cf6e43c8805b8d1c6e2421e63b49 /doc | |
| parent | a4f222292ba26dd536da6004772341738b1e9be4 (diff) | |
doc: sysrepo plugin doc update with tested commands
Signed-off-by: Amjad Daraiseh <adaraiseh@okdanetworks.com>
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/developer/northbound/plugins-sysrepo.rst | 213 | 
1 files changed, 133 insertions, 80 deletions
diff --git a/doc/developer/northbound/plugins-sysrepo.rst b/doc/developer/northbound/plugins-sysrepo.rst index 1797157573..0cfdb825e5 100644 --- a/doc/developer/northbound/plugins-sysrepo.rst +++ b/doc/developer/northbound/plugins-sysrepo.rst @@ -1,140 +1,193 @@ -Plugins Sysrepo (old) -===================== +Plugins Sysrepo +===============  Installation  ------------  Required dependencies  ^^^^^^^^^^^^^^^^^^^^^ +Install FRR build required dependencies, check `Building FRR  +<https://docs.frrouting.org/projects/dev-guide/en/latest/building.html>`_ document for specific platform required packages.   +Below are debian systems required packages:  -:: +.. code-block:: console -   # apt-get install git cmake build-essential bison flex libpcre3-dev libev-dev \ -                     libavl-dev libprotobuf-c-dev protobuf-c-compiler libcmocka0 \ -                     libcmocka-dev doxygen libssl-dev libssl-dev libssh-dev +   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  libyang  ^^^^^^^ -:: +.. note:: -   # apt-get install libyang0.16 libyang-dev +   FRR requires version 2.1.128 or newer, in this document we will  +   be compiling and installing libyang version 2.1.148. -Sysrepo -^^^^^^^ +.. code-block:: console -:: +   git clone https://github.com/CESNET/libyang.git +   cd libyang +   git checkout v2.1.148 +   mkdir build; cd build +   cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr \ +         -DCMAKE_BUILD_TYPE:String="Release" .. +   make +   sudo make install -   $ git clone https://github.com/sysrepo/sysrepo.git -   $ cd sysrepo/ -   $ mkdir build; cd build -   $ cmake -DCMAKE_BUILD_TYPE=Release -DGEN_LANGUAGE_BINDINGS=OFF .. && make -   # make install +Sysrepo +^^^^^^^ -libnetconf2 -^^^^^^^^^^^ +.. note:: -:: +   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 https://github.com/CESNET/libnetconf2.git -   $ cd libnetconf2/ -   $ mkdir build; cd build -   $ cmake .. && make -   # make install +.. code-block:: console -netopeer2 -^^^^^^^^^ +   git clone https://github.com/sysrepo/sysrepo.git +   cd sysrepo/ +   git checkout v2.2.150 +   mkdir build; cd build +   cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr \ +         -DCMAKE_BUILD_TYPE:String="Release" .. +   make +   sudo make install -:: +Verify that sysrepo is installed correctly: -   $ git clone https://github.com/CESNET/Netopeer2.git -   $ cd Netopeer2 -   $ cd server -   $ mkdir build; cd build -   $ cmake .. && make -   # make install +.. code-block:: console -**Note:** If ``make install`` fails as it can’t find -``libsysrepo.so.0.7``, then run ``ldconfig`` and try again as it might -not have updated the lib search path +   sudo sysrepoctl -l  FRR  ^^^ -Build and install FRR using the ``--enable-sysrepo`` configure-time -option. +Follow the steps of `Building FRR  +<https://docs.frrouting.org/projects/dev-guide/en/latest/building.html>`_ + + +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: + +.. code-block:: console + +   ./bootstrap.sh +   ./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 \ +       --with-pkg-extra-version=-MyOwnFRRVersion +   make +   make check +   sudo make install +  Initialization  -------------- -Install the FRR YANG modules in the Sysrepo datastore: - -:: +Install FRR YANG modules in Sysrepo datastore: -   # sysrepoctl --install /usr/local/share/yang/ietf-interfaces@2018-01-09.yang  -   # sysrepoctl --install /usr/local/share/yang/frr-vrf.yang  -   # sysrepoctl --install /usr/local/share/yang/frr-interface.yang  -   # sysrepoctl --install /usr/local/share/yang/frr-route-types.yang  -   # sysrepoctl --install /usr/local/share/yang/frr-filter.yang  -   # sysrepoctl --install /usr/local/share/yang/frr-route-map.yang  -   # sysrepoctl --install /usr/local/share/yang/frr-isisd.yang  -   # sysrepoctl --install /usr/local/share/yang/frr-ripd.yang -   # sysrepoctl --install /usr/local/share/yang/frr-ripngd.yang -   # sysrepoctl -c frr-vrf --owner frr --group frr -   # sysrepoctl -c frr-interface --owner frr --group frr -   # sysrepoctl -c frr-route-types --owner frr --group frr -   # sysrepoctl -c frr-filter --owner frr --group frr -   # sysrepoctl -c frr-route-map --owner frr --group frr -   # sysrepoctl -c frr-isisd --owner frr --group frr -   # sysrepoctl -c frr-ripd --owner frr --group frr -   # sysrepoctl -c frr-ripngd --owner frr --group frr +.. code-block:: console -Start netopeer2-server: +   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 -:: -   # netopeer2-server -d & +Start FRR daemons with sysrepo plugin: -Start the FRR daemons with the sysrepo module: +.. code-block:: console -:: +   sudo /usr/lib/frr/isisd -M sysrepo --log stdout -   # 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  -------------------------- -The following NETCONF scripts can be used to show and edit the FRR -configuration: -https://github.com/rzalamena/ietf-hackathon-brazil-201907/tree/master/netconf-scripts +Testing +^^^^^^^ -Example: +To test FRR intergartion with sysrepo, ``sysrepocfg`` tool can be used  +to edit frr configuration on sysrepo -:: +Example: -   # ./netconf-edit.py 127.0.0.1 -   # ./netconf-get-config.py 127.0.0.1 -   <?xml version="1.0" encoding="UTF-8"?><data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"><isis xmlns="http://frrouting.org/yang/isisd"><instance><area-tag>testnet</area-tag><is-type>level-1</is-type></instance></isis></data> +Edit sysrepo running datastore configuration for the desiged frr module: -.. +.. code-block:: console -   NOTE: the ncclient library needs to be installed first: -   ``apt install -y python3-ncclient`` +   sudo sysrepocfg -E nano -d running -m frr-isisd -f json -The *sysrepocfg* tool can also be used to show/edit the FRR -configuration. Example: +Paste the following json configuration: -:: +.. code-block:: console -   # sysrepocfg --format=json --import=frr-isisd.json --datastore=running frr-isisd -   # sysrepocfg --format=json --export --datastore=running frr-isisd     {       "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: + +.. code-block:: console + +  show run +  Building configuration... +   +  Current configuration: +  ! +  frr version 9.2-dev-MyOwnFRRVersion +  frr defaults traditional +  hostname bullseye +  ! +  router isis testnet +   is-type level-1 +  exit +  ! +  end + +NETCONF +^^^^^^^ + +To manage sysrepo configuration through netconf +you can use `netopeer2 <https://github.com/CESNET/netopeer2>`_ as a netfconf server that can  +be easily integrated with sysrepo.  | 
