Últimamente he observado una tendencia. En lugar de reemplazar un router cuando, literalmente, deja de funcionar, he tenido que actuar antes, cambiando un nuevo equipo porque un viejo router ya no podía seguir el ritmo de las crecientes velocidades de Internet disponibles en la zona. (Nota, estoy debidamente agradecido por este problema.) Como último ejemplo, un montón de routers Netgear ProSafe 318G me han fallado por última vez, ya que las pequeñas empresas han pasado de conexiones T1 tradicionales de 1,5-9mbps a coaxial (cable) de 50mbps.

Sí, coaxial-no fibra. Incluso el coaxial ha demostrado ser demasiado para la antigua serie ProSafe. Estos dispositivos no sólo no pudieron mantener el ritmo, sino que cayeron en picado. Con frecuencia, los viejos routers bajaban los resultados de las pruebas de velocidad de 9mbps con la antigua conexión a 3mbps o menos con la conexión de 50mbps. Obviamente, eso no funciona.

Ver más

Hoy en día, la respuesta parece ser cada vez más los routers inalámbricos. Estos tienden a ser largos en el plástico de aspecto elegante y las interfaces web de colores brillantes, pero corto en las características técnicas y la fiabilidad. ¿Qué puede hacer un administrador de sistemas mercenario? Bueno, en esencia, cualquier cosa con dos interfaces de red físicas puede ser un router. Y hoy en día, hay montones y montones de cajas genéricas relativamente rápidas, baratas y (¡superimportante!) totalmente de estado sólido por ahí.

Así que, finalmente, había llegado el momento. Ante el envejecimiento del hardware y las nuevas ofertas de consumo que no satisfacían mis necesidades, decidí construir mi propio router. Y si el cambiante panorama actual de la conectividad le deja en una posición similar, resulta que tanto la construcción como el montaje son bastante rápidos.

¿Por qué hacerlo de la manera difícil

Probablemente muchos de ustedes estén murmurando: «claro, pfSense, seguro». Algunos de ustedes podrían incluso estar pensando en smoothwall o untangle NG. He jugado con la mayoría de las distros de cortafuegos que hay, pero decidí ir más básico, más de la vieja escuela: una instalación simple, sólo CLI de Ubuntu Server y unas pocas reglas iptables.

Es cierto que este no es el enfoque más práctico para todos los lectores, pero tenía sentido para mí. Tengo bastante experiencia ajustando iptables y el propio kernel de Linux para obtener un alto rendimiento a escala de Internet, y cuantas menos características brillantes y gráficos y cosas cliché se pongan entre mí y la tabla del cortafuegos, menos pelusa tendré que sacar del camino y menos cosas nuevas no aplicables en el resto de mi trabajo tendré que aprender. Cualquier regla que ya sé cómo crear en iptables para gestionar el acceso a mis servidores, también sé cómo aplicar a mi cortafuegos-si mi cortafuegos está ejecutando la misma distribución que mis servidores.

Ampliar / He aquí, una barba Unix.

Además, trabajo bastante con OpenVPN, y quiero ser capaz de seguir configurando tanto sus servidores como sus clientes de la manera en que ya confío. Algunas distros de cortafuegos tienen soporte para OpenVPN incorporado y otras no, pero incluso las que lo tienen incorporado tienden a esperar que las cosas se ejecuten de manera diferente a la mía. Una vez más, cuanto más el sistema se mantiene fuera de mi camino, el más feliz voy a ser.

Como un bono adicional, sé que puedo muy fácilmente mantener todo completamente al día en mi nuevo y completamente vainilla Ubuntu router. Todo está soportado directamente por Canonical, y puede (y lo hace) todo tener las actualizaciones automáticas activadas. Añadir el trabajo cron ocasional para reiniciar el router (para obtener nuevos núcleos), y estoy de oro.

Hardware, hardware, hardware

Vamos a ir a través de la forma de hacerlo en una pieza futura, pero hoy en día es importante establecer por qué un DIY router-construir puede ser la mejor opción. Para ello, primero hay que entender el panorama general de hoy.

En el mundo de los consumidores, los routers tienen en su mayoría pequeñas CPUs MIPS bajo el capó sin una gran cantidad de RAM (por decirlo suavemente). Estos routers se diferencian en gran medida de los demás en función de la interfaz: ¿Qué tan brillante es? ¿Cuántas características técnicas tiene? ¿Puede el usuario entenderlo fácilmente?

