SMS handing in the Osmocom CNI

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

Keith keith at rhizomatica.org
Tue Oct 9 12:32:01 UTC 2018



On 08/10/18 13:50, Vadim Yanitskiy wrote:
> If anyone has any experience with Kannel, please share!
Hi Vadim.

Rhizomatica still uses kannel fairly extensively in the "RCCN", although
our plan is to remove it ASAP.
It was chosen initially as a FOSS possibility to link the osmo-nitb SMPP
interface to python.

We setup a kannel ESME that receives SMS and forwards them to a REST
service listener (the python daemon)
The python daemon then processes the message, (checks authorisation,
routing) and forwards it to a kannel HTTP listener which forwards the
message on to the SMPP side of the nitb.

Now, i haven't looked much at the code, although I did once take a look
at something to see why multipart messages were getting messed up
internally. The reason is that kannel concats multipart messages
received by the kannel ESME and forwards them using the charset of the
first message part, which may not be necessarily the same as any
subsequent message part :((

Character set translation support seemed incomplete, and support for GSM
03.38 shift tables is totally absent! :((

Your mail prompts me to look at the kannel website, and I note that a
new stable version is relatively recently released. So some work has
been done, previous to that it seemed to be abandoned.

What I did spent quite a lot of time with in relation to kannel, was
reading documentation (which I initially found somewhat inaccessible),
testing configuration and general usage.

During this time, I got the impression that kannel is far from being a
SMSC, but is a "WAP gateway"  - rather a kind of bulk SMS processor, a
HTTP gateway to submit (spammy) SMS, or for working with things like
short code processing. I'm not aware of any Core Network SMS center type
functionality within kannel. Kannel can connect to other SMSC but
there's no SMSC as such within. IIRC there isn't even any non-volatile
store and forward support. I think (again from memory) that there is
some database storage but only for delivery reports.
Maybe something has been added in the 2018 work.

I therefore have been working scantly on a python based ESME, using
python-smpplib. I'm not a python programmer though so it's very much
prototype work, and probably very bad python, but I'll publish something
"soon" :-/

Also python-smpplib is not perfect, (mainly I think because of a lack of
real world implementations based on it) and I got held up sometimes by
having to fix things in python-smpplib. The maintainer is sometimes
active, and sometimes quite absent. Pau did some work on python-smpplib
for the osmo-gsm-tester (i think) and although he submitted some
patches, I think there was some suggestion that it could do with a
complete re-write.

I'd maybe consider forking and fixing python-smpplib, and writing an
SMSC in python.

If one wanted to work on OsmoSMSC in C, there may be many things of use
in the kannel code that could be of used (instead of the libsmpp in the
case of SMPP), but I don't know if that's helping in terms of effort?
Also, I think then that the resulting product would not really be 
"fork" of kannel, but rather a completely different product, so we'ld
probably spend a lot of time stripping out what we don't want. Maybe
that still makes sense?

There is also Holger's smalltalk SMSC, which I think was written to be
an actual SMSC.


Keith.


 

 

.




More information about the OpenBSC mailing list