... | ... | @@ -41,17 +41,17 @@ Vamos a arrancar un escenario sencillo para probar, el escenario se encuentra de |
|
|
|
|
|
Entramos en la carpeta '$HOME/OF-in-band-control-plane/testbed/scenarios_ether' y desde allí comenzamos a lanzar el escenario:
|
|
|
1. Arranque de escenario de mininet:
|
|
|
sudo python3 ./scenarios/arbol/scenario_arbol.py
|
|
|
` sudo python3 ./scenarios/arbol/scenario_arbol.py`
|
|
|
2. Dentro de mininet arrancaremos un terminal para s0 y activaremos el entorno sdnenv para encontrar los paquetes necesarios de python que necesita el controlador:
|
|
|
s0~:> source /home/sdnwifi/sdnenv/bin/activate
|
|
|
` s0~:> source /home/sdnwifi/sdnenv/bin/activate`
|
|
|
Observarás que el prompt ha cambiado, mostrando (sdnenv) al principio, ahora podemos lanzar el controlador que tiene su salida redirigida a un fichero '/tmp/salida':
|
|
|
s0~:> ryu-manager --verbose InBandController.py --config-file ./params-controller-s0.conf > /tmp/salida 2>&1
|
|
|
` s0~:> ryu-manager --verbose InBandController.py --config-file ./params-controller-s0.conf > /tmp/salida 2>&1`
|
|
|
3. Desde un terminal diferente (fuera de mininet) usaremos el siguiente script que crea los switches en los espacios de nombres y les proporciona un mínimo de configuración (script reglas-switch.sh):
|
|
|
sudo ./scenarios/arbol/start_scenario_arbol.sh
|
|
|
` sudo ./scenarios/arbol/start_scenario_arbol.sh`
|
|
|
|
|
|
El escenario está arrancado.
|
|
|
Para comprobar que los switches se han conectado al controlador, podemos hacer una búsqueda en el fichero de trazas que está escribiendo el controlador (/tmp/salida) y buscar la cadena "IS MANAGED":
|
|
|
sudo grep "IS MANAGED " /tmp/salida
|
|
|
` sudo grep "IS MANAGED " /tmp/salida`
|
|
|
|
|
|
Deberá aparecer una línea por cada switch que se ha conectado con el controlador y al cuál el controlador le ha instalado los flujos OpenFlow.
|
|
|
|
... | ... | @@ -85,13 +85,13 @@ Los paquetes que genere s0, saldrán de s0 con el camino puesto y por tanto el r |
|
|
|
|
|
|
|
|
Para ver los flujos instalados en un switch, se puede abrir un terminal de ese switch y allí ejecutar el comando 'dumpAllFlows.sh' añadiendo el nombre del switch. Por ejemplo, para ver los flujos de s3, abriremos una ventana de s3 y ejecutaremos:
|
|
|
s3:~> ./dumpAllFlows.sh s3
|
|
|
` s3:~> ./dumpAllFlows.sh s3`
|
|
|
|
|
|
Aquí saldrán muchos flujos que el controlador ha creado en s1, pero si nos fijamos en los flujos que hay instalados en la tabla 2 veremos que hay uno en concreto que es el que introduce la cabecera NSH para los paquetes que van desde s1 al controlador. Para ver los flujos de la tabla 2:
|
|
|
s3:~> ./dumpAllFlows.sh s3 | grep table_id=2
|
|
|
` s3:~> ./dumpAllFlows.sh s3 | grep table_id=2`
|
|
|
|
|
|
El switch s0 es el switch raíz y debe comunicarse con el resto de los switches de la topología, por eso, este switch debe tener en su tabla 2 un flujo por cada uno de los switches para introducir el camino para llegar a cada uno de ellos. Lo puedes ver si ejecutas:
|
|
|
s0:~> ./dumpAllFlows.sh s0 | grep table_id=2
|
|
|
` s0:~> ./dumpAllFlows.sh s0 | grep table_id=2`
|
|
|
|
|
|
Para ver el tráfico que genera cada switch, podemos usar wireshark, arrancado desde el terminal de un switch podrá capturar el tráfico en cualquiera de sus interfaces. Recuerda que el puerto 1 de s1, por ejemplo, es su interfaz s1-eth0, el puerto 2 de ese switch es s1-eth1 y así sucesivamente.
|
|
|
|
... | ... | @@ -99,7 +99,7 @@ Como primera aproximación al funcionamiento, podrías arrancar wireshark por ej |
|
|
|
|
|
|
|
|
Para interrumplir la ejecución del escenario, primero hay que interrumpir el controlador (pulsando Ctrl+C en la ventana de 's0' donde se está ejecutando el controlador y después hay que borrar las configuraciones de los switches, para ello desde un terminal de Linux hay que ejecutar:
|
|
|
sudo ./scenarios/arbol/stop_scenario_arbol.sh
|
|
|
` sudo ./scenarios/arbol/stop_scenario_arbol.sh`
|
|
|
|
|
|
Ahora ya se puede cerrar mininet.
|
|
|
|