En realidad, es posible permitir nodos inactivos sin la necesidad de sincronización horaria. La idea básica es enviar un mensaje varias veces hasta que el nodo finalmente se despierte. Por supuesto, hay mucho espacio para una optimización inteligente, por lo que hay cientos de enfoques de capa MAC basados en esta idea.
Pero dado que su pregunta específicamente solicita capas MAC, donde un nodo sabe cuándo transmitir por adelantado, es decir, Acceso múltiple por división de tiempo (TDMA), me centraré en esos enfoques.
Como ya mencionó, un problema es la deriva del reloj, por lo que los dispositivos tienen que despertarse regularmente para la sincronización horaria. En las aplicaciones inalámbricas típicas de corto alcance de las que estamos hablando, la duración de la propagación de la señal en un solo salto no es un gran problema. Por lo tanto, es suficiente que un coordinador central envíe una baliza, incluida la hora actual, en intervalos de tiempo regulares que los nodos conocen.
En una red de múltiples saltos se vuelve más complicado. Simplemente reenviar la baliza no funcionará, porque la latencia es demasiado alta. La solución es que varios nodos (si no todos) envían balizas, es decir, reciben una baliza de un nodo más cercano al coordinador, corrigen la deriva del reloj y envían una baliza propia con la hora corregida. Solo debes evitar construir círculos (estado allí, hecho eso ...).
Como ahora todos los nodos de la red tienen la misma noción de tiempo, hay un segundo problema: ¿cómo sabe un nodo cuándo debe despertarse para transmitir o recibir? Básicamente hay cuatro enfoques, que también se pueden combinar:
Ranura común : todos los nodos se activan al mismo tiempo y utilizan un método de acceso basado en contención para transmitir sus paquetes. Ventaja : fácil (si sabe cómo hacer CSMA / CA). Desventaja : propenso a colisiones, menor rendimiento.
Predefinido : para un número restringido de nodos, solo puede asignar ranuras fijas a los nodos. Por ejemplo, el nodo 2 puede enviar al nodo 1 en el primer intervalo de tiempo y el nodo 3 puede enviar al nodo 2 en el segundo intervalo de tiempo. Ventaja : Tragamonedas dedicadas y sin colisiones. Desventaja : la topología tiene que ser fija (muy difícil en redes de malla inalámbricas).
Centralizado : un coordinador central solicita información de los nodos sobre la topología, calcula un cronograma global y lo distribuye nuevamente a los nodos. Ventaja : no se requiere una topología predefinida. Desventaja : se escala mal y es propenso a cambios en la topología (todo el proceso debe reiniciarse).
Descentralizado : dos nodos que desean comunicarse negocian la ranura ellos mismos. Es bastante complejo, ya que deben asegurarse de que ningún dispositivo vecino transmita al mismo tiempo. Ventaja : Escala bien porque la negociación es local. Desventaja : Complejo de implementar.
Hay dos técnicas relacionadas incluidas en el estándar IEEE 802.15.4 que actualmente encuentran mucha atención de investigación: TSCH y DSME.
TSCH en sí es bastante básico. Solo resuelve el problema de sincronización de tiempo, pero deja el problema de asignación de ranura para una capa superior. Hay 6TiSCH que intenta llenar este vacío, pero todavía está en progreso. Hay implementaciones, por ejemplo incluidas en Contiki u OpenWSN .
DSME, por otro lado, ya proporciona un mecanismo para la negociación descentralizada de slots. De hecho, hemos creado una implementación de código abierto de esto llamada openDSME . Si bien hay un video tutorial para ejecutar una simulación, desafortunadamente la implementación del hardware todavía está subdocumentada. Haga otra pregunta o contáctenos directamente si desea usarla.