Publicidad

En el extremo superior del mercado SOHO, se empiezan a ver algunas CPUs ARM de grado smartphone y mucha más RAM. Estos routers -como la serie Nightgear Nighthawk, de la que hablaremos más adelante- cuentan con varios núcleos, mayor velocidad de reloj y mucha más RAM. También tienen un precio mucho más elevado que la competencia más barata. Compré un Linksys EA2750 por 89 dólares, pero el Netgear Nighthawk X6 que compré con él era casi tres veces más caro (¡incluso en las rebajas navideñas!), con 249 dólares.

Ampliar / No me juzgues: tenía hambre.

Aún así, quería tomar un camino diferente. Últimamente han empezado a aparecer en el mercado un montón de pequeñas máquinas x86-64 sin ventilador interesantes y razonablemente baratas. El truco para construir un router es encontrar uno con múltiples NICs. Puedes encontrar un par de apuestas bastante seguras en Amazon, pero son procesadores antiguos basados en Atom, y yo quería un Celeron más reciente. Después de un poco de búsqueda y vacilación en Internet, finalmente di el paso en Alibaba y me pedí un nuevo Partaker Mini PC de Shenzhen Inctel Technology Company. Después de pagar 240 dólares por el propio router y otros 48 dólares por un SSD Kingston de 120 GB de Newegg, me había gastado unos 40 dólares más en el Homebrew Special que en el Nighthawk. ¿Merecerá la pena?

Aparece un contrincante

Antes de empezar las pruebas, echemos un rápido vistazo a los competidores.

Ampliar / En el sentido de las agujas del reloj, desde el extremo izquierdo: 1. el Homebrew Special con Ubuntu, 2. el Netgear Nighthawk X6, 3. el Buffalo WHR-G300N-v2, y 4. el Linksys N600 EA-2750. En el extremo derecho, asomando por encima de todos ellos: Monolith, uno de los dos servidores utilizados para las pruebas.

Ese Nighthawk es, en comparación con los demás, ENORME e imponente (incluso más de lo que parece en la imagen). De hecho, es bastante más grande que mi Homebrew Special, que es un PC totalmente funcional y de uso general que podrías utilizar como un escritorio perfectamente competente. Es como si DC Comics hubiera pedido a H.R. Giger que le echara una mano para diseñar un router inalámbrico para Batman.

El Homebrew Special en sí mismo es un poco adorable. Tiene un LED azul y otro rojo dentro de la carcasa y, por la noche, la luz de ambos sale indirectamente de sus rejillas de refrigeración, lo que da a la pila de red un aspecto festivo. Si hubiera algún ventilador que provocara un parpadeo, me volvería loco, pero como se trata de un brillo suave y constante, en realidad me gusta.

El Linksys y el Buffalo, por otro lado, parecen exactamente lo que son: routers baratos. Sin embargo, cabe destacar que el estilo del Linksys es una gran mejora con respecto al pasado de la marca. Se parece más a algo profesional y menos a un juguete para niños. (Pero basta de hablar del estilo: es hora de poner a prueba estos pobres routers).

El primer desafío obvio es una simple prueba de ancho de banda. Pones un ordenador en el lado de la LAN y otro en el lado de la WAN, y ejecutas una ingeniosa herramienta llamada iperf por el medio. Simple, ¿verdad?

Ampliar / No aparece en la imagen: resultados interesantes.

Publicidad

Bueno, eso daría para un artículo corto y aburrido. La propia red mide el gigabit, los tres routers de gigabit miden el gigabit, y el router de 100 megabit mide el 100 megabit.

En realidad, una prueba tan simple ni siquiera empieza a contar la historia. La única razón para hacerla puede ser mostrar lo inútil que es. Los fabricantes de enrutadores son cada vez más conscientes de que la gente realmente prueba su producto, y ningún fabricante quiere que su producto esté en cualquier lugar que no sea la parte superior de algo como la tabla de enrutadores de smallnetbuilder. A la luz, los fabricantes están persiguiendo activamente las estadísticas en estos días.

