# 2.6. Traffic Engineering Demo (PENDING) ## Setup Test-Bed ### Setup libyang $ sudo apt update $ sudo apt-get install cmake libpcre2-dev git make build-essential $ mkdir -p ~/testbed $ cd ~/testbed $ git clone git@github.com:CESNET/libyang.git $ cd libyang $ git checkout v2.0.0 $ mkdir build; cd build $ cmake -D CMAKE_INSTALL_PREFIX:PATH=/usr -D CMAKE_BUILD_TYPE:String="Release" .. $ make $ sudo make install ### Setup Free Range Routing $ sudo apt update $ sudo apt-get install git autoconf automake libtool make libreadline-dev texinfo pkg-config libpam0g-dev libjson-c-dev bison flex libc-ares-dev python3-dev python3-sphinx install-info build-essential libsnmp-dev perl libcap-dev python2 libelf-dev libunwind-dev protobuf-c-compiler libprotobuf-c-dev libsystemd-dev $ mkdir -p ~/testbed $ cd ~/testbed $ git clone git@github.com:opensourcerouting/frr.git $ cd frr $ curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py $ sudo python2 ./get-pip.py $ export CFLAGS="-I /usr/local/include -g -O2" $ sudo rm -rf /usr/lib/frr $ sudo rm -rf /var/run/frr $ sudo mkdir -p /etc/frr $ sudo mkdir -p /var/run/frr $ sudo chown -R root:root /etc/frr $ ./bootstrap.sh $ ./configure \ --prefix=/usr \ --includedir=\${prefix}/include \ --enable-exampledir=\${prefix}/share/doc/frr/examples \ --bindir=\${prefix}/bin \ --sbindir=\${prefix}/lib/frr \ --libdir=\${prefix}/lib/frr \ --libexecdir=\${prefix}/lib/frr \ --localstatedir=/var/run/frr \ --sysconfdir=/etc/frr \ --with-moduledir=\${prefix}/lib/frr/modules \ --enable-configfile-mask=0640 \ --enable-logfile-mask=0640 \ --enable-snmp=agentx \ --enable-multipath=64 \ --enable-user=root \ --enable-group=root \ --enable-vty-group=root \ --enable-vtysh \ --with-pkg-git-version \ --with-pkg-extra-version=-MyOwnFRRVersion \ --enable-systemd=yes \ --enable-config-rollbacks \ --enable-pathd \ --enable-pcep $ make $ sudo make install ### Setup NetGen $ sudo apt update $ sudo apt-get install git ruby ruby-dev tmux gettext-base $ mkdir -p ~/testbed $ cd ~/testbed $ git clone git@github.com:sylane/netgen.git $ cd netgen $ git checkout teraflow $ sudo gem install bundler:1.15 $ bundle _1.15_ install ### Run the Test-Bed To start the testbed, we need to figure out the IP of the TE service: $ kubectl --namespace tfs get $(kubectl --namespace tfs get pods --selector=app=teservice -o name) --template '{{.status.podIP}}' And select the network namespace that defines it by looking into each of them until you find the correct one: $ ip netns list $ sudo ip -n XXX addr list When we have the IP and namespace we can start the testbed. In first console: $ cd ~/testbed $ ../tfs-ctrl/tutorial/2-6-te-demo-start-testbed.sh NETWORK_NAMESPACE TE_SERVICE_IP 10 11 12 13 Then in second console: $ sudo -i # cd /tmp/negen # ./tmux.sh