scieee AI-readable full text Open interactive document viewer

Simulador de Red Cognitiva - Estructura funcional

García-Troyano, Enrique

Full text

Simulador de Red Cognitiva Enrique García Troyano 24 de mayo de 2016 1. Introducción Este documento es una guía sobre el simulador realizado por la Universidad de Málaga bajo el proyecto Eciencia energética en redes inalámbricas cognitivas y de bajo consumo para un desarrollo sostenible (NEREIDAS). En el simulador desarrollado se denen una serie de parámetros de la red, como el número de usuarios primarios y cognitivos, las dimensiones de la red, las características de potencia de los nodos, y las características de propagación. En función de esos datos de entrada se simula el comportamiento de las transmisiones que lleva a cabo la red cognitiva frente a una determinada tasa de actividad en los nodos de la red primaria. El simulador devuelve como salida la localización de los nodos, las conexiones existentes entre ellos, y para cada sesión de comunicaciones la ruta que ésta sigue, y la evolución temporal de los datos a través de la ruta. Esto se hace mostrando el estado de los enlaces de la ruta y de los buers de los nodos durante el tiempo que dura la sesión. Además el simulador calcula algunos resultados de la transmisión como el throughput, la tasa de ocupación de los enlaces o el retardo para cada sesión. La estructura del documento es la siguiente: en primer lugar se lleva a cabo una breve introducción sobre la radio cognitiva, posteriormente se introduce el simulador, explicando los algoritmos de encaminamiento implementados y la estructura funcional y de datos del mismo. Una vez explicado el funcionamiento del simulador, se presenta una simulación ejemplo, mostrando el resultado obtenido. Posteriormente se presentan una serie de resultados obtenidos sobre el comportamiento de la red frente a distintos parámetros de entrada. Por último se presentan unas conclusiones y una serie de posibles ampliaciones a llevar a cabo en el simulador. 2. Radio Cognitiva Debido a la gran importancia que han tomado las redes inalámbricas en la ultima década, en la que se han convertido en la principal tecnología utilizada en redes de acceso a Internet, las bandas de frecuencia utilizadas en este tipo de comunicaciones están alcanzando un nivel de saturación que obliga a buscar nuevas soluciones para la asignación de los recursos radio. En la actualidad, estos recursos se asignan siguiendo un esquema estático en el cual distintos grupos de usuarios tienen licencia para operar en determinadas bandas de frecuencias, de forma que cuando todas las bandas asignadas a un grupo 1 de usuarios están ocupadas, el siguiente usuario de ese grupo que quiera acceder al medio no podrá hacerlo, aunque existieran otros grupos de usuarios que no estuvieran utilizando todas las bandas que tienen asignadas. Esta situación genera, por un lado, usuarios que no pueden utilizar el medio, y por otro, bandas de frecuencias no utilizadas, lo que conforma un esquema de asignación de recursos ineciente, que ha llevado a la situación actual en la que existe simultáneamente una saturación en el número de bandas disponibles, y un aprovechamiento de las bandas asignadas muy bajo. La radio cognitiva se basa en un nuevo paradigma sobre la asignación de los recursos radio, según el cuál cuando un grupo de usuarios se queda sin frecuencias porque todas las que tenía asignadas se están utilizando, el siguiente usuario que quiera utilizar el medio sea capaz de percibir si existen bandas asignadas a otros usuarios que no están siendo utilizadas. En ese caso, el usuario que quiere acceder al medio, podría utilizar dicha banda, siempre y cuando algún usuario con licencia original no la necesite. En caso de que un usuario con licencia quiera utilizarla, el nodo que la estaba ocupando debe abandonarla inmediatamente. A los usuarios con licencia se les denomina usuarios primarios y a los que aprovechan las bandas no utilizadas por los primarios se les denomina usuarios cognitivos o secundarios . Por lo tanto, un nodo cognitivo debe ser capaz de sensar su entorno radioeléctrico y adaptar sus transmisiones al mismo. De esta forma es posible aumentar la eciencia espectral de las redes inalámbricas, ya que cada nodo puede conocer las frecuencias que se encuentran disponibles en un determinado instante y adaptar su funcionamiento a las condiciones existentes. En otras palabras, la radio cognitiva permite la implementación de estrategias de asignación de recursos radio de forma dinámica, sin empeorar la calidad de servicio que se presta a aquellos usuarios que tienen una cantidad de recursos previamente asignada, lo que redunda en un aprovechamiento mucho mayor de las bandas de frecuencia y conforma una posible solución al problema de saturación de las frecuencias utilizadas en redes inalámbricas. A pesar de que los sistemas de radio cognitiva se han investigado desde hace varios años, aún no se han implementado estos sistemas de manera comercial debido a que requiere superar múltiples retos, entre los que se pueden mencionar: el desarrollo de técnicas para monitorizar el estado del medio y la actividad de los nodos primarios de forma más eciente, técnicas de modulación para minimizar las interferencias que los nodos cognitivos causan sobre los primarios, algoritmos que tomen decisiones en base a la información que les llega de los distintos nodos de la red, lo que puede llevar redes más o menos distribuidas y a distintos niveles de cooperación entre nodos, las técnicas de control de acceso al medio y la asignación de frecuencias entre usuarios cognitivos o la elaboración de algoritmos de encaminamiento que tengan en cuenta las frecuencias disponibles en cada nodo a nivel local. Este tipo de redes también suponen una oportunidad para aumentar la eciencia energética de las comunicaciones inalámbricas, ya que al poseer los nodos de estas capacidades cognitivas para medir su entorno radioeléctrico, se hace posible optimizar también el consumo energético total de la red, a través de redes multi-salto donde las distancias de los enlaces sean mucho más pequeñas y por tanto las potencias de transmisión necesarias sean menores. Sin embargo, para poder implementar capacidades cognitivas en los nodos, se requiere un elevado nivel de procesamiento en cada nodo de la red, lo que puede considerarse un factor limitante debido al elevado consumo energético que esto puede suponer, sobre 2 todo si se tiene en cuenta que estos nodos pueden ser dispositivos móviles que operen con baterías. Esta limitación ha motivado un gran número de estudios sobre el uso de nodos relays (de relevo) que ayuden a transmitir los mensajes de la red, y que podrían suponer una infraestructura ja, que limitaría el consumo energético de los usuarios nales. 3. El Simulador El modelo de propagación considerado es el de un canal con pérdidas de propagación por espacio libre con shadowing log-normal. Es decir que si la potencia transmitida es un valor Pt la potencia recibida será Pr=Pt(d−α)10−σ2 x 10 donde α representa las pérdidas de propagación por espacio libre y σ2 x el factor de shadowing que modela las irregularidades del entorno físico. En el simulador se asume que los nodos cognitivos detectan de forma perfecta cuándo el primario está inactivo y cuándo se encuentra transmitiendo datos. El simulador consiste en un bucle en el que cada iteración representa a un instante de tiempo, es decir que el tiempo está dividido en time slots , a los que se llama quantums . En cada quantum (en cada iteración del bucle de simulación) los nodos cognitivos deben comprobar el estado de las bandas de los primarios y de los otros cognitivos para saber qué bandas pueden utilizar y qué bandas están prohibidas. En caso de que dos nodos cognitivos quieran utilizar una misma frecuencia en un mismo time slot, la contienda se resuelve de forma aleatoria, y el nodo que obtiene el medio sólo lo abandona cuando termina de transmitir o cuándo el primario lo expulsa. Una vez comprobadas las bandas disponibles, se realizan las transmisiones correspondientes a cada time slot, para después comprobar si algún nodo ha terminado de transmitir sus datos y si algún primario se ha activado. De manera previa al bucle de simulación temporal, se generan las sesiones de datos a enviar entre los nodos cognitivos. Estas sesiones indican el nodo origen y el nodo destino y la cantidad de datos que se quiere transmitir de uno a otro. Una vez generadas las sesiones se calcula el encaminamiento de éstas entre los nodos cognitivos y con los resultados del algoritmo de encaminamiento se simulan las transmisiones en el bucle temporal. 3.1. Algoritmos de Encaminamiento Utilizados: En el simulador se han implementado dos algoritmos de encaminamiento diferentes. El primero de ellos cuantica cada enlace de la red con un peso y luego elige el camino con peso mínimo entre Orígen y Destino. El cálculo de los pesos de los enlaces se hace teniendo en cuenta la capacidad del enlace y la disponibilidad de los enlaces de estar disponible, que se calcula en función de su dependencia con los nodos primarios y de la actividad que presentan los diferentes primarios. Este algoritmo es similar al implementado en [3], pero mejorado, ya que el cálculo de la probabilidad del enlace no se hace de forma aleatoria como en el estudio citado, sino que se hace teniendo en cuenta un área de inuencia para cada primario y un factor de actividad que indica la probabilidad de que el primario esté activo y que el nodo cognitivo es capaz de estimar mediante la observación del entorno radioeléctrico. De esta manera el nodo cognitivo sabe cuáles son los usuarios primarios 3 más activos. Además el número de frecuencias disponibles en la red cognitiva es igual al número de nodos existentes en la red primaria. El segundo algoritmo utilizado es el presentado en [1]. Dicho algoritmo elige el camino con menor número de saltos, teniendo en cuenta la actividad de los nodos primarios. El algoritmo evita aquellos caminos que tengan una alta dependencia a primarios con un factor de actividad elevado. Además también tiene en cuenta un coste de cambio de frecuencia, por lo que considera antes aquellos caminos en los que no será necesario realizar transmisiones en distintas frecuencias sino que podrá utilizarse una misma banda en todo el camino. 3.1.1. Camino de Retardo Mínimo modicado. Este algoritmo selecciona el camino con retardo mínimo entre el origen y destino, teniendo en cuenta la probabilidad de estar disponible de los enlaces que atraviesa la ruta, lo que depende de la actividad de los usuarios primarios. Para hacer esto le asigna un peso a cada enlace y aplica el algoritmo de Dijkstra, que calcula el camino de menor peso entre un nodo A y otro nodo B dentro de un grafo. El resultado obtenido dependerá del criterio según el cuál se asignan los pesos a los enlaces. En este sentido se tiene en cuenta, por un lado, la calidad del enlace a través del retardo y por otro, la probabilidad de estar disponible a través de la dependencia del enlace a los usuarios primarios. Este algoritmo se ha elaborado tomando elementos de [3] y de [1]. De [3] se toma la idea de asignarle un peso a cada enlace según el retardo y calcular el camino con menor retardo a través del algoritmo de Dijkstra. De [1] se ha tomado la idea de denir una zona de inuencia y un factor de actividad para cada nodo primario, de manera que cada nodo cognitivo elabore un vector de inuencias que indica cómo le afecta cada nodo primario. De esta forma se tiene en en cuenta la actividad de los nodos primarios en la disponibilidad de los enlaces y se evitan aquellos caminos que estén muy congestionados. El retardo de un enlace es el tiempo que éste tarda en transmitir un bit, es decir, el inverso de la capacidad. La Capacidad se calcula para un modelo de propagación con pérdidas por espacio libre y Shadowing. Por lo tanto, la capacidad de un enlace será C=BW ·log2(1 + γ) donde BW representa el ancho de banda del canal y γ representa la Relación Señal a Ruido (SNR) en el receptor, es decir γ=PotTx ·d(−α)·10(Nshad/10) BW ·No La probabilidad de que una banda de frecuencias de un enlace esté ocupada se calcula como el máximo entre las inuencias de los nodos que conforman el enlace a dicha frecuencia. La probabilidad de que el enlace esté ocupado se calcula como una media de las probabilidades de que las distintas frecuencias estén ocupadas. Por lo tanto la probabilidad de que el enlace esté disponible será: Pi→j= 1 −1 Np fp=Np X fp=1 max{Ifp i, Ifp j} 4 Donde Ifp i y Ifp j se reeren a la inuencia del primario p sobre los nodos cognitivos i y j respectivamente. Esta inuencia es nula si los nodos están fuera de la zona de inuencia del primario y es igual al factor de actividad del primario en caso contrario. Si ninguno de los nodos del enlace está afectado por el primario, entonces el enlace tiene probabilidad de estar disponible uno (Esta probabilidad se reere a los primarios, podría ocurrir que el enlace estuviera prohibido porque lo está utilizando otro usuario cognitivo). El algoritmo de retardo mínimo modicado tiene en cuenta la calidad de los enlaces, pero no toma su decisión en función de este factor únicamente sino que también tiene en cuenta la disponibilidad que tendrá el enlace debido a la actividad de los nodos cognitivos. Esto hace que sea muy importante que el nodo cognitivo tenga una buena estimación de la actividad del primario. Para implementar una buena estimación de la actividad del primario podrían elaborarse métodos más complejos que no dependan únicamente de la actividad observada en los últimos N time slots, sino que tenga en cuenta otros factores como los tiempos de duración medios de las transmisiones y de los silencios, de forma que el cognitivo pueda adaptar su estimación lo más rápido posible. Al implementar el algoritmo no se ha tenido en cuenta la comunicación entre los nodos cognitivos sobre el estado de la red, y se supone que cada nodo tiene conocimiento total sobre el estado de la misma. En la práctica, esta solución requiere de un ente centralizado que toma las decisiones de encaminamiento e informa a los nodos mediante un canal de control común, el nodo centralizado conoce el estado de la red debido a las mediciones que los nodos han hecho y que le han transmitido a través del canal común. Este canal común será un canal de baja frecuencia (no requiere de tasas de transmisión elevadas y presenta un alcance mayor). Cada nodo puede actualizar su información de forma periódica o mediante un sistema de alarmas, de forma que cuando note algún cambio signicativo lo notique al ente que gestiona la red. 3.1.2. Algoritmo GYMKHANA Este algoritmo se ha implementado de forma idéntica a como se dene en [1]. Al contrario que el anterior, es un algoritmo distribuido, esto presenta la ventaja de que para implementarlo no es necesario un canal de control común, ni un nodo centralizado que gestione la asignación de frecuencias, sino que la información sobre el encaminamiento y el estado de la red se va propagando de unos nodos a otros, mediante el envío de paquetes Route Request y Route Reply , lo que aumenta la necesidad de procesamiento de los nodos y aumenta la cantidad de tráco generado en la red, sobre todo para redes con un alto nivel de conectividad en las que el cálculo del camino óptimo tiene un mayor coste debido a la mayor cantidad de caminos posibles. En este algoritmo de encaminamiento se tienen en cuenta dos factores: Por un lado el número de saltos que debe atravesar el camino, y por otro, la dependencia de los nodos del camino a la actividad de los primarios, que inuye de dos formas diferentes: en el número de cambios de frecuencia que deben producirse en los distintos enlaces y en la probabilidad de que los enlaces estén disponibles. El algoritmo asigna un peso de coste de cambio de frecuencia. Teniendo en cuenta estos factores, se calcula una función de utilidad para cada camino y se elige aquél cuya función de utilidad es máxima. Esta función de utilidad se calcula mediante la elaboración de un grafo Virtual y la evaluación de la matriz Laplaciana L de dicho grafo virtual. 5 El algoritmo de encaminamiento consta de dos fases: en la primera se hallan todos los caminos posibles, mediante la retransmisión desde el origen de una Route Request (RREQ). Cada RREQ incluye información sobre los nodos por los que va pasando y los vectores de inuencia de cada uno de esos nodos. Cuando un nodos recibe la RREQ comprueba que su identicador no esté en la lista, si su identicador aparece signica que se ha formado un bucle y la descarta. Si no la había recibido, agrega su información a la RREQ y la retransmite a todos sus vecinos. De esta manera el nodo destino recibirá una RREQ por cada camino posible entre Origen y Destino, y en cada una de ellas tendrá información sobre la inuencia de los primarios sobre los nodos cognitivos de la ruta. Cuando el nodo destino ha recibido todas las RREQ, empieza la segunda fase del algoritmo: el nodo Destino debe seleccionar la Ruta Óptima. Para hacerlo, crea un grafo virtual por cada RREQ recibida. Dicho grafo virtual consiste en un grafo tipo rejilla donde cada la representa los distintos nodos que forman la ruta a una misma frecuencia, y cada columna las distintas frecuencias en un mismo nodo de la ruta. Por lo tanto un enlace vertical en el grafo virtual representa un cambio de frecuencia y un enlace horizontal representa la transmisión a una frecuencia determinada de un nodo de la ruta al siguiente. El peso de los enlaces horizontales depende de la inuencia de los primarios sobre los nodos que conforman el enlace a la frecuencia correspondiente, mientras que los enlaces verticales tienen un peso α constante que representa el coste de cambiar de frecuencia. El grafo virtual sera un grafo de ( Np ×(Hk + 1) ) elementos, donde Np es el número de frecuencias y Hk es el número de enlaces de la ruta. Una vez formado el grafo virtual, se evalúa su Matriz Laplaciana L , y se genera la función de Utilidad. La matriz Laplaciana de una Matriz ( N×M ) es una matriz ( N· M×N·M ). La laplaciana se dene como la Matriz de Grados D menos la Matriz de Adyacencias A ( L=D−A ), donde D es una matriz diagonal en la que cada elemento de la diagonal indica la suma de los pesos de los enlaces adyacentes al nodo correspondiente, y A es una Matriz binaria en la que un elemento (i,j) de la matriz es igual a cero si los nodos i y j no están conectados y es igual al peso del enlace en caso contrario. La matriz Laplaciana de un grafo bidireccional es simétrica y la suma de todas sus las y de todas sus columnas es igual a cero. Además la Matriz Laplaciana permite obtener información sobre la conectividad del grafo. En concreto, se cumple que el primer autovalor de L en un grafo bidireccional es siempre nulo ( λ1= 0 ) y el número de autovalores nulos es igual al número de componentes conexas del grafo. Por lo tanto si λ2= 0 , el grafo G no está conectado. Al segundo autovalor de L , λ2 se le llama conectividad algebraica . Se ha demostrado que la conectividad algebraica supone una medida de la estabilidad y robustez en modelos de redes complejos [2] [1]. Para calcular la función de utilidad de cada camino, en primer lugar se genera el grafo virtual de la ruta suponiendo que no hay usuarios primarios, se calcula la Laplaciana de dicho grafo virtual y su conectividad algebraica, que para este caso se denota como λclear 2 . Posteriormente se calcula la Laplaciana de la ruta con los usuarios primarios y se calcula su conectividad algebraica λ2 . Por último se tiene en cuenta el número de enlaces Hk que conforman la ruta para calcular la función de Utilidad del camino k, que se dene como: Uk=(λ2)k (λ2)clear k ·1 Hk El nodo destino escoge aquella ruta cuyo valor de Uk es máximo. Esta métrica tiene en cuenta el número de enlaces de la ruta, la inuencia de los primarios y la cantidad de 6 cambios de frecuencia que se deben llevar a cabo a lo largo del camino. A partir de la denición de Uk resulta inmediato que si sólo existe un canal de comunicación y la ruta no está afectada por los primarios, el algoritmo elige el camino con el mínimo número de saltos (camino más corto). Al contrario que en el caso anterior, para este algoritmo si se ha implementado el intercambio de información entre los nodos sobre el camino elegido. En el simulador se implementa la primera fase que consiste en hallar todos los caminos posibles a través de la retransmisión de RREQ's, posteriormente se implementa la evaluación de cada uno de los caminos hallados en el nodo destino y la elección de aquél con función de utilidad máxima. Por último se simula también la conrmación del camino desde el nodo Destino hacia los otros nodos de la ruta mediante la retransmisión de una Route Reply (RREP) en sentido inverso a los nodos de la ruta elegida. Estos nodos guardan en memoria la información sobre a qué nodo deben retransmitir los datos de la sesión. Un problema que presenta este algoritmo en la práctica es que cuando aumenta el número de nodos cognitivos, los posibles caminos aumentan de forma exponencial, lo que lleva a una cantidad muy elevada de RREQs y además a una gran necesidad de cálculo en el nodo destino. En la práctica, al realizar las simulaciones con el algoritmo implementado en Matlab , a partir de un número de nodos cognitivos superior a 20 el tiempo de simulación se hace extremadamente elevado. Debido a este motivo, como solución general se adopta el primer algoritmo propuesto. 3.2. Estructura del Simulador 3.2.1. Estructura de Datos En el simulador se denen cinco clase diferentes. Estas son: 1. Clase Nodo: Es una clase padre. Existen dos clases que heredan de Nodo, estas son: NodoPrimario y NodoCog . Los atributos de Nodo son los siguientes: PosX: Coordenada X de la posición del nodo. Posy: Coordenada Y de la posición del nodo. Tipo: Indica si se trata de un nodo primario (Tipo=1) o de un nodo cognitivo (Tipo=2). ID: Identicador del Nodo. Dos nodos de distinto tipo (primario y cognitivo) pueden tener el mismo identicador, pero dos nodos del mismo tipo nunca tendrán un identicador igual. PotTx: Indica la potencia que transmite el nodo. Sensibilidad: Indica la sensibilidad del nodo. 2. Clase NodoPrimario: Hereda de la clase Nodo, por lo tanto tiene todos los atributos de dicha clase aparte de sus atributos propios. Cada objeto de esta clase representa a un nodo primario de la red. Los atributos propios de NodoPrimario son: VecinosCognitivos: Nodos Cognitivos que están dentro de la zona de inuencia del primario. 7 FactorActividad: Probabilidad de que el primario esté transmitiendo. La simulación de la actividad de los primarios tiene como objetivo obtener una TasaOcupacion que tienda a este valor. Estado: Indica si el primario transmite (Estado=1) o no (Estado=0) en un time slot. Transicion: Indica si el estado del primario ha cambiado con respecto al time slot anterior. QuantumsActivo: Número de time slots que el primario ha estado transmitiendo. Permite calcular la tasa de ocupación del primario. QuantumsInactivo: Número de time slots que el primario ha estado sin transmitir. Permite calcular la tasa de ocupación del primario. TasaOcupacion: Tasa de ocupación del primario. Indica la actividad que ha presentado el primario hasta el instante actual. Es igual al número de Quantums Activo entre el número de Quantums inactivo. ProbEvaluacion: Se utiliza para generar la actividad de los primarios. Es la probabilidad de evaluar la tasa de ocupación del nodo primario y comprobar si debe cambiarse el estado del nodo para que esta se acerque al Factor de Actividad. Esta probabilidad se incrementa en cada iteración con un valor increm . Cuando se realiza una evaluación se reinicia esta probabilidad a 0 y se repite el proceso. MargenOcupacion: Margen de error permitido entre TasaOcupacion y FactorActividad . Si estos dos valores presentan un error mayor que MargenOcupacion , entonces se cambia el estado del nodo para que se reduzca el error. HistorialActividad: Vector donde se guarda la actividad que va a seguir el nodo primario durante cada instante del bucle de la simulación de transmisiones. 3. Clase NodoCog: Esta clase también hereda de la clase nodo, por lo que también tiene los atributos de dicha clase, además de los suyos propios. Representa un nodo cognitivo de la red. Sus atributos propios son: EstadoTx: Vector de longitud Np. Indica las transmisiones del nodo en las distintas bandas de frecuencia. Un valor igual a -1 indica que la transmisión está inhabilitada. Un valor igual a 0 indica que la transmisión está disponible y un valor igual a 1 indica que está transmitiendo. EstadoRx: Equivalente al anterior, pero referido a la recepción en lugar de la transmisión. Si un nodo transmite a una frecuencia, su recepción a esa frecuencia está inhabilitada y viceversa. Vecinos: Lista de los nodos cognitivos que están conectados con el nodo actual. DatosPendientes: Indica para cada sesión los bits que le quedan por transmitir al nodo. (Vector de longitud Num_Sesiones). NodoDatosPendientes: Indica para cada sesión cuál es el siguiente nodo al que debe enviar los datos el nodo actual. (Vector de longitud Num_Sesiones). 8 SesionEnTx: Indica la sesión que se está transmitiendo en cada banda. (Vector de longitud Np). VecinosPrimarios: Lista de nodos primarios frente a los que el nodo cognitivo es susceptible de un desalojo, debido a que está en su zona de inuencia. Conectividad: Numero de nodos cognitivos conectados al nodo, es decir número de enlaces adyacentes al nodo. Buer: Indica la cantidad de bits que tiene el nodo en buer para cada sesión en un momento dado. Un nodo no puede retransmitir los bits que recibe si no ha recibido el Transport Block correspondiente por completo. Es decir si no ha recibido los TamBloque bits que forman ese bloque de datos. HistBuer: Guarda el estado de los buers en cada instante de la simulación. Se utiliza para almacenar y presentar los resultados de la simulación. VectorInuencias: Vector donde se guarda la inuencia que tiene cada primario sobre el cognitivo. Es decir, el factor de actividad del primario si el cognitivo está en su zona de inuencia, o cero si no es así. BuerRREQ: Buer de mensajes tipo RREQ. Se utiliza para el encaminamiento de las sesiones mediante el algoritmo Gymkhana. 4. Clase Sesion: Esta clase representa las sesiones de comunicación entre nodos cognitivos. Es decir que representa las comunicaciones que se simulan. En cada objeto sesión se guarda información relacionada con el uso de las frecuencias, los tiempos de transmisión de cada nodo, los nodos activos en un instante dado, la ruta que sigue la sesión. Los atributos de esta clase son: ID: Identicador de la Sesión. Estado: Indica el estado de la sesión (0: No ha empezado a transmitir. 1: está transmitiendo. 2: Ya ha nalizado). Origen: Identicador del Nodo Origen de la sesión. Destino: Identicador del Nodo Destino de la sesión. CantidadDatos: Cantidad de Bits que quiere transmitir del nodo Origen hacia el nodo Destino. Ruta: Vector con los identicadores de los nodos de la ruta que debe atravesarse para llegar de Origen a Destino. BandasEnlaces: Vector de longitud igual al número de enlaces activos en la sesión. Cada elemento indica la frecuencia que está utilizando el enlace correspondiente en ese instante (-1 si está desalojado. Si el enlace ha nalizado su transmisión se queda con el valor de la ultima frecuencia utilizada). t_IniTxNodos: Indica el instante en el que empieza a transmitir cada uno de los nodos de la ruta. t_FinTxNodos: Indica el instante en el que deja de transmitir cada uno de los nodos de la ruta. TiempoInicio: Indica el instante en el que inicia la sesión. 9 último enlace de la sesión no depende del nodo primario 2, por lo que también transmite de forma ininterrumpida a esta frecuencia. El primer enlace de la sesión 1 y el último enlace de la sesión 2 pueden transmitir simultáneamente a la misma frecuencia porque los transmisores de cada enlace no están conectados con los receptores del otro y por lo tanto no se generan interferencias signicativas. Por último, el enlace intermedio de la sesión 2 sí depende de todos los primarios y por eso va ajustando su banda de transmisión a los enlaces que tiene disponible en cada instante en función de la actividad de los nodos primarios y de los otros nodos cognitivos. 0 2 4 6 8 10 12 14 16 18 20 0 2 4 6 8 10 12 14 16 18 20 1 3 6 7 9 45 10 8 2 P1 P2 P4 P3 Figura 2: Localización de los nodos en una simulación. 16 0 5 10 15 0 5000 10000 Bits en Buffer del Nodo 7. Sesion 1 0 5 10 15 0 2000 4000 6000 8000 Bits en Buffer del Nodo 4. Sesion 1 0 5 10 15 0 200 400 600 Bits en Buffer del Nodo 6. Sesion 1 0 5 10 15 0 0.5 1 1.5 2Frecuencias utilizadas en el enlace Nodo 7 -> Nodo4. Sesion 1 0 5 10 15 -2 0 2 4Frecuencias utilizadas en el enlace Nodo 4 -> Nodo6. Sesion 1 Figura 3: Estado de los buers de los nodos y estado de los enlaces durante la transmisión de la sesión 1, entre el nodo 7 y el nodo 6. 17 0123456789 0 5000 10000 Bits en Buffer del Nodo 6. Sesion 2 0123456789 0 5000 10000 Bits en Buffer del Nodo 3. Sesion 2 0123456789 0 1000 2000 Bits en Buffer del Nodo 5. Sesion 2 0123456789 0 5000 Bits en Buffer del Nodo 8. Sesion 2 0123456789 0 2 4Frecuencias utilizadas en el enlace Nodo 6 -> Nodo3. Sesion 2 0123456789 -5 0 5Frecuencias utilizadas en el enlace Nodo 3 -> Nodo5. Sesion 2 0123456789 0 1 2Frecuencias utilizadas en el enlace Nodo 5 -> Nodo8. Sesion 2 Figura 4: Estado de los buers de los nodos y estado de los enlaces durante la transmisión de la sesión 1, entre el nodo 6 y el nodo 8. 18 0 2 4 6 8 10 12 0 0.2 0.4 0.6 0.8 1Actividad Nodo Primario 1 0 2 4 6 8 10 12 0 0.2 0.4 0.6 0.8 1Actividad Nodo Primario 2 0 2 4 6 8 10 12 0 0.2 0.4 0.6 0.8 1Actividad Nodo Primario 3 0 2 4 6 8 10 12 0 0.2 0.4 0.6 0.8 1Actividad Nodo Primario 4 Figura 5: Actividad de los nodos primarios durante la simulación. 5. Comportamiento de la red en función de algunos parámetros de entrada A continuación se estudia la inuencia de algunos parámetros de entrada sobre el comportamiento de la red. Para ello se realiza un número de simulaciones para cada valor del parámetro a estudiar y se promedian los resultados obtenidos. Cada simulación implica generar una nueva posición de los nodos, generar de nuevo los enlaces existentes y para esos nodos y enlaces correspondientes simular las transmisiones. De esta manera se puede observar como afecta la variación de un parámetro al comportamiento de la red. 5.1. Inuencia de Ns: Para estudiar la inuencia del número de nodos cognitivos se realizan 100 simulaciones para cada valor de Ns. Es importante destacar que cuando la simulación no genera ningún enlace, se repite hasta que se haya generado al menos un enlace entre dos nodos. Debido 19 a ese motivo, cuando se dene un valor de Ns muy pequeño para unas dimensiones de la red determinadas, hay que repetir varias veces la simulación hasta que se produzca una simulación en la que la posición de los nodos esté lo sucientemente cerca como para que se pueda crear un enlace. Para cada simulación los parámetros de entrada son: Dimensiones de la red: XMAX = 20 , Y MAX = 20 Número de primarios: Np = 5 Factores de actividad de los primarios: FA = 0,5 Número de sesiones: Num _ Sesiones = 4 Longitud de datos de cada sesión: LongDatos = 5000 Potencia transmitida: Pot = 1 , PotPrim = 1 Sensibilidad de los nodos: Sens = 0,01 , SensP rim = 10−3 coeciente de pérdidas de propagación: alfa = 2,5 Quantum de tiempo: quantum = 0,1 . En primer lugar cabe destacar que cuando se realizan las simulaciones de las sesiones, los nodos origen y destino se toman de forma aleatoria y se comprueba que el nodo origen y el nodo destino dispongan de una ruta existente, por lo tanto, cuando Ns es pequeño, las sesiones de comunicación serán todas entre los mismos nodos o tendrán alguna diferencia, pero por lo general utilizarán los mismos enlaces, mientras que cuando Ns es elevado, la probabilidad de que dos sesiones necesiten utilizar el mismo enlace en el mismo instante se reduce, ya que las sesiones serán entre nodos diferentes con una gran probabilidad. En los resultados se observa como para valores elevados de Ns, al aumentar el número de nodos cognitivos aumenta el throughput útil o lo que es equivalente, se reduce el retardo. Esto ocurre porque al aumentar el número de nodos cognitivos manteniendo el número de sesiones de comunicación, aumenta la cantidad de recursos disponibles de la red cognitiva, ya que al desplegarse más nodos también se crean más enlaces. Además la mejora que un aumento de Ns produce es cada vez menor, debido a que para valores muy elevados ya existen enlaces entre los nodos cognitivos de sobra, y lo que está limitando el comportamiento de la red es la actividad de los nodos primarios. Es por eso que la tasa de ocupación no mejora más allá de un valor por mucho que aumente Ns. El comportamiento que se produce cuando Ns es pequeño se debe a que para valores muy bajos de Ns (Ns=3) sólo existen conexiones en aquellos casos en que los dos nodos cognitivos estén muy cerca el uno del otro y en este caso sólo existirá una o dos conexiones en la red, por lo que los enlaces serán de una longitud muy pequeña y de muy buena calidad, además la longitud de las rutas será mucho más pequeña. Cuando este número aumenta un poco, las sesiones ya son más largas y por lo tanto ya deben concantenarse transmisiones en varios enlaces, es por ello que el throughput útil baja y el retardo sube para valores de Ns=10 ó 12 respecto a Ns=3 ó 5. En la práctica lo que ha ocurrido es que la red se ha hecho más grande porque antes se tenía sólo una pequeña zona de la red conectada . Por último para valores pequeños de Ns se obtiene una tasa de ocupación más baja en los enlaces, esto se debe a que como existen muy pocos enlaces, todas las sesiones tienen que utilizar los enlaces existentes y por lo tanto las transmisiones de la red cognitiva deben esperar unas por otras. Es por eso que el retardo cuando Ns es muy grande es mejor que para estos valores, pues ya no está limitado por los otros cognitivos, sino que está limitado únicamente por los primarios. 20 0 5 10 15 20 25 30 35 40 0 200 400 600 800 1000 1200 1400 1600 1800 Figura 6: Througput Util (bps/duración de la sesión) en función del Número de nodos Cognitivos. 0 5 10 15 20 25 30 35 40 0 1 2 3 4 5 6 7 Figura 7: Retardo en función del Número de nodos Cognitivos. 21 0 5 10 15 20 25 30 35 40 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 Figura 8: Tasa de ocupación de los enlaces en función del Número de nodos Cognitivos. 5.2. Inuencia de Np: Para estudiar la inuencia del número de nodos primarios se realizan 50 simulaciones para cada valor de Np. Al igual que en el caso anterior cada simulación implica un despliegue distinto de la red (Se ejecuta SimularRed cada vez) y unas sesiones de comunicación entre los nodos cognitivos diferentes. Para cada simulación los parámetros de entrada son: Dimensiones de la red: XMAX = 20 , Y MAX = 20 Número de nodos cognitivos: Ns = 10 Factores de actividad de los primarios: FA = 0,5 Número de sesiones: Num _ Sesiones = 4 Longitud de datos de cada sesión: LongDatos = 3000 Potencia transmitida: Pot = 1 , PotPrim = 1 Sensibilidad de los nodos: Sens = 0,01 , SensP rim = 1−3 Coeciente de pérdidas de propagación: alfa = 2,5 Quantum de tiempo: quantum = 0,1 . El comportamiento de la red con respecto al número de nodos primarios existentes se percibe de forma clara: conforme aumenta Np aumentan los recursos que puede aprovechar la red cognitiva, ya que ésta puede utilizar un mayor número de bandas de frecuencia. Por tanto para un Factor de Actividad constante, si Np es aumenta, mejoran todos los parámetros de la red: se reduce el retardo y aumentan el throughput y la tasa de ocupación de los enlaces. Además se observa como la mejora obtenida sigue una función exponencial, de forma que aumentar Np cuando presenta un valor pequeño implica una mejora mucho mayor que hacerlo cuando Np es elevado. Esto se debe a que cuando el número de frecuencias es muy elevado, el factor limitante en el comportamiento de la red ya no es el número de frecuencias disponibles, sino otros factores que dependen de la calidad de los enlaces, como la potencia transmitida, el ancho de banda, el coeciente de pérdidas, etc. 22 0 2 4 6 8 10 12 14 16 18 20 0 200 400 600 800 1000 1200 1400 1600 1800 Figura 9: Througput Util en función del Número de nodos Primarios. 0 2 4 6 8 10 12 14 16 18 20 0 2 4 6 8 10 12 14 Figura 10: Retardo en función del Número de nodos Primarios. 23 0 2 4 6 8 10 12 14 16 18 20 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Figura 11: Tasa de ocupación de los enlaces en función del Número de nodos Primarios. 5.3. Inuencia de FA: El comportamiento de la red cognitiva con respecto a la actividad de los primarios se observa de forma clara. Cuando aumenta el valor de FA, es decir cuando los nodos primarios son más activos, la red cognitiva empeora sus prestaciones, lo cual resulta obvio, pues la red cognitiva se basa en aprovechar los recursos de la red primaria que ésta no utiliza. Si los nodos primarios tienen menos probabilidad de estar inactivos, entonces la red cognitiva tiene menos recursos disponibles. Además se aprecia como, cuando la tasa de actividad de los primarios presenta un valor bajo, el comportamiento es similar ( FA = 0,1 ó FA = 0,3 ), debido a que la red no está limitada por éste parámetro. Sin embargo cuando el Factor de actividad de los nodos primarios es elevado, un pequeño cambio en el valor de FA se traduce en un cambio signicativo en el comportamiento de la red, debido a que en éste caso el factor de actividad sí es un limitante de las prestaciones de la misma. Se puede observar como aumentar el factor de actividad tiene un efecto similar a reducir el número de nodos primarios de la red. En ambos casos se están reduciendo los recursos de los que dispone la red cognitiva. Además, el cambio en el comportamiento de la red al variar estos parámetros es exponencial, de forma que cuando el parámetro presenta un valor muy malo (Np muy pequeño o FA muy alto) una pequeña variación inuye de forma signicativa en la red. Sin embargo conforme el parámetro va tomando valores mejores (FA se va reduciendo y Np va aumentando), el impacto que supone para la red una variación del parámetro se va reduciendo. 24 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0 500 1000 1500 Figura 12: Througput Util en función del Factor de Actividad de los nodos primarios. 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0 5 10 15 Figura 13: Retardo en función del Factor de Actividad de los nodos primarios. 25