El problema es que las estadísticas son sólo estadísticas. Ser capaz de alcanzar un número alto en una prueba de rendimiento puro es mejor que nada, pero está muy lejos de la historia completa. Aprendí esa lección por las malas cuando trabajaba para un proveedor de T-1 a principios de la década de 2000. Sus carísimos módems Adtran podían soportar el uso normal de Internet de 50 a 100 personas sin problemas, pero un solo usuario que ejecutara Limewire o algún otro cliente P2P lo echaba todo abajo en un santiamén. (La solución de entonces: poner un router Netopia de 150 dólares, barato pero increíble, delante de ese caro módem Adtran. Problema resuelto.)

Publicidad

Incluso para un enrutamiento relativamente sencillo -sin inspección profunda de paquetes, sin escaneo de malware o detección de intrusos, sin conformación- la CPU y la RAM disponibles en el router son importantes mucho más allá de la capacidad de saturar el enlace de Internet. El intercambio de archivos entre pares es la actividad más brutal que puede ver una red hoy en día (ya sea bittorrent, una de las variantes de Gnutella o eDonkey, o el sistema de descarga entre pares de una compañía de juegos). Yo ya había terminado de jugar al WoW cuando se introdujo el sistema de distribución P2P de Blizzard, pero mi compañero de piso de entonces no. El día de su lanzamiento, el nuevo sistema de descarga peer-to-peer de WoW, por defecto, no tenía ningún tipo de limitación. Intentó alegremente encontrar y mantener conexiones con literalmente miles de clientes simultáneos, y mi red doméstica se cayó como si Gilbert Godfried fuera abordado por Terry Tate. Mi compañero de piso y yo tuvimos unas palabras.

En base a esta experiencia pasada, no quiero simplemente «probar» mínimamente a mis retadores y darlo por terminado, quiero hacerles sudar de verdad. Así que para hacer eso, voy a golpearlos con las cargas de trabajo que hacen hincapié en tres áreas de problemas: la saturación del enlace de red, hacer y romper las conexiones TCP / IP individuales muy rápidamente, y mantener un número masivo de conexiones TCP / IP individuales abiertas al mismo tiempo.

Tengo una red de bots en mi bolsillo, y estoy listo para sacudirla

Pensé brevemente en montar algún tipo de monstruosidad horrible, impulsada por Docker, con decenas de miles de contenedores Linux con direcciones IP individuales, todos clamando por conexiones y/o sirviendo páginas web. Luego entré en razón. En lo que respecta a los routers, no hay diferencia entre mantener conexiones a miles de direcciones IP individuales o simplemente a miles de puertos en la misma dirección IP. Pasé un poco de tiempo convirtiendo el servidor web favorito de Lee Hutchinson, nginx, en un ridículo monstruo lovecraftiano con 10.000 cabezas y apetito de destrucción.

Para cada router, utilicé ApacheBench para probar la descarga de un jpeg con tres tamaños de archivo diferentes (10K, 100K y 1M) en cuatro niveles de concurrencia diferentes (10, 100, 1.000 y 10.000 clientes simultáneos). Esto nos da 12 pruebas en total, sin contar nuestra prueba inicial de iperf, y vale la pena verlas todas como una especie de espectro.

Publicidad

En la mayoría de los aspectos, ese archivo de 10K es más desafiante. El pequeño tamaño del archivo significa que usted puede entregar mucho más de los archivos individuales cada segundo antes de saturar la interfaz, lo que significa hacer y romper muchas más conexiones TCP, que es una carga para la CPU del router. Por otro lado, el archivo de 1M significa que está garantizado mantener más conexiones abiertas en los niveles de concurrencia más altos. Vale la pena ver cómo los enrutadores manejan todo el espectro, porque cada nivel hace un trabajo bastante decente de modelar un desafío bastante común que un enrutador podría tener que manejar (la descarga o el envío de un gran número de correos electrónicos, el manejo de intercambio de archivos peer-to-peer, o la navegación web en general de una gran cantidad de usuarios) si se lleva a un nivel extremo.

En última instancia, terminé necesitando no sólo ajustar nginx, sino el propio núcleo de Linux, con el fin de entregar de forma fiable el tipo de rendimiento que estaba buscando. Los routers en sí son «stock» -incluso mi Homebrew Special se dejó sin ajustar- pero los servidores de prueba, Menhir, y Monolith (cada uno con AMD FX-8320 CPU de 8 núcleos, 32 GB de RAM DDR3, y Ubuntu Trusty OS parcheado completamente hasta la fecha) necesitaron algunos masajes bastante graves con el fin de manejar ese tipo de carga.

