IPA/SCCPlite not fully supported from new osmo-bsc.git
During the migration from openbsc.git to osmo-bsc.git we introduced libosmo-sigtran as the A interface transport and have validated both M3UA and SUA. Hoewer, the partial implementation of IPA/SCCPlite has never been completed and/or tested.
We should re-introduce this capability in order to deprecate osmo-bsc-sccplite which is built in the old openbsc.git repository.
- Priority changed from Low to High
I've been brainstorming a bit and have come up with the following ideas on how to do this:
SCCPlite in osmo-bsc¶
Compared to the existing 3GPP AoIP code, we need to do (only!):
- skip all AoIP transport address bits,
- instead determine MGCP endpoint from ASSIGNMENT CMD CIC
- skip the MSC-side MGCP connection (+fsm)
- keep the BTS-side MGCP connection to the MGW
- have MSC talk directly to bsc MGW using MGCP
MGCP inside IPA in osmo-bsc¶
The bsc-nat may send MGCP inside the same IPA connection as used for SCCPlite (for NAT traversal):
- IPA-to-UDP proxy for OSMO_EXT_MTCP sub-stream (inside libosmo-sigtran ipa.c)
- extract MGCP command from IPA MGCP sub-stream and re-inject via local UDP socket (emulating call-agent)
- received data on local UDP socket is passed into IPA MGCP sub-stream
- need to use different IP address for call agent than the BSC-internal one dealing with the BTS-side MGCP connection!
CTRL commands via IPA in osmo-bsc¶
the msc/bsc_nat may send CTRL commands inside the same IPA connection that also passes SCCPlite (for NAT traversal)
- IPA-to-IPA proxy for OSMO_EXT_CTRL sub-stream (inside libosmo-siggtran ipa.c)
- extract OSMO_EXT_CTRL from SCCPlite link, put into another IPA link (CTRL to bsc or other local process)
- take OSMO_EXT_CTRL from other local IPA link and put into SCCPlite link
- could alternatively dispatch internally using ctrl_cmd_handle() or the like
TTCN-3 tests for SCCPlite¶
- ASSIGNMENT with CIC
- MGCP CRCX+MDCX for CN side connection
- MGCP via UDP and IPA
This should all exist to some extent in the bsc_nat testsuite
- File ipa.diff added
- Status changed from New to Stalled
- % Done changed from 0 to 10
Using https://gerrit.osmocom.org/7860 and a very trivial patch to osmo-bsc, I can make at least parts of the existing BSC_Tests.ttcn run against osmo-bsc over IPA/SCCPlite on TCP port 5000.
the following tests start to fail with the above-mentioned hack to switch from M3UA to IPA:
pass->FAIL BSC_Tests.TC_ctrl pass->FAIL BSC_Tests.TC_chan_rel_rll_rel_ind pass->FAIL BSC_Tests.TC_chan_rel_conn_fail pass->FAIL BSC_Tests.TC_chan_rel_hard_clear pass->FAIL BSC_Tests.TC_chan_rel_a_reset pass->FAIL BSC_Tests.TC_assignment_cic_only pass->FAIL BSC_Tests.TC_assignment_csd pass->FAIL BSC_Tests.TC_assignment_ctm pass->FAIL BSC_Tests.TC_assignment_fr_a5_0 pass->FAIL BSC_Tests.TC_assignment_fr_a5_1 pass->FAIL BSC_Tests.TC_assignment_fr_a5_1_codec_missing pass->FAIL BSC_Tests.TC_assignment_fr_a5_3 pass->FAIL BSC_Tests.TC_assignment_fr_a5_4 pass->FAIL BSC_Tests.TC_assignment_codec_fr pass->FAIL BSC_Tests.TC_assignment_codec_hr pass->FAIL BSC_Tests.TC_assignment_codec_efr pass->FAIL BSC_Tests.TC_assignment_codec_amr_f pass->FAIL BSC_Tests.TC_assignment_codec_amr_h pass->FAIL BSC_Tests.TC_classmark pass->FAIL BSC_Tests.TC_unsol_ass_fail pass->FAIL BSC_Tests.TC_unsol_ass_compl pass->FAIL BSC_Tests.TC_unsol_ho_fail pass->FAIL BSC_Tests.TC_err_82_short_msg pass->FAIL BSC_Tests.TC_err_84_unknown_msg pass->FAIL BSC_Tests.TC_ho_int
the reasons have not yet been analyzed. The assignment related failures were expected, but many others don't have an obvious explanation yet.