Algunos proyectos de fuente abierto

Kannel

Kannel utiliza la licencia BSD.

Kannel fue en primer lugar una pasarela WAP, pero amplió sus funcionalidades posteriormente para dar soporte a WAP usando SMS como transporte de los datos y para obtener páginas web.

El código ahora es bastante estable, estando reconocido y certificado por el WapForum como una pasarela que se ajusta a los estándares WAP. Detrás de Kannel hay un numeroso grupo de desarrolladores y colaboradores. La empresa que comenzó a desarrollar Kannel se llamaba WapIt. Recientemente tuvo problemas económicos y cerró. Desde entonces, se está tratando de crear una fundación que dé apoyo al mantenimiento del desarrollo de Kannel, pero las últimas noticias que aparecen en el sitio web de Kannel son del mes de Junio de este año...

Kannel es un proyecto grande, con una estructura detallada que le convierte en "demasiado complejo" para algunas instalaciones. Sin embargo, su objetivo principal es la escalabilidad y alta disponibilidad desde su planteamiento inicial.

Básicamente, en una instalación mínima, aparece lo que en Kannel denominan "BearerBox", el componente que comunica con el centro servidor de mensajes (SMSC) o un teléfono WAP que puede sustituirlo en parte. Con este BearerBox comunican los otros componentes, "SMSBox" y "WAPBox", que se encargan de acceder a los servidores HTTP que tienen el contenido que se deseea acceder, y que realizan las conversiones/compresiones que establece el protocolo WAP para el envío de los mismos a los teléfonos.

Figura 2. Arquitetura de Kannel

En una instalación orientada a SMS, desde el teléfono celular se envía un mensaje que es recibido por el SMSC u otro teléfono móvil, que recibe el mensaje para pasárselo al BearerBox; el mensaje es encaminado al SMSBox, que accede a una página web (puede ser un cgi que genere la página dinámicamente, para ejecutar comandos o lanzar programas, por ejemplo) y el resultado es devuelto al BearerBox de nuevo para ser devuelto al teléfono.

Kannel está orientado principalmente al trabajo directo con centros servidores de mensajes (SMSC) e implementa muchos protocolos de acceso a SMSCs de diferentes fabricantes. Es en la conexión directa con un SMSC cuando se obtienen los mejores resultados de rendimiento; sin embargo, no siempre se tiene disponible una conexión de este tipo con la red GSM, por lo que también implementa conexión mediante modem GSM o teléfono móvil con modem incorporado.

Alamin

Alamin utiliza la licencia GPL.

Alamin nació inicialmente con el objetivo de poder lanzar sencillas lineas de comando desde un teléfono móvil. En Marzo de 1998 se implementó un servicio que monitorizaba un buzón de correo y recibía sus mensajes, interpretaba su contenido y realizaba alguna acción, devolviendo un resultado también por correo electrónico. El acceso al teléfono móvil se realizaba mediante una pasarela sms/email. Esta pequeña pasarela estaba realizada en Perl y sus especificaciones se pueden encontrar en http://andressh.alamin.org/SSJP/. Este servicio no llegó a ser puesto en marcha en ninguna instalación real.

Posteriormente, a mediados de 1999, el proyecto Gnokii permitió acceso directo a la red GSM. Ya existian los modems GSM, pero estaban muy poco extendidos, eran caros y difíciles de conseguir.

Alamin utilizó primero Gnokii como medio de acceso a la red GSM, y, al evitar usar otra pasarela a más bajo nivel, se ganó en fiabilidad. En mayo de 2000 se pusieron en marcha las primeras instalaciones en explotación de Alamin.

Alamin se compone principalmente de dos componentes: el manejador de mensajes (gsgmdd, Message Distpatcher) y el núcleo que gestiona las peticiones desde la red IP (gsgcmd, Core Module).

Figura 3. Arquitectura de Alamin

El Core Module es el que centra la gestión del servicio, el control de acceso de las peticiones desde la red IP, despliega los alias en los números que corresponda y prepara las solicitudes para ser enviadas. La comunicación entre los clientes de la red IP y el Core Module se realiza mediante el protocolo smsqp, que utiliza por defecto el puerto 11201/tcp para su comunicación. Este protocolo no está terminado de especificar, ya que se está desarrollando con Alamin.

