10 ejemplos de uso del comando brctl de Linux

brctl significa Bridge Control (control de puente).

En Linux, este comando se usa para crear y manipular el puente o Bridge de Ethernet.

Esto se usa generalmente cuando tienes múltiples redes ethernet en tus servidores, y deseas combinarlas y presentarlas como una red lógica.

Por ejemplo, si tienes eth0 y eth1, puedes combinarlos y presentarlos como solo br0, lo que hará que uses eth0 y eth1 para el tráfico de red.

En este tutorial, haremos lo siguiente:

  1. Crear un nuevo puente Ethernet usando addbr.
  2. Mostrar el puente Ethernet disponible usando show.
  3. Eliminar el puente Ethernet existente usando delbr.
  4. Agregar una interfaz al puente existente.
  5. Agregar múltiples interfaces al puente existente.
  6. Seguimiento de la dirección MAC de un puente.
  7. Establecer el tiempo de caducidad para la dirección Mac en un puente.
  8. Configurar spanning tree en el puente Ethernet.
  9. Visualizar valores de parámetros STP de un puente.
  10. Cambiar los valores de los parámetros del puente.

1. Crear un nuevo puente Ethernet usando addbr

Usando brctl addbr, podemos crear un nuevo puente de ethernet.

En el siguiente ejemplo, hemos creado tres puentes de ethernet en este servidor: dev, stage y prod.

Ten en cuenta que, en esta etapa, esto es solo un puente de Ethernet vacío que no tiene ninguna otra red Ethernet en él.

Otro aspecto a tomar en cuenta es que, este brctl es un poco diferente al Ethernet Channel Bonding.

2. Mostrar el puente Ethernet disponible usando show

Usando brctl show, podemos ver todos los puentes de ethernet disponibles en tu servidor.

El siguiente ejemplo mostrará todas las instancias actuales de los tres puentes que acabamos de crear.

Si notas que la última columna “interfaces” no tiene nada. Esto significa que ninguno de este puente actualmente tiene asociado ningún dispositivo Ethernet.

En un artículo anterior, relacionado con este tema vimos el uso de ethtool.

3. Eliminar el puente Ethernet existente usando delbr

Usando brctl delbr, podemos eliminar un puente de ethernet existente.

El siguiente ejemplo eliminará la instancia “stage” del puente ethernet.

Como puedes ver en el comando show, ya no vemos el puente ethernet “stage”.

Ten en cuenta que cuando un puente está activo (es decir, up), no puedes eliminarlo. Primero debes desactivar el puente y luego eliminarlo.

Además, ten en cuenta que el comando brctl anterior se llamó brcfg.

4. Agregar una interfaz al puente existente

Usando brctl addif, podemos agregar una interfaz a un puente ethernet existente.

El siguiente ejemplo agregará la red ethernet eth0 al puente “dev” que acabamos de crear.

Advertencia: no intentes esto en ninguna máquina crítica, ya que podrías perder la conexión de red a esa máquina cuando algo sale mal. Prueba esto solo en una instancia de prueba donde tengas acceso a la consola.

En lo anterior:

  • Esto realmente hará que eth0 actúe como puerto del puente “dev”.
  • Por lo tanto, todas las tramas que llegan a eth0 se procesarán como si realmente llegara al puente.
  • Además, cuando las tramas se envían en el puente “dev”, utilizará eth0. Cuando varias interfaces son parte del puente “dev”, eth0 será un candidato potencial para enviar las tramas salientes desde el puente.

Después de agregar eth0 al puente “dev”, el comando brctl show mostrará lo siguiente.

Como puedes ver en el resultado anterior, la última columna “interfaces” tiene a eth0 para el puente “dev”.

Nota: Si algo sale mal al agregar eth0 al puente “dev”, ejecuta el siguiente comando desde la consola para eliminar el puente dev.

Además, ten en cuenta que, si intentas agregar la interfaz loopback al puente, obtendrás el siguiente comando de argumento no válido.

# brctl addif dev lo
can’t add lo to bridge dev: Invalid argument

Como puedes imaginar, no puedes agregar una interfaz que no existe en el sistema al puente.

5. Agregar múltiples interfaces al puente existente

En el ejemplo anterior, agregamos solo un dispositivo ethernet (eth0) al puente.

Pero, la idea de usar un puente es agregar más interfaces al puente.

En el siguiente ejemplo, estamos agregando eth0 y eth1 al puente “dev”.

