Conectamos al switch por ssh
ssh root@192.168.1.1
Instalamos openvswitch
opkg update && opkg install openvswitch
Confirmamos que ovsdb-server en funcionamiento
ps | grep openvswitch
Modificamos las configuración de red editando el archivo /etc/config/network
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config globals 'globals'
option ula_prefix 'fd9e:ad02:4a25::/48'
# dhcp wan for management
config interface 'wan'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.0.10'
option netmask '255.255.255.0'
config interface 'wan6'
option ifname 'eth0'
option proto 'dhcpv6'
config switch
option name 'switch0'
option reset '1'
option enable_vlan '1'
option enable_learning '0'
# Wan en vlan 2
# las demas interfaces en vlan 1
config switch_vlan
option device 'switch0'
option vlan '2'
option ports '5 6'
config switch_vlan
option device 'switch0'
option vlan '3'
option ports '1 0t' # 0t indica etiquetar paquetes en la interfaz 0
config switch_vlan
option device 'switch0'
option vlan '4'
option ports '2 0t'
config switch_vlan
option device 'switch0'
option vlan '5'
option ports '3 0t'
config switch_vlan
option device 'switch0'
option vlan '6'
option ports '4 0t'
# eth1.* estática y controlada por el controlador
config interface 'lan1'
option ifname 'eth1.3'
option proto 'static'
config interface 'lan2'
option ifname 'eth1.4'
option proto 'static'
config interface 'lan3'
option ifname 'eth1.5'
option proto 'static'
config interface 'lan4'
option ifname 'eth1.6'
option proto 'static'
Modificamos el archivo /etc/config/firewall
para permitir todo el tráfico en la wan que usamos para la conexión con el controlador
config defaults
option syn_flood 1
option input ACCEPT
option output ACCEPT
option forward ACCEPT
Reiniciamos firewall y red.
/etc/init.d/firewall restart && /etc/init.d/network restart
Conectamos a la wan del router ssh root@192.168.0.10
Configuramos ovs
ovs-vsctl add-br br-lan \
-- set bridge br-lan other-config:hwaddr=00:00:aa:bb:cc:dd \
-- set bridge br-lan protocols=OpenFlow10,OpenFlow13 \
-- set-controller br-lan tcp:192.168.0.1:6633 \
-- add-port br-lan eth1.3 \
-- add-port br-lan eth1.4 \
-- add-port br-lan eth1.5 \
-- add-port br-lan eth1.6
En el controlador creamos el archivo de configuración /etc/ryu/faucet/faucet.yaml
vlans:
1:
vid: 1
dps:
switch-1:
dp_id: 0xaabbccdd
timeout: 3600
arp_neighbor_timeout: 3600
proactive_learn: True
interfaces:
1:
name: "eth1.3"
native_vlan: 1
2:
name: "eth1.4"
native_vlan: 1
3:
name: "eth1.5"
native_vlan: 1
4:
name: "eth1.6"
native_vlan: 1
Comandos útiles:
# Reiniciar faucet
pkill -HUP -f faucet.faucet
# Mostrar puerto-interfaz en Open vSwitch
ovs-vsctl -- --columns=name,ofport list Interface
# Mostrar flujos en switch, dump_flows br-lan
dump_flows () {
ovs-ofctl -OOpenFlow13 --names --no-stat dump-flows "$@" \
| sed 's/cookie=0x5adc15c0, //'
}
# Configurar datapath (16 dígitos hexa) en Open vSwitch
ovs-vsctl set bridge $BRIDGE other-config:datapath-id=$DATAPATHID