Zodiac FX + faucet: información almacenada en el controlador
Para ver la información del controlador podemos arrancar faucet para que exporte el API REST y permitir hacer consultas desde un navegador. También se puede usar postman para poder manejar más fácilmente las consultas.
Para arrancar faucet y que exporte API REST:
/usr/local/bin/ryu-manager --verbose --ofp-listen-host=10.0.1.8 --ofp-tcp-listen-port=6633 /home/pi/faucet/faucet/faucet.py ryu.app.ofctl_rest
Para consultar la información del controlador a través de este API se puede usar un navegador o la aplicación postman de Chrome. Para instlar Postman desde el nevegador Chrome usar la URL de las aplicaciones de Chrome para buscar la aplicación Postman e instalarla.
Para obtener información del controlador se hacen peticiones GET HTTP a la máquina donde está instalado el controlador y puerto 8080. En este enlace se puede encontrar toda la descripción del API. Algunas de las peticiones útiles son:
Obtener insformación de los switches conectados al controlador:
- GET <dirIP>:8080/stats/switches
En la siguiente figura se ve que la dirección IP donde se encuentra el controlador es accesible a través de la dirección IP 192.168.1.39 (configurada en su interfaz wlan0). El resultado de esta petición es DPID (datapath_id) en decimal 123917682136908, que coincide con el identificador del switch en hexadecimal 0x70b3d56cd74c.
Obtener descripción del switch dado por
: - GET <dirIP>:8080/stats/desc/<DPID>
Obtener infromación de las tablas el switch dado por
: - GET <dirIP>:8080/stats/table/<DPID>
En la siguiente figura se observa que ZodiacFX tiene 10 tablas, desde table_id 0 a 9.
Obtener infromación de los flujos en el switch dado por
: - GET <dirIP>:8080/stats/flow/<DPID>
Las tablas en faucet después de comunicar el controlador con el switch son las siguientes:
Table (name) | Priority | dl_dst | dl_src | dl_vlan | dl_type | in_port | actions | meaning |
---|---|---|---|---|---|---|---|---|
1 (VLAN) | 9099 | ff:ff:ff:ff:ff:ff | None (DROP) | Descartar dirección ethernet origen=broadcast | ||||
1 (VLAN) | 9099 | 01:80:c2:00:00:00 | None (DROP) | Descartar STP BPDU | ||||
1 (VLAN) | 9099 | 01:00:0c:cc:cc:cd | None (DROP) | Descartar STP BPDU | ||||
1 (VLAN) | 9099 | 35020 | None (DROP) | Descartar LLDP | ||||
1 (VLAN) | 9001 | 0e:00:00:00:00:01 | None (DROP) | FAUCET_MAC=0e:00:00:00:00:01, descartar spoofing. | ||||
1 (VLAN) | 0 | None (DROP) | ||||||
2 (VLAN ACL) | 0 | None (DROP) | ||||||
3 (ETH_SRC) | 0 | None (DROP) | ||||||
4 (IPv4_FIB) | 0 | None (DROP) | ||||||
5 (IPv6_FIB) | 0 | None (DROP) | ||||||
6 (ETH_DST) | 9000 | GOTO_TABLE:7 | Ir a la tabla de inundación para destinos no conocidos | |||||
6 (ETH_DST) | 0 | None (DROP) | ||||||
7 (FLOOD) | 9004 | 01:00:5e:00:00:00/ ff:ff:ff:00:00:00 | 100 | 1 | "POP_VLAN", "OUTPUT:2", "OUTPUT:3" | Cualquier dirección que comience por 01:00:5e:::__ (máscara ff:ff:ff:00:00:00) y con etiqueta VLAN=100 es de IPv4 multicast y se reenvía por tofos los puertos | ||
7 (FLOOD) | 9004 | 01:00:5e:00:00:00/ ff:ff:ff:00:00:00 | 100 | 2 | "POP_VLAN", "OUTPUT:1", "OUTPUT:3" | |||
7 (FLOOD) | 9004 | 01:00:5e:00:00:00/ ff:ff:ff:00:00:00 | 100 | 3 | "POP_VLAN", "OUTPUT:1", "OUTPUT:2" | |||
7 (FLOOD) | 9002 | 01:80:c2:00:00:00/ ff:ff:ff:00:00:00 | 100 | 1 | "POP_VLAN", "OUTPUT:2", "OUTPUT:3" | Cualquier dirección que comience por 01:80:c2:::__ (máscara ff:ff:ff:00:00:00) y con etiqueta VLAN=100 es una dirección de grupo para otros protocolos diferentes de IP se reenvía por tofos los puertos sin etiqueta | ||
7 (FLOOD) | 9002 | 01:80:c2:00:00:00/ ff:ff:ff:00:00:00 | 100 | 2 | "POP_VLAN", "OUTPUT:1", "OUTPUT:3" | |||
7 (FLOOD) | 9002 | 01:80:c2:00:00:00/ ff:ff:ff:00:00:00 | 100 | 3 | "POP_VLAN", "OUTPUT:1", "OUTPUT:2" | |||
7 (FLOOD) | 9000 | 100 | 1 | "POP_VLAN", "OUTPUT:2", "OUTPUT:3" | cualquier paquete con etiqueta VLAN=100 se reenvía por el resto de puertos | |||
7 (FLOOD) | 9000 | 100 | 2 | "POP_VLAN", "OUTPUT:1", "OUTPUT:3" | ||||
7 (FLOOD) | 9000 | 100 | 3 | "POP_VLAN", "OUTPUT:1", "OUTPUT:2" | ||||
7 (FLOOD) | 0 | None (DROP) |