Project

General

Profile

Bug #5131

Call setup failing on 3rd SETUP

Added by keith 16 days ago. Updated 1 day ago.

Status:
New
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
04/26/2021
Due date:
% Done:

0%

Spec Reference:

Description

Attempting to establish a 3rd simultaneous call causes all calls to drop no further calls can be established until the MGW is restarted.
100% reproducible.

This is the oddity in the osmo-mgw logs

Apr 26 00:34:50 test2-bsc osmo-mgw[2313]: DLMGCP mgcp_protocol.c:751 endpoint:ds/e1-0/s-2/su16-6@mgw CRCX: creating new connection ...
Apr 26 00:34:50 test2-bsc osmo-mgw[2313]: DLINP input/e1d.c:350 E1L(0) Line update 0 0=E1D(0:0) 32
Apr 26 00:34:50 test2-bsc osmo-mgw[2313]: DLINP input/e1d.c:450 E1TS(0:3) Could not open timeslot 3
Apr 26 00:34:50 test2-bsc osmo-mgw[2313]: DE1 mgcp_e1.c:400 trunk:0 failed to update E1 timeslot 2.


After this, restart is required.

At the same time. osmo-e1d logs:

20210426003450977 DE1D ERROR (I0:L0:T3) Timeslot already open, rejecting re-open without F_FORCE (ctl.c:380)
20210426003450979 DE1D ERROR (I0:L0:T3) dead socket during write: Broken pipe (mux_demux.c:298)

Attached logs and pcaps did not necessarily start and end at the same time, but all timestamps should match.

e1.pcap e1.pcap 329 KB contains various call setup attempts keith, 04/26/2021 05:29 AM
lo.pcap lo.pcap 32.9 MB all traffic on lo , sctp, mgcp, sip, etc.. keith, 04/26/2021 05:33 AM
osmo-bsc.cfg osmo-bsc.cfg 4.45 KB keith, 04/26/2021 05:37 AM
osmo-mgw.cfg osmo-mgw.cfg 1.21 KB keith, 04/26/2021 05:37 AM
osmo-msc.cfg osmo-msc.cfg 2.21 KB keith, 04/26/2021 05:37 AM

History

#1 Updated by keith 16 days ago

Apologies for large-ish pcap there, I guess I could have taken out the RTP.

Anyway, looking at the config while making this ticket, it become obvious that the 3rd call, (5th leg) is using a new E1 timeslot.

Changing osmo-bsc config so:


   timeslot 3
    phys_chan_config TCH/F
    hopping enabled 0
    e1 line 0 timeslot 6 sub-slot 1

(just choosing 6 at random)

results in:


Apr 26 00:44:33 test2-bsc osmo-mgw[2594]: DLMGCP mgcp_protocol.c:751 endpoint:ds/e1-0/s-6/su16-2@mgw CRCX: creating new connection ...
Apr 26 00:44:33 test2-bsc osmo-mgw[2594]: DLINP input/e1d.c:350 E1L(0) Line update 0 0=E1D(0:0) 32
Apr 26 00:44:33 test2-bsc osmo-mgw[2594]: DLINP input/e1d.c:450 E1TS(0:3) Could not open timeslot 3
Apr 26 00:44:33 test2-bsc osmo-mgw[2594]: DE1 mgcp_e1.c:400 trunk:0 failed to update E1 timeslot 6.

And same message from the e1d:

20210426004433802 DE1D ERROR (I0:L0:T3) Timeslot already open, rejecting re-open without F_FORCE (ctl.c:380)

Changing osmo-bsc channel allocator to ascending causes the same error on the 2nd call, (3rd leg) as we only have two TS before moving E1 TS

It might be nice if somebody else would see if they can reproduce it?

#2 Updated by laforge 16 days ago

On Mon, Apr 26, 2021 at 05:38:07AM +0000, keith [REDMINE] wrote:

Attempting to establish a 3rd simultaneous call causes all calls to drop no further calls can be established until the MGW is restarted.
100% reproducible.

Thanks for this very clear report.

But... looking at your configuration file, it somehow seems to lack any e1 timeslot/sub-slot
assignments at all ?!?

Your config:

