Problem integrating OpenBSC (osmo-nitb) with LCR

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/OpenBSC@lists.osmocom.org/.

David Perez david at taddong.com
Thu Sep 13 17:52:48 UTC 2012


Hi!

First of all, let me thank you all the developers and contributors of
both OpenBSC and LCR. Congratulations for your amazing work!

I am stuck with a problem while trying to get LCR and openbsc to work
together through their unix socket (/tmp/bsc_mncc), and I was wondering
if anyone on this list would be kind enough to give me some pointers.

I include more details below, but this is the executive summary:

I have two MS that can call each other with no problem when I start
openbsc (osmo-nitb) in standalone mode (i.e. without the "--mncc-sock"
option). However, when I start omso-nitb with that option, and I also
start LCR, a call between the two MS cannot be establised.

I think the problem may be related with the fact that LCR is not being
able to identify the calling number, nor the called number, nor the IMSI
of the caller. This can be seen in the following trace/debug messages of
LCR:
---
000000 TRACE 13.09.12 18:17:49.248 CH(1): MNCC_SETUP_IND LCR<->BSC
calling imsi=  dialing number=
[...]
000000 DEBUG (in apppbx.cpp/ea_message_port() line 2476): EPOINT(1)
incoming call from callerid=imsi-, dialing=
---

AFAIK, I'm using the latest version of each tool: I am using clones of
the following git repositories, made around 10:00 AM CET today (13sep12):
---
git clone git://git.osmocom.org/libosmocore.git
git clone git://git.osmocom.org/libosmo-abis.git
git clone git://git.osmocom.org/openbsc.git
git clone git://git.misdn.eu/lcr.git/
---
At the end of this message I include a list of the last commits of these
repositories, for reference.

--- Executive summary ends here ---

The long version of the explanation of the problem follows. I hope to
have included enough information, but if you need extra details, please
do not hesitate to let me know.

First, without LCR, I start openbsc (osmo-nitb) in standalone mode, make
a call from 2203 to 2201 (extension numbers I assigned in hlr.sqlite3),
and everything works fine (the call gets established and voice flows in
both directions):

---
root at tli-pc-2001:/usr/local/bin# cat start-bsc-standalone
#!/bin/sh

echo ""
echo "Starting _new_ BSC (openbsc) (=osmo-nitb) standalone..."

/opt/new/openbsc/bin/osmo-nitb -c /etc/opt/new/openbsc/openbsc.cfg \
                               -l /var/opt/new/openbsc/hlr.sqlite3
root at tli-pc-2001:/usr/local/bin# start-bsc-standalone

Starting _new_ BSC (openbsc) (=osmo-nitb) standalone...
<0019> input/ipaccess.c:923 enabling ipaccess BSC mode
DB: Database initialized.
DB: Database prepared.
<0007> sms_queue.c:232 Attempting to send 20 SMS
<0019> input/ipa.c:322 accept()ed new link from 10.10.10.21 to port 3002
Failure Event Report Type=communication failure Severity=critical
failure Probable cause= 03 03 11 Additional Text=
<0019> input/ipa.c:322 accept()ed new link from 10.10.10.21 to port 3003
<0004> bsc_init.c:282 bootstrapping RSL for BTS/TRX (0/0) on ARFCN 1
using MCC=001 MNC=01 LAC=2 CID=0 BSIC=63 TSC=7
<000b> bsc_api.c:374 Sending ChanModify for speech 33 1
<000b> osmo_msc.c:73 Assignment complete should not have been reached.
<000b> bsc_api.c:374 Sending ChanModify for speech 33 1
<000b> osmo_msc.c:73 Assignment complete should not have been reached.
---
Then, I shut down osmo_nitb with CTRL-C.


Then, I start osmo-nitb for use with LCR (--mncc-sock):
---
root at tli-pc-2001:/usr/local/bin# cat start-bsc-for_lcr
#!/bin/sh

echo ""
echo "Starting _new_ BSC (openbsc) (=osmo-nitb) for use with LCR..."

