4. Aspectos de implementación. Como se ha expuesto, aunque el método propuesto es susceptible de ser implementado en multitud de sistemas de comunicaciones inalámbricos celulares, en este trabajo se ha centrado la atención en la implementación en GSM/GPRS para mostrar el rendimiento del sistema. Como se expondrá en los siguientes apartados, los detalles de implementación condicionan el rendimiento del método considerablemente. 4.1 Terminal móvil. Para llevar a cabo esta funcionalidad tenemos varias posibilidades en lo que a la implementación se refiere. Así, en este proyecto se contemplaron dos posibles implementaciones: en un terminal móvil y en un módem GSM/GPRS. Finalmente se validó la implementación únicamente en módem GSM/GPRS debido al difícil acceso a herramientas de diseño y desarrollo adecuadas para el terminal móvil elegido. De todas maneras, ambas alternativas se describen a continuación. 4.1.1 Terminal móvil convencional. En un primer momento se pensó en desarrollar una aplicación para un terminal móvil convencional. Así, se programó una aplicación, en lenguaje Symbian C++, en un terminal móvil con Sistema Operativo Symbian [29] e interfaz de usuario S60. Para ello se utilizó el kit de desarrollo de software (SDK) de la serie S60 de Nokia. Este SDK permite acceder a muchas de las funcionalidades de este tipo de teléfonos móviles, como por ejemplo, la monitorización de la intensidad de señal recibida en el teléfono y el control de llamadas de voz. Además, para facilitar la edición del programa se ha utilizado el entorno de desarrollo Carbide v.2 C++. Dado que, en cuanto a la monitorización de la señal recibida, en el terminal utilizado teníamos acceso únicamente al nivel de señal, el programa diseñado consiste en una aplicación que monitoriza la intensidad de la señal recibida en el teléfono de la portadora piloto de la celda en la que se encuentra “acampado” el móvil. Cuando la aplicación detecta que no es posible obtener la intensidad de la señal (no es posible decodificar los canales comunes en el enlace descendente) se realiza una petición de canal (llamada de voz o de emergencia), aunque, como sabemos, esta llamada no se podrá terminar por la presencia del inhibidor, que impide la comunicación en el enlace descendente. Este simple esquema de funcionamiento se ilustra en la Figura 13. 27 Medida de la fuerza de la señal recibida de la portadora de señalización en el terminal (DL) ¿Se obtiene un valor lógico? SI NO Envío de mensaje de petición de canal sobre el canal RACH (UL) Figura 13: Diagrama de funcionamiento de la aplicación De las posibles causas que se pueden utilizar en la petición de canal, y tras las pruebas realizadas, se utilizaron dos de ellas para validar el rendimiento del sistema. Por un lado, la causa etiquetada con el número 5 en la Tabla 2, que se corresponde con llamadas de voz convencionales, y por otro, la etiquetada con el número 12, que se corresponde con llamadas al número de emergencia. La ventaja de la utilización de esta última radica en la baja probabilidad de uso de la misma. Aunque como desventaja, podríamos citar, según la información proporcionada por técnicos de Vodafone, que este tipo de llamadas, dependiendo del tráfico en el interfaz radio, podría originar caídas de llamadas en curso en un momento determinado. En este sentido, habría que llegar a una solución de compromiso, debiendo validar el sistema en diferentes situaciones. Sin embargo, tal y como se describe en el apartado de resultados, el problema que se encontró con la implementación de esta aplicación en un terminal móvil convencional radica en que en la práctica, el tiempo necesario para la detección de un inhibidor, con las herramientas empleadas, era tan elevado que el terminal móvil perdía la sincronización con la red rápidamente tras la detección de interferencia y por lo tanto no era capaz de transmitir la petición de canal. Es decir, el tiempo de refresco de las lecturas del nivel de la señal recibida no era lo suficientemente reducido. Esto se puede achacar a que estas acciones se llevan a cabo mediante APIs que requieren de otras funciones que tengan acceso a parámetros de nivel físico y necesitan un tiempo de ejecución determinado. Durante la validación práctica se utilizaron APIs públicas por la facilidad en la adquisición de las mismas. Otro problema adicional encontrado es que las APIs utilizadas no contemplan la utilización de números de emergencia. Para ello se requieren de APIs específicas, generalmente suministradas por el fabricante del terminal, o incluso por los operadores. 4.1.2 Módem GSM/GPRS. Dada la problemática existente en la solución anterior, se optó por implementar la funcionalidad del terminal en un dispositivo diferente, tal como un módem GSM/GPRS. En particular, se ha adquirido el módem GT864-PY [31] de la compañía 28 Telit [30], capaz de, por un lado, ser programado con mayor facilidad que un terminal móvil convencional para reducir el tiempo de desarrollo de la aplicación, y por otro, detectar la posible situación de inhibición de forma más rápida. En la Figura 14 se muestra este dispositivo. Figura 14: Módem GSM/GPRS utilizado. GT864-PY Este dispositivo ofrece las mismas funcionalidades que un terminal GSM/GPRS convencional y está pensado para implementar aplicaciones M2M (Machine to Machine). Además, se controla mediante comandos AT y permite la ejecución de aplicaciones desarrolladas en lenguaje Python. Para esto último Telit facilita un entorno de desarrollo para facilitar la edición de Scripts en Python: PythonWin. En [31] se puede encontrar toda la información necesaria para el desarrollo de Scripts en Python. En este caso, tenemos acceso a mayor número de parámetros para la monitorización de la señal recibida, tales como RxLevel, RxQual, BER, RSSI y power. Sin embargo, el desarrollo final de la aplicación vino condicionada por la implementación final del fabricante ya que el tiempo de refresco de los parámetros RxLevel, RxQual, y BER era excesivo. Afortunadamente, el tiempo de refresco de los parámetros RSSI y power (ambos son equivalentes) era lo suficientemente reducido utilizando comandos AT propietarios de Telit. Por tanto la implementación final es similar a la desarrollada para el terminal móvil convencional, expuesta en el apartado anterior, con la diferencia de que en este caso se monitorizan las variaciones bruscas en el nivel de señal de la portadora baliza del DL. En concreto se ha fijado un valor de 8 dB en este proyecto. En la Figura 15 se muestra el diagrama de flujo de la aplicación implementada. Figura 15: Aplicación añadida al terminal. Tras las pruebas realizadas durante la validación de esta aplicación, nos percatamos de un aspecto importante: el rango de valores que debe obtener la función (comando AT) que monitoriza el nivel de la señal recibida tiene que ser lo 29 suficientemente amplio como para detectar un cambio de nivel ante cualquier nivel de la señal recibida. Es decir, si la función que realiza la lectura del nivel de señal tiene un valor de salida predeterminado indicando que la señal recibida tiene ese nivel o superior, no podríamos detectar la presencia del inhibidor si el nivel de señal es lo suficientemente alto. Esta situación se ha dado durante la validación del sistema y se ha solventado introduciendo un atenuador en el conector coaxial de la antena del terminal. Por lo tanto, es conveniente caracterizar el rango de medida del parámetro monitorizado. 4.2 Dispositivo de seguimiento. Como se ha expuesto, dentro del sistema se propone la implementación mediante una plataforma SDR2 de un escáner de frecuencia para monitorizar el canal de control común en el sentido descendente y encontrar continuas repeticiones de respuestas a peticiones de establecimiento de canal, con la misma causa de establecimiento, que el terminal inhibido nunca recibirá. Si este comportamiento en el tráfico de señalización es detectado, se iniciará un proceso de polling o control de estado en los terminales que están siendo protegidos frente a inhibidores en la celda. Por lo tanto, se podrán proteger varios dispositivos frente a inhibidores de forma simultánea con un único dispositivo de este tipo instalado estratégicamente junto a una estación base. Este proceso de interrogación de terminales para comprobar su estado quedó fuera de la implementación del sistema piloto final por simplicidad. El concepto fundamental detrás de la tecnología SDR es acercar el procesamiento software tanto como sea posible a la antena. Es decir, el diseño de sistemas de radiocomunicaciones definidos por software se basa en la utilización de dispositivos que convierten las ondas de radio a la entrada de la antena en señales digitales procesables en una computadora de forma transparente desde el punto de vista del software. Una posible implementación de la tecnología SDR se podría llevar a cabo utilizando el software GNU Radio [23] junto con el dispositivo hardware USRP (Universal Software Radio Peripheral) desarrollado por la compañía Ettus Research LLC [24]. El USRP se utiliza para digitalizar las señales analógicas recibidas en las frecuencias de radio para que puedan ser procesadas en un ordenador de propósito general. De este modo, podríamos implementar en el ordenador un receptor o un transmisor radio definido por software utilizando las herramientas que proporciona GNU Radio. Esto genera gran flexibilidad en cuanto a la creación de casi cualquier tipo de receptor o transmisor en software. Sin embargo existen limitaciones, por ejemplo relacionadas con la velocidad de muestreo de la señal analógica recibida. En la Figura 16 se ilustra el procesado básico de la señal llevado a cabo en el USRP y GNU Radio. 2 Decir que se investigó el uso de otros sistemas comerciales y se terminó descartándolos, pues ninguno de ellos permite monitorizar de forma continua la señalización común descendente. Al menos ninguno de los equipos que, con un precio reducido, se revisaron. 30 Figura 16: Esquema de funcionamiento del USRP y GNU Radio. Una ventaja adicional referente al empleo específico de estos elementos, radica en que además de que GNU Radio y el USRP están basados en software y hardware libre respectivamente, el esquemático del USRP está disponible públicamente. Esto hace que las posibilidades en cuanto a soporte y desarrollo del sistema sean elevadas. En la Figura 17 se muestra externamente el USRP. Figura 17: USRP. A continuación se describirán las herramientas utilizadas, tanto hardware como software, por la plataforma SDR: El USRP y GNU Radio. 4.2.1 USRP. El USRP se emplea para realizar la conexión entre el dominio de RF (Radio Frequency) y la computadora (Figura 16). Este dispositivo toma a su entrada las señales de radio provenientes de la antena, las digitaliza a una frecuencia intermedia conocida y por último, transmite por el puerto USB estas señales en banda base. Como se observa, es deseable que el USRP realice el mínimo procesamiento para que el sistema sea lo más independiente del hardware como sea posible. Así, pese a poder programar, en la FPGA que incorpora este dispositivo, ciertas funciones de procesamiento de señal, es preferible que el USRP únicamente digitalice las señales que recibe para que éstas puedan ser procesadas en una computadora donde todos los cálculos puedan ser realizados en software. Para entender el funcionamiento del USRP con mayor profundidad, se describirán a continuación con cierto detalle los componentes que lo constituyen así como sus respectivas funciones. En una primera clasificación, el dispositivo consta de dos elementos principales: la placa principal, también conocida como placa base o motherboard, y las placas auxiliares que hacen de interfaz con la antena, más conocidas como daugtherboards. La elección de estas últimas dependerá del rango de frecuencias en RF que estemos interesados en procesar. En la Tabla 3 se enumeran todas las placas existentes. Por lo tanto, el USRP se compone de los siguientes elementos: 31 • Controlador USB • ADC (Analog to Digital Coverter) • DAC (Digital to Analog Concerter) • PGA (Programmable Gain Amplifier) • Daugtherboards • FPGA (Field Programmable Gate Array) Controlador USB 2.0. El USRP se conecta con el ordenador a través del puerto USB. En particular, utiliza la versión 2.0, llevando a cabo un rendimiento muy pobre con la versión 1.1. Esto permite disponer a la salida una tasa de datos de 32 MB/s. Así, se puede apreciar que esta conexión tiene un impacto serio en el rendimiento del sistema, pudiendo no ser suficiente con esta tasa para los requerimientos específicos del mismo. ADC (Analog to Digital Converter). El convertidor analógico a digital tiene la función de digitalizar las señales analógicas a su entrada. En concreto, el USRP consta de cuatro convertidores analógico a digitales que operan a 64x106 muestras por segundo con una precisión de 12 bits, por lo que en principio éste podría digitalizar señales de hasta 32 MHz de ancho de banda. Por lo tanto, este elemento también impone una restricción al sistema ya que no es posible procesar señales de mayor ancho de banda. DAC (Digital to Analog Converter). El convertidor digital a analógico convierte las señales digitales a su entrada en analógicas. En particular, en USRP está dotado de cuatro convertidores que operan a 128x106 muestras por segundo con una precisión de 14 bits. En el USRP, se emplean en el trayecto de transmisión para la emisión de señales definidas por software, por lo que no se contempla su empleo en este proyecto. PGA (Programmable Gain Amplifier). En el trayecto de recepción, el amplificador de ganancia programable amplifica la señal recibida, en caso de que ésta sea débil, antes de ser procesada por el convertidor analógico a digital para aprovechar el rango dinámico del mismo. La ganancia de este amplificador es configurable por software con valores que oscilan desde los 0 dB hasta los 20 dB. Daughterboards. Para que el USRP pueda trabajar en diferentes bandas del espectro de radiofrecuencia se debe dotar al mismo de alguna placa específica para la banda de interés. Estas placas se conocen con el nombre de “daughterboards” por la existencia de una placa base en la que se encuentran el resto de componentes del USRP que proporciona cuatro slots donde es posible conectar hasta dos placas receptoras y dos transmisoras, o bien únicamente dos placas transceptoras (RFX). Como se aprecia, estas placas se utilizan como interfaces receptoras RF (escáner de frecuencia), o bien como transmisoras. Además cada placa tiene acceso a dos de los cuatro ADC/DAC 32 (transmitiendo datos al ADC y recibiendo datos del DAC). Por lo tanto, concluimos que es posible conectar múltiples placas a la placa base, permitiendo la transmisión y recepción simultánea en el USRP. En la Tabla 3 se enumeran las placas existentes en la actualidad. Nombre Basic RX / Basic TX LFRX / LFRX DBSRX TVRX RFX400 RFX900 RFX1200 RFX1800 RFX2400 Operación Receptor / Trasmisor Receptor / Trasmisor Receptor Receptor Receptor y transmisor Receptor y transmisor Receptor y transmisor Receptor y transmisor Receptor y transmisor Banda (Mhz) 1-250 0-30 800-2400 50-860 400-500 800-1000 1150-1450 1500-2100 2300-2900 Potencia máxima (mW) 100 100 200 200 100 10 Tabla 3: Placas disponibles para la placa base del USRP FPGA (Field Programmable Gate Array). La FPGA juega un papel muy importante en el USRP y es considerada el corazón del mismo. Está conectada a todos los convertidores ADCs y DACs. Básicamente, su función es llevar a cabo las operaciones de alta frecuencia y reducir la tasa de datos para que el flujo de bits resultante se pueda transmitir por el puerto USB 2.0. Así, la FPGA está conectada al controlador del puerto USB, el Cypress FX2. Ambos, el controlador USB y la FPGA son programables a través del bus USB. Por configuración, la operación a alta frecuencia que realiza la FPGA es conocida como DDC (Digital Down Converting). Su función es la conversión a banda base de la frecuencia IF (Intermediate Frequency) presente a la salida del ADC. A partir de esta operación, la señal es diezmada para que la tasa de datos se adapte a la velocidad de transmisión USB y sea razonable para su posterior procesamiento en el ordenador. 4.2.2 GNU Radio. GNU Radio es un conjunto de herramientas software de código abierto que facilita el desarrollo de sistemas de radiocomunicaciones definidos por software. Para desempeñar esta función, hace uso de diversos lenguajes de programación, cada uno con objetivos diferentes. GNU Radio también incluye gran variedad de librerías de bloques de procesamiento de señal como moduladores, demoduladores, filtros, etc. que se pueden utilizar en el sistema de radiocomunicaciones que se esté diseñando. Aunque en el principio de operación de GNU Radio está implícito la utilización del USRP, éste no es necesario si no hay necesidad de un procesamiento en tiempo real, ya que es posible trabajar con capturas de ficheros realizadas con este mismo dispositivo. El software de GNU Radio está organizado en una estructura de dos niveles. Todos los bloques de procesamiento de señal están implementados en C++, mientras que la organización de alto nivel, que conecta los bloques de procesamiento de señal entre sí, se implementa en Python. El objetivo es implementar el sistema de comunicaciones en una aplicación en Python que maneje y planifique los bloques de procesamiento creados en C++, dejando toda la carga computacional presente en los 33 mismos en un segundo nivel. Adicionalmente, hay disponible un entorno gráfico para facilitar el diseño del sistema de radiocomunicación, el GNU Radio Companion (GRC) [13]. 4.2.3 Implementación del algoritmo de detección. Una vez que se han expuesto de forma general las herramientas disponibles, a continuación enumeramos las que finalmente se han empleado: • Dispositivo USRP con placa receptora DBSRX (800-2400 MHz) [24], válida para la recepción de cualquier banda de los sistemas GSM/GPRS y UMTS. Además es necesario el empleo de una antena adecuada. Para ello se ha empleado la antena SMA703 de la compañía COMET [25]. • PC de propósito general con la distribución Ubuntu del Sistema Operativo Linux. • Paquete de software GNU Radio. • Software de código abierto disponible en el proyecto Airprobe [27] para el análisis del interfaz radio del sistema GSM. A continuación se describirá el software empleado en el ordenador para la detección de la situación de inhibición del terminal. En primer lugar, hemos de tener perfectamente configurado el software GNU Radio en el ordenador. GNU Radio se puede instalar sobre diversidad de sistemas operativos, entre los que destacan Linux, MAC OS X y Windows. Entre ellos se ha optado por la utilización de la distribución Ubuntu 8.04 del sistema operativo Linux por su amplia difusión y fácil manejo. Las instrucciones para la correcta instalación de GNU Radio en el sistema operativo Linux Ubuntu se pueden consultar en [26]. Una vez instalado GNU Radio hay que descargar e instalar el software de código abierto disponible en el proyecto Airprobe [27]. Para ello se pueden seguir las pautas que se indican en [28]. Con todo ello, únicamente resta modificar este último componente software para que implemente nuestro algoritmo de detección. Es decir, se añadirá el código de programación necesario para que el dispositivo de seguimiento detecte de forma efectiva la posible situación de inhibición del terminal. El algoritmo implementado es el expuesto en la Figura 16 donde el parámetro To' se fijó a un valor lo suficientemente alto para no depender del tráfico presente en una celda en un momento dado, mientras que el parámetro Nmax (Max_retrans) se fijó al valor difundido por la estación base en la que se validó el sistema piloto, que en este caso toma el valor de 4. En la Figura 18 se muestran todos los elementos implicados. De izquierda a derecha: terminal módem GSM/GPRS, USRP y PC con el software GNU Radio e inhibidor de frecuencia en las bandas GSM900/GSM1800/UMTS. 34 Figura 18: Elementos utilizados para la validación del sistema. 35