<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>LaForge's home page (Posts about ss7)</title><link>https://laforge.gnumonks.org/</link><description></description><atom:link href="https://laforge.gnumonks.org/blog/tags/ss7.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Thu, 24 Oct 2024 20:08:49 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Things you find when using SCTP on Linux</title><link>https://laforge.gnumonks.org/blog/20170417-linux-sctp-dry-events/</link><dc:creator>Harald Welte</dc:creator><description>&lt;section id="observations-on-sctp-and-linux"&gt;
&lt;h2&gt;Observations on SCTP and Linux&lt;/h2&gt;
&lt;p&gt;When I was still doing Linux kernel work with netfilter/iptables in the
early 2000's, I was somebody who actually regularly had a look at the
new RFCs that came out.  So I saw the SCTP RFCs, SIGTRAN RFCs, SIP and
RTP, etc. all released during those years.   I was quite happy to see
that for new protocols like SCTP and later DCCP, Linux quickly received
a mainline implementation.&lt;/p&gt;
&lt;p&gt;Now most people won't have used SCTP so far, but it is a protocol used
as transport layer in a lot of telecom protocols for more than a decade
now.  Virtually all protocols that have traditionally been spoken over
time-division multiplex E1/T1 links have been migrated over to SCTP
based protocol stackings.&lt;/p&gt;
&lt;p&gt;Working on various Open Source telecom related projects, i of course
come into contact with SCTP every so often.  Particularly some years
back when implementing the Erlang SIGTAN code in &lt;a class="reference external" href="http://git.osmocom.org/erlang/osmo_ss7/tree/src"&gt;erlang/osmo_ss7&lt;/a&gt; and most recently
now with the introduction of libosmo-sigtran with its OsmoSTP, both part
of the &lt;a class="reference external" href="http://git.osmocom.org/libosmo-sccp/"&gt;libosmo-sccp repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I've also hard to work with various proprietary telecom equipment over
the years.  Whether that's some eNodeB hardware from a large brand
telecom supplier,  or whether it's a MSC of some other vendor.  And they
all had one thing in common: Nobody seemed to use the Linux kernel SCTP
code.  They all used proprietary implementations in userspace, using RAW
sockets on the kernel interface.&lt;/p&gt;
&lt;p&gt;I always found this quite odd, knowing that this is the route that you
have to take on proprietary OSs without native SCTP support, such as
Windows.  But on Linux? Why?  Based on rumors, people find the Linux
SCTP implementation not mature enough, but hard evidence is hard to come
by.&lt;/p&gt;
&lt;p&gt;As much as it pains me to say this, the kind of Linux SCTP bugs I have
seen within the scope of our work on Osmocom seem to hint that there is
at least some truth to this (see e.g.
&lt;a class="reference external" href="https://bugzilla.redhat.com/show_bug.cgi?id=1308360"&gt;https://bugzilla.redhat.com/show_bug.cgi?id=1308360&lt;/a&gt; or
&lt;a class="reference external" href="https://bugzilla.redhat.com/show_bug.cgi?id=1308362"&gt;https://bugzilla.redhat.com/show_bug.cgi?id=1308362&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Sure, software always has bugs and will have bugs.  But we at Osmocom
are 10-15 years "late" with our implementations of higher-layer
protocols compared to what the mainstream telecom industry does.  So if
we find something, and we find it even already during R&amp;amp;D of some
userspace code, not even under load or in production, then that seems a
bit unsettling.&lt;/p&gt;
&lt;p&gt;One would have expected, with all their market power and plenty of
Linux-based devices in the telecom sphere, why did none of those large
telecom suppliers invest in improving the mainline Linux SCTP code?  I
mean, they all use UDP and TCP of the kernel, so it works for most of
the other network protocols in the kernel, but why not for SCTP?  I
guess it comes back to the fundamental lack of understanding how open
source development works.  That it is something that the given
industry/user base must invest in jointly.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="the-leatest-discovered-bug"&gt;
&lt;h2&gt;The leatest discovered bug&lt;/h2&gt;
&lt;p&gt;During the last months, I have been implementing SCCP, SUA, M3UA and
OsmoSTP (A Signal Transfer Point). They were required for an &lt;a class="reference external" href="http://osmocom.org/versions/121"&gt;effort to
add 3GPP compliant A-over-IP to OsmoBSC and OsmoMSC&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For quite some time I was seeing some erratic behavior when at some
point the STP would not receive/process a given message sent by one of
the clients (ASPs) connected.  I tried to ignore the problem initially
until the code matured more and more, but the problems remained.&lt;/p&gt;
&lt;p&gt;It became even more obvious when using &lt;a class="reference external" href="https://github.com/nplab/m3ua-testtool"&gt;Michael Tuexen's m3ua-testtool&lt;/a&gt;,
where sometimes even the most basic test cases consisting of sending +
receiving a single pair of messages like ASPUP -&amp;gt; ASPUP_ACK was failing.
And when the test case was re-tried, the problem often disappeared.&lt;/p&gt;
&lt;p&gt;Also, whenever I tried to observe what was happening by meas of strace,
the problem would disappear completely and never re-appear until strace
was detached.&lt;/p&gt;
&lt;p&gt;Of course, given that I've written several thousands of lines of new
code, it was clear to me that the bug must be in my code.  Yesterday I
was finally prepare to accept that it might actually be a Linux SCTP
bug.  Not being able to reproduce that problem on a FreeBSD VM also
pointed clearly into this direction.&lt;/p&gt;
&lt;p&gt;Now I could simply have collected some information and filed a bug
report (which some kernel hackers at RedHat have thankfully invited me
to do!), but I thought my use case was too complex.  You would have to
compile a dozen of different Osmocom libraries, configure the STP, run
the scheme-language m3ua-testtool in guile, etc.  -  I guess nobody
would have bothered to go that far.&lt;/p&gt;
&lt;p&gt;So today I tried to implement a test case that reproduced the problem in
plain C, without any external dependencies.  And for many hours, I
couldn't make the bug to show up.  I tried to be as close as possible to
what was happening in OsmoSTP: I used non-blocking mode on client and
server, used the SCTP_NODELAY socket option, used the sctp_rcvmsg()
library wrapper to receive events, but the bug was not reproducible.&lt;/p&gt;
&lt;p&gt;Some hours later, it became clear that there was one setsockopt() in
OsmoSTP (actually, libosmo-netif) which enabled all existing SCTP
events.  I did this at the time to make sure OsmoSTP has the maximum
insight possible into what's happening on the SCTP transport layer, such
as address fail-overs and the like.&lt;/p&gt;
&lt;p&gt;As it turned out, adding that setsockopt for SCTP_FLAGS to my test code
made the problem reproducible.  After playing around which of the flags,
it seems that enabling the SENDER_DRY_EVENT flag makes the bug appear.&lt;/p&gt;
&lt;p&gt;You can find my detailed report about this issue in
&lt;a class="reference external" href="https://bugzilla.redhat.com/show_bug.cgi?id=1442784"&gt;https://bugzilla.redhat.com/show_bug.cgi?id=1442784&lt;/a&gt; and a program to
reproduce the issue at
&lt;a class="reference external" href="http://people.osmocom.org/laforge/sctp-nonblock/sctp-dry-event.c"&gt;http://people.osmocom.org/laforge/sctp-nonblock/sctp-dry-event.c&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Inside the Osmocom world, luckily we can live without the
SENDER_DRY_EVENT and a corresponding work-around has been submitted and
merged as &lt;a class="reference external" href="https://gerrit.osmocom.org/#/c/2386/"&gt;https://gerrit.osmocom.org/#/c/2386/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;With that work-around in place, suddenly all the &lt;a class="reference external" href="https://github.com/nplab/m3ua-testtool"&gt;m3ua-testtool&lt;/a&gt; and &lt;a class="reference external" href="https://github.com/nplab/m3ua-testtool"&gt;sua-testtool&lt;/a&gt; test cases are reliably green
(PASSED) and OsmoSTP works more smoothly, too.&lt;/p&gt;
&lt;/section&gt;
&lt;section id="what-do-we-learn-from-this"&gt;
&lt;h2&gt;What do we learn from this?&lt;/h2&gt;
&lt;p&gt;Free Software in the Telecom sphere is getting too little attention.
This is true even those small portions of telecom relevant protocols
that ended up in the kernel like SCTP or more recently the GTP module I
co-authored.  They are getting too little attention in development, even
more lack of attention in maintenance, and people seem to focus more on
not using it, rather than fixing and maintaining what is there.&lt;/p&gt;
&lt;p&gt;It makes me really sad to see this.  Telecoms is such a massive
industry, with billions upon billions of revenue for the classic telecom
equipment vendors.  Surely, they would be able to co-invest in some
basic infrastructure like proper and reliable testing / continuous
integration for SCTP.  More recently, we see millions and more millions
of VC cash burned by buzzword-flinging companies doing "NFV" and
"SDN".  But then rather reimplement network stacks in userspace than to
fix, complete and test those little telecom infrastructure components
which we have so far, like the SCTP protocol :(&lt;/p&gt;
&lt;p&gt;Where are the contributions to open source telecom parts from Ericsson,
Nokia (former NSN), Huawei and the like?  I'm not even dreaming about
the actual applications / network elements, but merely the maintenance
of something as basic as SCTP.  To be fair, Motorola was involved early
on in the Linux SCTP code, and Huawei contributed a long series of fixes
in 2013/2014.  But that's not the kind of long-term maintenance
contribution that one would normally expect from the primary interest
group in SCTP.&lt;/p&gt;
&lt;p&gt;Finally, let me thank to the Linux SCTP maintainers.  I'm not
complaining about them! They're doing a great job, given the arcane code
base and the fact that they are not working for a company that has
SCTP based products as their core business.  I'm sure the would love
more support and contributions from the Telecom world, too.&lt;/p&gt;
&lt;/section&gt;</description><category>osmocom</category><category>sigtran</category><category>ss7</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20170417-linux-sctp-dry-events/</guid><pubDate>Sun, 16 Apr 2017 16:00:00 GMT</pubDate></item><item><title>SIGTRAN/SS7 stack in libosmo-sigtran merged to master</title><link>https://laforge.gnumonks.org/blog/20170410-libosmo-sigtran/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;As I blogged in &lt;a class="reference external" href="https://laforge.gnumonks.org/blog/20170212-libosmo_sigtran/"&gt;my blog post in Fabruary&lt;/a&gt;, I was working towards a more
fully-featured SIGTRAN stack in the Osmocom (C-language) universe.&lt;/p&gt;
&lt;p&gt;The trigger for this is the support of 3GPP compliant AoIP (with a
BSSAP/SCCP/M3UA/SCTP protocol stacking), but it is of much more general
nature.&lt;/p&gt;
&lt;p&gt;The code has finally matured in my development branch(es) and is now
ready for mainline inclusion.  It's a series of &lt;a class="reference external" href="https://gerrit.osmocom.org/#/q/project:libosmo-sccp+branch:master+topic:sigtran"&gt;about 77 (!) patches&lt;/a&gt;,
some of which already are the squashed results of many more incremental
development steps.&lt;/p&gt;
&lt;p&gt;The result is as follows:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;General SS7 core functions maintaining links, linksets and routes&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;xUA functionality for the various User Adaptations (currently &lt;a class="reference external" href="https://www.ietf.org/rfc/rfc3868.txt"&gt;SUA&lt;/a&gt; and &lt;a class="reference external" href="https://tools.ietf.org/html/rfc4666"&gt;M3UA&lt;/a&gt; supported)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;MTP User SAP according to &lt;a class="reference external" href="https://www.itu.int/rec/dologin_pub.asp?lang=e&amp;amp;id=T-REC-Q.701-199303-I!!PDF-E&amp;amp;type=items"&gt;ITU-T Q.701&lt;/a&gt; (using osmo_prim)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;management of application servers (AS)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;management of application server processes (ASP)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ASP-SM and ASP-TM state machine for ASP, AS-State Machine (using osmo_fsm)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;server (SG) and client (ASP) side implementation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;validated against ETSI TS 102 381 (by means of Michael Tuexen's &lt;a class="reference external" href="https://github.com/nplab/m3ua-testtool"&gt;m3ua-testtool&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;support for dynamic registration via RKM (routing key management)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;osmo-stp&lt;/span&gt;&lt;/code&gt; binary that can be used as Signal Transfer Point, with
the usual "Cisco-style" command-line interface that all Osmocom
telecom software has.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SCCP implementation, with strong focus on Connection Oriented SCCP (as
that's what the A interface uses).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;osmo_fsm based state machine for SCCP connection, both incoming and
outgoing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SCCP User SAP according to &lt;a class="reference external" href="https://www.itu.int/rec/dologin_pub.asp?lang=e&amp;amp;id=T-REC-Q.711-200103-I!!PDF-E&amp;amp;type=items"&gt;ITU-T Q.711&lt;/a&gt; (osmo_prim based)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Interfaces with underlying SS7 stack via MTP User SAP (osmo_prim based)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for SCCP Class 0 (unit data) and Class 2 (connection oriented)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;All SCCP + SUA Address formats (Global Title, SSN, PC, IPv4 Address)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SCCP and SUA share one implementation, where SCCP messages are
transcoded into SUA before processing, and re-encoded into SCCP after
processing, as needed.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have already done experimental &lt;a class="reference external" href="http://osmocom.org/projects/osmomsc/wiki"&gt;OsmoMSC&lt;/a&gt; and &lt;a class="reference external" href="http://osmocom.org/projects/osmohnbgw/wiki"&gt;OsmoHNB-GW&lt;/a&gt; over to libosmo-sigtran.
They're now all just M3UA clients (ASPs) which connect to &lt;code class="docutils literal"&gt;&lt;span class="pre"&gt;osmo-stp&lt;/span&gt;&lt;/code&gt;
to exchange SCCP messages back and for the between them.&lt;/p&gt;
&lt;p&gt;What's next on the agenda is to&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;finish my incomplete hacks to introduce IPA/SCCPlite as an alternative
to SUA and M3UA (for backwards compatibility)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;port over OsmoBSC to the SCCP User SAP of libosmo-sigtran&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;validate with SSCPlite lower layer against existing SCCPlite MSCs&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;implement BSSAP / A-interface procedures in OsmoMSC, on top of the
SCCP-User SAP.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If those steps are complete, we will have a single OsmoMSC that can talk
both IuCS to the HNB-GW (or RNCs) for 3G/3.5G as well as AoIP towards
OsmoBSC.  We will then have fully SIGTRAN-enabled the full Osmocom
stack, and are all on track to bury the OsmoNITB that was devoid of such
interfaces.&lt;/p&gt;
&lt;p&gt;If any reader is interested in interoperability testing with other
implementations, either on M3UA or on SCCP or even on A or Iu interface
level, please contact me by e-mail.&lt;/p&gt;</description><category>sigtran</category><category>ss7</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20170410-libosmo-sigtran/</guid><pubDate>Sun, 09 Apr 2017 16:00:00 GMT</pubDate></item><item><title>Towards a real SIGTRAN/SS7 stack in libosmo-sigtran</title><link>https://laforge.gnumonks.org/blog/20170212-libosmo_sigtran/</link><dc:creator>Harald Welte</dc:creator><description>&lt;p&gt;In the good old days ever since the late 1980ies - and a surprising
amount even still today - telecom signaling traffic is still carried
over circuit-switched SS7 with its TDM lines as physical layer, and not
an IP/Ethernet based transport.&lt;/p&gt;
&lt;p&gt;When Holger first created OsmoBSC, the BSC-only version of OpenBSC some
7-8 years ago, he needed to implement a minimal subset of SCCP wrapped
in TCP called &lt;em&gt;SCCP Lite&lt;/em&gt;.  This was due to the simple fact that the MSC
to which it should operate implemented this non-standard protocol
stacking that was developed + deployed before the IETF SIGTRAN WG
specified M3UA or SUA came around.  But even after those were specified
in 2004, the 3GPP didn't specify how to carry A over IP in a standard
way until the end of 2008, when a first &lt;a class="reference external" href="http://www.etsi.org/deliver/etsi_tr/143900_143999/143903/08.03.00_60/tr_143903v080300p.pdf"&gt;A interface over IP study&lt;/a&gt;
was released.&lt;/p&gt;
&lt;p&gt;As time passese, more modern MSCs of course still implement classic
circuit-switched SS7, but appear to have dropped SCCPlite in favor of
real AoIP as specified by 3GPP meanwhile.  So it's time to add this to
the osmocom universe and OsmoBSC.&lt;/p&gt;
&lt;p&gt;A couple of years ago (2010-2013) implemented both classic SS7
(MTP2/MTP3/SCCP) as well as SIGTRAN stackings (M2PA/M2UA/M3UA/SUA in
Erlang. The result has been used in some production deployments, but
only with a relatively limited feature set.  Unfortunately, this code
has nto received any contributions in the time since, and I have to say
that as an open source community project, it has failed.  Also, while
Erlang might be fine for core network equipment, running it on a BSC
really is overkill.  Keep in miond that we often run OpenBSC on
really small ARM926EJS based embedded systems, much more resource
constrained than any single smartphone during the late decade.&lt;/p&gt;
&lt;p&gt;In the meantime (2015/2016) we also implemented some minimal SUA support
for interfacing with UMTS femto/small cells via Iuh (see &lt;a class="reference external" href="https://osmocom.org/projects/osmohnbgw/wiki"&gt;OsmoHNBGW&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;So in order to proceed to implement the required
SCCP-over-M3UA-over-SCTP stacking, I originally thought well, take
Holgers old SCCP code, remove it from the IPA multiplex below, stack it
on top of a new M3UA codebase that is copied partially from SUA.&lt;/p&gt;
&lt;p&gt;However, this falls short of the goals in several ways:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;The application shouldn't care whether it runs on top of SUA or SCCP,
it should use a unified interface towards the SCCP Provider.
OsmoHNBGW and the SUA code already introduce such an interface baed on
the SCCP-User-SAP implemented using &lt;a class="reference external" href="http://ftp.osmocom.org/api/latest/libosmocore/core/html/group__prim.html"&gt;Osmocom primitives (osmo_prim)&lt;/a&gt;.
However, the old OsmoBSC/SCCPlite code doesn't have such abstraction.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The code should be modular and reusable for other SIGTRAN stackings
as required in the future&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So I found myself sketching out what needs to be done and I ended up
pretty much with a re-implementation of large parts.  Not quite fun, but
definitely worth it.&lt;/p&gt;
&lt;p&gt;The strategy is:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Implement the SCCP SCOC state machines for connection-oriented SCCP
(of which Iu and A interface are probably the only users) using
&lt;a class="reference external" href="http://ftp.osmocom.org/api/latest/libosmocore/core/html/group__fsm.html"&gt;Osmcoom Finite State Machines (osmo_fsm)&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Migrate the existing SUA code on top of that, maintaining the existing
osmo_prim based &lt;a class="reference external" href="http://git.osmocom.org/libosmo-sccp/tree/include/osmocom/sigtran/sccp_sap.h"&gt;SCCP User SAP&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement &lt;a class="reference external" href="http://git.osmocom.org/libosmo-sccp/commit/?h=laforge/sigtran&amp;amp;id=dc923e49cd3b623dab05f6016a3e935d7c652cb3"&gt;SCCP to SUA and vice-versa message transcoding&lt;/a&gt;
to makes sure the bulk of the code has to deal only with one message
format (parsed SUA).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Introduce a &lt;a class="reference external" href="http://git.osmocom.org/libosmo-sccp/commit/?h=laforge/sigtran&amp;amp;id=21c8a1bcc8f853f3da05d71c4b4fbea6faf53b24"&gt;MTP SAP&lt;/a&gt;
at the lower boundary of the SCCP code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement &lt;a class="reference external" href="http://git.osmocom.org/libosmo-sccp/commit/?h=laforge/sigtran&amp;amp;id=50e931338dfa1ad570734b80cce065ab611929aa"&gt;xUA ASP and AS statemachines using osmo_fsm&lt;/a&gt;
and add ASPTM/ASPSM support to SUA (was missing so far) * Implement&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement M3UA using the xUA ASP and AS FSMs as well as the general
&lt;a class="reference external" href="http://git.osmocom.org/libosmo-sccp/tree/src/xua_msg.c"&gt;xUA message encoder/decoder&lt;/a&gt;,
offering the MTP SAP toward SCCP&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And then finally stack all those bits on top of each other, rendering a
fairly clean and modern implementation that can be used with the IuCS of
the virtually unmodified OsmmoHNBGW, OsmoCSCN and OsmoSGSN for testing.&lt;/p&gt;
&lt;p&gt;Next steps in the direction of the AoIP are:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;Implementation of the MTP-SAP based on the IPA transport&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Binding the new SCCP code on top of that&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Converting OsmoBSC code base to use the SCCP-User-SAP for its
signaling connection&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From that point onwards, OsmoBSC doesn't care anymore whether it
transports the BSSAP/BSSMAP messages of the A interface over
SCCP/IPA/TCP/IP (SCCPlite) SCCP/M3UA/SCTP/IP (3GPP AoIP), or even
something like SUA/SCTP/IP.&lt;/p&gt;
&lt;p&gt;However, the 3GPP AoIP specs (unlike SCCPlite) actually modify the
BSSAP/BSSMAP payload.  Rather than using Circuit Identifier Codes and
then mapping the CICs to UDP ports based on some secret conventions,
they actually encapsulate the IP address and UDP port information for
the RTP streams.  This is of course the cleaner and more flexible
approach, but it means we'll have to do some further changes inside the
actual BSC code to accommodate this.&lt;/p&gt;</description><category>sigtran</category><category>ss7</category><category>telecom</category><guid>https://laforge.gnumonks.org/blog/20170212-libosmo_sigtran/</guid><pubDate>Sun, 12 Feb 2017 16:00:00 GMT</pubDate></item></channel></rss>