Project

General

Profile

Actions

Bug #6259

closed

osmo-sip-connector supports MNCC features that don't exist in osmo-msc

Added by neels 6 months ago. Updated 6 months ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
11/16/2023
Due date:
% Done:

0%

Resolution:
Spec Reference:

Description

I am trying to look at MNCC in OsmoMSC, using MSC_Tests.ttcn, and notice this:

There are fields 'v8' and 'gcr' that exist only in osmo-sip-connector.git's mncc.h.
That cannot possibly work.

Our mncc implementation is binary data over a unix domain socket,
and for unknown reasons (complete madness??) we have the mncc.h protocol definition duplicated all
over the place. One in libosmocore, one in osmo-msc, one in osmo-sip-con...

So we now have osmo-sip-connector implementing some new MNCC fields, but there
is no such thing in osmo-msc. It has been added to osmo-ttcn3-hacks/library/mncc.h,
but not osmo-msc, the only practical meaningful peer for this "protocol".

It looks like this poses compatibility problems -- the GCR has been "slipped in" before the SDP section,
meaning that when sip-con sends a GCR, then osmo-msc will interpret it as SDP data.

This is completely bonkers and please let's fix this.
Any input on this from the author (AFAICT)?

Actions #1

Updated by neels 6 months ago

Possibly related, jolly 's OsmoCC protocol, which could work as a replacement for the MNCC socket.
I assume the effort for this is currently not carried / not going to happen soon.
But for the record, my technical opinion of the osmo MNCC implementation has never been high,
and MNCC has never fully worked as intended, either (codecs).
So if there is any interest in working on MNCC, my personal opinion would be to abandon the current MNCC implementation,
for the benefit of a TCP based protocol (that is visible in wireshark, so that no udtrace is needed to debug).

(btw, https://github.com/laf0rge/udtrace.git also has yet another copy of mncc.h)

Actions #2

Updated by fixeria 6 months ago

Hi Neels,

neels wrote:

I am trying to look at MNCC in OsmoMSC, using MSC_Tests.ttcn, and notice this:

There are fields 'v8' and 'gcr' that exist only in osmo-sip-connector.git's mncc.h.
That cannot possibly work.

as you have probably seen from git blame, I was involved in adding support of the MNCCv8 to osmo-ttcn3-hacks.git. AFAIR, we first merged patches from keith, and then I additionally reworked osmo-msc.git and osmo-ttcn3-hacks.git because we were having problems with backwards compatibility or so. I am now checking the related repositories.

osmo-ttcn3-hacks.git

https://cgit.osmocom.org/osmo-ttcn3-hacks/commit/?id=9ff47805053ab7e7b58aa778d9414f387f337b9d

The 'v8' field you're referring to is actually part of the backwards compatibility shim, see library/mncc.h:

        union {
                struct {
                        char sdp[1024];
                } v7; 
                struct {
                        uint8_t gcr[16];
                        char sdp[1024];
                } v8;
        };

I think we don't need it anymore, since both -latest and -master Osmocom packages should be speaking the new MNCCv8 now.
We had to add this union back then because the -latest was speaking MNCCv7.

osmo-msc.git

https://cgit.osmocom.org/osmo-msc/commit/?id=c6921e5068ba62cde67707fb3c8103919d1e0c0e

osmo-msc is speaking MNCCv8, the 'gcr' array is present in 'struct gsm_mncc'.

osmo-sip-connector.git

https://cgit.osmocom.org/osmo-sip-connector/commit/?id=bd66804082bf813a1f925c6af4df28fd664ac1de

osmo-sip-connector is speaking MNCCv8, the 'gcr' array is present in 'struct gsm_mncc'.

Summary

Unless I am missing something, I don't see any problem here.

Our mncc implementation is binary data over a unix domain socket,
and for unknown reasons (complete madness??) we have the mncc.h protocol definition duplicated all
over the place. One in libosmocore, one in osmo-msc, one in osmo-sip-con...

I fully agree here. It's really sad that we don't have one shared definition for all MNCC speaking projects.
There are some MNCC definitions in libosmocore.git, but I don't know if anyone is using them at all.
I am also not sure if the libosmocore's definition are up to date...

So we now have osmo-sip-connector implementing some new MNCC fields, but there
is no such thing in osmo-msc. It has been added to osmo-ttcn3-hacks/library/mncc.h,
but not osmo-msc, the only practical meaningful peer for this "protocol".

See my notes above. Everything looks good to me.

Actions #3

Updated by neels 6 months ago

  • Status changed from Feedback to Resolved
  • Assignee changed from keith to neels

I thought I had checked that msc's mncc.h has no gcr .. but indeed it has a gcr element.
I must have confused it with the libosmocore mncc.h.
Also adding to the confusion was the shim that is only needed in osmo-sip-connector .. no wait, in osmo-ttcn3-hacks?

It's still all a bit weird, but thanks for explaining!

Actions

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)