The Universal SS7 library is a set of open source libraries to process signalling system 7 messages as used in the GSM world and transported over IP (So called Sigtran family of protocols)
Universal SS7 consists of:
ulib | Universal Library abstracting general use things (config files, webserver, layer objects etc) |
ulibdb | a libary to query MySQL Postgres and Redis databases |
ulibasn1 | a library to make it easier to deal with ASN1 encoded objects |
ulibsmpp | a library to deal with the SMPP protocol |
ulibsctp | a library to extend ulib with SCTP specific sockets |
ulibm2pa | a library implementing the SS7 M2PA (MTP2 over IP) protocol |
ulibmtp3 | a library implementing the SS7 MTP3 and M3UA protocols |
ulibgt | a library implementing SS7 SCCP Global Title handling |
ulibsccp | a library implementing the SS7 SCCP protocol |
ulibtcap | a library implementing the SS7 TCAP protocol |
ulibgsmmap | a library implementing the SS7 GSM-MAP protocol |
ulibsms | a library implementing SMS encoding/decoding functions |
ulibss7config | a library implementing config file, api and basic stuff to tie an ss7 app together |
ulibdiameter | a library implementing Diameter encoding/decoding functions |
ulibpcap | a library allowing to read/write ss7 packets using pcap files |
ulibcamel | a library dealing with CAMEL files (still incomplete) |
ulibisup | a library dealing with ISUP files (still incomplete) |
Related stuff
ulibdns | a library doing DNS functionality |
schrittmacher | a system daemon for hot/standby configurations |
schrittmacherclient | a library for applications to implement a hot/standby mechanism |
operatordb | a library to translate MNC/MCC into operator names |
umscript | scripting engine used in some ss7 products |
pointcode | command line tool 'pc' to convert pointcodes in different formats |
hlrclient | client for hlr lookups |
libiconv-1.17 | library to convert character sets |
libdispatch | libdispatch (aka GrandCentral Dispatch) |
gnustep build scripts | The GNUSTEP build scripts |
gnustep make | The GNUSTEP make environment |
libobjc2 | The ObjectiveC 2.0 runtime |
gnustep-base | The GNUSTEP base library (Foundation) |
gnustep-corebase | THE GUSTEP corebase library (CoreFoundation) |
gnustep-gui | The GNUSTEP libraries for GUI (AppKit, not used by universalss7) |
gnustep-back | The GNUSTEP libraries for GUI backend (driver for X11, not used by universalss7) |
The GNUSTEP libraries are compiled for /usr/local/ and are included in the repositories for easy installation. The gnustep versions which come with Debian are outdated and do not work with modern ARC and libobjc2 implementations and should not be installed.
wget -O - http://repo.universalss7.ch/debian/key.asc | apt-key add -
echo "deb http://repo.universalss7.ch/debian/ buster universalss7" > /etc/apt/sources.list.d/universalss7.list
echo "deb http://repo.universalss7.ch/debian/ bullseye universalss7" > /etc/apt/sources.list.d/universalss7.list
echo "deb http://repo.universalss7.ch/ubuntu/ jammy universalss7" > /etc/apt/sources.list.d/universalss7.list
apt-get update apt-get install universalss7 apt-get install universalss7-dev
The arm64 architecture runs on Raspberry Pi4, a arm64 VM running Debian under Apple M1 or powerful ARM servers such as these. Main development currently occurs on Debian 10 and amd64 architecture while Debian 11 and arm64 are starting to be frequently updated.
To build UniversalSS7 under Linux follow these instructions to build gnustep and ulib with Objective C ARC support. Especially to get libobjc2 correctly for support with arc is a bit tricky at times so I would recommend to use the prebuild packages for gnustep and libobjc downloadable from the release above. The ones in the official debian repository do not support ARC and thus will not work. The ones in our universalss7 repository of course will. most important tip: use clang 9 on Debian10 and use the gold linker on Debian 10 and 11 (symlink /usr/bin/ld -> /usr/bin/ld.gold)
Then checkout all repositories above in the order above and do
on each of them. if you want debugging enabled, use./configure make sudo make install ldconfig
instead../configure --enable-debug
To build Universal SS7 under macOS, make sure /LibraryFrameworks can be written to from your user (it installs there by default).
Furthermore load the SCTP Kernel driver for macOS Sierra.
Support for SCTP is no longer available on MacOS X as Apple has depreciated kernel extensions. This prohibits SCTP from being used under MacOS. As essential SS7 protocols such as M3UA, M2PA and
even Diameter are run on top of SCTP, you are in dead water here. You can run Diameter over TCP but you can not run M2PA or M3UA over TCP. SCTP can be run in userspace over UDP encapsulation
but if the remote end is a mobile infrastructure, it will not support it. I currently do most of the development using Xcode on a Mac so I'm very dissapointed about the move of Apple to
drop kernel extensions and give no viable options to run SCTP on a Mac.
You can run UniversalSS7 on a Apple computer with a M1 or M2 chip however by running a VM with Debian under VMWare Fusion, Parallels or < href="https://docs.getutm.app/installation/macos/">UTM
Then checkout all repositories above in the order above and do
Alternatively you can open the xcode project file and build it from there (make for macOS in this case simply calls xcodebuild)../configure make sudo make install
The Release-1.8.0 branch is stable for use as SS7 endpoint.
Release 1.8.0's new features: