Protocolos para redes inalámbricas de sensores Tesis de Ingenierı́a en Informática Jimena Garbarino [email protected] Directora Lic. Adriana Echeverrı́a Universidad de Buenos Aires Facultad de Ingenierı́a 7 de noviembre de 2011 2 Agradecimientos A mi mamá Isabel Ubiedo y a mi papá Eduardo Antonio Garbarino. A Sergio. A mi directora de tesis, Lic. Adriana Echeverrı́a. A toda mi familia, que hace tiempo que no los veo porque estaba estudiando. A mi hermana Florencia por insistir con que me reciba para reunirnos en una fiesta. A todos los que me dieron aliento y me ayudaron de distinta manera: Maxi, Julia, Ale, Mariano MP y Naranjita, Valeria, Marcela, Agustı́n. A los profesores que me inspiraron en los comienzos: Ing. Jorge Álvarez Juliá, Ing. Ricardo Sirne, Lic. Rina Lombardi, Ing. Osvaldo Clúa, Ing. Leopoldo Carranza. A mis primeros tres jefes. A todos mis otros compañeros de facultad o del trabajo, a los que perseguı́ por los pasillos o por e-mail con alguna pregunta, especialmente a los que me ayudaron a aprobar la última materia. 3 4 Índice general 1. Introducción 17 1.1. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.2. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.3. Organización . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2. Redes inalámbricas de sensores 2.1. Introducción . . . . . . . . . . . . . . . . . . . . 2.1.1. Topologı́a . . . . . . . . . . . . . . . . . 2.1.2. Nodo sensor . . . . . . . . . . . . . . . . 2.1.3. Cuestiones de diseño . . . . . . . . . . . 2.2. Tipos de aplicación . . . . . . . . . . . . . . . . 2.2.1. Detección y reporte de eventos . . . . . 2.2.2. Recolección de datos y reporte periódico 2.2.3. Consulta iniciada por sumidero . . . . . 2.2.4. Seguimiento . . . . . . . . . . . . . . . . 2.2.5. Resumen . . . . . . . . . . . . . . . . . 2.3. Estándares de comunicación . . . . . . . . . . . 2.3.1. Bluetooth y Wi-Fi . . . . . . . . . . . . 2.3.2. Estándar IEEE 802.15.4-2006 . . . . . . 2.3.3. ZigBee . . . . . . . . . . . . . . . . . . . 2.3.4. WirelessHART . . . . . . . . . . . . . . 3. Protocolos de red 3.1. Problema del encaminamiento . . . . . . . . 3.2. Encaminamiento jerárquico . . . . . . . . . 3.2.1. Caracterı́sticas . . . . . . . . . . . . 3.2.2. LEACH . . . . . . . . . . . . . . . . 3.3. Encaminamiento geográfico . . . . . . . . . 3.3.1. Caracterı́sticas . . . . . . . . . . . . 3.3.2. Por coordenadas virtuales . . . . . . 3.4. Encaminamiento centrado en los datos . . . 3.4.1. Caracterı́sticas . . . . . . . . . . . . 3.4.2. Energy-Aware Data-Centric Routing 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 23 24 26 29 29 31 32 32 33 33 33 35 40 47 . . . . . . . . . . 55 55 57 57 59 62 62 64 69 69 70 ÍNDICE GENERAL 3.5. Diseminación de interés . . 3.5.1. Caracterı́sticas . . . 3.5.2. SPIN . . . . . . . . 3.6. Consciencia de la energı́a . 3.6.1. Introducción . . . . 3.6.2. Métricas de energı́a . 3.6.3. Flow Augmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 74 77 82 82 83 85 4. Diseño de la simulación con Omnet++ 4.1. ¿Qué es Omnet++? . . . . . . . . . . . . . . . 4.1.1. Introducción . . . . . . . . . . . . . . . 4.1.2. Conceptos de modelado . . . . . . . . . 4.1.3. Descripción de red . . . . . . . . . . . . 4.1.4. Conceptos de simulación . . . . . . . . . 4.1.5. Ambiente de desarrollo . . . . . . . . . . 4.1.6. Definición de un módulo simple . . . . . 4.1.7. Simulación . . . . . . . . . . . . . . . . 4.1.8. Herramientas de análisis . . . . . . . . . 4.2. Diseño de la red . . . . . . . . . . . . . . . . . 4.2.1. MiXiM 2.1 . . . . . . . . . . . . . . . . 4.2.2. Modelo de dispositivo . . . . . . . . . . 4.2.3. Topologı́a . . . . . . . . . . . . . . . . . 4.2.4. Tamaño del terreno y densidad de nodos 4.2.5. Modelo de despliegue . . . . . . . . . . 4.2.6. Modelo de aplicación . . . . . . . . . . . 4.2.7. Resumen del diseño . . . . . . . . . . . 4.3. Métricas de evaluación . . . . . . . . . . . . . . 4.3.1. Vida útil del sistema . . . . . . . . . . . 4.3.2. Eficiencia . . . . . . . . . . . . . . . . . 4.3.3. Uso de la energı́a . . . . . . . . . . . . . 4.3.4. Calidad de servicio . . . . . . . . . . . . 4.3.5. Métricas no consideradas . . . . . . . . 4.3.6. Métricas seleccionadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 89 89 90 90 92 94 94 97 97 100 100 102 105 105 106 107 108 108 108 109 110 111 112 113 . . . . . . . . . 115 . 115 . 116 . 116 . 118 . 129 . 131 . 135 . 138 . 138 5. Implementación de módulos de red 5.1. Definiciones . . . . . . . . . . . . . . 5.2. Diseminación de interés con M-SPIN 5.2.1. Caracterı́sticas . . . . . . . . 5.2.2. Especificaciones . . . . . . . . 5.2.3. Complejidad M . . . . . . . . 5.2.4. Detalles de implementación . 5.2.5. Pseudocódigo . . . . . . . . . 5.3. Consciencia de recursos con SAMF . 5.3.1. Caracterı́sticas . . . . . . . . 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ÍNDICE GENERAL 5.3.2. Especificaciones . . . . . . . . 5.3.3. Complejidad M . . . . . . . . 5.3.4. Detalles de implementación . 5.3.5. Pseudocódigo . . . . . . . . . 5.4. Módulo de técnica mixta: EA-SPIN . 5.4.1. Diseño . . . . . . . . . . . . . 5.4.2. Especificaciones . . . . . . . . 5.4.3. Complejidad M . . . . . . . . 5.4.4. Detalles de implementación . 5.4.5. Pseudocódigo . . . . . . . . . 5.5. Resumen de módulos desarrollados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6. Simulación y conclusiones 6.1. Escenarios . . . . . . . . . . . . . . . . . . . . . 6.2. Resultados . . . . . . . . . . . . . . . . . . . . . 6.2.1. Complejidad M . . . . . . . . . . . . . . 6.2.2. Métricas obtenidas . . . . . . . . . . . . 6.2.3. Análisis de confiabilidad . . . . . . . . . 6.2.4. Consciencia de energı́a . . . . . . . . . . 6.2.5. Experiencia con MiXiM 2.1 y Omnet++ 6.3. Conclusiones . . . . . . . . . . . . . . . . . . . 6.4. Resumen de aportes del trabajo . . . . . . . . . 6.5. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 146 147 149 153 153 154 160 161 164 167 . . . . . . . . . . 169 . 170 . 170 . 170 . 172 . 188 . 189 . 191 . 192 . 193 . 193 Apéndices 194 A. Glosario 197 B. Métricas 203 B.1. Recopilación de métricas . . . . . . . . . . . . . . . . . . . . . 203 B.2. Métricas de simulaciones especı́ficas . . . . . . . . . . . . . . 206 C. Modificaciones a MiXiM C.1. Energı́a de transmisión C.2. Total de mensajes . . C.3. Energı́a residual . . . . C.4. Sensibilidad . . . . . . 2.1 . . . . . . . . . . . . . . . . Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 . 209 . 209 . 211 . 212 213 7 ÍNDICE GENERAL 8 Índice de figuras 2.1. Infraestructura de una red inalámbrica de sensores . 2.2. Componentes de hardware del nodo sensor . . . . . . 2.3. Componentes de software del nodo sensor . . . . . . 2.4. Pila genérica de protocolos del nodo sensor . . . . . 2.5. Nodo sensor MicaZ de MEMSIC . . . . . . . . . . . 2.6. Tipos de aplicación . . . . . . . . . . . . . . . . . . . 2.7. Estructura del paquete de capa fı́sica IEEE 802.15.4 2.8. Superframe de IEEE 802.15.4 CSMA ranurado . . . 2.9. Capas de protocolos de ZigBee . . . . . . . . . . . . 2.10. Red ZigBee estrella . . . . . . . . . . . . . . . . . . . 2.11. Red ZigBee malla . . . . . . . . . . . . . . . . . . . . 2.12. Pila de protocolos WirelessHART . . . . . . . . . . . 2.13. Malla WirelessHART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 25 26 27 28 34 36 37 41 41 42 48 50 3.1. Jerarquı́a virtual en una red de sensores . . . . . . . . 3.2. Topologı́a de red en LEACH . . . . . . . . . . . . . . . 3.3. Encaminamiento geográfico . . . . . . . . . . . . . . . 3.4. Encaminamiento geográfico en presencia de obstáculos 3.5. Nodos perı́metro . . . . . . . . . . . . . . . . . . . . . 3.6. Máquina de estados del nodo EAD . . . . . . . . . . . 3.7. De estado indefinido a estado hoja . . . . . . . . . . . 3.8. Ejemplo de agregación de datos camino al sumidero . 3.9. Implosión . . . . . . . . . . . . . . . . . . . . . . . . . 3.10. Superposición . . . . . . . . . . . . . . . . . . . . . . . 3.11. Negociación SPIN pasos 1 y 2 . . . . . . . . . . . . . . 3.12. Negociación SPIN pasos 3 y 4 . . . . . . . . . . . . . 3.13. Negociación SPIN pasos 5 y 6 . . . . . . . . . . . . . . 3.14. Desempeño no óptimo de FA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 59 62 63 66 71 72 73 76 76 79 80 80 87 4.1. 4.2. 4.3. 4.4. . . . . . . . . . . . . . . . . 91 91 94 97 Vista de diseño de una red Omnet++ . . . . . . . Diseño del nodo como módulo compuesto . . . . . Perspectiva de Simulación de Omnet++ en Eclipse Configuración de ejecución en Omnet++ . . . . . . 9 . . . . . . . . ÍNDICE DE FIGURAS 4.5. 4.6. 4.7. 4.8. Gráfico de secuencia en Omnet++ . . . . . . . . . Navegador de vectores y escalares en Omnet++ . . Gráfico de barras en Omnet++ . . . . . . . . . . . Potencia de transmisión del tranceptor TI CC2420 . . . . . . . . . . . . . . . . . . . . . 98 . 99 . 99 . 104 5.1. Etapa de descubrimiento de distancia al sumidero . . . . . . . 117 5.2. Jerarquı́a de módulos de diseminación . . . . . . . . . . . . . 132 6.1. Escenario 6.2. Escenario 6.3. Escenario 6.4. Escenario 6.5. Escenario 6.6. Escenario 6.7. Escenario 6.8. Escenario 6.9. Escenario 6.10. Escenario 6.11. Escenario 6.12. Escenario 6.13. Escenario 6.14. Escenario 6.15. Escenario 6.16. Escenario 6.17. Escenario 6.18. Escenario 6.19. Escenario 6.20. Escenario 6.21. Escenario 6.22. Escenario 6.23. Escenario 6.24. Escenario 6.25. Escenario 6.26. Escenario 6.27. Escenario 6.28. Escenario 6.29. Escenario 6.30. Escenario 1 - Latencia media en el sumidero . . . . . . . . . . 172 1 - Tasa de éxito . . . . . . . . . . . . . . . . . . . 172 1 - Overhead . . . . . . . . . . . . . . . . . . . . . . 173 1 - Total de energı́a de transmisión . . . . . . . . . 173 1 - Media y máxima de saltos . . . . . . . . . . . . 174 1 - Media y desviación de energı́a de transmisión . 174 2 - Latencia media en el sumidero . . . . . . . . . . 175 2 - Tasa de éxito . . . . . . . . . . . . . . . . . . . 175 2 - Overhead . . . . . . . . . . . . . . . . . . . . . . 176 2 - Total de energı́a de transmisión . . . . . . . . . 176 2 - Media y máxima de saltos . . . . . . . . . . . . 177 2 - Media y desviación de energı́a de transmisión . 177 3 - Latencia media en el sumidero . . . . . . . . . . 178 3 - Tasa de éxito . . . . . . . . . . . . . . . . . . . 178 3 - Overhead . . . . . . . . . . . . . . . . . . . . . . 179 3 - Total de energı́a de transmisión . . . . . . . . . 179 3 - Media y máxima de saltos . . . . . . . . . . . . 180 3 - Media y desviación de energı́a de transmisión . 180 4 - Latencia media en el sumidero . . . . . . . . . . 181 4 - Tasa de éxito . . . . . . . . . . . . . . . . . . . 181 4 - Overhead . . . . . . . . . . . . . . . . . . . . . . 182 4 - Total de energı́a de transmisión . . . . . . . . . 182 4 - Media y máxima de saltos . . . . . . . . . . . . 183 4 - Media y desviación de energı́a de transmisión . 183 1 - Total de energı́a vs. distancia al sumidero . . . 184 2 - Total de energı́a vs. distancia al sumidero . . . 184 3 - Total de energı́a vs. distancia al sumidero . . . 185 4 - Total de energı́a vs. distancia al sumidero . . . 185 2: Promedio de energı́a de transmisión por distancia 190 4: Promedio de energı́a de transmisión por distancia 190 10 Índice de cuadros 2.1. 2.2. 2.3. 2.4. 2.5. Funciones de la pila de protocolos WSN . . . . . . . . Resumen de tipos de aplicación y caracterı́sticas . . . Campos de la tabla de encaminamiento ZigBee . . . . Campos de la tabla de descubrimiento de ruta ZigBee Campos de la tabla de nodos vecinos ZigBee . . . . . . . . . . . . . . . . . . . . . . . . . . 27 33 43 44 45 4.1. Módulos MiXiM utilizados . . . . . . . . . . . . . . . . . . . . 103 4.2. Densidad mı́nima de nodos . . . . . . . . . . . . . . . . . . . 106 4.3. Resumen de la red a simular . . . . . . . . . . . . . . . . . . . 108 5.1. 5.2. 5.3. 5.4. 5.5. 5.6. Métricas de M-SPIN . . . . . . . . . Atributos de cada enlace SAMF . . . Atributos de cada nodo SAMF . . . Métricas de SAMF . . . . . . . . . . Contadores para el análisis de SPIN Módulos desarrollados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 140 140 142 163 167 6.1. 6.2. 6.3. 6.4. 6.5. 6.6. 6.7. 6.8. Escenarios simulados . . . . . . . . . . . . . . . . . . . Cantidad total de paquetes enviados en cada escenario Métricas de escenario 1 . . . . . . . . . . . . . . . . . Métricas de escenario 2 . . . . . . . . . . . . . . . . . Métricas de escenario 3 . . . . . . . . . . . . . . . . . Métricas de escenario 4 . . . . . . . . . . . . . . . . . Total de frames descartados por interferencia . . . . . Consumo total de energı́a en transmisiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 171 186 186 187 187 189 189 B.1. B.2. B.3. B.4. B.5. B.6. Métricas de evaluación de protocolos . . . . . . . . Otras métricas de desempeño . . . . . . . . . . . . Métricas de una revisión de criterios de evaluación Métricas de evaluación del protocolo SPIN . . . . . Métricas de evaluación del protoclo PBR . . . . . . Métricas de evaluación del protocolo EAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 204 205 206 206 207 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ÍNDICE DE CUADROS 12 Fragmentos de código 4.1. 4.2. 4.3. 4.4. 4.5. 4.6. 5.1. 5.2. 5.3. C.1. C.2. C.3. C.4. C.5. C.6. C.7. C.8. Modelo de protocolo de capa . . . . . . . . . . . . . . Definición de red . . . . . . . . . . . . . . . . . . . . . Configuración del decider . . . . . . . . . . . . . . . . Actividades de capa fı́sica . . . . . . . . . . . . . . . . Configuración del nodo sumidero . . . . . . . . . . . . Dimensiones del terreno . . . . . . . . . . . . . . . . . Paquete M-SPIN . . . . . . . . . . . . . . . . . . . . . Paquete SAMF . . . . . . . . . . . . . . . . . . . . . . Paquete EA-SPIN . . . . . . . . . . . . . . . . . . . . Método getActivityTotal() . . . . . . . . . . . . . . . . Redefinición del módulo de rastreo . . . . . . . . . . . Herencia pública de ImNotifiable para SimTracer . . . Total de paquetes a partir de notificaciones . . . . . . SPIN publica paquetes envı́ados y de sobreescucha . . Grabación de la energı́a residual al finalizar . . . . . . Grabación del consumo por actividad . . . . . . . . . . Descarte por baja intensidad en Decider802154Narrow 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 100 101 105 105 105 133 147 161 209 210 210 210 211 211 211 212 FRAGMENTOS DE CÓDIGO 14 Algoritmos 1. Ciclo de evento . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. M-SPIN Procesar paquete de aplicación . . . . . . . . . . . . . 135 M-SPIN Procesar paquete STARTUP . . . . . . . . . . . . . . 135 M-SPIN Procesar paquete ADV de anuncio . . . . . . . . . . . 136 M-SPIN Procesar paquete REQ de pedido . . . . . . . . . . . 136 M-SPIN Procesar paquete DATA de datos . . . . . . . . . . . 137 M-SPIN Expira temporizador de repetición o supresión de pedido137 SAMF Procesar paquete de aplicación . . . . . . . . . . . . . . 150 SAMF Procesar paquete INTEREST . . . . . . . . . . . . . . 150 SAMF Procesar paquete DATA . . . . . . . . . . . . . . . . . 151 SAMF Recalcular restricciones de enlace . . . . . . . . . . . . 151 SAMF Actualizar enlace en la tabla . . . . . . . . . . . . . . . 152 SAMF Obtener la mejor ruta a destino . . . . . . . . . . . . . 152 EA-SPIN Procesar paquete de aplicación . . . . . . . . . . . . 164 EA-SPIN Procesar paquete STARTUP . . . . . . . . . . . . . 164 EA-SPIN Procesar paquete ADV de anuncio . . . . . . . . . . 165 EA-SPIN Procesar paquete REQ de pedido . . . . . . . . . . . 165 EA-SPIN Procesar paquete DATA de datos . . . . . . . . . . . 166 EA-SPIN Expira temporizador pedido . . . . . . . . . . . . . . 166 EA-SPIN Expira temporizador de repetición de anuncio . . . . 167 15 93 ALGORITMOS 16 Capı́tulo 1 Introducción 1.1. Motivación Una red inalámbrica de sensores, o Wireless Sensor Network, es una red de un gran número de pequeños dispositivos capaces de medir diferentes variables de ambiente en el que se encuentran, y de procesar y comunicar la información de manera inalámbrica [1][2]. Existen varios tipos de aplicaciones de esta tecnologı́a. Por ejemplo, en defensa, la detección de ataque nuclear, biológico y quı́mico. En medio ambiente, el monitoreo de microclimas, detección de fuego, detección de inundaciones, agricultura [3]. En salud, monitoreo de médicos y pacientes, y de información fisiológica. En el hogar, lectura automática de medidores, y automatización del hogar. Entre sus aplicaciones comerciales se encuentran el control de inventario, el seguimiento y detección de vehı́culos, el monitoreo de tráfico, el control del medio ambiente en oficinas y edificios industriales. Tı́picamente, la red de sensores será administrada por una entidad civil, comercial, industrial o del gobierno [4]. El modelo de red, en la mayorı́a de los casos, está compuesto por una estación base, que es un dispositivo con recursos de energı́a y cómputo no acotados, y un número de pequeños dispositivos homogéneos, los nodos sensores [5]. Un nodo sensor generalmente embebe capacidad de procesamiento y almacenamiento, y puede tener uno o más sensores acústicos, sı́smicos, de radio, infrarrojos, ópticos, magnéticos, y quı́micos o biológicos. El nodo cuenta también con una unidad de comunicación inalámbrica, y una baterı́a, y posiblemente es capaz de conocer su posición geográfica apoyándose en un GPS o en un algoritmo de posicionamiento. Invariablemente el nodo se encuentra restringido en energı́a, ancho de banda y en recursos en general [4]. Para 17 1.1. MOTIVACIÓN poder ser operados, los nodos necesitan un sistema operativo especı́fico para redes de sensores. Tı́picamente, se tienen cinco subsistemas o componentes de software: el sistema operativo, controladores de sensor, procesadores de comunicación, controladores de comunicación y pequeñas aplicaciones de procesamiento de datos [4]. El estándar de comunicación adoptado en los últimos años por el mercado fue desarrollado por la ZigBee Alliance [4] y define una arquitectura de capas para la comunicación inalámbrica. Cada capa brinda un conjunto de servicios especı́ficos a la capa superior. La capa fı́sica, responsable del manejo de la interfaz inalámbrica (frecuencia de operación, tipo de modulación, codificación) y la capa de enlace responsable del manejo de la comunicación con nodos vecinos (dentro del radio de un salto) están definidas por el estándar IEEE 802.15.4-2003. La capa de red, responsable del encaminamiento de paquetes dentro de la red de sensores, y cuya principal restricción de diseño es la eficiencia energética [4], soporta, en esta arquitectura, tres topologı́as: estrella, árbol y malla. Para definir el costo de una ruta, el algoritmo de encaminamiento utiliza una métrica de costo para comparar caminos alternativos. Para calcular el valor de la métrica para un determinado camino, se asocia un costo a cada enlace entre dos nodos, y se suma el costo de cada uno de los enlaces utilizados por el camino. El costo de cada enlace individual se define como una función que depende de la probabilidad de que el paquete sea entregado si se utiliza ese enlace. En el estándar se plantea que la cuestión de estimar o definir esta probabilidad es un problema de implementación, para el cual, los implementadores son libres de aplicar su ingenio [6]. El algoritmo es muy similar al algoritmo AODV (Ad hoc On-Demand Distance Vector ) el cual no tiene consideraciones respecto de la optimización de la energı́a [7]. AODV es un protocolo para redes ad hoc donde los nodos se consideran móviles y se favorecen rutas que utilizan la menor cantidad de enlaces o saltos [8]. Aunque las redes inalámbricas de sensores tienen aspectos en común con las redes cableadas y ad hoc, tienen también caracterı́sticas propias que plantean importantes desafı́os de diseño. La densidad de nodos de la red y el área de cobertura pueden variar ampliamente, pudiendo ser instalada de manera no supervisada con una distribución de nodos al azar en terrenos inaccesibles [4][9]. La red debe organizarse a sı́ misma y preservar la energı́a, para perdurar su vida útil operando con limitadas reservas de baterı́a. Dado que gran parte de la energı́a se emplea en la transmisión de paquetes de información en topologı́as multi-salto (multi-hop), numerosas técnicas para protocolos de red han sido estudiadas, con el objeto de mejorar la eficiencia en las comunicaciones en las redes inalámbricas de sensores. Se ha 18 CAPÍTULO 1. INTRODUCCIÓN identificado un conjunto de paradigmas que permite clasificar los protocolos según la estructura de red (plana o jerárquica), por el tipo de direccionamiento (basado en la ubicación geográfica), por la funcionalidad provista (que mantienen más de una ruta, basado en la calidad de servicio, que utilizan agregación de datos) [10], por utilizar modelos de flujo de red y/o por ser centrados en los datos (basados en consulta, basados en diseminación de información) [11]. Algunos protocolos que modelan el flujo de red incluyen, en su diseño, el objetivo de maximizar la vida de la red [12][13][14][15]. Pero existen varios puntos de vista para definir el tiempo de vida de la red, siempre influidos por el tipo de aplicación para el cual se diseña. Para algunos autores, se define como el tiempo hasta que se agota la baterı́a del primer nodo [2][12]. Para otros, esta definición es muy restrictiva y puede flexibilizarse para extender aún más la vida útil de la red [13][14]. Una estrategia de maximización de la vida de la red consiste en seleccionar rutas no óptimas de manera de posponer la muerte de sus nodos, basando la selección en el conocimiento de diferentes métricas de energı́a de los nodos de la red [9][16]. Los algoritmos que utilizan este tipo de información para seleccionar la ruta son conscientes de la energı́a. Los protocolos que se centran en los datos encaminan datos por demanda, reaccionando a una consulta iniciada por la estación base [10]. Intentan ahorrar energı́a disminuyendo las tareas de mantenimiento de la red, por lo que sugieren una topologı́a de red plana. El establecimiento de rutas es dinámico, utilizando diferentes estrategias para controlar el proceso de flooding o inundación de la red en la etapa de descubrimiento, y para diseminar el interés por un tipo de información [4][17][18]. 1.2. Objetivos Los objetivos generales de la tesis son el estudio de redes inalámbricas de sensores y paradigmas de encaminamiento de vanguardia, y la simulación y análisis de protocolos que utilizan técnicas de diseminación y consciencia de energı́a. En este marco se llevó a cabo el siguiente trabajo: estudio general de las redes inalámbricas de sensores estudio de los tipos de aplicación estudio de las principales paradigmas de vanguardia en encaminamiento, focalizando en las técnicas de diseminación y consciencia de la energı́a evaluación de Omnet++ como simulador para este tipo de red 19 1.3. ORGANIZACIÓN configuración de una red ejemplo, de un sumidero y muchos nodos que ejecutan una aplicación de tipo consulta, y una pila de protocolos IEEE 802.15.4, incluyendo al canal compartido en el modelo construcción de módulos de red para los protocolos SAMF, M-SPIN, y un módulo que combina las técnicas de ambos; construcción de módulos de utilidades de recolección de estadı́sticas y métricas no incluidas en la herramienta simulación de los tres protocolos a partir de varios escenarios de consulta comparación de su desempeño, análisis y observaciones sobre las técnicas seleccionadas 1.3. Organización En el capı́tulo 2 se presenta una introducción a las redes inalámbricas de sensores en términos generales, una clasificación y caracterización de los tipos de aplicación según su modelo de entrega de datos y una revisión de los estándares y tecnologı́as de comunicación adoptados para este tipo de red. El capı́tulo 3 introduce los problemas del encaminamiento y revisa los tres paradigmas más comúnmente utilizados en taxonomı́as de protocolos de red, ilustrando cada paradigma con la descripción de un protocolo de la familia. Luego, se describen las técnicas de diseminación y consciencia de energı́a, también con protocolos ejemplo. El cuarto capı́tulo trata de la herramienta de simulación Omnet++, describe el diseño de la red a simular y se enumeran las métricas a obtener para la evaluación de los protocolos. En el capı́tulo 5 se detalla la implementación los módulos de red para los protocolos M-SPIN, SAMF y un protocolo que combina las técnicas de ambos, sus especificaciones, análisis de complejidad y pseudocódigo. Finalmente, el capı́tulo 6 expone los resultados de las simulaciones y las conclusiones del trabajo. 20 Capı́tulo 2 Redes inalámbricas de sensores 2.1. Introducción Una red de sensores es una infraestructura compuesta por elementos de cómputo, medición y comunicación, que permiten al administrador instrumentar, observar y reaccionar a eventos y fenómenos en un ambiente especı́fico [4]. Tı́picamente el administrador será una entidad civil, comercial, gubernamental o industrial. El ambiente puede ser un sistema espacio o sistema biológico, y existen variadas aplicaciones [19]: Medioambiental Algunos ejemplos son el seguimiento de aves, pequeños animales, insectos; monitoreo de condiciones ambientales que afectan cultivos y ganado; irrigación; macroinstrumentos para monitoreo a gran escala y exploración planetaria; detección quı́mica y biológica; agricultura de precisión; detección de incendios en bosques; investigación meteorológica o geofı́sica; detección de inundaciones; estudio de la contaminación. Medicina Provisión de interfaces para discapacitados, monitoreo integrado de pacientes, diagnóstico, administración de drogas en hospitales, telemonitoreo de información fisiológica. Hogar Automatización del hogar, administración local y remota de electrodomésticos, ambientes inteligentes. Comercial Monitoreo de fatiga de material, administración de inventario, cali21 2.1. INTRODUCCIÓN dad de producto, oficinas inteligentes, control ambiental de edificios, control robot en manufactura automatizada, juguetes interactivos, museos interactivos, control y automatización de procesos, monitoreo de área de desastre, diagnóstico de maquinaria, transporte, seguimiento de vehı́culos. Figura 2.1: Infraestructura de una red inalámbrica de sensores La infraestructura comprende los siguientes componentes básicos (figura 2.1 obtenida de [20]): 1. un conjunto de nodos sensores 2. una red de interconexión inalámbrica 3. un punto central de recolección de información o estación base 4. un conjunto de recursos para procesar la información recolectada Los sensores o nodos inalámbricos, a veces llamados motes, son dispositivos inteligentes multifuncionales y baratos, equipados con múltiples elementos de sensado. Existe tecnologı́a de sensado para realizar mediciones de 22 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES campo eléctrico y magnético; de frecuencia; óptico, electro-ópticos e infrarrojos; radares; láseres; de posición/navegación; sı́smicas y de ondas de presión; de medio ambiente (viento, humedad, calor). Este tipo de dispositivo posee recursos restringidos de energı́a, comunicación, memoria y capacidad de cómputo [4]. 2.1.1. Topologı́a Dentro del área de sensado, los sensores se interconectan por medio enlaces inalámbricos multi-salto, de corta distancia y baja potencia de transmisión, para enviar información a estaciones recolectoras o de monitoreo. Tı́picamente se despliegan en grandes cantidades y con una distribución densa. Hay dos tipos de redes [21]: no estructuradas Comprende una colección de nodos densa, desplegados ad hoc, posiblemente al azar. Una vez desplegados, la red opera desatendida, monitoreando y reportando información. El mantenimiento, la administración de la conectividad y detección de fallas son difı́ciles por la gran cantidad de nodos. estructuradas Todos o algunos de los nodos son desplegados de manera pre-planificada, colocados en posiciones fijas. Tienen la ventaja de requerir una menor cantidad de nodos para lograr la cobertura del área, con un menor costo de administración y mantenimiento. Existen varias configuraciones de redes de sensores [22]. Un nodo fuente es una entidad en la red que puede proveer información, el nodo sensor. Por otro lado, un sumidero es la entidad que requiere la información. El sumidero puede pertenecer a la red de sensores (y es otro sensor), ser una entidad externa a la red o ser un gateway a otra red más grande, como Internet. Comúnmente, el sumidero o estación base es un dispositivo que posee recursos de energı́a y capacidad computacional no acotados [5]. El modelo de red tı́pico comprende un sumidero y múltiples nodos fuente o sensores, pero en muchas aplicaciones se utilizan también múltiples sumideros. Dadas las limitaciones de alcance de radio, las redes inalámbricas de sensores en general son multi-salto, y los nodos sensores actúan como encaminadores, ahorrando la necesidad de dispositivos adicionales. El multi-salto permite superar problemas con distancias largas y obstáculos, y mejora la eficiencia de la comunicación. Asimismo, la topologı́a de red puede ser plana o jerárquica, dependiendo de la aplicación y el tipo de encaminamiento que 23 2.1. INTRODUCCIÓN mejor se adecue a sus requerimientos. La movilidad en las redes de sensores puede aparecer en tres formas principales [22]: movilidad del nodo sensor La movilidad del nodo sensor depende de la aplicación. Por ejemplo, en el monitoreo medioambiental, los nodos son estacionarios. Sin embargo, en el monitoreo de ganado, el sensor está sujeto al animal y por lo tanto se mueve. Cuando hay movilidad, la red debe reorganizarse frecuentemente. movilidad del sumidero El aspecto importante es la movilidad de un sumidero que no es parte de la red, por ejemplo, un humano con un dispositivo personal solicita información mientras se desplaza dentro de un edificio inteligente. El sumidero móvil puede solicitar la información en un lugar de la red y luego moverse a otro lugar, y la red debe lograr que los datos lo alcancen. movilidad del evento En aplicaciones de seguimiento, los objetos o evento a seguir pueden ser móviles. En este escenario, es importante que los eventos sean cubiertos por una suficiente cantidad de sensores al mismo tiempo. A medida que el objeto se desplaza a través de la red, es acompañado por un área de actividad dentro de la misma. Los nodos que no detectan nada, alternan a estados de sueño hasta que se requieran transmisiones de la zona en que se encuentran. 2.1.2. Nodo sensor Hardware Un nodo sensor básico comprende los siguientes cuatro subsistemas de hardware[4][22] (ver figura 2.2 obtenida de [4]): Energı́a Suministro o infraestructura de energı́a para poder operar desde unas horas hasta meses o años. Lógica computacional y almacenamiento Para el procesamiento de datos, almacenamiento temporal, cifrado, modulación y transmisión. 24 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES Figura 2.2: Componentes de hardware del nodo sensor Sensor La interfaz entre el medioambiente y el nodo es el sensor. Puede ser de humedad, luz, flujo magnético, temperatura, etc. Comunicación Se requiere un dispositivo para poder enviar y recibir información a través de un canal inalámbrico. Software Los sensores generalmente operan con cinco subsistemas de software [4] (ver figura 2.3 obtenida de [4]): Sistema operativo El microcódigo o sistema operativo, también llamado middleware, es el microcódigo común del dispositivo, utilizado por todos los programas de alto nivel, residentes en el nodo. Usualmente, presentan una arquitectura que permite una rápida implementación con un tamaño mı́nimo de código. TinyOS es un ejemplo [23]. Controladores de sensores Módulos de software que administran funciones básicas de los tranceptores de sensores (sensor transceiver ). Procesadores de comunicación Módulos que administran funciones de comunicación, encaminamiento, almacenamiento y reenvı́o de paquetes, mantenimiento de la topologı́a de red, control de acceso al medio, cifrado, corrección de errores, etc. 25 2.1. INTRODUCCIÓN Figura 2.3: Componentes de software del nodo sensor Controladores de comunicación Módulos que administran las tareas de utilización del enlace de transmisión por radio, sincronización, codificación de señales, recuperación de errores, modulación. Mini-aplicaciones de proceso de datos Aplicaciones básicas soportadas a nivel nodo para procesamiento de datos en la red. Protocolos Los controladores y procesadores de comunicación, piezas de software que asisten a la interconexión entre nodos, son componentes arquitectónicos de mayor relevancia. Se ha realizado mucha investigación para desarrollar protocolos especialmente diseñados para las redes inalámbricas de sensores. En la figura 2.4 (obtenida de [4]) se ilustra un modelo de protocolos genérico que comúnmente es utilizado para describir el aparato de comunicación [4]. En la tabla 2.1 (obtenida también de [4]) se caracterizan brevemente las funciones de cada capa de la pila. 2.1.3. Cuestiones de diseño Para que las redes de sensores lleguen a ser verdaderamente omnipresentes se deben encontrar soluciones a problemas propios de diseño, entre ellos[4]: 26 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES Figura 2.4: Pila genérica de protocolos del nodo sensor Capas superiores Capa 4 Capa 3 Capa 2 Capa 1 Aplicaciones residentes en la red, procesamiento, agregación, procesamiento de consultas externas, y base de datos externa. Transporte, incluyendo diseminación y acumulación de datos, cache y almacenamiento. Red, administración dinámica de la topologı́a y encaminamiento Enlace, administración del canal compartido, competencia por el canal, y acceso al medio, sincronización y localización Fı́sica, canal de comunicación, procesamiento de señales Cuadro 2.1: Funciones de la pila de protocolos WSN Restricciones de hardware Un sensor podrı́a tener que caber en un módulo de unos pocos centı́metros cúbicos de volumen. Los sensores podrı́an también tener que ser desechables, autónomos y adaptativos al ambiente. Se necesita lograr un empaque confiable a pesar de estas restricciones de hardware. La figura 2.5, obtenida de la hoja de datos del nodo MicaZ [24]), corresponde a un nodo de 58 mm de largo, 32 mm de ancho y 7 mm de altura, excluyendo la baterı́a. 27 2.1. INTRODUCCIÓN Figura 2.5: Nodo sensor MicaZ de MEMSIC Consumo de energı́a La vida útil del sensor depende mucho de la duración de la baterı́a, y en muchos casos es limitada y no se puede recargar. Por lo tanto, se deben diseñar algoritmos y protocolos conscientes de la energı́a. Se pueden definir tres dominios funcionales de consumo de energı́a: sensado, comunicación y procesamiento; todos requieren optimización para minimizar la utilización de energı́a. Costo Casi por definición, la red inalámbrica de sensores consiste de un gran conjunto de nodos sensores, por lo que el costo de cada unidad afecta crı́ticamente el costo de la red. Ambiente Se espera que las redes de sensores operen de manera desatendida en lugares geográficos remotos, con grandes desafı́os de administración, o densamente desplegados, o dentro del ambiente observado. Canales de transmisión Los medios de comunicación inalámbricos utilizados son restringidos en ancho de banda y desempeño en general. Para facilitar la operación global de estas redes, el canal seleccionado debe estar disponible en todo el mundo. Conectividad y topologı́a Se necesitan protocolos ad hoc diseñados para soportar cambios de topologı́a debido a la movilidad, disponibilidad de recursos, pérdidas de información, apagones, mal funcionamiento, interferencia, etc. Estándares Un conjunto de protocolos y estándares abiertos son necesarios para las 28 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES capas fı́sica, enlace, red y transporte. Históricamente, se han utilizado protocolos especı́ficos de cada aplicación, con el efecto de retardar la comercialización a gran escala. 2.2. Tipos de aplicación Por la variedad de aplicaciones que pueden tener las WSNs, existe la necesidad de desarrollar protocolos especı́ficos del tipo de aplicación, con el riesgo de desarrollar un protocolo diferente para cada aplicación [25]. Por ello es importante poder clasificar las aplicaciones, para diseñar soluciones de clase. Una clasificación no será exhaustiva, puesto que puede haber superposición de clases en algún aspecto, sin embargo, lo más importante es que permite organizar el diseño. En [26] se presenta una clasificación de nueve dimensiones taxonómicas, entre ellas: Vida útil Si bien existe una variedad de métricas relacionadas al consumo de energı́a, se propone que la medida fundamental debe estar relacionada con el concepto de vida útil de la red, es decir el tiempo que dura funcionando de manera operativa. Puede ser simple o de duración fija, compleja o de fases múltiples. Latencia La latencia, esto es, el tiempo que tarda en recibirse un paquete, es un requerimiento temporal cuantificable en las redes inalámbricas de sensores. Puede ser despreciable, moderada o estricta. Ancho de banda Abarca dos aspectos del patrón de tráfico. Se refiere al volumen de datos requerido y a la frecuencia de las transmisiones. Puede ser episódicobajo, episódico-alto, continuo-bajo o continuo-alto. En [25] se presenta una clasificación algo más simplificada y basada en los objetivos de la aplicación, los requerimientos de entrega de datos y el patrón de tráfico, definiendo cuatro tipos de aplicación descriptos en la siguientes secciones. Para cada tipo, se especifican los requerminetos de vida útil, latencia, ancho de banda y encaminamiento. Un clasificación similar se ha tratado en [27]. 2.2.1. Detección y reporte de eventos Patrón de tráfico: Episódico Latencia: Estricta 29 2.2. TIPOS DE APLICACIÓN Vida útil: Compleja El objetivo de este tipo de aplicación es la detección de un evento infrecuente, como pueden serlo la presencia de un intruso, una anomalı́a o falla mecánica, un incendio en un bosque. Una vez detectado, el evento debe ser prontamente reportado al sumidero. La aplicación instalada estará inactiva casi todo el tiempo, y se producirán ráfagas de actividad cuando un evento sea detectado. Este tipo de aplicación tiene dos problemas importantes. El primero es la necesidad de disminuir la tasa de falsas alarmas que puedan producirse, posiblemente utilizando el consenso de un grupo de nodos para detectar el evento, en lugar de un único nodo. El segundo problema, más importante aún, es el encaminamiento del evento al vuelo, hacia el sumidero. Por la infrecuencia de los eventos, el principio de diseño que predomina es el de minimizar el consumo de energı́a del resto de las actividades. Entonces, dado que se espera que el volumen de tráfico sea muy bajo, la equidad o las colisiones en el enlace no son muy importantes, pero la escucha ociosa y el intercambio de mensajes de control deben optimizarse. Direccionamiento y encaminamiento Para el encaminamiento en este tipo de aplicaciones, en [25] se destaca la necesidad de un mecanismo de direccionamiento especial, la construcción de rutas de manera reactiva y la utilización de un ciclo de servicio del tranceptor que permita el ahorro de energı́a. Un esquema de direcciones es necesario para el enlace y el encaminamiento, y para etiquetar los datos con información sobre el lugar donde fueron generados. Por la gran cantidad de nodos, no resulta conveniente utilizar una dirección para cada nodo, ya que se necesitarı́a un tamaño de dirección bastante grande. Además, los nodos en general se comunican sólo localmente (con los vecinos) o al sumidero, por lo que no se necesita direccionar de cualquier nodo a cualquier nodo. En aplicaciones de detección de eventos, es más adecuado utilizar encaminamiento reactivo, pues la transmisión de datos es infrecuente, y si se utiliza encaminamiento proactivo, el mantenimiento de rutas genera un costo innecesario. En general, una gran cantidad de energı́a es consumida en escucha ociosa. Como es raro que ocurra un evento, los nodos utilizan muy poca energı́a en transmitir realmente la información. Por ello, se busca que los nodos funcionen en modo ahorro de energı́a, apagando sus radios periódicamente en forma independiente o coordinada, ejecutando un ciclo domir-servir. Co30 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES mo la comunicación es multi-salto, es necesario que el nodo esté despierto periódicamente para reenviar datos de otros nodos, aunque no tenga información propia para transmitir. 2.2.2. Recolección de datos y reporte periódico Patrón de tráfico: Continuo Latencia: Despreciable Vida útil: Simple Esta clase incluye a las aplicaciones de monitoreo. Por ejemplo, el monitoreo de cultivos o ganado, o del ambiente (temperatura, humedad y luz) de un edificio. En estos casos, cada sensor produce una cantidad de información de manera periódica y constante que debe ser encaminada al sumidero. También, el sumidero podrı́a requerir el cómputo distribuido de alguna función de las lecturas de los nodos sensores. Esta agregación de datos puede ser implementada utilizando una topologı́a de red jerárquica o plana, en donde la comunicación es multi-salto y los nodos intermedios van agregando la información salto a salto. Direccionamiento y encaminamiento Para esta clase de aplicación, es importante que las rutas permitan optimizar la vida útil de la red [25]. Al haber un flujo constante de información, la mayor parte de la energı́a del nodo se gasta en la transmisión. Por ello es importante que las rutas sean seleccionadas de manera de maximizar la vida útil de la red. En este sentido, en distintos trabajos se ha comprobado que seleccionar la ruta que requiere menor energı́a total de transmisión, hace que se agote la baterı́a de los nodos a lo largo del camino, pudiendo acortar el tiempo que la red funciona sin particionarse. Por ello, se buscan mecanismos para balancear la carga del encaminamiento entre los nodos. En redes de topologı́a jerárquica de clúster, la cabecera de clúster recolecta datos de los nodos y los envı́a agregados al sumidero. Ası́, el gasto de energı́a en transmisión es mucho más alto en la cabecera que en los nodos, y para uniformizar el patrón de agotamiento de energı́a, el rol de cabecera puede rotarse. También, pueden utilizarse nodos con mejores capacidades para llevar a cabo las tareas de cabecera, simplificando las funciones en los nodos ordinarios, que ya no podrı́an cumplir también ese rol. Para transmitir a la cabecera, los nodos podrı́an utilizar comunicación multi-salto o de salto-único, y un esquema hı́brido permite, nuevamente, agotar la energı́a de la red de manera más uniforme. 31 2.2. TIPOS DE APLICACIÓN 2.2.3. Consulta iniciada por sumidero Patrón de tráfico: Episódico Latencia: Moderada Vida útil: Compleja En este escenario, el sumidero puede requerir consultar la medición de un conjunto de sensores en un determinado momento. Esto permite extraer información con diferentes grados de resolución, de diferentes regiones en el espacio. Desde el punto de vista del encaminamiento, se requiere poder enviar datos a un conjunto dinámico de nodos. Para poder consultar selectivamente un subconjunto de datos, el sumidero debe poder expresar el interés con algún esquema de metadatos de la información. La consulta se difunde a un grupo de nodos que buscarán coincidencias y eventualmente enviarán sus respuestas. Una funcionalidad adicional de las redes basadas en consulta puede ser la reprogramación de nodos, si la mayor parte del hardware puede ser controlado por software, las actividades de generación de datos del nodo pueden ser modificadas por el sumidero. Direccionamiento y encaminamiento En este tipo de aplicaciones, el esquema de direcciones debe permitir hacer broadcast a una región espacial en particular [25]. Tı́picamente, el sumidero requerirá consultar un subconjunto de nodos localizados en una región especı́fica, en lugar de un nodo en particular, de lo que se deriva la necesidad de un mecanismo de direccionamiento especial que lo permita. Para poder difundir una consulta a un grupo de nodos, el encaminamiento debe poder soportar el broadcast limitado a una región, utilizando información de posición. 2.2.4. Seguimiento Patrón de tráfico: Episódico, Continuo Latencia: Estricta Vida útil: Compleja El seguimiento con redes inalámbricas de sensores tiene muchas aplicaciones en la vigilancia militar o de frontera, donde interesa rastrear el movimiento de objetos. En medio ambiente las aplicaciones incluyen el seguimiento de patrones de movimiento de pequeños animales. Esta clase de aplicaciones combinan caracterı́sticas de las tres anteriores. Cuando se detecta un evento, debe ser prontamente reportado al sumidero. El sumidero puede iniciar consultas a la región en donde el evento fue detectado, para poder calcular la trayectoria del objeto. Una cuestión de 32 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES diseño importante es determinar un balance entre el costo de calcular rutas al vuelo o mantener alguna topologı́a para facilitar el proceso de seguimiento. El posicionamiento tiene incidencias en dos niveles: el sensor debe determinar su propia posición, para luego colaborar en la localización del objetivo en varios momentos. El esquema de posicionamiento deberá balancear robustez y eficiencia, es decir, la exactitud de la posición al menor costo energético posible. Para el seguimiento se ha propuesto la utilización de clústeres dinámicos, formados por agrupaciones de nodos, según sus mediciones. Las cabeceras colaboran de manera de activar el clúster más próximo al objetivo para la recolección de datos. Direccionamiento y encaminamiento Para facilitar la detección del objetivo, nuevamente, la estrategia de encaminamiento deberá estar basada en la posición geográfica de los nodos, en lugar de sus identidades de hardware. 2.2.5. Resumen A continuación se resumen las caracterı́sticas de cada clase de aplicación WSN presentada en [25], utilizando algunas de las dimensiones taxonómicas de [26]. Tipo de aplicación Detección y reporte de eventos Recolección de datos y reporte periódico Consulta iniciada por sumidero Seguimiento Vida útil Compleja Simple Latencia Estricta Baja Ancho de banda Episódico Continuo Compleja Compleja Moderada Estricta Episódico Episódico Cuadro 2.2: Resumen de tipos de aplicación y caracterı́sticas Las figuras 2.6a y 2.6b corresponden a tipos de aplicaciones ofrecidas por una compañı́a real, y fueron obtenidas de su sitio web [3]. 2.3. 2.3.1. Estándares de comunicación Bluetooth y Wi-Fi Los sistemas Bluetooth y Wi-Fi (IEEE 802.11) son dos opciones muy populares y comercialmente disponibles cuya utilización en redes inalámbricas de sensores ha sido evaluada. 33 2.3. ESTÁNDARES DE COMUNICACIÓN (a) Detección de incendios en un bosque (b) Monitoreo de cultivos Figura 2.6: Tipos de aplicación Bluetooth es un sistema diseñado como una red inalámbrica de área personal, su principal aplicación es la conexión de dispositivos a una computadora personal. Se han hecho prototipos de redes de sensores basadas en Bluetooth, los nodos organizados en picoredes con un nodo maestro y un máximo de siete nodos esclavos activos. El maestro elije la secuencia de hopping que deben seguir los esclavos. Puede haber varios nodos esclavos en estado pasivo en la picored, el maestro interroga los nodos esclavos activos continuamente. Hay varios inconvenientes de la aplicación de Bluetooth a redes inalámbricas de sensores [22]: la necesidad de tener un nodo maestro constantemente, con el costo de interrogar sus esclavos la cantidad limitada de esclavos por picored que soporta para el caso de redes de sensores densas, se necesitarı́a un número enorme de nodos maestros un esclavo activo debe permanecer siempre encendido, ya que no puede predecir cuando será interrogado por el maestro un esclavo pasivo debe postularse con el maestro para cambiar a activo, y si ya hay siete nodos activos, será rechazado se requiere que cada nodo pueda asumir el rol de maestro o esclavo, agregando una complejidad considerable los rápidos saltos de frecuencia requieren una sincronización estricta entre los nodos de la picored s En la familia de protocolos IEEE 802.11 se especifican varios tipos de capa fı́sica que comparten un único protocolo de capa MAC (DCF). En 34 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES términos generales, el estándar de protocolos IEEE 802.11 tiene los siguientes inconvenientes [22]: requiere que los nodos estén permanentemente escuchando el medio, ya que podrı́an tener que recibir un frame en cualquier momento los nodos deben sobre-escuchar paquetes RTS y CTS para ajustar sus temporizadores NAV adecuadamente si bien se proveen algunas funcionalidades de ahorro de energı́a, en general está orientado a altas tasas transmisión, y los tranceptores disponibles requieren una cantidad de energı́a que es órdenes de magnitud mayores que lo aceptable en aplicaciones de redes de sensores es un protocolo de salto-único para redes ad-hoc, cuando lo común en redes de sensores es el encaminamiento de salto-múltiple 2.3.2. Estándar IEEE 802.15.4-2006 El estándar IEEE 802.15.4, finalizado en el 2003 por el Instituto de Ingenieros Eléctricos y Electrónicos, define la capa fı́sica y MAC para redes inalámbricas de área personal (WPAN ) de baja tasa de transmisión. A veces se confunde el estándar con ZigBee, otro estándar que agrega servicios de red, seguridad y aplicación, y está basado en los servicios ofrecidos por IEEE 802.15.4. Los tipos de aplicación a los que está orientado el estándar comprenden las redes inalámbricas de sensores, la domótica, las redes hogareñas, la conexión de dispositivos a una computadora personal, seguridad, etc. La mayorı́a de estas aplicaciones requieren tasas de transmisión bajas a medias, retardos de transmisión moderados con requerimientos no muy estrictos, y es muy deseable la reducción al mı́nimo del consumo de energı́a en los nodos. Capa fı́sica El diseño de la capa fı́sica está dirigido por los requerimientos de bajo costo y eficiencia, de aplicaciones de control y monitoreo sensibles al costo y de baja tasa de transmisión [4]. Bajo el estándar 802.15.4, se pueden operar enlaces inalámbricos en tres bandas de frecuencias no licenciadas: 858 MHz, 902 a 928 MHz, y 2.4 GHz. Basados en estas frecuencias, se definen tres medios fı́sicos: 1. DSSS (Direct Sequence Spread Spectrum) usando modulación BPSK en la banda 868 MHz a una tasa de 20 Kbps (único canal) 35 2.3. ESTÁNDARES DE COMUNICACIÓN 2. DSSS usando modulación BPSK en la banda de 915 MHz a una tasa de 40 Kbps (10 canales) 3. DSSS usando modulación O-QPSK en la banda 2.4 GHz a una tasa de 250 Kbps (16 canales) El estándar IEEE 802.15.4-2007 es una enmienda que especifica las siguientes alternativas adicionales de capa fı́sica (PHY) [28]: 1. Ultra-wide band (UWB) a frecuencias 3 a 5 GHz, 6 a 10 GHz, y < 1 GHz 2. CSS (Chirp Spread Spectrum) a 2450 MHz Figura 2.7: Estructura del paquete de capa fı́sica IEEE 802.15.4 La estructura del frame IEEE 802.15.4, ilustrada en la figura 2.7 (obtenida de [4]), comprende los siguientes campos: 1. preámbulo: 32 bits que se utilizan para sincronización de sı́mbolos 2. delimitador: 8 bits que se utilizan para sincronizar la recepción del frame 3. cabecera: 8 bits que especifican la longitud de la unidad de datos (PSDU, PHY Service Data Unit) 4. datos: hasta 127 bytes de datos Capa de acceso al medio Arquitectura de red El estándar distingue dos tipos de nodo [4]: 36 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES FFD (Full Function Device) dispositivo de funcionalidad completa, que puede operar como coordinador de la red PAN, coordinador a secas, o dispositivo RFD (Reduced Function Device) dispositivo de funcionalidad reducida, sólo opera como dispositivo Un dispositivo debe estar asociado a un nodo coordinador FFD formando una red de topologı́a estrella. Los coordinadores pueden comunicarse punto a punto y varios coordinadores pueden formar una red PAN. La red se identifica con un identificador PAN de 16-bits y uno de sus coordinadores es designado como coordinador PAN. El coordinador: mantiene la lista de dispositivos asociados asigna direcciones cortas a sus dispositivos asociados en modo ranurado, transmite regularmente el beacon (mensaje baliza), anunciando el identificador de red PAN, y las ranuras reservadas intercambia frames de datos con dispositivos y con coordinadores Modo ranurado (beaconed mode) En modo ranurado, el coordinador de la red estrella organiza el acceso al canal y la transmisión de datos especificando un superframe. El superframe describe un ciclo de actividades que se repite en forma periódica. El coordinador arranca cada superframe transmitiendo el frame de señalización (beacon packet), que incluye la especificación del superframe, con la duración de cada actividad. Figura 2.8: Superframe de IEEE 802.15.4 CSMA ranurado Como se observa en la figura 2.8 (obtenida de [4]), el superframe se divide en dos perı́odos, cuya duración es configurable: 37 2.3. ESTÁNDARES DE COMUNICACIÓN 1. Perı́odo activo Se divide en 16 ranuras de tiempo (de duración configurable), la primera ocupada en transmitir el frame de señalización, y las restantes se reparten en dos fases: CAP (Contention Access Period ), el acceso es por competencia y GTSs (Guaranteed Time Slots), el acceso es exclusivo por ranuras de tiempo garantizadas. El coordinador debe estar activo durante la totalidad del perı́odo, y los dispositivos asociados están activos en las ranuras de tiempo GTS que le fueron asignadas. En la fase CAP el nodo también puede apagar el tranceptor si no tiene nada que transmitir o recibir. 2. Perı́odo inactivo Durante este perı́odo, todos los nodos incluyendo el coordinador pueden apagar el tranceptor y ponerse a dormir. Los nodos deberán despertar justo antes de la transmisión del frame de señalización para recibirlo. Los coordinadores hacen mucho más trabajo que los dispositivos, el protocolo está diseñado para una topologı́a de sensores restringidos en energı́a que se comunican con nodos de energı́a no acotada. El coordinador asigna ranuras de tiempo garantizadas a los dispositivos que han enviado paquetes de solicitud durante la fase CAP. Una marca en la solicitud indica si el GTS es para transmitir al coordinador o para recibir datos del coordinador, y otro campo indica la cantidad de ranuras de tiempo contiguas que se desean reservar. La respuesta del coordinador ocurre en dos pasos. El primero es una confirmación inmediata de la recepción de la solicitud. Al recibir la confirmación, el dispositivo debe rastrear los beacons por un determinado tiempo. Cuando el coordinador tiene suficientes recursos para otorgar las ranuras solicitadas, inserta un descriptor GTS en el siguiente beacon. El descriptor contiene la dirección del nodo solicitante, y la cantidad y posición de las ranuras otorgadas dentro de la fase GTS. El dispositivo puede utilizar las ranuras asignadas cada vez que son anunciadas por el coordinador. Asimismo, las ranuras permanecen asignadas hasta que el dispositivo solicita su liberación con un frame de control especial, o el coordinador detecta que no han sido utilizadas durante una determinada cantidad de superframes y las cancela con un descriptor GTS que contiene una posición inválida. Si el coordinador no tiene los suficientes recursos, también transmite un descriptor GTS especificando una posición inválida y los recursos que sı́ están disponibles, pudiendo el dispositivo renegociar el GTS. La transmisión de información del dispositivo al coordinador ocurre en ranuras GTS, o en la fase CAP utilizando CSMA-CA ranurado. En la dirección opuesta, la transmisión de información del coordinador al dispositivo ocurre también en ranuras GTS, y si no se han reservado, se hace de la siguiente manera: 38 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES 1. el coordinador anuncia que tiene datos para un dispositivo incluyendo la dirección del dispositivo en el campo pending address field del frame beacon 2. cuando el dispositivo encuentra su dirección en el campo, envı́a una petición de datos durante la fase CAP 3. el coordinador responde con un acuse de recibo y luego envı́a el dato 4. cuando el dispositivo recibe el acuse, deja el tranceptor encendido y se prepara para la recepción del dato 5. al recibir los datos, el dispositivo responde con un acuse de recibo 6. si el dispositivo no recibe el acuse, repite la petición durante los siguientes superframes o apaga el tranceptor hasta el siguiente beacon Para la transmisión de datos del dispositivo al coordinador durante la fase CAP se usa el protocolo CSMA. Para evitar colisiones, no se utiliza el esquema RTS/CTS (Request To Send / Clear To Send ), sino que usan retardos al azar. Las ranuras de tiempo de la fase CAP están a su vez subdivididas en ranuras más pequeñas, llamadas perı́odos de backoff. Un perı́odo de backoff dura lo mismo que la transmisión de 20 sı́mbolos. El dispositivo que desea transmitir espera al comienzo del siguiente perı́odo de backoff y a partir de allı́ espera un número al azar (del intervalo [0, 2BE −1]) de perı́odos siguientes. Luego, en cada perı́odo censa el medio (ejecutando la operación CCA, Clear Channel Assesment), durante dos perı́odos seguidos. Si las dos veces el canal está ocioso, ha ganado la competencia y comienza la transmisión de los datos. Si alguna de las veces que el dispositivo censa el medio el canal está ocupado, comienza el proceso nuevamente con la espera, eligiendo un número al azar de perı́odos de un intervalo mayor (incrementando el exponente BE). Si es necesario repetir el proceso más de una determinada cantidad de veces, el dispositivo descarta el frame y declara que se ha producido una falla. Modo no ranurado (nonbeaconed mode) En el modo no ranurado el coordinador no transmite frames beacon, ni hay fase GTS. Todos los paquetes de los dispositivos se transmiten utilizando CSMA-CA no ranurado, por lo que no hay sincronización con perı́odos de backoff, y sólo ejecuta una operación CCA antes de transmitir. Si el canal está ocioso, el dispositivo transmite los datos. Los dispositivos pueden seguir su propio programa de sueño, despertando para transmitir al coordinador o para recibir datos del coordinador. El dispositivo envı́a la solicitud de datos usando CSMA-CA no ranurado, y el coordinador responde el acuse 39 2.3. ESTÁNDARES DE COMUNICACIÓN de recibo inmediatamente. Luego, cuando el coordinador tiene datos para el dispositivo, los transmite usando CSMA-CA y el dispositivo responde el acuse inmediatamente. En este modo, el ciclo de recepción depende de la aplicación. 2.3.3. ZigBee ZigBee [29] es un estándar de comunicación orientado a aplicaciones cuyos requerimientos principales son bajas tasas de transmisión, bajo costo y larga duración de baterı́a. Algunos sistemas para los que existen perfiles de aplicación definidos [30] son: Domótica Control remoto (home theatre, media center, etc) Monitoreo de consumo energético y de agua en el hogar Monitoreo de pacientes crónicos no agudos, salud personal y de la tercera edad Los estándares ZigBee son desarrollados por la organización ZigBee Alliance, conformada por cientos de compañı́as, y formada en el 2002 como una organización sin fines de lucro. Algunas empresas promotoras (con el nivel de participación más influyente y representación en el directorio) son Philips, Emerson y Texas Instruments. Las empresas participantes son numerosas, entre ellas se encuentran AT&T, Cisco, Huawei, Indesit, LG, Samsung, Siemens, Whirpool, Intel, GE. El estándar ZigBee está definido en capas de protocolos, basadas en el modelo de referencia OSI. Adoptando la capa fı́sica (PHY) y de acceso al medio (MAC) IEEE 802.15.4, define capas de servicios de red, aplicación y seguridad. La figura 2.9 (obtenida del estándar [6]) esquematiza las capas de la arquitectura ZigBee. Las caracterı́sticas fı́sicas de la red están determinadas por la capa fı́sica IEEE 802.15.4 descripta en la sección 2.3.2. Arquitectura de red Los roles de los nodos en ZigBee se corresponden con los del estándar IEEE 802.15.4, aunque tienen diferente denominación: Coordinador ZigBee (coordinator ) (Coordinador PAN IEEE 802.15.4) 40 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES Figura 2.9: Capas de protocolos de ZigBee Encaminador ZigBee (router ) (Coordinador IEEE 802.15.4) Dispositivo Final ZigBee (end device) (Dispositivo IEEE 802.15.4) Se soportan las topologı́as de red estrella o punto a punto, como se especifica en IEEE 802.15.4. Figura 2.10: Red ZigBee estrella En la red estrella, esquematizada en la figura 2.10 (obtenida de [29]), todos los dispositivos de la red se comunican a través del coordinador, que al activarse selecciona un identificador de red único dentro de su alcance de radio y establece la red. En la red punto a punto, todos los dispositivos pueden comunicarse directamente entre sı́. Los dispositivos de funcionalidad reducida participan 41 2.3. ESTÁNDARES DE COMUNICACIÓN Figura 2.11: Red ZigBee malla de la red comunicándose con un coordinador o un encaminador ZigBee, pero no encaminan mensajes. En este caso, el encaminador también puede tomar el rol de coordinador. La red punto a punto puede tomar diferentes formas: Malla No hay restricción sobre los dispositivos que pueden comunicarse entre sı́ (figura 2.11, obtenida de [29]). Árbol El coordinador establece la red inicial. Los encaminadores forman las ramas y los dispositivos finales, que no encaminan datos, las hojas del árbol. Los encaminadores pueden agregar más nodos a la red, más allá de la red inicial. Capa de aplicación y seguridad La capa de aplicación es la más alta en la pila ZigBee, y aloja los objetos de aplicación. Los fabricantes desarrollan objetos de aplicación para personalizar los dispositivos para su aplicación. Estos objetos controlan y administran las capas de protocolos del dispositivo. El estándar ZigBee ha definido perfiles de aplicación, un conjunto de acuerdos sobre formatos de mensajes y acciones de procesamiento para promover la interoperabilidad entre diferentes vendedores [30]. ZigBee también provee mecanismos para garantizar la confidencialidad y autenticidad de la información transmitida. El estándar IEEE 802.15.4 soporta el uso de cifrado AES (Advanced Encryption Standard) de los paquetes salientes. La autenticación de los datos se puede comprobar incluyendo un código de integridad de mensaje (MIC) en cada frame. 42 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES Capa de red La capa de red es responsable de la administración de la red y del encaminamiento. El coordinador establece la nueva red, selecciona la topologı́a, y asigna direcciones al resto de los dispositivos. Los coordinadores y encaminadores son los que descubren y mantienen las rutas en la red. La capa de red mantene los siguientes 3 tipos de tablas: 1. encaminamiento 2. descubrimiento de ruta 3. nodos vecinos Las rutas se mantienen en tablas de encaminamiento, que se utilizan para determinar el siguiente nodo al que se debe reenviar un mensaje, camino a un destino particular. Campo Dirección destino Estado Tamaño 2 bytes 3 bits Muchos a uno 1 bits Grabación de ruta requerida 1 bit Flag de id de grupo 1 bit Dirección de siguiente nodo 2 bytes Descripción La ruta conduce a este destino. Activo, descubrimiento en curso, descubrimiento fallido, inactivo, validación en curso. Si el destino ha solicitado encaminamiento muchos a uno, toma valor 1. Si está prendido, la ruta seguida por el paquete será grabada y entregada al dispositivo de destino. Está prendido si la dirección de destino es un id de grupo. La dirección de 16 bits del siguiente nodo en la ruta. Cuadro 2.3: Campos de la tabla de encaminamiento ZigBee En la tabla 2.3 se listan los campos de cada entrada de la tabla de encaminamiento. 43 2.3. ESTÁNDARES DE COMUNICACIÓN Campo Id de petición de ruta Tamaño 1 byte Dirección origen 2 bytes Dirección de emisor 2 bytes Costo de reenvı́o 1 byte Costo residual 1 byte Descripción El número de secuencia que identifica la petición de ruta. Cada ruta se identifica por un id único de petición. 16 bits de dirección del dispositivo origen, quien inicia la petición de ruta. 16 bits de dirección del dispositivo emisor, el que ha enviado la petición de ruta en favor del dispositivo origen. Esta dirección es utilizada para enviar la respuesta de ruta al dispositivo origen. Si la misma petición de ruta es recibida de múltiples emisores, la dirección del emisor con el costo total de ruta más bajo será mantenida. El costo de ruta acumulado desde el dispositivo origen. Este campo se actualiza cuando se envı́a la petición de ruta hacia el dispositivo destino. El costo de ruta acumulado desde este dispositivo al dispositivo destino. Este campo se actualiza cuando se envı́a la respuesta de ruta al dispositivo origen. Cuadro 2.4: Campos de la tabla de descubrimiento de ruta ZigBee 44 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES Campo Dirección extendida Dirección de red Tipo de dispositivo En ocio, receptor encendido Relación Falla de transmisión LQI Marca de tiempo del último frame de señalización recibido Padre potencial Descripción 64 bits de dirección IEEE 802.15.4 16 bits de dirección de red Coordinador, encaminador o dispositivo final ZigBee Si el dispositivo mantienen encendido el receptor cuando está ocioso, este campo toma valor verdadero. Este campo determina la relación con el vecino. Padre, hijo, hermano, hijo anterior o ninguna. Un valor alto indica que muchos de los intentos de transmisión anteriores fallaron. La calidad de enlace estimada Opcional. Si el vecino es un padre potencial, opcional. Cuadro 2.5: Campos de la tabla de nodos vecinos ZigBee Otra tabla utilizada en el encaminamiento es la tabla de descubrimiento de ruta (tabla 2.4). El contenido de esta tabla es temporario y expira cada cierta cantidad de milisegundos. El costo de ruta se calcula como la suma de los costos de cada enlace que forma parte de la ruta: C(P ) = L−1 P C(li ) i=1 L = longitud de la ruta P = ruta (path) li = enlace i (link ) La ruta con el menor costo tiene la mejor chance de entrega exitosa de paquetes. El estándar ZigBee calcula el costo de enlace como un entero en el intervalo [0..7] con la siguiente fórmula [6]: C(l) = 7, min(7,round( 1 )) (pl )4 El costo es o bien constante (7), o bien el mı́nimo entre 7 y el recı́proco de pl . Se define a pl como la probabilidad de entrega con buen éxito si se utiliza 45 2.3. ESTÁNDARES DE COMUNICACIÓN el enlace l. El estándar menciona que los implementadores pueden optar por utilizar un costo constante de 7 o un valor que refleje la probabilidad pl de recepción, especı́ficamente el recı́proco de esa probabilidad (a mayor probabilidad, menor costo), que a su vez refleja la cantidad esperada de intentos requeridos para pasar un paquete cada vez que se utiliza el enlace. Se plantea la cuestión de cómo estimar o medir pl , y se deja abierta a los implementadores, pero se sugiere como manera más directa y siempre disponible, la estimación basada en la promediación del indicador LQI (Link Quality Indicator ) (por frame) que provee el estándar MAC y PHY IEEE 802.15.4-2003. Si se utiliza algún otro método de estimación de pl , el costo inicial debe estar basado en el LQI promedio. La medida LQI es una caracterización de la calidad del paquete recibido [31], que se implementa utilizando una estimación de la intensidad recibida (ED, Energy Detection), una estimación de la relación señal/ruido (SNR, Signal to Noise Ratio), o una combinación de ambos. Como el método para calcular el costo sugerido no tiene en cuenta el consumo de energı́a, el encaminamiento básico no puede considerarse consciente de la energı́a [29]. La eficiencia del encaminamiento, y la definición del costo del enlace, dependen de la definición de vida útil de la red, que está determinada por el tipo de aplicación. El dispositivo ZigBee mantiene también una tercera tabla de nodos vecinos, que contiene información sobre los dispositivos que se encuentran dentro del alcance, actualizándose cada vez que se recibe un paquete. Cada entrada tiene campos requeridos y campos opcionales, algunos listados en la tabla 2.5. La aplicación puede solicitar el descubrimiento de ruta para tres patrones de comunicación [29]: unicast Una ruta unicast comienza en un dispositivo y termina en otro. multicast El descubrimiento multicast se realiza si la dirección destino es un identificador de grupo. muchos a uno Si la aplicación no provee una dirección destino, se inicia el descubrimiento muchos a uno, donde el dispositivo solicitante es el sumidero. Si la aplicación solicita descubrimiento de ruta para la dirección broadcast, la petición se toma como inválida. 46 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES El descubrimiento unicast se realiza de la siguiente manera: 1. Un dispositivo O (origen) requiere hallar una ruta a un dispositivo D (destino), entonces inicia el descubrimiento emitiendo por broadcast el comando de petición de ruta, que contiene el identificador de petición de ruta, la dirección destino, y el costo de la ruta, inicialmente en cero. 2. El comando de petición de ruta es recibido por todos los dispositivos dentro del alcance de O. Si el dispositivo es un dispositivo final, ignora el comando. Si es un encaminador, lo procesa. 3. El encaminador E que recibe el comando y no tiene la tabla de encaminamiento llena, agrega el costo de O a E al comando de petición de ruta y lo vuelve a emitir por broadcast. Además, agrega el identificador de petición de ruta y la dirección origen a la tabla de descubrimiento de ruta, si no existen. 4. Si el encaminador E que recibe el comando tiene la tabla de encaminamiento llena, y la dirección destino no existe en la tabla, asumiendo que se utiliza encaminamiento jerárquico, y la petición de ruta proviene de una ruta válida, E reenviará el comando a lo largo del árbol. 5. Si E tiene la tabla de encaminamiento llena, y la petición de ruta no proviene de una ruta válida, se ignora. 6. Cada encaminador o coordinador C que recibe la petición, la vuelve a emitir por broadcast. Si la recibe por duplicado, actualiza la tabla de descubrimiento de ruta con el costo más bajo desde el dispositivo emisor hasta C. 7. El reenvı́o continua hasta que el dispositivo final D recibe la petición. De entre todas las peticiones de ruta que recibe D, selecciona la ruta óptima según el costo acumulado con que llegan, y emitirá el comando respuesta de ruta. ZigBee también soporta encaminamiento en origen (source routing), donde el nodo origen especifica la lista de dispositivos por los cuales debe encaminarse el paquete, y cuando un encaminador lo recibe, simplemente obtiene la dirección del siguiente nodo de la lista. 2.3.4. WirelessHART WirelessHART (Wireless Highway Addressable Remote Transducer ) es el primer estándar abierto de comunicación inalámbrica especı́ficamente diseñado para aplicaciones de control de procesos, oficialmente liberado en el año 2007 [32]. 47 2.3. ESTÁNDARES DE COMUNICACIÓN Conceptualmente, las redes WirelessHART son un tipo especial de redes inalámbricas de sensores. A diferencia de las redes de sensores genéricas, que asumen que los sensores son desplegados al azar y de manera abundante, el despliegue de las redes WirelessHART es preciso y con redundancia limitada. Los nodos WirelessHART están conectados a dispositivos de campo para recolectar datos ambientales especı́ficos de los procesos, por ejemplo, velocidades de flujo, niveles de fluido, o temperaturas. Una lectura de un sensor quizá no puede reemplazarse por la lectura de otro sensor cercano. Las redes genéricas son auto-configurables y no tienen requerimientos estrictos de tiempo y confiabilidad, como sı́ lo requieren las aplicaciones inalámbricas industriales. Capas WirelessHART Figura 2.12: Pila de protocolos WirelessHART La arquitectura de WirelessHART, de acuerdo con el modelo de referencia OSI, se muestra en la figura 2.12 (obtenida de [32]). La pila de protocolos comprende cinco capas: fı́sica, enlace, red, transporte y aplicación. La capa fı́sica está mayormente basada en la capa fı́sica DSSS 2.4 GHz definida en el estándar IEEE 802.15.4-2006, operando en la banda ISM (Industrial, scientific and medical ) de uso no licenciado 2400-2483.5 MHz, con una tasa de transmisión de 250 Kbits/s y 16 canales con 5 MHz de separación entre cada canal adyacente. 48 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES La capa de enlace es propia y opera de manera sincronizada, con ranuras estrictas de 10 ms y tecnologı́a TDMA (Time-Division Multiplexed Access) para proveer un sistema de comunicación determinı́stico y libre de colisiones. El superframe comprende un grupo de ranuras consecutivas y se repite sobre la base de su perı́odo (que es la suma de la duración del conjunto de ranuras). Se utiliza el concepto de transacciones que ocurren en una ranura de tiempo, descriptas por el vector: (FID, I, T, SA, DA, COFF) FID = Identificador de superframe I = Índice de ranura dentro del superframe T = Tipo de ranura (transmisión, recepción, ocio) SA = Dirección origen DA = Dirección destino COFF = Desplazamiento dentro del canal, canal lógico para usar en la transacción WirelessHART también introduce el concepto de lista negra de canales, el administrador puede deshabilitar canales que sufren constantes interferencias. Para soportar el salto de frecuencias, cada dispositivo mantiene una lista de canales activos. El canal verdadero se calcula a partir número absoluto de ranura y el desplazamiento dentro del canal. El número absoluto de ranura toma valor cero al iniciarse la red, y se incrementa constantemente. La capa de enlace mantiene una colección de tablas [33]: tabla de superframe Almacena atributos del superframe. tabla de enlace Almacena atributos de cada enlace. tabla de vecinos Almacena la lista de dispositivos dentro del alcance de radio. tabla del grafo Almacena la lista nodos siguientes legales para propagar un paquete hacia su destino. Las capas de red y transporte colaboran para proveer comunicación confiable y segura extremo a extremo. La capa de aplicación define varios 49 2.3. ESTÁNDARES DE COMUNICACIÓN comandos que procesa para generar respuestas, tipos de datos y reportes de estado del dispositivo. WirelessHART además incluye servicios de seguridad en el enlace y a nivel de red. La capa MAC provee integridad nodo a nodo usando MIC (código de integridad de mensaje). A nivel de red, los dispositivos y el administrador de red emplean varias claves para garantizar la confidencialidad e integridad de las conexiones extremo a extremo: públicas, de red, de unión, de sesión. El dispositivo y el administrador de red son dos de los tipos de nodo WirelessHART, descriptos en la siguiente sección. El dispositivo utilizará la clave de unión para generar el MIC del paquete de red y encriptar la petición de unión, y la clave pública para generar el MIC de enlace. Luego de ser autenticado, el administrador de red creará una clave de sesión que utilizarán para comunicarse. Para el tráfico normal, los datos del frame (enlace) se autentican con la clave de red y en la capa de red el paquete se autentica y encripta con la clave de sesión. Arquitectura de red y encaminamiento Figura 2.13: Malla WirelessHART Una red WirelessHART se compone de los siguientes nodos (ver figura 2.13 obtenida de [34]): 50 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES Dispositivo de campo Conectados a un proceso de planta. Dispositivo de mano Computadora portátil compatible con WirelessHART, utilizada para configurar dispositivos, realizar diagnósticos y calibraciones. Gateway Conecta aplicaciones de computadora con dispositivos de campo. Administrador de red Responsable de configurar la red, programar y mantener la comunicación entre los dispositivos WirelessHART. Para soportar la topologı́a de red malla, todos los dispositivos deben poder reenviar paquetes en favor del resto. Se definen dos protocolos de encaminamiento: Encaminamiento por grafo Un grafo puede pensarse como una colección de caminos dirigidos, que conecta los nodos de la red. Una única red puede tener múltiples grafos, y algunos pueden solaparse. El administrador de red crea las rutas asociadas a cada grafo y las almacena en cada dispositivo de la red. Para enviar un paquete, el dispositivo origen especifica un identificador de grafo en su encabezado. Todos los dispositivos camino al destino deben ser preconfigurados con la información de encaminamiento, para poder determinar el siguiente nodo al cual reenviar el paquete. Encaminamiento en origen Complementa el encaminamiento por grafo para asistir al diagnóstico de la red. El dispositivo origen especifica la lista de dispositivos por los cuales debe viajar el paquete en el encabezado. Cada dispositivo utiliza la lista para determinar el siguiente nodo al cual debe reenviar el paquete. La capa de red mantiene también un conjunto de tablas propias: tabla de sesión Cada entrada identifica una sesión segura entre dos dispositivos. tabla de transporte Utilizada para dar soporte a transacciones extremo a extremo, con confirmación. Junto con un número de secuencia se almacena la última petición o respuesta, para poder reenviarlos cuando expira el temporizador. 51 2.3. ESTÁNDARES DE COMUNICACIÓN tabla de encaminamiento Para cada destino pueden existir más de una entrada en esta tabla, con un identificador de grafo diferente. Basándose en la información de enlace provista por cada nodo, el administrador de red crea el grafo total de la red, siguiendo las siguientes reglas en el orden en que se enumeran: 1. minimizar la cantidad de saltos 2. encaminar a través de dispositivos conectados a la red eléctrica si es posible 3. utilizar la intensidad de señal para seleccionar las mejores rutas 4. utilizar una combinación de intensidades de señal ponderadas para seleccionar entre rutas alternativas 5. podar la cantidad de vecinos a 4 nodos o menos Luego de crear el grafo total, el administrador crea un grafo que describe rutas desde cada dispositivo hasta el gateway, un grafo de broadcast desde el gateway hasta cada dispositivo, grafos desde el gateway a cada dispositivo individualmente. El administrador de red asigna ranuras de tiempo a cada dispositivo de acuerdo con los grafos derivados. Comparación con ZigBee Los principales argumentos en contra de la utilización de ZigBee para aplicaciones industriales son [35]: ZigBee utiliza un único canal, lo que lo hace muy susceptible a interferencias intencionales o no. La grave atenuación selectiva de frecuencia debido al ambiente rico en metales propio de las plantas podrı́a, potencialmente, detener toda comunicación. El canal único aumentará la interferencia con otros sistemas, tales como una red local inalámbrica, y aumentará el retardo al crecer la red, además de producirse una mayor cantidad de colisiones y retransmisiones. En este sentido, WirelessHART es más robusto, ya que utiliza saltos de frecuencia y retransmisiones en diferente frecuencia para reducir los efectos de interferencias. ZigBee no mantiene diversidad de rutas, si se rompe un enlace, se debe establecer una nueva ruta de origen a destino, produciendo retardos y 52 CAPÍTULO 2. REDES INALÁMBRICAS DE SENSORES costos indirectos, y el descubrimiento de ruta puede llegar a consumir todo el ancho de banda en ambientes con rutas inestables. El encaminamiento por grafo de WirelessHART provee la redundancia de ruta que permite reducir los efectos de enlaces rotos. Los encaminadores ZigBee con muchos vecinos deben mantener el receptor encendido durante una gran parte del superframe, en la fase CAP por utilizar CSMA/CA. En cambio, los dispositivos WirelessHART solo mantienen la radio encendida durante las ranuras de tiempo asignadas. Aún con las caracterı́sticas de robustez y confiabilidad mencionadas de WirelessHART para aplicaciones industriales, en [35] se sugiere su utilización en procesos lentos y no crı́ticos. 53 2.3. ESTÁNDARES DE COMUNICACIÓN 54 Capı́tulo 3 Protocolos de red 3.1. Problema del encaminamiento Uno de los principales desafı́os de diseño en WSNs es la comunicación de datos intentando al mismo tiempo prolongar la vida útil de la red, empleando técnicas agresivas de administración de energı́a. En [10] se resumen algunas cuestiones de diseño que afectan el proceso del encaminamiento: Despliegue El despliegue de los nodos depende de la aplicación y afecta el desempeño del protocolo. Cuando el despliegue es determinı́stico, los datos se encaminan a través de rutas predefinidas. Cuando es al azar, la estructura de red se crea ad hoc y probablemente las rutas se compongan de múltiples saltos de enlaces inalámbricos. Conservación de energı́a Los nodos sólo cuentan con su limitado suministro de energı́a para procesar y comunicar datos en un ambiente inalámbrico, por lo que se deben buscar maneras de optimizar esas actividades. Modelo de reporte de datos El sensado y reporte de datos depende de la aplicación y sus requerimientos temporales, y pueden clasificarse en continuos, por evento, por consulta o hı́bridos. En el modelo continuo, los sensores sensan y transmiten periódicamente. En los modelos de reporte por evento y por consulta, los sensores reaccionan a un cambio drástico y repentino del valor sensado por haber ocurrido un evento, o para responder a una consulta iniciada por la estación base. El protocolo de encaminamiento está fuertemente influido por el modelo requerido. Heterogeneidad de nodos o enlaces Los nodos pueden ser homogéneos en capacidad o pueden diferir in55 3.1. PROBLEMA DEL ENCAMINAMIENTO cluso en el rol. Por ejemplo, una aplicación puede requerir una combinación de diversos sensores para monitorear temperatura, presión y humedad del ambiente, detectando movimiento con señales acústicas, y capturando video de objetos en movimiento. Los sensores pueden ser desplegados independientemente, o las diferentes funcionalidades pueden ser incluidas en los mismos nodos sensores. Tolerancia a fallas Cuando los nodos fallan, por falta de energı́a, daño fı́sico o interferencia, no deberı́an afectar el funcionamiento de la red. Los protocolos de acceso al medio y encaminamiento deben formar nuevos enlaces y rutas al sumidero, lo que puede requerir el ajuste de la intensidad de transmisión y el encaminamiento de paquetes a regiones de la red de mayor energı́a. Pueden requerirse múltiples niveles de redundancia dependiendo de los requerimientos de tolerancia a fallas. Escalabilidad La cantidad de nodos sensores desplegados en una determinada área puede ser del orden de los cientos o miles. El esquema de encaminamiento debe ser capaz de operar con una gran cantidad de nodos. Movilidad Muchas arquitecturas asumen nodos estacionarios, pero algunas aplicaciones requieren nodos y sumideros móviles. Cuando hay movilidad, la estabilidad de la ruta presenta mayor desafı́o. Canal de transmisión Los problemas tradicionales de un canal inalámbrico, atenuación y alta tasa de errores, también afectan a las redes de sensores. En general el ancho de banda requerido es bajo. Conectividad Por la gran densidad de nodos se espera que la red esté altamente conectada, aunque habrá cambios de topologı́a debido a fallas en los nodos. Cobertura Cada nodo obtiene una cierta vista del ambiente, limitada en alcance y exactitud. Agregación de datos Dado que los nodos pueden generar una cantidad importante de información redundante, la agregación de datos permite reducir la cantidad de transmisiones. La agregación es la combinación de diferentes fuentes de acuerdo a una cierta función, por ejemplo, mı́nimo, promedio, 56 CAPÍTULO 3. PROTOCOLOS DE RED máximo. Algunos métodos de procesamiento de señales se pueden utilizar para combinar señales y reducir su ruido, técnica que se conoce como fusión de datos. Calidad de servicio Algunas aplicaciones tienen requerimientos temporales y de latencia. Sin embargo, en muchas otras, la conservación de energı́a, relacionada con la vida útil de la red, es considerada mucho más importante que la calidad de servicio. Para cumplimentar este requerimiento se requieren protocolos conscientes de la energı́a. En la literatura y artı́culos de investigación se pueden encontrar varias maneras de clasificar protocolos para redes inalámbricas de sensores, según las premisas de diseño con que se definen y los problemas que intentan resolver. Cada paradigma a menudo se describe respondiendo a las siguientes preguntas: ¿Qué modelo de red y tipo de aplicación asume? ¿Cómo se elige el siguiente nodo en la ruta? ¿Qué fases de operación tiene? ¿Qué cuestiones resuelve? ¿Cuáles son sus desventajas? Asimismo, se han propuesto protocolos que no son exclusivos de un paradigma, sino que aplican más de una técnica, combinándolas de manera conveniente para algún tipo de aplicación. Es por ello que, al analizar un protocolo, probablemente el mismo pertenezca a más de una categorı́a. A continuación, se describirán tres de los paradigmas más mencionados en las taxonomı́as analizadas [36][11][5][10][25][22]. 3.2. 3.2.1. Encaminamiento jerárquico Caracterı́sticas Los algoritmos de esta clase se caracterizan por establecer una topologı́a de red jerárquica. La jerarquı́a virtual se construye dividiendo la red en niveles, utilizando un criterio conveniente, por ejemplo, por funcionalidad o por ubicación de los nodos [36]. En la figura 3.1 se esquematiza esta división. El objetivo de la misma es reducir la carga que se produce en el sumidero si se utiliza una topologı́a plana y la densidad de nodos es muy alta, ya que 57 3.2. ENCAMINAMIENTO JERÁRQUICO cada dato sensado se comunicarı́a directamente a la estación base. Además, en general, los nodos no tienen un alcance de radio muy largo como para poder llegar al sumidero en un área muy amplia [11]. En una jerarquı́a, los nodos colaboran dentro de un clúster para transmitir los datos, utilizando un esquema multi-salto, permitiendo hacer un uso más eficiente de la energı́a disponible. Ocasionalmente se aprovecha la topologı́a para utilizar también la técnica de fusión o agregación de datos, y el rol de cabecera o de fusionador puede ser asignado dentro del clúster teniendo en cuenta el nivel de residual de energı́a que posee el nodo. Figura 3.1: Jerarquı́a virtual en una red de sensores Este tipo de protocolos es adecuado para aplicaciones que requieren un tráfico periódico, donde todos los sensores se encuentran sensando el ambiente a una tasa de tiempo fija, por lo que continuamente se genera información a ser enviada a la estación base o sumidero. También existen algoritmos dentro de este paradigma especialmente diseñados para aplicaciones de detección de eventos [11]. El mantenimiento de la topologı́a de red tiene un costo indirecto asociado, pero esta misma jerarquı́a permite reducir el tráfico de mensajes de control para el cálculo de rutas, lo que implica un ahorro de energı́a. Es recomendable utilizar esta técnica en aplicaciones en donde se despliega una gran cantidad de nodos y se requiere escalabilidad, ya que en general la jerarquı́a se construye dinámicamente, y puede extenderse o adaptarse. 58 CAPÍTULO 3. PROTOCOLOS DE RED El paradigma frecuentemente se ilustra presentando el algoritmo LEACH (Low Energy Adaptive Clustering Hierarchy), aunque haya sido propuesto hace ya 10 años. 3.2.2. LEACH Introducción LEACH es un protocolo que propone el uso de clústeres de nodos permitiendo distribuir el consumo de energı́a de manera más uniforme entre los sensores de la red. Se caracteriza por hacer rotar al azar el rol de cabecera de clúster. Dentro de un clúster, la cabecera coordina localmente la transmisión y fusión de datos para comprimir la información luego transmitida directamente a la estación base [37], reduciendo el ancho de banda requerido. La topologı́a resultante se esquematiza en la figura 3.2 (obtenida de [4]). Figura 3.2: Topologı́a de red en LEACH Modelo de red El modelo de red para el cual se desarrolla LEACH comprende cientos o miles de nodos sensores económicos y eficientes en términos de energı́a. Los nodos son homogéneos y se encuentran restringidos en cuanto a la duración de la baterı́a. La calidad de de la información se mejora con la utilización de un gran número de nodos. Una estación base fija recibe la información sensada en lugares distantes. 59 3.2. ENCAMINAMIENTO JERÁRQUICO Fases de operación LEACH opera en rondas. Cada ronda consta de las siguientes cuatro fases: 1. Anuncio Al comienzo, cada clúster decide si se vuelve cabecera dependiendo del porcentaje de cabeceras que debe tener la red (definido a priori) y el número de veces que el nodo ya ha tenido el rol. Cada nodo que se elige a sı́ mismo como cabecera, hace broadcast del anuncio al resto de los nodos, utilizando CSMA. Los nodos que no son cabecera mantienen su radio encendida, y elijen su cabecera sobre la base de la fuerza de la señal recibida de los anuncios que escuchan (eligen la cabecera cuya señal se recibe con mayor intensidad, porque es la que estarı́a más cerca). 2. Armado del clúster Los nodos eligen la cabecera que requiere la menor energı́a de transmisión e informan a la cabecera seleccionada que se harán miembro del clúster usando el protocolo CSMA. 3. Planificación del canal Una vez que la cabecera recibe todos los mensajes de nodos miembros, crea un schedule TDMA asignando un perı́odo de tiempo de transmisión a cada nodo y lo informa a los nodos haciendo broadcast. 4. Transmisión de datos Cada nodo envı́a la información durante la franja de tiempo de transmisión que le fue asignada. Mientras el nodo no está transmitiendo, puede apagar su radio. Cuando el nodo cabecera recibe los datos de todos los nodos del clúster, puede combinarlos para comprimir la señal que se enviará a la estación base en una transmisión de alta energı́a. Luego de un determinado tiempo de transmisión, comienza una nueva ronda. Para minimizar el costo indirecto asociado al mantenimiento de la jerarquı́a, la fase de transmisión es mucho más larga que la de armado de clústeres. Rotación al azar de la cabecera de clúster A partir del análisis de primer orden del modelo de radio que se realiza en [37], para determinados parámetros de radio, los protocolos deben intentar reducir las distancias de transmisión, pero también la cantidad de operaciones de transmisión y recepción por cada mensaje. Si todos los nodos se comunican directamente con la estación base, se requerirá una gran cantidad de energı́a de transmisión. Por otro lado, si todos los nodos intentan transmitir a la más baja energı́a posible, es decir, al nodo 60 CAPÍTULO 3. PROTOCOLOS DE RED vecino más cercano, la suma de la energı́a consumida en cada salto puede terminar siendo mayor que la empleada en la transmisión directa. Cuando la energı́a de transmisión es del mismo orden que la de recepción, la transmisión directa es más eficiente a escala global. Pero debe aclararse que de utilizarse transmisión directa, los nodos más distantes de la estación base morirán primero (por ejemplo, en la figura 3.1, los nodos en el nivel n). Asimismo, con un encaminamiento de energı́a mı́nima, son los nodos más cercanos a la estación base los que se agotan primero, porque encaminan datos provenientes de todos los otros nodos de la red (en la figura 3.1, los nodos en el nivel 0). Sobre la base del análisis anterior, se propone agrupar nodos en clústeres, de manera que los nodos que no son cabecera no están muy distanciados de ella, y emplean menos energı́a de la necesaria para transmitir directamente a la estación base. Como el nodo que tiene rol de cabecera sı́ realiza transmisiones de alta energı́a a la base, LEACH introduce la rotación del rol al azar. Cada nodo decide si toma el rol de cabecera o no en la ronda n eligiendo un valor al azar entre 0 y 1. Si el valor es menor a un umbral U (n), el nodo se vuelve cabecera. En [37] se muestra que existe una porcentaje óptimo de cabeceras P, tal que se reduce al mı́nimo posible la energı́a disipada en la transmisión. Para LEACH, P es 0.05, es decir, en una ronda, el 5 % de los nodos es cabecera. Entonces, se necesitan al menos P1 = 20 rondas para que todos los nodos tengan el rol de cabecera una vez. El umbral U (n) se define de manera que en la ronda 0 tiene valor P, y el valor se incrementa hasta llegar a 1 en la ronda P1 − 1. Pero una vez que el nodo tomó el rol, no podrá volver a tomarlo por P1 rondas. Problemas que resuelve LEACH es un algoritmo distribuido y no requiere coordinación de la estación base ni conocimiento global de la topologı́a de red. Es eficiente al distribuir el consumo de energı́a de manera uniforme a lo largo de la red, lo que incrementa la vida útil de la misma. Dado que las cabeceras pueden comprimir o fusionar los datos recibidos de los nodos locales, contribuye a reducir el tráfico global. Desventajas En su primera versión, la probabilidad de tomar el rol de cabecera no tiene en cuenta la energı́a residual en el nodo. Además, la comunicación de cabecera a estación base es de salto-único [11], lo cual en realidad es una limitación, ya que en áreas amplias puede que el alcance de la radio no sea suficiente. 61 3.3. ENCAMINAMIENTO GEOGRÁFICO 3.3. 3.3.1. Encaminamiento geográfico Caracterı́sticas A este paradigma pertenecen los algoritmos que utilizan una posición geográfica o coordenada, real o virtual, para encaminar datos hacia un punto en la red, seleccionando como siguiente nodo al vecino que más cerca esté del destino [36], minimizando la distancia restante que se debe recorrer [22]. En aplicaciones de recolección de datos por demanda, la coordenada permite difundir una consulta a una determinada región de la red, los nodos que no están en la región de interés descartan el mensaje, reduciendo ası́ tráfico innecesario [11]. Este tipo de algoritmos permite utilizar tablas de encaminamiento más pequeñas, porque la coordenada geográfica tiene implı́cita la información sobre a qué nodo debe enviarse el mensaje para encaminarlo al destino. Figura 3.3: Encaminamiento geográfico En la figura 3.3 (obtenida de [22]) se esquematiza cómo el encaminamiento básico selecciona cada vez, de manera ávida, el nodo más cercano al punto de destino. En el ejemplo, el camino seleccionado desde la estación base comprende los nodos c, f, g y nodo destino. En la figura puede observarse una importante deficiencia: si se ignora la topologı́a, la ruta seleccionada puede no ser la más corta en saltos [22]. Otro problema para el cual se han propuesto numerosas soluciones es el del camino sin salida. En la figura 3.4 (obtenida de [22]), se muestra que aunque la estación base tiene conectividad con el nodo destino, si se utiliza el algoritmo ávido, el mensaje llega al nodo situado a menor distancia restante, pero a partir de allı́ el obstáculo impide que el encaminamiento progrese, porque no hay conectividad con ningún otro nodo más cercano a la posición final. 62 CAPÍTULO 3. PROTOCOLOS DE RED Una solución intuitiva al problema del camino sin salida es utilizar la regla de la mano derecha para escapar del laberinto. Si se detecta que un mensaje no puede progresar, se lo encamina rodeando la cara definida por los nodos alrededor del obstáculo, usando la regla de la mano derecha. Aun ası́, no es trivial determinar a partir de qué momento conviene pasar del modo ávido al modo perimetral. Figura 3.4: Encaminamiento geográfico en presencia de obstáculos El sistema de localización es un requisito para poder realizar encaminamiento geográfico. En algunas taxonomı́as [36][11], dentro del paradigma se enumeran protocolos que asumen nodos con capacidades de posicionamiento muy variadas, donde el nodo: Es consciente de su posición y no se aclara qué sistema de localización utiliza Calcula una posición virtual dentro de un sistema de coordenadas Utiliza un sistema de GPS impreciso Utiliza un sistema de GPS de bajo consumo En la mayorı́a de los casos, los nodos sensores no cuentan con GPS, debido a sus limitaciones de recursos y energı́a inherentes [25][4], por lo que existe un conjunto de técnicas de triangulación que permiten al nodo conocer su posición. En [38] se propone un algoritmo de encaminamiento geográfico basado en coordenadas virtuales, que no requiere conocer la posición real de los nodos de la red. El encaminamiento geográfico es escalable, los nodos sólo deben mantener el estado de sus vecinos [38] (no global) y se soporta la comunicación any 63 3.3. ENCAMINAMIENTO GEOGRÁFICO to any sin ser necesario establecer la ruta. Este tipo de protocolos es adecuado para aplicaciones en donde la estación base inicia consultas dirigidas a un subconjunto de nodos, o una región en el espacio en particular[25]. 3.3.2. Por coordenadas virtuales Introducción El encaminamiento geográfico requiere que los nodos conozcan su posición. Como se ha mencionado anteriormente, existen muchas configuraciones en donde la información de posición no está disponible. El protocolo presentado en [38] hace foco en la asignación de coordenadas virtuales a los nodos de la red, para utilizar un esquema de encaminamiento geográfico estándar. No es necesario que estas coordenadas virtuales sean representaciones exactas de la geografı́a de los nodos, mientras reflejen la conectividad entre los nodos, en particular la conectividad local o entre nodos vecinos, como se explicará más adelante [38]. En el encaminamiento geográfico por coordenadas virtuales, los paquetes de red son encaminados de manera ávida. De la tabla de encaminamiento, siempre se reenvı́a al nodo que esté más cerca del destino, y que también está más cerca del destino que el nodo actual. Si el nodo actual es el más cercano al destino, y la capa superior determina que en efecto el paquete debe ser entregado al nodo actual, entonces se considera que el paquete ha llegado a destino. Pero si el paquete no ha llegado a destino y no puede progresar en forma ávida, se ha llegado a un punto sin salida, por lo que el nodo ejecuta el algoritmo expanding ring search o ERS hasta encontrar un nodo más cerca del destino. Modelo de red El modelo de red del trabajo original consta de miles de nodos, y una densidad media, donde cada nodo tiene 16 vecinos [38]. Fases de operación Arranque (Bootstrap) El arranque comprende 4 pasos. 1. Descubrimiento de nodos perı́metro Dos nodos predeterminados como baliza (beacon nodes) inundan la red con mensajes HELLO. El mensaje contiene un contador de saltos que se incrementa en cada nodo que lo reenvı́a. Al recibirlo, cada nodo descubre su distancia en saltos a cada nodo baliza, siendo esta el menor valor de contador de entre todos los mensajes recibidos. Entonces, 64 CAPÍTULO 3. PROTOCOLOS DE RED una vez determinada la distancia a la baliza, los nodos deciden si son perimetrales utilizando el criterio del nodo de perı́metro. Si el nodo es el más alejado del beacon, de entre todos sus vecinos a dos saltos, entonces está en el perı́metro. 2. Vector perı́metro Cada nodo perimetral inunda la red para permitir al resto de los nodos calcular su vector perı́metro, es decir, la distancia a cada nodo perimetral. 3. Coordenadas normalizadas Cada nodo perı́metro y baliza inunda la red con sus propios vectores perı́metro. El resto de los nodos utilizan este vector para normalizar las coordenadas propias y de los nodos perı́metros. Luego, los nodos perı́metro proyectan las coordenadas en un circulo exterior. 4. Relajación de coordenadas Los nodos perı́metro quedan ahora fijos, mientras todos los otros nodos ejecutan el algoritmo de ajuste de coordenadas. Régimen (Steady State) Una vez completo el arranque, uno de los nodos beacon inunda periódicamente la red, cada 50 segundos, con mensajes HELLO. De esta manera, los nodos descubren su distancia a cada beacon y cada nodo decide si es un nodo perimetral o no, utilizando el criterio del nodo de perı́metro. Periódicamente también, cada nodo hace broadcast de la lista de sus vecinos a dos saltos, dentro del área de alcance de su radio. Si un nodo no recibe el latido de un vecino por tres intervalos, lo elimina de su lista de vecinos. Normalización de coordenadas En la normalización de coordenadas, todos los nodos calculan las coordenadas virtuales normalizadas de los nodos perı́metro. El proceso se realiza en dos pasos. A partir de la recepción de los vectores perı́metro, primero se triangulan coordenadas iniciales, y luego se normalizan con respecto a un eje de coordenadas definido por los nodos baliza. 1. Triangulación Al recibir los vectores perı́metro, cada nodo perimetral conoce las distancias entre cada par de nodos perı́metro. Dichos valores se utilizan en un algoritmo de triangulación para calcular las coordenadas iniciales. El algoritmo define las coordenadas de manera de minimizar la diferencia entre la distancia en saltos y la distancia euclı́dea entre cada nodo perimetral. 65 3.3. ENCAMINAMIENTO GEOGRÁFICO P minimizar{ (H(i, j) − D(i, j))2 } i,jperámetro H es la distancia en saltos entre el nodo i y el nodo j D es la distancia euclı́dea entre las coordenadas virtuales del nodo i y j Esto significa que las coordenadas virtuales deben conservar las relaciones de distancia entre los nodos. Figura 3.5: Nodos perı́metro Para simplificar, por ejemplo, supongamos que sólo se descubren tres nodos de perı́metro en una red como la de la figura 3.5, P1, P2 y P3, y sus respectivos vectores perı́metro son los siguientes: P 1 = (0, 2, 3) P 2 = (2, 0, 3) P 3 = (3, 3, 0) Entonces, la triangulación trata de minimizar la siguiente suma: p 2 2 )2 ( 2 − (xp 1 − x2 ) + (y1 − y2 ) + ( 3 − p(x1 − x3 )2 + (y1 − y3 )2 + ( 3 − (x2 − x3 )2 + (y2 − y3 )2 )2 )2 Como los nodos que no están en el perı́metro igual reciben el broadcast de vectores perı́metro, utilizan el mismo algoritmo de triangulación 66 CAPÍTULO 3. PROTOCOLOS DE RED para calcular sus propias coordenadas iniciales normalizadas. 2. Normalización Cualquier las coordenadas de cualquier conjunto que minimice las suma de la sección anterior pueden ser rotadas y trasladadas, y aún ası́ continuar satisfaciendo la condición. Por lo anterior, las coordenadas iniciales se normalizan de manera que todos los nodos lleguen a obtener los mismos valores. La normalización se realiza con respecto un nuevo eje de coordenadas, que se forma a partir del centro de gravedad de las posiciones de los nodos perı́metro y baliza. Desde el centro de gravedad, la posición de una baliza define el eje de ordenadas, y la posición de la otra, el eje de abscisas. Si bien el cálculo no se muestra en [38], se deduce lo expuesto a continuación. Supongamos que tenemos las siguientes coordenadas iniciales para n nodos perı́metro: Pn = (xn , yn ) Entonces, el centro de gravedad, o mejor dicho, el centroide del conjunto finito de estos n puntos en <2 es: P (xn ,yn ) (c, d) = n n Luego, para normalizar las coordenadas (x, y) del nodo perı́metro P1 , se calcula (x0 , y 0 ), realizando un cambio de base, de la base canónica a la base definida por b01 = (xb1 , yb1 ) − (c, d) y b02y = (xb2 , yb2 ) − (c, d): (xb1 , yb1 ) = coordenadas del nodo baliza 1 (xb2 , yb2 ) = coordenadas del nodo baliza 2 0 B = xb1 − c xb2 − c yb1 − d yb2 − d 0 (x, y) − (c, d) = B · x’ y’ Se lleva el centro de gravedad al origen, y las nuevas coordenadas se calculan para los ejes definidos por el centro de gravedad y las posiciones de los dos nodos baliza. 67 3.3. ENCAMINAMIENTO GEOGRÁFICO Luego de la triangulación, los nodos perı́metro proyectan sus coordenadas en un cı́rculo con origen en el centro de gravedad los nodos perı́metro, y radio igual a la distancia promedio de los nodos perı́metro al centro de gravedad calculado. Esta técnica permite mantener un sistema de coordenadas consistente en presencia de fallas en los nodos o movilidad [38]. Relajación de coordenadas En este paso los nodos que no están en el perı́metro ajustan sus coordenadas virtuales, en unas pocas iteraciones de cálculo, partiendo de las coordenadas iniciales normalizadas, y las coordenadas de los nodos perı́metro proyectadas en un cı́rculo, cuyo radio es igual a la distancia promedio de estos nodos al centro de gravedad. Puede hacerse una analogı́a del proceso con la teorı́a de grafos embebidos, donde cada enlace (arista) representa una fuerza que trata de unir los nodos vecinos. P xi = P xk kVi |Vi | yi = yk kVi |Vi | Vi es el conjunto de vecinos del nodo i |Vi | es la cantidad de vecinos del nodo i En cada iteración, el nodo ordinario actualiza sus coordenadas virtuales, x e y, con el promedio del valor de coordenada de sus vecinos. Las coordenadas de los nodos perı́metro quedan fijas. En [38] se muestra que luego de unas pocas iteraciones (del orden de 10), las coordenadas convergen a tasas de encaminamiento exitoso muy altas. Conceptualmente, la relajación produce que todos los nodos que no están en el perı́metro, pero que tienen un nodo perı́metro entre sus vecinos, se muevan hacia el nodo perı́metro más cercano en términos de cantidad de saltos. Problemas que resuelve En presencia de obstáculos o agujeros, se encontró que el encaminamiento ávido tiene mejor desempeño al utilizar coordenadas virtuales, porque ellas reflejan mejor la conectividad de la red que las posiciones reales [38]. Por ejemplo, si bien en coordenadas geográficas reales un nodo puede estar muy cercano a otro, ambos pueden estar desconectados o fuera de alcance debido a la presencia de algún obstáculo, como puede verse en la figura 3.3. El algoritmo es escalable, porque luego de la fase de arranque, el costo de mantenimiento en cantidad de mensajes, si bien no es despreciable, es independiente del tamaño de la red. 68 CAPÍTULO 3. PROTOCOLOS DE RED Desventajas En [38] sugiere como desventaja que en régimen, el algoritmo tiene un costo indirecto asociado bastante alto debido a que todos los nodos inundan periódicamente la red. 3.4. 3.4.1. Encaminamiento centrado en los datos Caracterı́sticas En aplicaciones en las se instala una gran cantidad de nodos sensores, puede no ser posible asignar un identificador o dirección global, porque su mantenimiento genera un costo indirecto elevado. Sucede también que la información generada por sensores instalados en una misma región, puede contener redundancias que producen tráfico innecesario[11]. Ası́, este paradigma propone dos técnicas clave para mejorar las cuestiones expuestas: un esquema de direccionamiento basado en propiedades o atributos de la información y la posibilidad de agregar o fusionar datos eliminando redundancias. En esta clase de protocolos el encaminamiento se inicia con una consulta realizada por alguno de los nodos. Lo que se direcciona no es un nodo de la red, sino la información misma, a través de algún atributo que posea (por ejemplo, la ubicación geográfica en donde se generó), utilizando consultas [36]. Se han dado diferentes definiciones y nombres al encaminamiento centrado en datos [5][10][25], y en todas se lo caracteriza , de alguna manera, como basado en el contenido que se transmite. Un paquete se envı́a a un determinado nodo o es descartado, dependiendo de la información que contiene. Este tipo de protocolos es adecuado para aplicaciones de detección de eventos, como por ejemplo, detección de incendios forestales, contaminación. La técnica de direccionamiento por atributos no es apropiada para aplicaciones de monitoreo (reporte periódico), ya que en este tipo de aplicación se requiere un tráfico continuo de datos. Ello implica tener que consultar la misma información periódicamente, y la búsqueda de coincidencias entre la consulta y los datos disponibles acarrea un costo indirecto [11] que puede evitarse por diseño. El paradigma también se ha propuesto como adecuado para aplicaciones que requieren consultas orientadas a eventos, ya que las mismas sólo involucran una parte de la red a la vez, el tráfico es eventual por lo que conviene reducir al mı́nimo el costo de direccionamiento y mantenimiento de rutas. La utilización de agregación de datos permitirı́a en cierta manera minimizar la probabilidad de obtener falsas alarmas en la detección de eventos. 69 3.4. ENCAMINAMIENTO CENTRADO EN LOS DATOS EAD (Enery-Aware Data-Centric Routing) [39] es un algoritmo que pertenece a este grupo, ya que implementa la técnica de agregación de datos. 3.4.2. Energy-Aware Data-Centric Routing Introducción El protocolo se basa en que el mayor consumo de baterı́a es realizado por el tranceptor, que consume casi lo mismo al enviar, recibir o en estado ocioso. Para ahorrar energı́a, el mismo debe simplemente apagarse. Sin embargo, un nodo dormido no puede retransmitir mensajes, por lo que no se pueden apagar todos los tranceptores al mismo tiempo. EAD propone construir una columna vertebral de nodos activos que permita realizar un encaminamiento consciente de la energı́a. Modelo de red El modelo de red para el que se plantea EAD está compuesto por cientos o miles de nodos sensores instalados al azar en el área de sensado, y una estación base o gateway que conecta la red con el exterior y se encuentra en los lı́mites del área de instalación, de manera de ser alcanzada por algunos sensores [39]. Heurı́stica de construcción de la columna El objetivo de la columna vertebral de nodos es que exista un camino activo que permita hacer llegar el dato desde el nodo sensor en donde se origina hasta el sumidero. Mientras un nodo forme parte de la columna, estará activo, con su radio encendida. Un nodo que no forme parte de la columna, puede apagarse periódicamente, y ahorrar energı́a. Entonces, es conveniente construir la columna vertebral con la menor cantidad de nodos activos posibles, o dicho de otro modo, construir con los nodos un árbol recubridor con el máximo número de nodos hoja y cuya raı́z sea el nodo sumidero. Este problema es equivalente a construir un conjunto dominanteconexo que es NP-Completo, para lo que en [39] se propone una heurı́stica distribuida que permite construir un árbol recubridor de nodos, teniendo en cuenta los niveles residuales de energı́a. En la figura 3.6 se esquematiza el algoritmo de cambio de estado del nodo EAD. La columna se construye mediante el envı́o de mensajes de control que contienen 4 valores: Estado Puede ser 0 (indefinido), 1 (nodo hoja) ó 2 (nodo de columna) 70 CAPÍTULO 3. PROTOCOLOS DE RED Figura 3.6: Máquina de estados del nodo EAD Nivel El nivel dentro del árbol cuya raı́z es el nodo sumidero Padre El siguiente nodo, en el camino al sumidero Energı́a Energı́a residual que posee el nodo Al comenzar, todos los nodos se encuentran en estado 0 y el sumidero (la raı́z) hace broadcast de la tupla (2, 0, N U LL, ∞), donde ∞ indica que el emisor es el sumidero. Como se esquematiza en la figura 3.7, cuando un nodo v en estado indefinido recibe el mensaje (2, nivelu , padreu , Eu ) de un nodo de columna u: 1. v se vuelve nodo hoja 2. sensa el canal hasta que esté ocioso 71 3.4. ENCAMINAMIENTO CENTRADO EN LOS DATOS 3. espera por T2v 4. si el canal sigue ocioso, v hace broadcast del mensaje (1, nivelv + 1, u, Ev ) Figura 3.7: De estado indefinido a estado hoja Cuando un nodo v en estado indefinido recibe el mensaje (1, nivelu , padreu , Eu ) de un nodo hoja u: 1. v se vuelve nodo columna 2. sensa el canal hasta que esté ocioso 3. espera por T1v 4. si el canal está todavı́a ocioso, v hace broadcast del mensaje (2, nivelu + 1, u, Ev ) 5. todos los nodos vecinos de v en estado indefinido se vuelven nodos hoja 72 CAPÍTULO 3. PROTOCOLOS DE RED Mientras el nodo v espera T1 o T2 , si el canal es ocupado, el nodo vuelve a sensar hasta que el canal esté ocioso. Cuando un nodo v hoja recibe un mensaje (2, nivelu , v, Ew ) de un nodo w columna, lo que indica que v es padre de w: 1. v hace broadcast del mensaje (2, nivelv , padrev , Ev ) apenas el canal está ocioso (sin esperar) El proceso continua hasta que todos los nodos definen su estado. Si un nodo no descubre ningún hijo, automáticamente se vuelve nodo columna. Los tiempos de espera, T1v y T2v , se calculan localmente y de modo que los nodos con la mayor cantidad de energı́a residual hagan broadcast primero, por lo que se definen inversamente proporcional a Ev . Encaminamiento centrado en datos EAD intenta reducir y descartar información redundante, utilizando agregación de datos en cada nodo que no es hoja a lo largo de la ruta. Cada nodo no-hoja combina los datos producidos en todos los nodos en el sub-árbol del cual es raı́z, empleando alguna función de agregación (suma, promedio, media, máximo, etc.). De este modo, un paquete de información puede cambiar su contenido durante su recorrido desde un nodo hoja, pasando por nodos intermedios hasta alcanzar la raı́z del árbol. Figura 3.8: Ejemplo de agregación de datos camino al sumidero Incluso dos o más paquetes pueden ser fusionados o agregados en un único paquete que sigue la ruta al sumidero, como puede observarse en el ejemplo de la figura 3.8 (obtenida de [39]), donde la función de agregación obtiene el máximo valor. 73 3.5. DISEMINACIÓN DE INTERÉS Fases de operación EAD opera en rondas. La ronda consta de las siguientes dos fases: 1. Inicialización Durante esta fase se ejecuta el algoritmo EAD y se construye la columna vertebral de la red. 2. Transmisión En esta fase se transmiten los datos al sumidero. En cada ronda, al ejecutarse la inicialización, los nodos que no estén activos ya no serán agregados, y los nodos que han quedado huérfanos son reincorporados al árbol. Problemas que resuelve EAD permite ahorrar energı́a apagando el tranceptor de los nodos que no pertenecen a la columna de transmisión, extendiendo la vida de la red. Asimismo, los nodos en columna agregan los datos recibidos de sus hojas, descartando información redundante para reducir tráfico innecesario. Desventajas Para redes de sensores de gran escala, la ejecución de EAD puede necesitar mucho tiempo para propagarse a toda la red. En [39] se proponen dos enfoques para limitar la ejecución del algoritmo a un subconjunto de nodos de la red. Sucede también que sólo los nodos más cercanos al sumidero serán elegidos como gateways, lo que eventualmente conduce al particionamiento de la red [40]. 3.5. 3.5.1. Diseminación de interés Caracterı́sticas Como ya se ha dicho, dentro del paradigma de protocolos centrados en datos, se clasifican aquellos que direccionan la información por atributos de la misma, en lugar de direccionar el dispositivo fı́sico en donde fue generada. En esencia, la identidad del nodo que genera la información, o la del nodo que recolectará los datos es irrelevante [22]. El flujo de la información queda determinado por el interés especı́fico del receptor en lugar de la dirección del emisor [41]. El paradigma que naturalmente se ajusta a ese patrón de interacción es el de publisher/subscriber, donde todos los nodos están conectados a un software bus, en el cual se publican datos notificados a aquellos nodos que 74 CAPÍTULO 3. PROTOCOLOS DE RED previamente se han suscripto como interesados en esos datos [22]. El flooding o inundación es una técnica utilizada a menudo para diseminar información, que se basa en un enfoque reactivo donde cada nodo que recibe un paquete lo reenvı́a a todos sus vecinos. Es económico en un sentido, no hay descubrimiento y mantenimiento de rutas, ya que se asume una topologı́a de red plana [4]. La diseminación de interés es una técnica que surge a partir del análisis de las falencias del flooding. El desempeño de los algoritmos basados en inundación empeora rápidamente a medida que crece el tamaño de la red [4]. En la literatura se mencionan tres efectos no deseados [42]: Implosión de tráfico Como un nodo siempre envı́a el paquete recibido a sus vecinos, sin importar si alguno ya lo recibió, cuando un nodo recibe más de una copia de un paquete, ello significa que se han desperdiciado recursos en transmisiones redundantes. El problema se ilustra en la figura 3.9 (obtenida de [42]). En (1) el nodo a envı́a el paquete DATA1 a sus vecinos, b y c. En (2) el nodo b envı́a el paquete recibido DATA1 a su vecino, d. En (3) el nodo c también envı́a DATA1 al nodo d. El nodo d recibe dos veces el mismo paquete. Superposición Los nodos a menudo sensan áreas geográficas que se superponen. Cuando inundan a sus vecinos con los datos sensados, si dos nodos cercanos poseen un vecino común, éste puede recibir la información por duplicado. Como puede verse en la figura 3.10 (obtenida de [42]), tanto el nodo a como el nodo b sensan la zona 3, y por lo tanto, al inundar a su vecino común, el nodo c, éste recibe la información de la zona 3 por duplicado. Este problema es más difı́cil de resolver que la implosión, porque no solo depende de la topologı́a de la red, sino también del mapeo del dato sensado a los nodos. Ceguera de recursos Los nodos no modifican su actividad según la cantidad de energı́a disponible que poseen, produciendo un uso poco eficiente de los recursos de la red. Ası́, para optimizar el tráfico, en varios protocolos propuestos tempranamente para redes de sensores [18][42], la diseminación se apoya en un direccionamiento basado en atributos. El tráfico se negocia por medio del intercambio de meta-datos, o descriptores de alto nivel de la información disponible [42]. La diseminación de interés es un caso especial de la diseminación. Permite implementar consultas a la red, donde por ejemplo, un sumidero inicia una petición que especifica la información de interés por 75 3.5. DISEMINACIÓN DE INTERÉS Figura 3.9: Implosión Figura 3.10: Superposición medio de atributos de la misma. La petición se propaga por la red y posteriormente cuando un nodo dispone de información que cumple con los atributos, los datos se encaminan hacia el sumidero que originó la consulta. En la literatura a menudo se ilustra el paradigma centrado en datos con dos enfoques populares para la diseminación de información, Directed Diffussion y SPIN[43]. Directed Diffussion disemina consultas de datos a demanda y está orientado a aplicaciones de consulta de datos frecuente. SPIN es un protocolo conducido por eventos, orientado a aplicaciones de consulta única (one-shot query) [22], y se describe en la siguiente sección [25]. En [44][45] también se menciona a Fireworks, un protocolo que disemina interés o consultas en forma probabilı́stica. 76 CAPÍTULO 3. PROTOCOLOS DE RED 3.5.2. SPIN Introducción Para poder superar las deficiencias del flooding clásico (implosión, superposición y ceguera de recursos) , SPIN (Sensor Protocols for Information via Negotiation) incorpora dos técnicas innovadoras en su momento [42]: Negociación Para evitar la implosión y la superposición, los nodos negocian entre sı́ la transmisión de los datos, utilizando meta-datos para describir la información disponible. Adaptación a los recursos Cada nodo dispone de un administrador de recursos que mantiene registro del consumo de recursos. Cuando la energı́a es baja, el nodo se abstiene de participar de ciertas actividades, por ejemplo, el reenvı́o de información de terceros. SPIN es diseñado sobre la base de dos ideas clave. Primeramente, si bien intercambiar la información sensada puede ser una actividad costosa, intercambiar información sobre la información sensada no necesariamente lo es. En segundo lugar, los nodos deben adaptarse a cambios en su disponibilidad de recursos para extender su vida útil y la de la red. Sus autores establecen que se toman mejores decisiones de encaminamiento si se utilizan conocimientos sobre los datos de la aplicación y el estado de los recursos en cada nodo, además de la topologı́a de red [42]. Modelo de red SPIN asume una topologı́a de red plana, donde cualquier nodo sensor puede cumplir el rol de sumidero. Asimismo, cualquier nodo puede ser fuente de datos, es decir, genera información sensando el medio ambiente, y esta información debe ser diseminada a toda la red. El tamaño del dato que genera el nodo sensor es relativamente grande [22]. Operación Meta-datos sobre la información sensada SPIN no establece el formato que debe tener el meta-dato de la información generada. Sin embargo, se asume lo siguiente [42]: Si x es el meta-dato descriptor del dato X, entonces el tamaño de x en bytes es mucho menor que el tamaño de X Si dos datos son distinguibles, entonces sus meta-datos también lo son 77 3.5. DISEMINACIÓN DE INTERÉS De la misma manera, si dos datos son indistinguibles, entonces tienen la misma meta-representación (el mismo meta-dato) La ventaja de contar con una representación sucinta de los datos supera ampliamente el costo de almacenar, recuperar y mantener metadatos Son interesantes los dos ejemplos de meta-datos que se mencionan en [42]: Si los sensores cubren regiones geográficas que no se superponen, el meta-dato puede ser su identificador único Un sensor cámara podrı́a llegar a usar como meta-dato una coordenada de tipo (x, y, P hi) donde (x, y) es una coordenada geográfica, y P hi es la orientación Negociación Los nodos SPIN se comunican utilizando 3 tipos de mensajes [46]: ADV Aviso o anuncio de nuevos datos. Cuando un nodo dispone de nueva información, puede notificarlo transmitiendo un mensaje ADV que contiene meta-datos. REQ Petición de datos. Se utiliza para indicar que se desea recibir la nueva información. DATA Mensaje de datos. Un mensaje DATA contiene la información propiamente dicha, encabezada por el meta-dato. En [46] se presentan 4 protocolos SPIN, el más básico de ellos SPIN-PP (SPIN point-to-point) permite ilustrar el modelo de negociación. SPIN-PP se diseña optimizado para una red teórica que utiliza un medio de transmisión punto a punto, asumiendo que es posible que dos nodos A y B se comuniquen exclusivamente uno con el otro, sin interferir la comunicación con otros nodos. Bajo esta hipótesis, el costo de comunicación es lineal (comunicarse con n vecinos, es n veces el costo de comunicarse con un vecino). SPIN-PP trabaja en tres etapas, cada una de las cuales corresponde a uno de los mensajes descriptos anteriormente: 78 CAPÍTULO 3. PROTOCOLOS DE RED Anuncio El protocolo comienza cuando un nodo anuncia que dispone de nuevos datos para diseminar, enviando un mensaje ADV que contiene el metadato de la información generada. Petición Cuando un nodo vecino recibe un mensaje ADV, determina si ya ha recibido el mensaje o si ha requerido la información que describe el meta-dato. En caso negativo, responde enviando un mensaje REQ pidiendo la información. Datos El protocolo se completa cuando el nodo que lo inició responde el mensaje REQ con un mensaje DATA que contiene la información propiamente dicha. La ronda de negociación se ilustra en las figuras 3.11, 3.12, 3.13, obtenidas del trabajo original [42]. Observando la figura 3.11, la negociación comienza en 1), donde el nodo a anuncia que dispone de nuevos datos. En 2) el nodo b solicita la transmisión de la información nueva. Luego, en la figura 3.12, en 3) el nodo a transmite la información propiamente dicha al nodo b, encabezada por el meta-dato. En 4) el nodo b anuncia a sus vecinos que dispone de nuevos datos. Por último, en la figura 3.13, en 5) los nodos c y e solicitan la transmisión de los nuevos datos de b. Finalmente en 6) El nodo b transmite los datos a los nodos que lo han solicitado. Figura 3.11: Negociación SPIN pasos 1 y 2 79 3.5. DISEMINACIÓN DE INTERÉS Figura 3.12: Negociación SPIN pasos 3 y 4 Figura 3.13: Negociación SPIN pasos 5 y 6 Es importante aclarar que el protocolo no requiere que todos los nodos respondan a todos los mensajes. Por ejemplo, un nodo no enviará un mensaje REQ si ya dispone de la información que se anuncia en el mensaje ADV recibido. 80 CAPÍTULO 3. PROTOCOLOS DE RED SPIN-EC SPIN-EC[46] agrega lógica de conservación de energı́a bastante simple a SPIN-PP. Cuando un nodo observa que su energı́a residual se aproxima a un umbral inferior de carga de baterı́a, reduce su participación en el protocolo. Si el nodo recibe un dato nuevo, sólo iniciará la ronda de negociación si puede completar las tres etapas (anunciar y responder la petición). De la misma manera, si recibe un anuncio, sólo enviará la petición si tiene suficiente energı́a para recibir el dato. SPIN-BC SPIN-BC[46] es una versión de SPIN que agrega optimizaciones para cuando se utiliza un canal de transmisión compartido. Cuando un nodo envı́a un mensaje, éste es recibido por todos los nodos dentro del rango de alcance de la radio, sin importar el destino original de mensaje. Supresión de peticiones En SPIN-BC todos los nodos envı́an a la dirección de broadcast. Si algún nodo A dentro del rango del nodo B requiere el dato, bastarı́a con la petición de A para que todos los nodos en el rango reciban el dato. Si A direcciona la petición a B, todos los nodos en el rango sobreescuchan la petición. Entonces, un nodo C que también requiere el dato, se abstiene de enviar también su petición, es decir, suprime la petición. Ası́, cuando un nodo recibe un mensaje ADV, revisa si ya recibió o solicitó el dato. Si no lo hizo, establece un temporizador que expira en un tiempo al azar, elegido de manera uniforme en un intervalo predeterminado. Al expirar el temporizador el nodo envı́a un mensaje REQ a la dirección de broadcast especificando en la cabecera la dirección del nodo que originalmente anunció el dato. Cuando otros nodos reciben el mensaje REQ, cancelan sus propios temporizadores y suprimen su petición redundante. Otra diferencia importante es que el nodo que recibe peticiones de datos responderá la información a la dirección de broadcast una única vez. SPIN-RL SPIN-RL [46] es una versión confiable de SPIN-BC. Repetición de pedidos En SPIN-RL cada nodo mantiene registro de todos los anuncios recibidos. Si no recibe el dato transcurrido un cierto periodo de tiempo posterior al pedido enviado o suprimido, el nodo vuelve a pedir el dato. En la cabecera 81 3.6. CONSCIENCIA DE LA ENERGÍA del pedido indica como nodo origen cualquier vecino que haya anunciado el dato. Limite de reenvı́o de datos Si un nodo envı́a un dato, luego espera una cantidad de tiempo predefinida antes de volver a enviar el mismo dato. Si no hay confiabilidad en el enlace, y un anuncio se pierde, el protocolo no garantiza la completa difusión de los datos. Problemas que resuelve Una de las ventajas de SPIN es que los cambios en la topologı́a de la red son localizados ya que un nodo sólo necesita conocer a sus vecinos [11]. Desventajas No todos los protocolos o heurı́sticas de diseminación son confiables. Por ejemplo, SPIN no garantiza la entrega de datos, ya que si un nodo interesado en determinados datos se encuentra muy lejos de la fuente, y los nodos intermedios no tienen el mismo interés, la información no será entregada [11]. 3.6. 3.6.1. Consciencia de la energı́a Introducción Una de las limitaciones fundamentales de las redes de sensores es la capacidad de baterı́a. En [14] se plantea que en las redes móviles y ad hoc los protocolos se diseñan con el objetivo de minimizar la cantidad de saltos que atraviesa un paquete. A diferencia de estas redes, en WSN es crucial minimizar el consumo de energı́a empleado para la tarea de encaminamiento, o resolver el problema del encaminamiento de menor energı́a [12] a partir de diferentes enfoques de diseño, que se manifiestan en las métricas de energı́a utilizadas. En los trabajos analizados, especialmente los que presentan una taxonomı́a de algoritmos, la técnica de dar consciencia de la energı́a al encaminamiento no aparece como un paradigma en sı́ misma, sino que, la eficiencia en términos de energı́a se busca utilizando técnicas adicionales. El empleo de métricas de energı́a en el encaminamiento no siempre aparece en el diseño de protocolos que buscan eficientizar el uso de energı́a. Por ejemplo, en el caso de LEACH, el rol de cabecera dentro de un cluster de nodos es el que mayor consumo de transmisión tiene, por reenviar a 82 CAPÍTULO 3. PROTOCOLOS DE RED la estación base, la cual no pertenece al cluster y está a mayor distancia que los nodos locales. Este rol es rotado sobre la base de la energı́a residual que el nodo posee. Aquéllos nodos que tengan mayor energı́a disponible, tendrán más oportunidades de ser cabecera y entonces, el tráfico fluirá a la estación base siempre a través de los nodos con mayor energı́a residual. En el caso de EAD, que como LEACH es un protocolo jerárquico, el nivel de energı́a residual se utiliza de manera que los nodos con más energı́a tengan mayor probabilidad de ser los nodos de la columna vertebral de transmisión que el protocolo construye. Nuevamente, la información fluye a través de los nodos que poseen mayor energı́a En cambio, con los protocolos de encaminamiento geográfico, al encaminar de manera ávida, la eficiencia se intenta lograr de manera más indirecta. Al buscar rutas que utilicen la menor cantidad de saltos, se disminuye la cantidad de reenvı́os de un paquete, y con ello, la energı́a de transmisión utilizada. 3.6.2. Métricas de energı́a En [47] se presentan varias métricas de diseño que permiten construir rutas eficientes en términos de energı́a, y que aparecen muy frecuentemente en los protocolos para redes de sensores: 1. Minimizar la energı́a total de la ruta Con el enfoque de energı́a total mı́nima o MTE (Minimum Total Energy), se busca minimizar la energı́a de transmisión y recepción total consumida por un paquete para alcanzar el destino. Sucede que si todo el tráfico se encamina a través de las rutas más económicas, los nodos en esa ruta se agotan rápidamente, particionando la red [12], por lo que no se recomienda utilizar esta métrica en forma aislada. 2. Maximizar el tiempo hasta que la red se particiona Se determinan los nodos que al ser removidos causan particiones, y se trata de balancear la carga sobre los mismos. 3. Uniformizar el consumo de energı́a Se parte de la hipótesis de que todos los nodos son igualmente importantes, y se intenta asegurar que todos los nodos funcionen juntos la mayor cantidad de tiempo, que la carga sea balanceada entre todos. Por ejemplo, utilizando rutas compuestas por los nodos de mayor energı́a residual, evitando los nodos de menor capacidad restante, posponiendo al máximo posible la muerte del primer nodo. En [14] se aclara que aunque todos los nodos de la red funcionen en conjunto la mayor cantidad de tiempo posible, ello no implica que la utilización de la energı́a disponible será óptima. Una red densa podrı́a operar 83 3.6. CONSCIENCIA DE LA ENERGÍA efectivamente durante más tiempo sin el total de los nodos desplegados inicialmente, recuperando información con los nodos que queden activos. 4. Minimizar el costo por paquete Se seleccionan las rutas de menor costo total, que equivale a la suma de los costos de cada enlace que se utiliza. Si se define adecuadamente el costo del enlace, puede utilizarse la métrica con diferentes objetivos. Por ejemplo, si el costo depende de la energı́a residual, puede lograrse aumentar el tiempo hasta el particionamiento de la red. Ahora bien, en el material de investigación analizado se hallaron varios algoritmos que utilizan alguna de las métricas mencionadas en la decisión de encaminamiento. Algunos de ellos [48][49] no fueron desarrollados para WSN, sino para redes ad hoc. Otros fueron diseñados especı́ficamente para redes de sensores: SPIN (Sensor Protocols for Information via Negotiation) SPIN es una familia de protocolos [4] basados en la negociación para la diseminación de información. SPIN-EC es una variante que limita la participación del nodo en la secuencia de negociación según el nivel de energı́a que posee. Podrı́a decirse que utiliza una métrica de tipo 4, ya que un nodo es reluctante a participar del encaminamiento si su energı́a está por debajo de un nivel umbral [42]. FA (Flow Augmentation) Modifica periódicamente el tráfico dirigido a un nodo según el costo del enlace. Un enlace menos costoso es aquel que requiere menos energı́a de transmisión y aquel en donde el nodo destino posee una mayor cantidad de energı́a residual [12]. Este costo es una métrica de tipos 1 y 4. MIR (Maximum Information Routing ) Define el costo del enlace a partir de una métrica de cantidad de información que el nodo contribuye, penalizando el costo de aquellos nodos que más información generan, para evitar que sean incluidos frecuentemente en la ruta [14]. Este algoritmo utiliza una métrica de tipo 4. Keep Connected Define el costo del enlace a partir de la cantidad de componentes conexas que resultarı́an si el nodo agota su energı́a y muere. Aquel nodo 84 CAPÍTULO 3. PROTOCOLOS DE RED que al morir, produce una mayor cantidad de particiones es más importante y debe evitarse incluirlo en la ruta [13]. Este algoritmo utiliza una métrica de tipo 2. EBTA-WSN (Energy-Balanced Transmission Algorithm) Selecciona la ruta de menor costo total de transmisión, utilizando nodos cuya energı́a residual está por encima del promedio de la red [9], es decir, utiliza una métrica de tipos 1 y 4. Flow Augmentation, propuesto en [12] incluye en su diseño el objetivo de maximizar la vida útil de la red. 3.6.3. Flow Augmentation Introducción El algoritmo de aumentación de flujo propuesto en [12] es un encaminamiento de camino más corto, donde el costo del enlace es una combinación del consumo de energı́a de transmisión y recepción, y los niveles de energı́a residual en los dos nodos extremos. En el trabajo se calcula la solución óptima teórica al problema de maximizar la vida de la red, planteado como un problema de programación lineal, y atacando el problema equivalente de maximizar la cantidad de información transferida para una tasa de generación de datos constante. La solución óptima se compara con la heurı́stica diseñada. La heurı́stica consiste en calcular la ruta de menor costo. En lugar de utilizar como costo eij la energı́a consumida cuando se transmite el eij paquete por el enlace ij, se utiliza REi1−eij y RE , donde REi es la energı́a rei sidual del nodo i. Mediante el algoritmo de camino más corto Bellman-Ford distribuido, se halla la ruta de menor costo [11]. Modelo de red y tipo de aplicación El modelo de red asume un conjunto de nodos estáticos, desplegados al azar, y cuya energı́a es empleada mayormente en la transmisión y recepción de datos. Los nodos generan información que debe ser entregada a un conjunto de nodos gateway, siendo posiblemente encaminada a través de múltiples saltos. En [50] se analizan dos escenarios o tipos de aplicación. En un escenario se asume una tasa de generación de información constante, como sucede con el tipo de aplicación de reporte periódico de datos. En un segundo escenario, un objetivo atraviesa la región de despliegue haciendo que los sensores que lo detectan generen cierta cantidad de información por segundo, lo que corresponde al tipo de aplicación de seguimiento. 85 3.6. CONSCIENCIA DE LA ENERGÍA Costo del enlace Se elige el nombre Aumentación de Flujo porque el algoritmo aumenta o disminuye el tráfico dirigido a un nodo, según el costo actualizado del enlace a utilizar. Como el costo del enlace se define en función de la energı́a de transmisión, pero también en función de la energı́a residual del nodo a utilizar, el efecto es que al comienzo, cuando todos los nodos disponen de energı́a, se encamina minimizando la energı́a total consumida por la ruta. A medida que la energı́a residual disminuye, el algoritmo trata de evitar los nodos que dispongan de la menor cantidad de energı́a. El costo del enlace se define como: x costoij = (eij t ) 1 · REi −x2 · IEi x3 + (eij r )x1 · REj −x2 · IEj x3 etij es la energı́a de transmisión consumida al utilizar el enlace (i,j) erij es la energı́a de recepción consumida al utilizar el enlace (i,j) IEi y IEj son las energı́as iniciales en los nodos i, j respectivamente REi y REj son las energı́as residuales x1 , x2 y x3 son factores de peso que permiten variar la manera en que se considera el nivel de energı́a residual Ası́, IEi REi IEj REj IEi REi + IEj REj se logra utilizando x1 = 0 y x2 = x3 = 1. es el inverso de energı́a residual en i, relativa al total. es el inverso de energı́a residual en j, relativa al total. De esta manera, a menor energı́a residual, mayor es el costo del enlace. Fases de operación En [12] no se menciona una fase de arranque, sino únicamente un régimen que comprende varios pasos ejecutados en forma iterativa. En cada iteración: commodity: un conjunto de nodos fuente y nodos destino 1. Cada nodo origen calcula la ruta más económica para cada nodo destino que pertenece al commodity c 2. Si algún commodity no puede hallar una ruta a su destino, entonces parar. 86 CAPÍTULO 3. PROTOCOLOS DE RED 3. Aumentar el flujo en cada ruta de menor costo Las rutas de menor costo serán utilizadas hasta la próxima iteración. Como se asume una tasa constante de generación de información, puede conocerse la cantidad de información enviada en cada iteración 4. Actualizar los valores de energı́a residual Dado que se conoce la cantidad de información transmitida en cada iteración, puede conocerse también la cantidad de energı́a consumida y valor de energı́a residual resultante Aunque los resultados de simulaciones muestran que el algoritmo tiene un desempeño cercano al óptimo, la mayorı́a de las veces, tanto para tasas de generación de información fijas como para un escenario de detección de un objetivo en movimiento, el desempeño del algoritmo depende las rutas de generación de información. Figura 3.14: Desempeño no óptimo de FA Por ejemplo, consideremos la red de la figura 3.14 (obtenida de [12]), donde cada nodo posee cuatro unidades de energı́a, y se requiere una unidad de energı́a para transmitir un paquete, utilizando cualquier enlace. Si el nodo b genera cuatro paquetes de información (Qb = 4), el algoritmo los divide entre los nodos d y e, empleando dos unidades de energı́a en cada nodo. Luego, el nodo a genera ocho paquetes de información (Qa = 8), y el algoritmo los divide entre los nodos c y d, pero la energı́a en esos nodos ahora no es suficiente y quedan dos paquetes de información sin entregar. Fácilmente puede verse que si los paquetes de b sólo se encaminaran a través de e, podrı́a entregarse toda la información generada. Desventajas En [12] se aclara que el protocolo no es escalable ni aplicable a grandes redes debido a las limitaciones inherentes al encaminamiento dirigido por tablas. Cabe señalar que esta restricción surge de la topologı́a planteada, cada 87 3.6. CONSCIENCIA DE LA ENERGÍA nodo debe mantener las rutas más económicas actualizadas hacia múltiples destinos (gateways). De igual manera, si se requiere soportar la comunicación de peticiones de la estación base a un conjunto de nodos, cada nodo deberá mantener el costo de las rutas en tablas que crecerán en proporción a la densidad de la red. 88 Capı́tulo 4 Diseño de la simulación con Omnet++ 4.1. 4.1.1. ¿Qué es Omnet++? Introducción Omnet++ es una herramienta de simulación de redes, de eventos discretos, modular y orientada a objetos. Su arquitectura genérica ha permitido que sea utilizada para estudiar problemas de diversos dominios, entre ellos, el modelado de redes de comunicación inalámbrica y protocolos. La herramienta no es un simulador de algo en particular, sino que provee la infraestructura para escribir simulaciones. Los modelos son ensamblados a partir de componentes reutilizables llamados módulos. Los módulos se comunican entre sı́ por medio del pasaje de mensajes a través de compuertas y conexiones, o directamente. Los módulos pueden tener parámetros para personalizar su comportamiento o parametrizar la topologı́a del modelo de red. Al nivel más bajo de la jerarquı́a de módulos se tienen los módulos simples que encapsulan el comportamiento, se programan en C++ utilizando la librerı́a de simulación. Las simulaciones pueden correrse en varios tipos de ambiente. El ambiente gráfico animado es útil para demostraciones y depuración. El ambiente de lı́nea de comandos es mejor para ejecución por lotes. La herramienta completa es probada en los sistemas operativos más comunes (Linux, MAC OS/X y Windows), y también soporta simulaciones en paralelo distribuidas. Para este trabajo no se utilizó esta funcionalidad, y las simulaciones corrieron en una única computadora con Windows 7. Omnet++ es gratis para uso académico y sin fines de lucro [51], y OMNEST es su versión comercial. 89 4.1. ¿QUÉ ES OMNET++? 4.1.2. Conceptos de modelado Un modelo de Omnet++ consiste de módulos que se comunican a través del pasaje de mensajes. Los módulos que actúan se llaman módulos simples y se escriben en C++ utilizando la librerı́a de simulación. A su vez, los módulos simples pueden agruparse en módulos compuestos, creando una jerarquı́a. El modelo completo se llama red y es un modelo compuesto. Los mensajes son enviados por conexiones que comunican los módulos, y pueden contener cualquier información. Tı́picamente, son enviados por módulos simples a través de compuertas. Las compuertas son las interfaces de entrada y salida de los módulos: los mensajes se envı́an a través de compuertas de salida y llegan por compuertas de entrada. Una compuerta de entrada y una compuerta de salida se enlazan por una conexión. Se pueden definir tipos de conexión con propiedades especı́ficas (retardo de propagación, tasa de transferencia, tasa de errores de bit), modelando un canal. 4.1.3. Descripción de red La estructura del modelo de simulación se describe con el lenguaje NED (Network Description). Con este lenguaje se declaran módulos simples y módulos compuestos. Un módulo compuesto puede ser etiquetado como red, es decir, como modelo de simulación auto-contenido. Por ejemplo, se puede definir una red compuesta por nodos encaminadores, donde en cada nodo hay una aplicación corriendo, que genera paquetes de datos transmitidos a través de un canal (ver figura 4.1, obtenida del manual de la herramienta [51]). 90 CAPÍTULO 4. DISEÑO DE LA SIMULACIÓN CON OMNET++ Figura 4.1: Vista de diseño de una red Omnet++ El nodo es un módulo compuesto por los submódulos que modelan la aplicación y el encaminamiento (capa fı́sica, acceso al medio y capa de red). La figura 4.2 es la vista de diseño de un nodo MiXiM (ver sección 4.2.1). Figura 4.2: Diseño del nodo como módulo compuesto 91 4.1. ¿QUÉ ES OMNET++? 4.1.4. Conceptos de simulación Como ya se ha dicho, los módulos que actúan se llaman módulos simples y se escriben en C++ utilizando la librerı́a de simulación. Los siguientes conceptos de simulación de eventos discretos permiten entender como se diseñan los módulos simples. Simulación de eventos discretos Un sistema de eventos discretos es aquel en el que los cambios de estados suceden en tiempo discreto, y el evento emplea cero cantidad de tiempo en suceder. Se asume que nada interesante sucede entre dos eventos consecutivos, es decir, no se produce ningún cambio de estado. Este tipo de sistema puede ser modelado usando simulación de eventos discretos. El tiempo en el que el evento ocurre se llama marca de tiempo y en Omnet++ se llama tiempo de llegada (ya que en la biblioteca de clases la palabra marca de tiempo esta reservada para un atributo asignable en la clase evento). El tiempo en el modelo se llama tiempo de simulación, tiempo de modelo o tiempo virtual en oposición al tiempo real, que se refiere al tiempo durante el cual el programa ha estado corriendo, o el tiempo de CPU que se refiere a cuánto tiempo de CPU ha consumido. Eventos En Omnet++ los eventos son representados por mensajes, es decir, por una instancia de la clase cMessage o una subclase de ésta. Los mensajes son enviados desde un módulo a otro, lo que significa que el lugar donde “el evento ocurre” es en el módulo destino, y el tiempo de modelo en el que ocurre es el tiempo de llegada del mensaje. Los eventos se consumen en el orden que da el tiempo de llegada. Si el tiempo de llegada es el mismo, el orden lo da la prioridad del mensaje. Si la prioridad es la misma, el orden es aleatorio. El ciclo de eventos La simulación de eventos discretos mantiene una lista de eventos futuros en una estructura comúnmente llamada FES (Future Event Set). En Omnet++ se implementa como un montı́culo binario, la estructura de datos más utilizada para este propósito. El simulador trabaja de acuerdo al pseudocódigo del algoritmo 1. El paso de inicialización construye las estructuras de datos que representan el modelo a simular, ejecuta el código de inicialización que se ha redefinido, e inserta eventos iniciales en la lista de eventos futuros. El bucle subsiguiente consume eventos de la lista y los procesa. Los eventos se 92 CAPÍTULO 4. DISEÑO DE LA SIMULACIÓN CON OMNET++ Algoritmo 1: Ciclo de evento 1 2 3 4 5 6 7 inicializar (construye el modelo e inserta eventos iniciales) while FES no vacı́a Y simulación no completa do obtener primer evento de FES t := marca de tiempo de este evento procesar evento (inserta nuevos eventos o borra eventos de FES) end terminar simulación (escribir resultados estadı́sticos, etc.) procesan en orden estricto dado por la marca de tiempo, para mantener la causalidad. Procesar eventos involucra la invocación de código provisto por el módulo creado. La simulación se detiene cuando no hay más eventos o cuando se alcanza el lı́mite de tiempo de modelo o CPU. En ese momento, antes de terminar la ejecución, generalmente se graban estadı́sticas en archivos de salida. 93 4.1. ¿QUÉ ES OMNET++? 4.1.5. Ambiente de desarrollo El IDE (ambiente integrado de desarrollo) de Omnet++ está basado en la plataforma Eclipse [52], y la extiende con editores, vistas y asistentes. Este IDE provee una Perspectiva de Simulación (figura 4.3) para trabajar con los tipos de archivo de Omnet++, que deben ser incluidos en un proyecto de simulación. Figura 4.3: Perspectiva de Simulación de Omnet++ en Eclipse 4.1.6. Definición de un módulo simple Como se ha dicho, la simulación ejecuta módulos simples. Un módulo simple es una clase C++ que debe extender de una clase módulo simple de base, y redefinir su comportamiento. La clase debe registrarse con Omnet++. Los módulos simples son instanciados por el kernel de simulación, por ello la firma del constructor debe tener una forma predefinida. Debe seguirse la siguiente convención de inicialización y finalización: constructor El constructor es invocado para crear el módulo, como parte de la 94 CAPÍTULO 4. DISEÑO DE LA SIMULACIÓN CON OMNET++ inicialización del módulo propiamente dicho. En ese momento, todo el modelo esta siendo construido por lo que no pueden hacerse muchas cosas desde el constructor. Por convención, en el constructor se asignan todas las variables puntero de la clase del módulo a NULL. inicializador El método initialize() es invocado justo antes de comenzar la ejecución de la simulación, cuando todo el modelo está listo. Por convención, en el método initialize() se realizan todas las tareas de inicialización: leer parámetros, inizalizar variables, reservar memoria, crear e inicializar timers. destructor El destructor siempre se llama al final, sin importar cómo terminó la simulación. Se puede asumir que, en ese momento, el modelo de simulación está casi destruido por completo. Por convención en el destructor se libera la memoria reservada, se eliminan los temporizadores creados (con la función cancelAndDelete(msg)). finalizador El método finalize() sirve para grabar estadı́sticas. Solamente se invoca cuando la simulación ha terminado normalmente. Si la simulación se detiene por error, no será invocado. Por convención, en este método se graban estadı́sticas, y no se deben liberar objectos ni ejecutar tareas de limpieza. Para definir el comportamiento dinámico del módulo simple, se debe redefinir el método handleMessage, invocado con un mensaje como parámetro cada vez que el módulo recibe un mensaje. Se espera que el método procese el mensaje, y retorne. Durante la ejecución de este método no transcurre tiempo de simulación, sólo entre llamadas. La idea es que con cada evento (llegada de mensaje) se invoca una función definida en el módulo. Dentro de la función pueden utilizarse otras funciones predefinidas para enviar mensajes a otros módulos, programar un evento (enviar un mensaje a sı́ mismo), y borrar un evento programado. Los modelos de capas de protocolos tienden a compartir una estructura similar, porque reaccionan a tres tipos de eventos fundamentales: mensajes que llegan de capas superiores (la aplicación), mensajes que llegan de capas inferiores (la red) y varios temporizadores (auto-mensajes). Generalmente, surge el patrón de modelado que se ilustra en el fragmento de código 4.1: 95 4.1. ¿QUÉ ES OMNET++? Fragmento de código 4.1: Modelo de protocolo de capa 1 2 3 4 5 6 7 8 9 10 11 class FooProtocol: public cSimpleModule { protected: //state variables //... virtual void processMsgFromHigherLayer(cMessage *packet); virtual void processMsgFromLowerLayer(FooPacket *packet); virtual void processTimer(cMessage *timer); virtual void initialize(); virtual void handleMessage(cMessage *msg); }; 96 CAPÍTULO 4. DISEÑO DE LA SIMULACIÓN CON OMNET++ 4.1.7. Simulación Una vez que se han escrito los fuentes se compila el proyecto obteniendo un ejecutable. La simulación se realiza corriendo el ejecutable generado, y puede ser lanzada desde el IDE. Para ello, se define una configuración de ejecución, especificando algunos detalles como (ver figura 4.4): directorio de trabajo es el directorio base del cual dependen otras configuraciones ejecutable la ruta del ejecutable de la simulación, relativa al directorio del espacio de trabajo archivos de inicialización archivos que contienen conguraciones de parámetros modificables de la red y los módulos Figura 4.4: Configuración de ejecución en Omnet++ 4.1.8. Herramientas de análisis Gráficos de secuencia Un archivo de log de eventos contiene la bitácora de mensajes enviados durante la simulación, y el detalle de eventos disparados por su envı́o o recepción, incluyendo mensajes enviados entre módulos y temporizadores. Se puede controlar qué módulos graban en el log, la cantidad de datos que se 97 4.1. ¿QUÉ ES OMNET++? graban, el comienzo y fin de la grabación. Los gráficos de secuencia despliegan el archivo de log en forma gráfica, permitiendo visualizar la causalidad de los eventos. El log de eventos también se puede visualizar en forma tabular. Los eventos pueden ser filtrados por diferentes criterios, incluyendo por módulo, tipo de mensaje y por relación de causalidad. La figura 4.5 es un fragmento de secuencia de las simulaciones del protocolo SPIN. Figura 4.5: Gráfico de secuencia en Omnet++ Análisis de resultados Los resultados de la simulación son grabados como escalares, vectores e histogramas. Luego, pueden aplicarse métodos estadı́sticos para extraer información relevante y obtener una conclusión. En el proceso generalmente se filtran y transforman datos. Desde la versión 4 de Omnet++, la herramienta de análisis estadı́stico se ha integrado a Eclipse. Los filtros y transformaciones de datos se graban en archivos de análisis que permiten reproducir instantáneamente el post-proceso sobre resultados de nuevas corridas. Con el editor de análisis de Eclipse se navegan los vectores y escalares, se definen datasets a partir de expresiones de filtro, y estos se despliegan en gráficos 98 CAPÍTULO 4. DISEÑO DE LA SIMULACIÓN CON OMNET++ de barras, curvas, histogramas y de dispersión. En la figura 4.6 se muestra la solapa de navegación de resultados, donde se han filtrado los escalares para visualizar solamente la tasa de éxito de cada simulación. Luego, en la figura 4.7 se presenta la tasa de buen éxito en un gráfico de barras. Figura 4.6: Navegador de vectores y escalares en Omnet++ Figura 4.7: Gráfico de barras en Omnet++ 99 4.2. DISEÑO DE LA RED Desempeño Omnet++ ha sido comparado con NS2 y se han recogido métricas que indican que emplea menos memoria y un menor tiempo de ejecución [53][54]. También se ha evaluado la exactitud de los resultados obtenidos con Omnet++ en simulaciones de WSN[55], observándose que cuanto mayor es la frecuencia de muestreo, la cantidad de eventos que debe manejar el nodo aumenta fuertemente. A una frecuencia de muestreo de 5 ms, los resultados de las simulaciones muestran una distancia significativa respecto de los resultados obtenidos en un campo de pruebas real. A partir de una frecuencia de 50 ms, esta distancia es menos evidente, y a partir de los 500 ms es despreciable. 4.2. Diseño de la red 4.2.1. MiXiM 2.1 MiXiM [56] es un framework de modelado para Omnet++, creado para redes inalámbricas fijas y móviles (redes inalámbricas de sensores, redes de área corporal, redes vehiculares, etc). Ofrece modelos detallados de propagación de ondas, estimación de interferencias, consumo del tranceptor, y protocolos de acceso al medio. Una red MiXiM básica se compone de los siguientes elementos: módulo de definición de la red módulo de definición del host módulo de interfaz de red, que define la placa de red del host la configuración de la capa fı́sica, modelo analógico (cálculo de atenuación) y decider (clasificación de ruido y cálculo de errores de bit). la configuración de la simulación La figura 4.2 en la sección 4.1.3 es la vista de diseño de un nodo MiXiM. Fragmento de código 4.2: Definición de red 1 2 3 4 5 6 7 8 network WSNRouting { parameters: // x size of the area the nodes are in (in meters) double playgroundSizeX @unit(m); // y size of the area the nodes are in (in meters) double playgroundSizeY @unit(m); // z size of the area the nodes are in (in meters) double playgroundSizeZ @unit(m); 100 CAPÍTULO 4. DISEÑO DE LA SIMULACIÓN CON OMNET++ double numHosts; // total number of hosts in the network 9 10 submodules: world: BaseWorldUtility { parameters: playgroundSizeX = playgroundSizeX; playgroundSizeY = playgroundSizeY; playgroundSizeZ = playgroundSizeZ; @display("p=0,0;i=misc/globe"); 11 12 13 14 15 16 17 18 } connectionManager: ConnectionManager { } 19 20 21 22 node[numHosts]: Host802154_2400MHz { parameters: numHosts = numHosts; } 23 24 25 26 27 connections allowunconnected: 28 29 } En la definición de red 4.2 se incluyen parámetros de definición de las dimensiones del terreno, los submódulos de utilidad global y de administración de conexiones, y el tipo de host que compone la red. El administrador de conexiones verifica si dos hosts pueden oı́rse uno al otro y actualiza sus conexiones de acuerdo a eso. Si dos hosts están conectados significa que pueden recibir algo de cada uno, pero no significa que pueden entenderse. Si dos hosts no están conectados, están fuera del rango de interferencia y no recibirán ninguna señal uno del otro. Es muy importante diferenciar el rango de interferencia del modelo de comportamiento de la radio. El rango de interferencia define la distancia a partir de la cual un nodo alejado deja de existir para el tranceptor. El modelo analógico y el decider, junto con los parámetros del módulo de interfaz de red, determinan la intensidad de señal combinada y si un frame es recibido o no. El decider y los modelos analógicos se definen con un archivo xml que configura parámetros propios. En el módulo de interfaz se debe especificar qué archivo contiene esta configuración. Fragmento de código 4.3: Configuración del decider 1 2 3 4 5 <?xml version="1.0" encoding="UTF-8"?> <root> <AnalogueModels> <AnalogueModel type="BreakpointPathlossModel"> <!-- IEEE 802.15.4 path loss channel model --> 101 4.2. DISEÑO DE LA RED 6 7 8 9 10 11 12 13 14 15 16 17 18 <parameter name="alpha1" type="double" value="2"/> <parameter name="L01" type="double" value="40.2"/> <parameter name="breakpointDistance" type="double" value="8.0"/> <parameter name="alpha2" type="double" value="3.3"/> <parameter name="L02" type="double" value="58.8"/> <parameter name="carrierFrequency" type="double" value="2.4E+9"/> </AnalogueModel> </AnalogueModels> <Decider type="Decider802154Narrow"> <!--Length of Start Frame Delimiter (used to compute probability of successful synchronization)--> <parameter name="sfdLength" type="long" value="8"/> 19 <!--minimum possible bit error rate (BER floor)--> <parameter name="berLowerBound" type="double" value="1e-8"/> 20 21 22 <!--modulation type--> <parameter name="modulation" type="string" value="oqpsk16"/> 23 24 25 26 27 </Decider> </root> En el fragmento de código 4.3 es un ejemplo del contenido del archivo xml. En este ejemplo, se declara un modelo analógico de tipo BreakpointPathlossModel, que representa el modelo de atenuación definido en el estándar IEEE 802.15.4. Como puede observarse, pueden declararse más de un modelo analógico. Luego se declara el tipo de decider, Decider802154Narrow, que clasifica la señal en bits o ruido, según el modelo BER definido también en el estándar IEEE 802.15.4. En la tabla 4.1 se enumeran la mayorı́a de los módulos de MiXiM utilizados para modelar la red. 4.2.2. Modelo de dispositivo Los nodos de la red están representados por un módulo compuesto por varios submódulos: battery Permite definir una capacidad inicial de baterı́a, y que la radio pueda consumir energı́a descontando de esa capacidad. nic Define el comportamiento de la interfaz de red. Es a su vez un módulo compuesto por el módulo de capa de enlace y el módulo de capa fı́sica. El modelo de interfaz utilizado es IEEE 802.15.4-2006 y está implementado por el módulo ic802154 TI CC2420, descripto más adelante. 102 CAPÍTULO 4. DISEÑO DE LA SIMULACIÓN CON OMNET++ Módulo WSNRouting Host802154 2400MHz BatteryStats SimpleBattery BaseMobility Nic802154 TI CC2420 CSMA802154 PhyLayerBattery Decider802154Narrow BreakPointPathlossModel Propósito Definición de red para simulación de redes inalámbricas de sensores. Definición de host que utiliza un tranceptor 802.15.4 a 2.4 GHz. Módulo de recolección de estadı́sticas sobre baterı́a. Modelo simple de baterı́a. Administrador de información básica de movilidad y posición. Éste módulo define un patrón de movilidad estático (sólo posición). Modelo de interfaz de red Texas Instruments CC 2420 IEEE 892.15.4 CSMA. Enlace IEEE 802.15.4-2006 CSMA no ranurado. Capa fı́sica que consume baterı́a. Decider para clasificación de señales 802.15.4 de banda estrecha Implementación del modelo de atenuación IEEE 802.15.4 Cuadro 4.1: Módulos MiXiM utilizados net Define el protocolo de red que utiliza el dispositivo. En este trabajo se desarrollaron nuevos módulos de red para tres protocolos. app Define el comportamiento de la aplicación que utiliza los servicios de red. Se desarrollaron dos nuevos módulos para simular una aplicación de consulta. Interfaz de red IEEE 802.15.4 El módulo Nic802154 TI CC2420 implementa una interfaz de red Texas Instruments CC 2420 802.15.4 usando el protocolo de enlace CSMA especificado en el estándar IEEE 802.15.4-2006. El modelo CSMA802154 fue validado independientemente en una red inalámbrica de sensores de prueba [57], aunque la validación fue realizada con una cantidad de nodos muy pequeña. Capa fı́sica El módulo de capa fı́sica permite configurar la sensibilidad y potencia de transmisión. El tranceptor del chip CC 2420 soporta los siguientes niveles 103 4.2. DISEÑO DE LA RED de potencia de transmisión según las especificaciones[58]: Figura 4.8: Potencia de transmisión del tranceptor TI CC2420 La máxima potencia de transmisión es 1 mW, y es la que se utilizó para la simulaciones. No se ha podido hallar el alcance de la radio en la hoja de datos del tranceptor [58]. En la documentación del nodo sensor MICAz de la compañı́a MEMSIC [24] se especifica que el alcance del tranceptor es de 75 a 100 m en exteriores, y de 20 a 30 m en interiores. Se configuró un valor de sensibilidad de -95 dBm [58]. El módulo de capa fı́sica utilizado calcula la atenuación utilizando el modelo establecido en la sección E.5.3 del estándar IEEE 802.15.4-2006 [31]. Esta capa utiliza el módulo decider Decider802154Narrow para filtrar las señales recibidas según su intensidad, calcular los errores de bits y clasificar las señales en ruido o frames. En la versión 2.1 de MiXiM este módulo ignora la sensibilidad del tranceptor, por lo que dos nodos que están a una distancia bastante mayor que la de la especificación (recibiendo una señal con una potencia mucho menor a la que el tranceptor es sensible), pueden conectarse en la simulación. Este comportamiento fue modificado para que la sensibilidad sea tenida en cuenta. Se aclara que para las simulaciones realizadas se deshabilitó el ruido térmico. Modelo de baterı́a La baterı́a es un módulo independiente, y define cuál es la capacidad inicial y el voltaje. La capa fı́sica de la interfaz Nic802154 TI CC2420, PhyLayerBattery, descuenta energı́a de la baterı́a según tipos de actividades definidas: dormir, recepción, transmisión, cambio de modo, y actividad del decider. El fragmento de código 4.4 muestra la definición de las posibles actividades en el 104 CAPÍTULO 4. DISEÑO DE LA SIMULACIÓN CON OMNET++ módulo. Fragmento de código 4.4: Actividades de capa fı́sica 1 class PhyLayerBattery : public PhyLayer{ 2 3 4 5 6 7 8 9 10 enum Activities { SLEEP_ACCT=0, RX_ACCT, TX_ACCT, SWITCHING_ACCT, DECIDER_ACCT, }; ... 4.2.3. Topologı́a Si bien en [59] se utilizan tres tipos de nodo, sensor, encaminador y sumidero; en el trabajo [60] sólo se observan dos tipos, sensor y sumidero. El modelo de red seleccionado para este trabajo está formado por un sumidero único y un conjunto de nodos sensores, todos estáticos. Se implementa con un único tipo de nodo sensor-encaminador, y uno de los nodos se configura como sumidero. Para ese nodo sumidero no se contabilizan paquetes ni consumo de energı́a. La selección del nodo sumidero se hace especificando su dirección de red, en el archivo de configuración de simulación, con la lı́nea del fragmento de código 4.5: Fragmento de código 4.5: Configuración del nodo sumidero 1 **.node[*].net.sinkAddress = 0 4.2.4. Tamaño del terreno y densidad de nodos En las simulaciones de [59] se modela el algoritmo encaminador de manera aislada, excluyendo el canal, por lo cual no se especifica un tamaño de terreno. En [60] tampoco se especifica el tamaño de la región cubierta. En omnet++ se pueden especificar las dimensiones en metros de un espacio tridimensional con forma de cubo, en la configuración de la simulación, con las lı́neas del fragmento de código 4.6: Fragmento de código 4.6: Dimensiones del terreno 105 4.2. DISEÑO DE LA RED 1 2 3 **.playgroundSizeX = 500 m **.playgroundSizeY = 500 m **.playgroundSizeZ = 10 m Para las simulaciones se utilizó un terreno de 500 m de lado. En [60], para probar M-SPIN se utilizó un tamaño de red de 10 a 60 nodos, y en [59] se probó SAFM en despliegues de 80 a 1280 nodos. El modelo de radio asume un alcance de 75-100 m en terreno abierto. Con un alcance de 75 m de nodo a nodo, y un despliegue predefinido estilo grilla, con un nodo en cada vértice de cuadrados de 75 m de lado, la cantidad mı́nima de nodos sensores para cubrir un terreno de 500 metros de lado es de: 500×500 75×75 = 44 nodos Pero este cálculo se aplica cuando se puede hacer un despliegue preciso. Cuando el despliegue es al azar, para cubrir un área cuadrada con alta probabilidad, la cantidad de nodos es la siguiente [61]: r = rango de transmisión de los nodos a = longitud de lado de un área cuadrada de a × a n = ( ar )2 m = Θ(n ln n) cantidad de nodos para cubrir el área cuadrada Dimensiones del terreno (m2 ) 500 Cantidad de nodos 80 Cuadro 4.2: Densidad mı́nima de nodos Para cubrir las dimensiones del terreno de prueba se necesitan 80 nodos. 4.2.5. Modelo de despliegue En ninguno de los trabajos [60][59] se especifica una posición fı́sica para el sumidero. En lugar de ello, se define con qué nodos sensores tiene conectividad. Para las simulaciones de este trabajo, los nodos sensores son desplegados al azar, excepto por el sumidero, cuya posición es cercana a algún punto en el perı́metro del terreno definido. Las posiciones son generadas aleatoriamente por el simulador, y por ello, puede que algún nodo quede desconectado de la red y no participe de la consulta. 106 CAPÍTULO 4. DISEÑO DE LA SIMULACIÓN CON OMNET++ 4.2.6. Modelo de aplicación El tipo de aplicación modelado es el de consulta iniciada por el sumidero, el patrón de tráfico es episódico y los requerimientos de latencia no son estrictos. Se definen dos módulos de aplicación, uno para el sumidero y otro para el resto de los nodos. La aplicación del sumidero envı́a un mensaje que contiene una tarea de sensado a diseminar entre los nodos. La aplicación de los nodos recibe una tarea de sensado proveniente del sumidero, y responde con los datos generados. La tarea de sensado contiene un número de mediciones a tomar y un perı́odo de tiempo entre cada una. Para las estadı́sticas, solo se contabilizarán los paquetes de datos generados enviados por los nodos, y se omiten los paquetes que envı́a el sumidero con la tarea. Los nodos que han quedado sin conexión a sumidero, no generan datos, porque nunca reciben la tarea. 107 4.3. MÉTRICAS DE EVALUACIÓN 4.2.7. Resumen del diseño Caracterı́stica Interfaz de red Topologı́a Terreno Despliegue Modelo de aplicación Descripción TI CC 2420 802.15.4 banda estrecha CSMA no ranurado 1 sumidero y 79 sensores 500 m2 al azar Consulta Cuadro 4.3: Resumen de la red a simular 4.3. Métricas de evaluación Puede decirse que las métricas para evaluar protocolos estarán relacionadas con los requerimientos de la aplicación para la cual se diseñan. En [26] se sugiere que no todas las métricas son útiles para todos los tipos de aplicación. En algunos artı́culos se da una definición general de la métrica, sin detallar cómo se mide. Del análisis de los trabajos de generalización [26][27][4] y de las evaluaciones de protocolos [62][39][63][14], surge el conjunto de métricas enumerado en las siguientes secciones. 4.3.1. Vida útil del sistema Tiempo de vida Dadas las limitaciones de energı́a de los nodos de de las WSNs, se busca optimizar los protocolos para extender el tiempo que dura la red en operación, es decir, que puede proveer información del fenómeno sensado. Puede tomarse alguna de las siguientes medidas genéricas: a) Tiempo hasta que un nodo agota su energı́a T1 [segundos] b) Tiempo hasta que la mitad de los nodos agotan su energı́a T n2 [segundos] 108 CAPÍTULO 4. DISEÑO DE LA SIMULACIÓN CON OMNET++ c) Tiempo hasta que algún nodo queda aislado d) Tiempo hasta que algún nodo no posee ruta al sumidero e) Tiempo hasta que la red queda particionada Tpartition [segundos] O alguna medida especı́fica de la aplicación: f) Tiempo hasta que algún requerimiento de calidad de servicio ya no puede garantizarse Esta métrica se define sobre la base de otra; es el tiempo hasta que una métrica de calidad de servicio supera o cae debajo de un umbral. En [64] se menciona que la cobertura puede utilizarse un parámetro para medir la calidad de servicio en aplicaciones de detección de eventos. Entonces, la vida útil podrı́a también definirse, por ejemplo, como el tiempo hasta que la cobertura cae al 80 %. TCov80 [segundos] Capacidad Podrı́a definirse como el total de paquetes recibidos durante el tiempo de vida. AppT 4.3.2. Eficiencia Longitud de ruta promedio Es la cantidad de nodos que forman el camino entre el nodo origen y el nodo destinatario del dato. Puede relacionarse con la cantidad de transmisiones y energı́a necesaria para encaminar un paquete. Una manera de calcularlo es contar la cantidad de saltos totales y la cantidad total de paquetes recibidos. Havg = H Rec H = Cantidad de saltos totales Rec = Total de paquetes recibidos Total de paquetes Total de paquetes de encaminamiento que genera el protocolo. Sent = Total de paquetes enviados 109 4.3. MÉTRICAS DE EVALUACIÓN Transmisiones por consulta Da una medida del costo promedio en paquetes de una consulta inyectada en la red. Este tipo de métrica se utiliza en aplicaciones basadas en consulta. QTavg = Q Sent Q = Cantidad total de consultas Sent = Total de paquetes enviados Overhead de control Es la medida del costo indirecto asociado al encaminamiento. Existen varias métricas que muestran este costo. Controlt = Total de paquetes de control enviados Datat = Total de paquetes de datos enviados Sent = Total de paquetes enviados Rec = Total de paquetes recibidos Appr = Total de paquetes de aplicación entregados a) Cantidad promedio de paquetes de control por paquete de datos. Controlt Datat b) Cantidad promedio de paquetes necesarios para encaminar un paquete. Sent Rec c) Cantidad promedio de paquetes del protocolo por paquete de aplicación entregado. Sent Appr 4.3.3. Uso de la energı́a Costo por paquete La cantidad promedio de paquetes que pueden ser exitosamente entregados por unidad de energı́a. 110 CAPÍTULO 4. DISEÑO DE LA SIMULACIÓN CON OMNET++ eAppavg = Appr E 1 [ mW s] E = Consumo total de energı́a [mWs] Appr = Total de paquetes de aplicación entregados Energı́a disipada La cantidad promedio de energı́a que se utiliza al detectar un evento. Es una medida más general, que incluirı́a otras actividades además del encaminamiento. eEvavg = E Ev [mWs] E = Consumo total de energı́a [mWs] Ev = Total de eventos detectados Energı́a total Energı́a disipada total, suma del consumo total de cada nodo. E = Consumo total de energı́a [mWs] Distribución de la energı́a Uniformidad de los niveles de energı́a de los nodos. Eσ = Desviación de la energı́a residual 4.3.4. Calidad de servicio Confiabilidad Una medida de la tasa de éxito en la transmisión de paquetes. Conf = Datar Datat (0..1) Datat = Total de paquetes de datos enviados Datar = Total de paquetes de datos recibidos 111 4.3. MÉTRICAS DE EVALUACIÓN Pérdidas Tasa de pérdidas, indica el porcentaje de paquetes de datos no recibidos por ningún nodo. Loss = 1 − Conf (0..1) Latencia Tiempo promedio de recepción de paquetes (latency, end-to-end delay). Latavg = Retardo promedio de fuente a sumidero [s,ms] Tiempo de reacción Retardo luego de algún cambio en la red. Cobertura Expresa qué fracción de la región a monitorear es alcanzada por los nodos que quedan activos. Cov = SubR R (0..1) R = Espacio total monitoreado inicialmente SubR = Espacio monitoreado con los nodos activos Escalabilidad Variación del comportamiento del protocolo al variar la densidad y cantidad de nodos. Podrı́a pensarse como la variación de las métricas de interés en función de la cantidad de nodos. 4.3.5. Métricas no consideradas Conectividad Fracción de enlaces activos una vez que la red se particiona. En realidad, la métrica sugiere una medida de cobertura. 112 CAPÍTULO 4. DISEÑO DE LA SIMULACIÓN CON OMNET++ Particionamiento Cuántos nodos quedaron aislados. Esta métrica también sugiere una medida de cobertura. 4.3.6. Métricas seleccionadas Las siguientes métricas serán extraı́das de los resultados de la simulación, basadas en la clasificación presentada al comienzo de la sección. Longitud de ruta Se extraerán estadı́sticas sobre la longitud de ruta en cantidad de saltos de los paquetes entregados al sumidero. Hσ = Desviación de la longitud de ruta Hmax = Longitud máxima registrada Hmin = Longitud mı́nima registrada Hmean = Longitud media registrada Total de paquetes Se contabilizará el total de paquetes de red enviados durante la simulación, excluyendo los que envı́a el sumidero. Sent = Total de paquetes de red enviados Overhead de control Se extraerá una métrica de gasto de control calculada de la siguiente manera: Overhead = Sent Appr Total de paquetes de red enviados por cada paquete de aplicación recibido Costo por paquete La cantidad de paquetes de aplicación entregados por unidad de energı́a. eAppavg = 113 Appr Et 4.3. MÉTRICAS DE EVALUACIÓN Distribución de la energı́a Para analizar la uniformidad de energı́a, puede analizarse en su lugar, la uniformidad del consumo de energı́a para la transmisión, excluyendo al sumidero. Eσt = Desviación del consumo total de energı́a en transmisiones t Emax = Máximo consumo total de energı́a en transmisiones t Emin = Mı́nimo consumo total de energı́a en transmisiones t Emean = Media del consumo total de energı́a en transmisiones Energı́a total de transmisión Puede analizarse el consumo de energı́a desglosándolo por actividad. En particular, se extraerá el consumo total en transmisiones, excluyendo el sumidero. E t = Energı́a total utilizada en transmisiones Confiabilidad Se calculará la confiabilidad a nivel aplicación, es decir, contabilizando paquetes de aplicación. Conf = Appr Appt Latencia Se extraerán estadı́sticas de latencia a nivel aplicación, registrando el retardo de todos los paquetes entregados en el sumidero: Latσ = Desviación de latencia Latmin = Latencia mı́nima Latmax = Latencia máxima Latmean = Latencia media 114 Capı́tulo 5 Implementación de módulos de red 5.1. Definiciones Como se presenta en [65], la relación de vecindad de los nodos define un grafo no dirigido (por ser los enlaces bidireccionales) G = (V, E), donde V es el conjunto de vértices y E ⊆ V × V es el conjunto de aristas. Los vértices corresponden a las entidades (o nodos) y una arista (o enlace) (x, y) existe sı́ y solo sı́ el nodo x puede transmitir al nodo y, y viceversa. Se denomina: n(G) al número de vértices o nodos m(G) al número de aristas y d(G) al diámetro de G, la máxima distancia entre dos nodos (para hallarlo, se determina el camino más corto entre cada par de vértices, y la mayor logitud de todos ellos es el diámetro N (x) el conjunto de vecinos de x, tal que si y N (x), entonces x puede transmitir a y, y viceversa Para el análisis de costo de los algoritmos se medirá la actividad de comunicación, contando la cantidad de transmisiones de mensajes realizadas, es decir, el costo en mensajes M. En las especificaciones se utilizaran los términos nodo y enlace únicamente, y se hará referencia al costo en mensajes como complejidad M. 115 5.2. DISEMINACIÓN DE INTERÉS CON M-SPIN 5.2. 5.2.1. Diseminación de interés con M-SPIN Caracterı́sticas M-SPIN [60] es una versión modificada de SPIN (ver 3.5.2) para transmitir información únicamente al nodo sumidero (en lugar de propagarla a la totalidad de la red), disminuyendo ası́ la cantidad de paquetes necesarios y el consumo de energı́a. Como SPIN, M-SPIN es un protocolo orientado a aplicaciones de reporte de eventos. La modificación contribuye a que la información sea notificada y propagada en dirección al sumidero rápidamente. Para ello, se agrega una etapa previa a las rondas de negociación de información de SPIN, donde se asigna la distancia al sumidero, quedando la red dividida en niveles, como puede observarse en la figura 5.1. Descubrimiento de distancia En esta etapa, se mide la distancia en saltos al sumidero. Inicialmente el sumidero hace broadcast de un paquete STARTUP, que contiene la tupla (tipo, id, distancia): tipo es el tipo de mensaje id es el identificador del nodo emisor distancia es la distancia en saltos al nodo sumidero, el valor inicial es 1 Cuando un nodo recibe el paquete STARTUP, se asigna la distancia que trae el paquete, incrementa la distancia del paquete en 1 y vuelve a hacer broadcast del paquete. Si un nodo recibe múltiples paquetes STARTUP, se asigna la menor distancia recibida, y cada vez que actualiza su distancia, retransmite el paquete con la distancia incrementada en 1. En la figura 5.1 (obtenida de [60]), los enlaces que unen los nodos que han quedado a una misma distancia del sumidero, no serán utilizados para peticiones y transmisiones de datos, porque siempre se encamina hacia un nodo de menor distancia. Observar que si el nodo que está a distancia 4 genera datos, ambos nodos a distancia 3 solicitarán la información. El dato del nodo a distancia 4 será posiblemente encaminado a través de ambos nodos a distancia 3. 116 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Figura 5.1: Etapa de descubrimiento de distancia al sumidero Negociación, petición y transmisión de datos La negociación es similar a la que realiza SPIN-BC, descripto en la sección 3.5.2. El nodo que genera el dato lo notifica haciendo broadcast de un paquete ADV. Al recibirlo, cada nodo verifica si ya ha recibido o requerido el dato, y también si está a menor distancia del sumidero que el nodo que envió el ADV. Sólo si está a menor distancia, el nodo hará la petición del dato, enviando un paquete REQ. La transmisión de datos ocurre de la misma manera que en SPIN-BC. Cuando el nodo que generó el dato recibe el paquete REQ, envı́a el paquete DATA inmediatamente con la información solicitada. Al recibir el dato, el nodo que lo pidió recomienza la negociación, notificando a sus vecinos con un paquete ADV con la distancia modificada. El proceso continúa hasta que el sumidero recibe los datos. Evaluación En la evaluación original del protocolo se utilizaron las siguientes métricas: Métrica ADV E Descripción Cantidad total de paquetes ADV transferidos para que un evento alcance el nodo sumidero. Consumo total de energı́a al variar la cantidad de nodos. Cuadro 5.1: Métricas de M-SPIN Se utilizó una tamaño de red mı́nimo de 10 nodos y un máximo de 60. En el trabajo [60] se presenta como problema principal de M-SPIN el agotamiento de la energı́a en los nodos más cercanos al sumidero. 117 5.2. DISEMINACIÓN DE INTERÉS CON M-SPIN 5.2.2. Especificaciones SPIN-PP Valores de estado S = {INITIATOR, IDLE, DIFFUSE, GATHER, DONE} SIN IT = {INITIATOR, IDLE} ST ERM = {DONE} Restricciones {BL, TR, CN, UI } Tipos de mensaje ADV, REQ, DATA Variables countADV BL = Bidirectional Links El grafo que definen los enlaces es no dirigido. TR = Total Reliability No han habido fallas ni las habrá. CN = Connectivity El grafo es fuertemente conexo. De cada nodo es posible alcanzar a cualquier otro nodo. UI = Unique Initiator Sólo una entidad comienza el algoritmo. El nodo en estado INITIATOR posee un nuevo dato para encaminar y comienza la negociación anunciando el dato a todos sus vecinos, enviando un paquete ADV a cada uno. Entonces pasa al estado DIFFUSE. INITIATOR Spontaneously begin send(ADV) to N(x); countADV := |N (x)|; 118 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED become DIFFUSE; end Al comenzar, el resto de los nodos se encuentra en estado IDLE. En este estado, cuando el nodo recibe un paquete ADV que anuncia un nuevo dato, envı́a un paquete REQ para solicitar el dato al nodo que lo anunció. Luego pasa al estado GATHER. IDLE Receiving(ADV) begin send REQ to sender; countADV := |N (x)| − 1; become GATHER; end En estado DIFFUSE, el nodo se encuentra a la espera de peticiones por el dato que ha anunciado. Cuando recibe un paquete REQ de petición, responde con los datos solicitados al nodo que lo emitió. Si recibe un paquete ADV, decrementa un contador que permite determinar cuando todos los nodos vecinos ya poseen el dato, momento en el cual pasa al estado de terminación local DONE. DIFFUSE Receiving(REQ) begin send DATA to sender; end Receiving(ADV) begin counter−−; if counter = 0 then become DONE; endif end 119 5.2. DISEMINACIÓN DE INTERÉS CON M-SPIN En estado GATHER el nodo se encuentra negociando el dato que ha solicitado. Si recibe un paquete DATA, envı́a un paquete ADV a cada vecino menos el nodo del cual recibió información, anunciando el nuevo dato que posee y pasa al estado DIFFUSE. Si recibe un paquete ADV, decrementa un contador que permitirá determinar cuando todos los nodos vecinos ya poseen el dato. GATHER Receiving(DATA) begin Cache(DATA) send ADV to N(x) - {sender}; become DIFFUSE; end Receiving(ADV) begin counter−−; end SPIN-BC Valores de estado S = {INITIATOR, IDLE, WAIT, DIFFUSE, GATHER, DONE} SIN IT = {INITIATOR, IDLE} ST ERM = {DONE} Restricciones {BL, TR, CN, UI } Tipos de mensaje ADV, REQ, DATA Variables {countADV} El nodo en estado INITIATOR posee un nuevo dato para encaminar y comienza la negociación anunciando el dato a todos sus vecinos, enviando un paquete ADV por broadcast. Entonces pasa al estado DIFFUSE. 120 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED INITIATOR Spontaneously begin send(ADV) to N(x); countADV := |N (x)|; become DIFFUSE; end Al comenzar, el resto de los nodos se encuentra en estado IDLE. En este estado, cuando el nodo escucha un paquete ADV, inicia la alarma de supresión de petición, que expira en un tiempo al azar, y pasa al estado WAIT. IDLE Receiving(ADV) begin set alarm := c(x) + u(I) source := sender; countADV := |N (x)| − 1; become WAIT; end En el estado WAIT, el nodo se encuentra esperando oir una petición por el mismo dato en negociación, para suprimir la suya. En este estado, si la alarma de supresión expira, el nodo envı́a una petición por broadcast, especificando de qué nodo recibió el anuncio. Luego pasa al estado GATHER. Si antes de expirar la alarma, recibe un paquete REQ, el nodo cancela la alarma suprimiendo su petición y pasa al estado GATHER. Asimismo, si antes de expirar la alarma recibe el paquete DATA, cancela la alarma suprimiendo su petición, anuncia el nuevo dato por broadcast y pasa al estado DIFFUSE. Si en el estado WAIT recibe un paquete ADV, decrementa un contador que permite detectar que todos los vecinos ya poseen el dato. WAIT When c(x) = alarm begin REQ.source = source; send REQ to N(x); 121 5.2. DISEMINACIÓN DE INTERÉS CON M-SPIN become GATHER; end Receiving(REQ) begin //Si escucha un pedido por el mismo dato if source = REQ.source then unset alarm; //Suprime la petición become GATHER; endif end Receiving(DATA) begin Cache(DATA); unset alarm; //Suprime la petición send ADV to N(x); become DIFFUSE; end Receiving(ADV) begin counter−−; end En el estado DIFFUSE, el nodo se encuentra a la espera de peticiones por el dato que anunció. Si escucha una petición que especifica que el origen del anuncio fue él mismo, responde por broadcast un paquete DATA con los datos y pasa al estado DONE, ya que SPIN-BC sólo envı́a el dato una vez. Si recibe un paquete ADV, decrementa un contador que permite detectar cuando todos los vecinos ya poseen el dato anunciado. DIFFUSE Receiving(REQ) begin //El pedido debe ser para este nodo if REQ.source = x then send DATA to N(x); become DONE; endif end 122 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Receiving(ADV) begin counter−−; if counter = 0 then become DONE; endif end En estado GATHER, el nodo se encuentra negociando el dato que no posee. Si escucha el paquete DATA, anuncia por broadcast el nuevo dato a sus vecinos y pasa al estado DIFFUSE. Si escucha un paquete ADV, decrementa un contador que permite detectar cuando todos sus vecinos ya poseen el dato. GATHER Receiving(DATA) begin Cache(DATA) send ADV to N(x); become DIFFUSE; end Receiving(ADV) begin counter−−; end M-SPIN Distancia Según descripto en [60]. Valores de estado S = {INITIATOR, IDLE, ITERATE, DONE} SIN IT = {INITIATOR, IDLE} ST ERM = {DONE} Restricciones {BL, TR, CN, UI } 123 5.2. DISEMINACIÓN DE INTERÉS CON M-SPIN Tipos de mensaje {STARTUP, ACK} Variables {countAck, parent} El nodo sumidero o iniciador comienza el algoritmo enviando por broadcast un paquete STARTUP con valor de distancia 0 a todos sus vecinos. Luego, contabiliza paquetes ACK. Cuando ha recibido un ACK de cada vecino, pasa al estado DONE de terminación local. En ese momento se alcanzó la convergencia. INITIATOR Spontaneously begin STARTUP.hop := 0; send STARTUP to N(x); countAck := |N (x)|; end Receiving(ACK) begin countAck−−; if countAck = 0 then become DONE; endif end Receiving(STARTUP) begin send ACK to sender; end Al comenzar, el resto de los nodos se encuentra en estado IDLE. Cuando el nodo escucha el primer paquete STARTUP, se asigna la distancia del paquete, toma al emisor como nodo padre y transmite por broadcast un nuevo paquete STARUP a sus vecinos, que contiene su distancia incrementada en 1. Luego pasa al estado ITERATE. IDLE 124 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Receiving(STARTUP) //Recibe el primer STARTUP begin distance := STARTUP.hop; parent := sender; countAck := |N (x)|; STARTUP.hop++; send STARTUP to N(x); become ITERATE; end En el estado ITERATE, si el nodo recibe un paquete STARTUP que contiene una distancia menor al sumidero, actualiza su distancia a ese valor, y envı́a por broadcast un nuevo paquete STARTUP con su distancia incrementada en 1. Si el nodo recibe un ACK, decrementa un contador que permite detectar cuando todos sus vecinos menos el padre han alcanzado la convergencia. En ese momento, envı́a su propio ACK al nodo que marcó como padre. ITERATE Receiving(STARTUP) begin send ACK to sender; if distance > STARTUP.hop then distance := STARTUP.hop; countAck += |N (x)|; STARTUP.hop++; send STARTUP to N(x); endif end Receiving(ACK) begin countAck−−; if countAck = 0 then send ACK to parent; become DONE; endif end 125 5.2. DISEMINACIÓN DE INTERÉS CON M-SPIN Como se explica en la sección 8.1 de [66], para detectar la terminación local se debe introducir el acuse de recibo. El sumidero, con el rol de iniciador, envı́a un paquete STARTUP a todos sus vecinos. Cuando un nodo x en estado IDLE recibe el primer STARTUP, actualiza su distancia al sumidero, y define como padre al nodo emisor. Luego envı́a su nueva distancia a todos sus vecinos. Para todos los siguiente paquetes STARTUP que recibe, responde con un ACK. Si la distancia que contiene el paquete es menor que la que el nodo x tiene asignada actualmente, x actualiza su distancia, y vuelve a notificar a sus vecinos por broadcast con un paquete STARTUP. Por cada paquete STARTUP que x ha enviado, deberá recibir un ACK de cada vecino. Cuando x recibe todos los acuse de recibo pendientes, pasa al estado de terminación local en x. M-SPIN Negociación Según descripto en [60]. La negociación es muy similar a la de SPIN-BC, excepto por el comportamiento del nodo al recibir el paquete ADV. Si el anuncio proviene de un nodo más cercano al sumidero, no participa de la negociación. Valores de estado S = {INITIATOR, IDLE, DIFFUSE, GATHER, DONE} SIN IT = {INITIATOR, IDLE} ST ERM = {DONE} Restricciones {BL, TR, CN, UI } Tipos de mensaje {ADV, REQ, DATA} Al comenzar, el nodo que posee un nuevo dato lo anuncia por broadcast a sus vecinos. Luego pasa al estado DIFFUSE. INITIATOR Spontaneously begin send(ADV) to N(x); become DIFFUSE; end 126 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED El resto de los nodos se encuentra en estado IDLE. Al escuchar un paquete de anuncio, el nodo inspecciona la distancia del emisor, y si es mayor que la propia, inicia la alarma de supresión de petición, pasando al estado WAIT. Si el emisor del ADV está a menor distancia del sumidero, el nodo pasa al estado DONE de terminación local, sin participar de la negociación. IDLE Receiving(ADV) begin if distance < ADV.hop then set alarm := c(x) + u(I) source := sender; become WAIT; else //Si no esta a menor distancia, //no participa become DONE; endif end En el estado WAIT, el nodo se encuentra negociando el dato. Si la alarma de supresión expira, el nodo envı́a la petición por broadcast, especificando el nodo origen del anuncio, y pasa al estado GATHER. Si antes de expirar la alarma escucha un paquete REQ, cancela la alarma suprimiendo su propia petición, y pasa al estado GATHER. Asimismo, si antes de expirar la alarma escucha el paquete DATA, cancela la alarma suprimiendo la petición, anuncia por broadcast el nuevo dato y pasa al estado DIFFUSE. WAIT When c(x) = alarm begin REQ.source = source; send REQ to N(x); become GATHER; end Receiving(REQ) begin //Si escucha un pedido por el mismo dato 127 5.2. DISEMINACIÓN DE INTERÉS CON M-SPIN if source = REQ.source then unset alarm; //Suprime la petición become GATHER; endif end Receiving(DATA) begin Cache(DATA); unset alarm; //Suprime la petición send ADV to N(x); become DIFFUSE; end En el estado DIFFUSE, el nodo se encuentra a la espera de peticiones por el dato que anunció. Si escucha un paquete REQ para sı́ mismo, responde enviando por broadcast el paquete DATA y pasa al estado DONE de terminación local. Si escucha un paquete ADV que proviene de un nodo más cercano al sumidero, pasa al estado DONE, asumiendo que no es necesario continuar con la negociación. DIFFUSE Receiving(REQ) begin //El pedido debe ser para este nodo if REQ.source = x then send DATA to N(x); become DONE; endif end Receiving(ADV) begin //Si un nodo más cerca del sumidero //anuncia el dato, ya no es necesario //continuar activo if ADV.hop < distance then become DONE; endif end 128 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED En el estado GATHER, el nodo se encuentra negociando el dato. Cuando escucha el paquete DATA esperado, anuncia por broadcast el nuevo dato y pasa al estado DIFFUSE. GATHER Receiving(DATA) begin Cache(DATA) send ADV to N(x); become DIFFUSE; end 5.2.3. Complejidad M Como se define en la sección 5, la complejidad M es el costo en mensajes del algoritmo, es decir, la cantidad de transmisiones de mensajes necesarias para completar la ejecución del protocolo. Complejidad M de M-SPIN Distancia Se omite del análisis de M-SPIN Distancia, los mensajes ACK, por ser una construcción teórica que facilita el análisis. Los ACK no son mencionados en el trabajo original de M-SPIN [60]. Sean n el número de vértices o nodos de la red, y d el diámetro de la red (la mayor distancia entre dos nodos). Un nodo puede actualizar su distancia una cantidad máxima de veces equivalente a d, dado que hay d posibles valores de distancia al sumidero. Como cada vez que actualiza su distancia, transmite un mensaje STARTUP: M [M-SPIN D] ≤ n· d n = número de vértices o nodos de la red d = diámetro de la red Dado que la máxima distancia que puede haber entre dos nodos de un grafo de n nodos es n − 1, entonces d ≤ n − 1 y la fórmula anterior puede expresarse como: M [M-SPIN D] ≤ n· (n − 1) = n2 − n ≤ n2 Un análisis diferente puede hacerse, observando que M-SPIN Distancia tiene la misma forma que Iterated Construction (Bellman-Ford distribuido), donde todos los enlaces tienen el mismo costo (que es 1 salto). Asumiendo 129 5.2. DISEMINACIÓN DE INTERÉS CON M-SPIN un canal compartido, en cada iteración, el nodo x envı́a su nueva distancia por broadcast a sus vecinos, transmitiendo un mensaje STARTUP. Como se sabe que el protocolo converge a lo sumo en n − 1 iteraciones [65]: M [M-SPIN D] ≤ n· (n − 1) = n2 − n ≤ n2 n = número de vértices o nodos de la red d = diámetro de la red M [M-SPIN D] ∼ O(n2 ) Complejidad M de M-SPIN Negociación En [42] se analiza el tiempo de convergencia, estableciendo que la longitud máxima de ruta que atraviesa un dato es d, que equivale al diámetro de la red. Escenario 1 Para negociar la información, cuando un nodo x genera un dato, transmite por broadcast un mensaje ADV anunciándolo. Si todos los nodos, menos el generador y el sumidero, están a la misma distancia, el nodo generador está a distancia 2, el sumidero a distancia 0, y el resto de los nodos a distancia 1. Entonces, d = 2. El generador anuncia el dato con un mensaje ADV, n − 2 nodos peticionarán el dato con mensajes REQ, y el generador deberá responder las peticiones con mensajes DATA. Luego los n − 2 nodos anunciarán el dato con mensajes ADV. El primer anuncio que reciba el sumidero iniciará su propia negociación, agregando un mensaje REQ y un DATA. ADV = 1 + n − 2 REQ = n − 2 + 1 DAT A = n − 2 + 1 M [M-SPIN N] ≤ 3· (n − 1) n = número de vértices o nodos de la red M [M-SPIN N] ∼ O(n) Escenario 2 Puede pensarse que se transmiten como mı́nimo 3 mensajes por cada salto que debe atravesarse. Suponiendo que el diámetro de G es el máximo posible, n − 1, y el nodo más alejado del sumidero anuncia un dato, entonces se ejecutarán n − 1 negociaciones de 3 mensajes cada una. M [M-SPIN N] ≤ 3· (n − 1) n = número de vértices o nodos de la red 130 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED M [M-SPIN N] ∼ O(n) En ambos escenarios, todos los nodos participan de la negociación. En cualquier otro escenario, la cantidad de nodos que participan puede ser menor que n, por lo que la cantidad de negociaciones serı́a menor, y la cantidad de mensajes también. Entonces puede decirse que O(n) es el orden M de la cantidad de mensajes de negociación, y 3· (n − 1) una cota superior. 5.2.4. Detalles de implementación Se implementó la familia de protocolos SPIN, SPIN-BC y SPIN-RL. El módulo SPIN implementa la secuencia de negociación básica. El módulo SPIN-BC tiene una secuencia de negociación diferente, aprovechando el canal compartido y suprimiendo peticiones, y SPIN-RL lo mejora con la repetición de peticiones y el lı́mite de reenvı́os. Por simplicidad, todos los protocolos de la familia almacenan los datos en una cache sin lı́mite. M-SPIN se implementa extendiendo SPIN-RL, con la fase de asignación de distancia al sumidero, y la restricción de participar en la negociación sólo si la distancia al sumidero es menor que la del nodo anunciante. La jerarquı́a de clases para los protocolos SPIN desarrollados puede verse en la figura 5.2. 131 5.2. DISEMINACIÓN DE INTERÉS CON M-SPIN Figura 5.2: Jerarquı́a de módulos de diseminación 132 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Registro de anuncios En SPIN-PP se procesan todos los anuncios recibidos, enviando peticiones y datos a una dirección especı́fica. En SPIN-BC es necesario registrar cada anuncio recibido para poder enviar peticiones no suprimidas. Se utilizará un temporizador de petición por cada anuncio recibido, al expirar, se envı́a la petición. Si se escucha una petición de otro nodo por un dato cuyo anuncio se registró, se cancela el temporizador, suprimiendo la petición. Repetición de pedidos En SPIN-BC un nodo puede suprimir sus peticiones si escucha que otro nodo ha pedido el mismo dato. Dado que en un canal no ideal puede darse que al transmitir el dato anunciado, algún nodo que lo espera no lo reciba, en SPIN-RL cada nodo mantiene registro de todos los anuncios recibidos. Si no recibe el dato transcurrido un cierto periodo de tiempo posterior al pedido enviado o suprimido, el nodo vuelve a enviar la petición, indicando en la cabecera el nodo que originalmente anunció el dato. Se utilizará un temporizador de recepción del dato, que se programa a partir del momento en que se envı́a o suprime la petición. Cuando se suprime la petición, ello implica que se ha escuchado un pedido de otro nodo por el mismo dato, o se ha recibido el dato directamente. Al expirar el temporizador de recepción, se repite la petición sólo si el dato no está ya en la cache, y se vuelve a programar el temporizador de recepción para ese dato. Lı́mite de reenvios En SPIN-RL, si un nodo envı́a un dato, luego se debe esperar una cantidad de tiempo predefinida antes de volver a enviar el mismo dato. Se utilizó un registro de envı́os con marcas de tiempo, para controlar los reenvı́os. Si se recibe un pedido por un dato, y todavı́a no ha transcurrido el tiempo de espera de reenvı́o, simplemente se ignora el pedido. De lo contrario, se responde el pedido actualizando la marca de tiempo a ese momento. Paquete M-SPIN En el fragmento de código 5.1 puede observarse la definición del paquete M-SPIN: Fragmento de código 5.1: Paquete M-SPIN 1 packet SPINPkt extends NetwPkt { 2 3 4 5 int hops; int advSource; int meta; 133 5.2. DISEMINACIÓN DE INTERÉS CON M-SPIN int finalDestAddr; int initialSrcAddr; 6 7 8 } Donde: hops es cantidad de saltos al sumidero advSource es la dirección del nodo que originalmente anunció el dato meta es el metadato del dato anunciado o solicitado finalDestAddr es la dirección del nodo destino final del paquete initialDestAddr es la dirección del nodo origen del paquete Se ha definido como longitud de cabecera un valor de 24 bits. El mismo valor se utilizará en todos los módulos de red. Ajuste de tiempos de espera Como M-SPIN extiende a SPIN-RL, existen varios tiempos de espera que pueden ser ajustados para mejorar el desempeño del protocolo: sendAgainWait es el tiempo para enviar un dato nuevamente si ya se envió requestAgainWait es el tiempo para volver a pedir un dato requestSuppressWait es el tiempo para esperar suprimir un pedido, es decir, el tiempo durante el cual se espera que otro nodo solicite el mismo dato, en cuyo caso la propia petición no se envı́a requestTimes cantidad de veces que se repite el pedido por un dato como máximo 134 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Se ha observado que si la espera es muy pequeña o muy grande, la tasa de éxito se empeora. Se realizó un lote de simulaciones de ajuste que resultó en los siguientes valores de mejor desempeño: sendAgainWait 100 ms requestAgainWait 100 ms requestSuppressWait 150 ms requestTimes 4 5.2.5. Pseudocódigo Algoritmo 2: M-SPIN Procesar paquete de aplicación 1 2 3 agregar datos a cache crear paquete ADV entregar al enlace para transmisión broadcast Algoritmo 3: M-SPIN Procesar paquete STARTUP 1 2 3 4 5 6 7 if saltos del paquete < mi distancia then asignar la distancia del paquete a mi distancia incrementar la distancia del paquete entregar al enlace para retransmisión por broadcast else descartar end 135 5.2. DISEMINACIÓN DE INTERÉS CON M-SPIN Algoritmo 4: M-SPIN Procesar paquete ADV de anuncio 1 2 3 4 5 6 7 8 9 if el dato anunciado no está en cache Y no está siendo negociado then if dirección final = broadcast Ó distancia del emisor > mi distancia then programar temporizador de supresión de petición else descartar end else descartar end Algoritmo 5: M-SPIN Procesar paquete REQ de pedido 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if origen de anuncio = mi dirección then if pasó el tiempo mı́nimo entre reenvı́os then crear paquete de datos entregar al enlace para transmisión por broadcast else descartar end else if hay temporizador de supresión de pedido programado then cancelar el temporizador programar temporizador de repetición de pedido else descartar end end 136 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Algoritmo 6: M-SPIN Procesar paquete DATA de datos 1 2 3 4 5 6 7 8 9 10 11 if el dato está siendo negociado then cancelar temporizador de repetición de pedido agregar el dato a la cache if dirección final = mi dirección Ó dirección final = broadcast then entregar el dato a la aplicación end crear paquete anuncio entregar al enlace para transmisión broadcast else descartar end Algoritmo 7: M-SPIN Expira temporizador de repetición o supresión de pedido 1 2 3 4 5 if el dato no está ya en cache Y no se superó la cantidad de pedidos repetidos then crear paquete de pedido entregar al enlace para transmisión por broadcast programar temporizador de repetición de pedido end 137 5.3. CONSCIENCIA DE RECURSOS CON SAMF 5.3. Consciencia de recursos con SAMF 5.3.1. Caracterı́sticas En el trabajo que desarrolla Flow Augmentation, se mencionan como futuras direcciones de investigación [12]: Efectos de la densidad de nodos y variaciones de energı́a residual sobre el algoritmo Aplicación de la métrica de enlace a encaminamiento por demanda Consideración de cuestiones de la MAC Utilización de niveles discretos de energı́a residual Es importante tener en mente que este es un protocolo que requiere mantenimiento de tablas de encaminamiento. El costo del camino es la suma de costos de cada enlace y los caminos se calculan con cualquier algoritmo de camino más corto, como Bellman-Ford. En el trabajo de [12] no se tiene en cuenta la energı́a para calcular las rutas de menor costo ni de intercambio de mensajes de control. SAMF (Self-adapting Maximum Flow Routing) [59] es un protocolo más recientemente investigado que, de manera similar a Flow Augmentation, asigna costos de enlace relacionados a la energı́a residual, y estos costos son actualizados cada cierta cantidad de tiempo. En [59] se dice que en general hay dos fases de operación en una WSN. Una fase de diseminación, donde se difunde información de control para cambiar la tarea de sensado, y la recolección, donde se transmiten los datos a un sumidero o punto de recolección. SAMF encamina la máxima carga de trabajo sostenible dadas las restricciones de ancho de banda, energı́a y recursos, y se adapta dinámicamente cambios en estas restricciones. Se modela la red como un grafo dirigido, donde cada nodo es un vértice y los enlaces entre nodos son las aristas. Sean: e = Un enlace v = El nodo origen de e B(e) = El ancho de banda del enlace CP U (v) = El poder de cómputo en el nodo origen (velocidad de proceso, número de paquetes que puede procesar por unidad de tiempo) E(v, e) = La energı́a requerida para recibir o generar un paquete de datos y enviarlo a través del enlace P (v) = La energı́a en el nodo origen F (e) = Flujo en paquetes que atraviesa el enlace 138 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED C(e) = Capacidad del enlace (la máxima cantidad de paquetes que pueden enviarse por e en una unidad de tiempo) El modelo plantea una capacidad de enlace, limitada por el mı́nimo entre tres capacidades: P (v) F (e) <= C(e) = min{B(e), CP U (v), E(v,e) } La red entera entonces puede modelarse como una red de flujo [59]. Encaminamiento El encaminamiento implementa una estrategia ávida, siempre encamina paquetes por el camino al sumidero que tiene la máxima capacidad residual. Entonces, se dice que la capacidad residual es usada como métrica de encaminamiento. Más precisamente, el nodo elige el enlace que pertenece al camino de mayor capacidad residual entre todos los caminos que llevan al sumidero. El mejor enlace es el que pertenece al camino más corto, entre aquellos caminos de máxima capacidad residual. Cálculo de capacidad por época Para reducir el costo de calcular una y otra vez la capacidad residual de los caminos al sumidero, las métricas de encaminamiento se mantienen sin variación por un perı́odo de tiempo, la época, y se recalculan al comienzo de cada época. En este sentido, todos los paquetes procesados por un nodo en una determinada época, son encaminados por el mismo camino. Las capacidades residuales se calculan al final de la época, substrayendo de la capacidad nominal el costo de todos los paquetes encaminados en esa época. Luego, para el cálculo de la capacidad residual de cada camino (constraint), de cada enlace se mantienen los atributos enumerados en la tabla 5.2. Cada nodo, a su vez, tiene los atributos enumerados en la tabla 5.3 139 5.3. CONSCIENCIA DE RECURSOS CON SAMF Atributo residual capacity link use link capacity constraint path capacity path hop packet energy Descripción La cantidad de paquetes por unidad de tiempo que se pueden enviar por el enlace en la nueva época. Cantidad de paquetes enviados por el enlace. La cantidad de paquetes por unidad de tiempo que se pueden enviar por el enlace (ancho de banda). Capacidad en cantidad de paquetes en la época. Cuando se recibe un mensaje por el enlace, se asigna el mı́nimo entre constraint y la capacidad que asignó el nodo emisor al mensaje. Cuando se recibe un mensaje por el enlace, se asigna la cantidad de saltos que trae el mensaje, incrementada en uno. La cantidad de energı́a necesaria para transmitir un paquete. Cuadro 5.2: Atributos de cada enlace SAMF Atributo residual energy node power delta T energy use residual cpu packet cpu cpu capacity cpu use Descripción Se actualiza en cada época, sumando node power, y restando energy use. Es lo que el nodo pudo recargar en la época anterior. Tiempo que transcurre entre cada época. Acumula la energı́a utilizada en transmisiones durante una época. Incrementa cada vez la energı́a necesaria para transmitir un paquete. Se pone en 0 cada vez que comienza una nueva época. Cantidad de paquetes que se pueden procesar por unidad de tiempo para la nueva época. La cantidad de energı́a necesaria para procesar un paquete. Cantidad de paquetes que se pueden procesar por unidad de tiempo. Acumula la energı́a utilizada en procesamiento. Incrementa cada vez la energı́a necesaria para procesar un paquete. Se pone en 0 cada vez que comienza una nueva época. Cuadro 5.3: Atributos de cada nodo SAMF 140 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Cuando cambia la época, cada nodo vuelve a calcular la capacidad de cada enlace (constraint) para la nueva época. La energı́a residual del nodo suma la energı́a que el nodo haya podido cargar y resta el uso en la época anterior. La capacidad de un enlace (ancho de banda) para la época nueva se calcula como el mı́nimo entre: 1) transmisiones residuales del nodo: Er r eP Er = Residual energy eP = Packet energy Esto es, cuantos paquetes pueden transmitirse con la energı́a residual 2) proceso residual del nodo: CP Ur cpup CP Ur = Residual CPU cpup = Packet CPU Esto es, cuantos paquetes pueden procesarse con la CPU residual 3) transmisiones residuales del enlace: Cr · ∆T Cr = Residual capacity Cuantos paquetes pueden enviarse con el ancho de banda residual La intención es que si en la época anterior se excedió el uso de la capacidad asignada, la capacidad para la época que sigue será menor, intentando compensar y balancear el flujo. El sumidero dispara el intercambio de paquetes INTEREST al comienzo de cada época, que permiten ejecutar en la red el algoritmo Bellmand-Ford distribuido con iniciador único, para calcular los caminos de costo mı́nimo al sumidero (con las capacidades actualizadas) con complejidad de mensajes polinomial. El algoritmo pertenece a una clase de estrategias denominada distance vector. En cada iteración, la entidad envı́a su vector de distancia que contiene información de la ruta y el costo al sumidero. En [65] se dice que este es un enfoque costoso en complejidad M (cantidad de mensajes). 141 5.3. CONSCIENCIA DE RECURSOS CON SAMF Evaluación Para la evaluación se hizo foco en la escalabilidad del protocolo, evaluando la respuesta de las siguientes métricas en función de la cantidad de nodos: Métrica flujo máximo longitud de ruta deuda máxima interés Descripción Consumo total de energı́a al variar la cantidad de nodos. La cantidad promedio de saltos en el camino al sumidero. Es la máxima deuda de capacidad observada durante la simulación. Representa un uso de capacidad superior al asignado para alguna época, compensado en la siguiente. Cantidad total de paquetes INTEREST intercambiados por época. No se aclara si es el promedio de todas las épocas. Cuadro 5.4: Métricas de SAMF La evaluación se realizó con Omnet++, asumiendo un canal ideal (sin utilizar una pila completa de protocolos). Este trabajo es muy similar al de Flow Augmentation [12], en donde en cada época, el flujo hacia un nodo se aumenta o disminuye sobre la base de su energı́a residual, y la energı́a de transmisión y recepción necesarias para utilizar el enlace a ese nodo. SAMF innova asumiendo nodos que pueden cosechar energı́a, por lo que en cada época, la capacidad residual puede aumentar o disminuir. Además, incorpora la capacidad de procesamiento y el ancho de banda a la métrica de encaminamiento. 5.3.2. Especificaciones SAMF Capacidad A continuación se ha elaborado la especificación del algoritmo de cálculo de capacidad, según descripto en [59]. Se asume un canal ideal no compartido para este análisis. Valores de estado S = {INITIATOR, IDLE, ITERATE, DONE} SIN IT = {INITIATOR, IDLE} ST ERM = {DONE} Restricciones {BL, TR, CN, UI } 142 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Tipos de mensaje {INTEREST, ACK} Variables {countAck, parent} Al comenzar, el sumidero o nodo iniciador envı́a el primer paquete INTEREST a todos su vecinos, con un valor inicial de capacidad muy alto, ya que en el sumidero los recursos no son acotados, y el identificador de época actual. Cuando el sumidero recibe un paquete ACK, decrementa un contador que permite detectar la terminación local, cuando llega a cero. Cuando recibe un paquete INTEREST, simplemente acusa su recibo respondiendo con un ACK al emisor. INITIATOR Spontaneously begin send(INTEREST) to N(x); countAck := |N (x)|; end Receiving(ACK) begin countAck−−; if countAck = 0 then become DONE; endif end Receiving(INTEREST) begin send(ACK) to sender; end El resto de los nodos comienza en estado IDLE. En este estado, al recibir el primer paquete INTEREST, el nodo inspecciona el identificador de época, y si difiere de la conocida, actualiza su valor y recalcula las capacidades de enlace para la nueva época. Luego, actualiza la tabla de encaminamiento y establece al nodo emisor como su nodo padre. Entonces, determina la capacidad de la mejor ruta conocida (mayor capacidad, y menor cantidad de 143 5.3. CONSCIENCIA DE RECURSOS CON SAMF saltos a igual capacidad), y transmite un paquete INTEREST con la capacidad calculada a todos sus vecinos menos el padre. Finalmente pasa al estado ITERATE. IDLE Receiving(INTEREST) //Recibe el primer paquete begin // Nueva época if INTEREST.epoch != epoch then Recompute contraints; epoch := INTEREST.epoch; endif Update routing table(INTEREST); parent := sender; INTEREST.bestGate := Get best gate(); send(INTEREST) to N(x); countAck := |N (x)|; become ITERATE; end En el estado ITERATE, si el nodo recibe un nuevo paquete INTEREST, actualiza la tabla de encaminamiento con la capacidad que contiene el paquete, y determina si ha cambiado la mejor ruta conocida. En caso afirmativo, envı́a la nueva mayor capacidad a todos sus vecinos, incrementando la cantidad de ACK esperados. Si recibe un paquete ACK, decrementa el contador. Cuando el contador de ACK llega a cero, el nodo envı́a su propio ACK al padre y pasa al estado DONE de terminación local. ITERATE Receiving(INTEREST) begin send(ACK) to sender; bestGateUpdated := Update routing table(INTEREST); if bestGateUpdated = true then INTEREST.bestGate := Get best gate(); send(INTEREST) to N(x); countAck += |N (x)|; endif end 144 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Receiving(ACK) begin countAck−−; if countAck = 0 then send(ACK) to parent; become DONE; endif end En SAMF, el establecimiento de las rutas de mayor capacidad se hace utilizando un algoritmo con la estructura de Bellman-Ford distribuido de origen único[59], también sugerido en Flow Augmentation[12]. Como se describe en la sección 8.1 de [66], para detectar la terminación del algoritmo se debe introducir el acuse de recibo de los mensajes que se envı́an con la mejor capacidad conocida. El sumidero, nodo iniciador, comienza el algoritmo enviando el paquete INTEREST conteniendo un valor de capacidad muy grande a los nodos vecinos. Cuando un nodo x recibe el paquete INTEREST por primera vez, define al emisor como su padre, y reenvı́a el paquete INTEREST con la mejor capacidad que conoce a sus propios vecino. Cuando el nodo x recibe nuevos paquetes INTEREST de sus vecinos, responde con ACK. Si algún paquete INTEREST de los recibidos proviene de una mejor ruta (contiene una capacidad mayor o igual pero con menor cantidad de saltos) que la que el nodo x conoce, éste actualiza su capacidad, y vuelve a emitir un paquete INTEREST con este nuevo valor, a todos sus vecinos. Una vez que el nodo x recibe los paquetes ACK de cada paquete INTEREST que envió, transmite su propio ACK al nodo padre, y pasa al estado terminal, alcanzándose la terminación local. SAMF Encaminar Especificación del algoritmo de encaminamiento de SAMF, según descripto en [59]. Valores de estado S = {INITIATOR, IDLE, DONE} SIN IT = {INITIATOR, IDLE} ST ERM = {DONE} Restricciones {BL, TR, CN, UI } 145 5.3. CONSCIENCIA DE RECURSOS CON SAMF Tipos de mensaje {DATA} El nodo iniciador es el que tiene un nuevo dato para encaminar. Comienza la ejecución del protocolo inspeccionando su tabla de encaminamiento y seleccionando la mejor ruta (mayor capacidad) al destino. Luego, envı́a el paquete de datos al siguiente nodo en la ruta y pasa al estado DONE de terminación local, dado que no se requiere alguna otra intervención. INITIATOR Spontaneously begin y := Next hop(DATA); send(DATA)to y; become DONE; end El resto de los nodos, comienzan en estado IDLE. Al recibir un paquete DATA, el nodo revisa su tabla de encaminamiento y selecciona la mejor ruta al destino (siempre el sumidero), y reenvı́a el paquete al siguiente nodo en la ruta. Luego pasa al estado DONE, ya que no se requiere otra intervención. IDLE Receiving(DATA) begin y := Next hop(DATA); send(DATA) to y; become DONE; end Cabe señalar que sólo los nodos a lo largo de la ruta participan en el encaminamiento. 5.3.3. Complejidad M Como se definió en la sección 5, la complejidad M es el costo en mensajes del algoritmo, es decir, la cantidad de transmisiones de mensajes necesarias para completar la ejecución del protocolo. 146 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Complejidad M de SAMF Capacidad SAMF Capacidad tiene el mismo comportamiento que el protocolo Iterated Construction (Bellman-Ford distribuido) presentado en [65], la tabla de encaminamiento se construye de forma iterativa. En cada iteración, cada nodo comunica su mejor capacidad al sumidero a todos sus vecinos y luego de recibir la mayor capacidad de sus vecinos, recalcula ese valor. Asumiendo un canal compartido, en cada iteración, el nodo x envı́a un mensaje por broadcast, y dado que el proceso converge en n - 1 iteraciones como máximo [65]: M [SAMF Capacidad] ≤ n· (n − 1) = n2 − n ≤ n2 n = número de vértices o nodos de la red M [SAMF Capacidad] ∼ O(n2 ) Complejidad M de SAMF Encaminar SAMF Encaminar se basa en las tablas construidas para la época corriente. La cantidad de saltos que pueden requerirse para que el paquete de datos llegue a destino está acotada por el diámetro máximo que puede poseer la red. M [SAMF Encaminar] ∼ d ≤ n − 1 d = diámetro de la red M [SAMF Encaminar] ∼ O(n) 5.3.4. Detalles de implementación Paquete SAMF En el fragmento de código 5.2 puede observarse la definición del paquete SAMF: Fragmento de código 5.2: Paquete SAMF 1 2 3 4 5 6 7 packet SAMFPkt extends NetwPkt { int pathHops; double pathCapacity; long epochId; int finalDestAddr; int initialSrcAddr; } 147 5.3. CONSCIENCIA DE RECURSOS CON SAMF A continuación se describe cada campo del paquete SAMF: pathHops es la cantidad de saltos de la mejor ruta conocida pathCapacity es la capacidad de la mejor ruta conocida epochId es la época actual finalDestAddr es la dirección del nodo destino final del paquete initialDestAddr es la dirección del nodo origen del paquete Se utilizará el mismo paquete para representar el mensaje INTEREST y DATA. Se le define como longitud de cabecera un valor de 24 bits. El mismo valor se utiliza para todos los paquetes utilizados en la simulación. Mantenimiento de rutas En SAMF[59] se utiliza una forma del algoritmo Bellman-Ford distribuido para el mantenimiento de los costos de las rutas, el mismo sugerido en el algoritmo FA (Flow Augmentation)[12], que también modela flujo de red. Con cada paquete INTEREST se recibe información que permite actualizar el costo del enlace. El paquete trae la capacidad de la ruta conocida por el nodo remoto, y la cantidad de saltos al sumidero. En SAMF, la capacidad de la ruta, es la menor de las capacidades de los enlaces que la componen. El costo de la ruta es inverso a la capacidad, cuanto más capacidad, menor costo. La librerı́a de simulación provee una clase cTopology que permite extraer la topologı́a de la red y calcular el camino más corto de un nodo a cualquier otro, pero la misma no puede utilizarse, porque utiliza como costo de ruta la suma de los costos de los enlaces. En el protocolo Flow Augmentation el costo de la ruta es la suma de los costos de los enlaces que la componen. Pero en SAMF, como se ha dicho, la capacidad de la ruta no es la suma de las capacidades de cada enlace, sino que se restringe a la menor de las capacidades de los enlaces que la componen. Entonces, en SAMF la tabla de encaminamiento se construye a medida que se reciben paquetes INTEREST 148 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED con estructuras de datos, sin utilizar cTopology. Diseño del módulo Para modelar el protocolo, se ha excluido del modelo la posibilidad de cosechar energı́a. La métrica de encaminamiento sólo tiene en cuenta la energı́a residual, y ésta siempre va en disminución. Se han excluido del cálculo de la métrica de capacidad, el ancho de banda del enlace y el poder de cómputo en el nodo, modelando una red de dispositivos homogéneos. En el SAMF original, al comienzo de cada época se define el crédito disponible de cpu, energı́a y ancho de banda de cada enlace. Durante la época, se registra el consumo de cpu, ancho de banda utilizado por el enlace y la energı́a utilizada. Al final de la época, si alguno ha excedido el crédito asignado, en la siguiente época el crédito será la capacidad nominal menos el exceso anterior, intentando balancear la carga en los enlaces y nodos. Para la implementación, la métrica se ha simplificado utilizando solamente la energı́a residual, con la hipótesis de que los nodos que más paquetes han encaminado durante una época, tendrán un nivel de energı́a residual menor al final de la época. Si su crédito se basa sólo en la energı́a residual, los nodos más cargados en una época dispondrán de menos capacidad para la época siguiente, encaminando una menor cantidad de paquetes. Asimismo, en el trabajo original se define la capacidad en cantidad de paquetes. Para este trabajo, a la capacidad dada por la energı́a residual se le da valores discretos múltiplos de 5, a partir de la carga de baterı́a relativa que va de 0 a 100 %, siguiendo la sugerencia de [12]. Encaminamiento El encaminamiento de SAMF simplemente selecciona de la tabla, el enlace con la mejor capacidad al sumidero y reenvı́a el paquete. 5.3.5. Pseudocódigo A continuación, se detallan los algoritmos 8, 9, 10, 11, 12, 13 implementados en la clase C++ del protocolo. 149 5.3. CONSCIENCIA DE RECURSOS CON SAMF Algoritmo 8: SAMF Procesar paquete de aplicación 1 2 3 4 5 6 7 8 crear paquete de red if la dirección destino = broadcast then guardar paquete en cache de inundación entregar al enlace para transmisión broadcast else buscar en la tabla la ruta de mejor capacidad al destino entregar al enlace para transmisión al siguiente nodo end Algoritmo 9: SAMF Procesar paquete INTEREST 1 2 3 4 5 6 7 8 9 10 11 if época del paquete 6= época actual then actualizar la época actual a la época del paquete recalcular las restricciones en la tabla de enlace end obtener la ruta A, la mejor de la tabla actualizar el enlace en la tabla con los datos del paquete obtener la ruta B, la nueva mejor de la tabla if ruta A 6= ruta B then crear paquete INTEREST con los datos de la nueva mejor ruta entregar paquete INTEREST al enlace para transmisión por broadcast end 150 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Algoritmo 10: SAMF Procesar paquete DATA 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 if cantidad de saltos del paquete > máxima cantidad de saltos then descartar else if el paquete es inundación then if el paquete no está en la cache de inundación then agregar a la cache de inundación entregar al enlace para retransmisión broadcast entregar a la capa de aplicación else descartar end else if destino final = mi dirección then entregar a la aplicación else buscar la ruta de mejor capacidad en tabla entregar al enlace para retransmisión al siguiente nodo end end Algoritmo 11: SAMF Recalcular restricciones de enlace 1 2 3 for cada ruta en la tabla do actualizar la restricción al valor de energı́a residual end 151 5.3. CONSCIENCIA DE RECURSOS CON SAMF Algoritmo 12: SAMF Actualizar enlace en la tabla 1 2 asignar la capacidad del enlace al mı́nimo entre la restricción y la capacidad que informa el paquete asignar los saltos del enlace a la cantidad que informa el paquete + 1 Algoritmo 13: SAMF Obtener la mejor ruta a destino 1 2 iterar la tabla y seleccionar la ruta de mayor capacidad si hay rutas de igual capacidad, seleccionar la de menor cantidad de saltos 152 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED 5.4. 5.4.1. Módulo de técnica mixta: EA-SPIN Diseño Una manera de combinar las técnicas de diseminación de interés y consciencia de energı́a es utilizar la negociación por metadatos de SPIN y el control de flujo por épocas de SAMF en un mismo algoritmo de encaminamiento. En este trabajo se estudia esa posibilidad definiendo EA-SPIN (Energy Aware SPIN), una versión de SPIN basada en M-SPIN y SAMF. SAMF y M-SPIN tienen en común la difusión de información de control con el sumidero iniciando el proceso periódicamente. Entonces, en EA-SPIN, además de registrarse la distancia al sumidero como lo hace M-SPIN, en la fase periódica de descubrimiento puede registrarse también la capacidad de la mejor ruta, como hace SAMF. Saltear negociación Cuando un nodo sensor genera un dato, este se anuncia a todos sus vecinos. En M-SPIN, sólo aquellos vecinos más cercanos al sumidero requerirán el dato. Si el nodo está más lejos del sumidero que el nodo que anunció, no participa de la negociación. Con la modificación que se introduce en EA-SPIN, el nodo que anuncia el dato incluye en el anuncio la capacidad de la mejor ruta conocida. Los nodos vecinos que tienen una capacidad mejor o igual a la anunciada son los que peticionarán el dato de manera adelantada, utilizando un tiempo máximo de espera de supresión de pedido menor al normal. Los nodos vecinos que están más cerca del sumidero esperarán escuchar que algún otro nodo ha peticionado el dato. Si el nodo más cercano al sumidero no escucha ningún otro pedido, entonces deberá negociar el dato. Si escucha un pedido de un nodo de mejor capacidad, se abstiene de continuar con la negociación, asumiendo que otro nodo se ha propuesto a sı́ mismo para encaminar el dato. Con este enfoque, se espera mejorar el problema de M-SPIN mencionado en [60], donde unos pocos nodos son utilizados una mayor cantidad de veces, por lo que disipan su energı́a más rápidamente que el resto, intentando mejorar consumo de energı́a en los nodos cercanos al sumidero. Repetición de anuncios EA-SPIN además agrega la repetición de anuncios. Si un dato anunciado no es pedido por un nodo vecino durante un intervalo de tiempo, el anuncio se repite hasta un número máximo de veces. Cuando un nodo envı́a un paquete de datos, este puede estar siendo esperado por más de un vecino. Al recibir un dato, EA-SPIN no lo anunciará inmediatamente, sino que esperará un 153 5.4. MÓDULO DE TÉCNICA MIXTA: EA-SPIN intervalo de tiempo al azar, para evitar colisiones que puedan producirse por la recepción simultánea del dato enviado por broadcast. Consciencia de energı́a El protocolo SAMF siempre va a consumir menos energı́a por que no tiene etapas de negociación, y por lo tanto se utiliza una menor cantidad de mensajes. Existe una diferencia conceptual entre los dos protocolos de base, que radica en qué extremo del enlace entre dos nodos decide el encaminamiento. En SAMF, el que encamina es el nodo origen, enviando el dato generado al vecino en la mejor ruta al sumidero que el nodo tiene registrado en sus tablas. En cambio en EA-SPIN el que encamina es el nodo destino, que escucha un dato anunciado y solicita su recepción, es decir, un nodo intermedio con mejor capacidad se postula a través de la petición para encaminar el dato. El hecho de que toda la comunicación en los protocolos EA-SPIN y M-SPIN se realice con broadcast permitirı́a una mejor respuesta a cambios en la topologı́a, por la naturaleza dinámica de negociación de los protocolos SPIN. En SAFM, el encaminamiento es por tablas, pero en EASPIN es por negociación, y las tablas se mantienen para que la negociación sea consciente de la energı́a. 5.4.2. Especificaciones Para el análisis, las siguientes especificaciones se construyen bajo la restricción de confiabilidad total, por lo que no se modelan las repeticiones de anuncios ni de peticiones. EA-SPIN Capacidad Valores de estado S = {INITIATOR, IDLE, ITERATE, DONE} SIN IT = {INITIATOR, IDLE} ST ERM = {DONE} Restricciones {BL, TR, CN, UI } Tipos de mensaje {START, ACK} Variables {epoch, distance, countAck} 154 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Al comenzar, el sumidero o nodo iniciador envı́a por broadcast un paquete START a todos sus vecinos, que contiene un valor de capacidad muy alto, cantidad saltos al sumidero inicializada en cero, y el identificador de época actual. Por cada ACK que recibe, decrementa un contador iniciado en un valor igual a la cantidad de vecinos. Cuando el contador llega a cero, todos los vecinos han determinado las capacidades de ruta y pasa al estado DONE de terminación local. Si recibe un paquete START, envı́a un acuse de recibo al nodo que lo emitió. INITIATOR Spontaneously begin send(START) to N(x); countAck := |N (x)|; end Receiving(ACK) begin countAck−−; if countAck = 0 then become DONE; endif end Receiving(START) begin send(ACK) to sender; end El resto de los nodos comienza en estado IDLE. En este esstado, al recibir el primer paquete START, determina si ha cambiado la época. En caso afirmativo, actualiza su identificador de época actual y recalcula las capacidades de enlace para la nueva época. Luego actualiza la tabla de encaminamiento y establece al nodo emisor como su nodo padre. Para seguir, envı́a por broadcast un nuevo paquete INTEREST con la capacidad de la mejor ruta conocida. Finalmente pasa al estado ITERATE. IDLE Receiving(START) begin // Nueva época if START.epoch != epoch then 155 5.4. MÓDULO DE TÉCNICA MIXTA: EA-SPIN Recompute contraints; endif Update routing table(START); distance := START.hop; parent := sender; countAck := |N (x)|; send(START) to N(x); become ITERATE; end En el estado ITERATE, el nodo itera hasta recibir un ACK de cada vecino, para cada una de sus actualizaciones de mejor ruta, transmitidas con paquetes START. Al recibir un paquete START, responde con ACK al emisor y actualiza la tabla de encaminamiento con la información que trae el paquete. Si la mejor ruta a cambiado (hay una nueva ruta de mayor capacidad, o igual capacidad que la anterior pero con menor cantidad de saltos) o la distancia del nodo es mayor que la cantidad de saltos del paquete, el nodo notifica este cambio transmitiendo por broadcast un nuevo paquete START con el nuevo valor de mayor capacidad y, como cantidad de saltos al sumidero, su distancia incrementada en 1. Cuando recibe un paquete ACK, decrementa el contador de acuses y cuando este llega a cero, envı́a su propio ACK al nodo definido como padre, pasando al estado DONE de terminación local. ITERATE Receiving(START) begin send(ACK) to sender; bestPathChanged := Update routing table(START); if bestPathChanged = true || distance > START.hop then if distance > START.hop then distance := START.hop; endif START.bestGate := Get best gate(); START.hop = distance + 1; countAck += |N (x)|; send(START) to N(x); endif end Receiving(ACK) begin 156 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED countAck−−; if countAck = 0 then send(ACK) to parent; become DONE; endif end EA-SPIN Negociar La negociación es similar a la que realiza M-SPIN, excepto por el pedido adelantado que realizan los nodos en la mejor ruta al sumidero, y por cancelar la negociación si un nodo con mejor capacidad la ha iniciado. Valores de estado S = {INITIATOR, IDLE, DIFUSE, GATHER, DONE} SIN IT = {INITIATOR, IDLE} ST ERM = {DONE} Restricciones {BL, TR, CN, UI } Tipos de mensaje {ADV, REQ, DATA} Parámetros RA = Máximo intervalo de espera para peticionar en forma adelantada RS = Máximo intervalo de espera para escuchar otro pedido y suprimir el propio Al comenzar, el nodo que tiene un nuevo dato para encaminar lo anuncia por broadcast con un paquete ADV, que incluye la capacidad de la mejor ruta. Luego pasa al estado DIFFUSE. INITIATOR Spontaneously begin send(ADV) to N(x); become DIFFUSE; end 157 5.4. MÓDULO DE TÉCNICA MIXTA: EA-SPIN El resto de los nodos comienza en estado IDLE. Al recibir un paquete ADV, inspecciona la capacidad del emisor que viene en el paquete, y si el nodo conoce una ruta de mejor capacidad, inicia la alarma de supresión de petición, que expirará en un tiempo al azar seleccionado en un intervalo menor que el que se utiliza para la espera normal de supresión de peticiones. Luego pasa al estado WAIT. Si al recibir el ADV, el nodo no posee mejor capacidad, pero está a menor distancia, inicia la alarma normal de supersión de pedido y pasa al estado WAIT. Si al recibir el paquete ADV el nodo no posee una ruta mejor ni está a menor distancia, se abstiene de participar pasando al estado DONE de terminación local. IDLE Receiving(ADV) begin //Revisa si tiene mejor capacidad que el que anunció if Better capacity(ADV) then set alarm := c(x) + u(RA) source := sender; become WAIT; else if distance < ADV.hop then set alarm := c(x) + u(RS) source := sender; become WAIT; else //Si no esta a menor distancia, //ni tiene mejor capacidad, //no participa become DONE; endif end En el estado WAIT, al expirar la alarma de supresión, el nodo envı́a por broadcast el paquete REQ especificando el nodo origen del anuncio y pasa al estado GATHER. Si en estado WAIT escucha un paquete REQ por el mismo dato, cancela la alarma suprimiendo su propia petición. Si el pedido escuchado proviene de un nodo con una mejor ruta al sumidero, se detiene la negociación pasando al estado DONE de terminación local. De lo contrario, el nodo pasa al estado GATHER. Si en estado WAIT el nodo escucha el dato esperado, cancela la alarma de supresión y anuncia por broadcast el nuevo dato, pasando al estado DIFFUSE. 158 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED WAIT When c(x) = alarm begin REQ.source = source; send REQ to N(x); become GATHER; end Receiving(REQ) begin //Si escucha un pedido por el mismo dato if source = REQ.source then unset alarm; //Suprime la petición if Better capacity(REQ) = false then // Saltea negociación become DONE; else // Continúa la negociación become GATHER; endif endif end Receiving(DATA) begin Cache(DATA); unset alarm; //Suprime la petición send ADV to N(x); become DIFFUSE; end En estado DIFFUSE, el nodo espera peticiones por el dato en negociación. Si recibe una petición par sı́ mismo, responde haciendo broadcast de un paquete DATA, y luego pasa al estado DONE de terminación local. Recordar que para el análisis se toma la base de SPIN-BC, que sólo envı́a el dato una vez por broadcast. Si en el estado DFFUSE recibe un paquete ADV de un nodo más cercano al sumidero, pasa al estado DONE asumiendo que no se requiere más su intervención. DIFFUSE 159 5.4. MÓDULO DE TÉCNICA MIXTA: EA-SPIN Receiving(REQ) begin //El pedido debe ser para este nodo if REQ.source = x then send DATA to N(x); become DONE; endif end Receiving(ADV) begin //Si un nodo más cerca del sumidero //anuncia el dato, ya no es necesario //continuar activo if ADV.hop < distance then become DONE; endif end En el estado GATHER, el nodo espera recibir el dato en negociación. Si recibe un paquete DATA, anuncia el nuevo dato enviando por broadcast un paquete ADV a todos sus vecinos y pasando al estado DIFFUSE. GATHER Receiving(DATA) begin Cache(DATA) send ADV to N(x); become DIFFUSE; end 5.4.3. Complejidad M Recordando las definiciones de la sección 5, la complejidad M es el costo en mensajes del algoritmo, es decir, la cantidad de transmisiones de mensajes necesarias para completar la ejecución del protocolo. Al igual que M-SPIN Distancia, y SAMF Capacidad, EA-SPIN Capacidad tiene la estructura de Bellman-Ford y ejecuta a lo sumo n−1 iteraciones (ver secciones 5.2.2 y 5.3.2), por lo que: M [EA-SPIN Capacidad] ∼ O(n2 ) 160 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED EA-SPIN Negociar suprime más rondas de negociación que M-SPIN, porque si un nodo escucha que otro a la misma distancia o mayor ha peticionado el dato anunciado, se abstiene de participar. En M-SPIN, si dos nodos a la misma distancia reciben un anuncio de un dato a mayor distancia del sumidero, ambos participan de la negociación. Por lo tanto, puede decirse que la complejidad M de EA-SPIN es también: M [EA-SPIN Negociar] ∼ O(n) 5.4.4. Detalles de implementación Paquete EA-SPIN El paquete EA-SPIN extiende el paquete de M-SPIN con la información del paquete SAMF, con la definición del fragmento de código 5.3: Fragmento de código 5.3: Paquete EA-SPIN 1 packet EASPINPkt extends SPINPkt { 2 int pathHops; double pathCapacity; long epochId; bool routeType; 3 4 5 6 7 } En el módulo de red se define como longitud de cabecera un valor de 24 bits, el mismo valor que se utiliza para todos los módulos de red. Ajuste paramétrico de EA-SPIN Se realizó un lote de simulaciones para ajustar los siguientes tiempos de espera: sendAgainWait es el tiempo para enviar un dato nuevamente si ya se envió requestAgainWait es el tiempo para volver a pedir un dato requestSuppressWait es el tiempo para esperar suprimir un pedido requestFirstWait es el tiempo de espera para pedir un dato de manera adelantada 161 5.4. MÓDULO DE TÉCNICA MIXTA: EA-SPIN repeatAdvWait es el tiempo de espera para repetir un anuncio requestAgainTimes cantidad de veces que se repite un pedido como máximo repeatAdvTimes cantidad de veces que se repite un anuncio como máximo El ajuste de EA-SPIN se realizó independientemente del ajuste realizado para M-SPIN. Se observó nuevamente que si la espera es muy corta o demasiado larga, el desempeño empeora. El ajuste se orienta a la asignación de esperas lo más cortas posibles que no degraden el desempeño (éxito, latencia, uniformidad de consumo) por la competencia por el medio. Se tuvo en cuenta el trabajo de [54], que describe los efectos de utilizar una frecuencia de muestreo demasiado alta (del orden de los 5ms) en la exactitud de la simulación: una distancia significativa de los resultados respecto de la realidad. Para la red definida, se encontró que con la siguiente configuración se logra un mejor desempeño: sendAgainWait 50 ms requestAgainWait 200 ms requestSuppressWait 300 ms requestFirstWait 150 ms repeatAdvWait 500 ms requestAgainTimes 7 repeatAdvTimes 5 Totalizadores Para analizar el comportamiento de los protocolos SPIN, se incluyeron en los módulos los siguientes contabilizadores de paquetes: Algunas relaciones entre ellos: nbAdvNew = nbAdvReceived - nbAdvNotProcessed nbReqReceived = nbReqNotProcessed + nbReqProcessed nbCacheSize = nbAdvSent - nbAdvRepeat nbCacheSize = nbDataForMe + ¡cantidad de muestras a sensar¿ nbDataForMe = nbDataReceived - nbDataNotProcessed 162 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Contabilizador nbAdv2Data nbAdvDuplicated nbAdvFar nbAdvNew nbAdvNotProcessed nbAdvReceived nbAdvRepeat nbAdvSent nbDataDuplicated nbDataForMe nbDataMaxHops nbDataNotProcessed nbDataPending nbDataReceived nbDataSent nbReqDuplicated nbReqForMe nbReqImmediate nbReqNotProcessed nbReqProcessed nbReqReceived nbReqRepeat nbReqSent nbReqSuppressed nbSkipNegotiation nbTotalSent nbCacheSize Descripción Relación entre la cantidad de paquetes de datos destinados al nodo y la cantidad de anuncios de datos que el nodo no posee Anuncios recibidos duplicados Anuncios recibidos e ignorados por provenir de un nodo más cercano al sumidero o con mejor capacidad Anuncios recibidos de datos que el nodo no posee Anuncios recibidos y descartados por alguna razón Total de anuncios recibidos Anuncios enviados por duplicado Total de anuncios enviados Datos recibidos por duplicado Datos recibidos y destinados a este nodo Datos recibidos y descartados por superar el máximo de saltos permitidos Datos recibidos y descartados por alguna razón Datos esperados y no recibidos Total de paquetes de datos recibidos Total de paquetes de datos enviados Peticiones recibidas por un dato que ya ha sido enviado y no ha transcurrido el tiempo de espera entre reenviı́os, por lo tanto se ignoran Peticiones recibidas destinadas a este nodo Peticiones enviadas en adelanto Peticiones recibidas no procesadas por alguna razón Peticiones recibidas procesadas Total de peticiones recibidas Peticiones enviadas por duplicado Total de peticiones enviadas Peticiones suprimidas Negociaciones salteadas Total de paquetes de negociación enviados: anuncios, peticiones y datos Tamaño de la cache Cuadro 5.5: Contadores para el análisis de SPIN nbReqProcessed = nbDataSent nbReqRepeat = nbReqRepeat 163 5.4. MÓDULO DE TÉCNICA MIXTA: EA-SPIN 5.4.5. Pseudocódigo Algoritmo 14: EA-SPIN Procesar paquete de aplicación 1 2 3 4 agregar datos a cache crear paquete ADV especificando la mejor capacidad conocida entregar al enlace para transmisión broadcast programar temporizador de repetición de anuncio Algoritmo 15: EA-SPIN Procesar paquete STARTUP 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 if época del paquete 6= época actual then actualizar la época actual a la época del paquete recalcular las restricciones en la tabla de enlace end obtener la ruta A, la mejor de la tabla actualizar el enlace en la tabla con los datos del paquete obtener la ruta B, la nueva mejor de la tabla if ruta A 6= ruta B Ó cantidad de saltos del paquete < mi distancia then if cantidad de saltos del paquete < mi distancia then asignar a mi distancia la cantidad de saltos del paquete end crear paquete STARTUP con los datos de la nueva mejor ruta y mi distancia + 1 entregar al enlace para transmisión por broadcast else descartar end 164 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Algoritmo 16: EA-SPIN Procesar paquete ADV de anuncio 1 2 3 4 5 6 7 8 9 10 11 12 13 if el dato anunciado no está en cache Y no está siendo negociado then if dirección final = broadcast then programar temporizador de supresión de pedido normal else if tengo mejor capacidad que la especificada en el paquete then programar temporizador supresión de pedido adelantado else if distancia del emisor > mi distancia then programar temporizador de supresión de pedido normal else descartar end else descartar end Algoritmo 17: EA-SPIN Procesar paquete REQ de pedido 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if dirección final 6= broadcast Y estoy negociando el dato Y no tengo mejor capacidad then cancelar temporizador de supresión de pedido else if origen de anuncio = mi dirección then if pasó el tiempo mı́nimo entre reenvı́os then crear paquete de datos entregar al enlace para transmisión por broadcast else descartar end else if hay temporizador de supresión de petición programado then cancelar el temporizador programar temporizador de repetición de pedido else descartar end 165 5.4. MÓDULO DE TÉCNICA MIXTA: EA-SPIN Algoritmo 18: EA-SPIN Procesar paquete DATA de datos 1 2 3 4 5 6 7 8 9 10 11 if el dato esta siendo negociado then cancelar temporizador de repetición de pedido agregar el dato a la cache if dirección final = mi dirección O dirección final = broadcast then entregar el dato a la aplicación end crear paquete de anuncio entregar al enlace para transmisión broadcast else descartar end Algoritmo 19: EA-SPIN Expira temporizador pedido 1 2 3 4 5 if el dato no está ya en cache Y no se superó la cantidad de pedidos repetidos then crear paquete de pedido entregar al enlace para transmisión por broadcast programar temporizador de repetición de pedido end 166 CAPÍTULO 5. IMPLEMENTACIÓN DE MÓDULOS DE RED Algoritmo 20: EA-SPIN Expira temporizador de repetición de anuncio 1 if el dato nunca fue enviado Y no se superó la cantidad de anuncios repetidos then 2 crear paquete de anuncio 3 entregar al enlace para transmisión por broadcast 4 programar temporizador de repetición de anuncio 5 end 5.5. Resumen de módulos desarrollados En la siguiente tabla se enumeran los módulos C++ desarrollados para poder llevar a cabo la simulación con Omnet++. Módulo SAMF SPIN SPIN-BC SPIN-RL M-SPIN EA-SPIN NetworkStudy NetworkTracer NodeApplLayer SinkApplLayer Propósito Módulo que implementa el protocolo de red con consciencia de energı́a SAMF Implementa el protocolo de red de diseminación SPIN Protocolo de red SPIN-BC Protocolo de red SPIN-RL Protocolo de red M-SPIN Versión de diseminación M-SPIN con consciencia de energı́a estilo SAFM Módulo de red base, con utilidades para contabilizar paquetes y totalizar consumo y niveles de energı́a Módulo de recolección de estadı́sticas Módulo de aplicación de nodo sensor Aplicación del sumidero Cuadro 5.6: Módulos desarrollados 167 5.5. RESUMEN DE MÓDULOS DESARROLLADOS 168 Capı́tulo 6 Simulación y conclusiones Para las simulaciones se utilizó la interfaz de red Nic802154 TI CC2420 (802.15.4-2006) como es sugerido por el ejemplo de encaminamiento en redes de sensores que trae la herramienta, implementando CSMA no ranurado (nonbeacon-enabled unslotted CSMA-CA). La interfaz alternativa Nic802154A (802.15.4a-2007) es apropiada para redes de muy baja carga según el estándar [28], por lo que se decidió no utilizar para los experimentos, ya que el patrón de tráfico seleccionado produce ráfagas de transmisiones no soportadas por ALOHA. Es importante mencionar que el módulo CSMA 802.15.4 que viene con el framework MiXiM 2.1 no implementa el modo ranurado, y sólo funciona en el modo competitivo. El uso de CSMA no ranurado implica una importante limitación al modelo: los nodos sensores no se sincronizan y deben mantener el tranceptor encendido todo el tiempo para poder recibir los frames. Debido a esta limitación, los efectos del encaminamiento en la vida útil de la red no serán evidenciados analizando la cantidad de tiempo que transcurre hasta el agotamiento de nodos. En lugar de ello, se utilizaron métricas de consumo en transmisiones. Con respecto a la capa fı́sica se debe aclarar que se deshabilitó el ruido térmico. Las caracterı́sticas completas del modelo son descriptas en detalle en la sección 4.2. 169 6.1. ESCENARIOS 6.1. Escenarios Se hicieron simulaciones de red para los siguientes escenarios, con cada uno de los tres protocolos estudiados: Escenario 1 2 3 4 Descripción Sensar 1 muestra en cada uno de los 79 nodos Sensar 100 muestras en cada uno de los 79 nodos 3 nodos sensan 100 muestras cada uno Sensar 1 muestra cada 1 m, en cada uno de los 79 nodos, durante 24 h Paquetes de datos 79 7900 300 113760 Cuadro 6.1: Escenarios simulados 6.2. Resultados Se debe tener en cuenta que, en todos los estudios, las estadı́sticas incluyen los paquetes enviados para diseminar la tarea, y todos los paquetes de control, STARTUP e INTEREST. 6.2.1. Complejidad M Para la comparación con las cotas teóricas, se asume que se ejecutó el algoritmo de asignación de capacidad/distancia una vez, y las negociaciones necesarias para encaminar la cantidad total de paquetes de datos, dada por el escenario. La cota de complejidad M es un lı́mite superior muy alto de cantidad de paquetes necesarios para completar la consulta y se espera que la métrica de las simulaciones esté lejos de ese valor. Recordando, las cotas superiores de cantidad de mensajes para la asignación de distancia y la negociación son: M [M-SPIN D] ≤ n· (n − 1) en una iteración de asignación de distancia n = 80 n· (n − 1) = 6,320 M [M-SPIN N] ≤ 3· (n − 1) por cada paquete a encaminar Escenario Escenario Escenario Escenario 1: 2: 3: 4: 6,320 + 79· 3· 79 = 25,043 6,320 + 79· 100· 3· 79 ∼ 1, 9 millones 6,320 + 79· 3· 3· 79 = 77,420 6,320 + 79· 1440· 3· 79 ∼ 27 millones 170 CAPÍTULO 6. SIMULACIÓN Y CONCLUSIONES Escenario 1 1 2 2 3 3 4 4 Protocolo M-SPIN EA-SPIN M-SPIN EA-SPIN M-SPIN EA-SPIN M-SPIN EA-SPIN M cota 25.043 25.043 1,9 millones 1,9 millones 77.420 77.420 27 millones 27 millones M simulación 1.688 2.088 150.953 153.564 4.940 6.174 2,17 millones 2,21 millones Cuadro 6.2: Cantidad total de paquetes enviados en cada escenario En la tabla 6.2 se compara la cota M, con la cantidad total de paquetes de red enviados en la simulación. 171 6.2. RESULTADOS 6.2.2. Métricas obtenidas Escenario 1 En el escenario 1 todos los nodos responden la consulta con un dato. Figura 6.1: Escenario 1 - Latencia media en el sumidero Figura 6.2: Escenario 1 - Tasa de éxito 172 CAPÍTULO 6. SIMULACIÓN Y CONCLUSIONES Figura 6.3: Escenario 1 - Overhead Figura 6.4: Escenario 1 - Total de energı́a de transmisión 173 6.2. RESULTADOS Figura 6.5: Escenario 1 - Media y máxima de saltos Figura 6.6: Escenario 1 - Media y desviación de energı́a de transmisión 174 CAPÍTULO 6. SIMULACIÓN Y CONCLUSIONES Escenario 2 En el escenario 2, todos los nodos responden con 100 paquetes de datos. Figura 6.7: Escenario 2 - Latencia media en el sumidero Figura 6.8: Escenario 2 - Tasa de éxito 175 6.2. RESULTADOS Figura 6.9: Escenario 2 - Overhead Figura 6.10: Escenario 2 - Total de energı́a de transmisión 176 CAPÍTULO 6. SIMULACIÓN Y CONCLUSIONES Figura 6.11: Escenario 2 - Media y máxima de saltos Figura 6.12: Escenario 2 - Media y desviación de energı́a de transmisión 177 6.2. RESULTADOS Escenario 3 En este escenario, sólo 3 nodos responden con 100 paquetes de datos. Figura 6.13: Escenario 3 - Latencia media en el sumidero Figura 6.14: Escenario 3 - Tasa de éxito 178 CAPÍTULO 6. SIMULACIÓN Y CONCLUSIONES Figura 6.15: Escenario 3 - Overhead Figura 6.16: Escenario 3 - Total de energı́a de transmisión 179 6.2. RESULTADOS Figura 6.17: Escenario 3 - Media y máxima de saltos Figura 6.18: Escenario 3 - Media y desviación de energı́a de transmisión 180 CAPÍTULO 6. SIMULACIÓN Y CONCLUSIONES Escenario 4 En el escenario 4, todos los nodos responden con 1440 paquetes, a razón de uno por minuto. Figura 6.19: Escenario 4 - Latencia media en el sumidero Figura 6.20: Escenario 4 - Tasa de éxito 181 6.2. RESULTADOS Figura 6.21: Escenario 4 - Overhead Figura 6.22: Escenario 4 - Total de energı́a de transmisión 182 CAPÍTULO 6. SIMULACIÓN Y CONCLUSIONES Figura 6.23: Escenario 4 - Media y máxima de saltos Figura 6.24: Escenario 4 - Media y desviación de energı́a de transmisión 183 6.2. RESULTADOS Consumo de energı́a en transmisiones Figura 6.25: Escenario 1 - Total de energı́a vs. distancia al sumidero Figura 6.26: Escenario 2 - Total de energı́a vs. distancia al sumidero 184 CAPÍTULO 6. SIMULACIÓN Y CONCLUSIONES Figura 6.27: Escenario 3 - Total de energı́a vs. distancia al sumidero Figura 6.28: Escenario 4 - Total de energı́a vs. distancia al sumidero 185 6.2. RESULTADOS Resumen de métricas Escenario 1 Tasa de éxito Overhead Energı́a total de transmisión (mWs) Consumo de transmisión medio (mWs) Desviación estándar del consumo de transmisión (mWs) Latencia media (s) en el sumidero Media de saltos en el sumidero Máxima de saltos en el sumidero SAMF 1 7 26 M-SPIN 0,87 24 51,9 EA-SPIN 0,98 26 52,2 0,33 0,66 0,66 0,63 0,90 1,05 0,02 0,22 1,91 4 5 5 8 9 9 Cuadro 6.3: Métricas de escenario 1 Escenario 2 Tasa de éxito Overhead Energı́a total de transmisión (mWs) Consumo de transmisión medio (mWs) Desviación estándar del consumo de transmisión (mWs) Latencia media (s) en el sumidero Media de saltos en el sumidero Máxima de saltos en el sumidero SAMF 1 5 2037,88 M-SPIN 0,92 20 4675,36 EA-SPIN 0,95 20 3793,43 25,80 59,18 48,02 65,5 94,06 102,53 0,02 0,22 1,86 4 5 5 8 10 9 Cuadro 6.4: Métricas de escenario 2 186 CAPÍTULO 6. SIMULACIÓN Y CONCLUSIONES Escenario 3 Tasa de éxito Overhead Energı́a total de transmisión (mWs) Consumo de transmisión medio (mWs) Desviación estándar del consumo de transmisión (mWs) Latencia media (s) en el sumidero Media de saltos en el sumidero Máxima de saltos en el sumidero SAMF 1 5 86,05 M-SPIN 0,84 19 153,38 EA-SPIN 0,97 21 153,35 1,09 1,94 1,94 3,03 4,33 5,15 0,02 0,25 2,02 5 5 5 6 8 7 Cuadro 6.5: Métricas de escenario 3 Escenario 4 Tasa de éxito Overhead Energı́a total de transmisión (mWs) Consumo de transmisión medio (mWs) Desviación estándar del consumo de transmisión (mWs) Latencia media (s) en el sumidero Media de saltos en el sumidero Máxima de saltos en el sumidero SAMF 1 5 29.292 M-SPIN 0,92 20 67.303 EA-SPIN 0,95 20 54.526 370,79 851,95 690,20 887,83 1.354,43 1.475,29 0,02 0,22 1,86 4 5 5 8 10 9 Cuadro 6.6: Métricas de escenario 4 187 6.2. RESULTADOS 6.2.3. Análisis de confiabilidad SPIN es un protocolo diseñado originalmente para diseminar información a la totalidad de la red, y M-SPIN y EA-SPIN intentan transformar la diseminación en encaminamiento convergente al sumidero. El diseño de EA-SPIN modifica la negociación en tres etapas ADV-REQ-DATA para que los nodos con mejor capacidad se ofrezcan primero para encaminar los datos, utilizando el modelo de capacidad de encaminamiento de SAMF. La confiabilidad en M-SPIN y EA-SPIN nunca alcanza el 100 % en las simulaciones realizadas. Esto puede deberse a que toda la comunicación en estos protocolos, tanto en la fase de asignación de distancia/capacidad, como en las negociaciones se realiza por broadcast. El módulo de enlace CSMA802154 no envı́a ACKs de frames broadcast, porque ası́ se se encuentra establecido en el estándar IEEE 802.15.4-2006 [31], y por ello todas las transmisiones de M-SPIN y EA-SPIN no tienen acuse de recibo en el enlace. La confiabilidad entonces depende en mayor medida de los protocolos de red y transporte. En la especificación de SPIN no se aclara qué sucede cuando un anuncio no es respondido por ningún vecino. Para mejorar la tasa de éxito se incluyó en el diseño de EA-SPN la repetición de anuncios por una cantidad configurable. También se evaluó la posibilidad de emitir paquetes ADV unicast directamente al siguiente nodo en la mejor ruta conocida, produciendo frames CSMA-ACK en el enlace, y de esta manera reducir la cantidad de anuncios perdidos, pero esto no mejoró el desempeño del protocolo. Según el estándar, los ACK se envı́an directamente, sin utilizar el mecanismo CSMACA [31], por lo que aumentaba la cantidad de descartes por interferencia. Se observa que la cantidad de colisiones se ve afectada por la carga del protocolo de red, e incide significativamente en el nivel de confiabilidad, dependiendo del diseño. El módulo de capa de enlace notifica a la capa de red cuando no puede transmitir un mensaje porque la cola está llena, o se ha superado el número máximo de backoffs, pero en las simulaciones no se produjeron descartes por esas causas. Los efectos de repetir anuncios pueden observarse en el resumen de métricas de la sección 6.2.2. En todos los escenarios simulados la tasa de éxito de EA-SPIN fue un poco mejor que la de M-SPIN. Intuitivamente puede pensarse que al agregar la repetición de anuncios, se agregan más mensajes al ciclo de negociación y se esperará que el efecto sea un mayor número de colisiones. Pero no resultó de esa manera en las simulaciones. Por ejemplo, en el escenario 4, se produjeron los siguientes totales de descartes de frames por interferencia: 188 CAPÍTULO 6. SIMULACIÓN Y CONCLUSIONES Escenario 4 Descartes por interferencia SAMF 9.647 M-SPIN 410.614 EA-SPIN 10.476 Cuadro 6.7: Total de frames descartados por interferencia La menor cantidad de descartes en EA-SPIN puede deberse también a las modificaciones a la negociación: cuando un nodo oye que otro nodo de mejor capacidad está negociando el dato, se abstiene de negociar, reduciendo la cantidad de mensaje transmitidos. Probablemente, los tiempos de espera de EA-SPIN bastante largos disminuyen la competencia por el medio, con el efecto no deseado de un gran incremento en la latencia de recepción del sumidero. 6.2.4. Consciencia de energı́a En los cuatro escenarios simulados, el consumo total de energı́a en transmisiones de EA-SPIN es similar o menor al de M-SPIN. En particular, sin tener en cuenta la menor tasa de éxito de M-SPIN: Escenario 1 2 3 4 M-SPIN 0,66 59,18 1,94 851,95 EA-SPIN 0,66 48,02 1,94 690,20 Ahorro 0% 18 % 0% 19 % Cuadro 6.8: Consumo total de energı́a en transmisiones Lo mismo sucede con el consumo medio de energı́a para transmisiones, que siempre es menor en EA-SPIN. Sin embargo, la desviación estándar del consumo en transmisiones es más alta en EA-SPIN y esto significa que el consumo es más desparejo entre los nodos, aún habiendo incorporado la capacidad de ruta basada en la energı́a residual en el encaminamiento. Cuanto más cerca se encuentra un nodo del sumidero, encamina una mayor cantidad de paquetes y el consumo de energı́a de transmisión difiere significativamente del consumo de los nodos más alejados. Ahora bien, las figuras 6.26 y 6.28 sugieren que las negociaciones evitadas y el uso de la capacidad de SAMF para decidir la participación en el encaminamiento contribuyen a ahorrar energı́a en los nodos más cercanos al sumidero. 189 6.2. RESULTADOS En particular, para los escenarios de respuestas transmitidas al sumidero desde la totalidad de los nodos, se observan los consumos de transmisión promedio según la distancia de las figuras 6.29 y 6.30. Figura 6.29: Escenario 2: Promedio de energı́a de transmisión por distancia Figura 6.30: Escenario 4: Promedio de energı́a de transmisión por distancia Es particularmente llamativo que la forma de la curva sea tan similar entre los dos escenarios. Observados los promedios, se debe aclarar que el consumo total por nodo difiere bastante entre nodos a la misma distancia. Haciendo referencia a las figuras 6.25, 6.26, 6.27 y 6.28, las curvas sugieren que los cambios introducidos al protocolo suavizan el consumo total en trasmisión en los nodos a distancias más cercanas al sumidero y disminuyen el 190 CAPÍTULO 6. SIMULACIÓN Y CONCLUSIONES consumo promedio de nodos a la misma distancia. Un análisis más extenso permitirı́a comprobar si el efecto contribuye a prolongar la conectividad que los sensores más cercanos al sumidero proveen, para poder encaminar una mayor cantidad de información antes de que la red se particione. 6.2.5. Experiencia con MiXiM 2.1 y Omnet++ 4.1 La herramienta de simulación seleccionada es gratis y de código abierto, tiene una comunidad de usuarios bastante pequeña, pero activa. En general las preguntas a foros de discusión son respondidas. Las utilidades estándares que provee (lı́nea de comandos, ambiente gráfico, ambiente de depuración) permiten trabajar de manera fluida. En especial, la visualización de la transmisión de mensajes de un nodo a otro en diagramas de secuencia, y los archivos de eventos fueron de enorme utilidad para depurar los módulos desarrollados. La ejecución por lotes también es muy fácil de parametrizar, lo que permitió ajustar los protocolos sin mayores dificultades. La gran fortaleza de Omnet++ podrı́a decirse que es el desarrollo modular, y la reutilización de módulos. También lo es la librerı́a de simulación, que da soporte a la recolección de estadı́sticas de manera sencilla, si bien requiere bastante programación. Para utilizar variables globales se provee un módulo pizarra al cual se accede con un mecanismo publisher/subscriber. Como gran debilidad puede decirse que en MiXiM los módulos agregados se liberan muy tempranamente, y pueden contener errores de diseño o configuración. Algunos módulos provistos por MiXiM 2.1 y utilizados para este trabajo, se encontraban en su primera versión o migración de frameworks anteriores y, por ejemplo, la plantilla para redes de sensores definı́a una frecuencia de transmisión de 2.4 GHz, y una modulación BPSK, cuando en el estándar IEEE 802.15.4-2006 se establece que a esa frecuencia se utiliza modulación O-QPSK. Más aún, se descubrió que la sensibilidad configurada en el módulo de capa fı́sica estaba siendo ignorada, y nodos distantes tenı́an alcance de radio para comunicarse. En los foros se hallaron comentarios reportando errores en otros módulos de capa de enlace y fı́sica ya liberados. El aprendizaje llevó un tiempo moderado, algunos problemas al comienzo, especialmente con la depuración, fueron por trabajar en Windows. La documentación de Omnet++ es bastante completa, y la de MiXiM está incluida en el código fuente y es buena. 191 6.3. CONCLUSIONES 6.3. Conclusiones Para extender la vida útil de las redes inalámbricas de sensores se debe optimizar el consumo de energı́a en todas las actividades que realizan los nodos sensores, y la comunicación es una de las tareas de mayor consumo energético. La optimización en las comunicaciones depende en gran parte del diseño de los algoritmos de encaminamiento, por lo que han recibido especial atención en la comunidad cientı́fica interesada en este tipo de redes durante los últimos años. En este trabajo se han estudiado los paradigmas de vanguardia en encaminamiento WSN, poniendo especial atención en las técnicas de diseminación de interés y en algoritmos que tienen consciencia de la energı́a. También se han estudiado los requerimientos de tráfico de distintos tipos de aplicaciones. Utilizando el software de simulación Omnet++ se ha configurado una red de sensores desplegados al azar con una aplicación de consulta iniciada por el sumidero, para probar el protocolo de diseminación, M-SPIN, el protocolo consciente de la energı́a, SAMF, y un protocolo diseñado mezclando las técnicas de ambos, EA-SPIN. Se desarrollaron módulos C++ para los tres algoritmos, y se agregaron y modificaron módulos de recolección de estadı́sticas. Para el modelo de nodo se utilizó una pila de protocolos IEEE 802.15.4 provista por el framework MiXiM 2.1 con algunas limitaciones en el modelo de enlace que condicionaron el análisis. Aún ası́, se consideró una mejor opción utilizar este esquema de trabajo, que simular los algoritmos en forma aislada, sin un modelo de canal inalámbrico compartido, ya que no se evidenciarı́an algunos importantes efectos como la interferencia. Se realizaron simulaciones de ajuste de los parámetros de los protocolos M-SPIN y EA-SPIN para la red de ejemplo y luego se simularon varios escenarios de consulta iniciada por el sumidero para comparar su desempeño. La métricas recolectadas indican que las modificaciones realizadas a M-SPIN producen una mayor tasa de éxito, pero una latencia mucho más larga. El análisis de consumo de energı́a de transmisión mostró que el consumo en general es similar o menor en EA-SPIN y que el ahorro se manifiesta en nodos más cercanos al sumidero, lo cual es esperable porque son los que encaminan una mayor cantidad de paquetes en favor de nodos más alejados. Un posterior análisis permitirı́a determinar si esta modificación al patrón de consumo es mejor y prolonga la conectividad provista por nodos más cercanos al sumidero. El resultado de tener en cuenta la capacidad de ruta en M-SPIN, además de la repetición de anuncios y la suspensión de la negociación si otro nodo con mejor capacidad la inicia primero, fue un consumo de transmisión moderadamente menor en algunos escenarios para la red de ejemplo. 192 CAPÍTULO 6. SIMULACIÓN Y CONCLUSIONES 6.4. Resumen de aportes del trabajo evaluación M-SPIN (Modified Sensor Protocols for Information via Negotiation) y SAMF (Self-adapting Maximum Flow Routing) en simulaciones de una red con una pila de protocolos IEEE 802.15.4 evaluación de SAFM [59] en simulaciones de un escenario de consulta por demanda, adoptando las sugerencias de trabajo de Flow Aumentation [12] evaluación de una variación de M-SPIN, agregando un control de flujo similar al que utiliza SAFM, continuando el trabajo presentado en [60], e incluyendo repetición de anuncios para aumentar la confiabilidad comparación del desempeño en simulaciones de los tres protocolos con métricas de eficiencia y uso de energı́a 6.5. Trabajo futuro Algunas cuestiones interesantes que han quedado fuera del alcance de este trabajo son: analizar la sensibilidad de los protocolos a un mayor tamaño de red, escalabilidad analizar la sensibilidad a los tiempos de espera en SPIN estudiar el comportamiento de los protocolos utilizando BMAC para el acceso al medio y enlace(actualmente MiXiM 2.1 contiene un módulo BMAC no utilizado en este trabajo) estudiar el comportamiento utilizando CSMA IEEE 802.15.4-2006 en modo ranurado (beacon-enabled slotted CSMA-CA) probar otros patrones de tráfico por consulta, consultas a diferentes subconjuntos de nodos, tareas diferentes para cada nodo, etc. implementar una red experimental real para ajustar el modelo y verificar el comportamiento en cuanto a la utilización de la energı́a analizar los patrones de consumo de energı́a que sugieren los protocolos y su incidencia en la vida útil de la red 193 6.5. TRABAJO FUTURO 194 Apéndices 195 Apéndice A Glosario ASK Amplitude Shift Keying, esquema de modulación que representa información digital por medio de variaciones en la amplitud de la onda portadora. AES Advanced Encryption Standard, estándar de cifrado por bloques. Beacon Nodo baliza o trama de señalización. BER Bit Error Rate, tasa de errores en los bits en un intervalo de tiempo. BPSK Binary Phase Shift Keying, esquema de modulación digital que representa los datos mediante variaciones en la fase de la onda portadora, BPSK utiliza dos fases separadas en 180 grados. Broadcast En un medio compartido, transmisión cuyo destino es la totalidad de los dispositivos en alcance. C4ISRT Command, control, communications, computing, intelligence, surveillance, reconnaissance and targeting. CAP Contention Access Period, en enlace CSMA, perı́odo de acceso por competencia. 197 CCA Clear Channel Assesment, en enlace CSMA, sensado del canal para determinar si está libre. CDMA Code Divission Multiple Access, técnica de acceso al medio que permite compartir una banda de frecuencias, que dispersa el ancho de banda de la señal combinandola con un código pseudo-random de mucha mayor frecuencia, utilizando códigos ortogonales transmisiones de diferentes usuarios no interfieren entre sı́. Conjunto dominante conexo Subconjunto de vértices de un grafo tal que se puede formar un árbol de expansión en el que todos los nodos del subconjunto no son hojas. CSMA Carrier Sense Multiple Access, protocolo de acceso al medio. CSS Chirp Spread Spectrum, técnica de modulación digital de espectro disperso, que utiliza el total del ancho de banda asignado, y codifica la información mediante pulsos con frecuencia creciente o decreciente. RTS/CTS Request To Send / Clear To Send, en enlace CSMA, solicitud de envı́o, y respuesta que permite a otros nodos abstenerse de utilizar el medio reduciendo colisiones. DCF Distributed Coordination Function, técnica de acceso al medio utilizada por tecnologı́as basadas en el estándar IEEE 802.11. Desviación estándar Medida de la distancia de las muestras a la media aritmética (promedio). DSSS Direct Sequence Spread Spectrum, técnica de modulación de espectro disperso, que utiliza el total del ancho de banda asignado, y que modula la señal de información multiplicándola por una cadena continua de pseudoruido, una secuencia de valores 1 y -1 a una frecuencia mucho mayor que la de la señal original. EAD Energy-Aware Data Centric Routing, protocolo de encaminamiento jerárquico centrado en datos. 198 APÉNDICE A. GLOSARIO ED Energy Detection, Detección de Energı́a, mecanismo de detección de intensidad de señal de tranceptores. ERS Expanding Ring Search, búsqueda por expansión en anillo, técnica de multicasting por rondas, donde en cada ronda el paquete transmitido alcanza nodos a una distancia cada vez mayor del iniciador [67]. Estación Base Nodo recolector o sumidero de datos. Flow Augmentation Aumentación de flujo, protocolo de encaminamiento consciente de la energı́a. Fuente Nodo que genera datos que deben ser encaminados. Grafo embebido Un grafo puede ser embebido en una superficie si admite ser dibujado en ella sin intersección de aristas [68] Graph Routing Encaminamiento por grafo, propuesto por WirelessHART, donde las rutas se identifican por el grafo al que pertenecen, y el dispositivo administrador de la red configura múltiples grafos de red que pueden solaparse. GTS Guaranteed Time Slot, en enlace CSMA, perı́odo de acceso al medio exclusivo garantizado. Hopping Secuencia de saltos de frecuencia. ISM Industrial Scientific and Medical, banda de frecuencias de uso no licenciado. LEACH Low Energy Adaptive Clustering Hierarchy, protocolo de encaminamiento jerárquico por clústeres. 199 LQI Link Quality Indicator, indicador de la calidad de la señal recibida. MAC Medium Access Layer, Capa de acceso al medio, según el modelo de referencia OSI. MIC Message Integrity Code, código de integridad del mensaje. Mote Nodo sensor. Multicast En un medio compartido, transmisión con destino de grupo. NAV Network Allocation Vector, en enlace CSMA, mecanismo de sensado y espera por acceso al medio. NP Nondeterministic polynomial time, clase de complejidad computacional que pueden ser resueltos en tiempo polinómico (que puede acotarse por un polinomio de las variables implicadas) por una máquina de Turing no determinista;. NP-Completo Subconjunto de problemas NP para los que el mejor algoritmo conocido para encontrar una solución es una busqueda exahustiva. OQPSK Offset Quadrature Phase Shift Keying, esquema de modulación digital que codifica la información por medio de cambios de fase en la onda portadora, utilizando 4 valores diferentes de fase. PAN Personal Areal Network, red de área personal. Picored Red en Bluetooth. PHY Physical Layer, Capa Fı́sica, según el modelo de referencia OSI. 200 APÉNDICE A. GLOSARIO PSSS Parallel Sequence Spread Spectrum, técnica de modulación basada en el principio CDMA, que codifica una secuencia de datos en paralelo. Relay Nodo que reenvı́a paquetes en favor de otros nodos. RSSI Received Signal Strength Indicator, medida de la intensidad de la señal recibida. schedule Temporizador o programación de tarea. SIFS Short Inter Frame Spacing, en redes 802.11, intervalo de tiempo entre una trama de datos y su acuse de recibo. SNR Signal to Noise Ratio, relación señal-ruido. Software Bus Sistema de comunicación de datos que permite intercambiar información por broadcast, donde los receptores definen los mensajes que desean recibir según su contenido (servicio publish/subscribe) [69]. Source Routing Encaminamiento en origen, el nodo que emite por primera vez el paquete especifica la ruta por la que debe encaminarse. Spanning tree Árbol recubridor o de expansión. SPIN Sensor Protocols for Information via Negotiation, protocolo de diseminación centrado en datos. Sumidero Nodo recolector de información. Superframe Especificación de actividades de comunicación y acceso al medio periódicas. 201 TDMA Time Division Multiplexed Access, tecnologı́a de acceso al medio para canales compartidos por división del tiempo en ranuras. Trama Frame. Tranceptor Radio transmisor y receptor. Unicast En un medio compartido, transmisión con destino único. UWB Ultra-wideband, tecnologı́a inalámbrica de comunicación a baja energı́a y ancho de banda amplio. WPAN Wireless Personal Area Network, red inalámbrica de área personal. WSN Wireless Sensor Network, red inalámbrica de sensores. ZigBee Estándar de comunicación para redes inalámbricas de sensores basado en el estándar IEEE 802.15.4-2003. 202 Apéndice B Métricas B.1. Recopilación de métricas En [27] se realiza una taxonomı́a de modelos de redes inalámbricas de sensores. Allı́ se proponen las siguientes métricas para evaluar protocolos para WSNs: Métrica Vida útil del sistema / Eficiencia Latencia Exactitud Tolerancia a fallas Escalabilidad Descripción Como los nodos utilizan una baterı́a de duración limitada, los protocolos deben ser eficientes en términos de energı́a. La vida útil del sistema se puede definir en forma genérica o especı́fica de la aplicación. De manera genérica por ejemplo, puede definirse como el tiempo hasta que la mitad de los nodos de la red agota su baterı́a. De manera especı́fica, el tiempo hasta que la aplicación ya no puede proveer información del fenómeno sensado, por ejemplo, una región queda sin cobertura. Se requiere obtener datos del fenómeno con un determinado retardo, especı́fico de cada aplicación. La exactitud requerida de la información nuevamente depende del tipo de aplicación, e impactará en la latencia y eficiencia con la que se obtendrán los datos. Por ejemplo, pueden requerirse mediciones más frecuentes si se utiliza un único nodo que si se utiliza un conjunto de nodos. La red debe ser tolerante a fallas en el sentido en que las fallas no catastróficas (por ejemplo, de algunos nodos) deben ocultarse a la aplicación. Cuán bueno es el comportamiento de la red al aumentar la densidad o cantidad de nodos. Cuadro B.1: Métricas de evaluación de protocolos 203 B.1. RECOPILACIÓN DE MÉTRICAS En [4] se presentan las siguientes métricas de análisis de desempeño: Métrica Vida útil del sistema Eficiencia energética Confiabilidad Cobertura Conectividad Calidad de Servicio Descripción Definida de varias maneras: a) tiempo hasta que un nodo agota su energı́a; b) tiempo hasta que los requisitos de calidad de servicio de la aplicación ya no pueden garantizarse; c) tiempo hasta que la red se particiona. Cantidad de paquetes que pueden ser exitosamente transmitidos por unidad de energı́a. Las colisiones de frames en la capa de enlace, el costo indirecto del encaminamiento, la pérdida de paquetes, y las retransmisiones reducen la eficiencia energética. La razón de la cantidad de paquetes recibidos con éxito vs. el total de paquetes transmitidos. Cobertura total significa que el espacio entero es monitoreado por los sensores. Si algún sensor deja de ser funcional, debido al agotamiento de su energı́a, ya no se puede monitorear una cierta región. La cobertura es la razón del espacio monitoreado vs. el espacio total. Para redes multi-salto, la red puede particionarse. La conectividad es una medida de cuan bien conectada está la red, o cuantos nodos han quedado aislados. Algunas aplicaciones tienen caracterı́sticas de tiempo real, por lo que pueden requerirse tasas especı́ficas de retardo, pérdidas y ancho de banda. Cuadro B.2: Otras métricas de desempeño En [26] se repasan múltiples criterios de evaluación. Casi todas las estrategias de evaluación incluyen alguna forma de métrica de energı́a. El autor se sorprende de que no se vinculen las métricas de energı́a a la calidad de servicio requerida por la aplicación. 204 APÉNDICE B. MÉTRICAS Cuadro B.3: Métricas de una revisión de criterios de evaluación Tipo de métrica Nombre la métrica Uso de energı́a y vida útil efectiva Paquetes antes de la partición Cantidad de paquetes de datos enviados y recibidos exitosamente antes de que la red se particione (debido al agotamiento de energı́a de algunos nodos) Uso de energı́a y vida útil efectiva Conectividad después de la partición Fracción de enlaces aún activos luego de la partición. Indica de qué manera un patrón de tráfico afecta una red. Uso de energı́a y vida útil efectiva Recursos gastados por paquete entregado En términos de enlaces (aristas) rotos por agotamiento de nodos: enlaces rotos / total de paquetes entregados. Uso de energı́a y vida útil efectiva Energı́a disipada promedio Energı́a total utilizada por nodo / cantidad de eventos detectados Uso de energı́a y vida útil efectiva Energı́a disipada total Suma del total de energı́a disipada en todos los nodos Uso de energı́a y vida útil efectiva Distribución de energı́a Uniformidad de los niveles de energı́a de los nodos Overhead y eficiencia Pérdida de mensajes Porcentaje de mensajes no recibidos por ningún nodo de la red Overhead de control La razón entre los mensajes de control vs. los de datos. Algunos autores usan la razón entre el total de mensajes enviados vs. los recibidos. Otros comparan la tasa de paquetes de aplicación con la de paquetes de encaminamiento. Overhead y eficiencia Tasa de entrega de eventos La razón de la cantidad de mensajes de eventos diferentes recibidos por el sumidero vs. la cantidad de mensajes originalmente enviados por el nodo fuente. Algunos autores utilizan la razón pérdidas vs. colisiones. Overhead y eficiencia Transmisiones por consulta La razón del total de paquetes enviados por la cantidad de consultas inyectadas en la red Overhead y eficiencia Longitud promedio de la ruta Número de saltos, relacionados al uso de la energı́a, pero cada autor puede dar resultados muy diferentes debido a la relación no lineal entre la potencia de transmisión y el alcance. Overhead y eficiencia Costo en mensajes de protocolo La cantidad de paquetes de encaminamiento generados por un algoritmo. Evaluación temporal Latencia El retardo promedio entre la transmisión de un evento y la recepción en el sumidero. Evaluación temporal Tiempo de reacción Varia según el autor, esencialmente es el tiempo que tarda el sumidero en recibir un mensaje de datos luego de que algún cambio ocurre en la red. Otras Facilidad de despliegue Mencionadas en algunos artı́culos. Overhead y eficiencia de Continúa en la página siguiente. . . 205 Descripción B.2. MÉTRICAS DE SIMULACIONES ESPECÍFICAS Tipo de métrica Otras Otras Otras B.2. Cuadro B.3 – Continuación Nombre de Descripción la métrica A pesar de que algunas técnicas requieren de la configuración de un gran Sensibilidad a los número de parámetros, esta métrica no parámetros es muy utilizada. Requerimientos de almacenamiento La cantidad de memoria requerida por cada nodo Escalabilidad Como varı́a el comportamiento del protocolo al variar la densidad de nodos, la cantidad de nodos, y la cantidad de fuentes y sumideros. Métricas de simulaciones especı́ficas En [62] se evalúa a SPIN utilizando las siguientes métricas: Métrica Tasa de éxito Eficiencia energética Cantidad de saltos de la ruta Descripción La probabilidad de entregar exitosamente los paquetes de datos a los nodos interesados. La cantidad de nodos que reenvı́an cuando la tasa de éxito es 1 (no es lo mismo que hop count?). La cantidad de saltos entre el nodo origen y el nodo que solicita el dato. Cuadro B.4: Métricas de evaluación del protocolo SPIN Ası́ mismo, en [63], se evalúa un protocolo orientado a mantener la conectividad de una red de nodos estacionarios desplegados al azar, maximizando la vida útil de la red. Cada nodo sensa el medio ambiente en forma periódica y produce datos que deben ser comunicados a un único sumidero, a una tasa constante. En este trabajo se compara el desempeño con los protocolos descriptos en [12]. Métrica Vida útil de los nodos Descripción Se dice que un nodo sensor muere cuando agota su energı́a o no existe una ruta al sumidero. Tiempo hasta que la red se particiona Proceso de cobertura Fracción de el espacio cubierta por los nodos, que decrece a medida que los nodos mueren. Cuadro B.5: Métricas de evaluación del protoclo PBR 206 APÉNDICE B. MÉTRICAS También, en [39], se muestran resultados de simulaciones de evaluación de EAD. El protocolo construye un árbol de encaminamiento para enviar datos a un único sumidero. Métrica Cantidad de nodos activos Rendimiento Consumo de energı́a Descripción Indica la cantidad de fallas de nodo debido a la baja de energı́a con el paso del tiempo. La falla se caracteriza por la incapacidad de generar paquetes, definida por un umbral de energı́a disponible. Volumen de datos transmitido al sumidero a medida que pasa el tiempo. Total de energı́a empleada por la red a medida que pasa el tiempo. Muestra la capacidad de ahorrar energı́a del algoritmo. Cuadro B.6: Métricas de evaluación del protocolo EAD 207 B.2. MÉTRICAS DE SIMULACIONES ESPECÍFICAS 208 Apéndice C Modificaciones a MiXiM 2.1 C.1. Energı́a de transmisión Para poder totalizar la energı́a de transmisión, y habilitar el cálculo de estadı́sticas, se modificó el módulo de baterı́a, para permitir el acceso público a los totales de consumo por actividad, agregando el método getActivityTotal() que se muestra en el fragmento de código C.1: Fragmento de código C.1: Método getActivityTotal() 1 2 3 4 5 6 7 8 9 10 11 double SimpleBattery::getActivityTotal(int act) { double total = 0; for (int i = 0; i < numDevices; i++) { for (int j = 0; j < devices[i].numAccts; j++) { if (j == act) { total += devices[i].accts[j]; } } } return total; } La modificación permitió también a los módulos de protocolo consultar el consumo acumulado por actividad, por ejemplo, en transmisiones. C.2. Total de mensajes Para que se graben estadı́sticas sobre el total de paquetes enviados, se necesita utilizar la utilidad Blackboard. El Blackboard es un módulo que permite encapsular variables globales, permitiendo un intercambio de información de estilo pizarra entre los módulos. La red WSNRouting utiliza un módulo de seguimiento, que se suscribe a la pizarra, para ser notificado cuando la aplicación envı́a o recibe un paquete. Para utilizar un módulo de seguimiento más completo y personalizado, el 209 C.2. TOTAL DE MENSAJES mismo se hace configurable, modificando la definición de la red WSNRouting.ned, como se muestra en el fragmento de código C.2: Fragmento de código C.2: Redefinición del módulo de rastreo 1 2 3 4 5 network WSNRouting { parameters: string tracerType = default("SimTracer"); //type of the network layer submodules: simTracer: <tracerType> {} Para poder extender y mejorar la clase SimTracer se debió hacer que la herencia de ImNotifiable sea pública, como se muestra en el fragmento de código C.3: Fragmento de código C.3: Herencia pública de ImNotifiable para SimTracer 1 2 class SimTracer:public cSimpleModule, public ImNotifiable { Se creó la clase NetworkTracer que es notificada sobre la publicación de un ı́tem global de tipo cPacket en la pizarra, que comunica cada paquete enviado y recibido, de red o aplicación, y cada paquete de red superfluo. El proceso de las notificaciones se muestra en el fragmento de código C.4: Fragmento de código C.4: Total de paquetes a partir de notificaciones 1 2 3 4 5 6 class NetworkTracer : public SimTracer { public: virtual void receiveBBItem(int category, const BBItem * details, int scopeModuleId); } 7 8 9 10 11 void NetworkTracer::receiveBBItem(int category, const BBItem * details, int scopeModuleId) { cModule * module = simulation.getModule(scopeModuleId); 12 13 14 15 16 17 18 19 20 21 22 23 24 if (category == catPacket) { if (strcmp(module->getName(), "net") == 0) { packet = *(static_cast<const Packet*>(details)); if(packet.isSent()) { nbNetwPacketsSent++; } else { nbNetwPacketsOverhear++; } } else { SimTracer::receiveBBItem(category, details, scopeModuleId); } } else if (category == catHostState){ 210 APÉNDICE C. MODIFICACIONES A MIXIM 2.1 25 26 ... } Las notificaciones son publicadas en la pizarra por el módulo de red, como se ilustra en el fragmento de código C.5: Fragmento de código C.5: SPIN publica paquetes envı́ados y de sobreescucha 1 2 3 4 5 6 7 void SPIN::publishPacketOverhear(){ packet.setPacketSent(false); packet.setNbPacketsSent(0); packet.setNbPacketsReceived(1); packet.setHost(myNetwAddr); world->publishBBItem(catPacket, &packet, getId()); } 8 9 10 11 12 13 14 15 void SPIN::publishPacketSent(){ packet.setPacketSent(true); packet.setNbPacketsSent(1); packet.setNbPacketsReceived(0); packet.setHost(myNetwAddr); world->publishBBItem(catPacket, &packet, getId()); } C.3. Energı́a residual En MiXiM, el módulo que graba totales de baterı́a se llama BatteryStats, pero algunos valores necesarios para el análisis en este trabajo no son grabados. Para poder grabar la energı́a residual al terminar la simulación, se modificó BatteryStats.cc como se muestra en el fragmento de código C.6: Fragmento de código C.6: Grabación de la energı́a residual al finalizar 1 2 3 4 void BatteryStats::summary(double init, double final, simtime_t lifetime) { recordScalar("final", final, "mW-s"); ... Para poder identificar a qué actividad corresponde el consumo registrado se modificó la descripción del valor, según el fragmento de código C.7: Fragmento de código C.7: Grabación del consumo por actividad 1 2 3 4 5 6 void BatteryStats::detail(DeviceEntry *devices, int numDevices) { for (int j = 0; j < devices[i].numAccts; j++) { // Record activity energy stringstream activitySummary; 211 C.4. SENSIBILIDAD activitySummary << "activity-" << j; recordScalar(activitySummary.str().c_str(), devices[i].accts[j]); 7 8 9 ... C.4. Sensibilidad Se modificó el módulo Decider802154Narrow para que se descarten frames que se reciben con una potencia de transmisión menor que la sensibilidad del tranceptor. La modificación se muestra en el fragmento de código C.8 Fragmento de código C.8: Descarte por baja intensidad en Decider802154Narrow 1 2 3 4 5 6 7 8 9 10 11 12 13 14 simtime_t Decider802154Narrow::processNewSignal(AirFrame* frame) { Signal& s = frame->getSignal(); simtime_t time = MappingUtils::post(s.getSignalStart()); double rcvPower = s.getReceivingPower()->getValue(Argument(time)); ... // check whether signal is strong enough to receive if ( rcvPower < sensitivity ) { // Discard frame return notAgain; } ... } Con la modificación mostrada, los frames que no llegan con la intensidad de señal mayor que la sensibilidad son descartados. De esta manera con una potencia de transmisión de 1 mW se logra un alcance aproximado de 85 m. 212 Referencias [1] Neha Jain. Energy Aware Adaptive Routing Protocols in Wireless Sensor Networks. PhD thesis, University of Cincinnati, 2004. [2] Suyoung Yoon. Power Management in Wireless Sensor Networks. PhD thesis, North Carolina State University, 2007. [3] Libelium. Libelium Environment - http://www.libelium.com/ applications/Environment, 2010. [4] Kazem Sohraby, Daniel Minoli, and Taieb Znati. Wireless Sensor Networks. Wiley, 2007 edition, 2007. [5] Levente Butty and Gergely Ács. A Taxonomy of Routing Protocols for Wireless Sensor Networks, 2007. [6] ZigBee Alliance. ZigBee Specification, 2008. [7] Najet Boughanmi and YeQiong Song. Improvement of Zigbee routing protocol including energy and delay constraints, 2007. [8] Charles E Perkins and Elizabeth M Royer. Ad-hoc On-Demand Distance Vector Routing. In Proceedings Of The 2nd IEEE Workshop On Mobile Computing Systems And Applications, pages 90–100, 1997. [9] Ouadoudi Zytoune, Youssef Fakhri, and Driss Aboutajdine. Lifetime Optimization for Wireless Sensor Networks. IEEE/ACS International Conference on Computer Systems and Applications, pages 816–820, 2009. [10] Jamal N Al-Karaki and Ahmed E Kamal. Routing Techniques in Wireless Sensor Networks : A Survey. Wireless Communications, IEEE, 11(6):6–28, 2004. [11] K Akkaya and M Younis. A Survey on Routing Protocols for Wireless Sensor Networks. Ad Hoc Networks, 3:325–349, 2005. [12] Jae-hwan Chang and Leandros Tassiulas. Maximum Lifetime Routing in Wireless Sensor Networks. IEEE/ACM Transactions On Networking, 12:609–619, 2004. 213 REFERENCIAS [13] Charles Pandana and K J Ray Liu. Maximum Connectivity and Maximum Lifetime Energy-aware Routing for Wireless Sensor Networks. Global Telecommunications Conference, 2:1034–1038, 2005. [14] Yeling Zhang, Ramkumar Mahalingam, and Nasir Memon. Information Flow Based Routing Algorithms for Wireless Sensor Networks. Global Telecommunications Conference, 2:742–747, 2004. [15] Vahid Shah-mansouri and Vincent W S Wong. Distributed Maximum Lifetime Routing in Wireless Sensor Networks Based on Regularization. Global Telecommunications Conference, pages 598–603, 2007. [16] Shinya Ito and Kenji Yoshigoe. Consumed-Energy-Type-Aware Routing for Wireless Sensor Networks. Wireless Telecommunications Symposium, pages 1–6, 2007. [17] Rahul C Shah and Jan M Rabaey. Energy Aware Routing for Low Energy Ad Hoc Sensor Networks. Wireless Communications and Networking Conference, 1:350–355, 2002. [18] Chalermek Intanagonwiwat, Ramesh Govindan, and Deborah Estrin. Directed Diffusion : A Scalable and Robust Communication Paradigm for Sensor Networks. In MOBICOM, pages 56–67. ACM, 2000. [19] I F Akyildiz, W Su, Y Sankarasubramaniam, and E Cayirci. Wireless sensor networks : a survey. Computer Networks, 38:393–422, 2002. [20] Tampere University of http://www.tkt.cs.tut.fi/ 2011. Technology. WIREPAS Project research/daci/cp wirepas overview.html, [21] Jennifer Yick, Biswanath Mukherjee, and Dipak Ghosal. Wireless sensor network survey. Computer Networks, 52:2292–2330, 2008. [22] Holger Karl and Andreas Willig. Protocols and Architectures for Wireless Sensor Networks. Wiley, 2005. [23] TinyOS. http://www.tinyos.net/, 2011. [24] MEMSIC. MICAz Datasheet - http://www.memsic.com/support/ documentation/wireless-sensor-networks/ category/7datasheets.html?download=148 %253Amicaz, 2011. [25] Yingshu Li, My T. Thai, and Weili Wu, editors. Wireless Sensor Networks and Applications. Spinger, 2008. [26] Ronan Mac Ruairı́, Mark T Keane, and Gerry Coleman. A Wireless Sensor Network Application Requirements Taxonomy. Sensor Technologies and Applications, pages 209–216, 2008. 214 REFERENCIAS [27] Sameer Tilak, Nael B Abu-ghazaleh, and Wendi Heinzelman. A Taxonomy of Wireless Micro-Sensor Network Models. ACM Mobile Computing And Communications Review, 6:28–36, 2002. [28] IEEE. IEEE 802.15.4a-2007 Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Low-Rate Wireless Personal Area Networks (WPANs) Amendment 1: Add Alternate PHYs. 2007(August), 2007. [29] Shahin Farahani. Zigbee Wireless Networks and Transceivers. Elsevier, 2008. [30] ZigBee Alliance. ZigBee Standards - http://www.zigbee.org/ Standards/Overview.aspx, 2011. [31] IEEE. IEEE 802.15.4-2006 Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Low-Rate Wireless Personal Area Networks (WPANs). Control, 2006(September), 2006. [32] Jianping Song, Song Han, Aloysius K Mok, Deji Chen, Mike Lucas, Mark Nixon, and Wally Pratt. WirelessHART : Applying Wireless Technology in Real-Time Industrial Process Control. Real-Time and Embedded Technology and Applications Symposium, pages 377–386, 2008. [33] IEC. IEC 62591 Ed. 1.0 Industrial communication networks - Wireless communication network and communication profiles - WirelessHART, 2010. [34] HARTCOMM. WirelessHART - http://www.hartcomm.org/ protocol/wihart/wireless how it works.html, 2011. [35] Tomas Lennvall and Stefan Svensson. A Comparison of WirelessHART and ZigBee for Industrial Applications. Factory Communication Systems, pages 85–88, 2008. [36] Azzedine Boukerche, Mohammad Z Ahmad, Begumhan Turgut, and Damla Turgut. A Taxonomy of Routing Protocols in Sensor Networks, pages 129 –160. Wiley-IEEE Press, 1 edition, 2008. [37] W Heinzelman, A Chandrakasan, and H Balakrishnan. Energy-Efficient Communication Protocol for Wireless Microsensor Networks. Proceedings of the 33rd Hawaii International Conference on System Sciences, 2, 2000. [38] Ananth Rao, Sylvia Ratnasamy, Christos Papadimitriou, Scott Shenker, and Ion Stoica. Geographic Routing without Location Information. In Mobile computing and networking, pages 03–218. ACM, 2003. 215 REFERENCIAS [39] Azzedine Boukerche, George Washington, and Joseph Linus. EnergyAware Data-Centric Routing in Microsensor Networks. In Modeling analysis and simulation of wireless and mobile systems, pages 42–49. ACM, 2003. [40] Tayseer Al-khdour and Uthman Baroudi. A Generalized Energy-Aware Data Centric Routing for Wireless Sensor Network. In Signal Processing and Communications, number November, pages 24–27. IEEE, 2007. [41] Antonio Carzaniga and Alexander L Wolf. Content-Based Networking : A New Communication Infrastructure, 2002. [42] Wendi Rabiner Heinzelman, Joanna Kulik, and Hari Balakrishnan. Adaptive Protocols for Information Dissemination in Wireless Sensor Networks. pages 174–185, 1999. [43] F Zabin, S Misra, I Woungang, HF Rashvand, N-W A, and M Ahsan Ali. REEP: data-centric, energy-efficient, reliable routing protocol for wireless sensor networks. Communications, IET, 2(8):995– 1008, 2008. [44] Michele Mastrogiovanni, Chiara Petrioli, Michele Rossi, Andrea Vitaletti, and Michele Zorzi. Integrated Data Delivery and Interest Dissemination Techniques for Wireless Sensor Networks. Global Telecommunications Conference, pages 1–6, 2006. [45] Lorenzo Orecchia, Ro Panconesi, Chiara Petrioli, and Andre Vitaleti. Localized Techniques for Broadcasting in Wireless Sensor. In DIALMPOMC. ACM Press, 2004. [46] Joanna Kulik and Wendi Heinzelman. Negotiation-Based Protocols for Disseminating Information in Wireless Sensor Networks. Wireless Networks, 8:169–185, 2002. [47] Mike Woo and Suresh Singh. Power-Aware Routing in Mobile Ad Hoc Networks, 1998. [48] Leandros Tassiulas and Jae-hwan Chang. Routing for Maximum System Lifetime in Wireless Ad-hoc Networks. In 37-th Annual Allerton Conference on Communication, Control, and Computing, 1999. [49] C.-K. Toh. Maximum Battery Life Routing to Support Ubiquitous Mobile Computing in Wireless Ad Hoc Networks. IEEE Communications Magazine, 39(6):138–147, 2001. [50] Jae-hwan Chang and Leandros Tassiulas. Energy Conserving Routing in Wireless Ad-hoc Networks. In INFOCOM 2000. Nineteenth Annual Joint Conference of the IEEE Computer and Communications Societies. Proceedings. IEEE, pages 22–31. ATIRP, 2000. 216 REFERENCIAS [51] OpenSim. Omnet++ User Manual, 2010. [52] The Eclipse Foundation. Eclipse - http://www.eclipse.org/, 2011. [53] Xiaodong Xian, Weiren Shi, and He Huang. Comparison of OMNET ++ and Other Simulator for WSN Simulation. In Industrial Electronics and Applications, pages 1439–1443. IEEE, 2008. [54] C Mallanda, A Suri, V Kunchakarra, S S Iyengar, R Kannan, and A Durresi. Simulating Wireless Sensor Networks with OMNeT ++, 2005. [55] Ugo Maria Colesanti, Carlo Crociani, and Andrea Vitaletti. On the Accuracy of OMNeT ++ in the Wireless Sensor Networks Domain : Simulation vs . Testbed. In Proceedings of the 4th ACM workshop on Performance evaluation of wireless ad hoc, sensor,and ubiquitous networks. ACM, 2007. [56] MiXiM. MiXiM - http://mixim.sourceforge.net/, 2011. [57] Jérôme Rousselot, Jean-Dominique Decotignie, Marc Aoun, Peter van Der Stok, Ramon Serna Oliver, and Gerhard Fohler. Accurate Timeliness Simulations for Real-Time Wireless Sensor Networks. In EMS ’09 Proceedings of the 2009 Third UKSim European Symposium on Computer Modeling and Simulation. IEEE, 2009. [58] Texas Intruments. 2.4 GHz IEEE 802.15.4 / ZigBee-ready RF Transceiver Datasheet, 2010. [59] Alessandro Bogliolo, Saverio Delpriori, Emanuele Lattanzi, and Andrea Seraghiti. Self-adapting maximum flow routing for autonomous wireless sensor networks. Cluster Computing, 14(1), 2011. [60] Zeenat Rehena and Sarbani Roy. A Modified SPIN for Wireless Sensor Networks. In Communication Systems and Networks, pages 1–4, 2011. [61] Xiangyang Li and Yajun Wang. Random Deployment of Wireless Sensor Networks : Power of Second Chance. In The 15th International Computing and Combinatorics Conference, 2009. [62] Dandan Liu, Xiaodong Hu, and Xiaohua Jia. Energy efficient information dissemination protocols by negotiation for wireless sensor networks. Computer Communications, 29(11):2136–2149, 2006. [63] Praveen Kumar, Joy Kuri, Pavan Nuggehalli, Mario Strasser, Martin May, and Bernhard Plattner. Connectivity-aware Routing in Sensor Networks. Sensor Technologies and Applications, pages 387–392, 2007. 217 REFERENCIAS [64] Dazhi Chen and Pramod K Varshney. QoS Support in Wireless Sensor Networks: A Survey. In International Conference on Wireless Networks, 2004. [65] Nicola Santoro. Design and Analysis of Distributed Algorithms. Wiley, 2007. [66] Dimitri P. Bertsekas Tsitsiklis and John N. Parallel and Distributed Computation: Numerical Methods. Athena Scientific, 1997. [67] Damien Magoni and Jean-jacques Pansiot. Oriented Multicast Routing Algorithm Applied to Network-level Agent Search. Discrete Mathematics And Theoretical Computer Science, pages 255–272, 2001. [68] Petra Mutzel and René Weiskircher. Computing Optimal Embeddings for Planar Graphs. In Proceedings COCOON ’00 volume 1858 of LNCS, pages 94–104. Springer Verlag, 2000. [69] Ivy. Ivy Software Bus - http://www2.tls.cena.fr/ products/ivy/about.shtml, 2011. 218