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/.

Vadim Yanitskiy axilirator at gmail.com
Mon Oct 8 12:50:43 UTC 2018


Dear all,

In this mail I would like to negotiate and discuss some details
about further development of the Osmocom CNI, in particular the
way of handling of SMS messages.

At this time, all SMS messages within the Osmocom CNI are terminated
at OsmoMSC. There we have some basic routing configuration, either
internal, or SMPP. This approach has some disadvantages, at least:

  - MSC is not a proper place for terminating SMS messages,
    in commercial networks it's usually done by SMS Center;

  - in case if a network based on the Osmocom CNI does contain
    multiple MSCs, one has to configure / update the SMS routing
    configuration for each MSC individually;

  - one would have to use SMPP in order to deliver SMS messages
    to / from commercial networks, which in most cases "speak"
    either MAP, or DIAMETER, or even both, but not SMPP;

  - using SMPP (as it's the only external interface available)
    involves the need to encode and decode complex SMS protocol,
    what is not desired in some situations.

This is why it was decided to rip the SMS routing out of OsmoMSC,
and use generic (for Osmocom CNI) GSUP protocol as the transport.
Please see OS#3587 for more details about "SMS over GSUP".

So, we actually need a separate process, let's call it "OsmoSMSC"
in quotes for now, as I am not sure about the proper name. It
should implement at least basic functionality of the SMS Center.
Since we are using OsmoHLR as the main / central gateway in the
Osmocom CNI for all GSUP communications, this to be discussed
"OsmoSMSC" should basically be connected to OsmoHLR.

What I would like to discuss is how should we implement "OsmoSMSC"?
I think there are two possible ways: either write it from scratch,
or fork some existing project. Implementing from scratch would
require much more efforts and time than forking an existing
SMSC implementation, for sure.

I've recently discovered a project called Kannel - an Open Source
WAP and SMS gateway written in C and distributed under the Kannel
Software License, please see: https://www.kannel.org/index.shtml

What do I personally like:

  - helpers for OTA configuration (e.g. WAP, MMS settings) messages;
  - written in C and using automake as the build system;
  - high performance (hundreds of messages per second);
  - 7-bit, 8-bit and Unicode message coding.

So we could fork this project as "OsmoSMSC",
and extend in the following way:

  - integrate generic Osmocom logging;
  - integrate VTY interface and generic configuration;
  - implement GSUP client from OsmoHLR.

I already started to read the source code and documentation.
If anyone has any experience with Kannel, please share!

And finally, how should we name "OsmoSMSC"? :)

With best regards,
Vadim Yanitskiy.



More information about the OpenBSC mailing list