Project

General

Profile

Feature #3075

do not transmit SI13 when the PCU is not connected

Added by neels over 3 years ago. Updated 9 months ago.

Status:
Resolved
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
03/19/2018
Due date:
% Done:

100%

Spec Reference:

Description

Looking at the scenario described in #3042:
  • two BTS, both configured for GPRS.
  • none of them having an osmo-pcu running along.
  • result: subscriber continuously does Location Updates between the two in an attempt to establish working data service.
    Do not send SI13 when the PCU is not connected, and see if that stops the cell hopping in the lack of a PCU.
si3_rest_octets.pcapng.gz si3_rest_octets.pcapng.gz 443 Bytes fixeria, 05/04/2020 06:45 PM

Related issues

Related to Cellular Network Infrastructure - Bug #3042: in the presence of two BTS, a subscribed phone seems compelled to repeatedly Location Update every ~15 secondsRejected03/08/2018

Related to OsmoBTS - Bug #4032: RLL/LAPDm ABM has no TTCN3 testsResolved05/29/2019

Associated revisions

Revision fdf8b7b1 (diff)
Added by Stefan Sperling almost 3 years ago

port arfcn range encode support from osmo-bsc

As part of fixing issue OS#3075, we want to migrate support
for encoding system information from osmo-bsc to libosmocore.

This change ports one of the prerequisites for doing so:
osmo-bsc code for range-encoding ARFCNs, including tests.

An osmo_gsm48_ prefix has been prepended to public symbols in
order to avoid clashes with existing symbols in osmo-bsc code.

Change-Id: Ia220764fba451be5e975ae7c5eefb1a25ac2bf2c
Related: OS#3075

Revision bd6e7a9f (diff)
Added by Stefan Sperling almost 3 years ago

port rest octets encoding code from osmo-bsc

As part of fixing issue OS#3075, we want to migrate support
for encoding system information from osmo-bsc to libosmocore.

This change ports osmo-bsc code for encoding SI rest octets.

The conversion was a bit tricky in some places because some
functions receive a 'struct gsm_bts' parameter in osmo-bsc.
In this libosmocore version, such functions expect parameters
which correspond to the individual fields of 'struct gsm_bts'
which are used by these functions.

Several structs from osmo-bsc's system_information.h are now
also declared in libosmocore headers, with an added osmo_ prefix
to avoid collisions with existing definitions in osmo-bsc.

Some helpers were ported from osmo-bsc's system_information.c
to libosmocore's gsm48_rest_octets.c. Contrary to osmo-bsc's
implementation they are now only visible within this file.

Unfortunately, this code ported from osmo-bsc lacks unit tests.

Change-Id: I47888965ab11bba1186c21987f1365c9270abeab
Related: OS#3075

Revision 1e96e31c (diff)
Added by laforge over 2 years ago

clear GPRS indicator in SI3 while PCU is disconnected

osmo-bts cannot provide GPRS service while osmo-pcu is not connected.
The BSC has no knowledge of the PCU connection state. Prevent MSs
from trying to register for GPRS while the PCU is disconnected by
erasing the GPRS Indicator in SI3.

Change-Id: I1a6f5c636c0fe098ee31c280d4572a3f8122b44b
Depends: I690cf308311f910005a325d50f5d5d825678d2b2 (libosmocore.git)
Depends: I08e0ca9a8d13c7aa40b9d90f34f0e13adb87d4e0 (libosmocore.git)
Depends: I8b1ee2405f6338507e9dfb5f1f437c4c2db2e330 (libosmocore.git)
Related: OS#3075

Revision 1276c17b (diff)
Added by laforge over 2 years ago

rest_octets: Use correct symbols names for range encoder

As gsm48_rest_octets.c is not listed in the Makefile.am, it's
never actually compiled and we never noticed that it's calling
functions by symbol names that don't exist :/

Change-Id: I7b1e436f70e0c60979261db87606f38271ec47d3
Related: OS#3075

Revision f85b33f6 (diff)
Added by laforge over 2 years ago

rest_octets: Add function to parse SI3 rest octets

Change-Id: I690cf308311f910005a325d50f5d5d825678d2b2
Related: OS#3075
Related: OS#4023

Revision 5e1cd5e4 (diff)
Added by laforge about 1 year ago

gsm48_rest_octets: Add parser for SI4 rest octets

Introduces osmo_gsm48_rest_octets_si4_decode()

Change-Id: I9d6ed06731ae15fdcef1a1f397d6ac2b7b1ca980
Related: OS#3075

Revision 1ab64126 (diff)
Added by laforge about 1 year ago

sysinfo: Only send SI13 if PCU is connected

If no PCU is connected, we cannot be providing GPRS services,
and hence should not transmit SI13.

Change-Id: I54320cf8073a33ed9e35b365921df178005e8967
Closes: OS#3075

Revision 9a7acc17 (diff)
Added by laforge about 1 year ago

sysinfo: Don't broadcast SI4 GPRS INDICATOR if PCU is disconnected