trx 0
rf_locked 0
arfcn 883
nominal power 23
max_power_red 20
rsl e1 tei 0
timeslot 0
phys_chan_config CCCH+SDCCH4
hopping enabled 0
timeslot 1
phys_chan_config TCH/F
hopping enabled 0
timeslot 2
phys_chan_config TCH/F
hopping enabled 0
timeslot 3
phys_chan_config TCH/F
hopping enabled 0
timeslot 4
phys_chan_config TCH/F
hopping enabled 0
timeslot 5
phys_chan_config TCH/F
hopping enabled 0
timeslot 6
phys_chan_config TCH/F
hopping enabled 0
timeslot 7
phys_chan_config TCH/F
hopping enabled 0

example config:

trx 0
rf_locked 0
arfcn 123
nominal power 42
max_power_red 12
rsl e1 line 0 timeslot 1 sub-slot full
rsl e1 tei 0
timeslot 0
phys_chan_config CCCH+SDCCH4
hopping enabled 0
e1 line 0 timeslot 1 sub-slot full
timeslot 1
phys_chan_config TCH/F
hopping enabled 0
e1 line 0 timeslot 2 sub-slot 1
timeslot 2
phys_chan_config TCH/F
hopping enabled 0
e1 line 0 timeslot 2 sub-slot 2
timeslot 3
phys_chan_config TCH/F
hopping enabled 0
e1 line 0 timeslot 2 sub-slot 3
timeslot 4
phys_chan_config TCH/F
hopping enabled 0
e1 line 0 timeslot 3 sub-slot 0
timeslot 5
phys_chan_config TCH/F
hopping enabled 0
e1 line 0 timeslot 3 sub-slot 1
timeslot 6
phys_chan_config TCH/F
hopping enabled 0
e1 line 0 timeslot 3 sub-slot 2
timeslot 7
phys_chan_config TCH/F
hopping enabled 0
e1 line 0 timeslot 3 sub-slot 3

For a E1 BTS, you need to configure which E1 timeslot and sub-slot is to be
used for which on-air timeslot. This has been the same since we first implemented
OpenBSC/bs11_hack in 2008. It is your responsibility to make sure every on-air-TS
has a dedicated, non-overlapping E1 sub-slot configured. You can use them as
you like, but the pattern from the example files is what we tend to test with.

#3 Updated by keith 15 days ago

Bizarre.. When I re-download and look at the osmo-bsc.cfg that I attached, I see the e1 timeslot assignments, plain and clear:

Also in the paste in your note, there is arfcn 883. So i think somehow what you are looking at is not my config.
Thanks!

 trx 0
   rf_locked 0
   arfcn 250
   nominal power 36
   max_power_red 0
   rsl e1 line 0 timeslot 1 sub-slot full
   rsl e1 tei 0
   timeslot 0
    phys_chan_config CCCH+SDCCH4
    hopping enabled 0
    e1 line 0 timeslot 1 sub-slot full
   timeslot 1
    phys_chan_config TCH/F
    hopping enabled 0
    e1 line 0 timeslot 2 sub-slot 1
   timeslot 2
    phys_chan_config TCH/F
    hopping enabled 0
    e1 line 0 timeslot 2 sub-slot 2
   timeslot 3
    phys_chan_config TCH/F
    hopping enabled 0
    e1 line 0 timeslot 2 sub-slot 3
   timeslot 4
    phys_chan_config TCH/F
    hopping enabled 0
    e1 line 0 timeslot 3 sub-slot 0
   timeslot 5
    phys_chan_config TCH/F
    hopping enabled 0
    e1 line 0 timeslot 3 sub-slot 1
   timeslot 6
    phys_chan_config TCH/F
    hopping enabled 0
    e1 line 0 timeslot 3 sub-slot 2
   timeslot 7
    phys_chan_config TCH/F
    hopping enabled 0
    e1 line 0 timeslot 3 sub-slot 3

#4 Updated by laforge 14 days ago

keith wrote:

Also in the paste in your note, there is arfcn 883. So i think somehow what you are looking at is not my config.

sorry for that.

#5 Updated by keith 6 days ago

libosmo-abis: e1d.c:e1d_line_update()

iterates over all timeslots:
line 358:
for (ts=1; ts<line->num_ts; ts++)
...

osmo_e1dp_client_ts_open() seems to fail then on any TS already open?

#6 Updated by keith 1 day ago

Not yet sure if it's the complete solution, but this allows libosmo-abis to know the mode of the TS!

So now at least we don't close the fd in e1d_line_update()

https://gerrit.osmocom.org/c/osmo-e1d/+/24196

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)