Full M3UA SIGTRAN variant in libosmo-sccp
The M3UA+SCCP variant of SIGTRAN is used for spec-compliant AoIP and IuCS/IuPS interfaces. Osmocom libosmo-sccp currently only implements the SUA variant, and thus is not fully compatible with the lower protocol stacking of those standard interfaces.
#6 Updated by laforge about 1 year ago
- % Done changed from 0 to 50
see gerrit patches https://gerrit.osmocom.org/#/c/1803/ till https://gerrit.osmocom.org/#/c/1811/ for some preparatory work. The actual M3UA and SCCP code is following up to that, currently in a
laforge/sigtran branch of libosmo-sccp.git (see http://git.osmocom.org/libosmo-sccp/log/?h=laforge/sigtran)
- use osmo_prim to formally implement the SAP specified between protocol layers, e.g. MTP-SAP between M3UA and SCCP, or SCU-SAP between SCCP User and application
- use osmo_fsm to implement the state machines, e.g. ASP and AS FSM of M3UA
- use osmo_fsm to implement SCCP SCOC (connection oriented) per-connection state machine
- migrate existing SUA code to new SCOC FSM
- use parsed SUA (struct xua_msg) representation by default in all code, transcode from SCCP wire format to this for incoming messages, and from xua_msg to SCCP on outgoign messages. This helps keep the code more simple.
- untested but fairly complete osmo_fsm for SCOC
- definition for MTP SAP
- xUA ASP and AS osmo_fsm implementation
- SCCP <-> SUA transcoding with preliminary unit tests
More work is needed to pull the strings together and fix missing gaps.
- % Done changed from 50 to 80
I've been making significant progress over the last weeks here. The current status is very promising.
- M3UA is supported for both ASP and SG role
- point-code routing is implemented
- SCCP connectionless and connection-oriented is implemented
- Connection Oriented FSM uses strict state machine based on osmo_fsm
- MTP-USER and SCCP-USER SAP has been formalized/specified
- ASP and AS FSMs implemented
- Example server and client can exchange SCCP user data as expected
I've lately been looking into correct handling of the various error paths, T(ias) expiration, ...What's missing so far:
- routing key management
- SCCP Global Title routing
- SCCP Global Title Translation
- more unit tests
- T(r) in ASP and associated queueing of signaling messages
- SCCPlite support
- Status changed from New to In Progress
- % Done changed from 80 to 90
See gerrit review Id 2196 through 2220, the patchset has been published and is undergoing review.
The implementation is much more complete than required at first sight for this ticket/topic, but I wanted to visit this topic once and not have three more generations of SCCP or SIGTRAN related code.
M3UA code is ready for merge.
Several dozen of patches in Gerrit for review currently about this.
I found https://github.com/nplab/m3ua-testtool implementing the ETSI M3UA test suite from http://www.etsi.org/deliver/etsi_ts/102300_102399/102381/01.01.01_60/ts_102381v010101p.pdf and ran all relevant tests against my M3UA code in libosmo-sigtran: Almost all "PASS" now.