Depends: libosmocore.git I9d6ed06731ae15fdcef1a1f397d6ac2b7b1ca980
Change-Id: I1fd513ea03297918d15d4b28ed454f9b6dd6ebfa
Related: OS#3075

Revision 3f6a282a (diff)
Added by Pau Espin Pedrol 10 months ago

Revert "rest_octets: fix encoding of 3G Early Classmark Sending Restriction"

This reverts commit c9eab828ea4a9f508a013cf5cc1e0384a0e62e4c.

The initial code was correct, which has also been used in osmo-bsc until
recently, where it moved to use this function from libosmocore and
errors started to show up in TTCN3 tests.

See 3GPP TS 44.018 Section 10.5.2.34 / Table 10.5.2.34.1: "SI 3 Rest
Octets information element":

"""
<SI3 Rest Octet> ::=
...
<3G Early Classmark Sending Restriction>
...

<3G Early Classmark Sending Restriction>::= L | H;
"""

Change-Id: I0ee48d3240c62c4d2e15063b26da7a2a617f383e
Related: OS#3075
Related: SYS#4021

Revision 129cb515 (diff)
Added by laforge 10 months ago

sysinfo.c: Fix SI4 GPRS patching which overwrote CBCH IE

In Change-Id I1fd513ea03297918d15d4b28ed454f9b6dd6ebfa we introduced
patching of SI4 to indicate GPRS presence in terms of PCU connection
status. Unfortauntely this didn't account for optional IEs being
present in SI4, and hence overwrote any CBCH related information
elements, if present.

This in turn meant that since the above-mentioned commit, you could
have either a GPRS-capable, network, or a Cell Broadcast capable one.

Change-Id: I0ee0cf736e2fb74a6759a68101f699b4ec2ef54e
Related: OS#3075

History

#1 Updated by neels over 3 years ago

  • Related to Bug #3042: in the presence of two BTS, a subscribed phone seems compelled to repeatedly Location Update every ~15 seconds added

#2 Updated by laforge over 3 years ago

Even more important than not sending SI13 is to not send the indication that SI13
is present (In SI3 or SI4, AFAIR).

#3 Updated by laforge over 3 years ago

  • Assignee set to stsp

#4 Updated by stsp over 3 years ago

neels wrote:

Do not send SI13 when the PCU is not connected

As far as I understand, rsl_rx_bcch_info() attempts to tell the PCU to send SI13,
which will always fail as long as the PCU socket is disconnected.
Once the PCU comes up, pcu_rx_txt_ind() will immediately ask the PCU to send SI13.

laforge wrote:

Even more important than not sending SI13 is to not send the indication that SI13
is present (In SI3 or SI4, AFAIR).

This indication is present in SI3 (see gsm_generate_si() in osmo-bsc/system_information.c).

However, the code which generates SI3 lives in osmo-bsc, based on the gprs type of the BTS.
There doesn't seem to be a way to monitor the PCU socket status from osmo-bsc, Is that possible somehow?
Or should the BTS be modifying the SI3 which was provided by the BSC?

#5 Updated by stsp over 3 years ago

  • Status changed from New to In Progress

#6 Updated by neels over 3 years ago

Ok I see, depending on 'gprs mode (none|gprs|egprs)', osmo-bsc composes an SI3 to indicate GPRS service.
So the situation is about a failing GPRS service, where osmo-bsc expects the PCU to work, but it crashed/is broken/unreachable.
My personal intuition would be that osmo-bts masks the SI3 to indicate no GPRS as long as the PCU isn't connected.

But I'm not sure if that's a good idea semantically, it's a bit of a layering violation.
Maybe some custom non-standard message could tell the BSC that the PCU is down and osmo-bsc masks the SI3 instead?
Patching over SI3 in osmo-bts is certainly the easiest.

...not sure...

On the need to fix: at first I thought it's not critically important, but when in practice a GPRS service breaks down, it would potentially also take down voice with it, because all the phones would start to constantly LU at different cells, trying to catch a working PCU, which would load the network and could disrupt service. So I think in terms of infrastructure stability it's pretty bad to indicate GPRS presence if the BTS knows that the PCU is down.

#7 Updated by stsp over 3 years ago

I don't think coupling this behaviour to osmo-bsc would be wise.
What if osmo-bts runs with a BSC from another vendor?

This patch makes the BTS override the GPRS indicator in SI3: https://gerrit.osmocom.org/#/c/osmo-bts/+/10170
Parsing SI3 rest octets is a bit ugly but I don't see a better solution.

#8 Updated by stsp about 3 years ago

To make the proposed patch nice we'll need to port some code from osmo-bsc to libosmocore first.

This is step one of that porting process: https://gerrit.osmocom.org/c/libosmocore/+/10185

#9 Updated by neels about 3 years ago

just noticing, there's also a GPRS presence indicator in the rest octets in SI4

#10 Updated by stsp about 3 years ago

