Cumulus LInux - Introducción

Cumulus Linux – Introducción

¿Por qué Cumulus Linux?

Quieres tener una red abierta, ágil y escalable, por eso has acabado aquí y porque sabes que Cumulus Linux puede ser una solución.

De esta manera podrás añadir aplicaciones o reemplazar hardware sin depender de ningún fabricante.

No estamos atados al fabricante ni en hardware ni en software.

Es decir, los equipos de red sólo pueden correr el sistema operativo de su fabricante, con Cumulus Linux no pasa.

Así pues en Cumulus Linux tenemos una arquitectura abierta y junto con el Sistema Operativo GNU/Linux conseguimos un entorno ágil y muy escalable.

Podemos instalar cualquier software disponible sin necesidad de esperar a que el fabricante lo implemente, utilizando software de la comunidad.

Y por supuesto ese entorno nos permite ahorrar costes y sobre todo no estar atados a ningún fabricante.

La lista de compatibilidades va ampliándose cada día y puedes visitarla en https://cumulusnetworks.com/products/hardware-compatibility-list/.

Cuando instalamos Cumulus en un hardware vamos a mirar la versión mínima y la plataforma para instalarlo.

Por ejemplo, a día de hoy, un HP Altoline 6960 necesitará que le instales al menos la versión 3.1 de la arquitectura x86.

ONIE – Open Network Install Environment

ONIE es el instalador que se puede usar en todos los switches soportados por Cumulus Linux.

El instalador ONIE es algo parecido al PXE. ONIE proporciona un entorno de instalación abierto para ejecutar en un switch.

ONIE permite que los usuarios puedan instalar el sistema operativo en los switches soportados.

Arquitectura de Cumulus Linux

Cumulus Linux es una distribución de GNU/Linux basada en Debian, realmente es un Debian.

Cumulus Linux funciona como un Debian permitiendo hacer todo lo que puedes hacer con un Debian.

La única diferencia de utilizar Cumulus Linux en un switch con un PC es que en el switch tienes ASICs que permiten aceleración por hardware.

Si utilizas aceleración por hardware conseguirás que el switch conmute a velocidad de línea, cosa que en un PC no conseguirás en la vida.

Repositorios

Cuando descargues Cumulus Linux vas a descargar un binario que se descompondrá en muchos paquetes específicos para realizar funciones específicas.

También puedes instalar más sofware desde el repositorio principal, el de addons, el de testing o desde la comunidad de Debian.

El repositorio principal (repo.cumulusnetworks.com) es el que contiene las actualiaciones de seguridad y todo lo que hay ahí está 100% soportado y no te debería de dar problemas.

También tenemos el repositorio de addons es el que contiene paquetes de terceros, como por ejemplo chef o puppet, ansible por ejemplo está en el principal.

Otro sería el repositorio de testing es el que contiene aquellas aplicaciones que tienen un funcionamiento teóricamente bueno, pero que deben de ser probados por los usuarios.

Este repositorio contiene softare experimental que deberá de salir en versiones futuras.

La última opción de instalación de paquete será desde la comunidad de Debian, ahí podéis descargar cualquier paquete para Debian, a vuestro propio riesgo ya que están soportados por la comunidad.

Tienes que tener cuidado con los paquetes descargados desde la comunidad porque al igual que en los servidores o PCs puede ser que estos paquetes requieran ajustes como librerías, dependencias, etc…

En cuanto a paquetes tenemos FRRouting para el routing; puppet, chef, ansible, cfengine … para automatización, aunque aquí el más usado es sin duda Ansible. Pero también tenemos software de monitorización, de virtualización, etc…

Detalles de la arquitectura

Arquitectura de Cumulus Linux. Es aquí donde se muestran los componentes del modelo.
Arquitectura de Cumulus Linux

Espacio de Usuario: Este es el lugar donde se interactúa con el usuario y aquí se configuran los protocolos de routing o de switching.

Kernel de Linux: Aquí es donde se realiza la configuración en el sistema de lo que el usuario a introducido en el Espacio de Usuario.

Abstracción de Hardware: Una vez la instrucción llega al Kernel de Linux este tiene que meterlo en el hardware porque aquí hay ciertas tareas que las va a realizar directamente el ASIC que corresponda.

switchd: Este es el único software propietario que hay en la solución y es el responsable de la abstracción del hardware. En Cumulus Linux cuando un usuario hace una petición esta pasa al kernel y se genera un netlink que se traduce a información para el ASIC correspondiente por switchd, esta es la diferencia fundamental entre un servidor y un switch usando Cumulus Linux.

Virtualización de Cumulus con Cumulus VX

Antes de empezar a trabajar con Cumulus Linux es buena idea que puedas familiarizarte un poco con el entorno y el sistema.

No es necesario que practiques en un siwtch completo sino que puedes utilizar la versión virtualizada directamente en tu PC.

También te puede servir para probar nuevas funcionalidades, para hacer desarrollo o cualquier otra cosa que se te ocurra.

Para descargar Cumulus VX tendrás que ir a https://cumulusnetworks.com/products/cumulus-vx/download/ y registrarte.