/opt/new/openbsc/bin/osmo-nitb -c /etc/opt/new/openbsc/openbsc.cfg \
                               -l /var/opt/new/openbsc/hlr.sqlite3 \
                               --mncc-sock --rtp-proxy

root at tli-pc-2001:/usr/local/bin# start-bsc-for_lcr

Starting _new_ BSC (openbsc) (=osmo-nitb) for use with LCR...
<0019> input/ipaccess.c:923 enabling ipaccess BSC mode
DB: Database initialized.
DB: Database prepared.
<0007> sms_queue.c:232 Attempting to send 20 SMS
<0019> input/ipa.c:322 accept()ed new link from 10.10.10.21 to port 3002
<0019> input/ipa.c:322 accept()ed new link from 10.10.10.21 to port 3003
<0004> bsc_init.c:282 bootstrapping RSL for BTS/TRX (0/0) on ARFCN 1
using MCC=001 MNC=01 LAC=2 CID=0 BSIC=63 TSC=7
Failure Event Report Type=communication failure Severity=critical
failure Probable cause= 03 03 11 Additional Text=
---

Then, I start LCR:
---
root at tli-pc-2001:/usr/local/bin# cat start-lcr
#!/bin/sh

echo ""
echo "Starting _new_ LCR..."
/opt/new/lcr/sbin/lcr start
root at tli-pc-2001:/usr/local/bin#
root at tli-pc-2001:/usr/local/bin# start-lcr

Starting _new_ LCR...

** LCR  Version 1.12

000000 DEBUG (in route.c/getrulesetbyname() line 1871): ruleset main found.
000000 DEBUG (in sip.cpp/sip_init() line 1913): SIP globals initialized
000000 DEBUG (in gsm.cpp/mncc_socket_retry_cb() line 1173): Connected to
MNCC socket /tmp/bsc_mncc!
LCR 1.12 started, waiting for calls...
000000 TRACE 13.09.12 18:16:22.091 --: LCR 1.12 started, waiting for
calls...
---

It attaches OK to the MNCC socket of openbsc. This message is displayed
by openbsc:
---
<0006> mncc_sock.c:274 MNCC Socket has connection with external call
control application
---

