Project

General

Profile

Feature #2487

MSC side of LCLS (local call local switching) as per the 3GPP specs

Added by laforge over 3 years ago. Updated 27 days ago.

Status:
Stalled
Priority:
Normal
Assignee:
Category:
-
Start date:
09/03/2017
Due date:
% Done:

30%

Resolution:
Spec Reference:
Tags:

Description

3GPP LCLS allows the media stream of a call to remain locally at the BTS, if both legs of a call are within the same BTS. We should implement this in OsmoMSC, if not only to test the OsmoBSC side which we want to implement, too.


Checklist

  • LCLS implementation in OsmoMSC
  • test suite for LCLS in MSC
  • jenkins integration of test suite

Related issues

Related to OsmoBSC - Feature #1602: BSC side of LCLS (local call local switching) as per the 3GPP specsResolved02/23/2016

Related to OsmoBSC - Feature #3659: handover during LCLS directly between BTSsStalled10/17/2018

Related to Cellular Network Infrastructure - Feature #3691: Implement GCR parsing in wiresharkResolved11/13/2018

Related to OsmoMSC - Feature #3618: Inter-MSC hand-over supportResolved10/02/2018

Related to OsmoMSC - Bug #3294: transaction: refactor callref allocationStalled05/26/2018

History

#1 Updated by laforge over 3 years ago

  • Related to Feature #1602: BSC side of LCLS (local call local switching) as per the 3GPP specs added

#2 Updated by laforge over 3 years ago

  • Checklist item LCLS implementation in OsmoMSC added
  • Checklist item test suite for LCLS in MSC added
  • Checklist item jenkins integration of test suite added

#3 Updated by laforge about 3 years ago

  • Target version set to 3GPP LCLS

#4 Updated by laforge almost 3 years ago

  • Assignee set to sysmocom

#5 Updated by laforge over 2 years ago

  • Tags set to LCLS

#6 Updated by msuraev about 2 years ago

  • Related to Feature #3659: handover during LCLS directly between BTSs added

#7 Updated by msuraev about 2 years ago

Shall I take this as well? Seems like next logical step to be able to test LCLS with actual hw.

#8 Updated by laforge about 2 years ago

On Fri, Nov 02, 2018 at 02:39:15PM +0000, msuraev [REDMINE] wrote:

Shall I take this as well? Seems like next logical step to be able to test LCLS with actual hw.

yes, please. Thanks!

#9 Updated by msuraev about 2 years ago

  • Status changed from New to In Progress
  • Assignee changed from sysmocom to msuraev

#10 Updated by msuraev about 2 years ago

  • Related to Feature #3691: Implement GCR parsing in wireshark added

#11 Updated by msuraev about 2 years ago

  • % Done changed from 0 to 10

Corresponding libosmocore changes are mostly merged, there're 4 more pending patches for OsmoMSC.
N. B: current implementation is only suitable for testing due to issues with CallRef handling by transactions. This part is going to be heavily changed by intra-BSC handover work.

#12 Updated by msuraev about 2 years ago

#13 Updated by msuraev almost 2 years ago

  • Related to Bug #3294: transaction: refactor callref allocation added

#14 Updated by laforge almost 2 years ago

#15 Updated by msuraev almost 2 years ago

  • Status changed from In Progress to Stalled
  • % Done changed from 10 to 20

Experimental implementation available in:
https://gerrit.osmocom.org/c/osmo-msc/+/13421/
https://gerrit.osmocom.org/c/osmo-msc/+/11746/
https://gerrit.osmocom.org/c/osmo-msc/+/13422/
It's already useful enough for testing BSC-side but needs more work to properly handle HO and correctly construct GCR for all interfaces/transaction variants.

#16 Updated by laforge over 1 year ago

  • Assignee changed from msuraev to sysmocom

#17 Updated by laforge over 1 year ago

  • Assignee changed from sysmocom to Hoernchen

#18 Updated by laforge over 1 year ago

  • Assignee deleted (Hoernchen)

#19 Updated by laforge 2 months ago

  • Assignee set to keith

assigning to keith, who wanted to have a look at this.

I think there's nothing fundamentally wrong with the three linked patches. There were smaller review issues about coding style, and the fact that the VTY command should not be introdcued first in a separate patch (without any logic). So if they were rebased on top of master, and they can be shown to work with OsmoBSC, they are good to go.

#20 Updated by keith 2 months ago

  • % Done changed from 20 to 30

(Things changed so much that it is more like a rewrite than a rebase....)

Some progress:
I have submitted some patchsets to the above gerrit commits, needs clean-up but 'works', - confirmed seeing LCLS params on the SCTP in wireshark* and also received by the BSC

but, noted in the BSC log:

