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.