Then, I attempt to establish the same call as before, from 2203 to 2201.
The call does not get established, and LCR shows the following messages:
---
000000 DEBUG (in port.cpp/Port() line 197): new port (1) of type 0x3101,
name 'GSM-0-in'
000000 DEBUG (in gsm.cpp/Pgsm() line 194): Created new GSMPort(GSM-0-in).
000000 DEBUG (in gsm_bs.cpp/Pgsm_bs() line 56): Created new
GSMBSPort(GSM-0-in).
000000 TRACE 13.09.12 18:17:49.248 CH(1): New call ref LCR<->BSC
callref new=0x80000001
000000 TRACE 13.09.12 18:17:49.248 CH(1): Codec negotiation LCR<->BSC
bearer capa='given by MS'  speech version='AMR given' ignored='Not
suitable for LCR' version='EFR given' ignored='Not suitable for LCR'
version='Full Rate given' version='AMR Half Rate given' ignored='Not
suitable for LCR' version='Half Rate given' ignored='Not suitable for LCR'
000000 TRACE 13.09.12 18:17:49.248 CH(1): MNCC_SETUP_IND LCR<->BSC
calling imsi=  dialing number=
000000 DEBUG (in endpoint.cpp/Endpoint() line 48): EPOINT(1): Allocating
enpoint 1 and connecting it with: ioport
000000 DEBUG (in endpoint.cpp/portlist_new() line 150): EPOINT(1)
allocating port_list, attaching to port 1
000000 DEBUG (in port.cpp/epointlist_new() line 128): PORT(1) allocating
epoint_list.
000000 TRACE 13.09.12 18:17:49.249 CH(1): MNCC_LCHAN_MODIFY LCR<->BSC
speech version='Full/Half Rate given'  mode 0x01
000000 TRACE 13.09.12 18:17:49.249 CH(1): MNCC_CALL_PROC_REQ LCR<->BSC
progress coding=3 location=1 descr=8
000000 DEBUG (in port.cpp/new_state() line 261): PORT(GSM-0-in) new
state PORT_STATE_IDLE --> PORT_STATE_IN_PROCEEDING
000000 TRACE 13.09.12 18:17:49.249 CH(1): unknown LCR<->BSC
000000 DEBUG (in message.c/_message_put() line 61): message
MESSAGE_SETUP written from 1 to 1 (memory 8bfaf48 at file gsm_bs.cpp,
line 576)
000000 DEBUG (in message.c/message_get() line 106): message
MESSAGE_SETUP reading from 1 to 1 (memory 8bfaf48)
000000 DEBUG (in apppbx.cpp/ea_message_port() line 2476): EPOINT(1)
incoming call from callerid=imsi-, dialing=
000000 TRACE 13.09.12 18:17:49.249 EP(1): SETUP  from CH(1)  caller id
number=imsi- present='not available'  complete true
000000 DEBUG (in apppbx.cpp/port_setup() line 1372): EPOINT(1) incoming
call is extension
000000 DEBUG (in apppbx.cpp/port_setup() line 1382): EPOINT(1) call from
extension 'imsi-'
the given extension doesn't exist:
"/opt/new/lcr/var/lib/lcr/extensions/imsi-/settings"
000000 DEBUG (in extension.c/read_extension() line 58): the given
extension doesn't exist:
"/opt/new/lcr/var/lib/lcr/extensions/imsi-/settings"
000000 TRACE 13.09.12 18:17:49.250 EP(1): EXTENSION (not created)
extension imsi-
000000 DEBUG (in message.c/_message_put() line 61): message
MESSAGE_DISCONNECT written from 1 to 1 (memory 8bfe800 at file
apppbx.cpp, line 4213)
000000 TRACE 13.09.12 18:17:49.250 EP(1): DISCONNECT  to CH(1)  cause
value=21 location=1-Local-PBX
000000 DEBUG (in message.c/_message_put() line 61): message MESSAGE_TONE
written from 1 to 1 (memory 8c020b8 at file apppbx.cpp, line 579)
000000 TRACE 13.09.12 18:17:49.250 EP(1): TONE  to CH(1)  directory
default  name cause_80
000000 DEBUG (in message.c/message_get() line 106): message
MESSAGE_DISCONNECT reading from 1 to 1 (memory 8bfe800)
000000 TRACE 13.09.12 18:17:49.251 CH(1): MNCC_DISC_REQ LCR<->BSC
progress coding=3 location=1 descr=8  cause coding=3 location=1 value=21
000000 DEBUG (in port.cpp/new_state() line 261): PORT(GSM-0-in) new
state PORT_STATE_IN_PROCEEDING --> PORT_STATE_OUT_DISCONNECT
000000 DEBUG (in message.c/message_get() line 106): message MESSAGE_TONE
reading from 1 to 1 (memory 8c020b8)
000000 DEBUG (in port.cpp/message_epoint() line 611): PORT(GSM-0-in)
setting tone 'cause_80' dir ''
000000 TRACE 13.09.12 18:17:49.708 CH(1): MNCC_REL_IND LCR<->BSC
000000 DEBUG (in message.c/_message_put() line 61): message
MESSAGE_RELEASE written from 1 to 1 (memory 8bf9950 at file gsm.cpp,
line 585)
000000 DEBUG (in port.cpp/free_epointlist() line 84): PORT(1) removed
epoint from port
000000 DEBUG (in port.cpp/new_state() line 261): PORT(GSM-0-in) new
state PORT_STATE_OUT_DISCONNECT --> PORT_STATE_RELEASE
000000 DEBUG (in message.c/message_get() line 106): message
MESSAGE_RELEASE reading from 1 to 1 (memory 8bf9950)
000000 DEBUG (in apppbx.cpp/ea_message_port() line 2562): EPOINT(1)
release with cause=16 location=0 (terminal '', caller id 'imsi-')
000000 TRACE 13.09.12 18:17:49.709 EP(1): RELEASE  from CH(1)  cause
value=16 location=0-User
000000 DEBUG (in apppbx.cpp/port_disconnect_release() line 2043):
EPOINT(1) current multipoint cause 0 location 0, received cause 16
location 0.
000000 DEBUG (in apppbx.cpp/port_disconnect_release() line 2045):
EPOINT(1) new multipoint cause 16 location 0.
000000 DEBUG (in action.cpp/process_hangup() line 2428): EPOINT(1):
terminal ''
000000 DEBUG (in endpoint.cpp/free_portlist() line 189): EPOINT(1)
removed port 1 from port_list of endpoint
000000 DEBUG (in apppbx.cpp/release() line 222): EPOINT(1): do pending
release (joincause 16 location 0)
000000 DEBUG (in apppbx.cpp/release() line 240): EPOINT(1) do pending
release (portcause 16 portlocation)
000000 DEBUG (in apppbx.cpp/release() line 319): EPOINT(1) do pending
release of epoint itself.
000000 DEBUG (in gsm_bs.cpp/~Pgsm_bs() line 64): Destroyed GSM BS
process(GSM-0-in).
000000 DEBUG (in gsm.cpp/~Pgsm() line 202): Destroyed GSM process(GSM-0-in).
000000 DEBUG (in port.cpp/~Port() line 209): removing port (1) of type
0x3101, name 'GSM-0-in'
000000 DEBUG (in endpoint.cpp/~Endpoint() line 138): removed endpoint 1.
---


