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)¶
Create a Python 3 virtual environment for the Controller:
$ python3 -m venv ~/.envs/node-mgr-venv
Activate the virtual environment:
$ source ~/.envs/node-mgr-venv/bin/activate
Clone the rose-srv6-control-plane repository using
git
:$ git clone https://github.com/netgroup/rose-srv6-control-plane.git
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
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¶
Clone the rose-srv6-control-plane repository using
git
:$ git clone https://github.com/netgroup/rose-srv6-control-plane.git
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
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:
#!/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.