Maqueta de GNS3

Cumulus Linux – Primeros pasos con la maqueta

El otro día instalamos GNS3 con Virtualbox y levantamos unos switches con Cumulus Linux en GNS3.

En mi caso he dejado la maqueta tal y como os muestro en la imagen:

Maqueta inicial con GNS3
Maqueta inicial con GNS3

Además de los tres switches Cumulus que añadí he procedido a añadir dos PCs con Virtual PC.

La instalación es bastante trivial, no obstante os dejo aquí el procedimiento que he seguido en mi Debian 10 por si os sirve.

Instalar Virtual PC para GNS3 en Debian 10

Lo primero que tienes que hacer para poder añadir PCs en tu GNS3 es disponer de ellos. La opción más sencilla y ligera consiste en instalar Virtual PC.

Virtual PC sólo necesita 2Mb de RAM para ejecutar cada PC, así que es una solución óptima.

Puedes descargar el software desde https://sourceforge.net/projects/vpcs/files/ y ahí puedes descargar la versión 0.8 (la última a día de hoy).

En mi caso he descargado la última versión y no me ha funcionado bien el teclado, así que he tenido que descargar una versión anterior que ha funcionado sin problema, la 0.8a que se puee descargar desde https://sourceforge.net/projects/vpcs/files/0.8/old/.

De todos modos prueba y que cada uno se descargue la versión que necesite.

Una vez descargado el ejecutable le das permisos de ejecución y agregas su ubicación a tu GNS3.

Configuración de VPC en GNS3
Configuración de VPC en GNS3

Por defecto intenta arrancar el telnet al Virtual PC con xterm, esto se puede cambiar si quieres.

Si quieres cambiar la consola, como ha sido mi caso, que uso como terminal el software teminator he ido a la configuración y en General, en la pestaña de Console Applications he puesto:

terminator -T "%d" -e "telnet %h %p"

Configuración de Consola en GNS3
Configuración de Consola en GNS3

Y con esto ya tienes los switches y los PCs para funcionar.

El fichero /etc/network/interfaces

Lo primero que tienes que hacer es entender que esto no funciona como un router al «estilo clásico«, es decir, olvídate de abrir un vtysh de frrouting, un cli de cisco, o algo similar, esto es un Debian y hay que entenderlo como tal.

Si quieres profundizar un poco más puedes escucharte el audio que dediqué a esto mismo en El audio sobre el fichero /etc/network/interfaces/.

La configuración inicial podemos hacerla en el fichero /etc/network/interfaces.

Por defecto en GNS3 os vais a encontrar lo siguiente en el fichero /etc/netowrk/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp
    vrf mgnt

auto mgnt
iface mgnt
    address 127.0.0.1/8
    address ::1/128
    vrf-table auto

En ese fichero podéis ver varias cosas.

La primer cosa que veis es que tenemos un interfaz de loopback llamado lo.

La segunda cosa es que tenéis un interfaz llamado eth0 que es cliente de dhcp y que está en la vrf llamada mgnt. Esto es debido a que la eth0 de todos los switches Cumulus es el interfaz de gestión.

Y luego podéis ver que está la configuración de la vrf de gestión.

Pero nos faltan todos los demás interfaces, aquí no están y que tendremos que ir añadiendo.

Si se trata de la versión para GNS3 podremos añadirlos sin problemas, ahora, si tienes un switch físico tendrás que incluir la licencia.

Como curiosidad comentaros que las licencias de Cumulus, hasta donde yo se, no son por hardware sino por tipo de switch, es decir, si tienes una licencia de switch con puertos de 100G y se te rompe puedes poner otro switch y mover la licencia, lo cual no está mal.

Así que vamos a seguir con Cumulus Linux en GNS3.

En el fichero /etc/network/interfaces configuraremos lo referente a nivel 2 OSI y muchas de las cosas de nivel 3.

  • Velocidad de los interfaces
  • Agregación de interfaces en Bondings
  • MTU
  • Direccionamiento IP y sus máscaras de red

Configuración de Bonding

Aquí me he encontrado un problema con mi maqueta y es que mi máquina virtual no para de reiniciarse al configurar el LACP, entiendo que los interfaces de VirtualBox no soportan bonding. Este es un problema en Cumulus Linux en GNS3

En switches físicos el bonding es muy estable, así que no hay que preocuparse si tu maqueta se cuelga en este punto.

La configuración que he utilizado es la siguiente

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp
    vrf mgnt

auto mgnt
iface mgnt
    address 10.1.1.1/24
    vrf-table auto

auto swp1
iface swp1

auto swp2
iface swp2

auto swp3
iface swp3

auto bond0
iface bond0
    bond-slaves swp2 swp3
    bond-mode 802.3ad
    bond-miimon 100
    bond-lacp-rate slow
    bond-min-links 1

En el otro lado la configuración es igual excepto la IP de gestión.

La configuración de bond en Cumulus Linux en GNS3 tiene los siguientes comandos:

  • bond-slaves swp2 swp3: Indica cuales son los interfaces participantes en el bonding
  • bond-mode 802.3ad: Indica el modo de agregación, en este caso es LACP, puede ser también balance-xor
  • bond-miimon 100: Indica cada cuanto tiempo en milisegundos cada esclavo inspecciona si hay fallos. 100ms es la configuración a poner para compatibildiad con Cisco, Juniper y otros fabricantes.
  • bond-lacp-rate slow: Velocidad a la que se transmiten los paquetes de control.
  • bond-min-links 1: Número de interfaces mínimos con los que puede funcionar el bonding.

Para ver la información del interfaz podemos utilizar el comando net show interface bond0 o bien el comando de linux sudo cat /proc/net/bonding/bond0.

Sólo agregar que Cumulus Linux tiene una cosa muy chula que es el Multi-Chassis Link Aggregation (MLAG). Esto permite crear un bonding contra interfaces de switches diferentes, guardando todas las distancias el efecto sería como conectar un switch a un VSS de Cisco, desde el punto de vista del cliente, no del VSS. Esto en Cumulus Linux en GNS3 no lo he podido probar.

Si os interesa este tema podéis hojearlo en la documentación de Cumulus.

Configuración de vlans y Spanning Tree

Una de las cosas totalmente necesarias en cualquier switch es la configuración de vlans y spanning tree.

Cuando vienes del mundo Cisco y similares tienes en mente que una vlan es una instancia de Spanning Tree, y es así porque por defecto tienes PVST funcionando.

Y en el mundo Cisco el concepto de bridge directamente no existe como aquí, así que bridge y vlan son equivalentes. Pero en Cumulus o en linux en general no es así.

En GNU/Linux el spanning tree se ejecuta en los bridges y las vlans son subinterfaces, esto es muy importante y hay que tenerlo muy claro antes de ponerse a trabajar con Cumulus.

Para configurar lo primero que tienes que tener claro es cómo quieres el spanning tree, algo que a mi no me acaba de gustar ya que no hay, o yo no conozco, una forma sencilla de reorganizar toda la estructura de spanning tree y vlans.

Ya sabéis en Cumulus Linux cada bridge tiene una instancia de Spanning Tree, así que si ponemos todas las vlans en el mismo bridge tendremos una configuración VLAN-aware.

La otra opción que tenemos es crear bridges con el modelo de bridge tradicional haciendo que cada vlan tenga su propia instancia de spanning tree.

Pero esto ya da para otro audio y otro día seguiremos hablando de esto.

Audiograma del capítulo del podcast