ESCUELA TÉCNICA SUPERIOR DE INGENIERÍAS INFORMÁTICA Y DE TELECOMUNICACIÓN Departamento de Teorı́a de la Señal, Telemática y Comunicaciones PROYECTO FIN DE CARRERA Simulación en OPNET de ataques a la seguridad 802.11 mediante técnicas de jamming Marı́a del Carmen Pastor Morales Director: Gabriel Maciá Fernández Granada, 8 de julio de 2009 Simulación en OPNET de ataques a la seguridad 802.11 mediante técnicas de jamming Marı́a del Carmen Pastor Morales PALABRAS CLAVE: IEEE 802.11, comportamiento egoı́sta, capa MAC, CSMA/CA, jamming, OPNET Modeler. Resumen El presente proyecto estudia el comportamiento egoı́sta en la capa MAC para redes con tecnologı́a IEEE 802.11. El comportamiento egoı́sta consiste en que una estación realice deliberadamente un uso incorrecto del protocolo CSMA/CA para ganar ancho de banda a expensas del resto de estaciones. Para ello una alternativa es que la estación egoı́sta provoque colisiones que hagan que se pierdan las tramas legı́timas de las demás, llevando a cabo el proceso conocido como jamming. En este proyecto se estudia el comportamiento egoı́sta en la capa MAC realizando una implementación de ataques mediante técnicas de jamming. Dicha implementación se efectúa sobre la herramienta software de simulación de redes OPNET Modeler. Además se desarrolla una utilidad de registro de mensajes que almacena tanto información del comportamiento del protocolo CSMA/CA de la capa MAC, como del proceso de jamming. Por último, para comprobar la efectividad y analizar los detalles del funcionamiento de los ataques implementados, se realiza una baterı́a de simulaciones sobre OPNET Modeler. A partir de estas simulaciones se obtienen resultados que permiten estudiar las consecuencias de los ataques y sacar conclusiones. Simulation in OPNET of 802.11 security attacks with jamming techniques Marı́a del Carmen Pastor Morales KEYWORDS: IEEE 802.11, selfish behaviour, MAC layer, CSMA/CA, jamming, OPNET Modeler. Abstract This thesis is focused on the study of the selfish behaviour in IEEE 802.11 networks at the MAC layer. The selfish behaviour is that performed by a network station which deliberately misuse the specifications of the CSMA/CA protocol. The purpose of the selfish station is either to gain throughput at the expense of other stations, or to deny the service of certain network participants. In order to do this, one strategy consists in the selfish node causing colisions and loss of other station’s legal frames. This process is known as jamming. This thesis evaluates selfish behaviour at MAC layer by using jamming techniques. The implementation of these attacks is done within OPNET Modeler network simulator. Additionaly, a log tool has been developed for recording CSMA/CA protocol behaviour and jamming process information. Finally, in order to evaluate the performance and functioning of the implemented attacks, a simulations set is performed within OPNET Modeler. With these simulations we obtain results to study attacks consequences and to draw conclusions. Yo, Marı́a del Carmen Pastor Morales, alumna de la titulación Ingenierı́a Informática de la Escuela Técnica Superior de Ingenierı́as Informática y de Telecomunicación de la Universidad de Granada, con DNI 45737691Y, autorizo la ubicación de la siguiente copia de mi Proyecto Fin de Carrera en la biblioteca del centro, para que pueda ser consultada por las personas que lo deseen. Fdo: Marı́a del Carmen Pastor Morales Granada, 8 de julio de 2009 D. Gabriel Maciá Fernández , Profesor del Departamento de Teorı́a de la Señal, Telemática y Comunicaciones de la Escuela Técnica Superior de Ingenierı́as Informática y de Telecomunicación de la Universidad de Granada, como director del Proyecto Fin de Carrera de Marı́a del Carmen Pastor Morales INFORMO: que el presente proyecto titulado “Simulación en OPNET de ataques a la seguridad 802.11 mediante técnicas de jamming” ha sido realizado por la mencionada alumna bajo mi supervisión, y que autorizo la defensa de dicho proyecto ante el tribunal que corresponda. Y para que ası́ conste, expido y firmo el presente informe en Granada a 8 de julio de 2009. Fdo: D. Gabriel Maciá Fernández Agradecimientos En primer lugar agradecer a mi madre y a mis hermanos, en especial a Juan, el apoyo que durante todos mis estudios en Córdoba y Granada he recibido de ellos. Dar gracias también a todos mis amigos, sobretodo a Javi por su apoyo, cariño y por la ayuda incondicional que me ha prestado durante todos estos años. También a mi compañero y amigo Eusebio por soportarme y por los momentos de estrés que hemos superado juntos, y a mis “amigos de Granada” Maite, Jose, Luismi y Fernando por los buenos ratos que me han hecho pasar en esta ciudad. Por último, dar gracias a mi director Gabriel Maciá por el interés, animo y apoyo que me ha dedicado durante el desarrollo de este proyecto. Sinceramente, gracias. ÍNDICE GENERAL 1. Introducción 1.1. Presentación . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Descripción del problema . . . . . . . . . . . . . . . . . . . . 1.2.1. Estándares de comunicación en redes . . . . . . . . . 1.2.2. La arquitectura 802.11 . . . . . . . . . . . . . . . . . . 1.2.3. Subcapa MAC . . . . . . . . . . . . . . . . . . . . . . . 1.2.4. Comportamiento egoı́sta en el protocolo CSMA/CA 1.3. Objetivos del proyecto . . . . . . . . . . . . . . . . . . . . . . 1.4. Antecedentes y estado del arte . . . . . . . . . . . . . . . . . 1.4.1. Antecedentes en estudio de comportamiento egoı́sta 1.4.2. Estado del arte en simuladores de redes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 2 3 5 10 13 14 14 15 2. Especificación de requisitos 19 2.1. Requisitos funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.2. Requisitos no funcionales . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3. Recursos y planificación 3.1. Recursos . . . . . . . . . . 3.1.1. Recursos humanos 3.1.2. Recursos software 3.1.3. Recursos hardware 3.2. Planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4. Análisis de la arquitectura del simulador 4.1. Modelo de nodo . . . . . . . . . . . . . . . 4.2. Modelo de proceso . . . . . . . . . . . . . 4.2.1. Rutinas del modelo de proceso . . 4.2.2. Estados y transiciones del modelo I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 21 21 22 22 . . . . 25 25 27 27 28 5. Diseño de la solución 5.1. Diseño de los ataques . . . 5.1.1. Tipos de jamming . 5.1.2. Modos de jamming 5.2. Diseño del log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 33 33 35 36 6. Implementación 39 6.1. Técnicas de jamming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6.2. Log de registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 7. Evaluación de los ataques 7.1. Configuración de los escenarios . . . . . . . . . 7.1.1. Escenarios y roles de los nodos . . . . . 7.1.2. Atributos de los nodos . . . . . . . . . . 7.1.3. Perfiles de tráfico . . . . . . . . . . . . . 7.2. Estrategia de evaluación . . . . . . . . . . . . . 7.2.1. Medidas estadı́sticas . . . . . . . . . . . 7.2.2. Descripción de la estrategia . . . . . . . 7.3. Resultados de la evaluación . . . . . . . . . . . 7.3.1. Técnicas de jamming en modo continuo 7.3.2. Técnicas de jamming en modo normal . 7.3.3. Técnicas de jamming en modo aleatorio 7.4. Resumen de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 61 61 63 68 69 69 71 72 72 76 83 85 8. Conclusiones 87 Bibliografı́a 89 A. Guı́a breve de OPNET Modeler 91 A.1. Caracterı́sticas generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 A.2. Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 A.3. Presentación de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 II ÍNDICE DE FIGURAS 1.1. Familia de estándares IEEE 802 . . . . . . . . . . . . . . . . . . . . . . . 1.2. Componentes 802.11. Esquema de dos IBSS . . . . . . . . . . . . . . . . 1.3. Componentes 802.11. Esquema de un ESS . . . . . . . . . . . . . . . . . 1.4. Funciones de coordinación para el acceso al medio en la subcapa MAC 1.5. Crecimiento de la ventana de contención . . . . . . . . . . . . . . . . . 1.6. Procedimiento de backoff . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7. Comunicación mediante mecanismo RTS/CTS y NAV . . . . . . . . . . 1.8. Jamming a tramas CTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.9. Jamming a tramas de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 1.10. Jamming a tramas ACK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 . 4 . 4 . 5 . 7 . 8 . 9 . 11 . 12 . 13 3.1. Planificación del proyecto: tareas . . . . . . . . . . . . . . . . . . . . . . . 23 3.2. Planificación del proyecto: diagrama de Gantt . . . . . . . . . . . . . . . 24 4.1. Modelo de nodo wlan station . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.2. Modelo de proceso de la capa MAC . . . . . . . . . . . . . . . . . . . . . 31 6.1. Interfaz de un nodo: parámetros de jamming . . . . . . . . . . . . . . . . 41 6.2. Interfaz de un nodo: parámetros de log . . . . . . . . . . . . . . . . . . . . 45 Escenario de jamming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Escenario normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Cálculo del retardo de acceso al medio . . . . . . . . . . . . . . . . . . . Tasa de envı́o de datos de nodo tr para los distintos tipos de jamming en modo continuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.5. Tasa de recepción de datos en nodo rc para jamming a datos en modo continuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.6. Tasa de envı́o y de descarte de datos por exceder el lı́mite de retransmisiones para el nodo tr con jamming continuo a tramas ACK . . . . . . 7.1. 7.2. 7.3. 7.4. III . 62 . 62 . 70 . 73 . 74 . 75 7.7. Tasa de envı́o de datos del nodo jammer con tráfico de saturación para los distintos tipos de jamming en modo normal . . . . . . . . . . . . . . . 77 7.8. Tamaño de la cola de transmisión del nodo jammer con tráfico de saturación para los distintos tipos de jamming en modo normal . . . . . . . . 78 7.9. Retardo de acceso al medio del nodo jammer con tráfico de saturación para los distintos tipos de jamming en modo normal . . . . . . . . . . . . 79 7.10. Tasa de envı́o de datos de los nodos jammer, nodo tr y normal tr con jamming a CTS en modo normal y perfil de tráfico a tasa media . . . 80 7.11. Tamaño de la cola de transmisión de nodos jammer, nodo tr y normal tr con jamming a CTS en modo normal y perfil de tráfico de tasa media . . 81 7.12. Retardo de acceso al medio de los nodos jammer, nodo tr y normal tr con jamming a CTS en modo normal y perfil de tráfico a tasa media . . . 82 7.13. Tasa de envı́o de datos del nodo jammer para distintos valores de jamming a CTS en modo aleatorio . . . . . . . . . . . . . . . . . . . . . . . . . 83 7.14. Retardo de acceso al medio del nodo jammer para distintos valores de jamming a CTS en modo aleatorio . . . . . . . . . . . . . . . . . . . . . . . 84 A.1. Arquitectura de OPNET Modeler . . . . . . . . . . . . . . . . . . . . . . . 92 A.2. Tipos de estados del modelo de proceso . . . . . . . . . . . . . . . . . . . 93 A.3. Flujo de ejecución de un estado no forzado . . . . . . . . . . . . . . . . . 94 IV ÍNDICE DE TABLAS 7.1. 7.2. 7.3. 7.4. 7.5. 7.6. Atributos del nodo: parámetros generales . . . . . . . . . . . . . . . . . . 63 Atributos del nodo: parámetros de jamming . . . . . . . . . . . . . . . . . 64 Atributos del nodo: parámetros de log . . . . . . . . . . . . . . . . . . . . 65 Atributos del nodo: parámetros de generación de tráfico . . . . . . . . . 66 Atributos del nodo: parámetros WLAN . . . . . . . . . . . . . . . . . . . 68 Número de paquetes creados por el nodo nodo tr con jamming en modo continuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 7.7. Número de paquetes destruidos por el nodo nodo tr con jamming en modo continuo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 7.8. Número de paquetes creados por el nodo jammer con tráfico de saturación para los distintos tipos de jamming en modo normal . . . . . . . . 77 7.9. Número de paquetes creados por los nodos jammer, nodo tr y normal tr con tráfico de tasa media y jamming a CTS en modo normal . . . . . . . . 81 7.10. Número de paquetes creados por el nodo nodo tr para distintos valores de jamming a CTS en modo aleatorio . . . . . . . . . . . . . . . . . . . 85 V VI LISTADOS DE CÓDIGO 6.1. Declaración de flags de jamming . . . . . . . . . . . . . . . . . . . . . 6.2. Declaración de variables de estado para jamming . . . . . . . . . . . 6.3. Inicialización de variables de estado para jamming . . . . . . . . . . 6.4. Inicialización de flags de jamming . . . . . . . . . . . . . . . . . . . . 6.5. Activación del jamming a CTS . . . . . . . . . . . . . . . . . . . . . . 6.6. Activación del jamming a datos . . . . . . . . . . . . . . . . . . . . . 6.7. Activación del jamming a ACK . . . . . . . . . . . . . . . . . . . . . 6.8. Función de jamming aleatorio . . . . . . . . . . . . . . . . . . . . . . 6.9. Finalización del jamming . . . . . . . . . . . . . . . . . . . . . . . . . 6.10. Reinicio de los flags de jamming . . . . . . . . . . . . . . . . . . . . . 6.11. Declaración de variables de estado del log . . . . . . . . . . . . . . . 6.12. Inicialización de variables de estado para el log . . . . . . . . . . . . 6.13. Función de registro de información de jamming en el log . . . . . . . 6.14. Función de registro de mensajes de información general en el log . 6.15. Llamada a función de registro de mensajes de información general 6.16. Función de registro de nombre de estados en el log . . . . . . . . . . 6.17. Ejemplo de fragmento del log . . . . . . . . . . . . . . . . . . . . . . VII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 40 41 41 42 43 43 43 44 44 45 46 46 47 49 49 50 VIII CAPÍTULO 1 INTRODUCCIÓN 1.1. Presentación El mercado de las redes inalámbricas se ha ido ampliando en los últimos años y está extendiéndose dentro de todos los ámbitos de las redes tradicionales. Cada vez son más las empresas, instituciones públicas y hogares que optan por este sistema en alternativa a las soluciones habituales que utilizan cableado. Las redes inalámbricas poseen ventajas importantes, siendo las más obvias movilidad y flexibilidad, ya que los usuarios pueden conectarse a las redes disponibles y desplazarse libremente mientras permanezcan dentro del área de cobertura de las mismas. Además se eliminan las acciones de instalación de cables y tomas de red utilizadas en las redes cableadas, lo que supone un ahorro de tiempo y dinero. La ventaja de no necesitar un medio fı́sico para funcionar se convierte también en un inconveniente. Las redes inalámbricas deben validar cuidadosamente las unidades de información recibidas para prevenir las pérdidas provocadas por la falta de fiabilidad del canal de comunicación. Además teniendo en cuenta que las transmisiones están a disposición de cualquiera dentro del alcance de la red, la seguridad se vuelve un asunto más que importante. El presente proyecto fin de carrera se centrará en el estudio de la seguridad de las redes inalámbricas a partir de su vulnerabilidad frente a ataques producidos sobre la capa MAC. Dichos ataques serán realizados mediante envı́os malintencionados de tramas que producirán interferencias en las comunicaciones entre las estaciones. Los resultados del estudio teórico se implementarán con la herramienta de simulación gráfica de sistemas de comunicaciones OPNET Modeler 1 y posteriormente se 1 http://www.opnet.com/ 1 1. Introducción analizarán los resultados de la experimentación para obtener conclusiones. 1.2. Descripción del problema Con el fin de delimitar el ámbito del problema se va realizar una explicación teórica de las tecnologı́as empleadas en este proyecto. Para mayor claridad se seguirá un enfoque de mayor a menor nivel de abstracción. En primer lugar se hará una introducción a los estándares de comunicación en redes con el objetivo de enmarcar el estándar 802.11, donde se detallan las especificaciones de las redes inalámbricas de área local. Seguidamente se profundizará en el estudio del estándar explicando los detalles técnicos del protocolo CSMA/CA, necesarios la para comprensión del desarrollo del ataque. Por último se hablará acerca de qué se considera comportamiento egoı́sta en dicho protocolo, y cómo se realizan ataques al mismo mediante técnicas de jamming. Si el lector está familiarizado con los detalles del funcionamiento del estándar 802.11 puede pasar a la Sección 1.2.4. 1.2.1. Estándares de comunicación en redes El Instituto de Ingenieros en Electricidad y Electrónica (Institute of Electrical and Electronics Engineers, IEEE) 2 creó una serie de comités, en los que participa personal de la industria informática y del ámbito académico, que establecieron un conjunto de estándares para protocolos de comunicaciones en redes. Estos estándares fueron ampliamente aceptados por la comunidad y por ello los fabricantes desarrollaron sus equipos de acuerdo con las especificaciones definidas en ellos. Uno de los estándares sobre redes de área local y metropolitana realizado por esta organización fue la serie de normas 802 [1] que realizan una especificación detallada de las capas más bajas del modelo de referencia de interconexión de sistemas abiertos (Open Systems Interconection, OSI) de la Organización Internacional de Estándares (International Organization for Standardization, ISO)3 . El modelo OSI define siete capas, de las cuales las normas 802 se centran en dos, la capa fı́sica y la capa de enlace de datos. Dentro del la serie 802, tal y como se muestra en la Figura 1.1, destacan varias especificaciones individuales que se identifican mediante uno o dos dı́gitos, algunas de las más conocidas son la 802.3 que define la técnica de acceso múltiple por detección de portadora con detección de colisiones (Carrier Sense Multiple Access network with Collision Detection, CSMA/CD) usada en redes Ethernet, la 802.15 correspondiente a las redes inalámbricas de área personal (Wireless Personal Area Networks, WPANs) o la 802.11 que define la normativa para redes inalámbricas de área local (Wireless Local 2 3 2 http://www.ieee.org http://www.iso.org 1.2. Descripción del problema Figura 1.1: Familia de estándares IEEE 802 Area Networks, WLANs). El ámbito de estudio de este proyecto se centra en esta última tecnologı́a. 1.2.2. La arquitectura 802.11 Una red de área local (Local Area Network, LAN) es una red que cubre un área geográfica pequeña (por ejemplo un edificio), cuya principal función es conectar ordenadores para compartir recursos e intercambiar información. Este tipo de redes tienen tres caracterı́sticas que las diferencian del resto que son tamaño, topologı́a y tecnologı́a de transmisión. Esta última caracterı́stica, concretamente el cambio del cable por el medio aéreo, es lo que conduce a la idea básica de las redes inalámbricas de área local(Wireless Local Area Networks, WLANs). La arquitectura 802.11 consta de varios componentes que interactúan para proporcionar a las estaciones de una WLAN transparencia para las capas superiores. Uno de esos componentes es el conjunto básico de servicios (Basic Service Set, BSS) que es el bloque básico de construcción de una WLAN y permite que un grupo de estaciones se comuniquen. Estas comunicaciones inalámbricas están acotadas por las caracterı́sticas de propagación del medio inalámbrico, por lo que se define además un área conceptual denominada área básica de servicio (Basic Service Area, BSA), donde los miembros de un BSS pueden comunicarse entre ellos. El BSS mı́nimo que se puede construir necesita al menos dos estaciones. Cuando las estaciones se comunican directamente dentro de un único BSS, se constituye un BSS independiente (Independent Basic Service Set, IBSS). En ocasiones los IBSS también se denominan redes ad-hoc cuando se montan espontáneamente con la idea de mantener un sistema de comunicación sencillo entre varias estaciones durante un periodo de tiempo corto (Figura 1.2). 3 1. Introducción Figura 1.2: Componentes 802.11. Esquema de dos IBSS Además de la configuración anterior un BSS puede formar parte de estructuras más complejas junto a otros BSS, por lo que se necesita que haya comunicación entre ellos. El sistema de distribución (Distribution System, DS) es el componente lógico del estándar 802.11 usado para establecer dicha comunicación y lograr que las tramas lleguen de un BSS a su destino en un BSS diferente. La red formada por distintos BSS junto con el DS se denomina conjunto extendido de servicios (Extended Service Set, ESS). Un punto de acceso (Access Point, AP) es una entidad que tiene la misma funcionalidad que una estación de la WLAN, pero además habilita el acceso de las estaciones autorizadas al DS a través del medio inalámbrico. Dentro de un ESS todas las comunicaciones pasan obligatoriamente por el AP, incluso si éstas involucran dos estaciones que pertenecen a un mismo BSS. En la Figura 1.3 puede verse cómo se relacionan los componentes 802.11 comentados. Figura 1.3: Componentes 802.11. Esquema de un ESS 4 1.2. Descripción del problema 1.2.3. Subcapa MAC Como se comentó anteriormente, la serie IEEE 802 abarca la capa fı́sica y la capa de enlace de datos del modelo OSI. La capa de enlace de datos (Data Link Layer, DLL) recibe peticiones del nivel de red y utiliza los servicios del nivel fı́sico. El objetivo del nivel de enlace es conseguir que la información fluya, libre de errores, entre dos máquinas conectadas. Para lograr este objetivo tiene que formar bloques de información, dotarles de una dirección de nivel de enlace, gestionar la detección o corrección de errores, y ocuparse del control de flujo entre equipos. Cuando el medio de comunicación está compartido entre más de dos equipos es necesario arbitrar el uso del mismo. Esta tarea se realiza en la subcapa de control de acceso al medio (Medium Access Control, MAC). Sobre ésta se encuentra la subcapa de control de enlace lógico (Logical Link Control, LLC) que maneja el control de errores, control del flujo, entramado y direccionamiento de la subcapa MAC. Dentro del grupo de normas IEEE 802, la subcapa de enlace lógico se recoge en la norma IEEE 802.2 y es común para todos los demás tipos de redes (Ethernet, WPAN, WLAN, etc.) Dado que este proyecto se centrará en la capa MAC, en este apartado se explicará la arquitectura de dicha capa definida por el estándar IEEE 802.11. Según [2], la subcapa MAC incluye la función de coordinación puntual (Point Coordination Function, PCF) y la función de coordinación distribuida (Distributed Coordination Function, DCF), que son las técnicas en base a las cuales las estaciones acceden al medio (ver Figura 1.4). Ambas funciones de acceso al canal coexisten alternativamente utilizando diferentes intervalos de tiempo. Mientras que el periodo de contención (Contention Period, CP) es utilizado por la función DCF, la función PCF utiliza el periodo libre de contención (Contention-free Period, CFP). Éste último se iniciará cuando la estación que actúa como coordinadora mande una trama de administración denominada baliza o beacon anunciando el comienzo y la máxima duración del CFP. Figura 1.4: Funciones de coordinación para el acceso al medio en la subcapa MAC 5 1. Introducción La función PCF es un método opcional de acceso centralizado que requiere la presencia de un AP que actúe como nodo coordinador (Point Coordinator, PC) y en consecuencia tan sólo puede ser utilizada en redes con infraestructura. Según [3] en la práctica rara vez se utiliza esta función, por lo que tampoco se usará en este proyecto. 1.2.3.1. Función de coordinación distribuida (DCF) La función de coordinación distribuida es la función básica de la subcapa MAC y debe ser implementada en todas las estaciones de la red de forma obligatoria. Especifica un mecanismo llamado protocolo de acceso múltiple con detección de portadora y prevención de colisiones (Carrier Sense Multiple Access/ Collision Avoidance, CSMA/CA), que tiene como fin reducir la probabilidad de colisiones cuando varias estaciones quieren acceder al medio para transmitir. Antes de transmitir, una estación debe sondear el medio para saber si ya hay otra transmisión en curso. Si el medio no está ocupado puede efectuarse la transferencia pero antes el canal debe mantenerse inactivo durante un tiempo denominado espacio entre tramas distribuido (Distributed Interframe Space, DIFS) o durante un tiempo espacio entre tramas extendido (Extended Interframe Space, EIFS) si la recepción de la trama anterior fue errónea. Existe la posibilidad de que más de una estación detecte el canal ocupado y retarde su acceso, por lo que terminada la transmisión todas estas estaciones detectarán libre el canal y transmitirán en el mismo instante produciendo colisiones. Para reducir esta probabilidad, después de esperar el tiempo DIFS y antes de comenzar a transmitir, se realiza un procedimiento de contienda por el que cada estación esperará un intervalo de backoff. Este mecanismo es denominado retroceso exponencial (exponential backoff ) o retroceso exponencial binario (binary exponential backoff )[4] y dicta que el intervalo de backoff tendrá como valor un número aleatorio que, como se explicará más adelante, se calcula dentro de unos márgenes que tendrán como lı́mite superior la ventana de contención. Ası́ mismo el tiempo de backoff será múltiplo del tiempo que dura una ranura de tiempo (slot time) definida en [2]. El contador de backoff irá disminuyendo por cada ranura de tiempo que el canal permanezca inactivo. Si se detecta actividad en alguna de las ranuras de tiempo durante el transcurso de la cuenta atrás, ésta se suspenderá y tan sólo se reiniciará si el canal se encuentra libre de nuevo durante un periodo DIFS. Cuando el contador de backoff alcanza el valor cero la estación puede comenzar la transmisión de la trama. Cada estación mantiene además una ventana de contención (Contention Window, CW), la cual es usada para determinar el número máximo de ranuras que debe esperar una estación antes de retransmitir una trama. Esta ventana depende de la historia de las retransmisiones de la trama actual. Por cada transmisión exitosa se recibirá la trama ACK (acknowledgment) correspondiente, indicando que el envı́o ha llegado correcto a su destino, pero si falla (no se recibe el ACK), la ventana de contención aumentará. 6 1.2. Descripción del problema Figura 1.5: Crecimiento de la ventana de contención Como se muestra en la figura 1.5 en el primer intento de transmisión la ventana de contención se sitúa en un valor aleatorio entre 0 y CWmin 4 . En caso de que el proceso no tenga éxito y no se reciba la trama ACK correspondiente, la CW aumentará al doble hasta que se alcance el valor máximo que será igual a CWmax. En caso de que la transmisión de la trama sea correcta se volverá al un valor de CW entre 0 y CWmin. Como se comentó anteriormente la CW será usada para calcular el tiempo de backoff. El cálculo se realiza de la forma siguiente: Tiempo de Backoff = Random() x slot time (1.1) donde Random() es un número entero pseudo-aleatorio obtenido a partir de una distribución uniforme sobre el intervalo [0, CW]. De esta forma las penalizaciones por la no recepción de la trama esperada se reflejarán al calcular el tiempo de backoff. El proceso de backoff descrito anteriormente puede verse representado en la Figura 1.6. 4 Los valores CWmin y CWmax, ventana de contención mı́nima y máxima respectivamente, son dependientes de la capa fı́sica. 7 1. Introducción Figura 1.6: Procedimiento de backoff Las estaciones mantienen también un contador de retransmisiones de tramas largas (normalmente tramas de datos) denominado LRC (Long Retry Count). Este contador se incrementará en cada retransmisión de la trama de datos hasta alcanzar un lı́mite de retransmisiones máximo determinado por el atributo dot11LongRetryLimit (que puede ser configurado en cada estación), momento en el cual se descarta la trama. Este contador se pone a cero cada vez que se reciba el ACK esperado o después de que se descarte una trama para comenzar de nuevo el proceso. Respecto a la forma en que una estación determina si un canal está ocupado, denominado proceso de detección de portadora (Carrier Sense, CS), el estándar WLAN describe dos mecanismos, uno fı́sico y otro virtual. El mecanismo fı́sico forma parte de un servicio que proporciona la capa fı́sica del modelo de red, depende del medio y la modulación usada y viene definido en [2]. El virtual, en cambio, es proporcionado por la subcapa MAC. El mecanismo virtual trata de distribuir información anunciando que el medio está ocupado mediante el intercambio de tramas de solicitud de transmisión (Request To Send, RTS) y preparado para transmitir (Clear To Send, CTS), antes del envı́o de la trama de datos. Las tramas RTS y CTS contienen un campo de duración que define el periodo de tiempo reservado para transmitir la trama de datos y su correspondiente ACK. Todas las estaciones de la red son entonces conscientes de la ocupación del canal. Según [5] el protocolo de comunicación es el siguiente (ver Figura 1.7), la estación origen envı́a una trama RTS a la estación destino pidiéndole permiso para enviarle una trama de datos. Cuando el destino recibe la trama espera un tiempo denominado espacio entre tramas pequeño (Short Interframe Space, SIFS), durante el cual el resto de estaciones actualizan sus vectores de asignación de red (Network Allocation Vector, NAV) que contienen la información que indica el tiempo que el canal virtual estará ocupado. Si le concede permiso, el destino responderá al origen con una trama 8 1.2. Descripción del problema Figura 1.7: Comunicación mediante mecanismo RTS/CTS y NAV CTS. Al recibirla, el origen enviará su trama de datos y comenzará su temporizador de ACK. Cuando se reciba la trama correctamente en el origen se enviará el ACK, con lo que termina el intercambio. Si el temporizador de ACK del origen termina antes de que haya recibido el ACK todo el protocolo anterior se ejecuta de nuevo. Desde el punto de vista de las estaciones que no participan en la comunicación, si una estación está dentro del alcance de la estación origen recibirı́a la trama RTS, por lo que desistirı́a en enviar datos y actualizarı́a su NAV con la información contenida en el campo de duración de la misma. En el caso de que la estación no estuviera al alcance del origen pero sı́ del destino, actualizarı́a su NAV a partir del CTS. Las estaciones mantienen también un contador de retransmisiones para tramas cortas enviadas denominado SRC Short Retry Count (normalmente aplicado a las tramas de control). Este contador irá incrementándose cada vez que se retransmita un RTS (por no recibir el CTS correspondiente) hasta alcanzar un lı́mite determinado por el atributo dot11ShortRetryLimit presente en cada estación, momento en el cual se descarta la trama de datos que esperaba enviarse después del intercambio RTS/CTS. Ası́ mismo cuando se recibe el CTS esperado, o se descarte una trama, el SRC se pondrá de nuevo a cero. El uso del mecanismo RTS/CTS está bajo el control del atributo dot11RTSThreshold que es propio de cada estación. Dicho atributo puede ser configurado para usar RTS/CTS siempre, nunca o sólo para tramas mayores de un tamaño especı́fico. En este proyecto se supondrá activado intercambio RTS/CTS para todas las tramas de datos. Según todo lo explicado anteriormente es posible que una estación se pueda apropiar del canal injustamente, lo que perjudica al resto de estaciones. Sobre esta idea nace el concepto de comportamiento egoı́sta, que se explicará a continuación. 9 1. Introducción 1.2.4. Comportamiento egoı́sta en el protocolo CSMA/CA El protocolo CSMA/CA, como otros muchos protocolos, está diseñado asumiendo que los nodos cumplirán con las reglas que él establece. Esta suposición puede ser peligrosa, ya que estarı́a en manos de las propias estaciones, por ejemplo, el aplazamiento de sus transmisiones. La tentación de alterar el comportamiento de los nodos está más presente si con ello puede conseguirse más ancho de banda a expensas del resto de usuarios. Según [3] algunos de los beneficios de este mal comportamiento, o comportamiento egoı́sta, pueden ser los siguientes: - Al tratar directamente con la capa MAC, como ya se ha comentado, el beneficio de esta conducta se traduce en ancho de banda, lo que la hace más eficiente que el comportamiento egoı́sta en otras capas del modelo de red. - Su actuación no puede ser detectada en capas superiores, y además puede ser combinada con técnicas similares en dichas capas para mejorarlo. - Puede ser utilizado en todas las configuraciones de redes inalámbricas, ya que todas las estaciones implementan el protocolo 802.11 de la capa MAC. Si se realizará, por ejemplo sobre TCP, las fuentes que utilizaran UDP se librarı́an del ataque. El reparto injusto del ancho de banda que genera este comportamiento egoı́sta puede llegar a ocasionar serios problemas en hotspots5 públicos de acceso a Internet (aeropuertos, bibliotecas, centros de convenciones, etc.) en los que los usuarios reclaman todo el ancho de banda posible. 1.2.4.1. Ataques mediante técnicas de jamming Según [6], la técnica de generar deliberadamente una señal desde un dispositivo wireless con la intención de que interfiera en las señales legı́timas también se conoce como jamming. En este caso el jamming proviene de una estación avariciosa denominada jammer, que envı́a tramas selectivamente a otras estaciones para que se produzcan recepciones erróneas y ası́ las estaciones aumenten su ventana de contención. A continuación se explicarán tres ataques enmarcados dentro de las técnicas de comportamiento egoı́sta en [3]. Estos ataques se basan en la generación de errores en el protocolo CSMA/CA para interferir en las comunicaciones de estaciones inalámbricas y ası́ obtener beneficios en forma de ancho de banda. 5 Un hotspot es una zona de cobertura WI-FI, en la que un punto de acceso o varios proveen servicios de red a través de un proveedor de servicios de Internet inalámbrico 10 1.2. Descripción del problema Jamming a tramas CTS Una de las tramas que puede ser objeto de jamming es la trama CTS. En este caso la estación tramposa escucha un RTS enviado por otra estación e intencionadamente envı́a una trama para que se produzca una colisión. El proceso serı́a el siguiente (Figura 1.8): el nodo egoı́sta espera hasta recibir un RTS destinado a otro nodo y después de un tiempo SIFS envı́a una trama para realizar el jamming; el nodo destino del RTS envı́a el CTS correspondiente pero éste se pierde al colisionar con la trama enviada por el nodo egoı́sta; el nodo fuente, al no recibir el CTS esperado, esperará un tiempo EIFS, doblará su ventana de contención y la usará para calcular su tiempo de backoff ; a continuación comenzará a realizar el backoff. El nodo egoı́sta al detectar el canal libre enviará un RTS para iniciar la transmisión de sus datos, en ese momento el nodo fuente detendrá su proceso de backoff hasta que vuelva a estar el canal ocioso por un tiempo DIFS, cuando ésto ocurra realizará de nuevo el backoff con el tiempo restante. A medida que se va produciendo el jamming a las tramas CTS del nodo fuente, éste irá retransmitiendo de nuevo un RTS después de cada intervalo de backoff hasta completar el número máximo de retransmisiones que dicte el atributo dot11ShortRetryLimit de la estación. Ası́ mismo dado que la CW doblará su capacidad por cada retransmisión, también el tiempo de backoff tenderá a aumentar (aunque puede que no siempre, ya que se calcula de forma aleatoria, ver Expresión 1.1). En general, mientras duren las retransmisiones el nodo egoı́sta irá ganando posibilidades de acceder al medio para transmitir sus datos. Figura 1.8: Jamming a tramas CTS 11 1. Introducción Jamming a tramas ACK y de datos Además de ejecutarse sobre tramas CTS, se puede efectuar el jamming contra tramas ACK y de datos. Ası́ se consigue, al igual que en el caso anterior, que la estación destino del ACK o de los datos doble su CW, y en consecuencia tenga que esperar intervalos de backoff mayores. Gracias a ésto la estación avariciosa logra aumentar su oportunidad de acceder al canal. El proceso para realizar el jamming a tramas de datos es el mostrado en la Figura 1.9. El nodo egoı́sta esperarı́a hasta detectar un CTS de otro nodo, y después de un tiempo SIFS transmitirı́a una trama para que colisionara con la trama de datos que es emitida en ese momento. El nodo fuente, al no recibir la confirmación de los datos enviados, asumirá que se ha producido un fallo, doblará su ventana de contención y la usará para calcular su tiempo de backoff. Todo ésto conllevará la misma consecuencia que el caso anterior de jamming, que es el aumento de posibilidades de acceso al medio por parte del nodo egoı́sta. El jamming a tramas ACK se efectúa de forma similar al anterior (ver Figura 1.10), excepto que en este caso el nodo egoı́sta espera a detectar una trama de datos para otro nodo y es entonces cuando, después de un tiempo SIFS, envı́a la trama para jamming. Dicha trama colisiona con el ACK enviado por el nodo destino y como en los casos anteriores el nodo fuente dobla su ventana de contención. En estos dos últimos procesos de jamming el nodo vulnerado, después de realizar el backoff correspondiente, retransmitirá un RTS por no recibir el ACK esperado. En ambos casos podrá hacer tantas retransmisiones como le indique el atributo dot11LongRetryLimit de la estación, es decir, a pesar de volver a retransmitir el RTS se contabiliza como retransmisiones de tramas datos puesto que la trama perdida ha sido un ACK. Figura 1.9: Jamming a tramas de datos 12 1.3. Objetivos del proyecto Figura 1.10: Jamming a tramas ACK 1.3. Objetivos del proyecto Descrito ya el problema, en este apartado se detallarán los objetivos que persigue el proyecto, de los cuales el principal es implementar, mediante el simulador de sistemas de comunicaciones OPNET Modeler, la ejecución de los ataques a la seguridad de una red 802.11 utilizando las técnicas de jamming descritas en la Sección 1.2.4.1. El objetivo principal se puede dividir en dos apartados: estudio teórico del problema e implementación en OPNET Modeler. Dentro de estas dos secciones se pueden enumerar a su vez objetivos concretos, como son: Respecto al estudio teórico del problema: 1. Realizar un acercamiento a las tecnologı́as de redes inalámbricas a través el estudio del estándar 802.11. 2. Conocer el funcionamiento del protocolo CSMA/CA y la técnica de detección de portadora mediante intercambio de tramas RTS/CTS. 3. Estudiar los procedimientos de ataque a redes 802.11 mediante técnicas de jamming enunciados en [3]. En este capı́tulo se han cumplido los objetivos de este primer apartado al realizar tanto el estudio de la tecnologı́a 802.11, como el del funcionamiento teórico de los ataques mediante técnicas de jamming. Respecto a la implementación en OPNET Modeler: 1. Estudio de la interfaz de programación de aplicaciones de OPNET Modeler 14.5, en concreto de las librerı́as necesarias para llevar a cabo la implementación de los ataques mediante técnicas de jamming. 13 1. Introducción 2. Diseñar y realizar la implementación de los ataques. 3. Evaluar el funcionamiento y efectividad de los ataques implementados mediante el análisis de los resultados de simulaciones efectuadas en OPNET Modeler. 1.4. Antecedentes y estado del arte En esta sección se explicará el estado actual de los temas relacionados con el proyecto abordado. En primer lugar se describirán algunos estudios relativos al comportamiento egoı́sta y a continuación se comentarán algunos de los simuladores de redes más utilizados. 1.4.1. Antecedentes en estudio de comportamiento egoı́sta En general los textos encontrados relativos a esta temática están relacionados con el ámbito académico. De entre ellos hay artı́culos tanto de estudio del comportamiento egoı́sta en general, como de formas de llevarlo acabo o de detectarlo. A continuación se comentarán los artı́culos más interesantes. Una forma de implementar el comportamiento egoı́sta en la capa MAC es incumplir directamente los tiempos que dicta el estándar para regular el acceso al medio; por ejemplo los nodos egoı́stas pueden realizar intervalos de backoff más pequeños de los que deben para aprovechar más tiempo el canal, perjudicando ası́ al resto de nodos. En esta linea se han realizado algunos estudios como el de [7], que propone una modificación del estándar 802.11 para la detección y penalización de comportamiento egoı́sta. La idea que plantean Kyasanur y Vaidya es que sea el receptor el que asigne el valor de backoff que debe esperar el transmisor en su siguiente envı́o. En el caso de que el backoff realizado por un nodo se desvı́e sensiblemente de los resultados esperados en el receptor, éste penalizará al emisor con un intervalo todavı́a mayor para la siguiente transmisión y al mismo tiempo reducirá el intervalo de backoff a los nodos que sı́ cumplan los resultados asignados. Con este esquema se consigue asegurar un rendimiento razonable para los nodos que cumplen las normas, a pesar de la presencia de nodos egoı́stas. Respecto a las técnicas de jamming, en la mayorı́a de textos se implementan mediante configuraciones de tecnologı́as de la capa fı́sica o simplemente generando ruidos continuos de alta potencia. En esta linea en Acharya et al. [8] se demuestra que reduciendo los niveles de energı́a de las señales de jamming se pueden lograr los mismos efectos que con señales de alta potencia. Los resultados se obtienen simulando técnicas de jamming con distintos valores de potencia y comparándolas con simulaciones de lo que en el estudio se denomina “jamming inteligente”, que consiste en realizar el jamming sólo sobre mensajes de control e intervalos de tiempo cruciales. La conclu14 1.4. Antecedentes y estado del arte sión a la que se llega en este artı́culo es que el jamming inteligente es más eficiente que las técnicas de jamming trivial. En [9] se proponen y evalúan cuatro modelos de ataques de jamming diferentes desde el punto de vista de la detección de los mismos. En el estudio se experimenta individualmente con distintas medidas para la detección del jamming (fuerza de la señal, ratio de paquetes entregados y tiempo de detección de portadora) pero con ninguna de ellas se consigue descubrir con éxito los casos de jamming. Para solucionar ésto se diseñan unos esquemas de comprobación de consistencia (consistency checking), de forma que el ratio de paquetes entregados se usa para determinar si un enlace o link de radio actúa a baja capacidad y en ese caso se emplean dichos esquemas para determinar si es debido a un ataque de jamming. Por último, cabe destacar los trabajos realizados por Raya y Hubaux en [10], que proponen el sistema software DOMINO (system for Detection Of greedy behavior in the MAC layer of IEEE 802.11 public NetwOrks). Dicho sistema se instala en los puntos de acceso de las redes inalámbricas y permite detectar e identificar estaciones egoı́stas sin necesidad de modificar el estándar y sin revelar su presencia. El objetivo que se persigue es identificar las distintas variedades de comportamiento egoı́sta descritas en el propio artı́culo y coincidentes con las descritas en [3]. Entre ellas están los ataques mediante técnicas de jamming estudiados en este proyecto (ver Sección 1.2.4.1). Para detectar cuándo se producen los ataques, el sistema DOMINO cuantifica la media de retransmisiones de las tramas de las estaciones, de esta forma las tramas emitidas por las estaciones egoı́stas experimentarán menos retardos que las demás, por lo que el sistema es capaz de detectar los nodos que realizan el jamming. 1.4.2. Estado del arte en simuladores de redes Los simuladores de redes son herramientas ampliamente usadas en el mundo de la ingenierı́a. Permiten modelar redes de computadores completas definiendo los comportamientos especı́ficos de sus nodos, dispositivos y enlaces en un escenario virtual con el que se puede interactuar. Es por ésto que se convierten en una herramienta relativamente barata y rápida en comparación con lo que supone el montaje de una red real para experimentación. Los simuladores son también especialmente útiles para los diseñadores, ya que les permiten probar nuevos protocolos o cambios en protocolos existentes en un entorno controlado. Los simuladores de redes suelen disponer de una amplia variedad de tecnologı́as de red y de herramientas para ayudar al usuario a construir redes jerárquicas complejas a partir de bloques básicos (pueden ser nodos, enlaces, perfiles de tráfico, eventos meteorológicos, etc.). La mayorı́a de herramientas de simulación de redes se basan en el paradigma de la simulación de eventos discretos (discrete event-based simulation). Esto implica que los nodos de la red lanzan eventos para indicar su actuación, por ejemplo cuando envı́an 15 1. Introducción un paquete a otro nodo, mientras que el simulador a su vez mantiene una lista de eventos ordenada según el tiempo de ejecución. La simulación se termina correctamente cuando se procesan todos los eventos de la cola. Uno de los simuladores más potentes y flexibles de los utilizados en el entorno empresarial es OPNET Modeler. Esta herramienta es de pago, pero también se distribuye gratuitamente a universidades para su uso con fines docentes y de investigación. Esta opción es la que ha permitido usar este simulador en el desarrollo del presente proyecto. Para más detalles sobre OPNET Modeler consultar Apéndice A. Entre los simuladores más populares, además de OPNET Modeler, están los siguientes: OMNeT++6 . Es un simulador de redes modular de eventos discretos orientado a objetos. Se usa habitualmente para modelar el tráfico de redes de telecomunicaciones, protocolos, sistemas multiprocesadores y distribuidos, validación de arquitecturas hardware, evaluación del rendimiento de sistemas software y, en general para modelar cualquier sistema que pueda simularse con eventos discretos. Dispone de extensiones para simulaciones en tiempo real, emulación de redes, lenguajes de programación alternativos, integración con bases de datos y otras muchas funciones. Esta herramienta está disponible tanto para sistemas operativos basados en UNIX como para Windows y se distribuye bajo Licencia Pública Académica para su uso para fines docentes o no lucrativos. Su versión comercial, denominada OMNEST7 , es desarrollada actualmente por la empresa Simulcraft Inc. Ns-28 . Es un simulador de eventos discretos orientado a la investigación con redes de computadores. Ns proporciona un soporte sólido para simular sobre TCP, encaminamiento, protocolos multicast sobre redes cableadas e inalámbricas, etc. Ns es software libre distribuido bajo licencia GNU GPL y puede instalarse en sistemas operativos basados en UNIX y sobre sistemas Windows usando el entorno Cygwin9 . En Ns-2 se utiliza el lenguaje de programación C++ para modelar el comportamiento de los nodos y el lenguaje de guiones Tcl para controlar la simulación y especificar diferentes aspectos, como por ejemplo la topologı́a de red. JiST10 . JiST es un motor de simulación de eventos discretos de alto rendimiento que se ejecuta sobre la máquina virtual de Java. Es un prototipo de la nueva 6 http://www.omnetpp.org/ http://www.omnest.com/ 8 http://www.isi.edu/nsnam/ns/ 9 http://www.cygwin.com/ 10 http://jist.ece.cornell.edu/ 7 16 1.4. Antecedentes y estado del arte aproximación de propósito general para construir simuladores de eventos discretos que unifican los sistemas tradicionales con los diseños de simulaciones basados en lenguajes. El resultado de las simulaciones es muy eficiente debido a que soporta muchas optimizaciones de tiempo de ejecución y consumo de memoria. Las simulaciones de JiST están escritas en lenguaje Java, se compilan utilizando el compilador regular de Java y se ejecutan sobre la máquina virtual. JiST es ampliamente usado en conjunto con SWANS que es un simulador de redes inalámbricas construido sobre la plataforma JiST. Aunque el desarrollo oficial de JiST actualmente está parado, según [11] una versión reciente desarrollada por la universidad de Ulm ha incorporado bastantes mejoras. 17 1. Introducción 18 CAPÍTULO 2 ESPECIFICACIÓN DE REQUISITOS Este capı́tulo tiene como objetivo identificar el conjunto de requerimientos que la solución implementada debe cumplir. A continuación se describirán los necesarios. 2.1. Requisitos funcionales Los requisitos funcionales se encuentran orientados a identificar la funcionalidad que debe desempeñar la utilidad desarrollada de cara al usuario final. Para este proyecto son los siguientes: Implementación de ataques mediante técnicas de jamming sobre el software de simulación de sistemas de comunicaciones OPNET Modeler 14.5. Este requisito representa el objetivo principal del proyecto (ver Sección 1.3). Para cumplirlo se deberá incluir, en los módulos de OPNET Modeler correspondientes, la capacidad de realizar ataques mediante técnicas de jamming. Experimentación con las técnicas de jamming implementadas y estudio de los resultados. A partir de la implementación de las técnicas de jamming se diseñará una estrategia de evaluación para las mismas, de forma que se puedan obtener resultados sobre distintas configuraciones para poder comparalos y obtener conclusiones. Desarrollo de una utilidad de registro de información de actuación tanto del del protocolo CSMA/CA como de los ataques mediante técnicas de jamming sobre el software OPNET Modeler 14.5. Este tercer requisito se deriva de los objetivos del proyecto relativos al estudio teórico del estándar 802.11 y de las 19 2. Especificación de requisitos técnicas de jamming, ya que cumpliéndolo se dispondrá de un registro del funcionamiento tanto del protocolo CSMA/CA como de las técnicas de jamming desarrolladas. 2.2. Requisitos no funcionales Los requisitos no funcionales están orientados a definir las caracterı́sticas que debe cumplir el funcionamiento de las utilidades planteadas. Son los siquientes: Transparencia y abstracción. Las utilidades desarrolladas deben ser integradas en los elementos correspondiente del software OPNET Modeler de forma que el usuario pueda activarlas o configurarlas desde las interfaces de dichos elementos. Facilidad de uso. Ası́ mismo las opciones incluidas en la interfaz deben ser, por su denominación y organización, lo suficientemente descriptivas para que el usuario comprenda la labor que realizan. 20 CAPÍTULO 3 RECURSOS Y PLANIFICACIÓN En este capı́tulo se definirán tanto los recursos de que se dispondrán para la realización del proyecto, como la planificación temporal estimada del mismo. 3.1. Recursos En esta sección se describirán todos los recursos que serán empleados durante el desarrollo del proyecto. Los recursos podrán ser de tres tipos: humanos, software o hardware. 3.1.1. Recursos humanos D. Gabriel Maciá Fernández, profesor del Departamento de Teorı́a de la Señal, Telemática y Comunicaciones de la Universidad de Granada, como tutor del proyecto. Marı́a del Carmen Pastor Morales, alumna de la Escuela Técnica Superior de Ingenierı́as Informática y de Telecomunicación de la Universidad de Granada, que será la encargada de realizar el proyecto siguiendo las directrices definidas por el tutor del mismo. 3.1.2. Recursos software - Sistema Operativo Windows XP Home Edition. 21 3. Recursos y planificación - Software de simulación gráfica de sistemas de comunicaciones OPNET Modeler 14.5. - Compilador de Visual Studio C++ 2005. - Paquete MiKTeX 2.7 (distribución de TEX/LATEX). - Entorno de trabajo TeXnicCenter 1 Beta 7.50 para documentos escritos en LATEX. - Programa para generar gráficas de funciones Wgnuplot 4. - Intérprete del lenguaje perl para windows Active Perl 5.0 - Herramienta de creación de diagramas Dia 0.96. - Herramienta de creación y retoque de imágenes GIMP 2.4. - Herramienta de administración de proyectos Planner 0.14 - Sistema de control de versiones Bazaar 1.13. 3.1.3. Recursos hardware - Ordenador portátil con procesador Intel Pentium M 740 a 1.73 GHz, 1GB de memoria RAM y 60 GB de disco duro. - Conexión a Internet de 1Mb de ancho de banda. 3.2. Planificación Para estimar la planificación temporal el desarrollo del proyecto se ha dividido en una serie de tareas a las que se les ha asignado una duración aproximada. Los resultados de esta planificación se muestran en la Figura 3.1 por tareas y en la Figura 3.2 mediante un diagrama de Gantt . 22 3.2. Planificación Figura 3.1: Planificación del proyecto: tareas 23 3. Recursos y planificación Figura 3.2: Planificación del proyecto: diagrama de Gantt 24 CAPÍTULO 4 ANÁLISIS DE LA ARQUITECTURA DEL SIMULADOR En este capı́tulo se ha realizado un estudio del simulador OPNET Modeler ya que, para llevar a cabo los objetivos de implementación planteados, es necesario conocer tanto la arquitectura del simulador como el funcionamiento de los modelos que deben usarse. A continuación se describirán algunos detalles especı́ficos de los modelos de nodo y de proceso de OPNET Modeler que serán utilizados en el desarrollo del proyecto. Para ver una breve introducción a OPNET Modeler y a la arquitectura de sus niveles de desarrollo consultar Apéndice A. 4.1. Modelo de nodo Para decidir qué modelo de nodo deben implementar las estaciones de la simulación se analizaron las alternativas que proporciona OPNET Modeler para estaciones de una red wireless LAN. Los modelos principales son wlan workstation adv y wlan station adv. La diferencia entre ellas es que mientras que las wlan workstation adv implementan todas las capas del modelo de red, las wlan station adv sólo implementan la capa fı́sica y la capa MAC. Para ello las wlan station adv disponen de unos modelos de proceso que se comportan como una abstracción de las capas superiores y pueden configurarse de diferentes formas para generación de tráfico. Según [12] con el modelo de nodo wlan station adv se puede: generar tráfico controlado en una red WLAN y evaluar los resultados en la capa MAC, simular el efecto de los atributos de una red WLAN independientemente de las capas superiores y obtener tiempos de simulación más cortos (respecto al modelo wlan workstation adv). También se afirma que es el modelo de nodo más adecuado para los estudios enfocados en la 25 4. Análisis de la arquitectura del simulador capa MAC y capa fı́sica. Por todo ésto se ha elegido wlan station adv como modelo de nodo para el desarrollo del proyecto. La estructura del modelo de nodo, mostrada en la Figura 4.1 consta a a su vez de los siguientes módulos: - source: módulo generador de tráfico. Será el encargado de crear los paquetes de datos que se enviarán a la capa MAC para ser transmitidos. - sink: módulo receptor de tráfico. Recibe los paquetes que han llegado con éxito y posteriormente los destruye. Junto con el módulo anterior son los encargados de reemplazar a las capas superiores del modelo de red. - wlan mac intf : módulo que proporciona la interfaz necesaria para comunicar las capas superiores (simuladas por los módulos source y sink) con la capa MAC y permitir el flujo de paquetes en ambos sentidos entre ellas. - wireless lan mac: módulo que implementa la capa MAC definida en el estándar IEEE 802.11. Por defecto la configuración de este módulo en las wlan station adv implementa la versión del estándar 802.11b con la tecnologı́a de la capa fı́sica Direct Sequence. - wlan port tx: módulo transmisor de radio. Transmite la información al medio fı́sico. - wlan port rx: módulo receptor de radio. Recibe la información del medio fı́sico. Para conectar los módulos anteriores se utilizan los packet streams y los statistic wires (ver Figura 4.1). Los packet streams son conexiones fı́sicas que soportan las transferencias de paquetes entre los módulos del mismo nodo. Los statistic wires transportan datos de un módulo a otro pero sólo valores individuales. Normalmente se usan como interfaces en los que el módulo fuente puede compartir ciertos valores con el módulo destino y de ese modo proporcionar información acerca de su estado. También emplean un mecanismo de señalización que permite al módulo fuente notificar al módulo destino que se ha alcanzado una condición particular. Después de analizar el modelo de nodo que se va a utilizar se debe estudiar el módulo que habrá que alterar para realizar la implementación de los ataques con técnicas de jamming. 26 4.2. Modelo de proceso Figura 4.1: Modelo de nodo wlan station 4.2. Modelo de proceso Cada uno de los módulos explicados en la sección anterior implementa un modelo de proceso que permite definir su comportamiento (definición de modelo de proceso en Apéndice A). Como se explicó en el apartado anterior, el módulo wireless lan mac representa a la capa MAC del modelo de nodo wlan station adv. Este módulo a su vez tiene asociado un modelo de proceso llamado wlan mac que es el que implementa el comportamiento de la capa MAC siguiendo la definición del estándar 802.11. Dado que los ataques planteados en este proyecto se ejecutan a nivel de la capa MAC ha sido necesario estudiar en profundidad el código del modelo de proceso wlan mac. Por ésto a continuación se hará un resumen del funcionamiento del módulo citado, estructurándolo en dos partes a distinto nivel de abstracción. En el primer nivel se comentarán algunas de las rutinas que son llamadas desde los estados que definen el comportamiento del modelo y en el segundo nivel se describirán los estados más importantes y sus transiciones. 4.2.1. Rutinas del modelo de proceso A continuación se explican algunas de las rutinas del modelo wlan mac necesarias para realizar el diseño de la implementación propuesta en este proyecto. 27 4. Análisis de la arquitectura del simulador El modelo de proceso wlan mac consta de una serie de rutinas que se llaman desde los estados del autómata finito que definen su comportamiento. Dichas rutinas implementan el grueso de las definiciones del estándar 802.11. A continuación se comentarán las rutinas más importantes de entre las que intervienen en el proceso de comunicación entre los nodos, ya que serán las susceptibles de ser modificadas para la implementación planteada en este proyecto. wlan interrupts process. Cómo se describe en el Apéndice A, cuando el nodo entra en un estado del modelo de proceso se ejecuta un bloque de código de entrada y a continuación se espera a recibir una interrupción. Estas interrupciones son tratadas por la rutina wlan interrupts process y pueden ser de dos tipos: - stream interrupt: interrupción procedente de la capa superior o inferior, se produce para avisar de la llegada de datos. La rutina wlan interrupts process identifica las interrupciones de este tipo y las despacha llamando al procedimiento wlan higher layer data arrival si proviene de la capa superior o al procedimiento wlan physical layer data arrival en caso contrario. - stat interrupt: son interrupciones procedentes del receptor o del transmisor y se pueden producir por varios motivos: para informar si el canal está ocupado (y por tanto no se podrá usar para transmitir), para indicar que se ha concluido un tiempo de espera que habı́a sido planificado, o bien para administrar los tiempos del periodo de contención o libre de contención. En el caso del presente desarrollo no se producirán interrupciones de éste último tipo al tener inhabilitada la función de coordinación puntual. wlan physical layer data arrival. Procedimiento encargado de actuar cuando se recibe una trama desde la capa fı́sica. Su función es desencapsular la trama y activar los flags necesarios en caso de que se necesite una respuesta. Para ello primero revisará el tipo de de trama, que puede ser de control (RTS, CTS o ACK), de datos o de administración (asociación, autenticación, reserva, beacon, etc.), y a continuación examinará el destino, si es el propio nodo actuará en consecuencia activando el tipo de respuesta correspondiente. wlan schedule deference. En esta rutina se planifican las esperas que debe realizar el nodo, tanto para respetar el periodo de backoff, como las relativas a los intervalos entre transmisiones de tramas (SIFS, DIFS, EIFS, etc.) wlan frame transmit. Es el procedimiento que realiza la preparación y transmisión de las tramas. Ası́ mismo fija las respuestas esperadas para cada tipo de trama enviada. 4.2.2. Estados y transiciones del modelo En OPNET Modeler los modelos de proceso se definen mediante un autómata finito (ver Apéndice A). El autómata que representa el modelo de proceso wlan mac es 28 4.2. Modelo de proceso el mostrado en la Figura 4.2 Para comprender mejor el funcionamiento de este modelo se va poner un ejemplo en el que se enviarán dos tramas de datos consecutivas entre dos estaciones, la estación transmisora se llamará T y la receptora R. Se irán comentado los estados por los que pasa la estación T y sus transiciones. La estación T recibe una interrupción informándole de que ha llegado un paquete de las capas superiores. Para poder transmitir se supone que se cumplen dos condiciones: 1. - READY TO TRANSMIT: la estación dispone de la trama (en este caso de datos) lista para enviar. - wlan flags→inmediate xmt: se puede realizar la transmisión si el canal ha estado ocioso durante un tiempo mayor o igual a DIFS. 2. La estación T inicia la transmisión de la trama de datos. Al finalizar la propia estación generará una interrupción informando de ello y de esta forma se cumplirá la condición TRANSMISSION COMPLETE necesaria para pasar al siguiente estado. 3. La estación T programa una espera SIFS para recibir la trama ACK. Esta trama le asegura que la recepción ha sido satisfactoria y que la trama recibida por R no contiene ningún error. La condición de espera de trama WAIT FOR FRAME se cumple, por lo que se pasará al estado siguiente. 4. La estación T recibe la interrupción que le indica la llegada de la trama ACK esperada. Se cumple la condición FRAME RCVD de trama recibida y se pasa al estado siguiente. 5. La transmisión de la trama se ha completado, pero hay más datos para enviar, por lo que se planifica una espera DIFS antes de realizar la contienda por el canal. Se cumple la condición FRM END TO DEFER y se pasa al estado siguiente. 6. La estación T pasa a realizar la espera DIFS. Después de ésto se cumple la condición DEFERENCE OFF y se pasa al estado siguiente. 29 4. Análisis de la arquitectura del simulador 30 7. En este estado se determina si se necesita realizar el procedimiento de contienda por el que la estación debe esperar el intervalo de backoff (ver Sección 1.2.3.1). En este caso se debe realizar, debido a que se trata de una nueva transmisión. Cómo la transmisión anterior se realizó con éxito se usará para calcular el backoff el valor de CWmin (fórmula de cálculo de backoff en 1.1). Se cumple la condición PERFORM BACKOFF y se pasa al estado siguiente. 8. En este estado se realizarı́a la espera por causa de backoff planificada en el estado anterior y una vez terminada se volverı́a a pasar por los estados descritos en los pasos del 2 al 5. En este caso desde el estado FRM END, al no tener más datos para enviar se cumplirı́a la condición FRM END TO IDLE y se pasarı́a al estado siguiente. 9. La estación T volverı́a a este estado hasta que recibiera una nueva interrupción. 4.2. Modelo de proceso Figura 4.2: Modelo de proceso de la capa MAC 31 4. Análisis de la arquitectura del simulador 32 CAPÍTULO 5 DISEÑO DE LA SOLUCIÓN En este capı́tulo se van a tratar las cuestiones relativas al diseño de la solución para la implementación tanto de los ataques mediante técnicas de jamming explicados en la Sección 1.2.4.1, como de la utilidad de generación de mensajes de log (descritos ambos como requisitos funcionales del proyecto en la Sección 2.1). 5.1. Diseño de los ataques La implementación de los ataques mediante técnicas de jamming se va a realizar sobre el código fuente del modelo de proceso wlan mac de OPNET Modeler 14.5. Para diseñar la solución de implementación se van a distinguir dos clasificaciones, según el tipo de jamming y según el modo de realizarlo, que serán explicadas a continuación. 5.1.1. Tipos de jamming Los tipos de jamming se dividirán en función de las tramas que son objeto del ataque, es decir, aquellas que son saboteadas con el envı́o de la trama perniciosa. Para esta distribución se tomarán los tres tipos explicados en la Sección 1.2.4.1, que son: jamming a tramas CTS, jamming a tramas de datos y jamming a tramas ACK. Para la implementación de los tres tipos de jamming sobre el código fuente del modelo de proceso wlan mac, se describirán a continuación una serie de cuestiones de diseño seguidas de las soluciones adoptadas para las mismas. A través de ellas se irá construyendo el diseño de la solución global. Las cuestiones son las siguientes: 33 5. Diseño de la solución 1. Identificar el lugar del código donde la estación detecta la llegada de la trama previa a la que es objeto del ataque. Activar en este punto un indicador de comienzo de jamming. SOLUCIÓN Se creará un flag que indique el comienzo del proceso y según el tipo de jamming se activará: para el jamming a CTS a la llegada de una trama RTS para otra estación, para el jamming a datos a la llegada de una trama CTS para otra estación y para el jamming a ACK a la llegada de una trama de datos para otra estación. Este código se situará dentro del procedimiento wlan physical layer data arrival (descripción en la Sección 4.2.1). 2. Seleccionar la trama que se que va a utilizar para realizar el jamming y planificar la espera que debe realizar para que se emita en el mismo instante que la trama objeto del ataque. Esta espera se corresponde con el tiempo SIFS (Short Interframe Space). SOLUCIÓN: Después de la activación del flag de comienzo de jamming, en el procedimiento wlan physical layer data arrival, se definirá la trama para realizar jamming. La empleada es una trama CTS, la elección de este tipo de trama se basa en los siguientes motivos: - Por ser una trama de control, ya que debe ser generada por la capa MAC. Además es conveniente que se refleje en las tablas de estadı́sticas de paquetes que recoge OPNET Modeler (ver definición en 7.2.1). - Por emitirse después de un tiempo SIFS. Antes del envı́o de una trama CTS, según la norma 802.11, se debe esperar un tiempo SIFS igual que el necesario antes de enviar la trama para jamming por lo que se aprovecha esta configuración. Por todo lo anterior se usan tramas CTS para realizar los tres tipos de jamming. De esta forma cuando el nodo objeto del jamming recibe un CTS que no es para él lo toma como una trama errónea, por lo que deduce que se ha producido una colisión y que la trama que él esperaba (ya sea un CTS o un ACK) se ha perdido. 3. Envı́o de la trama de jamming y activación de indicador de finalización de jamming. SOLUCIÓN: En el procedimiento wlan frame transmit (descripción en la Sección 4.2.1) después de enviar la trama para jamming se activará un flag de jamming finalizado. 4. Reinicio de los indicadores de jamming. SOLUCIÓN: Las transmisiones se dan por finalizadas en el estado FRM END (decripción en Sección 4.2.2) por lo que se incluirá en el código de este estado el 34 5.1. Diseño de los ataques reinicio de los flags usados para seguir el proceso de jamming. 5. Requisito de activación del jamming desde la interfaz (ver Sección 2.2). SOLUCIÓN: Se incluirá una variable, que pueda ser modificada desde la interfaz, que permita habilitar o inhabilitar cada tipo de jamming. 5.1.2. Modos de jamming Pensando en el periodo de evaluación, se ha considerado útil diferenciar varios modos de realizar jamming. De esta forma resulta más sencillo planificar el estudio de los resultados y obtener datos diferenciados para cada experimentación. Los tres tipos de jamming anteriormente descritos podrán a su vez realizarse de tres modos: Modo continuo. Con este modo el nodo jammer realiza jamming a todas las tramas1 aunque no disponga de datos para enviar. De esta forma el jammer se dedica a sabotear las transmisiones ajenas realizando un ataque de denegación de servicio (Denial of Service, DoS) a los demás participantes en la comunicación. El modo continuo puede considerarse cómo un modo de experimentación, ya que con él pueden verse aislados los resultados del jamming separándolos del resultado del comportamiento egoı́sta, que es ganar ancho de banda a expensas de los demás (definición en Sección 1.2.4). Modo normal. Con el modo normal el nodo jammer realizará el jamming sólo cuando tenga datos para enviar. De esta forma se lleva a cabo el comportamiento egoı́sta descrito en la Sección 1.2.4, ya que el objetivo del jamming en este caso sı́ es la obtención de mejora de ancho de banda a expensas del resto de usuarios. Modo aleatorio. Con este modo se realiza el jamming en modo normal pero sólo en algunas ocasiones. En este caso el objetivo del jammer también es ganar ancho de banda, pero trata de ocultar su ataque realizándolo de forma menos agresiva que en el modo normal. Para ello primero se definirá un parámetro que sirva de umbral de probabilidad y después se generará un número aleatorio, a partir de una distribución uniforme entre 0 y 1, de forma que si dicho número es menor que el valor introducido para el umbral se realiza el jamming. En caso contrario el jammer se comporta siguiendo la norma 802.11 Una vez descritos los modos que se deben desarrollar se comentará la estrategia de implementación de los mismos. Se usará el método utilizado anteriormente de plantear las cuestiones de diseño y las soluciones a las mismas. 1 Dependiendo del tipo de jamming, si se trata por ejemplo de jamming a CTS realizará jamming a todas las tramas CTS que no pertenezcan a sus transmisiones, es decir a las tramas CTS que no tengan al propio nodo jammer como destino 35 5. Diseño de la solución 1. Definir los modos de jamming y habilitar su selección desde la interfaz SOLUCIÓN: Se definirá una variable (para cada tipo de jamming) para almacenar el modo de jamming. El uso de la misma, junto con el flag de activación de jamming descrito en la Sección 5.1.1, servirá para determinar si algún tipo de jamming está habilitado y en ese caso en que modo debe realizarse. Esta selección se realizará desde la interfaz del nodo. Para el jamming aleatorio se recuperará también desde la interfaz el valor del umbral de probabilidad. 2. Identificar el lugar del código donde se debe realizar la comprobación de los modos de jamming. SOLUCIÓN: Deberá realizarse en el mismo momento que se activa el jamming ya que la activación será condicionada al modo seleccionado. 5.2. Diseño del log Para cumplir el tercer requisito planteado en la Sección 2.1 se ha desarrollado para este proyecto la utilidad de registrar mensajes de información en tiempo de ejecución en un log. Esta información deberá ser descriptiva para ayudar a comprender, tanto el funcionamiento del estándar 802.11 implementado en el modelo de proceso wlan mac de OPNET Modeler 14.5, como el proceso de jamming comentado en las secciones anteriores. Para entender la implementación de la norma 802.11 que efectúa OPNET Modeler también se debe conocer el recorrido que realiza el autómata finito del modelo de proceso por los estados que definen su comportamiento. Para cumplir con los fines descritos la utilidad de registro de mensajes diferenciará tres tipos de información, la información general del estándar, los estados que recorre el autómata y la información del proceso de jamming. A continuación se describen estos tipos con más detalle: Información general: representa información del funcionamiento de la norma 802.11 registrando: acciones relativas al tráfico (recibido, enviado y descartado), información de retransmisiones e incremento de contadores de lı́mite de las mismas, e información de proceso de backoff (inicio, duración y parada). Estados por lo que pasa el autómata: se incluirán en el log los nombres de los estados por los que transita el modelo de proceso, para comprender mejor el funcionamiento del mismo. Información de jamming: si el nodo está realizando jamming se registrarán mensajes de información relativos al comienzo de jamming (llegada de una trama previa a la que es objeto del ataque), envı́o de trama para realizar el jamming y fin del proceso. Tiempo de ejecución: para completar los mensajes de información de los tipos anteriores es muy útil que se conozca el tiempo de ejecución en que se han realizado 36 5.2. Diseño del log cada uno, por ésto antes de todos los demás mensajes de log se podrá imprimir el tiempo de la ejecución en que se han producido. Para definir la solución de implementación de la utilidad de log se procederá como en los casos anteriores, definiendo las cuestiones a resolver y las soluciones a las mismas. Son las siguientes: 1. Requisito de configuración desde la interfaz (ver Sección 2.2). SOLUCIÓN: Se incluirá en el interfaz un indicador para cada tipo de mensajes de log, dicho indicador almacenará si los mensajes de cada tipo deben ser registrados o no. De esta forma puede configurarse la información que se registra en el log para cada simulación. Los mensajes se imprimirán al finalizar la simulación en la consola de OPNET Modeler. 2. Identificar la forma en que se implementará el registro y los tipos de mensajes que se imprimirán. SOLUCIÓN: Para evitar que la implementación de los mensajes se repita o esté dispersa por el código del modelo se creará una rutina por cada tipo de mensaje que se pueda registrar. Las llamadas a las rutinas se realizarán, dependiendo del tipo de mensaje, si el indicador del tipo correspondiente ha sido activado desde la interfaz, y se colocarán siguiendo al código que implementa la actividad de la que informan. Los mensajes serán los siguientes: Mensajes de información general: - Tipos de tramas transmitidas: podrán ser de control o de datos. - Tipos de tramas retransmitidas y la causa: podrán ser de control o de datos y la causa la no recepción de una trama esperada. - Información de los contadores de retransmisiones. - Información del proceso de backoff : comienzo y duración, interrupción por receptor ocupado, reanudación y tiempo restante, y finalización. Mensajes de jamming: - Inicio de jamming: información con la trama recibida que desencadena el jamming y tipo de jamming. - Envı́o de la trama para jamming. - Finalización del proceso. Para la información de estados por los que pasa el proceso se imprimirá el nombre del estado correspondiente y para la información de tiempo de ejecución se imprimirá el tiempo antes de todos los demás tipos de mensajes. 37 5. Diseño de la solución 38 CAPÍTULO 6 IMPLEMENTACIÓN En este capı́tulo se explicará la implementación de los ataques mediante técnicas de jamming y la utilidad de generación de mensajes de log realizados para este proyecto. El código que se comenta a continuación ha sido desarrollado para este proyecto y se ha incluido en el modelo de proceso wlan mac de OPNET Modeler 14.5. 6.1. Técnicas de jamming A continuación se va a explicar el código desarrollado para implementar los ataques mediante técnicas de jamming. Para esta solución se ha seguido el proceso descrito en la Sección 1.2.4.1 junto con los pasos detallados en 5.1. En primer lugar se describirán las variables necesarias para la implementación del proceso y a continuación los segmentos de código que se han incluido en el código fuente original. La estructura de datos WlanT Mac Flags contiene todos los flags para determinar varias condiciones presentes en el modelo de proceso. A esta estructura se le han añadido los flags que se usan para activar y desactivar cada tipo de jamming (definición de tipos en Sección 5.1.1). Como se muestra en el Listado 6.1 se usarán tres, de los cuales tipo jamming on indica si el jamming de ese tipo ha sido activado desde la interfaz (requisito del proyecto, ver sección 2.2), tipo jamming ready se activará cuando la trama previa a la que se le va a realizar el jamming sea recibida en el nodo jammer y tipo jamming finished que se activará cuando la trama para realizar jamming se envı́e. 39 6. Implementación Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean Boolean cts jamming on ; c t s j a m m in g r e a d y ; cts jamming finished ; data jamming on ; data jamming ready ; data jamming finished ; ack jamming on ; ack jamming ready ; ack jamming finished ; /∗ /∗ /∗ /∗ /∗ /∗ /∗ /∗ /∗ A c t i v a d o jamming Trama d e jamming Enviada trama de A c t i v a d o jamming Trama d e jamming Enviada trama de A c t i v a d o jamming Trama d e jamming Enviada trama de a CTS ∗ / l i s t a para ser enviada ∗/ jamming a CTS ∗ / a datos ∗/ l i s t a para ser enviada ∗/ jamming a d a t o s ∗ / a ACK∗ / l i s t a para ser enviada ∗/ jamming a ACK∗ / Listado 6.1: Declaración de flags de jamming La estructura mi wlan mac jm state contiene las variables de estado del modelo. A esta estructura se añaden las variables que deben ser fijadas por el usuario desde la interfaz. En la Figura 6.1 puede verse la forma en que dichas variables se representan en la interfaz (junto a los demás atributos del nodo). En el Listado 6.2 se muestra el código de la declaración de las mismas. A continuación se explicará la función de estas variables: - tipo jamming mode: almacenará un entero correspondiente al tipo de modo de jamming que se active desde la interfaz (definición de modos en Sección 5.1.2). Será 0 si el jamming está inhabilitado, 1 si el modo seleccionado es normal, 2 si es continuo y 3 si es aleatorio. En la interfaz se mostrarán las opciones Disabled, Normal, Continuos y Random que se corresponderán, respectivamente, con los valores anteriores. - tipo jamming parameter: este valor se emplea si para la variable anterior se ha seleccionado el tipo aleatorio y almacenará un valor entre 0 y 1 que determinará la probabilidad de que se realice jamming. En la interfaz este parámetro recibirá el nombre Random TIPO Jamming. i n t cts jamming mode ; i n t data jamming mode ; i n t ack jamming mode ; double c t s jamming parameter ; double data jamming parameter ; double ack jamming parameter ; /∗ /∗ /∗ /∗ /∗ /∗ Modo d e jamming a CTS ∗ / Modo d e jamming a DATOS ∗ / Modo d e jamming a ACK ∗ / Umbral p a r a jamming a CTS a l e a t o r i o ∗ / Umbral p a r a jamming a DATOS a l e a t o r i o ∗ / Umbral p a r a jamming a ACK a l e a t o r i o ∗ / Listado 6.2: Declaración de variables de estado para jamming 40 6.1. Técnicas de jamming Figura 6.1: Interfaz de un nodo: parámetros de jamming En la rutina de iniciación wlan mac sv init en primer lugar se obtendrán de la interfaz los valores introducidos por el usuario asignándoselos a las variables correspondientes (ver Listado 6.3). Después se asignarán los valores iniciales a los flags restantes (ver Listado 6.4). /∗ op op op op op op Captura ima obj ima obj ima obj ima obj ima obj ima obj d e p a r á m e t r o s p a r a jamming d e s d e l a i n t e r f a z ∗ / a t t r g e t ( my objid , ”CTS Jamming Mode” ,& cts jamming mode ) ; a t t r g e t ( my objid , ”CTS Random Parameter ” ,& cts jamming parameter ) ; a t t r g e t ( my objid , ”DATA Jamming Mode” ,& data jamming mode ) ; a t t r g e t ( my objid , ”DATA Random Parameter ” ,& data jamming parameter ) ; a t t r g e t ( my objid , ”ACK Jamming Mode” ,&ack jamming mode ) ; a t t r g e t ( my objid , ”ACK Random Parameter ” ,& ack jamming parameter ) ; Listado 6.3: Inicialización de variables de estado para jamming i f ( cts jamming mode ==0) w l a n f l a g s −>cts jamming on = OPC FALSE ; else w l a n f l a g s −>cts jamming on = OPC TRUE ; w l a n f l a g s −>c t s j a m m in g r e a d y = OPC FALSE ; w l a n f l a g s −>c t s j a m m i n g f i n i s h e d = OPC FALSE ; i f ( data jamming mode ==0) 41 6. Implementación w l a n f l a g s −>data jamming on = OPC FALSE ; else w l a n f l a g s −>data jamming on = OPC TRUE ; w l a n f l a g s −>data jamming ready = OPC FALSE ; w l a n f l a g s −>d a t a j a m m i n g f i n i s h e d = OPC FALSE ; i f ( ack jamming mode ==0) w l a n f l a g s −>ack jamming on = OPC FALSE ; else w l a n f l a g s −>ack jamming on = OPC TRUE ; w l a n f l a g s −>ack jamming ready = OPC FALSE ; w l a n f l a g s −>a c k j a m m i n g f i n i s h e d = OPC FALSE ; Listado 6.4: Inicialización de flags de jamming En el procedimiento wlan physical layer data arrival se activarán los procesos de jamming. Según el tipo de jamming la activación se realizará en distintas circunstancias: - Para el jamming a CTS se activará cuando se reciba un RTS destinado a otra estación (ver Listado 6.5). - Para el jamming a datos se activará cuando se reciba un CTS con otra estación como destino (ver Listado 6.6). - Para el jamming a ACK la activación se realizará al recibir una trama de datos que tenga como destino otra estación (ver Listado 6.7). Para todos los tipos se realizará el jamming, en caso de que esté habilitado, teniendo en cuenta el modo: para el jamming en modo continuo se realizará siempre, para el modo normal sólo cuando la cola de transmisión no esté vacı́a y para el modo aleatorio cuando la función wlan random jamming devuelva CIERTO. / ∗ Jamming a CTS ∗ / i f ( cts jamming mode = = 2 | | ( cts jamming mode==1 && total hlpk num > 0 ) | | ( cts jamming mode==3 && wlan random jamming ( cts jamming parameter ) ) ) { f r e s p t o s e n d = WlanC Cts ; w l a n f l a g s −>c t s j a m m i ng r e a d y=OPC TRUE ; i f ( log jamming ) wlan log print jamming info ( 1 ) ; } Listado 6.5: Activación del jamming a CTS 42 6.1. Técnicas de jamming / ∗ Jamming a d a t o s ∗ / i f ( data jamming mode = = 2 | | ( data jamming mode==1 && total hlpk num > 0 ) | | ( data jamming mode==3 && wlan random jamming ( data jamming parameter ) ) ) { f r e s p t o s e n d = WlanC Cts ; w l a n f l a g s −>data jamming ready=OPC TRUE ; i f ( log jamming ) wlan log print jamming info ( 2 ) ; } Listado 6.6: Activación del jamming a datos / ∗ Jamming a ACK ∗ / e l s e i f ( ack jamming mode = = 2 | | ( ack jamming mode==1 && total hlpk num > 0 ) | | ( ack jamming mode==3 && wlan random jamming ( ack jamming parameter ) ) ) { f r e s p t o s e n d = WlanC Cts ; w l a n f l a g s −>ack jamming ready=OPC TRUE ; i f ( log jamming ) wlan log print jamming info ( 3 ) ; FOUT ; } Listado 6.7: Activación del jamming a ACK La función wlan random jamming ha sido implementada para el proceso de jamming aleatorio. En ella se obtiene un número aleatorio a partir de una distribución uniforme entre 0 y 1 y si es menor que el valor introducido para el parámetro de jamming aleatorio (tipo jamming parameter) se realiza el jamming. El código de la función es el mostrado en el Listado 6.8. s t a t i c Boolean wlan random jamming ( double random parameter ) { double random num ; random num= o p d i s t u n i f o r m ( 1 ) ; i f ( random num <= random parameter ) r e t u r n OPC TRUE ; else r e t u r n OPC FALSE ; } Listado 6.8: Función de jamming aleatorio En en procedimiento wlan frame transmit se realizan las transmisiones de las tramas. En él se ha incluido, después de los envı́os de las tramas CTS para jamming, el código que actualiza los flags desactivando el de jamming listo (tipo jamming ready) y activando el de jamming terminado (cts jamming finished). El código es el mostrado en el Listado 6.9. 43 6. Implementación i f ( w l a n f l a g s −>cts jamming on && w l a n f l a g s −>c t s j a m m in g r e a d y ) { w l a n f l a g s −>c t s j a m m i ng r e a d y=OPC FALSE ; w l a n f l a g s −>c t s j a m m i n g f i n i s h e d =OPC TRUE ; i f ( log jamming ) wlan log print jamming info ( 1 ) ; } i f ( w l a n f l a g s −>data jamming on && w l a n f l a g s −>data jamming ready ) { w l a n f l a g s −>data jamming ready=OPC FALSE ; w l a n f l a g s −>d a t a j a m m i n g f i n i s h e d =OPC TRUE ; i f ( log jamming ) wlan log print jamming info ( 2 ) ; } i f ( w l a n f l a g s −>ack jamming ready ) { w l a n f l a g s −>ack jamming ready=OPC FALSE ; w l a n f l a g s −>a c k j a m m i n g f i n i s h e d =OPC TRUE ; i f ( log jamming ) wlan log print jamming info ( 3 ) ; } Listado 6.9: Finalización del jamming Para terminar el proceso de jamming se deben reiniciar los flags usados para que estén listos para la siguiente oportunidad de jamming. Este proceso se realiza dentro del estado FRM END mediante el código mostrado en el Listado 6.10. i f ( w l a n f l a g s −>cts jamming on && w l a n f l a g s −>c t s j a m m i n g f i n i s h e d ) { w l a n f l a g s −>c t s j a m m i n g f i n i s h e d =OPC FALSE ; i f ( log jamming ) wlan log print jamming info ( 1 ) ; } e l s e i f ( w l a n f l a g s −>data jamming on && w l a n f l a g s −>d a t a j a m m i n g f i n i s h e d ) { w l a n f l a g s −>d a t a j a m m i n g f i n i s h e d =OPC FALSE ; i f ( log jamming ) wlan log print jamming info ( 2 ) ; } e l s e i f ( w l a n f l a g s −>ack jamming on && w l a n f l a g s −>a c k j a m m i n g f i n i s h e d ) { w l a n f l a g s −>a c k j a m m i n g f i n i s h e d =OPC FALSE ; i f ( log jamming ) wlan log print jamming info ( 3 ) ; } Listado 6.10: Reinicio de los flags de jamming 44 6.2. Log de registro 6.2. Log de registro La utilidad de generación de mensajes de log ha sido implementada según la definición y pasos descritos en la Sección 5.2. A continuación se comentarán los detalles y el código de implementación. La estructura mi wlan mac jm state, como ya se ha comentado, contiene las variables de estado del modelo. A esta estructura se deben añadir tanto los flags de log que deben ser fijados por el usuario desde la interfaz, como las variables para almacenar el nombre nodo y del estado anterior. El nombre del nodo se imprimirá antes de cada mensaje de log, sea del tipo que sea, para reflejar qué nodo es el que está imprimiendo la información. En la Figura 6.2 puede verse la forma en que los flags se representan en la interfaz y en el Listado 6.11 el código de la declaración de los mismos junto con las variables comentadas. char node name [ 1 6 ] ; char p r e v i o u s s t a t e n a m e [ 3 2 ] ; Boolean l o g t i m e ; Boolean log jamming ; Boolean l o g g i n f o ; Boolean log sname ; /∗ /∗ /∗ /∗ /∗ /∗ Nombre nodo ∗ / Nombre e s t a d o I n c l u i r en l o g I n c l u i r en l o g I n c l u i r en l o g I n c l u i r en l o g a n t e r i o r ∗/ t i e m p o d e e j e c u c i ó n ∗ / m e n s a j e s d e jamming ∗ / m e n s a j e s d e i n f o r m a c i ó n ∗ / nombres e s t a d o s ∗ / Listado 6.11: Declaración de variables de estado del log Figura 6.2: Interfaz de un nodo: parámetros de log 45 6. Implementación En la rutina de iniciación wlan mac sv init, para el fragmento mostrado en el Listado 6.12, en primer lugar se obtendrá el nombre del nodo del modelo superior y a continuación se recogerán los valores introducidos por el usuario desde la interfaz y se asignarán a las variables correspondientes. / ∗ Nombre d e l nodo ∗ / o p i m a o b j a t t r g e t ( my node objid , ”name” , node name ) ; /∗ op op op op P a r á m e t r o s d e l o g ∗ / i m a o b j a t t r g e t ( my i m a o b j a t t r g e t ( my i m a o b j a t t r g e t ( my i m a o b j a t t r g e t ( my objid objid objid objid , ”Log , ”Log , ”Log , ”Log Time” , &l o g t i m e ) ; S t a t e Name” , &log sname ) ; General I n f o ” , &l o g g i n f o ) ; Jamming” , &log jamming ) ; Listado 6.12: Inicialización de variables de estado para el log Una vez realizada la declaración e inicialización de las variables y flags necesarios se pasarán a comentar las funciones implementadas para imprimir los mensajes de log descritos en la Sección 5.2. La función que imprime los mensajes de información de jamming es la mostrada en el Listado 6.13. Dicha función recibe un parámetro que sirve para identificar el tipo de jamming. Según el mismo y el flag de jamming que esté activo se imprimirá un mensaje u otro. Pueden verse ejemplos de llamadas a esta función en los Listados 6.5, 6.6, 6.7, etc. siguiendo al código que implementa la parte del proceso de jamming del que informan. Dichas llamadas, y por tanto el registro de los mensajes de información de jamming en el log, se realizarán si el usuario ha activado el flag log jamming desde la interfaz. s t a t i c void w l a n l o g p r i n t j a m m i n g i n f o ( i n t code ) { FIN ( w l a n l o g p r i n t j a m m i n g i n f o ( i n t ) ) ; i f ( log time ) p r i n t f ( ”[ % l f ] ” , c u r r e n t t i m e ) ; switch ( code ) { case 1 : { i f ( w l a n f l a g s −>c t s j a m m in g r e a d y ) p r i n t f ( ” %s − EMPIEZA JAMMING A CTS ( Llega RTS de o t r o nodo ) . \ n” , node name ) ; e l s e i f ( w l a n f l a g s −>c t s j a m m i n g f i n i s h e d ) p r i n t f ( ” %s − Transmitiendo trama para Jamming a CTS . . . \ n” , node name ) ; else p r i n t f ( ” %s − TERMINA JAMMING A CTS . \ n” , node name ) ; FOUT ; } case 2 : 46 6.2. Log de registro { i f ( w l a n f l a g s −>data jamming ready ) p r i n t f ( ” %s − EMPIEZA JAMMING A DATOS ( Llega CTS de o t r o nodo ) . \ n” , node name ) ; e l s e i f ( w l a n f l a g s −>d a t a j a m m i n g f i n i s h e d ) p r i n t f ( ” %s − Transmitiendo trama para Jamming a DATOS . . . \ n” , node name ) ; else p r i n t f ( ” %s − TERMINA JAMMING A DATOS. \ n” , node name ) ; FOUT ; } case 3 : { i f ( w l a n f l a g s −>ack jamming ready ) p r i n t f ( ” %s − EMPIEZA JAMMING a ACK ( Llega trama de DATOS de o t r o nodo ) . \ n” , node name ) ; e l s e i f ( w l a n f l a g s −>a c k j a m m i n g f i n i s h e d ) p r i n t f ( ” %s − Transmitiendo trama para Jamming a ACK . . . \ n” , node name ) ; else p r i n t f ( ” %s − TERMINA JAMMING A ACK. \ n” , node name ) ; FOUT ; } } } Listado 6.13: Función de registro de información de jamming en el log La función wlan log print general info es la encargada de registrar en el log los mensajes de información general (ver Listado 6.14). En este caso la función recibe un parámetro que identificará el mensaje que debe imprimir y según donde se coloque la llamada a la función (mostrada en el Listado 6.15) el parámetro recibirá un valor u otro. Las llamadas a esta función sólo se realizan si el usuario ha activado el flag log ginfo desde la interfaz. s t a t i c void w l a n l o g p r i n t g e n e r a l i n f o ( i n t code ) { FIN ( w l a n l o g p r i n t g e n e r a l i n f o ( i n t ) ) ; i f ( log time ) p r i n t f ( ”[ % l f ] ” , c u r r e n t t i m e ) ; switch ( code ) { case 1 : p r i n t f ( ” %s − Transmitiendo DATOS . . . \ n” , node name ) ; FOUT ; case 2 : p r i n t f ( ” %s − Transmitiendo RTS . . . \ n” , node name ) ; FOUT ; case 3 : p r i n t f ( ” %s − R e t r a n s m i t i e n d o RTS ( por no r e c i b i r CTS ) . . . \ n” , node name ) ; 47 6. Implementación FOUT ; case 4 : p r i n t f ( ” %s − R e t r a n s m i t i e n d o RTS ( por no r e c i b i r ACK ) . . . \ n” , node name ) ; FOUT ; case 5 : p r i n t f ( ” %s − Va a comenzar B a c k o f f ( con CW a l minimo ) . Tiempo de b a c k o f f = %l f . \ n” , node name , ( b a c k o f f s l o t s ∗ s l o t t i m e ) ) ; FOUT ; case 6 : p r i n t f ( ” %s − Va a comenzar B a c k o f f ( con CW a l doble ) . Tiempo de b a c k o f f = %l f . \ n” , node name , ( b a c k o f f s l o t s ∗ s l o t t i m e ) ) ; FOUT ; case 7 : p r i n t f ( ” %s − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = %l f . \ n” , node name , ( b a c k o f f s l o t s ∗ s l o t t i m e ) ) ; FOUT ; case 8 : p r i n t f ( ” %s − Termina b a c k o f f . \ n” , node name ) ; FOUT ; case 9 : p r i n t f ( ” %s − B a c k o f f parado por r e c e p t o r ocupado . \ n” , node name ) ; FOUT ; case 1 0 : p r i n t f ( ” %s − C o l i s i o n d e t e c t a d a . \ n” , node name ) ; FOUT ; case 1 1 : p r i n t f ( ” %s − Transmitiendo ACK . . . \ n” , node name ) ; FOUT ; case 1 2 : p r i n t f ( ” %s − Transmitiendo CTS . . . \ n” , node name ) ; FOUT ; case 1 3 : p r i n t f ( ” %s − R e t r a n s m i t i e n d o DATOS ( por no r e c i b i r ACK ) . . . \ n” , node name ) ; FOUT ; case 1 4 : p r i n t f ( ” %s − R e t r a n s m i t i e n d o DATOS . . . \ n” , node name ) ; FOUT ; case 1 5 : p r i n t f ( ” %s − Trama de DATOS d e s c a r t a d a por e x c e s i v a s r e t r a n s m i s i o n e s . \ n” , node name ) ; FOUT ; case 1 6 : p r i n t f ( ” %s − Incremento d e l contador LRC por no r e c i b i r ACK esperado . LRC= %i \n” , node name , l o n g r e t r y c o u n t ) ; FOUT ; case 1 7 : p r i n t f ( ” %s − Incremento d e l contador SRC por no r e c i b i r CTS esperado . SRC= %i \n” , node name , s h o r t r e t r y c o u n t ) ; FOUT ; } } Listado 6.14: Función de registro de mensajes de información general en el log 48 6.2. Log de registro if ( log ginfo ) wlan log print general info (11); Listado 6.15: Llamada a función de registro de mensajes de información general La función wlan log print state name imprimirá los nombres de los estados por los que va pasando el nodo. Dado que los estados efectúan muchas transiciones a sı́ mismos sólo se registrará en el log el nombre del estado cuando cambie, para evitar que se imprima reiteradas veces el mismo nombre de estado. Las llamadas a esta función se situarán dentro del código de cada estado del modelo de proceso wlan mac, y al igual que las funciones anteriores sólo se realiza la llamada si el flag log sname ha sido activado por el usuario desde la interfaz. s t a t i c void w l a n l o g p r i n t s t a t e n a m e ( ) { FIN ( w l a n l o g p r i n t s t a t e n a m e ( ) ) ; / ∗ Imprime e l nombre d e l e s t a d o a c t u a l s i e s t e ha c a m b i a d o ∗ / i f ( strcmp ( p r e v i o u s s t a t e n a m e , c u r r e n t s t a t e n a m e ) ) { i f ( log time ) p r i n t f ( ”[ % l f ] ” , c u r r e n t t i m e ) ; p r i n t f ( ” %s − Estado %s . \ n” , node name , c u r r e n t s t a t e n a m e ) ; strcpy ( previous state name , current state name ) ; } FOUT ; } Listado 6.16: Función de registro de nombre de estados en el log Respecto al tiempo de ejecución, como puede verse en los Listados 6.13 6.14 y 6.16 de las tres funciones anteriores, se imprimirá delante de casa mensaje si el flag log time ha sido activado por el usuario desde la interfaz. Por último en el Listado 6.17 se muestra un fragmento del log obtenido para la simulación de técnicas de jamming a tramas ACK en modo normal con perfil de tráfico de saturación (ver Sección 7.3.2.1). Se han marcado con flechas algunos mensajes para identificar más fácilmente la información del proceso y efectos del jamming. En este fragmento se muestran los mensajes desde el inicio de la simulación hasta que se produce el descarte de la primera trama de datos por exceso de retransmisiones, que tendrá lugar cuando el contador LRC (Long Retry Count) alcance el valor 4 correspondiente al lı́mite de transmisiones por trama. En este ejemplo se recogen los mensajes de log de todos los tipos de información (información general, de jamming, nombres de estados y tiempo de ejecución) para todos los nodos, pero como ya se ha comentado podrı́a configurarse para que no se muestren todos los tipos y ası́ poder centrarse en un tipo de información concreta. 49 6. Implementación [0.000000] [0.000000] [0.000000] [0.000000] [0.000000] [0.000000] [0.000000] [0.000000] [0.000000] [0.500000] [0.500000] [0.500000] [0.500000] [0.500352] [0.500352] [0.500666] [0.500666] [0.500666] [0.500666] [0.500666] [0.500716] [0.500716] [0.500716] [0.500716] [0.500776] [0.500776] [0.500776] [0.500776] [0.501128] [0.501128] [0.501128] [0.501138] [0.501138] [0.501442] [0.501442] [0.501452] [0.501452] [0.502409] [0.502410] [0.502420] [0.502420] [0.502724] [0.502724] [0.502774] [0.502774] [0.502774] [0.502774] [0.502894] [0.502894] 50 n o d o t r − Estado INIT . jammer − Estado INIT . nodo rc − Estado INIT . n o d o t r − Estado BSS INIT . jammer − Estado BSS INIT . nodo rc − Estado BSS INIT . n o d o t r − Estado IDLE . jammer − Estado IDLE . nodo rc − Estado IDLE . n o d o t r − Estado TRANSMIT . n o d o t r − Transmitiendo RTS . . . jammer − Estado TRANSMIT . jammer − Transmitiendo RTS . . . n o d o t r − Estado WAIT FOR RESPONSE . jammer − Estado WAIT FOR RESPONSE . nodo tr − Colision detectada . n o d o t r − Incremento d e l contador SRC por no r e c i b i r CTS esperado . SRC=1 n o d o t r − Estado DEFER . jammer − C o l i s i o n d e t e c t a d a . jammer − Estado DEFER . n o d o t r − Va a comenzar B a c k o f f ( con CW a l doble ) . Tiempo de b a c k o f f = 0 . 0 0 0 1 8 0 . n o d o t r − Estado BACKOFF . jammer − Va a comenzar B a c k o f f ( con CW a l doble ) . Tiempo de b a c k o f f = 0 . 0 0 0 0 6 0 . jammer − Estado BACKOFF . jammer − Termina b a c k o f f . jammer − Estado TRANSMIT . jammer − R e t r a n s m i t i e n d o RTS ( por no r e c i b i r CTS ) . . . n o d o t r − B a c k o f f parado por r e c e p t o r ocupado . jammer − Estado WAIT FOR RESPONSE . n o d o t r − Estado DEFER . nodo rc − Estado DEFER . nodo rc − Estado TRANSMIT . nodo rc − Transmitiendo CTS . . . nodo rc − Estado IDLE . jammer − Estado DEFER . jammer − Estado TRANSMIT . jammer − Transmitiendo DATOS . . . jammer − Estado WAIT FOR RESPONSE . nodo rc − Estado DEFER . nodo rc − Estado TRANSMIT . nodo rc − Transmitiendo ACK . . . nodo rc − Estado IDLE . jammer − Estado DEFER . jammer − Va a comenzar B a c k o f f ( con CW a l minimo ) . Tiempo de b a c k o f f = 0 . 0 0 0 5 0 0 . jammer − Estado BACKOFF . n o d o t r − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 0 1 2 0 . n o d o t r − Estado BACKOFF . n o d o t r − Termina b a c k o f f . n o d o t r − Estado TRANSMIT . 6.2. Log de registro [0.502894] [0.502894] [0.503246] [0.503246] [0.503246] [0.503256] [0.503256] [0.503560] [0.503560] [0.503570] [0.503570] [0.504527] [0.504527] [0.504527] [0.504537] [0.504537] [0.504537] [0.504537] [0.504841] [0.504841] [0.504841] [0.504841] [0.504841] [0.504891] [0.504891] [0.505205] [0.505205] [0.505585] [0.505585] [0.505585] [0.505585] [0.505937] [0.505937] [0.505937] [0.505947] [0.505947] [0.506251] [0.506252] [0.506262] [0.506262] [0.507219] [0.507219] [0.507229] [0.507229] [0.507533] [0.507533] [0.507583] [0.507583] [0.507583] nodo tr jammer nodo tr jammer nodo rc nodo rc nodo rc nodo rc nodo tr nodo tr nodo tr nodo tr jammer ( Llega nodo rc jammer jammer nodo rc nodo rc jammer jammer nodo rc nodo tr por no nodo tr nodo tr Tiempo nodo tr jammer jammer jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr − R e t r a n s m i t i e n d o RTS ( por no r e c i b i r CTS ) . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − R e t r a n s m i t i e n d o DATOS . . . − Estado WAIT FOR RESPONSE . − EMPIEZA JAMMING a ACK <−−−−− trama de DATOS de o t r o nodo ) . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo trama para Jamming a ACK . . . − Estado TRANSMIT . − Transmitiendo ACK . . . − TERMINA JAMMING A ACK. − Estado DEFER . − Estado IDLE . − Incremento d e l contador LRC <−−−−− r e c i b i r ACK esperado . LRC=1 − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l doble ) . <−−−−− de b a c k o f f = 0 . 0 0 1 1 0 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 0 3 8 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 2 4 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 0 4 2 0 . 51 6. Implementación [0.507583] [0.507823] [0.507823] [0.507823] [0.507823] [0.508175] [0.508175] [0.508175] [0.508185] [0.508185] [0.508489] [0.508489] [0.508499] [0.508499] [0.509456] [0.509456] [0.509466] [0.509466] [0.509770] [0.509771] [0.509821] [0.509821] [0.509821] [0.509821] [0.510001] [0.510001] [0.510001] [0.510001] [0.510353] [0.510353] [0.510353] [0.510363] [0.510363] [0.510667] [0.510667] [0.510677] [0.510677] [0.511634] [0.511634] [0.511634] [0.511644] [0.511644] [0.511644] [0.511644] [0.511948] [0.511948] [0.511948] [0.511948] [0.511948] [0.511998] 52 n o d o t r − Estado BACKOFF . jammer − Termina b a c k o f f . jammer − Estado TRANSMIT . jammer − Transmitiendo RTS . . . n o d o t r − B a c k o f f parado por r e c e p t o r ocupado . jammer − Estado WAIT FOR RESPONSE . n o d o t r − Estado DEFER . nodo rc − Estado DEFER . nodo rc − Estado TRANSMIT . nodo rc − Transmitiendo CTS . . . nodo rc − Estado IDLE . jammer − Estado DEFER . jammer − Estado TRANSMIT . jammer − Transmitiendo DATOS . . . jammer − Estado WAIT FOR RESPONSE . nodo rc − Estado DEFER . nodo rc − Estado TRANSMIT . nodo rc − Transmitiendo ACK . . . nodo rc − Estado IDLE . jammer − Estado DEFER . jammer − Va a comenzar B a c k o f f ( con CW a l minimo ) . Tiempo de b a c k o f f = 0 . 0 0 0 4 8 0 . jammer − Estado BACKOFF . n o d o t r − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 0 1 8 0 . n o d o t r − Estado BACKOFF . n o d o t r − Termina b a c k o f f . n o d o t r − Estado TRANSMIT . n o d o t r − R e t r a n s m i t i e n d o RTS ( por no r e c i b i r ACK ) . . . <−−−−− jammer − B a c k o f f parado por r e c e p t o r ocupado . n o d o t r − Estado WAIT FOR RESPONSE . jammer − Estado DEFER . nodo rc − Estado DEFER . nodo rc − Estado TRANSMIT . nodo rc − Transmitiendo CTS . . . nodo rc − Estado IDLE . n o d o t r − Estado DEFER . n o d o t r − Estado TRANSMIT . n o d o t r − R e t r a n s m i t i e n d o DATOS . . . n o d o t r − Estado WAIT FOR RESPONSE . jammer − EMPIEZA JAMMING a ACK <−−−−− Llega trama de DATOS de o t r o nodo ) . nodo rc − Estado DEFER . jammer − Estado TRANSMIT . jammer − Transmitiendo trama para Jamming a ACK . . . nodo rc − Estado TRANSMIT . nodo rc − Transmitiendo ACK . . . jammer − TERMINA JAMMING A ACK. jammer − Estado DEFER . nodo rc − Estado IDLE . n o d o t r − Incremento d e l contador LRC <−−−−− por no r e c i b i r ACK esperado . LRC=2 n o d o t r − Estado DEFER . n o d o t r − Va a comenzar B a c k o f f ( con CW a l doble ) . <−−−−− 6.2. Log de registro [0.511998] [0.512312] [0.512312] [0.512612] [0.512612] [0.512612] [0.512612] [0.512964] [0.512964] [0.512964] [0.512974] [0.512974] [0.513278] [0.513278] [0.513288] [0.513288] [0.514245] [0.514246] [0.514256] [0.514256] [0.514560] [0.514560] [0.514610] [0.514610] [0.514610] [0.514610] [0.514930] [0.514930] [0.514930] [0.514930] [0.515282] [0.515282] [0.515282] [0.515292] [0.515292] [0.515596] [0.515596] [0.515606] [0.515606] [0.516563] [0.516563] [0.516573] [0.516573] [0.516877] [0.516877] [0.516927] [0.516927] [0.516927] [0.516927] [0.516967] Tiempo nodo tr jammer jammer jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr nodo tr de b a c k o f f = 0 . 0 0 0 9 6 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 0 3 0 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 3 2 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 0 3 6 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 0 6 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 0 0 4 0 . − Estado BACKOFF . − Termina b a c k o f f . 53 6. Implementación [0.516967] [0.516967] [0.516967] [0.517319] [0.517319] [0.517319] [0.517329] [0.517329] [0.517633] [0.517634] [0.517644] [0.517644] [0.518601] [0.518601] [0.518601] [0.518611] [0.518611] [0.518611] [0.518611] [0.518915] [0.518915] [0.518915] [0.518915] [0.518915] [0.518965] [0.518965] [0.519279] [0.519279] [0.519299] [0.519299] [0.519299] [0.519299] [0.519651] [0.519651] [0.519651] [0.519661] [0.519661] [0.519965] [0.519965] [0.519975] [0.519975] [0.520932] [0.520932] [0.520942] [0.520942] [0.521246] [0.521247] [0.521297] [0.521297] 54 nodo tr nodo tr jammer nodo tr jammer nodo rc nodo rc nodo rc nodo rc nodo tr nodo tr nodo tr nodo tr jammer ( Llega nodo rc jammer jammer nodo rc nodo rc jammer jammer nodo rc nodo tr por no nodo tr nodo tr Tiempo nodo tr jammer jammer jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer − Estado TRANSMIT . − R e t r a n s m i t i e n d o RTS ( por no r e c i b i r ACK ) . . . <−−−−− − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − R e t r a n s m i t i e n d o DATOS . . . − Estado WAIT FOR RESPONSE . − EMPIEZA JAMMING a ACK <−−−−− trama de DATOS de o t r o nodo ) . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo trama para Jamming a ACK . . . − Estado TRANSMIT . − Transmitiendo ACK . . . − TERMINA JAMMING A ACK. − Estado DEFER . − Estado IDLE . − Incremento d e l contador LRC <−−−−− r e c i b i r ACK esperado . LRC=3 − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l doble ) . <−−−−− de b a c k o f f = 0 . 0 0 5 1 8 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 0 0 2 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 5 4 0 . − Estado BACKOFF . 6.2. Log de registro [0.521297] [0.521297] [0.521837] [0.521837] [0.521837] [0.521837] [0.522189] [0.522189] [0.522189] [0.522199] [0.522199] [0.522503] [0.522503] [0.522513] [0.522513] [0.523470] [0.523470] [0.523480] [0.523480] [0.523784] [0.523784] [0.523834] [0.523834] [0.523834] [0.523834] [0.524294] [0.524294] [0.524294] [0.524294] [0.524646] [0.524646] [0.524646] [0.524656] [0.524656] [0.524960] [0.524960] [0.524970] [0.524970] [0.525927] [0.525928] [0.525938] [0.525938] [0.526242] [0.526242] [0.526292] [0.526292] [0.526292] [0.526292] [0.526752] [0.526752] [0.526752] nodo tr nodo tr jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr jammer jammer jammer − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 4 8 6 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 4 6 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 4 3 2 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 4 6 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 3 8 6 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . 55 6. Implementación [0.526752] [0.527104] [0.527104] [0.527104] [0.527114] [0.527114] [0.527418] [0.527418] [0.527428] [0.527428] [0.528385] [0.528385] [0.528395] [0.528395] [0.528699] [0.528699] [0.528749] [0.528749] [0.528749] [0.528749] [0.528889] [0.528889] [0.528889] [0.528889] [0.529241] [0.529241] [0.529251] [0.529251] [0.529555] [0.529556] [0.529566] [0.529566] [0.530523] [0.530523] [0.530533] [0.530533] [0.530837] [0.530837] [0.530887] [0.530887] [0.530887] [0.530887] [0.531487] [0.531487] [0.531487] [0.531487] [0.531839] [0.531839] [0.531839] [0.531849] [0.531849] 56 nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 1 4 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 3 4 0 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 6 0 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 3 2 6 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . 6.2. Log de registro [0.532153] [0.532153] [0.532163] [0.532163] [0.533120] [0.533120] [0.533130] [0.533130] [0.533434] [0.533435] [0.533485] [0.533485] [0.533485] [0.533485] [0.533525] [0.533525] [0.533525] [0.533525] [0.533877] [0.533877] [0.533877] [0.533887] [0.533887] [0.534191] [0.534191] [0.534201] [0.534201] [0.535158] [0.535158] [0.535168] [0.535168] [0.535472] [0.535472] [0.535522] [0.535522] [0.535522] [0.535522] [0.535862] [0.535862] [0.535862] [0.535862] [0.536214] [0.536214] [0.536214] [0.536224] [0.536224] [0.536528] [0.536528] [0.536538] [0.536538] [0.537496] nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 0 4 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 2 6 6 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 3 4 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 2 6 2 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . 57 6. Implementación [0.537496] [0.537506] [0.537506] [0.537810] [0.537810] [0.537860] [0.537860] [0.537860] [0.537860] [0.538360] [0.538360] [0.538360] [0.538360] [0.538712] [0.538712] [0.538712] [0.538722] [0.538722] [0.539026] [0.539026] [0.539036] [0.539036] [0.539993] [0.539993] [0.540003] [0.540003] [0.540307] [0.540307] [0.540357] [0.540357] [0.540357] [0.540357] [0.540457] [0.540457] [0.540457] [0.540457] [0.540809] [0.540809] [0.540809] [0.540819] [0.540819] [0.541123] [0.541124] [0.541134] [0.541134] [0.542091] [0.542091] [0.542101] [0.542101] [0.542405] [0.542405] 58 nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 5 0 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 2 2 8 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 1 0 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 1 7 8 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . 6.2. Log de registro [0.542455] [0.542455] [0.542455] [0.542455] [0.543015] [0.543015] [0.543015] [0.543015] [0.543367] [0.543367] [0.543367] [0.543377] [0.543377] [0.543681] [0.543681] [0.543691] [0.543691] [0.544648] [0.544648] [0.544658] [0.544658] [0.544962] [0.544963] [0.545013] [0.545013] [0.545013] [0.545013] [0.545213] [0.545213] [0.545213] [0.545213] [0.545565] [0.545565] [0.545565] [0.545575] [0.545575] [0.545879] [0.545879] [0.545889] [0.545889] [0.546846] [0.546846] [0.546856] [0.546856] [0.547160] [0.547160] [0.547210] [0.547210] [0.547210] [0.547210] jammer Tiempo jammer nodo tr nodo tr jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 5 6 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 1 6 8 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 2 0 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 1 1 2 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 6 2 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 0 9 2 0 . − Estado BACKOFF . 59 6. Implementación [0.547830] [0.547830] [0.547830] [0.547830] [0.548182] [0.548182] [0.548182] [0.548192] [0.548192] [0.548496] [0.548496] [0.548506] [0.548506] [0.549464] [0.549464] [0.549474] [0.549474] [0.549778] [0.549778] [0.549828] [0.549828] [0.549828] [0.549828] [0.550128] [0.550128] [0.550128] [0.550128] [0.550480] [0.550480] [0.550480] [0.550490] [0.550490] [0.550794] [0.550794] [0.550804] [0.550804] [0.551761] [0.551761] [0.551761] [0.551771] [0.551771] [0.551771] [0.551771] [0.552075] [0.552075] [0.552075] [0.552075] [0.552075] jammer jammer jammer nodo tr jammer nodo tr nodo rc nodo rc nodo rc nodo rc jammer jammer jammer jammer nodo rc nodo rc nodo rc nodo rc jammer jammer Tiempo jammer nodo tr nodo tr nodo tr nodo tr nodo tr jammer nodo tr jammer nodo rc nodo rc nodo rc nodo rc nodo tr nodo tr nodo tr nodo tr jammer ( Llega nodo rc jammer jammer nodo rc nodo rc jammer jammer nodo rc nodo tr por no nodo tr − Termina b a c k o f f . − Estado TRANSMIT . − Transmitiendo RTS . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo DATOS . . . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo ACK . . . − Estado IDLE . − Estado DEFER . − Va a comenzar B a c k o f f ( con CW a l minimo ) . de b a c k o f f = 0 . 0 0 0 4 4 0 . − Estado BACKOFF . − Retoma B a c k o f f . Tiempo de b a c k o f f r e s t a n t e = 0 . 0 0 0 3 0 0 . − Estado BACKOFF . − Termina b a c k o f f . − Estado TRANSMIT . − R e t r a n s m i t i e n d o RTS ( por no r e c i b i r ACK ) . . . − B a c k o f f parado por r e c e p t o r ocupado . − Estado WAIT FOR RESPONSE . − Estado DEFER . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo CTS . . . − Estado IDLE . − Estado DEFER . − Estado TRANSMIT . − R e t r a n s m i t i e n d o DATOS . . . − Estado WAIT FOR RESPONSE . − EMPIEZA JAMMING a ACK <−−−−− trama de DATOS de o t r o nodo ) . − Estado DEFER . − Estado TRANSMIT . − Transmitiendo trama para Jamming a ACK . . . − Estado TRANSMIT . − Transmitiendo ACK . . . − TERMINA JAMMING A ACK. − Estado DEFER . − Estado IDLE . − Incremento d e l contador LRC <−−−−− r e c i b i r ACK esperado . LRC=4 − Trama de DATOS d e s c a r t a d a por e x c e s i v a s r e t r a n s m i s i o n e s . Listado 6.17: Ejemplo de fragmento del log 60 CAPÍTULO 7 EVALUACIÓN DE LOS ATAQUES En este capı́tulo se va a detallar la información referente a la experimentación con los ataques mediante técnicas de jamming implementados. En primer lugar se explicará la configuración de los escenarios que se han diseñado para ejecutar las simulaciones, definiendo los roles, atributos y perfiles de tráfico de los nodos de la red. Después se describirá la estrategia de evaluación que se usa para realizar las pruebas y obtener resultados. Por último se analizan los resultados obtenidos. 7.1. Configuración de los escenarios En esta sección se van a describir los detalles de la configuración de los escenarios que se han diseñado para la ejecución de las simulaciones. A continuación se comentarán los escenarios definidos, los roles y atributos de los nodos presentes en ellos y los perfiles de tráfico usados en las simulaciones. 7.1.1. Escenarios y roles de los nodos Para la experimentación se han definido dos escenarios, un escenario de jamming y un escenario normal de referencia. En el escenario de jamming se realizarán las simulaciones de los ataques mediante técnicas de jamming implementados para este proyecto. Este escenario es el mostrado en la Figura 7.1 y consta de tres nodos: - jammer: nodo que puede transmitir datos y realizar jamming. - nodo tr: nodo que transmite datos y “sufre” las consecuencias del jamming. 61 7. Evaluación de los ataques - nodo rc: nodo que recibe las transmisiones de datos de los dos anteriores. El escenario normal tiene como objetivo servir de marco de referencia para comparar sus resultados con los obtenidos en el escenario de jamming. Este escenario será por tanto similar al anterior excepto por el hecho de que ninguno de sus nodos realiza jamming, es decir, todos los nodos se comportarán siguiendo el estándar 802.11. El escenario normal es el mostrado en la figura 7.2 y consta de tres nodos de los cuales normal tr y normal tr2 transmiten ambos al mismo destino, normal rc. En el análisis de resultados se emplearán en algunos casos las estadı́sticas recogidas en normal tr para compararlas con los nodos nodo tr y jammer del escenario de jamming y ası́ poder estudiar cuánto se diferencian estos dos últimos del comportamiento estándar. Figura 7.1: Escenario de jamming Figura 7.2: Escenario normal 62 7.1. Configuración de los escenarios Los escenarios sobre los que se realizan las simulaciones son los ya descritos. Se han diseñado con tres nodos para cubrir el mı́nimo número de roles necesarios para la demostración de los ataques. Con otras configuraciones, con mayor número de nodos e incluyendo un nodo con función de punto de acceso, se ha comprobado que se obtienen resultados similares y no se aporta nada nuevo a la experimentación. 7.1.2. Atributos de los nodos Como se comentó en la Sección 4.1 el modelo de los nodos es de tipo wlan station adv. Cada nodo dispone de una serie de atributos que le van proporcionando los procesos de los que está compuesto. Estos atributos se exportan al nivel del nodo para que se puedan configurar desde el escenario. A continuación se explicarán los atributos más significativos de los nodos y se justificarán los valores que se les han asignado para las ejecuciones de las simulaciones. Parámetros generales: parámetros propios del nodo (ver Tabla 7.1). - Nombre (Name): representan el nombre del nodo. - Modelo (Model): modelo de nodo que implementa. - Dirección de destino (Destination Address): es la dirección MAC de la estación a la que se enviarán las tramas desde este nodo. En el escenario de jamming los nodos jammer y nodo tr tendrán este atributo al valor de la dirección MAC del nodo rc definida en su atributo Wireless LAN MAC Addresss. Ası́ mismo en el escenario normal los nodos normal tr y normal tr2 tendrán este atributo al valor de la dirección MAC del nodo normal rc que al igual que el caso anterior está definida por su atributo Wireless LAN MAC Addresss. Tabla 7.1: Atributos del nodo: parámetros generales Parámetros de jamming (CTS Jamming, Data Jamming y ACK Jamming): la utilidad de generación de jamming ha sido desarrollada especı́ficamente para este proyecto. Estos parámetros (ver Tabla 7.2) permiten inhabilitar o elegir entre cada uno de los tipos de jamming implementados seleccionando un modo (descripción de los modos en Sección 5.1.2), que podrá ser uno de los siguientes: - Inhabilitado (Disabled): el nodo no realiza jamming y se comportará según el estándar. 63 7. Evaluación de los ataques - Normal (Normal): el nodo realiza el jamming sólo cuando tenga datos esperando para ser enviados. - Continuo (Continuous): el nodo realiza el jamming siempre, aunque no tenga información que enviar. - Aleatorio (Random): se realizará jamming en modo normal pero sólo en algunas ocasiones. Para esto se obtiene un número aleatorio a partir de una distribución uniforme entre 0 y 1 y si es menor que el valor introducido para el parámetro de jamming aleatorio (Random CTS Jamming, Random DATA Jamming o Random ACK Jamming según el tipo) se realiza el jamming. Tabla 7.2: Atributos del nodo: parámetros de jamming Parámetros de log (Log Parameters): la utilidad de generación de logs también ha sido desarrollada para este proyecto. Los parámetros son los mostrados en la Tabla 7.3, cada uno de ellos habilita que se registre en el log un tipo de información (ver descripción de los tipos en Sección 5.2), como puede ser: - Tiempo de ejecución (Execution Time): muestra, antes de todos los demás mensajes de log, el momento de la ejecución en que se están produciendo. - Información general (General Info): registra en el log mensajes de información general, tales como envı́o de tramas, incremento de contadores de retransmisiones, descarte de tramas, etc. - Nombres de estado (State Names): añade al log los nombres de los estados por los que pasa el nodo durante la simulación. - Información de jamming (Jamming Info): si el nodo está realizando jamming se imprimen mensajes de información, que pueden ser: comienzo de jamming, envı́o de trama para jamming y fin de jamming. 64 7.1. Configuración de los escenarios Tabla 7.3: Atributos del nodo: parámetros de log Parámetros de generación de tráfico (Traffic Generation Parameters): permitirán configurar el ritmo de generación de paquetes por las capas superiores. Los atributos y valores asignados pueden verse en la Tabla 7.4 y se definen a continuación: - Tiempo de comienzo (Start Time): indica en qué momento de la ejecución se comenzará a generar paquetes. Estará fijo para todos los nodos de las simulaciones a 0,5 segundos, excepto en el caso de que se desee un perfil de tráfico de no transmisión (ver Sección 7.1.3). - Tiempo de actividad (ON State Time): tiempo durante el que la generación de tráfico estará activa. Para todas las simulaciones estará a cualquier valor mayor que el tiempo de simulación, para que siempre esté activa. - Tiempo de no actividad (OFF State Time): tiempo en que la generación de tráfico no está activa. Para todas las simulaciones estará a valor 0. - Tiempo entre llegadas (Interarrival Time): representa el tiempo entre generaciones sucesivas de paquetes. Este valor se irá modificando según el perfil de tráfico deseado (ver Sección 7.1.3). - Tamaño de paquete (Packet Size): es el tamaño en Bytes que tendrán los paquetes que se generen. Para todas las simulaciones se mantendrá a 1024 Bytes. - Tamaño de segmentación (Segmentation Size): si los paquetes generados superan este número de Bytes se enviarán fragmentados. Para todas las simulaciones se ha fijado para que no se realice segmentación. - Tiempo de parada (Stop Time): indican en qué momento de la simulación se detendrá la generación de paquetes. Se fijará a valor Never para que nunca se pare. 65 7. Evaluación de los ataques Tabla 7.4: Atributos del nodo: parámetros de generación de tráfico Parámetros WLAN: permitirán configurar los parámetros de la red WLAN (ver Tabla 7.5). A continuación se comentarán los parámetros de este grupo que afectan a las simulaciones realizadas. Para los atributos relativos a las caracterı́sticas fı́sicas del medio de transmisión se han conservado los valores definidos por defecto en el modelo de nodo wlan station adv. - Dirección MAC (Wireless LAN MAC Addres): como ya se comentó corresponde a la dirección MAC del nodo. En los escenarios los nodos transmisores tendrán para este atributo el valor Auto Assigned generado automáticamente, mientras que los nodos receptores tendrán asignada la dirección MAC 799975189, que se corresponderá con el valor del atributo Destination Address de los nodos transmisores. - Identificador BSS (BSS Idenfier): identifica el BSS al que pertenece la dirección MAC de la WLAN. Se conserva el valor por defecto Auto Assigned y de esta forma todas las estaciones pertenezcen al mismo BSS. - Umbral RTS (RTS Threshold): define el umbral (en número de Bytes) a partir del que se realizará el intercambio RTS/CTS previo a las transmisiones de datos. Se ha fijado a 256 Bytes, de esta forma el intercambio se realizará siempre ya que el tamaño de los paquetes de datos está establecido a 1024 Bytes. - Umbral de fragmentación (Fragmentation Threshold): fija el tamaño que deben tener los fragmentos de los paquetes de datos para ser enviados. Se ha fijado al valor None que indica que no se realizará fragmentación. - Lı́mite de retransmisiones de tramas cortas (Short Retry Limit): especifica el número máximo de intentos de retransmisión para las tramas cuyo tamaño sea menor o igual que el determinado por el atributo RTS Threshold. En nuestro caso este lı́mite afectará a las tramas de control de la capa MAC. Si se alcanza este lı́mite se descartará la trama de datos correspondiente. Se mantendrá el lı́mite por defecto, que es de 7 transmisiones. 66 7.1. Configuración de los escenarios - Lı́mite de retransmisiones de tramas largas (Long Retry Limit): especifica el número máximo de intentos de retransmisión para las tramas cuyo tamaño sea mayor que el determinado por el atributo RTS Threshold. En nuestro caso este lı́mite se aplicará a las retransmisiones de tramas de datos. Si se alcanza este lı́mite se descartará la trama de datos. Se mantendrá el lı́mite por defecto, que es de 4 transmisiones. - Tamaño de la cola de transmisión (Buffer Size): define el tamaño máximo en bits de la cola de transmisión de la capa superior. Cuando se alcanza este lı́mite los paquetes que llegan de las capas superiores son descartados hasta que se libere espacio en la cola. Se mantiene el valor por defecto de 256000 bits. - Caracterı́sticas fı́sicas (Physical Characteristics): determina la tecnologı́a de la capa fı́sica usada. Dicha tecnologı́a será empleada por la capa MAC para configurar algunos parámetros del protocolo 802.11, como son el tiempo SIFS, el tiempo de duración de un slot, el tamaño de la ventana de contención máxima y mı́nima y otros parámetros derivados de los anteriores (como el tiempo DIFS). El valor de este atributo también determina el ratio máximo de transmisión que de los paquetes de datos definido por el atributo Data Rate. Como se comentó en la Sección 4.1 el modelo de nodo wlan station adv implementa por defecto la versión del estándar 802.11b con la tecnologı́a de la capa fı́sica Direct Sequence por lo que el parámetro Physical Characteristics se dejará al valor Direct Sequence (lo que implica los valores de tiempo de slot a 20 µs, tiempo SIFS a 10 µs, CWmin a 31 slots y CWmax a 1023 slots) e igualmente se conservará el valor por defecto del ratio de envı́o de datos (Data Rate) a 11 Mbps. - Ajustes del canal (Channel Settings): especifica la banda de frecuencia que usará el transmisor y receptor de radio conectados a la capa MAC. Se mantendrá a los valores por defecto del modelo de nodo, que son ancho de banda (Bandwidth) a valor Physical Technology Dependent y frecuencia mı́nima (Min Frequency) a valor BSS Based. - Potencia de transmisión (Transmit Power): especifica la potencia de transmisión en vatios. Se conserva al valor por defecto de 0,005 vatios. - Umbral de potencia de recepción de paquetes (Packet Reception-Power Threshold): define la sensibilidad del receptor de radio en dBm para detectar la llegada de paquetes. Se deja al valor por defecto de -95 dBm. 67 7. Evaluación de los ataques Tabla 7.5: Atributos del nodo: parámetros WLAN 7.1.3. Perfiles de tráfico Para la experimentación con las simulaciones se han definido distintos perfiles de tráfico. Con ellos se representan tres situaciones de tráfico para nodos individuales que ayudarán a definir las etapas de la experimentación y a sacar conclusiones de las evaluaciones. Para configurarlos se usarán algunos de los atributos relacionados con los parámetros de generación de tráfico (Traffic Generation Parameters) descritos en la Sección 7.1.2. Los perfiles diseñados son los siguientes: Perfil de saturación: este perfil se corresponde con un tráfico continuo, es decir, con él los nodos tendrán paquetes en su cola de transmisión durante toda la simulación. El valor necesario al que se debe fijar el parámetro de tiempo entre llegadas (Interarrival Time) para que se produzca este tráfico, en los escenarios definidos y para todas las condiciones de jamming, es de 0,002 segundos. Este perfil será usado para obtener los mejores resultados de comportamiento egoı́sta, ya que los nodos jammer podrán apropiarse del canal durante toda la simulación. 68 7.2. Estrategia de evaluación Perfil de tasa media: este perfil se corresponde con un tráfico no continuo, en el que algunos de los nodos transmisores de los escenarios definidos pueden quedarse, en algún instante de la simulación, sin paquetes que enviar. El valor asignado en este caso al parámetro Interarrival Time es de 0,003 segundos. Perfil de no transmisión: con este perfil los nodos no transmiten ningún paquete de datos durante la simulación. Para conseguirlo basta con fijar el atributo de tiempo de comienzo (Start Time) al valor Never, para que nunca se comience la generación de tráfico. Cada uno de los nodos transmisores generará su tráfico siguiendo uno de estos perfiles según se indique en cada etapa. 7.2. Estrategia de evaluación En esta sección se explicará la estrategia usada para la evaluación de los ataques mediante técnicas de jamming estudiados. Para ello en primer lugar se comentarán los tipos de estadı́sticas recogidas y a continuación se explicarán los apartados en que se divide la experimentación y los resultados que se espera obtener. 7.2.1. Medidas estadı́sticas OPNET Modeler dispone de una amplia variedad de estadı́sticas para representar los resultados de las simulaciones. Éstas pueden obtenerse en forma de gráficas de resultados y, si se desea más detalle, en forma de resumen de paquetes creados o destruidos por módulos. De todas las estadı́sticas disponibles se han seleccionado las consideradas más adecuadas para ilustrar los comportamientos en estudio, a continuación se explicará la información que representa cada una. Tasa de envı́o de datos En este caso se presenta, en paquetes por segundo, la tasa de envı́o de datos transmitida por la capa MAC de las estaciones. Para comparar mejor los resultados obtenidos para esta estadı́stica se le ha aplicado el filtro de sample sum predefinido en OPNET Modeler. Mediante este filtro se genera, por cada entrada T0 una segunda muestra Tout . En el eje de abscisas los valores para x0i y xouti estarán alineados, mientras que en el de ordenadas la relación es la indicada por la Expresión 7.1. yout [n] = n X y0i (7.1) i=0 Por tanto para esta medida los datos obtenidos son resultados acumulativos. 69 7. Evaluación de los ataques Tamaño de la cola de transmisión Representa el número total de paquetes que hay en la cola de transmisión de la capa MAC de los nodos en cada instante de la simulación. Normalmente la cola sólo contiene paquetes de las capas superiores. Retardo de acceso al medio Con esta estadı́stica se evalúa el retardo de acceso al medio (en segundos) que representan las esperas que sufre el envı́o de datos en las estaciones. Dichas esperas pueden ser debidas tanto a los retrasos en la cola de transmisión como los ocasionadas por los procesos de contienda y administración de la capa MAC, es decir, el retardo de acceso al medio se contabiliza desde que cada paquete entra en la cola de transmisión hasta que comienza a ser enviado, como se muestra en la Figura 7.3. Figura 7.3: Cálculo del retardo de acceso al medio Tasa de recepción de datos Tasa de datos recibidos en la capa MAC desde la capa fı́sica en paquetes por segundo. Esta estadı́stica incluye todo el tráfico de datos recibidos, sea cual sea su destino. Al igual que para el caso de la tasa de envı́o de datos, a esta estadı́stica también se le ha aplicado el filtro de OPNET Modeler sample sum. Tasa de datos descartados por exceso de reenvı́os Esta medida recoge la tasa de datos (en paquetes por segundo) de las capas superiores que son descartados porque la capa MAC no puede recibir los ACK correspondientes y los paquetes ya han alcanzado las cotas máximas de retransmisiones permitidas por los lı́mites short retry limit o long retry limit. Al igual que para el caso de las tasas de envı́o y recepción de datos, a esta estadı́stica también se le ha aplicado el filtro de OPNET sample sum. 70 7.2. Estrategia de evaluación Tablas de estadı́sticas de paquetes OPNET Modeler también dispone de una utilidad para recoger estadı́sticas de paquetes creados y destruidos según módulos. En el caso de los nodos que participan en las simulaciones, los módulos que crean paquetes son: el módulo wireless lan mac que representa a la capa MAC y puede crear tramas de control (RTS,CTS o ACK) y tramas MAC (para encapsular los datos), y el módulo source que representa a las capas superiores y genera paquetes “sin formato” (detalles de los módulos en la Sección 4.1). Asignarle a este último conjunto de paquetes el tipo “sin formato” es debido, como se explica en 4.1, a que el módulo source es una abstracción de las capas superiores del modelo de red, por lo que los paquetes que genera son de un tipo especial que no se corresponde con ningún formato estándar. A su vez los módulos que destruyen paquetes son: el módulo wireless lan mac que destruirá las tramas de control y MAC que reciba y tengan como destino el nodo actual; y el módulo sink que al igual que source es una abstracción de las capas superiores y destruirá los paquetes “sin formato” resultantes de desencapsular las tramas MAC en el nivel inferior. Como se ha dicho la destrucción de paquetes se realiza en los módulos del nodo destino de los mismos, por lo que un paquete destruido en el módulo sink implica una recepción correcta de datos. 7.2.2. Descripción de la estrategia A continuación se pasará a explicar la estrategia seguida para la evaluación de resultados. En todas las experimentaciones se mostrarán al menos los resultados para las estadı́sticas de tasa de envı́o de datos y tamaño de la cola de transmisión, descritas en la Sección 7.2.1. Además de estas se usarán las más apropiadas para ilustrar los comportamientos estudiados en cada caso. La duración de las simulaciones para todas las ejecuciones se ha establecido en 5 segundos. Con este tiempo se consigue producir una cantidad de tráfico necesaria para obtener información de evaluación completa sin hacer que las ejecuciones se hagan muy duraderas. El proceso de jamming se describirá a través de la actuación del nodo egoı́sta, por lo que la evaluación de los resultados se organiza en base a los tres modos de ejecución de las técnicas de jamming (ver Sección 5.1.2). De esta forma en la primera etapa de evaluación, el nodo jammer actuará en modo de jamming continuo (no enviará datos, sólo perjudicará a nodo tr), en la siguiente actuará en modo normal (enviando datos y aprovechando el canal) y en la última etapa utilizará el modo aleatorio (realizando el jamming de forma aleatoria). 71 7. Evaluación de los ataques Modo continuo Se realizará la simulación en el escenario de jamming con nodo tr con perfil de tráfico de tasa media y el nodo jammer realizando el jamming en modo continuo con perfil de tráfico de no transmisión. Con esta configuración se pretende demostrar que si se realiza jamming, aunque el nodo jammer no tenga datos para enviar, nodo tr no consigue transmitir sus datos de forma correcta. Modo normal En este modo se distinguirán dos etapas, en la primera se usará el escenario de jamming con nodo tr con perfil de tráfico de tasa media y jammer con perfil de tráfico de saturación. En ella se estudiará el aprovechamiento del canal que hará el jammer con los distintos tipos de jamming y se demostrará cuál de ellos es más eficiente. En la segunda etapa se realizarán las simulaciones tanto en el escenario de jamming como en el normal, con todos los nodos transmisores de los escenarios con perfiles de tráfico de tasa media. En este caso se compararan los resultados de normal tr con los obtenidos por nodo tr y por el nodo jammer efectuando el tipo de jamming que se demostró cómo más eficiente en la etapa anterior. Modo aleatorio Por último para ilustrar el comportamiento del jamming en modo aleatorio se estudiarán los resultados del tipo de jamming más eficiente con nodos transmisores con perfil de tráfico de saturación para distintos valores del parámetro de jamming aleatorio (Random CTS Jamming, Random DATA Jamming o Random ACK Jamming, dependiendo del tipo de jamming que se obtenga como más eficiente en la sección anterior). 7.3. Resultados de la evaluación A continuación se explicarán los resultados de la evaluación con la ayuda de las estadı́sticas generadas por OPNET Modeler y siguiendo la estructura definida en 7.2.2. 7.3.1. Técnicas de jamming en modo continuo En este marco de evaluación el nodo jammer realiza el jamming en modo continuo y a pesar de tener un perfil de tráfico de no transmisión consigue evitar que nodo tr realice correctamente las transmisiones de datos. A continuación se pasará a demostrar esta cuestión para los tres tipos de jamming implementados. Para el jamming a CTS, como muestra la Figura 7.4, la tasa de envı́o de datos 1 de 1 Se debe recordar que las medidas de tasas, tanto de envı́o de datos como de recepción y descarte, se presentan en las gráficas en valores acumulativos por la aplicación del filtro sample sum de OPNET 72 7.3. Resultados de la evaluación Figura 7.4: Tasa de envı́o de datos de nodo tr para los distintos tipos de jamming en modo continuo nodo tr permanece a cero durante toda la simulación . Ésto sucede a pesar de que su módulo source genera 1500 paquetes de datos para ser enviados (ver Tabla 7.6). Además intenta comenzar el intercambio RTS/CTS 907 veces, como indican los paquetes de control creados en su capa MAC (módulo wirelees lan mac), sin conseguirlo ninguna. Por tanto el jamming a CTS en modo continuo cumple su objetivo. En el caso del jamming a tramas de datos y ACK, como muestra la Figura 7.4, nodo tr sı́ envı́a datos, prácticamente el mismo número de paquetes para ambos casos (355 con jamming a datos y 352 con jamming a ACK, ver Tabla 7.6). Ésto es lógico ya que el primer jamming está enfocado a que las tramas de datos no lleguen al receptor (nodo rc) y el segundo a que las tramas ACK de confirmación enviadas por nodo rc no sean recibidas en nodo tr pero en ambos casos las tramas de datos llegan a enviarse. Para demostrar que nodo tr no transmite de forma correcta en el caso de jamming a datos en modo continuo, en la Figura 7.5 puede verse que la tasa de recepción de datos en nodo rc es cero por lo que los datos enviados por nodo tr no se reciben en su destino. 73 7. Evaluación de los ataques nodo tr XXX XXX Formato Control XXX Módulo XX Jamming a CTS Jamming a datos Jamming a ACK source wireless lan mac source wireless lan mac source wireless lan mac MAC sin formato Total 1500 1500 907 1500 1775 1500 1760 907 1500 1420 355 1500 1408 352 Tabla 7.6: Número de paquetes creados por el nodo nodo tr con jamming en modo continuo Figura 7.5: Tasa de recepción de datos en nodo rc para jamming a datos en modo continuo En el caso del jamming a ACK en modo continuo es necesario estudiar la Figura 7.6, en ella pueden verse la tasa de envı́o de datos y la tasa de descarte de datos por alcance del lı́mite de retransmisiones de nodo tr. Al compararlas se ve que la tasa de envı́o es igual a la de descarte multiplicada por cuatro (este resultado se estudiará con 74 7.3. Resultados de la evaluación Figura 7.6: Tasa de envı́o y de descarte de datos por exceder el lı́mite de retransmisiones para el nodo tr con jamming continuo a tramas ACK más detalle a continuación), que se corresponde con el número de veces que se intenta enviar una trama de datos antes de ser descartada, definido en el atributo Long Retry Limit (ver atributos de los nodos en Sección 7.1.2). Para ver más concretamente que los paquetes transmitidos por nodo tr finalmente se descartaron se pueden analizar también los paquetes destruidos por el nodo, mostrados en la tabla 7.7. nodo tr XXX Jamming a ACK XXX Formato Control XXX Módulo XX sink wireless lan mac 2816 MAC sin formato Total 352 1117 4285 Tabla 7.7: Número de paquetes destruidos por el nodo nodo tr con jamming en modo continuo 75 7. Evaluación de los ataques En la tabla 7.7 se recoge que capa la MAC del nodo destruye las 352 tramas MAC que encapsulaban los 352 paquetes de datos que fueron transmitidos. Además se puede comprobar que nodo tr nunca recibió las tramas ACK de nodo rc, ya que las tramas de control que destruye la capa MAC son las correspondientes a los intentos de reenvı́o de cada trama de datos en total 1408 (CTS enviados desde nodo rc) más las tramas CTS usadas por el jammer para provocar la colisión con los ACK, en total 2816 tramas. Los 1117 paquetes sin formato destruidos se corresponden a los paquetes que fueron descartados por desbordamiento de la cola de transmisión, éstos junto a los 352 transmitidos y a los 31 que caben en la cola forman el total de 1500 paquetes de datos generados por nodo tr (ver Tabla 7.6). De nuevo se demuestra que el jamming continuo, en este caso a tramas ACK, cumple su función. 7.3.2. Técnicas de jamming en modo normal A continuación, como se comentó en 7.2.2, se mostrarán los resultados de las simulaciones de las técnicas de jamming en modo normal para los perfiles de tráfico de saturación y tasa media respectivamente. 7.3.2.1. Perfil de tráfico de saturación Las simulaciones de esta sección se ha realizado con el nodo jammer con perfil de tráfico de saturación y nodo tr con tasa media (definición de perfiles de tráfico en Sección 7.1.3). Con esta configuración se espera obtener un aprovechamiento máximo del canal por parte del nodo jammer, ya que con el perfil de tráfico de saturación en todo momento tendrá datos para enviar. Además se estudiará cuál de los tipos de jamming es más eficiente a la vista de los resultados. En la Figura 7.7 se muestra el tráfico de datos enviado por el jammer para los distintos tipos de jamming; podemos ver que para los tres casos el nodo egoı́sta aprovecha el canal enviando sus propias transmisiones. También se puede observar que el jamming a CTS consigue enviar más datos que los demás tipos, concretamente 217 más que el jamming a datos y 390 más que el jamming a ACK (ver Tabla 7.8). Ésto se debe a que sabotea antes las transmisiones de nodo tr (durante el intercambio RTS/CTS), lo que le permite aprovechar más tiempo el canal. Por la misma razón el jamming a datos mejora un poco la tasa de envı́o del jamming a ACK enviando 173 paquetes más, ya que para el primer caso el jammer esperará a que se complete el intercambio RTS/CTS y a que el nodo tr envı́e la trama de datos para realizar el jamming; y en el segundo caso retrasará aún más su actuación esperando a que nodo rc envı́e el ACK de confirmación. 76 7.3. Resultados de la evaluación Figura 7.7: Tasa de envı́o de datos del nodo jammer con tráfico de saturación para los distintos tipos de jamming en modo normal jammer XXX XXX Formato Control XXX Módulo XX Jamming a CTS Jamming a datos Jamming a ACK source wireless lan mac source wireless lan mac source wireless lan mac 2028 MAC sin formato Total 2251 2251 3911 2251 3671 2251 3456 1883 2251 2005 1666 2251 1963 1493 Tabla 7.8: Número de paquetes creados por el nodo jammer con tráfico de saturación para los distintos tipos de jamming en modo normal El tráfico de saturación hace que la cola de transmisión del jammer permanezca a su capacidad máxima, prácticamente durante toda la simulación, para todos los tipos de jamming (ver Figura 7.8). La diferencia se presenta en el momento en que se llena la cola que en el caso del jamming a CTS tarda unas décimas de segundo más debido a 77 7. Evaluación de los ataques Figura 7.8: Tamaño de la cola de transmisión del nodo jammer con tráfico de saturación para los distintos tipos de jamming en modo normal que, cómo ya se ha comentado, con este tipo de jamming se consiguen transmitir más datos por lo que la cola tardará más en alcanzar su lı́mite. El mismo razonamiento se aplica para justificar que la cola de transmisión se llene más tarde para el caso del jamming a datos que para el jamming a ACK. Por todo lo anterior el jamming a CTS también necesita menos tiempo para acceder al medio para transmitir sus datos cómo muestra la Figura 7.9. Aún ası́ los datos en todos los tipos de jamming sufren un tiempo de espera para ser transmitidos. Ésto se debe tanto al tiempo que deben permanecer en la cola de transmisión antes de ser enviados, como al intervalo de backoff que debe esperar el nodo antes de acceder al medio para realizar el envı́o (ver cálculo del retardo de acceso al medio en la Figura 7.3). Los primeros máximos de la gráfica se corresponden aproximadamente con el momento en que se llenan las colas de transmisión, a partir de ahı́ las variaciones que se muestran son debidas al carácter aleatorio del intervalo de backoff (ver Expresión en 1.1). 78 7.3. Resultados de la evaluación Figura 7.9: Retardo de acceso al medio del nodo jammer con tráfico de saturación para los distintos tipos de jamming en modo normal Los resultados obtenidos para el nodo tr son los mismos que para el caso de jamming en modo continuo, puesto que no se permite en ningún caso que el nodo transmita correctamente sus datos. Después de todo lo comentado en esta sección se puede concluir que el nodo egoı́sta consigue aprovechar el canal para transmitir sus datos mientras realiza el jamming llevando a cabo el comportamiento egoı́sta definido en la Sección 1.2.4. Además con la experimentación anterior también se llega a la conclusión de que el jamming a CTS es el tipo de jamming más eficiente de los implementados, dado que es el que consigue aprovechar más el canal para sus propios envı́os. 7.3.2.2. Perfil de tráfico de tasa media A continuación se pasará a comprobar cuánto mejora su rendimiento un nodo jammer realizando el jamming a tramas CTS (se ha elegido este tipo de jamming por ser el más eficiente) frente un nodo normal tr que se comporta según el estándar (roles de los nodos en Sección 7.1.1). Ası́ mismo se incluirá en el estudio el nodo tr 79 7. Evaluación de los ataques para ver cuánto empeora su rendimiento también respecto a normal tr. Todos los nodos transmisores implementan un tráfico de tasa media (perfiles de tráfico en Sección 7.1.3). En la Figura 7.10 puede verse la tasa de envı́o de datos para los tres nodos estudiados. Se comprueba que los resultados de jammer mejoran a los de normal tr y éstos a su vez a los de nodo tr. En la Tabla 7.9 se pueden estudiar con más detalle los paquetes creados por los módulos de cada nodo. El nodo jammer consigue enviar los 1500 paquetes que genera, mientras que nodo tr sólo consigue enviar 119. De las 1899 tramas de control que crea la capa MAC del jammer, 1500 son tramas RTS que ha necesitado para realizar el intercambio RTS/CTS antes de sus propias transmisiones, y 399 son tramas CTS que ha enviado para realizar el jamming. Ésto se corresponde con el número de tramas de control creadas por la capa MAC del nodo tr, que de las 518 totales, 399 son las tramas RTS del intercambio RTS/CTS que ha sido saboteado por el jammer y las 119 restantes son tramas RTS que ha necesitado para enviar los paquetes que ha logrado transmitir. Figura 7.10: Tasa de envı́o de datos de los nodos jammer, nodo tr y normal tr con jamming a CTS en modo normal y perfil de tráfico a tasa media 80 7.3. Resultados de la evaluación Jamming a CTS XXX XXX Formato Control XXX Módulo XX jammer normal tr nodo tr source wireless lan mac source wireless lan mac source wireless lan mac 1899 1093 518 MAC sin formato Total 1500 1500 1500 1500 1500 1500 1500 1019 119 Tabla 7.9: Número de paquetes creados por los nodos jammer, nodo tr y normal tr con tráfico de tasa media y jamming a CTS en modo normal Con respecto al nodo normal tr el jammer consigue enviar 481 paquetes de datos más, mientras que nodo tr empeora el resultado enviando 900 paquetes menos. Figura 7.11: Tamaño de la cola de transmisión de nodos jammer, nodo tr y normal tr con jamming a CTS en modo normal y perfil de tráfico de tasa media 81 7. Evaluación de los ataques Respecto a las colas de transmisión, mientras que las de normal tr y nodo tr permanecen saturadas durante toda la simulación (ver Figura 7.11), en la del nodo jammer los paquetes apenas sufren espera para ser transmitidos, por lo que si la tasa de envı́o aumentara el nodo egoı́sta podrı́a aprovechar aún más el canal como se ha comprobado con el perfil de tráfico de saturación en la Sección 7.3.2.1. Como se muestra en la Figura 7.12 el nodo jammer no experimenta retardo de acceso al medio en perjuicio de nodo tr que supera en más de un segundo el tiempo de retardo de normal tr. Como se ha comprobado con los resultados recopilados, con un tráfico de tasa media el nodo jammer consigue resultados mejores que un nodo estándar, pero a su vez aprovecha menos el medio que con tráfico de saturación. Figura 7.12: Retardo de acceso al medio de los nodos jammer, nodo tr y normal tr con jamming a CTS en modo normal y perfil de tráfico a tasa media 82 7.3. Resultados de la evaluación 7.3.3. Técnicas de jamming en modo aleatorio Para terminar se experimentará con el comportamiento de jamming a CTS en modo aleatorio con perfil de saturación para los nodos transmisores y tres valores del parámetro Random CTS Jamming que son: probabilidad de que se realice 1 (equivalente al jamming en modo normal, es decir siempre se realiza), probabilidad de 0,8 y probabilidad de 0,2. Los resultados de la estadı́stica de tasa de envı́o de datos es la mostrada en la Figura 7.13. Se puede ver que con probabilidad baja de jamming la tasa de envı́o se reduce considerablemente. Figura 7.13: Tasa de envı́o de datos del nodo jammer para distintos valores de jamming a CTS en modo aleatorio El retardo de acceso al medio también se va incrementado a medida que baja la probabilidad de jamming dado que los paquetes tendrán que esperar más tiempo a ser transmitidos (ver Figura 7.14). Los primeros máximos se corresponden, aproximadamente, con el momento en que se llenan las colas de transmisión, a partir de ahı́ los valores oscilarán debido a la espera del tiempo de backoff. Para probabilidad 1, después de que se llene la cola, el rango de oscilación de los valores es más pequeño que en los demás casos debido a que el jammer calculará su backoff siempre con la venta83 7. Evaluación de los ataques Figura 7.14: Retardo de acceso al medio del nodo jammer para distintos valores de jamming a CTS en modo aleatorio na de contención a valor mı́nimo, lo que normalmente le dará valores de backoff más pequeños y similares que en el resto de casos. Por último se verá cómo se refleja el comportamiento del jamming aleatorio en los datos enviados por nodo tr (ver Tabla 7.10). Con probabilidad 1 no consigue enviar ningún paquete de datos y apenas puede realizar intentos de intercambio RTS/CTS, es decir, el nodo jammer es prácticamente dueño del canal. Para probabilidad 0,8 se consiguen enviar 47 paquetes y además se realizan 32 intentos más de intercambio que en el caso anterior, por lo que el jammer atacará en total a 184 tramas CTS. Con la probabilidad de 0,2 se nota mejora en la transmisión aunque sigue siendo baja, de las 2251 sólo consigue enviar 725 y sufre 247 ataques a su intercambio RTS/CTS. 84 7.4. Resumen de resultados nodo tr XXX XXX Formato Control XXX Módulo XX Jamming (1) Jamming (0,8) Jamming (0,2) source wireless lan mac source wireless lan mac source wireless lan mac MAC sin formato Total 2251 2251 152 2251 278 2251 1697 152 2251 231 47 2251 972 725 Tabla 7.10: Número de paquetes creados por el nodo nodo tr para distintos valores de jamming a CTS en modo aleatorio 7.4. Resumen de resultados A lo largo de este capı́tulo se han evaluado las técnicas de jamming implementadas para este proyecto. A continuación se realizará un resumen de los resultados derivados de esta experimentación. Se ha demostrado que realizando jamming en modo continuo y con el nodo egoı́sta sin datos que enviar (perfil de no saturación) se perjudica a nodo tr no permitiéndole enviar correctamente sus datos. Además se ha comprobado que con jamming en modo normal en el caso de que el nodo jammer tenga siempre datos que transmitir (tráfico de saturación) éste se adueña del canal impidiendo, al igual que en el caso anterior, que nodo tr realice correctamente ninguna de sus transmisiones. Con esta experimentación se ha concluido también que el tipo de jamming más eficiente es el jamming a CTS. Ésto se debe a que el nodo egoı́sta sabotea las transmisiones de nodo tr durante el intercambio RTS/CTS, antes que los demás tipos de jamming, lo que le permite aprovechar más tiempo el canal. Igualmente se ha demostrado que se obtiene una mejora considerable en la tasa de envı́o de datos realizando jamming frente a los resultados que se obtienen respetando el estándar 802.11. La mejora será mayor cuanto mayor sea la tasa de envı́o del nodo egoı́sta. Finalmente se ha experimentado con el funcionamiento de la técnica de jamming a CTS introduciéndole un factor de aleatoriedad, llegando a la conclusión de que a más probabilidad de realizar jamming mejores resultados se obtienen en el nodo jammer, pero con menor probabilidad de jamming el comportamiento egoı́sta será menos evidente y por lo tanto más difı́cil de detectar. Por tanto con los resultados obtenidos se demuestra el funcionamiento de las técnicas de jamming descritas en este proyecto (ver Sección 1.2.4.1) y se valida la implementación realizada de las mismas en el simulador OPNET Modeler. 85 7. Evaluación de los ataques 86 CAPÍTULO 8 CONCLUSIONES En este capı́tulo se describen los logros y conclusiones principales que se derivan de la realización del presente proyecto fin de carrera. Con el desarrollo de este proyecto se han conseguido los siguientes resultados: Comprender la función de coordinación distribuida implementada en el protocolo CSMA/CA, afrontando el estudio del estándar 802.11 (ver [2]) Estudiar el comportamiento egoı́sta en redes inalámbricas y en concreto los ataques mediante técnicas de jamming sobre la capa MAC planteados en [3]. Entender la arquitectura y funcionamiento del software OPNET Modeler ası́ como el código del módulo wlan mac de la biblioteca del simulador. Diseñar la implementación de los ataques mediante técnicas de jamming estudiados y de la utilidad para registrar mensajes de log. Realizar el código necesario para implementar las utilidades anteriores e incluirlas en el módulo wlan mac de OPNET Modeler. Exportar las utilidades desarrolladas a la interfaz del modelo de nodo wlan station adv de OPNET Modeler, para que puedan ser configuradas fácilmente por el usuario junto con el resto de atributos del nodo. Diseñar y realizar un proceso de evaluación de los ataques mediante técnicas de jamming para probar su correcta implementación y obtener conclusiones de los mismos. Documentar todo el trabajo realizado en la memoria de desarrollo del proyecto fin de carrera. 87 8. Conclusiones A partir de los resultados obtenidos durante la realización de este proyecto se extraen las siguientes conclusiones, previamente expuestas a lo largo del desarrollo de anteriores capı́tulos: El software OPNET Modeler ha resultado ser una herramienta muy flexible, permitiendo la elección y modificación de los módulos necesarios para llevar a cabo la implementación prevista. El código implementado responde a los objetivos que debe cumplir el desarrollo del proyecto. Con la evaluación de los ataques mediante técnicas de jamming implementados además se ha demostrado lo siguiente: - El jamming en modo continuo implementa un ataque de denegación de servicio sobre los nodos vı́ctimas, impidiendo que éstos efectúen sus transmisiones. - El jamming en modo normal permite que el nodo egoı́sta aproveche el canal a expensas de los demás usuarios. Dicho aprovechamiento es proporcional a la tasa de envı́o de datos del nodo egoı́sta, a mayor tasa de envı́o mayor aprovechamiento y a su vez mayor perjuicio para el resto de nodos. - El jamming en modo aleatorio con umbral de probabilidad bajo da resultados de aprovechamiento del canal por el jammer más bajos, pero al mismo tiempo serı́a más difı́cil de detectar al no realizar el proceso de jamming sobre todas las tramas posibles. 88 BIBLIOGRAFÍA [1] IEEE Computer Society. LAN/MAN Standards Committee. IEEE Std 802-2001 Standard for Local and Metropolitan Area Networks: Overview and Architecture. The Institute of Electrical and Electronics Engineers, Inc., New York, NY, USA, 2001. Disponible en la Web: http://standards.ieee.org/getieee802/ portfolio.html. [2] IEEE Computer Society. LAN/MAN Standards Committee. Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications. The Institute of Electrical and Electronics Engineers, Inc., 2007. Disponible en la Web: http://standards.ieee.org/getieee802/portfolio.html. [3] Levente Buttyán y Jean-Pierre Hubaux. Security and cooperation in wireless networks. Thwarting malicious and selfish behavior in the age of ubiquitous computing. Cambridge University Press, Cambridge, United Kingdom, 1 edition, 2008. ISBN: 978-0-521-87371-0. [4] IEEE Computer Society. LAN/MAN Standards Committee. Carrier sense multiple access with collision detection (CSMA/CD) access method and physical layer specifications. The Institute of Electrical and Electronics Engineers, Inc., 2002. Disponible en la Web: http://standards.ieee.org/getieee802/portfolio.html. [5] Andrew S. Tanenbaum. Redes de Computadoras. Pearson Educación, Naucalpán de Juarez, México, 4, edition, 2003. ISBN: 9702601622. [6] Tom Karygiannis y Les Owens. Wireless network security. NIST Special Publication, 2002. [7] Pradeep Kyasanur and Nitin H. Vaidya. Detection and handling of mac layer misbehavior in wireless networks. In In Proceedings of the International Conference on Dependable Systems and Networks, pages 173–182, 2002. Disponible en la Web: http://users.crhc.illinois.edu/nhv/papers/misbehave.pdf. 89 BIBLIOGRAFÍA [8] Mithun Acharya, Tanu Sharma, David Thuente, and David Sizemore. Intelligent jamming in 802.11b wireless networks. In Proceedings of OPNETWORK, August 2004. Disponible en la Web: http://www4.ncsu.edu/˜mpachary/ docs/acharya_OPNETWORK04.pdf. [9] Wenyuan Xu, Yanyong Zhang, and Timothy Wood. The feasibility of launching and detecting jamming attacks in wireless networks. In In ACM MOBIHOC, pages 46–57, 2005. Disponible en la Web: http://www.ece.rutgers.edu/ ˜yyzhang/research/papers/mobihoc05-xu.pdf. [10] Maxim Raya, Jean-Pierre Hubaux, and Imad Aad. Domino: A system to detect greedy behavior in ieee 802.11 hotspots. In MobiSys, 2004. Disponible en la Web: lcawww.epfl.ch/Domino/Edomino_files/domino.pdf. [11] Elias Weingärtner, Hendrik vom Lehn, and Klaus Wehrle. A performance comparison of recent network simulators. In ICC 2009: IEEE International Conference on Communications, 2009. Disponible en la Web: http://ds.informatik. rwth-aachen.de/publications/2009/pdfs/icc-submission.pdf. [12] Inc OPNET Technologies. OPNET Modeler Documentation Set. OPNET Technologies, Inc., Bethesda, MDU, USA, 2008. [13] Matthew Gast. 802.11 Wireless Networks: The Definitive Guide. O’Reilly, Sebastopol, CA, USA, 2002. ISBN: 0-596-00183-5. [14] Neil Reid y Ron Seide. 802.11 (Wi-Fi) Manual de redes inalámbricas. Mc Graw Hill, México D.F, México, 2003. ISBN: 0-07-222623-4. 90 APÉNDICE A GUÍA BREVE DE OPNET MODELER En este apéndice se presenta una guı́a reducida de la herramienta software OPNET Modeler 14.5. El enfoque se se va a realizar pretende únicamente describir algunos aspectos generales sobre el programa y su arquitectura que ayuden a entender su funcionamiento básico. De esta forma se comprenderán mejor las configuraciones realizadas para el desarrollo de este proyecto. A.1. Caracterı́sticas generales OPNET Modeler es un robusto simulador software de redes que sirve para modelar fácil e intuitivamente configuraciones de red. Además permite el análisis eficiente del rendimiento de las configuraciones diseñadas. Algunas de las caracterı́sticas más destacadas de OPNET Modeler son las siguientes: - Posee una avanzada interfaz de usuario que soporta multi-ventana, ofrece iconos y menús desplegables y una paleta configurable con todos los modelos de su biblioteca de componentes (estaciones, servidores, dispositivos, perfiles de tráfico, etc). - La biblioteca de componentes de OPNET Modeler dispone de más de 400 protocolos y dispositivos comerciales de empresas lı́deres como son Cisco Systems, HP, IBM, Juniper, etc. Estos modelos están listos para ser usados en la simulaciones de OPNET por lo que se reduce el tiempo de desarrollo necesario. - Dispone de un editor gráfico orientado a objetos que permite definir topologı́as y arquitecturas totalmente paralelas a los sistemas reales, permitiendo un mapeado intuitivo entre el modelo de la simulación y el sistema. 91 A. Guı́a breve de OPNET Modeler - Este simulador también permite representar los datos obtenidos en las simulaciones utilizando gráficas que facilitan la labor de estudio y clasificación de los resultados. A.2. Arquitectura Respecto a la arquitectura, como se muestra en la Figura A.1, la herramienta tiene básicamente tres niveles o modelos: proyecto, nodo y proceso. Para poder trabajar sobre ellos OPNET Modeler dispone de un editor para cada nivel. A continuación se hará un breve resumen de las caracterı́sticas y funciones de cada modelo. Figura A.1: Arquitectura de OPNET Modeler Modelo de proyecto El modelo de proyecto es el área principal de diseño de OPNET Modeler. A través del editor de proyectos se puede construir y editar la topologı́a de la comunicación del modelo de red. Además para este nivel también se proporcionan capacidades de análisis y simulación. 92 A. Guı́a breve de OPNET Modeler Dentro del mismo proyecto se podrán tener varios escenarios con distinta configuraciones, por ejemplo para comparar los resultados obtenidos en cada uno de ellos. El modelo de proyecto será por tanto el nivel donde se especificará el sistema que será simulado. Modelo de nodo El modelo de nodo define el comportamiento de cada uno de los objetos de la red construida mediante modelo anterior. Este comportamiento se define utilizando diferentes módulos cada uno de los cuales modela un aspecto interno como puede ser la creación de datos o su almacenamiento. Modelo de proceso El modelo de proceso permite definir el comportamiento subyacente de cada uno de los módulos definidos en el nivel anterior. Los modelos de proceso son autómatas finitos (AF), donde los estados son representados como iconos y las transiciones entre estados como lı́neas. Las operaciones que se realizan en cada estado o por una transición se describen en bloques de código C o C++ embebido. En los AF del modelo de proceso se diferencian dos tipos de estados, los no forzados (Unforced) y los forzados (Forced) (ver Figura A.2). Un estado no forzado (en rojo) ejecuta un bloque de instrucciones de entrada (enter executive) y se detiene, permitiendo que la simulación ponga su atención en otras entidades y acontecimientos del modelo. Un proceso entra en un estado no forzado para esperar interrupciones de la llegada de paquetes o la espiración de un contador de tiempo, cuanto ésto se produce se ejecuta un bloque de instrucciones de salida (exit executive) y se transita hacia el estado siguiente. Figura A.2: Tipos de estados del modelo de proceso 93 A. Guı́a breve de OPNET Modeler Los estados forzados (en verde) son aquellos que se atraviesan necesariamente sin ningún transcurso del tiempo de simulación, es decir, se ejecutan las instrucciones correspondientes del bloque de entrada (enter executive) y se sale de ellos instantáneamente. Otro elemento del modelo de proceso son las transiciones, que se utilizan para especificar los posibles cambios entre estados en respuesta a acontecimientos externos y conforme a condiciones especı́ficas. Las transiciones pueden ser de dos tipos: condicionales o incondicionales. Las primeras ejecutan un test lógico que debe cumplirse antes de que la transición ocurra y en el caso de las segundas no se ejecuta dicho test lógico, si no que se pasa directamente al estado siguiente. Como ya se ha mencionado, cada uno de los estados del AF se compone a su vez de dos bloques de código que se denominan enter executive y exit executive. El bloque enter executive contiene el código que se ejecuta cuando el módulo entra en un estado, mientras que el bloque exit executive abarca el conjunto de instrucciones que se ejecutan cuando el módulo abandona el estado. El flujo de ejecución de un estado no forzado es el mostrado en la Figura A.3, para los estados forzados solo se ejecuta el bloque enter executive y a continuación se pasarı́a al estado siguiente. Figura A.3: Flujo de ejecución de un estado no forzado 94 A. Guı́a breve de OPNET Modeler A.3. Presentación de resultados Respecto a las herramientas de representación de resultados OPNET Modeler ofrece cientos de estadı́sticas incorporadas para un análisis rápido de las simulaciones. Los usuarios pueden crear estadı́sticas nuevas o usar las ya definidas. La representación de las salidas de la simulación es fácilmente manipulable y además dispone de numerosos filtros matemáticos que se pueden aplicar sobre los resultados. Los datos también se pueden exportar a hojas de cálculo para que puedan ser traducidos a otros formatos. En el caso de las gráficas mostradas en este proyecto los datos obtenidos en las simulaciones de OPNET Modeler se han exportado y finalmente se representado con el programa Wgnuplot. Con este anexo se han introducido algunas de las ideas necesarias para comprender mejor el proceso de desarrollo con la herramienta OPNET Modeler. Para más información se puede consultar la documentación oficial [12]. 95