Con tanta locura, es conveniente asegurarse de lo que son capaces sus servidores y su red antes de sacar conclusiones sobre los routers que se colocan entre ellos. Para empezar, primero probé Menhir por sí mismo en la interfaz localhost (sin red en absoluto) y luego probé entre los servidores a través de mi conmutador de red solamente (un Netgear ProSafe de 16 puertos gigabit, en caso de que te lo estés preguntando).

Ampliar / Todo experimento necesita un control.

Los resultados de localhost no podrían haber sido mejores -un rendimiento muy, muy superior al gigabit para cada prueba. De hecho, tuve que limitar manualmente la escala del eje Y del gráfico o tendrías problemas para ver las pruebas reales. La prueba de red directa no fue tan mala, pero obviamente estamos empezando a alcanzar algunos límites en el extremo superior. No estoy seguro de si el componente que está dando problemas es el propio conmutador o las interfaces de red integradas en ambos servidores, pero hay algo que no está completamente a la altura del desafío. Sin embargo, es lo suficientemente bueno para trabajar. Es hora de que, finalmente, los routers.

¡Prepárense para retumbar!

Estaba un poco nervioso. Ya sentía bastante afecto por mi pequeño dispositivo casero, después de todo, lo construí yo mismo. Sabía que dominaría fácilmente al viejo Buffalo que saqué de un cajón y al Linksys, que era literalmente lo más barato en Staples con una interfaz de gigabit. Pero, ¿podría vencer a ese martillo de vapor atómico guiado por láser que es el Nighthawk? Yo creía que sí, pero no estaba seguro.

Ampliar / En la imagen: victoria impecable.

Cuando terminaron las pruebas de descarga, no hubo más preguntas sobre el Homebrew Special. Sí, podía vencer al Nighthawk… y marcharse bostezando después. Aparte de una pequeña caída en el nivel de tamaño de archivo de 10K/10 conexiones concurrentes (que desafía a la CPU con la mayor cantidad de conexiones hechas y rotas), tuvo un rendimiento casi idéntico al de la propia conexión de red directa.

Publicidad

El Nighthawk, por cierto, es realmente un gran router SOHO que he desplegado bastante. Sin embargo, se cayó casi inmediatamente. Para descargas de megabytes de 10 en 10, estaba a la par. Con más de un desafío, el rendimiento comenzó a inclinarse bruscamente.

El Linksys, no es una sorpresa, no funcionó bien en absoluto. Incluso una tarea tan sencilla como descargar 10 archivos al mismo tiempo redujo su rendimiento a casi la mitad de lo que mostraba la prueba ingenua de iperf. Las cosas sólo empeoraron a partir de ahí, y ni siquiera pudo completar varias pruebas. En el lado positivo, el Linksys hace un buen trabajo para demostrar que su router realmente importa.

Por fin, el pequeño y valiente Buffalo se merece un reconocimiento. A pesar de costar menos que el Linksys cuando era nuevo (hace ocho años, eso sí) y de languidecer en un cajón del escritorio durante cinco años, se bajó del proverbial taburete de la barra y de hecho superó al Linksys en la mitad de las pruebas. El Buffalo tuvo ese éxito a pesar de tener una interfaz de red que estaba clasificada para una décima parte de la velocidad. Eso es valor. La próxima vez que alguien se atreva con productos chinos recién salidos del barco, gritaré: «¡Recuerda el Buffalo!»

Publicidad

Pero antes de llegar a ninguna conclusión, hay que tener en cuenta las velocidades de carga.

Ampliar / Tengo que mirar dos veces para asegurarme de que no es el mismo gráfico.

Por suerte, nada ha cambiado realmente sobre las relaciones entre los routers aquí. El Homebrew sigue pareciendo que ni siquiera está ahí, coincidiendo casi por completo con una conexión de red directa. El Nighthawk sigue dominando por completo al Linksys, y el pequeño Buffalo sigue haciendo de las suyas. En términos absolutos, se puede ver que tanto el Nighthawk como el Linksys van ligeramente mejor en subida que en descarga, pero no es nada del otro mundo. El resultado final sigue siendo el mismo: el Homebrew Special mantiene el ritmo de la red (curiosamente, incluso lo hace mejor que una conexión directa en la prueba de 10.000 conexiones/10K archivos), el Nighthawk vale claramente su precio en comparación con el Linksys, y el Linksys es, bueno, barato.

