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.