Hi all,
This patch set adds to libosmocore an optimized Viterbi decodeer for
architecture specific (Intel SSE) and non-specific cases. The
implementation covers codes with constraint lengths of K=5 and K=7 and
rates 1/4 to 3/4, which make up the majority of GSM use cases. Speedup
from the current implementation is in the range of 5 to 20 depending on
the processor and code type. API is unchanged.
Tested on Haswell (i7-4770K) and Atom (D2550). Additional test codes
from osmo-bts are included. Further tests for AWGN bit-error-rate
and benchmarks can be found in the following repository.
https://github.com/ttsou/osmo-conv-test
Here are some examples.
Bit error test for GPRS CS2 with SNR of 5 dB and 100000 bursts.
$ ./conv_test -c 2 -e -r 5 -i 100000
=================================================
[+] Testing: GPRS CS2
[.] Specs: (N=2, K=5, non-recursive, flushed, not punctured)
[.] Input length : ret = 290 exp = 290 -> OK
[.] Output length : ret = 588 exp = 588 -> OK
[.] BER tests:
[..] Testing base:
[..] Input BER.......................... 0.042443
[..] Output BER......................... 0.000006
[..] Output FER......................... 0.001350 (135)
[..] Testing SIMD:
[..] Input BER.......................... 0.042460
[..] Output BER......................... 0.000005
[..] Output FER......................... 0.001240 (124)
Timed AFS benchmark with 8 threads and 100000 bursts per thread.
$ ./conv_test -b -c 10 -j 8 -i 100000
=================================================
[+] Testing: GSM TCH/AFS 6.7
[.] Specs: (N=4, K=5, recursive, flushed, punctured)
[.] Input length : ret = 140 exp = 140 -> OK
[.] Output length : ret = 448 exp = 448 -> OK
[.] Performance benchmark:
[..] Encoding / Decoding 800000 bursts on 8 thread(s):
[..] Testing base:
[..] Elapsed time....................... 4.320001 secs
[..] Rate............................... 25.925920 Mbps
[..] Testing SIMD:
[..] Elapsed time....................... 0.458272 secs
[..] Rate............................... 244.396341 Mbps
[..] Speedup............................ 9.426718
-TT
Hi, I am using OsmoSGSN in topology with OpenGGSN and proprietary simulator
of BSS. There was a problem with an implementation of Network service,
cause Network Service implementation in the simulator of BSS is based on
different release of 3GPP standard (3GPP TS 48. 016 v7. 4. 0
(2008-04)/Network service (Release 7))...and the problem is that in
IP-subnetwork, which I am using there is no use for RESET or UNBLOCK
procedure, so I had to do a PATCH in gprs_ns.c, which was needed to
complete succesful connection between sim-bss and OsmoSGSN:
switch (nsh->pdu_type) {
case NS_PDUT_ALIVE:
+++ LOGP(DNS, LOGL_INFO, "Rx NS ALIVE\n");
+++ /*mark NS-VC as alive*/
+++ (*nsvc)->state = NSE_S_ALIVE;
+++ (*nsvc)->remote_state = NSE_S_ALIVE;
+++ /*initiate TEST procedure: Send ALIVE_ACK and start timer*/
+++ rc = gprs_ns_tx_simple((*nsvc), NS_PDUT_ALIVE_ACK);
+++ nsvc_start_timer((*nsvc), NSVC_TIMER_TNS_TEST);
+++ break;
.
.
.
}
another PATCH I needed to do was to change a little bit procedure for
allocation of P-TMSI in procedure uint32_t sgsn_alloc_ptmsi(void) in
gprs_sgsn.c
uint32_t sgsn_alloc_ptmsi(void)
{
struct sgsn_mm_ctx *mm;
uint32_t ptmsi;
restart:
+++ ptmsi = rand() | 0xc0000000; /*because of GPRS IMSI
ATTACH*/
llist_for_each_entry(mm, &sgsn_mm_ctxts, list) {
if (mm->p_tmsi == ptmsi)
goto restart;
}
return ptmsi;
}
because in GPRS IMSI ATTACH in message ATTACH COMPLETE (3GPP 24.008,
23.003, 48.018) there is new TLLI==new allocated P-TMSI and I need local
TLLI, so I had to do it this way
regards Michal
Hi,
I wonder if anybody was ever able to start a Nokia UltraSite with
OpenBSC?
In a nut shell: OML link is up and running, TRX1 is successfully loaded
software, configured, and now it is stuck in "Waiting for LAPD..."
state.
The problem is that OpenBSC initiates the RSLSIG link for this TRX,
but it seems the BTS is never answering to that:
Sat Jun 28 14:33:27 2014 <0018> input/lapd.c:159 LAPD state change on TEI 1: NONE -> ASSIGNED
Sat Jun 28 14:33:27 2014 <0018> input/lapd.c:212 LAPD Allocating SAP for SAPI=0 / TEI=1
Sat Jun 28 14:33:27 2014 <0018> input/lapd.c:223 k=2 N200=3 N201=260 T200=1.0 T203=10.0
Sat Jun 28 14:33:27 2014 <0018> lapd_core.c:288 Init DL layer: sequence range = 128, k = 2, history range = 4
Sat Jun 28 14:33:27 2014 <0018> lapd_core.c:227 new state LAPD_STATE_NULL -> LAPD_STATE_IDLE
Sat Jun 28 14:33:27 2014 <0018> input/lapd.c:485 LAPD DL-ESTABLISH request TEI=1 SAPI=0
Sat Jun 28 14:33:27 2014 <0018> lapd_core.c:2180 Message DL-ESTABLISH-REQUEST received in state LAPD_STATE_IDLE
Sat Jun 28 14:33:27 2014 <0018> lapd_core.c:1694 perform normal establishm. (SABM)
Sat Jun 28 14:33:27 2014 <0018> lapd_core.c:227 new state LAPD_STATE_IDLE -> LAPD_STATE_SABM_SENT
Sat Jun 28 14:33:27 2014 <0018> input/lapd.c:600 TX: 02 03 7f
Sat Jun 28 14:33:27 2014 <0018> lapd_core.c:196 start T200
Sat Jun 28 14:33:27 2014 <0018> lapd_core.c:1779 lapd_send_i() called from line 1609
Sat Jun 28 14:33:27 2014 <0018> lapd_core.c:1618 we are not busy and have no pending data, send RR
Sat Jun 28 14:33:27 2014 <0018> input/lapd.c:600 TX: f8 03 01 08
Sat Jun 28 14:33:28 2014 <0018> lapd_core.c:545 Timeout T200 (0x993ad40) state=5
Sat Jun 28 14:33:28 2014 <0018> input/lapd.c:600 TX: 02 03 7f
Sat Jun 28 14:33:28 2014 <0018> lapd_core.c:196 start T200
Sat Jun 28 14:33:29 2014 <0018> lapd_core.c:545 Timeout T200 (0x993ad40) state=5
Sat Jun 28 14:33:29 2014 <0018> input/lapd.c:600 TX: 02 03 7f
Sat Jun 28 14:33:29 2014 <0018> lapd_core.c:196 start T200
Sat Jun 28 14:33:30 2014 <0018> lapd_core.c:545 Timeout T200 (0x993ad40) state=5
Sat Jun 28 14:33:30 2014 <0018> input/lapd.c:600 TX: 02 03 7f
Sat Jun 28 14:33:30 2014 <0018> lapd_core.c:196 start T200
Sat Jun 28 14:33:31 2014 <0018> lapd_core.c:545 Timeout T200 (0x993ad40) state=5
Sat Jun 28 14:33:31 2014 <0018> input/lapd.c:628 LAPD DL-RELEASE indication TEI=1 SAPI=0
Sat Jun 28 14:33:31 2014 <0018> lapd_core.c:303 Resetting LAPDm instance
Sat Jun 28 14:33:31 2014 <0018> lapd_core.c:227 new state LAPD_STATE_SABM_SENT -> LAPD_STATE_IDLE
Sat Jun 28 14:33:31 2014 <001b> bsc_init.c:318 Lost some E1 TEI link: 2 0x991b8f0
Sat Jun 28 14:33:31 2014 <0018> lapd_core.c:378 sending MDL-ERROR-IND cause 1
Sat Jun 28 14:33:31 2014 <0018> lapd_core.c:227 new state LAPD_STATE_IDLE -> LAPD_STATE_IDLE
I set the correct E1 TS for TRX1 RSLSIG in Traffic manager, and double
checked the RSLSIG config parameters on both end (OpenBSC config file and the BTS
manager).
Nokia Insite and MetroSite uses RSL TEI = 1 for the first TRX. Maybe
Ultra uses other TEI number for the first TRX, this is something I
will try, but otherwise I don't know how it is possible that not even
the LAPD connection is being established...
Any help is appreciated.
Thanks,
Csaba
This is a Mailman mailing list bounce action notice:
List: OpenBSC
Member: devinechristophe(a)gmail.com
Action: Subscription disabled.
Reason: Excessive or fatal bounces.
The triggering bounce notice is attached below.
Questions? Contact the Mailman site administrator at
mailman(a)lists.osmocom.org.
Hi all.
I recall talks about sqlite-backed HLR being bottleneck and that it should be
replaced with something more decent.
As far as I recall that idea is not materialized yet so I'd like to bring new db
buzz-word I've stumbled upon recently:
http://www.aerospike.com/press-releases/aerospike-open-sources-visionary-da…
If you remove all the marketing junk it's essentially greatly revamped AlchemyDB with
AGPL license for server (various language bindings for client library under apache
license), transactions and claim for very-small latencies (approx 5 ms!) which
grabbed my attention.
It's unlikely that I'll be able to allocate time to work on that ATM but maybe it'll
spark interest in someone else :)
--
best regards,
Max, http://fairwaves.co
Hi all,
I have followed the the guide in network_from_scratch and use 1 osmocom phone as transceiver. I use the suggested configs for open-bsc.cfg and osmo-bts.cfg and can register to the network I run.
However in the output from osmo--nitb ,in the start I get a message about the training sequence:
________________________________________________
% This BTS does not support a TSC!=BCC, Falling back to BCC
and after the
DB: Database initialized messages
DB: Database prepared
----------------------------------
--------------------------------
<0005>bsc.init.c:265 bootstrapping RSL for BTS/TRX(0/0) on ARFCN 533 using MCC=1 MNC=1 LAC=1 CID=0 BSIC=63 TSC 7
------------------------------------------
<0002> gsm.subscriber.c: 378 Subscriber <imsi> ATTACHED LAC=1
-----------------------------------------------------------------------------------------------------
I have entered hlr.sqlite and assigned an extension to my imsi but when I enter the VTY
and execute
enable
subscriber imsi <imsi> sms send test123
I get:
%Unknown command
So it appears smsqueue is not enabled. Does anyone know what to look for to enable it?
I have tried the vty commands trigger smsqueue but to no avail..
According to the network from scratch wiki sms (and broadcast) should function with one phone where TS0 is served
-------------------------------------------------------------------
osmo-bts-trx outputs lines of
<0006> scheduler.c 338 ---- chan=SDCC/4(0)
--- chan=SACC/4(0)
----- chan=BCCH(0)
----------------------------------------------------------------------------------------------------------
When the firmware is loaded onto the phone I get time on arrival and signal to noise ratio messages:
TOA=4 snr=16384 (Thres 2560) freq_err=40 pm=-70
--------------------------------------------------------
So that is grossly exceeding the threshold value.
But is that related to not being able to use smsqueue?
Regards
Erich
Dear Andreas, Harald,
I don't really know much about the bit order of TRAU frames but
the trau_test.c is causing an out of bounds access to the gsm_fr_map.
Re-produce (GCC >= 3.8 or clang >= 3.2 required):
$ make clean && make CFLAGS+="-ggdb3 -Og -fsanitize=address"
$ cd tests/trau
$ ./trau_test
Issue:
Breakpoint 1, 0xb69e7810 in __asan_report_error () from /usr/lib/i386-linux-gnu/libasan.so.0
(gdb) bt
#0 0xb69e7810 in __asan_report_error () from /usr/lib/i386-linux-gnu/libasan.so.0
#1 0xb69e08cf in __asan_report_load1 () from /usr/lib/i386-linux-gnu/libasan.so.0
#2 0x0804c4e7 in trau_encode_fr (tf=tf@entry=0xbffff530,
data=data@entry=0xbffff700 <incomplete sequence \320>) at trau_mux.c:441
#3 0x08048e06 in test_trau_fr_efr (data=<optimized out>,
data@entry=0xbffff700 <incomplete sequence \320>) at trau_test.c:35
#4 0x080494bf in main () at trau_test.c:70
(gdb) frame2
Undefined command: "frame2". Try "help".
(gdb) frame 2
#2 0x0804c4e7 in trau_encode_fr (tf=tf@entry=0xbffff530,
data=data@entry=0xbffff700 <incomplete sequence \320>) at trau_mux.c:441
441 k = gsm_fr_map[++l]-1;
(gdb) p l
$1 = 76
(gdb) p l
$2 = 76
(gdb) p sizeof(gsm_fr_map)
$3 = 76
Please fix as soon as possible as I would like to enable ASAN checking on
the jenkins as soon as possible.
kind regards
holger