El Message Dispatcher se encarga de la entrega de los mensajes desde las colas de prioridades al dispositivo GSM, comprueba la existencia de mensajes entrantes y lanza programas externos para el tratamiento de los mensajes que han llegado. Inicialmente, el Message Dispatcher utilizaba Gnokii para realizar estas tareas, pero ahora ya usa comunicación directa con modems GSM mediante comandos AT. En el momento actual de desarrollo, sólo se permite un dispositivo GSM por cada Message Dispatcher. En sucesivas versiones se podrá utilizar multiples dispositivos GSM, tablas de rutas para decidir por dónde se envía un mensaje, y su arquitectura será cambiada para facilitar que se puedan añadir de forma sencilla nuevos "controladores" para otros dispositivos GSM o para utilizar otras pasarelas en cascada (http, accesos directos a SMSC, protocolos de otras pasarelas, etc.)

Adicionalmente a estos dos componentes van a ser añadidos otros que implementan diferentes protocolos para permitir que otras aplicaciones, directamente, sin cambios, accedan a la red GSM. Uno de ellos, que ya está incluido en la distribución de la pasarela y que implementa el protocolo SMTP, es gsgsmtpd (SMTP interface). De esta forma, la pasarela traduce directamente mensajes de correo a SMS.

Están pendientes de implementación otros protocolos, como POP, que permitirá que desde cualquier cliente de correo se puedan recibir mensajes SMS convertidos a mensajes de correo electrónico. También está pendiente de implementar el modo PDU en el envío de mensajes para modems GSM. Sólo se soporta, temporalmente, el modo texto. El modo PDU en el envío de mensajes SMS mediante comandos AT permite enviar caracteres no imprimibles, es decir, no solo letras, números y algunos caractéres especiales, si no que cualquier valor desde 0 a 255 puede ser utilizado. Es necesario para el envío de mensajes en formatos avanzados o el envío de melodias y logotipos.

El cliente de Alamin es un sencillo programa en Perl de linea de comando que puede tener sus opciones de configuracion en un fichero o indicarlas en la propia llamada al programa:
andres@pruebas:~$ gsgc --help
Usage: gsgc [--version|--help]
       gsgc [--configfile config_file_name]
            [--debug|--nodebug]
            [--verbose|--noverbose]
            [--copyright|--nocopyright]
            [--port port_number]
            [--host host_name]
            [--syslog facility|--nosyslog]
            [--priority 1-9]
            [--smsc short_message_service_center_number]
            [--user username]
            [--password secret_password]
            [[--send dest_number[,more_dests]... message_content]
            ]
andres@pruebas:~$ gsgc --user andres --password clave \
           --host smsgate.dominio.com --priority 5 \
           --send 612345678 "mensaje de prueba"
Message sent.
	

En el ejemplo, --user andres --pasword clave se usan para identificarse de cara a la pasarela. Si no se especifican, se realiza una conexion anónima. Según esté configurada la pasarela, puede permitirse/denegarse el envío a determinados números dependiendo el usuario que trate de realizarlo. El parámetro --host smsgate.dominio.com especifica el nombre del equipo en el que está alojada la pasarela. Finalmente, --priority 5 indica que debe ser utilizada la cola de prioridad 5. Estas colas permiten, por ejemplo, enviar masivamente mensajes por una prioridad baja e intercalar posteriormente mensajes más urgentes por una cola de mayor prioridad, adelantando estos mensajes a los anteriores en la salida hacia la red GSM. El parámetro --send 612345678 "mensaje de prueba" solicita el envío de la cadena que aparece entre comillas al número de teléfono indicado.

Mientras, en el servidor el mensaje es recibido, tras comprobar que la conexión se realiza desde un equipo permitido, con un usuario y contraseña validos (la contraseña no viaja por la red, de forma similar a como CHAP lo hace), el mensaje se coloca en la cola correspondiente y, finalmente, es enviado al dispositivo GSM. En caso de que haya algún problema durante el envío, el mensaje se reintentará enviar según se haya indicado en la tabla de reintentos, en el fichero de configuración.

En el siguiente extracto de syslog se registra el dialogo entre el cliente (gsgc) y el Core Module (gsgcmd), hasta que el mensaje queda encolado. Las lineas Received indican el mensaje que la pasarela envía al cliente, y las Sending las que el cliente envía a la pasarela:
Sep 15 18:48:26 pruebas gsgc[13]: Starting Alamin GSM SMS
                                               Gateway - Client
