Bonjour: todo lo que debes saber sobre la implementación de Zeroconf

Los dispositivos dentro de una red solo pueden comunicarse entre sí si están interconectados. Para ello no se necesita el nombre del dispositivo, sino la dirección IP o la dirección MAC que en grandes redes, por lo general, es asignada automáticamente por un servidor central DHCP (Dynamic Host Configuration Protocol) a los participantes. A tal efecto, este trabaja en conjunto con el servidor DNS, encargado de convertir el nombre de dominio en una dirección IP y viceversa. La alternativa a esta asignación automática es adaptar los archivos de alojamiento de todos los participantes en la red y añadir los nombres y las direcciones IP manualmente, una tarea casi imposible en el caso de una red de gran tamaño. Sin embargo, ninguna de estas opciones resulta ideal durante la instalación de redes locales. Por un lado, la configuración de los servidores DHCP y DNS es compleja y demanda conocimientos básicos y, por otro, la variante manual requiere el ajuste constante de todos los archivos de alojamiento, especialmente si se añade un nuevo dispositivo a la red o es necesario aplicar cambios a los sistemas ya integrados. La solución al problema se llama Zero Configuration Networking (Zeroconf) y consiste en una red IP que conecta diferentes dispositivos sin que haya que configurarla manualmente. Este concepto de red fue desarrollado entre 1999 y 2003 por el Grupo de Trabajo de Ingeniería de Internet (Internet Engineering Task Force, IETF) y se realizó bajo las implementaciones Bonjour y Avahi.

¿En qué consiste Zeroconf?

En 1999, cuando el IETF comenzó con el proyecto Zero Configuration Networking, se sentaron las siguientes características como objetivo para un trabajo en red sin configuración:

  • Resolución de nombres integrada
  • Asignación automática de la máscara de subred de la dirección IP local y del router
  • Función de búsqueda para encontrar servicios de red disponibles
  • Asignación automática de direcciones multidifusión para conexiones multipunto
  • Mismo nivel de seguridad que las redes sin Zeroconf

El grupo de trabajo IETF no pudo llegar a un consenso, por lo que tampoco publicó un documento con los requisitos del Zero Configuration Networking. En lugar de ello, se decidió a desarrollar junto con Apple, Microsoft y Sun Microsystems una especificación para el protocolo de Internet publicado bajo el nombre “Dynamic Configuration of IPv4 Link Local Adresses” (RFC 3927). IPv4LL asigna automáticamente direcciones IP aleatorias con el prefijo 169.254/16, es decir, entre 169.254.0.x y 169.254.255.x, aunque las primeras y últimas 256 direcciones están reservadas para futuras aplicaciones. El estándar RFC también requiere que el generador de números aleatorios tenga en cuenta informaciones específicas del equipo como, por ejemplo, la dirección MAC de la interfaz de red, minimizando la posibilidad de que dos dispositivos tengan la misma IP.

Cómo funciona la asignación automática de direcciones IPv4

Mientras que IPv4 utiliza el Address Resolution Protocol (ARP) para la asignación automática de direcciones sin el protocolo DHCP, su nueva versión, el IPv6, utiliza el Neighbor Discovery Protocol (NDP).

  1. En primer lugar se genera la dirección IP.
  2. A continuación, IPv4LL proporciona pruebas ARP, en las que se comprueba si la dirección IP generada ya es utilizada por otro dispositivo en la red. Con este fin, se envían como receptor tres paquetes ARP con la dirección de origen 0.0.0.0 y con la dirección a comprobar.
  3. Si durante este periodo se recibe un paquete ARP en el que la dirección del emisor se corresponde con la dirección IP creada, quiere decir que esta ya fue asignada dentro de la red y el proceso tendrá que comenzar desde cero.
  4. Si se recibe una prueba ARP externa que incluye la dirección a comprobar, al menos un dispositivo está usando esta IP para intentar unirse a la red, razón por la cual el procedimiento se repetirá desde el primer paso.
  5. Si no se presenta ningún conflicto, el dispositivo de conexión reclama la dirección como suya y envía dos de los llamados ARP Announcements (“anuncios”), donde se corresponden el remitente y el destinatario de las direcciones IP generadas.

Debido a que la dirección IP asignada es dinámica, esta se comprueba siempre después de cada reinicio, activación después del modo de reposo, conexión del cable de Ethernet o inicio de sesión en la red inalámbrica. Para prevenir una sobrecarga de la red como consecuencia de una gran cantidad de conflictos (si, por ejemplo, un gran número de equipos quiere conectarse a la red al mismo tiempo), el número de reintentos por unidad se reduce a un minuto por equipo.

Zeroconf: resolución de nombres y detección automática de dispositivos

Por otra parte, el equipo de Zeroconf desarrolló con el grupo de trabajo DNS Extensions soluciones para la traducción automática de direcciones y para la gestión de dispositivos en las redes IPv4 sin configuración. En lugar de desarrollar completamente un nuevo protocolo, decidieron ofrecer estas características mediante sencillos ajustes del protocolo DNS estándar. Para ello, el equipo trabajó en estrecha colaboración con Apple, pues la innovadora empresa ya contaba con AppleTalk, un conjunto propio de protocolos adecuado a sus propios dispositivos y transferido, posteriormente, a la familia de protocolos en Internet. El resultado obtenido fueron las especificaciones Multicast DNS (RFC 6762) y DNS Based Service Discovery (RFC 6763).

