Router Configuration Tool is simple configuration interface for Vector Path Processing (VPP, fd.io) with limited feature set. This tool is set of systemd services and few app. changelog
- Current rct version 0.2-6
- Current VPP version 23.02
- Current kea version 2.0.3
- Based on VPP & linux-cp plugin, ISC Kea DHCP, Bird internet routing daemon. Thanks to all people that participate in these projects.
- rconfig written in GO, Cobra cli interface, bash-completion
- set of app:
rconfig, rctWatchdog, rctExporter, rctKeaWatchdog, rctKea6RouteHelper
- set of systemd services:
-rctBird
# use default bird conf file location
-rctSshd
# use default sshd conf file location
-rctWatchdog
-rctVpp
-rctStart
-rctKea4
-rctKea6
-rctKeaWatchdog
-rctSnmpd
-rctSnmpdCp
-rctKea6RouteHelper
- default directory
/etc/rct
, json configuration files
- Differential configuration VPP using govpp api
- Simplest vpp startup configuration generator (you dont need to configure VPP manually)
- Use separated namespace
controlplane
- Custom interface name
- IPv4/IPv6 a routing
- Dot1q, QinQ
- VXLAN tunnels
- ABF+ACL policy filtering
- Loopbacks (BVI)
- Bridge Domain and ports configuration (SHG, POP 1)
- L2xconnect
- Exporter for interface statistics based on Prometheus(prometheus.io) with customized interface names, grafana template included
- Watchdog
- Det44
- Preconfigured systemd services to access via separated namespace("controlplane"):
rctSshd, rctBird, rctSnmpdCp
- Preconfigured systemd services for ISC Kea dhcp server:
rctKea4, rctKea6, rctKeaWatchdog
- Simple source nat on output interface (nat44 + output feature)
- Preconfigured systemd services for snmpd to read VPP traffic (on controlplane)
- Ipv6 prefix delegation route injection helper (from Kea6)
rconfig vlan add vlan77 interface enp3s0
# add vlan subinterface
rconfig vlan set vlan77 Dot1q 15 ExactMatch true AdminUp true
# set Dot1q main tag
rconfig address add 192.168.15.1/24 interface vlan77
# configure address
rconfig commit
# perform diff commit
rconfig save
Topology example1 (routing, vlan, loopback, bridge domain, abf)
Topology example2 (routing, loopback, vxlan, l2xconnect)
Configuration and installation examples can be found in docs
- Debian 11
- VPP capable hardware
- Multicore CPU (4 or more cores for better results)
- Hardware with DPDK capable interface
- Minimum 2 ethernet interface (one for VPP and one for management). (note: You can also use the management port in vpp, but you lose management port accessibility.)
apt install bird2 htop traceroute sed curl mc wget sudo libmbedtls12 libmbedx509-0 libmbedcrypto3 libnl-3-200 libnl-route-3-200 libnuma1 python3 libsubunit0 bash-completion liblog4cplus-2.0.5 libmariadb3 libpq5 mariadb-common mysql-common -y
mcedit /etc/default/grub # modify the configuration file GRUB_TIMEOUT=1 GRUB_CMDLINE_LINUX="console=ttyS0,115200n8 isolcpus=1-3 nohz_full=1-3 cpufreq.default_governor=performance intel_iommu=off" # run update grub bootloader update-grub
mkdir rctDebPkg && cd rctDebPkg wget -q --show-progress https://github.com/petrbol/RouterConfigurationTool/raw/main/vpp-23.02-release/libvppinfra_23.02-release_amd64.deb wget -q --show-progress https://github.com/petrbol/RouterConfigurationTool/raw/main/vpp-23.02-release/vpp-plugin-core_23.02-release_amd64.deb wget -q --show-progress https://github.com/petrbol/RouterConfigurationTool/raw/main/vpp-23.02-release/vpp-plugin-dpdk_23.02-release_amd64.deb wget -q --show-progress https://github.com/petrbol/RouterConfigurationTool/raw/main/vpp-23.02-release/vpp_23.02-release_amd64.deb
wget -q --show-progress https://github.com/petrbol/RouterConfigurationTool/raw/main/kea-2.0.3/isc-kea-common_2.0.3-isc20220725151155_amd64.deb wget -q --show-progress https://github.com/petrbol/RouterConfigurationTool/raw/main/kea-2.0.3/isc-kea-dhcp4-server_2.0.3-isc20220725151155_amd64.deb wget -q --show-progress https://github.com/petrbol/RouterConfigurationTool/raw/main/kea-2.0.3/isc-kea-dhcp6-server_2.0.3-isc20220725151155_amd64.deb
dpkg -i *.deb
wget -q --show-progress https://github.com/petrbol/RouterConfigurationTool/raw/main/kernel/5.15.41/linux-headers-5.15.41_5.15.41-1_amd64.deb wget -q --show-progress https://github.com/petrbol/RouterConfigurationTool/raw/main/kernel/5.15.41/linux-image-5.15.41_5.15.41-1_amd64.deb dpkg -i linux-headers-5.15.41_5.15.41-1_amd64.deb linux-image-5.15.41_5.15.41-1_amd64.deb
systemctl disable vpp reboot
wget -q --show-progress https://github.com/petrbol/RouterConfigurationTool/raw/main/rctDeb/rct_0.2-6_amd64.deb dpkg -i rct_0.2-6_amd64.deb
9. configure rct. Manual configuration or automatic setup. Setup will try to find network interfaces and offer you to add to add to the rct configuration.
. /etc/profile.d/rconfig.sh # reload bash completion file (or logout & login) rconfig vpp setup # start setup rconfig vpp set MainCore 1 Workers 2 # configure VPP to use 3 cpu cores for workers and core 0 as main rconfig save -f # save additional configuration before start rconfig save default -f # save configuration file as default cfg (`rconfig restore default`)
10. If show your interfaces, you are still connected to the management port, you can enable rct on startup.
# start service systemctl start rctStart && sleep 5 vppctl show interface # if show your interfaces and you are still connected to the management port, you can enable rct on startup systemctl enable rctStart
apt purge rct -y && rm -rf /etc/rct
apt purge isc-kea* -y
apt purge vpp* -y
reboot
note: !!! install all actual dependents from upper section - point 3. !!!
note: Upgrade via management interface is preferred. If /etc/rct/startup.cfg
exist, service rctStart
will be started and enabled after startup.
note: If you need upgrade VPP, use installation instruction above
- download and install latest rct version:
Installation step 8.
- reload bash completion file (or logout & login to make bash-completion work again)
. /etc/profile.d/rconfig.sh
note: !!! vpp upgrade recommended via management interface only !!!
- disable service and reboot router
systemctl disable rctStart && reboot
- download new VPP packages and install it with dpkg:
Installation step 3.
- enable service and reboot router
systemctl enable rctStart && reboot
rconfig save
# save running configuration to startup
rconfig commit
# apply configuration, no save
rconfig restore default
# restore configuration from default(created by rconfig vpp setup
) to running without commit
rconfig commit dpdk
# perform full vpp & controlplane restart
rconfig address show
rconfig ping
# ping command alias, executed in controlplane
rconfig ip
# ip command alias, executed in controlplane
rconfig traceroute
# traceroute command alias, executed in controlplane
birdc
# interactive bird debug cli
birdc c
# reload bird configuration
vppctl
# interactive vpp debug cli
ip netns exec controlplane bash
# jump from management namespace to controlplane namespace (useful for debug)
systemctl status rctBird
systemctl status rctSshd
systemctl status rctVpp
systemctl status rctKea4
systemctl status rctKea6
systemctl status rctSnmpd
systemctl status rctKea6RouteHelper
- jitter issue (about 6-10ms) can be observed on the PC Engines APU2/4 board with Debian 11 + original kernel. Custom kernel with ubuntu kernel .config fix this issue.
- Intel X552 sfp+ port without inserted optical module and
AdminUp true
causerconfig commit dpdk
failure (no issue forAdminUp false
or with inserted optical module)