Contenido

Introducción

Si has llegado a esta wiki seguro que ya estás familiarizado con los firmware DD-WRT, Open-WRT, LEDE y otros que aumentan la capacidad de un router para ejecutar otros servicios. Estos firmware están basados en Linux y permiten usar una serie de aplicaciones como DNLA, descargas Torrent, VPN, etc. Más info en esta wiki [1]

El objetivo de esta wiki es mejorar el rendimiento de nuestro router casero. Para ello veremos como comprobar las prestaciones de nuestro router y qué podemos hacer para mejorar. También se dará a conocer algunos conceptos que sirva para comprender el contenido de esta wiki.

A lo largo de esta wiki se indicará como mejorar aspectos de la transferencia de datos que realiza nuestro router. Para ello, se tendrá en cuenta la independencia tecnológica del sistema que tengamos en nuestro ordenador que usemos para realizar la instalación del firmware en el router. Así podremos conseguirlo aunque tengamos Windows, Linux o Mac.

Como el firmware LEDE está basado en Linux en algunos de los pasos si el usuario está familiarizado con este sistema operativo le será más fácil pero se intentará que un usuario de Windows no tenga problemas para seguir la guía.

Siempre se pondrá como ejemplo el router TP-Link WRD3600 cuyas características podéis encontrarla en la [página del fabricante].

Coge sitio cómodo y seguimos...

Medir el rendimiento de nuestro router

Los router tienen una serie de características de CPU, RAM, ROM y chips que proporciona una capacidad de rendimiento, veremos a continuación como comprobar su capacidad y como mejorarlo.

Una de las consecuencias de las prestaciones del router se reflejará en la la velocidad de transferencia. Para medir el rendimiento de nuestro router sin tener en cuenta las características únicamente nos basaremos en medir la velocidad de transferencia que realiza nuestro router.

La velocidad de transferencia de datos se mide en bits por segundos, b/s. Por comodidad usaremos también múltiplos de esta medida como es Mb/s o Gb/s. En algunas referencias también nos podremos encontrar B/s, MB/s o GB/s. B: Byte = 8 bits.


Hay tres transferencia que nos interesa medir:

1. La velocidad de transferencia entre los datos almacenados en un disco conectado a un USB del router y un ordenador conectado a un puerto de nuestra red LAN. (USB-LAN)

Es muy normal que en router que tenga USB conectemos un disco duro externo para compartir datos en nuestra red. Para acceder a esos datos es muy normal que usemos al menos protocolos como Samba o FTP.

La comprobación que podemos hacer es copiar un fichero de gran tamaño desde el ordenador al sitio compartido o viceversa y en ese momento vemos en el monitor del sistema, apartado de red, la velocidad de transferencia.

Como ejemplo para un router Tp-Link WRD3600 con DD-WRT en Samba y FTP es de 10 Mb/s.

Más adelante veremos como podemos cambiar la configuración del servidor Samba y FTP del router para aumentar esa velocidad.

2. La velocidad entre dos ordenadores de nuestra red interna LAN. (LAN - LAN)

En este apartado necesitaremos dos ordenadores conectado con tarjeta 1 Gb/s por cable Ethernet al router a los puertos LAN. Vamos a medir la velocidad máxima de trasferencia entre ambos equipos a través de la red cableada. Para ello vamos usar una herramienta llamada iperf3 en ambos ordenadores que actuará en modo cliente-servidor. De esta forma simularemos un funcionamiento normal entre ambos equipos sin instalar nada en el router.

La herramienta iperf3 tiene versiones para casi todas las plataformas (Windows, Linux, Android, IPhone,MacOS,...) podéis obtenerla de su Sitio oficial Iperf3.

Para ello en un ordenador usaremos iperf3 en modo servidor. Supongamos que este ordenador obtiene la IP 192.158.1.142. Se arranca ejecutando en la carpeta donde se descomprima con

iperf3 -s

Una vez que el servidor de iperf3 está esperando conexiones, en el otro ordenador usaremos iperf3 en modo cliente para conectarnos a la IP del ordenador que actúa como servidor. Para ello ejecutaremos

iperf3 -c 192.168.1.142

Veremos cual es la velocidad de transferencia entre ambos equipos.

