Bug #6259
closedosmo-sip-connector supports MNCC features that don't exist in osmo-msc
0%
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)?
Updated by neels 24 days 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)
Updated by fixeria 24 days 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.
Updated by neels 24 days 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!