viernes, 12 de septiembre de 2025

OPNsense: ¿Nativo o Virtual? Una comparativa de rendimiento con interfaz de 2.5Gb

Parte 1 

Introducción

En este artículo, nos sumergiremos en una comparación de rendimiento entre dos configuraciones populares de OPNsense: instalado directamente en un hardware dedicado (barebone) y como una máquina virtual en Proxmox. Ambas opciones tienen sus ventajas, pero ¿cuál ofrece un mejor rendimiento?


Equipo Utilizado

Hardware: Placa base BKHN-NVR con procesador Intel Celeron N5105 y cuatro interfaces de red 2.5Gb/s, 32GB de memoria, NVME monando un SSD de 256GB y raspberry pi 4 como servidor iperf3 local.

Software: OPNsense y Proxmox.

Herramientas de prueba: iperf3, speedtest-cli, y medidor de consumo Shelly plug S

Configuración

OPNsense Nativo: Instalación estándar de OPNsense en el hardware dedicado.

OPNsense Virtual: Máquina virtual en Proxmox con asignación de los cuatro núcleos del procesador y la totalidad de la RAM disponible. Las interfaces de red están configuradas en modo bridge para un acceso directo al hardware.

Metodología de prueba

Para evaluar el rendimiento de ambas configuraciones, realizaremos una serie de pruebas de transferencia de datos utilizando con iperf3 y speedtest-cli. 

Como servidor iperf3 utilizaremos algunos de los disponibles en public-iperf3-servers

Cliente se conectara al servidor mediante el router local, un FRITZ!Box 6590 Cable, usando el puerto 5201. Estas pruebas medirán la velocidad de subida y bajada, así como la latencia. Adicionalmente, mediremos el consumo en ambos escenarios. 

El cliente es un ordenador Intel(R) Core(TM) i7-2600K CPU @ 3.40GHz con 16GiB de RAM, usando  Fedora 38: 6.8.9-100.fc38.x86_64. El cliente esta conectado a la red local en el puerto ethernet igc0  de 2.5Gb/s del ordenador N5105 donde se esta ejecutando OpenSense mediante un cable CAT5 aunque  el puerto del cliente es de 1 Gbit/s


Para realizar las pruebas de velocidad en local, hemos utilizado un raspberry pi4 conectada al mismo router FRITZ!Box.



Comandos Sugeridos:  iperf3 y speedtest-cli

Servidor: 

iperf3 -s

Cliente: 

iperf3 -c <IP del servidor> -P 4 -t 30 (4 hilos, 30 segundos)

speedtest-cli --server <ID del servidor> --threads 4 (4 hilos)


Preparación

Primer paso ha sido actualizar la raspeberry pi 4 con los siguientes comandos:

  1. sudo apt update.
  2. sudo apt full-upgrade.
  3. sudo reboot.
  4. sudo apt autoremove.
  5. sudo apt clean.
  6. sudo rpi-eeprom-update.
  7. sudo rpi-eeprom-update -a.
  8. sudo reboot.


A continuación, instalo en comando iperf3 en la raspberry pi 4 con:

sudo apt-get install iperf3

Ahora, para evitar fisgones, cambio el prompt.

Para mostrar el prompt actual usamos:

[\u@\h \W]\$ echo "$PS1"
[\u@\h \W]\$

Para cambiar el prompt, usamos:
PS1='[\D{%F %T}]\$'

Resultados y análisis

Resultados de las pruebas de velocidades máximas alcanzadas en configuracion standalone con iperf3

Repetimos la prueba con cuatro servidores diferentes:


con el segundo servidor:


con el tercer servidor:


Con el ultimo servidor:



Con el siguiente bash script hacemos que los resultados se muestren en una tabla html:

cat comparativa_iperf3.sh 

#!/bin/bash

# Lista de servidores
SERVIDORES=("spd-desrv.hostkey.com" "a205.speedtest.wobcom.de" "a209.speedtest.wobcom.de" "speedtest.novoserve.com")

# Función para ejecutar iperf3 y extraer los resultados
function ejecutar_iperf3 {
  servidor=$1
  modo=$2
  puerto=5201

  # Comando iperf3
  comando="iperf3 -c $servidor -p $puerto -t 10 $modo"

  # Ejecutar el comando y extraer las líneas sender y receiver
  resultado=$(eval $comando 2>&1)
  sender=$(echo "$resultado" | grep sender | tail -n 1)
  receiver=$(echo "$resultado" | grep receiver | tail -n 1)
  echo $servidor $sender
  echo $servidor $receiver

  # Extraer los valores de cada línea
  IFS=' ' read -ra AD_sender <<< "$sender"
  IFS=' ' read -ra AD_receiver <<< "$receiver"

  # Formatear los resultados para la tabla HTML
  echo "" >> resultados.html
  echo "  $servidor" >> resultados.html
  echo "  $modo" >> resultados.html
  echo "  ${AD_sender[4]}" >> resultados.html  # Tasa de bits sender
  echo "  ${AD_receiver[4]}" >> resultados.html  # Tasa de bits receiver
  echo "" >> resultados.html
}

# Crear el archivo HTML
echo "" > resultados.html
echo "" >> resultados.html
echo "" >> resultados.html
echo "" >> resultados.html
echo "" >> resultados.html
echo "" >> resultados.html
echo "

Resultados de las pruebas iperf3

" >> resultados.html echo "" >> resultados.html echo " " >> resultados.html echo " " >> resultados.html echo " " >> resultados.html echo " " >> resultados.html echo " " >> resultados.html echo " " >> resultados.html # Iterar sobre los servidores y modos for servidor in "${SERVIDORES[@]}"; do for modo in "" "-R"; do ejecutar_iperf3 "$servidor" "$modo" done done echo "
ServidorModoTasa de bits Sender (Mbits/s)Tasa de bits Receiver (Mbits/s)
" >> resultados.html echo "" >> resultados.html echo "" >> resultados.html echo "Resultados guardados en resultados.html"




Evaluacion del consumo electrico:


Consistencia: Evalúa la consistencia de los resultados a lo largo de múltiples pruebas.

Latencia: Compara la latencia de red en ambas configuraciones.

Sobrecarga del sistema: Observa si hay signos de sobrecarga del sistema en alguna de las configuraciones.

Conclusión

[Resume los hallazgos principales de tu prueba y ofrece una recomendación sobre cuál configuración es más adecuada para diferentes escenarios].


Factores a Considerar:


Requisitos específicos: Las necesidades de cada usuario pueden variar.

Complejidad de la configuración: OPNsense nativo puede ser más sencillo de configurar para usuarios menos experimentados.

Flexibilidad: Las máquinas virtuales ofrecen una mayor flexibilidad en términos de migración y escalabilidad.

En este artículo, hemos explorado las diferencias de rendimiento entre OPNsense instalado de forma nativa y como máquina virtual en Proxmox. Los resultados obtenidos [inserta tus conclusiones aquí] pueden servir como una guía para elegir la configuración más adecuada para tu entorno específico.


Preguntas para la Comunidad

¿Has realizado pruebas similares? ¿Cuáles fueron tus resultados?

¿Qué otras herramientas o metodologías recomendarías para evaluar el rendimiento de OPNsense?

¿Cuáles son tus experiencias con OPNsense en entornos virtuales y físicos?

¡Espero que este artículo te haya resultado útil!

No hay comentarios: