Skip to content
This repository has been archived by the owner on Mar 26, 2021. It is now read-only.
ahmed amamou edited this page Dec 23, 2016 · 18 revisions

Step 1: Get the code

Clone github repositories

Kernel:

$ git clone https://github.com/Gandi/ktrill.git
$ cd ktrill
$ git checkout devel

Quagga:

$ git clone https://github.com/Gandi/quagga.git
$ cd quagga
$ git checkout dev_trill

Bridge-utils:

$ git clone https://github.com/Gandi/bridge-utils.git
$ cd bridge-utils
$ git checkout trill

Setp 2: compile

Kernel:

Compile the kernel with these options
CONFIG_TRILL=y
CONFIG_TRILL_VNT=y

Quagga:

In order to compile the Quagga daemon, these packages are required : libncurses5-dev libreadline-dev texlive-latex-base texlive-generic-recommended libcap-dev texinfo (>= 4.7) imagemagick ghostscript groff autotools-dev hardening-wrapper libpcre3-dev gawk chrpath libsnmp15 libsnmp-dev libtool
and
libpam0g-dev or libpam-dev
libnl3-dev or libnl-genl-3-dev or libnl-3-dev
Use this compile command
$ cd quagga
$ ./bootstrap.sh && ./configure --localstatedir=/var/run/quagga --enable-isisd --enable-trilld --enable-trilld-monitoring --disable-ipv6 --disable-ospfd --disable-ospfclient --disable-ripd --disable-babeld --disable-bgpd && make && make install

Bridge-utils:

$ cd bridge-utils
$ autoconf && ./configure && make && make install

Step 3: Use

Kernel:

Boot on compiled kernel

Quagga:

ZEBRA_CONF= [zebra.conf.sample] (https://github.com/Gandi/quagga/blob/dev_trill/zebra/zebra.conf.sample)
TRILLD_CONF = [trilld.conf.sample] (https://github.com/Gandi/quagga/blob/dev_trill/isisd/trilld.conf.sample)
$ zebra -f $ZEBRA_CONF -P 2121 -u quagga -d
$ trilld -f $TRILLD_CONF -P 2021 -u quagga -d

Bridge-utils:

Available new commands
brctl trill <bridge> {on|off} turn trill on/off
brctl setvni <bridge> <port> <vni> set virtual network id
brctl delvni <bridge> <port> delete virtual network id
brctl showvs <bridge> show vitrual network id
brctl showmacs_nick <bridge> show a list of mac addrs and correspondant nick (experimental)

NB :

you need a correct port flag configuration:
4 -> access port (where native flow is expected)
8 -> trunk port (where trill flow is expected)
example:
echo 4 > /sys/class/net/veth0/brport/trill_state
echo 8 > /sys/class/net/eth0/brport/trill_state
For the access port tag is not mandatory when vni are used
brctl setvni <bridge> <port> <vni>

Documentation

For more details view these documents:
Computer Network paper
Kernel recipes 2013 presentation slides
Dot scale youtube presentation

Main Contributors

Ahmed Amamou
Kamel Haddadou
William Dauchy