Project

General

Profile

Bug #1614

better identification of BTS model / capabilities to BSC

Added by laforge over 5 years ago. Updated over 1 year ago.

Status:
Stalled
Priority:
Normal
Assignee:
-
Category:
-
Target version:
-
Start date:
02/23/2016
Due date:
% Done:

60%

Spec Reference:

Description

Right now, there is a lot of implied knowledge at the BSC level about the BTS, i.e.
  • the BSC needs to be told which BTS model it is
  • the BSC needs to be told the nominal transmit power of each TRX
  • the BSC needs to be told about the codec capabilities, etc.

In order to reduce the currently seemingly endless possbilities how somebody can end up with a non-working
configuration, it would be good if the BTS would express its capabilities towards the BSC. As there is
no standard in the Abis specs for this, we have to come up with a mechanism of our own.

It might be a vendor-specific OML request from BSC to BTS, which we could use to determine from BSC side if the BTS supports this request at all (if not, proceed as usual). This would also ensure backwards compatibility with nanoBTS or older OsmoBTS versions.


Checklist

  • OsmoBTS version number string
  • OsmoPCU version number string
  • OsmoBTS variant
  • per-TRX PHY version number
  • per-TRX nominal transmit power
  • BTS sub-model
  • BTS bit-mask of capabilities
  • TRX bit-mask of capabilities

Related issues

Related to OsmoBSC - Feature #1946: Add checks to the BSC VTY to prevent configurations known to not workNew02/08/2017

Related to OsmoBTS - Bug #2316: osmo-bts aborts on sysmoBTSClosed06/01/2017

Related to OsmoBTS - Bug #2317: multibts setup produce unnecessary OML warningClosed06/06/2017

Related to OsmoBSC - Bug #3799: OsmoBSC send OML "Get Attributes" with wrong length valueResolved02/12/2019

Related to OsmoBTS - Bug #3938: Get Attribute Response parsing is broken: NM_ATT_SW_DESCR is ignoredResolved04/18/2019

Associated revisions

Revision 88d4fc70 (diff)
Added by max over 4 years ago

Don't drop OML links for Get Attributes NACK

Previously any OML NACK message will result in BSC dropping OML link to
BTS which makes it impossible to use optional OML messages which might
be unsupported by BTS. Fix this for 3GPP TS 52.021 §8.11.1 Get
Attributes message. Also, log human-readable NACK name to see what
exactly causing OML link drop.

Change-Id: Ib8af2872c27abb793172ec59bdc145b8d54f83da
Related: OS#1614

Revision 9a90afa7 (diff)
Added by max over 4 years ago

Don't drop OML links for Get Attributes NACK

Previously any OML NACK message will result in BSC dropping OML link to
BTS which makes it impossible to use optional OML messages which might
be unsupported by BTS. Fix this for 3GPP TS 52.021 §8.11.1 Get
Attributes message. Also, log human-readable NACK name to see what
exactly causing OML link drop.

Change-Id: Ib8af2872c27abb793172ec59bdc145b8d54f83da
Related: OS#1614

Revision 62d6f257 (diff)
Added by max over 4 years ago

abis: add attribute names

Add human-readable names for Attributes from 3GPP TS 52.021 §9.4

Change-Id: I861247c01557dac7e484ef6fb9b170f69c8a7f55
Related: OS#1614

Revision 5d994e4f (diff)
Added by max over 4 years ago

abis: add message type names

Add human-readable names for Message Types from 3GPP TS 52.021 §9.1

Related: OS#1614

Change-Id: Ide8202b4387351f57ceee34a9eb8c30aef09a663

Revision 7f9c7e7b (diff)
Added by max over 4 years ago

Add support for PCU version report

Expand 3GPP TS 52.021 §9.4.43 Probable Cause with Osmocom-specific value
for PCU version reporting to enable sending it via OML alarms.

Change-Id: If57459c0610f2c7b36d599b13087c8deef8bdd9e
Related: OS#1614

Revision b1e6b374 (diff)
Added by max over 4 years ago

Handle PCU version received via OML alert

Explicitly check for and log PCU version received from BTS via OML alert
message.

Change-Id: I3c88663d4e2887a4038b4c3f1387128295b8934e
Related: OS#1614

Revision ab4b1506 (diff)
Added by max over 4 years ago

Handle PCU version received via OML alert

Explicitly check for and log PCU version received from BTS via OML alert
message.

Change-Id: I3c88663d4e2887a4038b4c3f1387128295b8934e
Related: OS#1614

Revision 689e7e55 (diff)
Added by max over 4 years ago

abis: log known ACKs and unknown messages

Log expected ACK messages and unhandled messages to aid in
troubleshooting.

Change-Id: Id3afaaa76e24f63076ae0e6fd2322e4a7fa29b45
Related: OS#1614

Revision 7efc263c (diff)
Added by max over 4 years ago

abis: log known ACKs and unknown messages

Log expected ACK messages and unhandled messages to aid in
troubleshooting.

Change-Id: Id3afaaa76e24f63076ae0e6fd2322e4a7fa29b45
Related: OS#1614

Revision dafb3635 (diff)
Added by max over 4 years ago

Handle TXT indication from OsmoPCU

  • handle OML message
  • handle OsmoPCU version message
  • show stored PCU version in 'show bts ..' vty command

Requires OpenBSc with I6710d53115f34634a7b70969cc05fd5c72ff8ab2.

Change-Id: I16e73198501487a5b1076bf83390b85538d5af73
Related: OS#1614, 1615

Revision f9685c14 (diff)
Added by max over 4 years ago

gsm_bts: add version and variant details

  • add version string to gsm_bts
  • add PCU version string to gsm_bts
  • rename GSM_BTS_TYPE_OSMO_SYSMO -> GSM_BTS_OSMOBTS to avoid confusion
    between BTS model and variant
  • add variant enum to gsm_bts_model using enum with variants for each
    hw vendor of OsmoBTS
  • show connected PCU version (if available) in vty via 'show bts'

This will come in handy when logging details regarding particular BTS
reported via OML, see:

Related: OS#1614

Change-Id: I6710d53115f34634a7b70969cc05fd5c72ff8ab2

Revision abf3eb1c (diff)
Added by max over 4 years ago

gsm_bts: add version and variant details

  • add version string to gsm_bts
  • add PCU version string to gsm_bts
  • rename GSM_BTS_TYPE_OSMO_SYSMO -> GSM_BTS_OSMOBTS to avoid confusion
    between BTS model and variant
  • add variant enum to gsm_bts_model using enum with variants for each
    hw vendor of OsmoBTS
  • show connected PCU version (if available) in vty via 'show bts'

This will come in handy when logging details regarding particular BTS
reported via OML, see:

Related: OS#1614

Change-Id: I6710d53115f34634a7b70969cc05fd5c72ff8ab2

Revision f74cfd35 (diff)
Added by max over 4 years ago

Add SW Description (de)marshalling

  • data structure representing 3GPP TS 52.021 §9.4.62 SW Description
  • function to serialize it into msgb
  • function to deserialize it from buffer
  • functions to extract/estimate buffer size for SW Description
  • test harness (partially taken from OpenBSC)

There are several similar functions to deal with SW Description in
OpenBSC, there's also need to use similar functionality in
OsmoBTS. Hence it's better to put the code into common library with
proper tests and documentation.

Change-Id: Ib63b6b5e83b8914864fc7edd789f8958cdc993cd
Related: OS#1614

Revision 6d8e5198 (diff)
Added by max over 4 years ago

Add gsm_bts_type_variant to gsm_bts struct

Previously it was only in gsm_bts_model which is not initialized on BTS
side. It's more convenient to have it in the struct which is available
to BTS as well.

Change-Id: I54fde8c4ccd5d994af08074f5864446e79a93a25
Related: OS#1614

Revision 5c40291d (diff)
Added by max over 4 years ago

Add gsm_bts_type_variant to gsm_bts struct

Previously it was only in gsm_bts_model which is not initialized on BTS
side. It's more convenient to have it in the struct which is available
to BTS as well.

Change-Id: I54fde8c4ccd5d994af08074f5864446e79a93a25
Related: OS#1614

Revision 7507aef9 (diff)
Added by max over 4 years ago

Make BTS type and variant converters shareable

  • move value_string definition and corresponding functions for BTS type
    to shared header to make it re-usable by OsmoBTS
  • use consistent function naming
  • add similar functions for BTS variant
  • add enum to be used by OML Attribute Reporting to distinguish between
    type, variant and other info

Change-Id: Ida94725a6fce968443541e3526f48f13758031fd
Related: OS#1614

Revision aa425a4c (diff)
Added by max over 4 years ago

Make BTS type and variant converters shareable

  • move value_string definition and corresponding functions for BTS type
    to shared header to make it re-usable by OsmoBTS
  • use consistent function naming
  • add similar functions for BTS variant
  • add enum to be used by OML Attribute Reporting to distinguish between
    type, variant and other info

Change-Id: Ida94725a6fce968443541e3526f48f13758031fd
Related: OS#1614

Revision 7b62d54b (diff)
Added by max over 4 years ago

Use define for limit on number of BTS features

Change-Id: Ief81db0b3653fec180e60776ff9bcb0ac1357217
Related: OS#1614

Revision bac2e8e5 (diff)
Added by max over 4 years ago

Use define for limit on number of BTS features

Change-Id: Ief81db0b3653fec180e60776ff9bcb0ac1357217
Related: OS#1614

Revision 8913b29b (diff)
Added by max over 4 years ago

Set BTS variant while initializing BTS model

This will allow proper BTS attribute reporting via OML in follow-up
patches.

Change-Id: I1c49d6c39fb4dac7a46ee25ceacf4c6ef0f0b736
Related: OS#1614

Revision b9040911 (diff)
Added by max over 4 years ago

doc: fix incorrect return value description

Change-Id: Ieba009273f911bc4217122a6346220aeb29e8bc4
Related: OS#1614

Revision 2d848a06 (diff)
Added by max over 4 years ago

Prepare for BTS attribute reporting via OML

  • move BTS model name resolution into separate function
  • add convenience wrappers for BTS type and number fo TRX and use then
    in L1 interface

Change-Id: I4649100df8f1b8e095f210fc294567ba014c0b6a
Related: OS#1614

Revision 1ebf23b7 (diff)
Added by max over 4 years ago

Prepare for BTS attribute reporting via OML

  • use define for number of attributes instead of magic number
  • add sub_model to gsm_bts struct
  • expand number of BTS features
  • mark attributes parameter to abis_nm_get_attr() as const

Change-Id: I7ecb0c4339530d3a8354a2f94b34063dda87e030
Related: OS#1614

Revision c81178aa (diff)
Added by max over 4 years ago

Prepare for BTS attribute reporting via OML

  • use define for number of attributes instead of magic number
  • add sub_model to gsm_bts struct
  • expand number of BTS features
  • mark attributes parameter to abis_nm_get_attr() as const

Change-Id: I7ecb0c4339530d3a8354a2f94b34063dda87e030
Related: OS#1614

Revision defb6c95 (diff)
Added by max over 4 years ago

Get basic BTS attributes

Request BTS attributes via OML on connection and parse the response:
request/parse incoming response as sw-config.

Note: only basic BTS-wide KV attributes wrapped in sw-config are
supported for now.

Change-Id: I589be51daca0cb9e1f3473b93e910e46b06e23ae
Related: OS#1614

Revision 07922cd0 (diff)
Added by max over 4 years ago

Get basic BTS attributes

Request BTS attributes via OML on connection and parse the response:
request/parse incoming response as sw-config.

Note: only basic BTS-wide KV attributes wrapped in sw-config are
supported for now.

Change-Id: I589be51daca0cb9e1f3473b93e910e46b06e23ae
Related: OS#1614

Revision 72993079 (diff)
Added by max over 4 years ago

Implement basic Get Attribute responder

Add 3GPP TS 52.021 §8.11.2 Get Attribute Response handling:
  • report OsmoBTS version
  • report sysmoBTS sub-model
  • report OsmoBTS variant

Requires I7ecb0c4339530d3a8354a2f94b34063dda87e030 in OpenBSC.

Change-Id: I09f95ed995fab5def9dc6e8cc201012fba4db28d
Related: OS#1614

Revision 9eeb0b1a (diff)
Added by max over 4 years ago

Add version to phy_instance

Change-Id: I5b2352b8d15e9b0d8616fcd526b4902d247e4693
Related: OS#1614

Revision e91cd2b0 (diff)
Added by max over 4 years ago

OML: fix Coverity-reported issues

  • CID 169803: Null pointer dereferences
  • CID 169802: Incorrect expression

Change-Id: Ib3f91be97c8bf81a87681814bf81d3a5a9950e54
Related: OS#1614

Revision 71d082be (diff)
Added by max over 4 years ago

Adjust BTS model feature check

Rename gsm_bts_has_feature() -> gsm_btsmodel_has_feature() and adjust
type signature to match gsm_btsmodel_set_feature() function and avoid
confusion with upcoming functions to check/set BTS features reported
over OML.

Change-Id: I97abdedbef568e0c2fbd37c110f7d658cf20e100
Related: OS#1614

Revision 1378df47 (diff)
Added by max over 4 years ago

Adjust BTS model feature check

Rename gsm_bts_has_feature() -> gsm_btsmodel_has_feature() and adjust
type signature to match gsm_btsmodel_set_feature() function and avoid
confusion with upcoming functions to check/set BTS features reported
over OML.

Change-Id: I97abdedbef568e0c2fbd37c110f7d658cf20e100
Related: OS#1614

Revision aef68387 (diff)
Added by max over 4 years ago

Add remote BTS feature storage and helpers

In addition to compile-time defined BTS model features we also need
run-time BTS features reported by BTS via OML. This should be shared by
BSC and BTS. To accommodate for this, add following:

  • features bitvec to gsm_bts struct
  • features descriptions
  • comments to avoid confusion between 2 feature sets
  • helper functions to set/query particular feature
  • upper boundary on number of supported features and assertion for it

Change-Id: I02bd317097ba66585c50ebd4e8fc348f6dc3dad9
Related: OS#1614

Revision d7836430 (diff)
Added by max over 4 years ago

Add remote BTS feature storage and helpers

In addition to compile-time defined BTS model features we also need
run-time BTS features reported by BTS via OML. This should be shared by
BSC and BTS. To accommodate for this, add following:

  • features bitvec to gsm_bts struct
  • features descriptions
  • comments to avoid confusion between 2 feature sets
  • helper functions to set/query particular feature
  • upper boundary on number of supported features and assertion for it

Change-Id: I02bd317097ba66585c50ebd4e8fc348f6dc3dad9
Related: OS#1614

Revision 33e1357a (diff)
Added by max over 4 years ago

Get TRX attributes

Request per-TRX attributes in addition to BTS attributes.

Change-Id: I2b61131b9930afd03357c0b66947ee856d58cc46
Related: OS#1614

Revision c51c1e79 (diff)
Added by max over 4 years ago

Request and parse BTS feature list via OML

Request features supported by BTS when getting attributes over OML.

Change-Id: Ic35b2865998bca3c2c0cb4b77e4e73d12e08bd7e
Related: OS#1614

Revision fa4b2b81 (diff)
Added by max over 4 years ago

Get TRX attributes

Request per-TRX attributes in addition to BTS attributes.

Change-Id: I2b61131b9930afd03357c0b66947ee856d58cc46
Related: OS#1614

Revision c0b43d98 (diff)
Added by max over 4 years ago

Request and parse BTS feature list via OML

Request features supported by BTS when getting attributes over OML.

Change-Id: Ic35b2865998bca3c2c0cb4b77e4e73d12e08bd7e
Related: OS#1614

Revision d22b5b84 (diff)
Added by max over 4 years ago

Re-add version to phy_instance

This is resubmission of 9eeb0b1a136fc8c24a86cb4d832c264674c10db0 with
errorneous use of talloc_asprintf() removed which should fix OS#2316.

Change-Id: I02ae6fffdc808c1ea14185dbb4a720d27a62d4bb
Related: OS#1614

Revision b7793ed8 (diff)
Added by max over 4 years ago

Extend Get Attribute responder

  • detect if attributes are requested for BTS or TRX and act accordingly
  • report TRX phy version

Change-Id: I9f72305bbf1ab74745bffac1bee9f539f5a6de32
Related: OS#1614

Revision de935725 (diff)
Added by max over 4 years ago

Set and report BTS features

Set (possibly incomplete) list of BTS model-specific features and report
them in response to attribute request via OML.

Change-Id: I5f8a6681c3562ec261441e84dde6e085b516d92f
Related: OS#1614

History

#1 Updated by laforge almost 5 years ago

  • Priority changed from Normal to High

#2 Updated by laforge over 4 years ago

  • Related to Feature #1946: Add checks to the BSC VTY to prevent configurations known to not work added

#3 Updated by laforge over 4 years ago

  • Assignee set to msuraev
The BTS should report via OML after connection [or after inquiry?]:
  • OsmoBTS version number string
  • OsmoPCU version number string (if any connected, or maybe at PCU connection time?)
  • OsmoBTS variant (sysmo, octphy, trx, lc15, ...)
  • per-TRX PHY version number (taken from DSP of sysmo/octphy/lc15, taken from OsmoTRX in case of omso-bts-trx)
  • per-TRX nominal transmit power
  • BTS sub-model (osmo-bts-sysmo supports 1002, 1020, 1100, 2050)
  • a bit-mask of capabilities (that can be extended in length as needed by future versions, like classmark in GSM L3)
To expand a bit on the capabilities that need reporting via the bit-masks (one for the BTS, separate one for each TRX):
  • TRX: codec capabilities (hr/fr/efr/amr-hr/amr-fr)
  • TRX: band capabilities (850/900/1800/1900, maybe even the exotic ones like 400/450?)
  • TRX: dynamic TCH/F_PDCH (IPA style)
  • TRX: dynamic TCH/F_TCH/H_PDCH (Osmocom style)
  • TRX: DTXd (separate bits for each codec)
  • BTS: generation of OML alerts
  • BTS: AGCH/PCH proportional allocation
  • BTS: CBCH support

The feature-bit definitions should probably be part of a shared header file (maybe put them in gsm_data_common)?

The OML message exchange should then transfer the capability bit-mask from the 'struct gsm_bts' and 'struct gsm_bts_trx' from OsmoBTS into that of libbsc (OsmoBSC/OsmoNITB(. The libbsc code can then take those capabilities into consideration when trying to configure or use the BTS.

#4 Updated by laforge over 4 years ago

#5 Updated by msuraev over 4 years ago

  • Status changed from New to In Progress

After reading 3GPP TS 52.021, there seems to be several options:

- for sending OsmoPCU version string we can re-use § 8.8.2 Failure Event Report using manufacturer-defined NM_PCAUSE_T_MANUF with osmocom-specific sub-types for versions as it's unlikely to be already known when we report capabilities to BSC.

- for reporting capabilities we have several options:
1) use §8.8.1 State Changed Event Report - unsolicited report from BTS, without ack/nack
2) use §6.10.1 Get Attributes - request by BSC

In case of 1) we can use either §9.4.48 Site Inputs TLV (up to 128 parameters with boolean state) or §9.4.7 Availability Status TLV (octet per feature with pre-defined status encoding like "In test", "Not installed" etc) for feature sets. BTS variant and sub-model can be encoded using §9.4.28 Man.dep. State TV which give us up to 255 variants.

In case of 2) we can use §8.11.3 Get Attribute Response with §9.4.64 Get Attribute Response Info. This way we can request any attributes from §9.4 using §9.4.26 List of Required Attributes TLV.

The 2) seems to be more flexible (we can stuff BTS version into §9.4.62 SW Description TV for example) on the other hand we already using 1) actively. Overall I think we should use 2) unless it's somehow incompatible with other BTS hw we support.

#6 Updated by laforge over 4 years ago

I agree, we should use get_attributes

#7 Updated by msuraev over 4 years ago

  • % Done changed from 0 to 10

Gerrit 2093 has been merged with changes necessary for backward compatibility between new BSC and old BTS.

#8 Updated by msuraev over 4 years ago

Related gerrit 2144 is under review.

#9 Updated by msuraev over 4 years ago

  • % Done changed from 10 to 20

Gerrit 2144, 2161 were merged, 2165, 2166, 2087 are under review, additional patches will follow.

#10 Updated by msuraev over 4 years ago

  • Checklist item OsmoBTS version number string added
  • Checklist item OsmoPCU version number string added
  • Checklist item OsmoBTS variant added
  • Checklist item per-TRX PHY version number added
  • Checklist item per-TRX nominal transmit power added
  • Checklist item BTS sub-model added
  • Checklist item a bit-mask of capabilities added

PCU version number is handled by #1615.

#11 Updated by msuraev over 4 years ago

  • Status changed from In Progress to Stalled

#12 Updated by msuraev over 4 years ago

Gerrit 2165, 2166, 2087, 2544 merged, 2545 is under review, additional patches will follow.

#13 Updated by msuraev over 4 years ago

  • Checklist item OsmoBTS version number string set to Done
  • Checklist item OsmoBTS variant set to Done
  • Checklist item BTS sub-model set to Done
  • % Done changed from 20 to 50

Gerrit 2545 has been merged.

#14 Updated by msuraev over 4 years ago

Gerrit 2784, 2785 are merged; 2783, 2786, 2794, 2797, 2799, 2800 are under review.

#15 Updated by msuraev over 4 years ago

  • Checklist item deleted (a bit-mask of capabilities )
  • Checklist item BTS bit-mask of capabilities added
  • Checklist item TRX bit-mask of capabilities added

#16 Updated by neels over 4 years ago

  • Related to Bug #2316: osmo-bts aborts on sysmoBTS added

#17 Updated by neels over 4 years ago

I have reverted 9eeb0b1a136fc8c24a86cb4d832c264674c10db0 in d36b3a84638d6db940387f0e18c98855202f554d.
Explanation in http://git.osmocom.org/osmo-bts/commit/?id=d36b3a84638d6db940387f0e18c98855202f554d

#18 Updated by msuraev over 4 years ago

  • Related to Bug #2317: multibts setup produce unnecessary OML warning added

#19 Updated by msuraev over 4 years ago

Note: due to #2317 it'll not work if BTS is configured in OpenBSC with number higher than 0 because corresponding OML requests will be ignored by BTS.

#20 Updated by msuraev over 4 years ago

  • % Done changed from 50 to 60

Merged: 2783, 2794, 2797, 2800, 2786, 2799.

#21 Updated by laforge almost 4 years ago

  • Project changed from OpenBSC to OsmoBSC
  • Category deleted (libbsc)

#22 Updated by msuraev over 3 years ago

  • Assignee changed from msuraev to dexter

#23 Updated by laforge over 3 years ago

  • Priority changed from High to Normal

#24 Updated by laforge over 2 years ago

  • Related to Bug #3799: OsmoBSC send OML "Get Attributes" with wrong length value added

#25 Updated by fixeria over 2 years ago

  • Related to Bug #3938: Get Attribute Response parsing is broken: NM_ATT_SW_DESCR is ignored added

#26 Updated by laforge almost 2 years ago

#27 Updated by laforge over 1 year ago

  • Assignee deleted (dexter)

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)