SECCIÓN 4: IMPLEMENTACIÓN Y MEJORAS DE ALT
2. Etapa de Intercambio de Mensajes de Aplicación
Una vez se ha realizado la primera designación de compuertas y la primera asociación a una agrupación, se permite a los nodos la transmisión y recepción de mensajes de aplicación. Los campos del mensaje de aplicación se muestran en la Figura 18.
Figura 18. Campo de los mensajes de aplicación (APP). Cuando es una medición sencilla el paquete sólo contiene los campos para almacenar la medición del nodo (id1 y meas1).
El campo dest hace referencia a la dirección del sumidero, src al nodo generando el paquete de aplicación, gateID es la dirección de la compuerta de la agrupación al que pertenece src, LMAX es la cantidad de mediciones que la compuerta gateID esta colectando antes de transmitir el super-paquete al sumidero. Los campos meas y id hacen referencia a una medición y al nodo que la está generando respectivamente.
Cabe anotar que la cantidad máxima de mediciones que pueden ir en este super-paquete es LMAX. Como veremos, en este trabajo se presenta una variación al documento de referencia [10], ya que no proponemos un valor de LMAX constante. Esto debido a que por la inercia que representa el protocolo es probable que existan compuertas (es especial las
Leaf Lock Gates), que no adecuen completamente su agrupación llevando a retardos muy grandes para cada uno de los nodos que es cobijado por dichas agrupaciones.
Es así que cuando una compuerta hoja debe esperar mucho tiempo para llenar una compuerta de un tamaño predeterminado LMAX, proponemos la disminución gradual de dicha cantidad, de manera que no se vea un incremento considerable en los retardos de los paquetes de aplicación de los nodos pertenecientes a la agrupación.
SF es un campo muy importante ya que puede tomar uno de tres valores: 0 si es una medición de un nodo sensor y que por ende deberá ser recolectada en una compuerta, 1 que indica que el paquete es un super-paquete y de ser así, no debe ser sometido a ningún proceso de recolección o agregación en cualquier otro nodo de la red, es decir solo debe seguirse retransmitiendo en búsqueda del sumidero y 2 si se trata de un TRAP, es decir un evento detectado alrededor del nodo sensor y que debe transmitirse al sumidero con la mayor brevedad posible, por lo que tampoco debe someterse a ningún proceso de recolección o agregación en cualquier otro nodo de la red.
Cuando un nodo transmite una medición a la compuerta, coloca su dirección en id1 y la medición en meas1, entonces transmite el paquete al nodo padre en busca de la compuerta que está realizando la recolección.
Cuando la compuerta a la que va dirigido el paquete recibe el primero de ellos empieza un temporizador (TIC). Cuando el número de paquetes que alcanzan la compuerta (en búsqueda del sumidero) alcanza el valor LMAX, detiene dicho temporizador (TOC). De esta manera es posible conocer el valor del tiempo de llenado del super-paquete, que es la variable que dispara el proceso de mantenimiento de topología [3].
Cuando el valor del tiempo de llenado está por debajo de Tmin o por encima de Tmax, se
empieza un proceso de ajuste (que se trabajará en la siguiente sección) mediante la transmisión de un mensaje NGIREQ (por Next Gate Information REQuest), con el que se busca recoger información de las compuertas en dirección ascendente y de esa manera calcular la operación a realizar sobre una de ellas, bien sea una operación de PULL (para disminuir el tamaño de la agrupación) o una operación PUSH (para aumentar el tamaño).
La aplicación se planteó de manera que cuando se cumpla cierto temporizador periódico (TimerAPPLICATION), se envíe un mensaje de aplicación hacia el sumidero. De manera general, el diagrama de flujo se muestra en la Figura 19.
Nodo: Todos
Evento: Fin TimerAPPLICATION
Figura 19. Diagrama de flujo para el fin de TimerAPPLICATION. Se establece una tasa de envío constante y se mantiene control sobre el tiempo de llenado T=TOC-TIC.
Cada vez que un nodo recibe un paquete de aplicación, revisa el campo SF. Si ese campo tiene un valor de 1, significa que es un super-paquete armado de manera exitosa en otra compuerta. Si es un 2, significa que es un TRAP de otro nodo. En ambos casos el único
tratamiento que debe recibir por parte del nodo actual es una retransmisión del mismo al padre en busca del sumidero.
Si el nodo que recibe el paquete es una compuerta, y el tamaño del super-paquete que él está recogiendo es menor a LMAX, el nodo agrega los datos del paquete recibido a su cola. Tan pronto el número de paquetes recibidos alcance LMAX, activa el campo SF (lo coloca en 1) y transmite el super-paquete a su padre. Nuevamente, cuando la compuerta recibe el primer paquete activa un temporizador (TIC) y cuando el número de paquetes recibidos (packcount) alcanza LMAX, detiene el temporizador (TOC), de esta manera calcula el tiempo de llenado de un super-paquete. Si el tiempo de llenado, T=TOC-TIC, no cumple ciertas restricciones en su valor, puede disparar un proceso de ajuste del agrupación mediante el envío de un NGIREQ. El diagrama de flujo se presenta en la Figura 20.
Nodos: Todos
Evento: Recibir APP (recibir un mensaje de aplicación)
Figura 20. Diagrama de flujo para la recepción de un mensaje de aplicación. Cuando el campo SF es 1 o 2, se debe realizar una retransmisión directa al padre hacia el sumidero de manera que no se le inyecte un retardo adicional a esos paquetes.
Una vez determinado el tiempo de llenado de un super-paquete y si ese valor no cumple ciertas restricciones impuestas, se empieza un proceso de ajuste de la agrupación asociada a la compuerta que está generando el super-paquete.