######################################################################
#                             SDN-tap                                #
#                         Barbora Franková                           #
#                      ifrankova@fit.vutbr.cz                        #
######################################################################

Obsah
========

apps/
  mininet/    - skripty pro instalaci OpenvSwitch a mininet (verze 2.1.0
                + patch pro fungování s OpenFlow v1.3)

src/          - zdrojové kódy programu
  test_topo/  - testovací topologie pro mininet

Instalace
=========

1) instalace patchovaného mininetu (newPatch se nachází ve složce 
apps/mininet nebo na stránce https://wiki.opendaylight.org/view/
CrossProject:Integration_Group:Create_System_Test_Environment)

git clone git://github.com/mininet/mininet
cd mininet/
git checkout -b 2.1.0p1 2.1.0p1
git apply -p0 < newPatch
cd ./util
./install.sh -nfv

2) instalace OpenVSwitch (skript ve složce apps/mininet)

aptitude remove openvswitch-common openvswitch-datapath-dkms
openvswitch-controller openvswitch-pki openvswitch-switch -y

cd /tmp
wget http://openvswitch.org/releases/openvswitch-2.3.0.tar.gz
tar zxvf openvswitch-2.3.0.tar.gz
cd openvswitch-2.3.0
./configure --prefix=/usr --with-linux=/lib/modules/`uname -r`/build
make
make install
make modules_install
rmmod openvswitch
depmod -a

/etc/init.d/openvswitch-controller stop
update-rc.d openvswitch-controller disable

/etc/init.d/openvswitch-switch start

Spuštění
========

1) spuštění mininetu s vlastní topologií
sudo mn --custom FullMeshTopo.py --topo fullmesh --mac --controller
remote,ip=127.0.0.1,port=6653 --switch ovsk,protocols=OpenFlow13

2) spuštění kontroleru
./apps/odl/OpenDaylight-0.2.3-Helium-SR3/bin/karaf

3) spuštění SDN-tapu
./SDN-tap

4) vložení IP adresy zařízení, která se budou odposlouchávat 
(případně trojice a pětice pro přesnější specifikaci zachytávaných dat)
./insertIntercept 10.10.10.5
./insertIntercept tcp3:10.10.10.5_80
./insertIntercept tcp(10.10.10.5, 80, 10.10.10.6, 14235)

5) odstranění IP adresy (trojice a pětice podobne jako při vkládání)
./DeleteIntercept 10.10.10.5

Poznámky
========

1) Rozhraní, na kterém je připojeno sběrné zařízení, je nutné
specifikovat v souboru ProbeConfig.
Ukázka záznamu:

probe:42 openflow:4:2 42

-> sonda s ID 42 je připojena k přepínači s ID 4 na rozhraní 2
   a pakety se budou tagovat VLAN 42

2) V souboru ProbeConfig lze také nastavit váhu linek. Pokud bude
váha větší nebo rovna 1000, bude se daná linka používat pouze v
případě, že ke sběrnému zařízení neexistuje jiná cesta.

weight openflow:3 openflow:4 1000

-> váha linky mezi přepínačem 3 a přepínačem 4 je nastavena na 1000

Další informace
===============

- popis instalace mininetu
https://wiki.opendaylight.org/view/CrossProject:Integration_Group:
Create_System_Test_Environment

- shrnutí rozšíření OpenFlow v1.3, které bylo implementováno v
OpenDaylight kontroleru
https://wiki.opendaylight.org/images/d/dc/Openflow1.3_Support_for
_Opendaylight.pdf

- ukázka práce s vkládáním a odstraňováním pravidel
https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:
Restconf:Real_world_example

- popis jednotlivých částí OpenDaylight kontroleru
https://wiki.opendaylight.org/view/L2_Switch:Helium:User_Guide

- seznam známých chyb kontroleru OpenDaylight
https://wiki.opendaylight.org/view/OpenDaylight_Bugs
