viernes, 27 de diciembre de 2013

OpenWRT: 10 años de diversión con dispositivos embebidos

En esta charla, ndb, uno de los principales desarrolladores de Open WRT nos describe el sistema y su historia.

Historia del desarrollo

El sistema operativo comenzó su vida cuando se descubrió que Linksys había usado linux para el router WRT54G, sin publicar el código, como requería la licencia GPL.
Cuando finalmente Linksys presionado por el descubrimiento, ditribuyó la tarball del sistema operativo comenzó su historia openWRT. En aquella época Linux no estaba muy distribuido entre los routers, y el sistema operativo que dominaba lo sistemas embebidos era VxWorks, sin requisitos GPL.
  1. Ruso blanco (0.9): los primeros trabajos que llevaron a una versión publicable se centraron en liberarse del tarball para tomar sólo las dependencias principales. Y lo segundo actualizar el kernel a una versión más moderna que la 2.0 de entonces. Ndb empezó con esta versión, 0.9, con la creación del sisetma de construcción. Con esta versión se inició la costumbre de nombrar versiones en función de cócteles de vodka.
  2. Kamikaze (8): A partir de ahí, los trabajos se dedicaron a independizarse del chipset de Broadcom del WRT, creando soporte multiplataforma y con nuevos sistemas de compilación, configuración y administración Web. El nombre venía por todos los cambios con respecto a la versión anterior. 
  3. Backfire (10): A partir de ahí, el foco fue estabilizar la versión y hacerla más robursta.
  4. Attitude Adjustmente (12): Después de Backfire, el objetivo fue liberarse del soporte 2.4, conseguir una buena integración de IPv6 y la parte de usuario y los scripts y las opciones de configuración. Esta es la última versión estable distribuida.

Descripción del sistema

¿Qué es lo que diferencia de openWRT de otras versiones?:
  • El sistema RPC ubus, mucho más simplificado que el normal dbus de las otras distribuciones Linux
  • El configurador de la red, netifd, que sustituye a múltiples scripts pero que permite cambios de configuración más rápido haciendo el mínimo número de cambios..
  • El demonio de sistema procd, que monitoriza los demonios que corren en el sistema, rearrancándolos cuando son necesario, como sustituto de systemd, mucho mejor testeado y ligero que el normal.
  • Tienen su propia implementación de IPv6, con un demonio dhcpv6 propio, con capacidad de redistribuir prefijos delegados, que no están bien resueltos en otras versiones de Linux, que no están tan restringidas como openWRT, que tiene que trabajar hasta en equipos con 32 MB de RAM.
En este momento, están trabajando en su nueva página web, LuCI2, que ya no está basada en Lua, sino en Javascript y RPCs JSON, que permite mover buena parte del trabajo de crear las páginas al navegador del usuario, ya que hasta los navegadores móviles tienen buenas implementaciones de Javascript.
Con esto, prevén distribuir una nueva versión llamada "Barrier Breaker", llamada así porque se supone que va a romper muchos moldes.

Impacto en la industria

Varios fabricantes de equipos les han entrevistado para intentar entender por qué su proyecto tenía éxito, aunque no tuvieron mucho éxito. Y el sucesor en Linksys del WRT54G estaba lleno de código propietario que no podía ser sustituido por código abierto lo que retrasó la adopción del equipo.
Otros fabricantes (ODM) han adoptado openWRT pero de manera extraña adoptaron las partes más inestables y descartaron las más estables en muchos casos, por lo que los fabricantes acabaron teniendo produtos peores en su intento de tenerlos mejores.
Subiendo más arriba en la cadena alimenticia, sí que consiguieron buenas colaboraciones con los  fabricante de circuitos integrados: Atheros, Broadcom, Lantiq, Mediatek y Ralink.
El problema para entenderse con todos, ya que openWRT tiene mucho énfasis en estabilidad y calidad del código mientras que los fabricantes están enfocados en producir nuevos equipos lo más rápidamente posible y con el menor coste, lo que les deja poco tiempo para enfocarse en el largo plazo.
Los fabricantes además de tener mucha burocracia y gestores de producto poco cualificados, tienen muchos problemas de desarrollo, particularmente con las ramas de desarrollo de modo que no tienen discirplina para mantener una rama principal operativa y periodicamente mezclar el código de las ramas laterales con la principal.
Otras actividades relacionadas con el proyecto son todos los trabajos para integrar sus parches en las distribuciones principales (upstream), en muchos casos desarrollando en ambos sistemas simultáneamente.
Una de las grandes colaboraciones es la de Freifunk, un proyecto que tiene como objetivo la creación de redes inalámbricas malladas (mesh).
También colaboran con Bufferbloat, cuyo objetivo es disminuir el impacto de los buffers en el routing, que está probando cosas más avanzadas que ellos.
Los trabajos para integrar IPv6 en el routing del hogar del IETF están también basados en openWRT.

No hay comentarios:

Publicar un comentario