Como puedes ver en el siguiente resultado, para el puente “dev” vemos dos líneas. En la última columna “interfaces”, vemos eth0 y eth1 para el puente de ethernet “dev”.

Nota: Si una interfaz de Ethernet en particular ya es parte de un puente, entonces no puedes agregarla a otro puente.

Básicamente, una red puede ser parte de un solo puente. Si no, obtendremos el siguiente mensaje de error cuando intentemos agregarlo a otro puente.

6. Seguimiento de la dirección MAC de un puente

Usando brctl showmacs, podemos ver todas las direcciones MAC aprendidas de un puente.

En el siguiente ejemplo, a partir de ahora, las siguientes son las dos direcciones mac que se conectaron al puente de Ethernet “prod”. Estos datos seguirán cambiando dependiendo del estado actual de lo que está conectado al puente.

7. Establecer el tiempo de caducidad para la dirección Mac en un puente

En el siguiente ejemplo, estamos configurando el tiempo de caducidad de la dirección mac en 120 segundos en el puente ethernet “dev”.

En lo anterior:

  • dev es el nombre del puente donde estamos estableciendo este valor.
  • 120 son segundos
  • Entonces, si no se ve un frame para el puente “dev” en 120 segundos, entonces el puente “dev” eliminará la dirección mac de la base de datos de reenvío.

8. Configurar spanning tree en el puente Ethernet

Usando brctl stp, podemos configurar spanning tree en el puente de ethernet.

Pero por defecto, spanning tree no está habilitado cuando creamos un puente.

El spanning tree es útil cuando tienes varios puentes en tu red, y todos pueden colaborar para encontrar la ruta más corta entre dos ethernet.

En el siguiente ejemplo, estamos activando spanning tree en el puente de ethernet “dev”.

Podemos usar on o yes para habilitar el árbol de expansión. Entonces, los dos comandos siguientes harán exactamente lo mismo.

Como puedes ver en la siguiente salida del programa, los valores en la columna “STP enable” para el puente “dev” ahora son “yes”.

Para desactivar el árbol de expansión en tu puente de ethernet, haz lo siguiente:

9. Visualizar valores de parámetros STP de un puente

STP significa Protocolo Spanning Tree.

Una vez que hayas habilitado stp en tu puente, puedes usar showstp como se muestra a continuación para ver todos los valores de parámetros stp de tu puente.

A continuación, se mostrará el parámetro stp y su valor actual para el puente “dev”.

10. Cambiar los valores de los parámetros del puente

Se pueden cambiar los valores predeterminados del parámetro del spanning tree, para un puente específico. También puedes cambiar otros valores de parámetros del puente que creaste.

Todos los siguientes comandos de set mencionados en la tabla a continuación comienzan con brctl. Por ejemplo:

La siguiente tabla muestra los comandos set disponibles para brctl. El valor del tiempo es en segundos.

Comando brctl Descripción
setageing bridge time Establecer tiempo de caducidad
setbridgeprio bridge prio Establecer la prioridad del puente (entre 0 y 65535)
setfd bridge time Establecer retraso de respuesta del puente
sethello bridge time Establecer hello time
setmaxage bridge time Establecer el tiempo máximo del mensaje
setgcint bridge time Establecer el intervalo de recolección en segundos
sethashel bridge int Establecer elasticidad hash
sethashmax bridge int Establecer hash max
setmclmc bridge int Establecer el recuento de últimos miembros de multidifusión
setmcrouter bridge int Establecer enrutador de multidifusión
setmcsnoop bridge int Establecer escaneo de multidifusión
setmcsqc bridge int Establecer el recuento de consultas de inicio de multidifusión
setmclmi bridge time Establecer el intervalo del último miembro de multidifusión
setmcmi bridge time Establecer intervalo de membresía de multidifusión
setmcqpi bridge time Establecer intervalo del interrogador de multidifusión
setmcqi bridge time Establecer intervalo de consulta de multidifusión
setmcqri bridge time Establecer intervalo de respuesta de consulta de multidifusión
setpathcost bridge port cost Establecer el intervalo de consulta de inicio de multidifusión
costo del puerto del puente setpathcost Establecer costo de ruta
setportprio bridge port prio Establecer la prioridad del puerto (entre 0 y 255)
setportmcrouter bridge port int Establecer puerto de enrutador multidifusión
puente sethashel int Establecer valor de elasticidad hash