Bridges, puertos y bondings

Antes de entrar en materia, vamos a ver algunos comandos que nos seran útiles para crear, modificar y listar los parámetros  de bridges/puertos/bondings.

Bridges:

Para agregar un bridge la sintaxis és la siguiente:

ovs-vsctl add-br <nombre>

Una vez creado un bridge, si queremos ver las propiedades:

ovs-vsctl list bridge <nombre>

O si queremos ver las propiedades de todos los bridges:

ovs-vsctl list bridge

Esto no dará una salida parecida a la siguiente:

_uuid               : d755e5f7-04c0-477d-91b4-e0b6c078e330
controller          : []
datapath_id         : "00000026b9fae772"
datapath_type       : ""
external_ids        : {}
fail_mode           : []
flood_vlans         : []
mirrors             : []
name                : "br2066"
netflow             : []
other_config        : {}
ports               : [285c7888-d9ec-4eb6-a6cd-33865d946e81]
sflow               : []
status              : {}
stp_enable          : false

Para eliminar un bridge:

ovs-vsctl del-br <nombre>

Puertos:

Para los puertos, la sintaxis es parecida, pero siempre va asociado a un bridge:

ovs-vsctl add-port <bridge> <puerto>

Si queremos que este puerto este asociado a una interficie de red que creara el openvswitch (NO para una interfície que ya exista en la maquina), luego le podremos poner una IP por ejemplo:

ovs-vsctl add-port <bridge> <puerto> -- set interface <puerto> type=internal

Una vez creado el puerto podemos ver sus propiedades:

ovs-vsctl list port <puerto>

Nos dará una salida parecida a la siguiente:

_uuid               : fd908ca0-c636-41bd-bca9-29fcf2e60bce
bond_downdelay      : 0
bond_fake_iface     : false
bond_mode           : []
bond_updelay        : 0
external_ids        : {}
fake_bridge         : false
interfaces          : [13ca2629-5fac-412c-8dcd-b21e917f48e3]
lacp                : []
mac                 : []
name                : "puerto"
other_config        : {}
qos                 : []
statistics          : {}
status              : {}
tag                 : []
trunks              : []
vlan_mode           : []

Aqui ya podemos ver algunas propiedades interesantes, vemos como podemos configurar parametros como trunks o tag si estamos entrando VLANs taggeadas o el modo lacp si quisieramos configurarla en este modo. Para modificar alguna de sus propiedades, la sintaxis es la siguiente:

ovs-vsctl set port <puerto> <propiedad>=<valor>

Así, si quisieramos modificar el tag del puerto, un ejemplo podria ser:

ovs-vsctl set port br01pr01 tag=2022

Y para volver a dejarlo sin tag:

ovs-vsctl set port br01pr01 tag=[]

Bondings e interfícies

Para crear bondings, lo que hacemos es crear un puerto (asociado a un bridge) con bonding formado de dos o más interfícies de red físicas. Al ser creado como un puerto tendrá los mismos atributos que hemos visto para los puertos.

ovs-vsctl add-bond <bridge> <bond_port> <if1> <if2> ...

Por ejemplo si quisieramos crear un bonding sobre las interfícies eth0 y eth1

ovs-vsctl add-bond br01 bond0 eth0 eth1

Para ver el estado del bonding, ejecutamos:

ovs-appctl bond/show bond0

Un puerto esta formado por una o mas interfícies, en los puertos con bonding estan formados por mas de una. Una interfície puede ser mapeada a una interfície de red física de la máquina o a una interfície correspondiente de una maquina virtual. Para ver las interfícies:

ovs-vsctl list interface

O con:

ovs-vsctl show

también vemos toda la estructura de interfícies y bridges a los que estan mapeadas.