Del mismo modo al descrito podemos hacer mediciones para Smartphone conectados por WIFI, pero las trasferencias como máximo serán las que soporte la modalidad de WIFI que usemos (g,n..) que normalmente es muy inferior a la red cableada de 1Gb/s.

En el caso del ejemplo la velocidad obtenida es:

Connecting to host 192.168.1.142, port 5201
[  4] local 192.168.1.126 port 55639 connected to 192.168.1.142 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  39.5 MBytes   330 Mbits/sec                  
[  4]   1.00-2.00   sec  40.2 MBytes   338 Mbits/sec                  
[  4]   2.00-3.00   sec  39.4 MBytes   330 Mbits/sec                  
[  4]   3.00-4.00   sec  54.2 MBytes   456 Mbits/sec                  
[  4]   4.00-5.00   sec  52.0 MBytes   435 Mbits/sec                  
[  4]   5.00-6.00   sec  52.1 MBytes   438 Mbits/sec                  
[  4]   6.00-7.00   sec  52.0 MBytes   435 Mbits/sec                  
[  4]   7.00-8.00   sec  51.8 MBytes   435 Mbits/sec                  
[  4]   8.00-9.00   sec  52.6 MBytes   441 Mbits/sec                  
[  4]   9.00-10.00  sec  52.6 MBytes   442 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec   486 MBytes   408 Mbits/sec                  sender
[  4]   0.00-10.00  sec   483 MBytes   405 Mbits/sec                  receiver
iperf Done.

3. La velocidad entre un ordenador conectado a nuestra red LAN y el un ordenador conectado al puerto WAN (LAN - WAN).


En este apartado necesitaremos también dos ordenadores conectado con tarjeta 1 Gb/s por cable Ethernet al router. Vamos a medir la velocidad máxima de trasferencia entre ambos equipos entre la red interna del router y la red que se conectaría nuestro ISP al puerto WAN. Para ello vamos usar de nuevo iperf3 en ambos ordenadores que actuará en modo cliente-servidor. También necesitaremos cambiar la configuración del router para el puerto WAN. Antes de cambiar nada apunta la configuración que tienes.

Un ordenador que actuará como servidor lo conectamos al puerto WAN y el cliente a un puerto LAN.

Preparativos.

En el ordenador que se conecta al puerto WAN y que actuará como servidor hay que cambiar su configuración de red a modo manual y ponemos:

Dirección IP de internet: 10.1.1.2
Mascara de red: 255.255.255.0
Puerta de enlace: 10.1.1.1

Ahora cambiamos la configuración del router. Desde el ordenador cliente accedemos a la administración web del router. Normalmente http://192.168.1.1 y cambiamos la configuración del puerto WAN a IP-Estática, dejando la configuración DHCP sin alterar. Los datos que hay que poner son:

Dirección IP de internet: 10.1.1.1
Mascara de red: 255.255.255.0
Puerta de enlace: 10.1.1.1


Ya está todo listo.

Ahora desde el ordenador que actuará como servidor ejecutamos:

iperf3 -s

Desde el ordenador que actúa como cliente ejecutamos:

iperf3 -c 10.1.1.2

En el caso del ejemplo la velocidad obtenida es:

 Connecting to host 10.1.1.2, port 5201
[  4] local 192.168.1.126 port 50756 connected to 10.1.1.2 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  22.5 MBytes   188 Mbits/sec                  
[  4]   1.00-2.00   sec  21.1 MBytes   177 Mbits/sec                  
[  4]   2.00-3.00   sec  22.9 MBytes   192 Mbits/sec                  
[  4]   3.00-4.00   sec  22.0 MBytes   185 Mbits/sec                  
[  4]   4.00-5.00   sec  22.8 MBytes   191 Mbits/sec                  
[  4]   5.00-6.00   sec  22.5 MBytes   189 Mbits/sec                  
[  4]   6.00-7.00   sec  22.6 MBytes   190 Mbits/sec                  
[  4]   7.00-8.00   sec  22.8 MBytes   191 Mbits/sec                  
[  4]   8.00-9.00   sec  4.75 MBytes  39.8 Mbits/sec                  
[  4]   9.00-10.00  sec  12.4 MBytes   104 Mbits/sec                  
 - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec   196 MBytes   165 Mbits/sec                  sender