20201115042002382 DLCLS DEBUG LCLS[0x55ff7b7612e0]{NO_LCLS}: Allocated (fsm.c:461)                                                                                               
20201115042002382 DLCLS DEBUG LCLS[0x55ff7b7612e0]{NO_LCLS}: is child of SUBSCR_CONN[0x55ff7b75bd20] (fsm.c:491)                                                                 
20201115042005209 DLCLS DEBUG LCLS[0x55ff7b7612e0]{NO_LCLS}: Received Event UPDATE_CFG_CSC (osmo_bsc_lcls.c:226)                                                                 
20201115042005209 DLCLS DEBUG LCLS[0x55ff7b7612e0]{NO_LCLS}: LCLS update Config Not available -> Connect both-way (osmo_bsc_lcls.c:180)                                          
20201115042005209 DLCLS DEBUG LCLS[0x55ff7b7612e0]{NO_LCLS}: LCLS update Control Not available -> Connect (osmo_bsc_lcls.c:188)                                                  
20201115042005911 DLCLS DEBUG LCLS[0x55ff7b7612e0]{NO_LCLS}: Received Event APPLY_CFG_CSC (osmo_bsc_lcls.c:232)                                                                  
20201115042005911 DLCLS DEBUG LCLS[0x55ff7b7612e0]{NO_LCLS}: Unsuccessful correlation (osmo_bsc_lcls.c:149)                                                                      
20201115042005911 DLCLS DEBUG LCLS[0x55ff7b7612e0]{NO_LCLS}: state_chg to NOT_POSSIBLE_LS (osmo_bsc_lcls.c:397)        

BSC shows during call:

OsmoBSC# show conns
Active subscriber connections:
conn ID=134, MSC=0, hodec2_fail=0, mgw_ep=rtpbridge/9@mgw
 LCLS GCR: 0362f2240200b9058000000065
 LCLS Config: Connect both-way, LCLS Control: Connect, LCLS BSS Status: NOT_POSSIBLE_LS
BTS 0, TRX 0, Timeslot 1, Lchan 0: Type TCH_H
  Connection: 1, State: ESTABLISHED
  BS Power: 4294967295 dBm, MS Power: 5 dBm
  Channel Mode / Codec: SPEECH_AMR
  Subscriber:
    IMSI: 262420000000333
    Use count: 1 (conn)
  Bound IP: 172.16.0.15 Port 16486 RTP_TYPE2=0 CONN_ID=0
  Conn. IP: 172.16.0.1 Port 4370 RTP_TYPE=98 SPEECH_MODE=0x05
  Measurement Report:
    Flags:
    MS Timing Offset: 0
    L1 MS Power: 5 dBm, Timing Advance: 0
    RXL-FULL-dl:  -84 dBm, RXL-SUB-dl:  -84 dBm RXQ-FULL-dl: 4, RXQ-SUB-dl: 3
    RXL-FULL-ul:  -55 dBm, RXL-SUB-ul:  -55 dBm RXQ-FULL-ul: 0, RXQ-SUB-ul: 0
conn ID=135, MSC=0, hodec2_fail=0, mgw_ep=rtpbridge/b@mgw
 LCLS GCR: 0362f2240200b9050000000065
 LCLS Config: Connect both-way, LCLS Control: Connect, LCLS BSS Status: NOT_POSSIBLE_LS
BTS 0, TRX 0, Timeslot 1, Lchan 1: Type TCH_H
  Connection: 1, State: ESTABLISHED
  BS Power: 4294967295 dBm, MS Power: 5 dBm
  Channel Mode / Codec: SPEECH_AMR
  Subscriber:
    IMSI: 262423203000396
    Use count: 1 (conn)
  Bound IP: 172.16.0.15 Port 16488 RTP_TYPE2=0 CONN_ID=0
  Conn. IP: 172.16.0.1 Port 4378 RTP_TYPE=98 SPEECH_MODE=0x05
  Measurement Report:
    Flags:
    MS Timing Offset: -1
    L1 MS Power: 5 dBm, Timing Advance: 0
    RXL-FULL-dl:  -65 dBm, RXL-SUB-dl:  -65 dBm RXQ-FULL-dl: 0, RXQ-SUB-dl: 0
    RXL-FULL-ul:  -47 dBm, RXL-SUB-ul:  -47 dBm RXQ-FULL-ul: 0, RXQ-SUB-ul: 0
OsmoBSC#

*my wireshark does not decode the GCR

#21 Updated by keith 2 months ago

Hmm, the call refs are in fact different.. I did not spot it at a glance.

#22 Updated by keith 2 months ago

#23 Updated by keith 27 days ago

https://gerrit.osmocom.org/c/osmo-msc/+/13421/
and
https://gerrit.osmocom.org/c/osmo-msc/+/13422/

are now ready for review.

I did not deal with what Max points out in #2487#note-15,

Folowing #2487#note-19, What I have done is to "forward port" and rebase Max's patches with minimal amount of change to the orginal work, opening the way for further improvements, including responding correctly to external MNCC commands from the SIP Agent on the other side of that. The SIP agent has to be able to put itself in and take itself out of the audio path during a call.

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)