Creando entorno virtual:
python3 -m venv venv
Activando el entorno virtual:
source venv/bin/activate
Se puede confirmar si el entorno virtual está activado con el comando:
which python
Mientras se esté trabajando en el entorno virtual, pip
va a instalar las dependencias de Python en el directorio venv
,
y se podrán usar e importar en los scripts de Python.
Instalando dependencias desde requirements.txt
:
python3 -m pip install -r requirements.txt
De acuerdo a la documentación de Mininet, se puede instalar Mininet corriendo los siguientes comandos:
sudo apt update
sudo apt install mininet
Pox se encuentra incluido en este repositorio. Actualmente, estamos usando el release de gar-experimental el cual es la última versión estable que soporta Python 3. Si se encuentra algún inconveniente, se puede intentar usar el release de fangtooth. que soporta Python 2.
Iperf viene preinstalado en Ubuntu o en cualquiera distribución de Linux basada en Debian.
Xterm sirve para poder abrir una terminal dentro de un host de Mininet. Se puede instalar con el siguiente comando:
sudo apt install xterm
Para ejecutar la topología, se debe ejecutar los siguientes comandos:
Primero:
chmod +x ./scripts/*
Luego, levantar el controlador donde el primer parámetro indica el ID del switch al cual aplicar las reglas (en este caso será el switch 1):
./scripts/firewall-with-rules.sh 1
Finalmente, en una terminal diferente, ejecutar la topología:
./scripts/topo.sh 2
En este punto, se debe poder ver la topología corriendo dentro de Mininet. El primer parámetro de
topo.sh
es la cantidad de switches que se quieren utilizar.
Se cuentan con una serie de scripts para facilitar la ejecución de la topología y el controlador.
Permite levantar el controlador de POX con una serie de reglas customizadas y con el ID del switch al cual aplicar las reglas. En el caso de no especificar el switch ID, se tomará por defecto el valor 1.
./scripts/firewall.sh <switch-id> <rules-path>
Similar a firewall.sh
, permite levantar el controlador de POX con una serie de reglas por defecto para el trabajo práctico
(las que se encuentran en rules.json
) y con el ID del switch al cual aplicar las reglas. En el caso de no especificar el switch ID,
se tomará por defecto el valor 1.
./scripts/firewall-with-rules.sh <switch-id>
Permite levantar el controlador sin el firewall, es decir, se va a permitir todo tipo de tráfico.
./scripts/pox.sh
Permite levantar la topología de Mininet con la cantidad de switches especificada. En el caso de no especificar la cantidad de switches, se tomará por defecto el valor 2.
./scripts/topo.sh <number-of-switches>
Para abrir una terminal dentro de un host de Mininet, se puede ejecutar el siguiente comando:
xterm <host-name>
Por ejemplo, en nuestro caso si queremos tener una terminal dentro del host 1 y host 2, ejecutamos:
xterm host_1 host_2
Para realizar las diversas pruebas especificadas en el trabajo práctico, debemos levantar un servidor en un host y un cliente en otro host.
Si queremos levantar un servidor, una vez abierta la terminal de xterm dentro de un host, ejecutamos:
iperf -s -p <port> [-u]
En cambio, si queremos levantar un cliente:
iperf -c <ip-servidor> -p <port> [-u]
En ambos casos, el flag -u
es opcional y sirve para indicar que se va a usar UDP en lugar de TCP. Además,
la IP de los hosts comienzan a partir de10.0.0.1, es decir, al host 1 le corresponde 10.0.0.1, al host 2 le corresponde
10.0.0.2, etc.