[  4]   0.00-10.00  sec   196 MBytes   164 Mbits/sec                  receiver
iperf Done.

No nos olvidemos de volver a cambiar la configuración de red del router y del ordenador después de las pruebas.


Esta velocidad que consigamos normalmente será inferior a la obtenida en el apartado anterior. La razón es que en este apartado la medición que hacemos necesita de todas las funciones de NAT del router, mientras que en la anterior sólo un subconjunto.

A continuación vemos que significa eso de NAT y otros conceptos.

Conceptos

Antes de ponernos manos a la obra de mejorar las prestaciones de nuestro router nos hará falta comprender algunos conceptos.

¿Qué es NAT y NAT por Hardware?


NAT (del inglés Network Address Translation) es utilizado para enrutar dispositivos que están conectados en redes distintas. Un ejemplo es comunicar una red local privada con una red de nuestro proveedor de internet. De este modo varios dispositivos conectados a un router pueden acceder a Internet con la misma IP.

Las funciones de NAT la compone un conjunto de funciones que actúan al transferir datos de distintos dispositivos entre distintas redes. Un conjunto de estas funciones son comunes para comunicar dispositivos dentro de la misma red. Por ejemplo dos ordenadores dentro de la misma red local 192.168.1.xxx. Algunos routers implementan las funciones que permite NAT en el propio hardware. De este modo no es necesario un uso intensivo de la CPU del router y mejoran el rendimiento global.

El NAT por hardware es una implementación propia del fabricante del router y consiste en que algún dispositivo físico del router se encargue del NAT descargando el uso de la CPU.

Aquellos routers que no disponen de esta característica los procesos de NAT son ejecutados por la CPU. La mayoría de router caseros disponen de una capacidad de procesamiento de la CPU muy limitada. Aunque existe una tendencia en nuevos routers cuyas prestaciones están mejorando.

Actualmente Openwrt/Lede no implementa NAT por hardware. Lo realiza por software, con el consiguiente uso de CPU.

¿Qué es Fast Path?

Las comunicaciones entre dispositivos son propensas a errores debido a diversos factores. Para reducir estos errores en las comunicaciones se utilizan técnicas y algoritmos para garantizar una buena comunicación. Estas técnicas empleadas tienen como contrapartida el consumo de procesamiento de la CPU del router y el uso de parte del ancho de banda por datos de control. En dispositivos poco potentes, estos procesos hace que la CPU llegue al 100% de utilización y la transferencia de datos se haga de forma más lenta.


El método Fast Path utiliza un algoritmo rápido de clasificación y reduce drásticamente los controles de errores. Esto posibilitará que la CPU quede más libre y se emplee casi la totalidad del ancho de banda para la transmisión de datos. Con esto aumentamos las velocidad de transferencias en los dispositivos conectados a nuestro router.

Fast Path es una técnica, por tanto es independiente de la plataforma y del hardware.

¿Es lo mismo NAT por hardware que Fast Path? Diferencias

La respuesta es NO. Ambas técnicas persiguen el mismo fin, permitir mayor velocidad de transferencia.

Fast Path se puede usar para cualquier router. La implementación NAT en hardware sólo está disponible en router que tienen esa característica.

Mejorar Rendimiento de Samba y FTP

Es muy normal que en nuestro router casero que disponga de puerto USB tengamos conectados un disco duro para tener un sitio compartido de datos.

En los firmware alternativos basados en Linux podemos habilitar un servicio Samba o FTP para acceder al disco duro o una parte de el para tener accesible nuestra información en nuestra red interna.

El rendimiento de estos servicios los podemos optimizar de dos formas simultáneas:

1. El formato de partición del disco que usemos debe ser propio de Linux. Según la versión de Linux podemos usar Ext3 o Ext4 para no tener problema con el tamaño de ficheros. No es recomendable usar ni NTFS ni FAT si queremos tener un buen rendimiento.

2. Cambiando el archivo de configuración del servicio (Samba y/o FTP). De esta forma podemos cambiar los tamaños de buffer que se usará y deshabilitar la compatibilidad con Sistemas operativos Windows 9x que actualmente no usamos.

