ASUS Tester Networking ASUS RT-AC87U Álvaro Fernández Rojas Index 1 2 3 4 Introducción .............................................................................................................. 3 1.1 Unboxing ........................................................................................................... 4 1.2 Red doméstica .................................................................................................. 12 Firmware oficial (ASUSWRT)............................................................................... 14 2.1 Dumb Access Point .......................................................................................... 14 2.2 Router Principal ............................................................................................... 17 2.3 Otras funcionalidades ...................................................................................... 19 2.3.1 Media Server............................................................................................. 19 2.3.2 Download Master ..................................................................................... 19 Firmwares alternativos ........................................................................................... 21 3.1 ASUSWRT-Merlin .......................................................................................... 21 3.2 DD-WRT ......................................................................................................... 22 3.3 OpenWrt........................................................................................................... 23 3.3.1 Problemas identificados en OpenWRT .................................................... 23 3.3.2 Documentación en OpenWRT.................................................................. 26 3.3.3 Movistar FTTH (WAN+VOIP+IPTV) en OpenWRT ............................. 26 Conclusiones........................................................................................................... 28 2 1 Introducción En este documento realizaré el análisis del ASUS RT-AC87U como participante del ASUS Tester Networking organizado por RedesZone y ASUS: ASUS Tester Networking: http://www.redeszone.net/2015/05/04/asus-testernetworking/ Participantes ASUS Tester: http://www.redeszone.net/2015/05/11/participantesasus-tester-networking/ A modo de introducción creo que es conveniente que me presente y os cuente algo sobre mí. Mi nombre es Álvaro Fernández Rojas y tengo un Grado en Ingeniería Informática por la UC3M (Universidad Carlos III de Madrid) y un Máster en Ingeniería Informática a punto de finalizar (a falta del proyecto), también por la UC3M. Recientemente he comenzado una beca en Airbus Defence and Space que también lleva un Máster asociado, por lo que como comprenderéis voy algo pillado de tiempo, aunque he intentado dar el máximo en las dos semanas de plazo de las que disponíamos para realizar el análisis. 3 1.1 Unboxing A continuación podéis encontrar algunas imágenes que hice del unboxing del router. Como podréis observar ASUS ha cuidado hasta el último detalle, hasta en el embalaje. De todas formas, os recuerdo que en RedesZone hay disponible un análisis del router bastante completo, en el cual podéis encontrar muchas más imágenes: http://www.redeszone.net/asus/rt-ac87u-ac2400/ 4 5 6 7 8 9 10 11 1.2 Red doméstica Con el fin de entender mejor las configuraciones descritas en los siguientes apartados, es necesario conocer la distribución actual de mi red doméstica. Como una imagen vale más que mil palabras a continuación podéis observar la distribución de mi red doméstica: 12 En el salón podemos encontrar el router principal, un TP-Link Archer C7. Dicho router tiene instalado OpenWRT en vez del firmware oficial de TP-Link y está configurado con mi script de configuración de la fibra óptica de Movistar que podéis encontrar en el foro de SeguridadWireless: http://foro.seguridadwireless.net/openwrt/(tutorial)movistar-ftth-con-openwrt/. Sin embargo, se trata de una configuración distinta a la habitual, puesto que la LAN (Local Area Network) está separada en dos subredes distintas, una para los dispositivos habituales (PCs, tablets, smartphones…) y otra para Movistar TV, en la que sólo encontramos los tres decodificadores de la IPTV. De esta forma evito que otros dispositivos reciban el tráfico multicast de la IPTV y consigo minimizar el tráfico multicast. Para llevar a cabo dicha configuración, he asignado la VLAN 1 a la LAN de los PCs y la VLAN 4 a la LAN de los decodificadores, puesto que las VLANs 2, 3 y 6 son necesarias para el Triple Play de Movistar (IPTV, VOIP, WAN). Mi casa dispone de una caja de telecomunicaciones donde se reparten cables a cada una de las habitaciones de teléfono y televisión. Como había suficiente espacio decidí añadir un switch gestionable (TP-Link SG108E) que reparte cables de red (UTP CAT 5E) a cada una de las habitaciones en las que me interesa tener cable de red en lugar de WiFi. Por tanto el Archer C7 está conectado al switch con la VLAN 1 como untagged y la VLAN 4 como tagged. Como podréis observar es muy importante que el switch sea gestionable, puesto que en la cocina es necesario cambiar la VLAN por defecto a la 4 (untagged), ya que únicamente hay un decodificador de Movistar TV. Sin embargo, en la habitación 2 es necesario un router (ZyXEL P870HW-51a_v2) más que separe ambas VLANs de forma que la Raspberry esté conectada a la VLAN 1 y el decodificador a la VLAN 4. Dicho router tiene instalado OpenWRT y es más que suficiente para gestionar una Raspberry y un decodificador que nunca van a funcionar al mismo tiempo, ya que están conectados a la misma TV. El WiFi de este router es b/g, por lo que se encuentra desactivado. Por último, en la habitación 1 no es necesario disponer de la VLAN 4, ya que no hay ningún decodificador, por lo que una de las posibles configuración que podemos darle al RT-AC87U es de Dumb AP en dicho punto. El router de esta habitación es un TPLink WDR4300 y proporciona un segundo punto de acceso WiFi para extender la cobertura a toda la casa, así que en este caso sí es importante disponer de un router potente. En esta habitación, además de tener conectados un ordenador de sobremesa y un portátil, podemos encontrar un sobremesa con Ubuntu Server que sirve contenidos por DLNA a diferentes dispositivos de la red como la Raspberry o la Smart TV de Samsung, entre otras funciones. 13 2 Firmware oficial (ASUSWRT) Yo siempre compro routers que tengan soporte OpenWrt debido a la gran variedad de aplicaciones y utilidades que se les puede instalar, pero la verdad es que me ha sorprendido el firmware de Asus, puesto que lleva incluidas multitud de funcionalidades con las que muchos competidores directos no pueden ni soñar, puesto que ASUSWRT está muy por encima, dado que salta a la vista que se ha invertido tiempo y mucho esfuerzo en ofrecer un firmware completo, funcional y amigable al usuario. 2.1 Dumb Access Point En esta configuración he sustituido el TL-WDR4300 por el RT-AC87U para evaluar el rendimiento como Dumb AP (Punto de Acceso “Tonto” – se conoce como tal porque no gestiona la red). Esta es la configuración más sencilla de realizar con el firmware oficial, puesto que no requiere ninguna configuración de VLANs ni de interfaces adicionales. Por esta misma razón es muy útil para probar el rendimiento del WiFi sin que otros factores alteren el resultado. El proceso de configuración es bastante sencillo y apenas hay que configurar nada por nuestra cuenta, puesto que nos lo va pidiendo todo el firmware oficial: 14 15 Como podemos observar en las pruebas expuestas a continuación, se ha alcanzado un rendimiento de unos 670 Mbps para las pruebas realizadas mediante UDP y de casi 600 Mbps para las pruebas realizadas mediante TCP por WiFi en la banda de 5GHz, lo que no está nada mal. El equipo utilizado para realizar estas pruebas es un MacBook Pro Late 2013 15’’. ./iperf -c 192.168.1.8 -P 1 -i 5 -t 20 -----------------------------------------------------------Client connecting to 192.168.1.8, TCP port 5001 TCP window size: 129 KByte (default) -----------------------------------------------------------[ 4] local 192.168.1.21 port 50197 connected with 192.168.1.8 port 5001 [ ID] Interval Transfer Bandwidth [ 4] 0.0- 5.0 sec 257 MBytes 431 Mbits/sec [ 4] 5.0-10.0 sec 374 MBytes 627 Mbits/sec [ 4] 10.0-15.0 sec 375 MBytes 629 Mbits/sec [ 4] 15.0-20.0 sec 374 MBytes 628 Mbits/sec [ 4] 0.0-20.0 sec 1.35 GBytes 579 Mbits/sec ./iperf -c 192.168.1.8 -P 1 -i 5 -u -b 1300m -t 20 -----------------------------------------------------------Client connecting to 192.168.1.8, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 9.00 KByte (default) -----------------------------------------------------------[ 4] local 192.168.1.21 port 55716 connected with 192.168.1.8 port 5001 [ ID] Interval Transfer Bandwidth [ 4] 0.0- 5.0 sec 421 MBytes 706 Mbits/sec [ 4] 5.0-10.0 sec 416 MBytes 697 Mbits/sec [ 4] 10.0-15.0 sec 422 MBytes 708 Mbits/sec [ 4] 0.0-20.0 sec 1.63 GBytes 702 Mbits/sec [ 4] Sent 1193387 datagrams [ 4] Server Report: [ 4] 0.0-20.0 sec 1.59 GBytes 681 Mbits/sec 0.010 ms 34010/1193386 (2.8%) [ 4] 0.0-20.0 sec 1 datagrams received out-of-order 16 2.2 Router Principal En esta configuración he sustituido el TL-ArcherC7 por el RT-AC87U con el fin de evaluar el rendimiento como router principal. En este apartado he de decir que no he sido capaz de aprovechar el Triple Play de Movistar con este router y el firmware oficial. En mi caso dispongo de la configuración antigua de Imagenio, por lo que los manuales existentes en el foro de ADSLZone no me valen, y no he podido configurarlo para que funcionara la IPTV. En cuanto a la VOIP, no he tenido tiempo de probarla, y para mi es más importante la televisión, así que al ver que no funcionaba la IPTV, he dejado la VOIP de lado. En las siguientes imágenes podéis comprobar que el proceso de configuración del router es bastante intuitivo y guiado. 17 Por último, si sólo tenemos contratado internet con Movistar y no necesitamos configurar ni VOIP ni IPTV, el RT-AC87U es un gran router, puesto que tiene hardware de sobra para soportar tanto la velocidad actual de la fibra de Movistar como múltiples subidas que puedan producirse en el futuro. Por el contrario, si queremos disfrutar del resto de servicios como VOIP o IPTV, aún podemos utilizar éste router como secundario con el fin de obtener un gran rendimiento WiFi y esperar a que ASUS haga compatible su firmware con dichos servicios. 18 2.3 Otras funcionalidades 2.3.1 Media Server En el caso del media server lo probé con la idea de aprovechar la funcionalidad sobre la compatibilidad con iTunes. Sin embargo, he de decir que me no es posible reproducir ningún contenido desde iTunes, ya que aunque detecta algunas canciones no deja reproducirlas. Lo más probable es que el firmware tenga una versión obsoleta de forked-daapd que no sea compatible con la última versión disponible de iTunes (suponiendo que usen forkeddaapd como media server). En cualquier caso se agradecen las funcionalidades adicionales, ya que con el móvil y la aplicación proporcionada por ASUS sí he sido capaz de acceder a dichos contenidos. 2.3.2 Download Master La verdad es que me ha impresionado para bien el hecho de que ASUS haya integrado en su firmware un gestor de descargas “universal”, puesto que es algo que se echa de menos en casi todos los routers, ya que esta funcionalidad, junto con un sistema de archivos en red tipo Samba o NFS y un gestor de contenidos multimedia tipo DLNA convierten nuestro router en un mini NAS al que a muchas personas les puede resultar más que suficiente. 19 En mi caso lo he probado muy por encima, pero debo decir que cumple su función bastante bien. 20 3 Firmwares alternativos 3.1 ASUSWRT-Merlin Este firmware es una modificación del firmware oficial creada a partir del código fuente liberado por ASUS. Es muy importante remarcar la importancia de liberar el código fuente del firmware de los routers con el fin de ayudar a usuarios expertos y darles la posibilidad de realizar modificaciones si lo consideran necesario, y esto es algo que muchos fabricantes aún no han entendido, por lo que he de felicitar a ASUS por el esfuerzo que esto conlleva. La verdad es que apenas he podido probar este firmware, pero si alguien quiere conocer las funcionalidades extra que aporta sobre el firmware original, puede dirigirse a la siguiente página: http://asuswrt.lostrealm.ca/features Sin embargo, me gustaría resaltar que algunas de las funcionalidades introducidas en un principio por este firmware alternativo han sido añadidas por ASUS al firmware oficial posteriormente, por lo que hay que reconocer también la labor de los desarrolladores de este firmware. 21 3.2 DD-WRT Este firmware nació como una modificación del firmware oficial del Linksys WRT54G, tal y como ha surgido el ASUSWRT-Merlin. DD-WRT dispone de acceso a documentos y código fuente propietario de algunos fabricantes gracias a un acuerdo NDA (Non Disclosure Agreement), lo que les facilita la implementación del soporte para nuevos routers y funcionalidades. De esta forma no dependen de drivers open source y el soporte de ciertas características como el WiFi es más completo. En una de las páginas de ASUS aparece reflejado que el RT-AC87U está soportado en DD-WRT: http://www.asus.com/us/site/routers/DD-WRT/. Sin embargo, después de haberlo probado he de decir que el soporte a día de hoy está muy verde, ya que el WiFi de 5GHz deja de funcionar en el momento en que se realizan cambios básicos en la configuración del firewall y de las VLANs. Por otro lado, es bastante difícil configurar las VLANs puesto que existe algún fallo y al mínimo cambio el router deja de responder, siendo necesario borrar la configuración del mismo y empezar de cero. Es importante destacar que DD-WRT utiliza los drivers del código fuente original de los routers que soporta, por lo que realizar modificaciones al firmware no es nada sencillo y el código está poco documentado y la curva de aprendizaje es bastante alta. Por tanto, me es imposible intentar mejorar el soporte de este router para este firmware en un tiempo razonable. Sin embargo, no creo que los desarrolladores oficiales de DD-WRT tarden mucho en mejorarlo hasta alcanzar un grado de funcionalidad similar al firmware oficial (hablando en términos de funcionamiento básico, obviamente DD-WRT dispone de muchos añadidos que no están presentes en el firmware oficial). 22 3.3 OpenWrt Al igual que DD-WRT, este firmware nació como una modificación del firmware oficial del Linksys WRT54G. Sin embargo, a diferencia de DD-WRT, OpenWRT centra sus esfuerzos en añadir funcionalidades siempre con la filosofía del open source, llegando incluso a reimplementar drivers propietarios como open source si es necesario y se da mucha importancia a hacer upstreaming a Linux (mandar todo lo incorporado en el repositorio relacionado con el kernel al correspondiente maintainer en Linux). Por otro lado, he de decir que llevo bastante tiempo realizando contribuciones a OpenWRT en las que he añadido soporte para diferentes routers (en su mayoría de ISPs españoles, como por ejemplo el Comtrend AR-5381u de Jazztel o el Comtrend WAP5813n de Movistar). Algunos de los routers para los que hemos añadido soporte en el foro de SeguridadWireles están disponibles en este hilo: http://foro.seguridadwireless.net/openwrt/(indice)-hilos-relevantes-de-openwrt/. Por tanto, dada mi experiencia con OpenWRT sí puedo dedicar parte de mi tiempo a mejorar el soporte del RT-AC87U. 3.3.1 Problemas identificados en OpenWRT UART sólo funcional como bootconsole. El router no inicializa correctamente el puerto serie una vez finalizada la consola de inicio: o Upstream: https://dev.openwrt.org/changeset/45690 LEDs no definidos en el DTS del router: o Upstream: https://dev.openwrt.org/changeset/45691 Imposible establecer comunicación con el router a través de Ethernet: o Upstream: https://dev.openwrt.org/changeset/45692 Particiones de la NAND no detectadas correctamente, de forma que ciertas características del firmware oficial no funcionaban al restaurar el firmware oficial después de haber instalado OpenWRT: o Upstream (hack temporal): https://dev.openwrt.org/changeset/45694 o Mis parches: http://patchwork.ozlabs.org/patch/473015/: permite invalidar y sustituir el driver por defecto de las particiones de la NAND desde el DTS. http://patchwork.ozlabs.org/patch/473018/: añade soporte para cargar las particiones desde el DTS al driver bcm47xxpart. http://patchwork.ozlabs.org/patch/473017/: añade las particiones al DTS del RT-AC87U. o Este problema es algo más complicado y mi solución no ha sido aceptada directamente por el responsable de bcm53xx en OpenWRT. No obstante, se está estudiando y como medida provisional para no perder la partición se ha añadido un hack temporal que será eliminado al conseguir una solución válida para todas las partes implicadas. WiFi de 2.4GHz no funcional ya que los drivers open source disponibles no tienen soporte para el BCM4360. o Este es un problema que viene de lejos, puesto que Broadcom no dedica esfuerzo alguno al mantenimiento de un driver open source para el WiFi. Por tanto, los únicos drivers existentes son b43 (bastante anticuado y sólo soporta modo b/g) y brcmsmac (es más reciente y soporta el modo 23 N, pero no ha sido actualizado y no tiene soporte para los chipsets más recientes). o Si Broadcom dedicara más tiempo al mantenimiento de un driver open source, muchos routers que disponen de chipsets de Broadcom ganarían mucho atractivo para firmwares estilo OpenWRT que sólo utilizan drivers y aplicaciones open source. WiFi de 5GHz no funcional puesto que es necesario proporcionar el bootloader y el firmware, entre otros archivos, al procesador independiente de Quantenna que lo controla: o Éste es el problema más importante de todos los que me he encontrado hasta el momento, ya que para arreglarlo es necesario dedicarle bastante esfuerzo. o Para entender el alcance del problema es necesario conocer el hardware del router: o Como podemos observar en la imagen, 4 de los 5 puertos del router están conectados directamente al switch principal del router (BCM53012). El último puerto no está conectado directamente al switch principal del router, sino que está conectado al switch secundario (RTL8211E) del Quantenna. Esta configuración del hardware es precisamente la que permite a ASUS ofrecer la posibilidad del Teaming Port con los puertos 1 y 2 de la LAN. Sin embargo, esta configuración tiene un inconveniente, y es que si el Quantenna no funciona el puerto LAN 1 tampoco (tal y como está ahora mismo el soporte en OpenWrt). o ¿Y por qué no funciona el Quantenna si tiene su propia flash y RAM? ¿No debería ser independiente? Pues no, no funciona porque la flash de la que dispone es muy limitada y carga su bootloader y su firmware por TFTP desde el BCM4709. Una vez que el BCM4709 completa el 24 arranque establece una dirección IP secundaria en el bridge de la LAN (1.1.1.1/24) y arranca un servidor TFTP que contiene, entre otros, el bootloader y el firmware para que el Quantenna arranque. Por último, configura el GPIO 8 del BCM4709 como salida actuando de interruptor del Quantenna, de modo que si la salida es positiva, arranca el Quantenna y si es negativa lo apaga. o Para implementar todo esto en OpenWRT dispongo de los siguientes parches a modo de prueba de concepto, aunque serán necesarias bastantes modificaciones para que sean aceptadas en el repositorio oficial de OpenWRT: Override del puerto 5 del switch principal para permitir la configuración con el SoC del Quantenna: https://github.com/openwrtes/openwrt/commit/6a8b95d6a5a3de11ba8eb6f7c176f5aa411a40 69 GPIO 8 exportado como un LED que por defecto está encendido para que el Quantenna también arranque al completar el arranque del BCM4709: https://github.com/openwrtes/openwrt/commit/ecf04dd3cb9c71e0307b24b97561b0b8be83b 04d Nuevo paquete con el bootloader y el firmware del Quantenna (extraído del código fuente proporcionado por ASUS): https://github.com/openwrtes/openwrt/commit/3a704b393c50502fe8fa223ce117dbfef55d51 76 Nuevo paquete con la librería y las utilidades necesarias para configurar el Quantenna remotamente desde el BCM4709 (extraído del código fuente proporcionado por ASUS). Este paquete también configura el servidor TFTP y añade la dirección IP secundaria para comunicarse con el Quantenna. https://github.com/openwrtes/openwrt/commit/9da5d09368cc694a4a0eaf66b7f3b825dc4aa1 65 Añadido un nuevo profile para el ASUS RT-AC87U que incluye los paquetes que acabo de mencionar: https://github.com/openwrtes/openwrt/commit/0c5c8eb04dd3f3fae77795af5c0f8cf559ce6f5c o Por último, cabe destacar que con esto no se puede configurar directamente el WiFi de 5GHz con OpenWRT, pero establece la base necesaria para que sea posible. La prioridad ahora mismo es conseguir que acepten dicha base en el repositorio oficial y una vez que se consiga ese objetivo veré cómo utilizar la librería proporcionada en el código fuente para configurar el WiFi desde el BCM4709 (el problema es que no existe documentación y hay que hacerlo mirando código del proporcionado por ASUS o el presente en DD-WRT). 25 3.3.2 Documentación en OpenWRT Toda la información anteriormente expuesta la he documentado también en la Wiki de OpenWRT: http://wiki.openwrt.org/toh/asus/rt-ac87u 3.3.3 Movistar FTTH (WAN+VOIP+IPTV) en OpenWRT Gracias al tiempo dedicado a mejorar el soporte del router en OpenWRT, he podido compilar un firmware con todo lo necesario para hacer funcionar el Triple Play de la fibra óptica de Movistar, añadiendo soporte para el ASUS RT-AC87U en la versión r19 de mi script de configuración disponible en el foro de SeguridadWireless: http://foro.seguridadwireless.net/openwrt/(tutorial)-movistar-ftth-con-openwrt/ Gracias al control que ofrece OpenWRT sobre las VLANs he sido capaz de sustituir el Archer C7 por el RT-AC87U como router principal, algo que no había sido capaz de hacer con ninguno de los firmwares anteriormente expuestos. 26 27 4 Conclusiones Personalmente creo que el RT-AC87U es un router muy potente y con muchas posibilidades. Sin embargo, el hecho de no ser posible configurarlo para el Triple Play de la fibra óptica de Movistar es un poco decepcionante para un router de semejantes características. Aun así, no tengo ninguna duda en recomendar el router para todos aquellos que no necesiten dicha funcionalidad, puesto que únicamente tengan contratado internet, sin VOIP ni IPTV, o que quieran utilizarlo como punto de acceso junto a otro router que sí les aporte dicha funcionalidad, ya que el rendimiento tanto por cable como por WiFi es extremadamente bueno. Por otro lado, con respecto al soporte en OpenWRT he de decir que no sólo es necesario dedicar tiempo a las pruebas y al soporte de todas las funciones del router, sino que conseguir que acepten dichas modificaciones en el repositorio oficial de OpenWRT también requiere tiempo y esfuerzo. No obstante, aunque se haya cumplido el plazo para realizar el análisis seguiré intentado mejorar el soporte en mi tiempo libre. Es una verdadera lástima que Broadcom no dedique el tiempo que sí dedican otras empresas como Qualcomm Atheros o Marvell a proporcionar drivers Open Source que estén continuamente actualizados y dando soporte para el último hardware disponible, ya que disponer de WiFi en firmwares como OpenWRT para este router lo convertiría en un dispositivo con infinitas posibilidades. Por último, espero que hayáis disfrutado con mi análisis del router y espero haber cumplido vuestras expectativas. Sin embargo, si alguien tiene alguna sugerencia o duda intentaré atenderla cuando disponga de tiempo. 28