Latest commit of each tool:
---
root at tli-pc-2001:/home/tliuser1/sw_openbsc_2/libosmocore# git log | head -6
commit eacba189b1a03c6a213b76df07dd766697017438
Author: Holger Hans Peter Freyther <zecke at selfish.org>
Date:   Tue Sep 11 12:27:47 2012 +0200

    git: Ignore generated tests executables

root at tli-pc-2001:/home/tliuser1/sw_openbsc_2/libosmocore# cd ..
root at tli-pc-2001:/home/tliuser1/sw_openbsc_2# cd libosmo-abis/
root at tli-pc-2001:/home/tliuser1/sw_openbsc_2/libosmo-abis# git log | head -6
commit 84e5cb9b3496527d43af974f2f89396d8145d743
Author: Pablo Neira Ayuso <pablo at gnumonks.org>
Date:   Thu Aug 23 23:41:54 2012 +0200

    ipaccess: fix leak of IPA control messages in the BTS side

root at tli-pc-2001:/home/tliuser1/sw_openbsc_2/libosmo-abis# cd ..
root at tli-pc-2001:/home/tliuser1/sw_openbsc_2# cd openbsc
root at tli-pc-2001:/home/tliuser1/sw_openbsc_2/openbsc# cd openbsc
root at tli-pc-2001:/home/tliuser1/sw_openbsc_2/openbsc/openbsc# git log |
head -6
commit ca5d2111131101f7b8df40207b4c597b0e53f2cb
Merge: c11889f 31b245b
Author: Holger Hans Peter Freyther <zecke at selfish.org>
Date:   Tue Sep 11 18:02:46 2012 +0200

    Merge branch 'feature/local-mscs'
root at tli-pc-2001:/home/tliuser1/sw_openbsc_2/openbsc/openbsc# cd ../..
root at tli-pc-2001:/home/tliuser1/sw_openbsc_2# cd lcr
root at tli-pc-2001:/home/tliuser1/sw_openbsc_2/lcr# git log | head -6
commit 6911e09b77aa1eaac35b595bb4082e1f4c59ca71
Author: Andreas Eversberg <jolly at eversberg.eu>
Date:   Sun Aug 19 20:50:10 2012 +0200

    Allow calls to multiple interfaces simultaniosuly

root at tli-pc-2001:/home/tliuser1/sw_openbsc_2/lcr#
---

Any guidance would be appreciated.

Best regards,
David.

----
David Perez
Founder & Senior Security Analyst
Taddong
david at taddong.com | +34-699982432 | www.taddong.com
----
13sep12 19:50




More information about the OpenBSC mailing list