Excellent, thanks for finding this info!
So I should implement N-STATE ind to be sent from our osmo_sua_* implementation to the SUA user:
* Trigger the N-STATE User-in-service from a callback put in osmo_stream_cli_set_connect_cb().
* Trigger the out-of-service from ... ? It seems we're lacking an osmo_stream_* disconnect cb?
In a side note, this is deviating from what is strictly necessary to get paging working. I could just use the RNC Ids from the InitialUE messages for now and postpone the Reset issue.
Another shortcut could be to send the Reset message "directly" from the osmo_stream_cli_set_connect_cb() without composing N-STATE prims.
Would you say that Reset and the SUA N-STATE primitives are important enough to implement those first?
Thanks, ~Neels
On Mon, Apr 04, 2016 at 08:19:39PM +0200, Harald Welte wrote:
Dear Neels and others,
I was confused earlier today.
N-CONNECT is a primitive for a connection oriented SCCP-layer connection. You receive it at each time a UE establishes a connection-oriented SCCP for signalling, and it is what carrie RANAP InitialUE and related messages.
What you are talking about for the RANAP Reset is the establishment of a signalling link (underneath SCCP/SUA), so something like the SCTP connection being established and released underneath.
In the SUA RFC 3868 there are:
- M-SCTP_ESTABLISH confirm ASP confirms to LM that it has established an SCTP association with its peer
- M-SCTP_ESTABLISH indication SUA informs LM that a remote ASP has established an SCTP association.
"LM" is the "Layer Manager". This is not the SCCP user, so no luck here.
However, Q.711 / Q.714 contain a N-STATE.indication, which can be sent to a local SCCP user to inform it about the subsystem status.
FRrom 5.3.6.2:
"The local broadcast procedure provides a mechanism to inform local allowed concerned subsystems of any related SCCP/subsystem/signalling point status information received. [...] SCCP management then informs local allowed concerned SCCP subsystems about the subsystem status by invoking N-STATE indication primitive with "User-out-of-service" information."
So once we loose the signalling link, all SCCP users should receive N-STATE.ind with "User-out-of-service".
When the signalling link is (re-)established, all SCCP users should receive N-STATE.ind with "User-in-service". This should then be the trigger to send a N-UNITDATA.req() with a RANAP Reset inside.
Regards, Harald --
- Harald Welte laforge@gnumonks.org http://laforge.gnumonks.org/
============================================================================ "Privacy in residential applications is a desirable marketing option." (ETSI EN 300 175-7 Ch. A6)