Řízení SDN podle identit

Autor: Martin Holkovič, iholkovic@fit.vutbr.cz

Popis: Nástroj Řízení SDN podle identit (SDNIM) propojuje systém pro správu 
identit SIMS s SDN kontrolerem Pyretic, což umožňuje využití znalosti identit 
uživatelů při řížení sítě. Propojení je umožněno na základě rozšíření 
kontroleru a vytvořené Pyretic aplikace pro spravování a sdílení přijatých 
informací ze systému SIMS. Pomocí tohoto nástroje je možné vytvářet další 
Pyretic aplikace pro řízení sítě na základě identit uživatelů v síti. Součástí 
nástroje jsou implementovány případy použití zaměřené na filtraci provozu, 
směrování a účtování.

Seznam prvků:
Pyretic - OpenFlow kontroler pro řízení OpenFlow přepínačů (OVS-switch)
Switch - Libovolný síťový přepínač
OVS-switch - OpenFlow přepínač, hardwarový nebo softwaový
WIS - Webový Informační Systém pro přihlašováí uživatelů
SIMS - Systém pro správu identit uživatelů, systém musí být připojen jak do 
       uživatelské sítě tak do síťe ve které se nachází kontroler

Zapojení:
                                                          
                       +---------+                        
                       | Pyretic |                        
                       +---------+                        
                            |                             
                            |                             
                       +---------+                        
                       | Switch  |-----------------------+
                       +---------+                       |
                         |  |  |                         |
         +---------------+  |  +---------------+         |
         |                  |                  |         |
   +------------+     +------------+     +------------+  |
   | OVS-switch |     | OVS-switch |     | OVS-switch |  |
   +------------+     +------------+     +------------+  |
         |                                     |         |
      +-----+                               +------+     |
      | WIS |                               | SIMS |-----+
      +-----+                               +------+      
                                                          

Instalace:
1. SIMS:
-	skopírovat složku z ./source_files/SIMS někde na disk
-	do složky ./src/src/ skopírovat všechny soubory z ./source_files/patch/SIMS/
-	sudo apt-get install bash build-essential python-dev python-ipy \
    python3-ipy libpcap-dev python-pcapy python-scapy libdb-dev libmysql++-dev \
    graphviz

2. Pyretic:
-	Nainstalovat Ubuntu 14.04
-	Nainstalovat Guest Addition
-	skopírovat pox-carp.zip z ./source_files/controller a rozbalit do ~/pox/
-	skopírovat pyretic-master.zip z ./source_files/controller a rozbalit 
    do ~/pyretic/
-	sudo apt-get install python-setuptools 
-	sudo apt-get install python-dev python-pip python-netaddr screen hping3 \
    ml-lpt graphviz ruby1.9.1-dev libboost-dev libboost-test-dev \
    libboost-program-options-dev libevent-dev automake libtool flex bison \
    pkg-config g++ libssl-dev python-all python-all-dev python-all-dbg
-	sudo pip install networkx bitarray netaddr ipaddr pytest ipdb sphinx \
    pyparsing==1.5.7 yappi
-	sudo gem install Jekyll
-	skopírovat asynchat.py z ./source_files/controller (použit v dalším bodě)
-	sudo mv asynchat.py /usr/lib/python2.7/
-	sudo chown root:root /usr/lib/python2.7/asynchat.py
-	export PATH=$PATH:$HOME/pyretic:$HOME/pox   
-	export PYTHONPATH=$HOME/pyretic:$HOME/mininet:$HOME/pox
-	skopírovat do složky ~/pyretic/pyretic/examples všechny soubory 
    z ./source_files/patch/Pyretic/
-	chmod +x ~/pyretic/patch.sh
-	~/pyretic/patch.sh
-	skopírovat iricollector.zip z ./source_files/iricollector a rozbalit
-	sudo apt-get install python3-ipy
-	v iri-collector.ini nastavit IP adresu SIMSu - sekce [iricore]
-	přejít do složky ~/pyretic/pyretic/examples
-	upravit soubor shared.py
-	nastavit IP adresu SIMSu - položka 'sims_ip'
-	nastavit IP adresy DHCP serverů do proměnné dhcpServers

3. OVS-switch:
-	apt-get install openvswitch-common openvswitch-switch
-	sudo apt-get install mininet
-	ovs-vsctl --if-exists del-br br0
-	ovs-vsctl add-br br0
-	ovs-vsctl set-fail-mode ovs-switch secure
# přidat příslušná rozhraní do přepínače (např. eth0)
-	ovs-vsctl add-port eth0
-	ifconfig eth0 0

# každýmu přepínači přidelit unikátní ID (např. ID=1)
-	ovs-vsctl set bridge br0 other-config:datapath-id=0000000000000001
# na každém přepínači nastavit IP adresu kontroleru (např. IP=192.168.1.208)
-	ovs-vsctl set-controller br0 tcp:192.168.1.208:6633 

4. WIS:
-	sudo apt-get install apache2 php5
-	sudo chown $USER:$USER /var/www/html
-	skopírovat obsah složky z ./source_files/WIS do /var/www/html
-	skopírovat iricollector.zip z ./source_files/iricollector a rozbalit
-	sudo apt-get install python3-ipy
-	v iri-collector.ini nastavit IP adresu SIMSu - sekce [iricore]

Spuštění:
SIMS:
-	přejít do složky ./src
-	python interface2sdn.py 21102 21099
-	spustit nový terminál
-	přejít do složky ./src
-	./sims.sh start info
-	script sims.sh sa vypína pomocí ./sims.sh stop-please


COLLECTOR:
-	přejít do složky s kolektorem
-	sudo python3 iricollector.py info


CONTROLLER:
-	upravit soubor run.py
-	upravou hodnoty proměnnej usecase na řádku 18 sa nastavuje který use case se použije
-	přejít do složky ~/pyretic/
-	python pyretic.py -m p0 -v low pyretic.examples.run