Con este gráfico final, tenemos un nuevo conjunto de resultados, sin embargo, las barras de color salmón, que son bastante estables en un poco más de 200mbps en todo el gráfico. Ese es el Homebrew Special flexionando su músculo criptográfico. Tiene un servidor OpenVPN funcionando. Para esta prueba, el servidor del lado WAN, Menhir, está conectado al servidor OpenVPN del router. El tráfico para el lado LAN del Homebrew Special se enruta a través del túnel VPN, por lo que Menhir está llegando a la dirección IP LAN de Monolith (el servidor del lado LAN) a través de un impresionante cifrado de 2048 bits basado en SSL. Dado que todavía nadie ofrece conexiones a Internet de más de 200 mbps en mi zona, esto hace que el criptofísico que llevo dentro baile de alegría. Podría literalmente encriptar cada byte de mi tráfico de Internet, en cualquier dirección, sin una penalización de rendimiento.

Una rápida advertencia final

A pesar de lo impresionante que es mi pequeño Homebrew Special, hay una cosa que le falta, que los otros tres concursantes ofrecen: acceso inalámbrico. Podría añadir una tarjeta inalámbrica a la Homebrew y hacer que sirva de forma inalámbrica, pero actualmente no tengo planes de hacerlo. Estoy demasiado familiarizado con lo que hay disponible para tarjetas inalámbricas de PC, y todas apestan en el hielo. Incluso dispositivos baratos como el Linksys o el Buffalo darían una paliza en cuanto a cobertura y alcance inalámbrico, y el Nighthawk ni siquiera está en la misma liga. Realmente es un martillo atómico guiado por láser cuando se trata de alcance inalámbrico, cobertura y conectividad simultánea. (Ahora mismo tengo uno de ellos cubriendo a más de 50 usuarios en una instalación de 53.000 pies cuadrados de esquina a esquina.)

Dicho esto, nada te impide utilizar un WAP (Punto de Acceso Inalámbrico) independiente que se encargue estrictamente de las funciones Wi-Fi. En mi casa, eso es un par de WAPs Ubiquiti «disco de hockey», uno para cada piso de la casa. Son un poco más difíciles de manejar que el Nighthawk, pero el par de ellos cuesta la mitad. Son dispositivos Linux bastante estándar a los que se puede acceder por SSH y que se gestionan desde una pequeña aplicación web muy interesante que puedes ejecutar… lo has adivinado, directamente en el Homebrew Special. (Migrar el Servidor Ubiquiti de mi estación de trabajo al Homebrew Special será una de mis primeras tareas después de esta pieza, y entonces lo promoveré al uso activo frente a la red de mi oficina en casa.)

En nombre de la minuciosidad, debemos observar una limitación compartida, algo por todos los equipos de red de consumo que he manejado: el deseo de reiniciar después de casi cualquier cambio. Algunos de esos reinicios tardan más de un minuto. No tengo ni idea de por qué, pero sea cual sea la razón, el Homebrew Special no está afectado por este estándar de la industria. Haces un cambio, lo aplicas y ya está. ¿Y si necesitas reiniciar el Special? Vuelve a funcionar en 12 segundos. (Lo calculé contando los pings caídos.)

Así que si los números te han convencido, y quieres construir tu propio Homebrew Special, todo lo que necesitas es un PC con dos interfaces de red físicas. Puede ser un mini PC especial como el que he utilizado aquí, o puede ser cualquier caja vieja que tengas por ahí en la que puedas meter dos tarjetas de red. No dejes que la primera captura de pantalla te intimide. Construir tu propio router verdaderamente rápido no es tan difícil de entender. Y si usted está clamando por una hoja de ruta, de hecho, vamos a esbozar el proceso de todo el camino de «aquí es un equipo normal» a «aquí es un router, y aquí es cómo configurarlo» pronto.

Publicidad

Jim Salter (@jrssnet) es un autor, orador público, propietario de una pequeña empresa, sysadmin mercenario, y el padre de tres – no necesariamente en ese orden. Tuvo su primer contacto con el código abierto al ejecutar Apache en su propio servidor FreeBSD 3.1 en 1999, y desde entonces ha sido un ferviente defensor del software libre. También creó y mantiene http://freebsdwiki.net y http://ubuntuwiki.net.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.