Una vez estés registrado y confirmado el correo electrónico podrás descargar la versión para el sistema de virtualización que prefieras de entre los disponibles.

Si quieres utilizar GNS3 como voy a hacer yo tendrás que descargar la versión de Virtualbox.

Descarga de Cumulus VX
Descarga de Cumulus VX

Si prefieres la oficial la tienes en https://docs.cumulusnetworks.com/, eso sí, a día de hoy te vas a descargar la versión 4.0.0 y la documentación es sobre la versión 3.7, pero sirve.

Cumulus VX en Virtualbox

Como acabo de comentar voy a utilizar Virtualbox para instalar Cumulus VX para posteriormente integrarlo con GNS3.

Lo primero es descargar la imagen OVA, entiendo que la has descargado, para ello hay que abrir Virtualbox e ir a Archivo -> Importar servicio virtualizado.

Importar servicio virtualizado en Virtualbox
Importar servicio virtualizado en Virtualbox

Obviamente con un sólo switch no vais a tendrás suficiente para jugar, así que una vez lo tengas importado te recomiendo darle a clonar y clonación completa para tener más switches.

Es buena costumbre cuando importes el OVA de Cumulus decirle a Virtualbox que es Debian64.

Instalación de GNS3 en Debian 10

En mi caso tengo como equipo de sobremesa un Debian 10 y GNS3 no está disponible en los repositorios oficiales de Debian 10, así que tengo que seguir los siguientes pasos porque no es muy intuitivo el proceso:

Lo primero será instalar esto:

sudo apt update
sudo apt install -y python3-pip python3-pyqt5 python3-pyqt5.qtsvg \
python3-pyqt5.qtwebsockets \
qemu qemu-kvm qemu-utils libvirt-clients libvirt-daemon-system virtinst \
wireshark xtightvncviewer apt-transport-https \
ca-certificates curl gnupg2 software-properties-common

Ahora instalaremos GNS3 de Pypi (tarda un ratito):

pip3 install gns3-server
pip3 install gns3-gui

Importamos la clave de Docker:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

Añadimos el repositorio «edge»

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable edge"

Ahora instalamos docker-ce:

sudo apt update
sudo apt install -y docker-ce

Añadimos a nuestro /etc/apt/sources.list:

deb http://ppa.launchpad.net/gns3/ppa/ubuntu bionic main
deb-src http://ppa.launchpad.net/gns3/ppa/ubuntu bionic main 

Y añadimos la clave

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F88F6D313016330404F710FC9A2FD067A2E3EF7B

Ahora instalamos sólo estos dos paquetes:

sudo apt-get update
sudo apt install dynamips ubridge

Y quitamos del sources.list

#deb http://ppa.launchpad.net/gns3/ppa/ubuntu bionic main
#deb-src http://ppa.launchpad.net/gns3/ppa/ubuntu bionic main

Ahora añadimos nuestro usuario a los grupos necesarios:

edu@andromeda:~$ sudo usermod -aG kvm edu
edu@andromeda:~$ sudo usermod -aG libvirt edu
edu@andromeda:~$ sudo usermod -aG ubridge edu
edu@andromeda:~$ sudo usermod -aG wireshark edu

En este punto reiniciamos el PC.

Creamos un enlace simbólico para python 3.5 utilizando python3.7:

sudo ln -s /usr/bin/python3.7 /usr/bin/python3.5

Instalamos python-pip y python3-pip para utilizar gns3:

sudo apt install python-pip python3-pip

Instalamos gns3 desde Pypi:

sudo pip3 install gns3-server
sudo pip3 install gns3-gui

E instalamos las dependencias adiciones:

sudo apt install python3-pyqt5.QtSvg python3-pyqt5.qtwebsockets dynamips

Con esto ya tenemos instalado GNS3 en nuestro Debian 10. La verdad es que en Debian 10 es una tortura instalar GNS3, pero en otras distribuciones es automático y en Windows también.

Importar switch de Virtualbox en GNS3

Una vez tengas el GNS3 instalado puedes importar tus switches en GNS3 yendo a Editar -> Preferencias y luego en la columna de la izquierda seleccionar Virtualbox VMs y dando New y seleccionando del desplegable.

Importar switch de Virtualbox en GNS3
Importar switch de Virtualbox en GNS3

Una vez están los switches tenemos que ponerles interfaces a los switches en GNS3. Eso se hace desde la misma pantalla donde los hemos importado dando Edit, yendo a la pestaña Network y poniendo 4 interfaces de tipo virtio-net.

Ojo tienes que acordarte de marcar la casilla que permite a GNS3 gestionar las interfaces de Virtualbox:

Poner interfaces en GNS3
Poner interfaces en GNS3

Ahora podemos empezar a crear la topología, por defecto los switches van a estar en la categoría End Devices, pero puedes cambiarlo editando el switch donde antes y poniéndolo en switches, como yo lo he hecho.

GNS3 máqueta
GNS3 maqueta

Llegados a este punto ya está la maqueta montada y se puede empezar a trabajar con ella.

Foto de cabecera de James Wheeler en Pexels