Project

General

Profile

Actions

Feature #2487

open

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

Added by laforge over 6 years ago. Updated over 1 year 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 specsResolveddexter02/23/2016

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

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

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

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

Actions
Related to OsmoBSC - Bug #5712: LCLS FSM; Not possible to get out from NO_LONGER_LSNewdexter10/15/2022

Actions
Blocked by osmo-sip-connector - Feature #5164: Implement Serialised Global Call Reference as "X-" HeaderClosedkeith06/01/2021

Actions
Actions #1

Updated by laforge over 6 years ago

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

Updated by laforge over 6 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
Actions #3

Updated by laforge over 6 years ago

  • Target version set to 3GPP LCLS
Actions #4

Updated by laforge about 6 years ago

  • Assignee set to 4368
Actions #5

Updated by laforge almost 6 years ago

  • Tags set to LCLS
Actions #6

Updated by msuraev over 5 years ago

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

Updated by msuraev over 5 years ago

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

Actions #8

Updated by laforge over 5 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!

Actions #9

Updated by msuraev over 5 years ago

  • Status changed from New to In Progress
  • Assignee changed from 4368 to msuraev
Actions #10

Updated by msuraev over 5 years ago

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

Updated by msuraev about 5 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.

Actions #12

Updated by msuraev about 5 years ago

Actions #13

Updated by msuraev about 5 years ago

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

Updated by laforge about 5 years ago

Actions #15

Updated by msuraev almost 5 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.

Actions #16

Updated by laforge almost 5 years ago

  • Assignee changed from msuraev to 4368
Actions #17

Updated by laforge almost 5 years ago

  • Assignee changed from 4368 to Hoernchen
Actions #18

Updated by laforge over 4 years ago

  • Assignee deleted (Hoernchen)
Actions #19

Updated by laforge over 3 years 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.

Actions #20

Updated by keith over 3 years 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

Actions #21

Updated by keith over 3 years ago

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

Actions #22

Updated by keith over 3 years ago

Actions #23

Updated by keith about 3 years 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.

Actions #24

Updated by laforge almost 3 years ago

For the record: The latest patch related to this is https://gerrit.osmocom.org/c/osmo-msc/+/24236 which is still marked as work-in-progress.

Actions #25

Updated by keith almost 3 years ago

  • Blocked by Feature #5164: Implement Serialised Global Call Reference as "X-" Header added
Actions #26

Updated by keith over 2 years ago

  • Status changed from Stalled to In Progress
Actions #27

Updated by laforge almost 2 years ago

  • Status changed from In Progress to Stalled
Actions #28

Updated by keith over 1 year ago

I did some further work in https://gerrit.osmocom.org/plugins/gitiles/osmo-msc/+/refs/heads/keith/LCLS_SIP

Some of which could become candidates for merge to master, probably the MSC needs a FSM to process confirmations/information from the BSS on LCLS state.

Actions #29

Updated by keith over 1 year ago

  • Related to Bug #5712: LCLS FSM; Not possible to get out from NO_LONGER_LS added
Actions

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)