This patch ports rest-octet encoding from osmo-bsc to libosmocore: https://gerrit.osmocom.org/#/c/libosmocore/+/10189

#11 Updated by stsp about 3 years ago

This issue is currently waiting for confirmation from several authors to allow us to re-licence their code from AGPL to GPLv2+.

#12 Updated by stsp about 3 years ago

This issue is still waiting for a response from Jolly to our question about the license change.

#13 Updated by stsp almost 3 years ago

We haven't received a written statement by Jolly yet. Still waiting.

#14 Updated by stsp almost 3 years ago

Got permission from Jolly :)

#15 Updated by laforge over 2 years ago

#16 Updated by laforge over 2 years ago

  • Status changed from In Progress to Stalled
  • Assignee changed from stsp to sysmocom
  • % Done changed from 0 to 20

#17 Updated by laforge over 2 years ago

  • Status changed from Stalled to In Progress
  • Assignee changed from sysmocom to laforge
  • % Done changed from 20 to 80

A new, updated patch has been submitted as https://gerrit.osmocom.org/#/c/osmo-bts/+/10170/ and tested using newly-developed TTCN-3 tests from https://gerrit.osmocom.org/#/c/osmo-ttcn3-hacks/+/14215/

#18 Updated by laforge over 2 years ago

  • Status changed from In Progress to Resolved
  • % Done changed from 80 to 100

both patch and test have been merged.

#19 Updated by laforge over 2 years ago

  • Related to Bug #4032: RLL/LAPDm ABM has no TTCN3 tests added

#20 Updated by fixeria over 1 year ago

  • Status changed from Resolved to New
  • % Done changed from 100 to 80

I just noticed that System Information Type 4 still contains GPRS Indicator while osmo-pcu is not connected. Also, System Information Type 13 is still being transmitted by osmo-bts-trx (is it expected?). System Information Type 3 contains no GPRS Indicator as expected.

Updated by neels over 1 year ago
just noticing, there's also a GPRS presence indicator in the rest octets in SI4

#21 Updated by fixeria over 1 year ago

  • % Done changed from 80 to 90

I've extended the existing TTCN-3 test cases to check GPRS Indicator in SI4 Rest Octets too, see:

https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18027 BTS: manually compose Rest Octets for SI Type 3 and 4
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18028 BTS: fix missing GPRS Indicator in SI4 Rest Octets
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18029 BTS: refactor f_get_si3(), so it can be used to get SI4
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/18030 BTS: verify presence of GPRS Indicator in SI4 Rest Octets

#22 Updated by fixeria over 1 year ago

I also noticed that osmo-bts changes unrelated "3G Early Classmark Sending Restriction" field in SI3 Rest Octets:

SI 3 Rest Octets
        L... .... = Selection Parameters: Not Present
        .L.. .... = Optional Power Offset: Not Present
        ..L. .... = SYSTEM INFORMATION TYPE 2ter: Not available
        ...L .... = Early Classmark Sending: Not Allowed
        .... L... = Scheduling if and where: Not Present
        .... .H.. = GPRS Indicator: Present
        GPRS Indicator
            .... ..00  0... .... = GPRS RA Colour: 0
            .0.. .... = SI13 Position: SYSTEM INFORMATION TYPE 13 message is sent on BCCH Norm (0)
        ..L. .... = 3G Early Classmark Sending Restriction: Neither UTRAN, CDMA2000 nor GERAN IU MODE CLASSMARK CHANGE message shall be sent with the Early classmark sending
        ...L .... = SI2quater Indicator: Not Present
        .... L... = SI21 Indicator: Not Present
        Padding Bits: default padding

vs

SI 3 Rest Octets
        L... .... = Selection Parameters: Not Present
        .L.. .... = Optional Power Offset: Not Present
        ..L. .... = SYSTEM INFORMATION TYPE 2ter: Not available
        ...L .... = Early Classmark Sending: Not Allowed
        .... L... = Scheduling if and where: Not Present
        .... .L.. = GPRS Indicator: Not Present
        .... ..H. = 3G Early Classmark Sending Restriction: The sending of UTRAN,CDMA2000 and GERAN IU MODE CLASSMARK CHANGE messages are controlled by the Early Classmark Sending Control parameter
        .... ...L = SI2quater Indicator: Not Present
        0... .... = SI13alt Position: If Iu mode is supported in the cell, SYSTEM INFORMATION TYPE 13alt message is sent on BCCH Norm
        .L.. .... = SI21 Indicator: Not Present
        Padding Bits: default padding

#23 Updated by fixeria over 1 year ago

I also noticed that osmo-bts changes unrelated "3G Early Classmark Sending Restriction" field in SI3 Rest Octets:

https://gerrit.osmocom.org/c/libosmocore/+/18036 rest_octets: fix encoding of 3G Early Classmark Sending Restriction

#25 Updated by laforge 9 months ago

  • Status changed from New to Resolved
  • % Done changed from 90 to 100

all patches merged

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)