Installation

This section explains how to install the Node Manager and all the required dependencies.

You have two ways to install the Controller:

Note

The installation into a virtual environment is the suggested option.

Prerequisites

The following dependencies are necessary:

  • Linux kernel 4.14 or above

  • Python 3.6 or above

Installation into a virtual environment (suggested)

  1. Create a Python 3 virtual environment for the Controller:

    $ python3 -m venv ~/.envs/node-mgr-venv
    
  2. Activate the virtual environment:

    $ source ~/.envs/node-mgr-venv/bin/activate
    
  3. Clone the rose-srv6-control-plane repository using git:

    $ git clone https://github.com/netgroup/rose-srv6-control-plane.git
    
  4. Then, cd to the control_plane/node-manager directory under the rose-srv6-control-plane folder and run the install command:

    $ cd rose-srv6-control-plane/control_plane/node-manager
    $ python setup.py install
    
  5. This project depends on the gRPC protocol, which requires protobuf modules. cd to the control_plane/protos directory under the rose-srv6-control-plane folder and run the setup command to build and install the proto files:

    $ cd rose-srv6-control-plane/control_plane/protos
    $ python setup.py install
    

Installation without a virtual environment

  1. Clone the rose-srv6-control-plane repository using git:

    $ git clone https://github.com/netgroup/rose-srv6-control-plane.git
    
  2. Then, cd to the control_plane/node_manager directory under the rose-srv6-control-plane folder and run the install command:

    $ cd rose-srv6-control-plane/control_plane/node_manager
    $ python setup.py install
    
  3. This project depends on the gRPC protocol, which requires protobuf modules. cd to the control_plane/protos directory under the rose-srv6-control-plane folder and run the setup command to build and install the proto files:

    $ cd rose-srv6-control-plane/control_plane/protos
    $ python setup.py install
    

Configuration

The Node Manager comes with a default configuration:

node_manager.env
#!/usr/bash

##############################################################################
################## Node Manager example configuration file  ##################
##############################################################################

# Node Manager example configuration file.

# This is used to enable/disable features for the node manager and 
# to set configuration parameters.
#

# To provide the configuration settings defined in this script, pass
# the path of this script as parameter when you start the node manager.
#   $ node_manager --env-path .env
# For more information, check the documentation.

# Note that the configuration settings contained in this script are
# defined as environment variables; therefore you can also load the
# configuration by sourcing this script.

# Some settings can be also passed as command-line arguments when you
# start the node manager. Command-line arguments have priority over the
# variables defined in this script.



##############################################################################
############################## General settings ##############################
##############################################################################

# Must debug logs be enabled? (optional, default: True)
# export DEBUG=True
                      
# Must SRv6 Manager features be enabled? (optional, default: True)
# export ENABLE_SRV6_MANAGER=False

##############################################################################



##############################################################################
############################ gRPC server settings ############################
##############################################################################

# IP address of the gRPC server (:: means 'listen on any addrs', default: ::)
export GRPC_IP=::

# Number of port on which the gRPC server is reachable (default: 12345)
export GRPC_PORT=12345

# Must gRPC server use secure channels? (default: False)
# export GRPC_SECURE=True

# Path to the certificate of Certification Authority (CA) 
# required by gRPC secure mode (default: 'cert_client.pem')
# export GRPC_SERVER_CERTIFICATE_PATH=/tmp/ca.crt

# Path to the private key of the server required by gRPC secure mode
# (default: 'key_server.pem')
# export GRPC_SERVER_KEY_PATH=/tmp/server.key

##############################################################################



##############################################################################
############################ gRPC client settings ############################
##############################################################################

# Must gRPC client use secure channels? (default: False)
# export GRPC_CLIENT_SECURE=True

# Must gRPC use secure channels? (default: False)
# export GRPC_CA_CERTIFICATE_PATH=/tmp/ca.crt

# IP address of the controller's gRPC server (default: fcff:c::1)
# export CONTROLLER_GRPC_IP=fcff:c::1

# Number of port of the controller's gRPC server (default: 12345)
# export CONTROLLER_GRPC_PORT=12345

##############################################################################



##############################################################################
########################## SRv6-PFPLM configuration ##########################
##############################################################################

# Define whether to enable or not SRv6-PFPLM features (default: False)
# export ENABLE_SRV6_PM_MANAGER=True

# Path to the folder where you cloned the repository
# https://github.com/netgroup/srv6-pm-xdp-ebpf.git
# export SRV6_PM_XDP_EBPF_PATH=/home/rose/workspace/srv6-pm-xdp-ebpf

# Path to the folder where you cloned the repository
# https://github.com/netgroup/rose-srv6-data-plane.git
# export ROSE_SRV6_DATA_PLANE_PATH=/home/rose/workspace/rose-srv6-data-plane

##############################################################################



##############################################################################
################################ VPP settings ################################
##############################################################################

# Define whether to enable or not the VPP forwarding engine (default: False)
# export ENABLE_VPP=True

# Path to the directory containing libvppapiclient.so
# (see https://wiki.fd.io/view/VPP/Python_API for the setup instructions)
# export LD_LIBRARY_PATH=\
#         /home/rose/workspace/vpp/build-root/install-vpp_debug-native/vpp/lib

##############################################################################

If you want to override the default settings, you can create a .env file containing the configuration parameters. For a description of the supported configuration options, see the Configuration section.

Optional requirements

  • SRv6 PFPLM requires SRv6 PFPLM implementation using XDP/eBPF and tc/eBPF and ROSE SRv6 Data-Plane.

    • In order to setup SRv6 PFPLM implementation using XDP/eBPF and tc/eBPF you need to clone the github repository and follow the setup instructions contained in README.md:

      $ git clone -b srv6-pfplm-dev-v2-rev_2 https://github.com/netgroup/srv6-pm-xdp-ebpf.git
      

      Then, you need to add the path to the repository to your .env file, as described in the SRv6-PM Manager section.

    • To setup the rose-srv6-data-plane, clone the repository and follow the setup instructions provided in README.md:

      $ git clone https://github.com/netgroup/rose-srv6-data-plane.git
      

      and follow the setup instructions.