handover during LCLS directly between BTSs
So far, we have implemented LCLS on the BSC level, i.e. in case of a local switch, the RTP stream still goes from BTS A to the BSC-colocated MGW and from there to BTS B. This removes the RTP/voice from A, but not from the Abis side.
In deployments where there are e.g. 3 BTS (A,B,C) at one site, back-hauled via Abis to a BSC in a remote data center, we want the voice to go directly between BTS A and BTS B, without going to the MGW at the BSC.
This basically means that we close the loop not inside our osmo-mgw via MGCP, but that we close it between the two involved BTSs.
Even in a single-remote-BTS use case, this helps in cases where both calling and called subscribers are attached to that same BTS.
- add TTCN tests for RSL MDCX
- add RSL MDCX to BSC LCLS
- handle LCLS-MGW in handover
- handle LCLS-BTS in handover
- add TCCN test handover with LCLS-MGW
- add TCCN test handover with LCLS-BTS
LCLS: move MGCP MDCX into separate function
Move code using MDCX via MGCP into separate function to make adding
alternative MDCX variants easier.
LCLS: expand logging to print the name of the mode in use
LCLS: explicitly check for mode before closing the loop
LCLS: move mode check into separate function
Before closing or breaking the loop in LCLS we do preliminary
checks. To facilitate adding new LCLS modes it's restructured as
- move check into dedicated static function
- explicitly check for MGW mode in endpoint check
- check for mode mismatch
LCLS: make config and control redable in 'sh conns'
Display LCLS config and control state as text in "show conns" command.
RSL: restructure MDCX functions
In preparation for upcoming LCLS changes we have to split IPA RSL MDCX
generation into separate function with the ability to set destination
explicitly instead of just using the value from lchan which will be used
in follow-up patches.
LCLS: add bts-loop variant
Add LCLS variant where the loop is closed on BTS level instead of
MGW. The main difference is the handling of connection-related
messages (we use IPA RSL instead of MGCP), the configuration and
correlation logic remains the same.
LCLS: update parameter representation
- use osmo_lcls struct from libosmocore
- use enum values instead of magic numbers
#4 Updated by msuraev over 2 years ago
On a related note: right now TTCN-3 TC_lcls_connect_clear() fails due to commit 6fe125294b219a519c77f7140de26870d17bf40a in OsmoBSC. Reverting just this commit doesn't fix it though so it's also affected by some changes in related commits as well.
The failing part in TC_lcls_connect_clear is probably
CONN_A.receive(tr_RSL_DATA_REQ(?, tr_RslLinkID_DCCH(0), l3_rr_chan_rel)) due to missing "DATA REQuest (DTAP) (RR) Channel Release" packet - see difference in .pcap from https://jenkins.osmocom.org/jenkins/view/TTCN3/job/ttcn3-bsc-test/369/ and https://jenkins.osmocom.org/jenkins/view/TTCN3/job/ttcn3-bsc-test/370/
#8 Updated by msuraev over 2 years ago
- Checklist item add TTCN tests for RSL MDCX added
- Checklist item add RSL MDCX to BSC LCLS added
- Checklist item handle LCLS-MGW in handover added
- Checklist item handle LCLS-BTS in handover added
- Checklist item add TCCN test handover with LCLS-MGW added
- Checklist item add TCCN test handover with LCLS-BTS added
- % Done changed from 30 to 20
#12 Updated by msuraev about 2 years ago
- % Done changed from 30 to 40
- LCLS break works as intended (needs corresponding MSC code)
- both variants work fine when closing the loop between phones connected to different BTS (using osmocom-bb "stick" feature to use explicit ARFCN)
Remaining patches: libosmocore 7, OsmoBSC 4.
#18 Updated by msuraev about 2 years ago
- Status changed from In Progress to Stalled
- % Done changed from 40 to 50
#22 Updated by dexter over 1 year ago
We have inspected the code now and the implementation looks more complete as expected. Even TTCN3 tests seem to be there:
I have looked at the wireshark trace of TC_lcls_bts_gcr_bway_connect and it looks good. However I will give this also a try in a lab setup to see if it really works.
#24 Updated by dexter over 1 year ago
- File lcls_bts_loop_experiment_with_osmo-bsc_and_osmo_msc_08012020.pcapng lcls_bts_loop_experiment_with_osmo-bsc_and_osmo_msc_08012020.pcapng added
I had a look at the osmo-msc code. Apparently we do not have support for LCLS there yet. At least during assignment the GCR and the other LCLS related info is not generated. I have added some hardcoded values here and then it works (see attached trace). I do not know if it is enough to set some static configuration for LCLS via VTY, at least the Node ID would be static. The GCR is probably more difficult. The MSC would need to correlate the incoming calls and assign equal GCRs to each pair of calls.