OpenWrt: Reducir latencia con SQM

4 minutos de lectura

Por qué usar SQM (Smart Queue Management)

A raíz de una serie de artículos que publicaron en Naseros donde explicaban la importancia de la latencia en un router, sobre todo a la hora de jugar me propuse hacer lo mismo pero en OpenWrt.

Si aun no has visto su videos o leído sus artículos te recomiendo que lo hagas porque explica perfectamente y de una forma muy sencilla lo que vamos a realizar a continuación.

En Github tenemos una serie de scripts para el mantenimiento y test de un router con OpenWrt https://github.com/richb-hanover/OpenWrtScripts , uno de ellos es betterspeedtestsh que nos va a permitir comprobar la latencia. Para pode utilizar estos scripts vamos necesitar el paquete netperf

1opkg update
2opkg install netperf

En una primera ejecución del test, sin configurar SQM, me dio los siguientes valores:

 1root@OpenWrt:~# ./betterspeedtest.sh
 22018-04-17 23:09:45 Testing against netperf.bufferbloat.net (ipv4) with 5 simultaneous sessions while pinging gstatic.com (60 seconds in each direction)
 3.............................................................
 4 Download:  49.71 Mbps
 5  Latency: (in msec, 59 pings, 0.00% packet loss)
 6      Min: 4.167
 7    10pct: 13.748
 8   Median: 61.393
 9      Avg: 80.977
10    90pct: 167.430
11      Max: 182.111
12.......................................................................
13   Upload:  4.71 Mbps
14  Latency: (in msec, 66 pings, 0.00% packet loss)
15      Min: 3.708
16    10pct: 445.336
17   Median: 5407.468
18      Avg: 4739.046
19    90pct: 7458.445
20      Max: 7545.656
21root@OpenWrt:~#

Como puedes ver los datos de bajada son aceptables, en cambio en los de subida, la latencia esta disparada.

Instalación

Para empezar debemos de tener instalados los paquetes necesarios para SQM. los paquetes sqm-scripts y luci-app-sqm

1opkg install sqm-scripts luci-app-sqm

Mi proveedor de internet encapsula todo el trafico de datos sobre una VLAN, concretamente lo hace a través de una vlan con id 832, por lo que en mi router creé un vlan con esa id, y sobre esa vlan es sobre la que voy a trabajar.

Si quieres que la instancia de SQM que vamos a crear afecte a todo tu tráfico de datos tendrás que seleccionar la interfaz de red del puerto WAN, normalmente suele ser eht0 , para ver que interfaz tiene asignada el puerto WAN del router, lo puedes mirar el menú Red -> Interfaces

Una vez identificada la interfaz de red, es hora e configurar SQM

Desde LuCI en el menu SQM QoS

Pulsamos en el botón Añadir

Habilitamos la casilla nueva instancia de SQM y seleccionamos el nombre de la interfaz

Debemos de seleccionar una velocidad máxima de bajada y otra máxima de subida para el trafico de datos, calcula un 90-95% del total, ten cuidado porque los valores se expresan en en kilobit y no en megabit.

Con esto en principio valdría, unicamente quedaría pulsar en Guardar y Aplicar

Volveríamos a ejecutar el script betterspeedtest.sh y comprobar si ha mejorado la latencia.

Afinando SQM

En mi caso la latencia no mejoró lo suficiente, por lo que realicé varias pruebas en la configuración de SQM, concretamente en la pestaña Link Layer Adaptation cambiando los valores a ATM y como valor overhead 44, la cosa mejoró bastante

 1root@OpenWrt:~# ./betterspeedtest.sh
 22018-04-17 23:14:32 Testing against netperf.bufferbloat.net (ipv4) with 5 simultaneous sessions while pinging gstatic.com (60 seconds in each direction)
 3.............................................................
 4 Download:  49.14 Mbps
 5  Latency: (in msec, 61 pings, 0.00% packet loss)
 6      Min: 3.536
 7    10pct: 3.935
 8   Median: 44.123
 9      Avg: 65.071
10    90pct: 152.995
11      Max: 178.414
12..............................................................
13   Upload:  4.29 Mbps
14  Latency: (in msec, 57 pings, 0.00% packet loss)
15      Min: 5.641
16    10pct: 6.193
17   Median: 14.039
18      Avg: 13.747
19    90pct: 19.482
20      Max: 27.476
21root@OpenWrt:~#

Por cierto, tengo contratada una conexión a internet mediante fibra con 50 Mbits de bajada y 5 Megabit de subida.