Para cambiar los archivos de configuración debemos conectarnos por SSH al router. Para los usuarios de Windows se puede usar una herramienta gratuita llamada Putty.

Cambiar configuración de Samba.

Nos conectaremos al router con SSH a la IP del router( normalmente 192.168.1.1) y localizaremos el fichero de configuración de Samba. El fichero de configuración de Samba se llama smb.conf y la plantilla es smb.conf.template.

En OpenWRT y LEDE podemos encontrar este fichero en la ruta /etc/samba/smb.conf

Editamos el fichero con el editor vi y añadimos las siguientes líneas:

socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536 SO_KEEPALIVE
use sendfile = no

Guardamos y salimos de la edición.

Y ahora reiniciamos el servicio con el siguiente comando:

/etc/init.d/samba restart

En DD-WRT es un poco más complejo. El fichero de configuración se crea en el inicio del router en la carpeta /tmp. En este caso no nos servirá editar el fichero en la carpeta /tmp porque en el siguiente inicio se habrá regenerado de nuevo perdiendo los cambios que pudiéramos hacer en él. Por tanto, lo que haremos es copiar el fichero a una carpeta distinta donde podemos escribir (en el ejemplo se usará /mnt/sda2/)

cp /tmp/smb.conf /mnt/sda2/

Editamos con vi el fichero para añadir las dos líneas.

Una vez guardado nos vamos a la administración web de DD-WRT e incluimos el siguiente script de inicio.


killall smbd
killall nmbd
smbd --configfile=/mnt/sda2/smb.conf
sleep 4
nmbd --configfile=/mnt/sda2/smb.conf


De esta forma DD-WRT creará en el arranque el fichero de configuración de Samba e inicia el servicio y después con el script se cierra el servicio y vuelve a iniciarlo con el archivo de configuración que hemos editado en otra ruta.


Cambiar configuración de FTP.

El método empleado será similar al usado para cambiar la configuración de Samba.


El fichero de configuración de FTP es proftpd.conf.

En OpenWRT y LEDE se encuentra en la ruta etc/proftpd.conf

Las líneas que hay que incluir son:

SocketOptions rcvbuf 65536 sndbuf 65536
UseSendfile 90%

En DD-WRT el fichero se encuentra /tmp/proftpd/etc/proftpd.conf y tiene el mismo problema, que está en la carpeta temporal y perderíamos los cambios en el reinicio.

Copiamos el fichero con

cp /tmp/proftpd/etc/proftpd.conf /mnt/sda2/

Editamos el fichero de configuración en la nueva ruta e incluimos las líneas, guardamos y salimos de la edición.

Una vez guardado nos vamos a la administración web de DD-WRT e incluimos el siguiente script de inicio.

sleep 1
killall proftpd
sleep 3
proftpd -c /mnt/sda2/proftpd.conf


Reiniciamos el router y ver los cambios en la velocidad de transferencia en Samba y/o FTP.

En el router Tp-link WRD3600 con DD-WRT se experimenta:
10% de mejoría en Samba.
hasta un 80% en FTP.


A continuación se explica los pasos a seguir para instalar un firmware abierto, llamado LEDE, en un conjunto de routers, cuya capacidad de procesamiento es muy limitada, para sacar todo el aprovechamiento a este dispositivo.

Instalar Firmware LEDE con Fast Path activado

¿Esto sirve para mi router?

Si has valorado que quieres usar OpenWRT/LEDE y quieres sacar provecho al rendimiento sólo debes comprobar que la arquitectura de tu router esté basada en MIPS o PowerPC.

De todos modos si tu router es alguno de esta lista te conviene seguir leyendo.

- Engenius EPG5000 
- Netgear WNDR3700v4.
- Netgear WNDR4300v1.
- TP-Link Archer C5v1.
- TP-Link Archer C7v2.
- TP-Link WDR3500v1.
- TP-Link WDR3600v1. (éste tengo yo).
- TP-Link WDR4300v1.
- TP-Link WDR4310v1.
- TP-Link WDR4900v1 
- TP-Link WR1043NDv1
- TP-Link WR1043NDv2 
- TP-Link WR1043NDv3
- TP-Link WR1043NDv4



Pendiente

Bibliografía

Pendiente