Hello,
I just updated my machine with the latest OpenBSC code from git. In the past
under heavy data load (EDGE), the BTS would crash. Now, after updating the
code, the BTS stays up, but the SGSN crashes. Below are a few details about
my setup and debugging output.
BTS: NanoBTS 165BU 1900
PC: Atom Z530 1GB ram, Running Debian (Wheezy)
Output from gdb:
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=52
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xc3123cCMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xac6064CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xdc7cc7CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x18af79CMD=UI DATA
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x84caf1CMD=UI DATA
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xf1f6b6CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xd9e63bCMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xbadc11CMD=UI DATA
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=64
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=197
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xb7e07cCMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x987e00CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xf386aaCMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x38700eCMD=UI DATA
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x62743eCMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x1cba00CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x6e4346CMD=UI DATA
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xb20578CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x49f5d0CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x760e46CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xc839b5CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xacd5a3CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xdaf317CMD=UI DATA
<0011> gprs_bssgp.c:747 BSSGP BVCI=3 Rx Flow Control BVC
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x7d7a91CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x1eef1aCMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xd83b65CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0xf6a775CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x855a58CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x18aa6fCMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x167b76CMD=UI DATA
<0011> gprs_bssgp.c:376 BSSGP TLLI=0xce3dde6f Rx UPLINK-UNITDATA
<0012> gprs_llc.c:502 LLC SAPI=3 C FCS=0x55d812CMD=UI DATA
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
<000f> sgsn_libgtp.c:425 GTP DATA IND from GGSN, length=1500
Program received signal SIGFPE, Arithmetic exception.
fc_queue_timer_cfg (fc=fc@entry=0x808def0) at gprs_bssgp.c:596
596 msecs = (fcqe->llc_pdu_len * 1000) / fc->bucket_leak_rate;
(gdb)
OpenBSC Console Output:
Fri Jun 21 16:36:19 2013 <0005> abis_nm.c:315 OC=BASEBAND-TRANSCEIVER(04)
INST=(00,00,ff) Failure Event Report Type=quality of service failure
Severity=warning level failure Probable cause= 03 05 01 Additional Text=UDP
overflow alarm on port 23000 (1 occurences)
Fri Jun 21 16:36:20 2013 <0005> abis_nm.c:315 OC=BASEBAND-TRANSCEIVER(04)
INST=(00,00,ff) Failure Event Report Type=quality of service failure
Severity=warning level failure Probable cause= 03 05 01 Additional Text=UDP
overflow alarm on port 23000 (1 occurences)
Fri Jun 21 16:38:00 2013 <0005> abis_nm.c:315 OC=GPRS-NSVC(f2)
INST=(00,00,ff) STATE CHG: OP_STATE=Disabled AVAIL=Failed(01)
Fri Jun 21 16:38:00 2013 <0005> abis_nm.c:315 OC=GPRS-NSE(f0)
INST=(00,ff,ff) STATE CHG: OP_STATE=Disabled AVAIL=Dependency(05)
Fri Jun 21 16:38:00 2013 <0005> abis_nm.c:1757 OC=GPRS-NSE(f0)
INST=(00,ff,ff) Sending OPSTART
Fri Jun 21 16:38:00 2013 <0005> abis_nm.c:315 OC=GPRS-CELL(f1)
INST=(00,00,ff) STATE CHG: OP_STATE=Disabled AVAIL=Dependency(05)
Fri Jun 21 16:38:00 2013 <0005> abis_nm.c:1757 OC=GPRS-CELL(f1)
INST=(00,00,ff) Sending OPSTART
Fri Jun 21 16:38:00 2013 <0005> abis_nm.c:315 OC=GPRS-NSE(f0)
INST=(00,ff,ff) STATE CHG: OP_STATE=Disabled AVAIL=Dependency(05)
Fri Jun 21 16:38:00 2013 <0005> abis_nm.c:315 OC=GPRS-CELL(f1)
INST=(00,00,ff) STATE CHG: OP_STATE=Disabled AVAIL=Dependency(05)
Fri Jun 21 16:38:00 2013 <0005> abis_nm.c:2418 OC=GPRS-NSE(f0)
INST=(00,ff,ff) IPACCESS(0xf6): SET ATTR ACK
Fri Jun 21 16:38:00 2013 <0005> abis_nm.c:2418 OC=GPRS-CELL(f1)
INST=(00,00,ff) IPACCESS(0xf6): SET ATTR ACK
Fri Jun 21 16:38:42 2013 <0005> abis_nm.c:315 OC=GPRS-NSVC(f2)
INST=(00,00,ff) Failure Event Report Type=communication failure
Severity=critical failure Probable cause= 03 03 11 Additional Text=
Let me know if you need any further information.
Regards,
Caleb
Hello,
I have a nanoBTS 139 unit for sale.
It is from the united states, it operates on PCS1900.
I'd sell it for 1200 euro.
Please contact me if you are interested.
Thank you.
If the BTS tells us to not send any data at all anymore (bucket leak
rate of 0 bits per second), then we should respect this and not run into
a divide-by-zero. However, as this indicates complete overload, we
print a log message to that regard.
---
src/gb/gprs_bssgp.c | 43 +++++++++++++++++++++++++++++++++----------
1 file changed, 33 insertions(+), 10 deletions(-)
diff --git a/src/gb/gprs_bssgp.c b/src/gb/gprs_bssgp.c
index e41c7ef..5ef1887 100644
--- a/src/gb/gprs_bssgp.c
+++ b/src/gb/gprs_bssgp.c
@@ -590,16 +590,20 @@ static int fc_queue_timer_cfg(struct bssgp_flow_control *fc)
fcqe = llist_entry(&fc->queue.next, struct bssgp_fc_queue_element,
list);
- /* Calculate the point in time at which we will have leaked
- * a sufficient number of bytes from the bucket to transmit
- * the first PDU in the queue */
- msecs = (fcqe->llc_pdu_len * 1000) / fc->bucket_leak_rate;
- /* FIXME: add that time to fc->time_last_pdu and subtract it from
- * current time */
-
- fc->timer.data = fc;
- fc->timer.cb = &fc_timer_cb;
- osmo_timer_schedule(&fc->timer, msecs / 1000, (msecs % 1000) * 1000);
+ if (fc->bucket_leak_rate != 0) {
+ /* Calculate the point in time at which we will have leaked
+ * a sufficient number of bytes from the bucket to transmit
+ * the first PDU in the queue */
+ msecs = (fcqe->llc_pdu_len * 1000) / fc->bucket_leak_rate;
+ /* FIXME: add that time to fc->time_last_pdu and subtract it from
+ * current time */
+ fc->timer.data = fc;
+ fc->timer.cb = &fc_timer_cb;
+ osmo_timer_schedule(&fc->timer, msecs / 1000, (msecs % 1000) * 1000);
+ } else {
+ /* If the PCU is telling us to not send any more data at all,
+ * there's no point starting a timer. */
+ }
return 0;
}
@@ -742,6 +746,8 @@ int bssgp_fc_ms_init(struct bssgp_flow_control *fc_ms, uint16_t bvci,
static int bssgp_rx_fc_bvc(struct msgb *msg, struct tlv_parsed *tp,
struct bssgp_bvc_ctx *bctx)
{
+ uint32_t old_leak_rate = bctx->fc->bucket_leak_rate;
+ uint32_t old_r_def_ms = bctx->r_default_ms;
DEBUGP(DBSSGP, "BSSGP BVCI=%u Rx Flow Control BVC\n",
bctx->bvci);
@@ -769,6 +775,23 @@ static int bssgp_rx_fc_bvc(struct msgb *msg, struct tlv_parsed *tp,
bctx->r_default_ms = 100 *
ntohs(*(uint16_t *)TLVP_VAL(tp, BSSGP_IE_R_DEFAULT_MS)) / 8;
+ if (old_leak_rate != 0 && bctx->fc->bucket_leak_rate == 0)
+ LOGP(DBSSGP, LOGL_NOTICE, "BSS instructs us to bucket leak "
+ "rate of 0, stopping all DL GPRS!\n");
+ else if (old_leak_rate == 0 && bctx->fc->bucket_leak_rate != 0)
+ LOGP(DBSSGP, LOGL_NOTICE, "BSS instructs us to bucket leak "
+ "rate of != 0, restarting all DL GPRS!\n");
+
+ if (old_r_def_ms != 0 && bctx->r_default_ms == 0)
+ LOGP(DBSSGP, LOGL_NOTICE, "BSS instructs us to MS default "
+ "bucket leak rate of 0, stopping DL GPRS!\n");
+ else if (old_r_def_ms == 0 && bctx->r_default_ms != 0)
+ LOGP(DBSSGP, LOGL_NOTICE, "BSS instructs us to MS default "
+ "bucket leak rate != 0, restarting DL GPRS!\n");
+
+ /* reconfigure the timer for flow control based on new values */
+ fc_queue_timer_cfg(bctx->fc);
+
/* Send FLOW_CONTROL_BVC_ACK */
return bssgp_tx_fc_bvc_ack(msgb_nsei(msg), *TLVP_VAL(tp, BSSGP_IE_TAG),
msgb_bvci(msg));
--
1.8.3.1
--wac7ysb48OaltWcw--
Hello everybody.
I was successful in running the calypso BTS by using the openBTS (without
gprs).
Now I am trying to setup a GPRS N/w with the guide provided at
http://wush.net/trac/rangepublic/wiki/GPRS and by using the same Calypso
BTS. Want to know whether if this can work out. If not I want to do some
minimal implementation (GPRS attach or just activate a PDP context).
I followed the tutorial and I am here with logs from PCU and SGSN.
LOG from Osmo-PCU
# ./osmo-pcu -n 06 -m 234
<0001> pcu_l1_if.cpp:375 BTS available
<0001> pcu_l1_if.cpp:91 Sending activate request: trx=0 ts=6
<0001> pcu_l1_if.cpp:502 PDCH: trx=0 ts=6
<0001> pcu_l1_if.cpp:91 Sending activate request: trx=0 ts=7
<0001> pcu_l1_if.cpp:502 PDCH: trx=0 ts=7
<0009> gprs_bssgp_pcu.cpp:508 NS-VC 4 is unblocked.
<0008> gprs_bssgp_pcu.cpp:549 Sending reset on BVCI 0
<0008> gprs_bssgp_pcu.cpp:557 Sending reset on BVCI 7
<0008> gprs_bssgp_pcu.cpp:565 Sending unblock on BVCI 7
<0001> pcu_l1_if.cpp:296 RACH request received: sapi=1 qta=1, ra=120,
fn=961674
<0002> gprs_rlcmac_data.cpp:1901 Got IMM.ASS confirm, but rest octets
do not start with bit sequence 'HH01' (Packet Downlink
Assignment)
0002> gprs_rlcmac_data.cpp:564 TBF T3169 timeout during transsmission
<0002> gprs_rlcmac_data.cpp:82 - Assignment was on CCCH
<0002> gprs_rlcmac_data.cpp:88 - No uplink data received yet
<0001> pcu_l1_if.cpp:296 RACH request received: sapi=1 qta=1, ra=124,
fn=963005
<0002> gprs_rlcmac_data.cpp:1901 Got IMM.ASS confirm, but rest octets
do not start with bit sequence 'HH01' (Packet
DownlinkAssignment)
0002> gprs_rlcmac_data.cpp:564 TBF T3169 timeout during transsmission
<0002> gprs_rlcmac_data.cpp:82 - Assignment was on CCCH
<0002> gprs_rlcmac_data.cpp:88 - No uplink data received yet
After a successful GSM attach procedure the phone is accessing the BTS on
RACH for a GPRS attach.
This set of statements repeats as long as the phone trying to do a GPRS
attach send requests on RACH. It seems like the phone BTS receives RACH and
a channel is assigned (IMM ASS, I can see this TBF assignment in
Wireshark), but I doubt whether this IMM ASS has reached the phone that is
trying to GPRS attach.
Log from SGSN
#./osmo-sgsn
<0010> gprs_ns.c:171 NSVCI=65534 Creating NS-VC
<0010> gprs_ns.c:171 NSVCI=65535 Creating NS-VC
<0010> gprs_ns.c:806 Creating NS-VC for BSS at 192.168.111.144:5948
<0010> gprs_ns.c:679 NSEI=65535 Rx NS RESET (NSVCI=0, cause=O&M
intervention)
<0010> gprs_ns.c:538 NSEI=8 Tx NS RESET ACK (NSVCI=4)
<0010> gprs_ns.c:679 NSEI=4 Rx NS RESET (NSVCI=8, cause=PDU not compatible
with protocol state)
<0010> gprs_ns.c:538 NSEI=8 Tx NS RESET ACK (NSVCI=4)
<0010> gprs_ns.c:865 NSEI=8 Rx NS UNBLOCK
<0010> gprs_ns.c:865 NSEI=8 Rx NS UNBLOCK
<0011> gprs_bssgp.c:249 BSSGP BVCI=0 Rx RESET cause=O&M intervention
<0011> gprs_bssgp.c:249 BSSGP BVCI=7 Rx RESET cause=O&M intervention
<0011> gprs_bssgp.c:272 Cell 234-6-1000-0 CI 0 on BVCI 7
<0011> gprs_bssgp.c:344 BSSGP BVCI=7 Rx BVC-UNBLOCK
<0011> gprs_bssgp.c:747 BSSGP BVCI=7 Rx Flow Control BVC
<0011> gprs_bssgp.c:747 BSSGP BVCI=7 Rx Flow Control BVC
and The last statement repeats.........
the statement
Cell 234-6-1000-0 CI 0 on BVCI 7
The RAI and Cell ID are 0 and 0.... But when I read the code gprs_bssgp.c
it says these parameters will be received from BSS. If I set these
parameters in OpenBTS.db similar to LAC=RAC but still there is no effect.
I am running ./ggsn, ./osmo-sgsn, ./osmo-pcu, ./openbts
Is osmo-nitb needed along with SGSN and PCU.
I fail to do GPRS attcach in this situation. Can someone please give your
comments and guide me with some suggestions.
regards,
Altaf
Hi,
automake 1.13 appeared on my system lately.
As with every version bump of auto* some directives are no more 'en vogue'.
This time it's INCLUDES in Makefile.am files. AM_CPPFLAGS should be used now,
INCLUDES will be removed in some future release.
I created trivial patches for the osmo projects using autotools of which I
already had clones.
These are:
libosmo-abis
libosmocore
libosmo-dsp
libosmo-sccp
openbsc
osmo-bts
osmocom-bb
osmo-gmr
The patches are for the master branch of the respective repository,
current HEAD.
I'll send the patches individually.
Feel free to apply the patches if they seem useful.
Otherwise, feedback is appreciated.
Kind regards,
-Alexander Huemer