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 5 months 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

Associated revisions

Revision 42bd128f (diff)
Added by max over 2 years ago

LCLS: tighten GCR check

Use stricter checks for received Global Call Reference.

Change-Id: I9690e1b2d14e41471413bb35eb22fa6c4c4d67fd
Related: OS#2487

Revision 961db7c2 (diff)
Added by max over 2 years ago

Update GSM0808_LCLS enums

Add values indicating that LCLS control/config/status value has not been
received yet.

Change-Id: I52dc6a52f5ee043ed2c1625ffecfd495e3c746b1
Related: OS#2487

Revision 73878246 (diff)
Added by max over 2 years ago

LCLS: add 48.008 parameter structure

It's convenient to hold all LCLS-related parameters from 3GPP TS 48.008
in a single structure.

This will be used in follow-up patch handling Assignment Request with
extended parameters as well as corresponding BSC code working with LCLS.

Change-Id: I4b873f9a3c5a5d33b438382971b3d92e40d48d62
Related: OS#2487

Revision 7918f84a (diff)
Added by max over 2 years ago

LCLS, TS 29.205: add GCR routines

Add functions to encode and decode Global Call Reference as per
3GPP TS 29.205 Table B 2.1.9.1 add corresponding tests.

Change-Id: Iee95aa4e5c056645b6cb5667e4a067097d52dfbf
Related: OS#2487

Revision 52074327 (diff)
Added by max over 2 years ago

LCLS: add gsm0808_create_ass2()

It allows setting additional assignment parameters explicitly.

Change-Id: Id89765df3f8c12f55f73f1d7a9d90c8883eb3bba
Related: OS#2487

Revision 17cbe5cd (diff)
Added by max over 2 years ago

Log MDCX ACK for established lchan

Previously LCHAN_RTP_EV_IPACC_MDCX_ACK was not permitted for
LCHAN_RTP_ST_ESTABLISHED state in lchan FSM. However this message is
normal in case of LCLS loop closed via IPA (as opposed to MGCP). Let's
permit this message and log it to make debug output easier to read.

Change-Id: Ib642df799f3405c4d707eb57b2ebc84386d7f03f
Related: OS#2487

Revision 414c8f56 (diff)
Added by max over 2 years ago

LCLS: add status parameter to Assignment Completed message

  • add gsm0808_create_ass_compl2() with additional gsm0808_lcls_status
    parameter and make gsm0808_create_ass_compl() into trivial wrapper
    around it
  • update tests accordingly

Change-Id: I547c6b8707123aa8c1ef636db88908df112d90a4
Related: OS#2487

Revision 09273b7f (diff)
Added by max over 2 years ago

LCLS: constify helper parameters

Related: OS#2487
Change-Id: I341f4ea172432b94e8e96919926a5fb6870c2a30

Revision d1bb0626 (diff)
Added by max over 2 years ago

LCLS: use libosmocore function to add status

  • use gsm0808_create_ass_compl2() to add BSS Status IE to Assignment
    Complete message
  • drop local helpers

Depends-on: (libosmocore) I547c6b8707123aa8c1ef636db88908df112d90a4
Change-Id: I6916928391667cd9c345becf00e7c8561846c295
Related: OS#2487

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 over 3 years ago

  • Target version set to 3GPP LCLS

#4 Updated by laforge about 3 years ago

  • Assignee set to sysmocom

#5 Updated by laforge almost 3 years ago

  • Tags set to LCLS

#6 Updated by msuraev over 2 years ago

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

#7 Updated by msuraev over 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 over 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 over 2 years ago

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

#10 Updated by msuraev over 2 years ago

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

#11 Updated by msuraev over 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 over 2 years ago

#13 Updated by msuraev over 2 years ago

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

#14 Updated by laforge about 2 years ago

#15 Updated by msuraev about 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 almost 2 years ago

  • Assignee changed from msuraev to sysmocom

#17 Updated by laforge almost 2 years ago

  • Assignee changed from sysmocom to Hoernchen

#18 Updated by laforge over 1 year ago

  • Assignee deleted (Hoernchen)

#19 Updated by laforge 6 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 6 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 6 months ago

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

#22 Updated by keith 6 months ago

#23 Updated by keith 5 months 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)