Multicast DNS (mDNS) describe cómo los dispositivos pueden enviar consultas DNS a direcciones IP multidifusión. Con este fin, en el protocolo mDNS, el dominio de nivel superior .local se define como enlace local. Además, todas las peticiones que terminen en .local tienen que ser enviadas a la dirección IPv4LL multidifusión 224.0.0.251 (en IPv6 la dirección es FF02::FB). Todas las solicitudes DNS que no terminan en .local también son enviadas a la dirección multidifusión si la red no cuenta con un servidor DNS. Generalmente, los mensajes mDNS también pueden ser transmitidos a través de UDP y TCP. En este caso, en lugar del puerto 53 habitual, se utiliza el puerto multidifusión 5353. Si uno de los equipos de la red quiere resolver el nombre de host de otro miembro de la red, envía una solicitud al mDNS pidiendo la identificación. El dispositivo de destino responde entonces con un paquete multidifusión revelando así su dirección IP. De esta forma, todos los dispositivos de red reciben esta información y la incluyen de forma automática en su caché DNS.

El DNS Based Service Discovery (DNS-SD) define cómo los servicios pueden hacerse visibles y disponibles para todos los participantes de una red Zeroconf. Para garantizar la sintonización, primero es necesario registrar estos servicios en la IANA (Internet Assigned Numbers Authority), quien asigna un nombre de servicio claramente identificable. Dicho nombre es compartido por las aplicaciones con cada uno de los participantes de la red por medio de una notificación multidifusión, sin que se genere problema alguno en caso de que varios dispositivos ofrezcan el mismo servicio. Esto es así debido, principalmente, a que el cliente que accede a la red tiene la posibilidad de seleccionar uno de los hosts. 

La IETF lanzó oficialmente ambos RFC en febrero de 2013, sin embargo Apple ya comenzó en 2002 a integrar las normas en sus dispositivos. El software desarrollado para este propósito se conoce hoy en día como Bonjour (anteriormente Rendezvous) y, al ser de código abierto, es hoy en día una de las soluciones Zeroconf más extendidas. Así, esta arquitectura de red sin configuración no solo está disponible para macOS y iOS, sino también para Windows.

Bonjour: la respuesta de Apple a las configuraciones de red problemáticas

En 2001, cuando Apple se cambió al kernel XNU híbrido con su Mac OS X 10.0, la compañía decidió no integrar en su sistema operativo los hasta la fecha típicos protocolos de red AppleTalk. El hecho de que el gigante informático no intentara encontrar un sucesor adecuado para estos protocolos no cupo en la cabeza del usuario Stuart Cheshire, quien decidió iniciar una discusión por correo electrónico en la que, en forma conjunta con otros usuarios, intentó abordar los inconvenientes de configurar manualmente una red. Esto llevó a Apple a replantearse la situación: la compañía empleó a Stuart Cheshire y le confió el desarrollo de una variante del protocolo para el nuevo sistema operativo, lo que resultaría entonces en una cooperación con la Internet Engineering Task Force.

Con el lanzamiento del Mac OS X 10.2 en agosto del 2002, Apple lanzó la primera versión de las nuevas especificaciones del protocolo bajo el nombre de Rendezvous. Debido a ciertos problemas legales fue necesario encontrar un nuevo nombre para el proyecto, por lo que desde la versión 4.10 este se llamaría Bonjour. El componente principal del paquete es un mDNSResponder, un programa de arranque que se ejecuta de fondo y se encarga de implementar el DNS multidifusión y el DNS Based Service Discovery. Adicionalmente, la especificación del protocolo de Internet IPv4LL (o IPv6LL) también forma parte de sus componentes principales. Con esto, Apple cubre las tres áreas básicas de las redes sin configuración:

  • Direccionamiento
  • Resolución de nombres
  • Servicio de descubrimiento de redes

Esta arquitectura permite a los usuarios conectar su equipo fácilmente y sin complicaciones a otros componentes de una red local que también recurren a Bonjour –independientemente de si se trata de un pc, una impresora o una aplicación. Entre otras cosas, el servicio de música iTunes de Apple utiliza esta tecnología para ayudar a los usuarios a encontrar a aquellos usuarios que ponen su música libremente a disposición en la red. Por defecto, Bonjour viene instalado en los sistemas macOS y iOS más populares. Los usuarios de Windows pueden utilizar una versión específica para los servicios de impresión o, alternativamente, instalar una aplicación que incluye el software. Aquí se incluyen, entre otros, iTunes, Skype y Adobe Photoshop (desde el CS3).

Una alternativa a la solución Zeroconf de Apple que también funciona en sistemas Linux, está disponible bajo la licencia LGPL y está instalada por defecto en Debian y Ubuntu, es Avahi. Inicialmente, la aplicación encontró apoyo en la iniciativa sin ánimo de lucro freedesktop.org, pero con el tiempo se ha convertido en un proyecto independiente.

¿Le ha resultado útil este artículo?
Page top