Sep 15 18:48:26 pruebas gsgc[13]: Received: OK Alamin GSM
                                               SMS Gateway
Sep 15 18:48:26 pruebas gsgc[13]: Received: READY
Sep 15 18:48:26 pruebas gsgc[13]: Sending: send 5 - default <list>
Sep 15 18:48:26 pruebas gsgc[13]: Sending: 612345678
Sep 15 18:48:26 pruebas gsgc[13]: Sending: <EOL>
Sep 15 18:48:26 pruebas gsgc[13]: Sending: mensaje de prueba<EOM>
into queue 5 message 00004891-14660.sms.txt
Sep 15 18:48:26 pruebas gsgc[13]: Received: WAIT Sending
                                                   to 612345678
Sep 15 18:48:26 pruebas gsgc[13]: Received: OK Message to
                                               612345678 queued
Sep 15 18:48:26 pruebas gsgc[13]: Received: READY
Sep 15 18:48:26 pruebas gsgc[13]: Sending: CLOSE
Sep 15 18:48:26 pruebas gsgc[13]: Received: OK Closing
Sep 15 18:48:26 pruebas gsgc[13]: Received: BYE
	

El cliente, al estar escrito en Perl, puede correr en cualquier plataforma con intérprete de perl y sockets. Está siendo desarrollado un applet Java para permitir su uso directamente desde clientes que dispongan de navegador de internet y máquina virtual Java.

SMSLink

SMSLink utiliza la licencia GPL.

SMSLink es similar en muchos aspectos a Alamin, pero tiene ciertas diferencias de arquitectura.

En principio, sólo hay un proceso corriendo, y lanza nuevos hilos para cada petición de envío de mensaje recibido de la red IP. El acceso concurrente al dispositivo GSM se gestiona mediante un sistema de bloqueos y semáforos.

Permite el uso de multiples dispositivos GSM desde su comienzo. Para la recepción de mensajes, existe la opción de almacenar los mensajes entrantes o pasárselos a un programa que los procese.

Los dispositivos GSM soportados son todos los que soporten comandos AT extendidos, esto es, modems GSM y teléfonos con modem incorporado. Tanto el modo PDU como el modo texto están disponibles para el envio de mensajes.

En este momento no incorpora todavía gestión de colas, prioridades, usuarios y permisos por usuario. Estas son las deficiencias con respecto a Alamin, sin embargo, Alamin solo puede manejar un dispositivo GSM, y en caso de ser un modem, no puede usar el modo PDU para envío de mensajes con melodias y logotipos.

SMSTools

SMSTools utiliza la licencia GPL.

La filosofía general de la aplicación es la misma que Alamin y SMSLink. Tan solo hay diferencias en detalles de implementación.

Soporta hasta 32 dispositivos GSM simultaneos. Gestiona una cola por cada dispositivo y se pueden establecer rutas de manera que ciertos mensajes se envien solo por un dispositovo determinado.

También permite establecer qué programa debe ser lanzado cada vez que se recibe o se envía un mensaje.

No resulta muy flexible en redes con problemas de transmisión o en momentos de mucha carga de la red, ya que la configuracion de reintentos no resulta flexible.

Tampoco, como SMSLink, incorpora todavía gestión de colas, prioridades, usuarios y permisos por usuario.

Otros programas que pueden utilizarse como pasarelas

Existen multitud de programas que permiten el envío de mensajes cortos, de uno en uno, sin gestión de colas, prioridades, etc. y que no incluyen gestión de la contención en el acceso al dispositivo GSM ni reintentos en caso de fallo en el envío. Su función principal es enviar un mensaje accediendo físicamente al dispositivo GSM (Chat, Gnokii) o conectar con otra pasarela de mensajería (Esms, Smssend, Smsclient), por lo que podriamos considerarlos solo la parte cliente de una pasarela.

Muchos de estos programas se usan como "interfaz de acceso a la red GSM" desde otras pasarelas más complejas, como es el caso de Gnokii y Chat, que son utilizados por Alamin.

Pero en ocasiones, las necesidades de comunicación no requieren demasiada complejidad y cualquiera de estos sencillos programas son suficientes para notificar de un evento ocurrido en una red o recibir un comando simple que sea pasado a bash desde un SMS como "/etc/init.d/apache start".

No aparecen aquí todos los existentes, pero sí algunos: