Bug #5253


osmo-bts: RadioCarrier/BBTransceiver NM objects should be kept in DisabledDependency until RSL link is established

Added by pespin almost 2 years ago. Updated 7 days ago.

Target version:
Start date:
Due date:
% Done:


Spec Reference:


This would make them follow nanoBTS more closely. It would also avoid different sort of strange scenarios where the TRX are OPSTARTed (and hence start running) while the RSL link is not yet in place.

Related issues

Related to OsmoBTS - Bug #5964: BTS_Tests_OML.TC_ipa_rsl_connect_nack failsResolved03/26/2023

Actions #1

Updated by pespin 5 months ago

Further investigation seems to indicate that nanoBTS only attempts connection *after receiving an OPSTART.

Which means we should NOT stay in Disabled Dependency, because then OPSTART is not going to be sent.

Actions #2

Updated by pespin 5 months ago

The objects which need to be kept as DisabledDependency while no RSL link exists are the NM CHannels (timeslots) above that BBTRANSC.
This way they cannot be opstarted until the RSL link is established.

Actions #3

Updated by pespin 5 months ago

I tested again and I confirm that nanoBTS doesn't attempt TCP connecting until it is sent the OPSTART command for the BBTRANSC object from the BSC.
Hence, IP address in RSL CONNECT message is not really tested because no TCP socket is created, and is considered to be "use same remote address as per OML link) which is inherently valid since the OML link is up.

I also just checked: nanoBTS sends OPSTART ACK even before sending the TCP SYN to port 3003 (RSL), so yeah, it ACKs and then attempts creating the RSL socket, as I expected.

The real knowledge that the nanoBTS is prepared comes from the fact that it sends a StateChng Report to EnabledOk once it has a successful connect on the TCP/IPA/RSL link. That happens after the IPA handshake is successful apparently.

Hence, an important different we may want to take into account and change in osmo-bts: nanoBTS is creating the TCP/IPA/RSL socket upon receiving OPSTART, while we are creating it during RSL_CONNECT:

static int rx_oml_ipa_rsl_connect(struct gsm_bts *bts, struct msgb *msg,
                  const struct tlv_parsed *tp)
        trx->rsl_tei = stream_id;
        rc = e1inp_ipa_bts_rsl_connect_n(oml_link->ts->line, inet_ntoa(in), port, trx->nr);

Actions #4

Updated by pespin 5 months ago

  • Related to Bug #5964: BTS_Tests_OML.TC_ipa_rsl_connect_nack fails added
Actions #5

Updated by pespin 7 days ago

  • Status changed from New to Feedback
  • % Done changed from 0 to 90

Submitted some patches to have same behavior in osmo-bts as we see in nanoBTS:

remote: oml: Store RSL connect related fields in bb_transc [NEW]
remote: Move trx->rsl_link to trx-> [NEW]
remote: nm: delay RSL connect until BBTRANSC object is OPSTARTed [NEW]

Actions #6

Updated by pespin 7 days ago

Tested the patches above successfully with sysmobts and osmo-bts-trx.

Once merged we can close this ticket.


Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)