diff --git a/openbsc/include/openbsc/gsm_data.h b/openbsc/include/openbsc/gsm_data.h
index b9cb48d..6168a6b 100644
--- a/openbsc/include/openbsc/gsm_data.h
+++ b/openbsc/include/openbsc/gsm_data.h
@@ -7,7 +7,10 @@
 #include <stdbool.h>
 
 #include <osmocom/core/timer.h>
+#include <osmocom/core/rate_ctr.h>
 #include <osmocom/core/select.h>
+#include <osmocom/core/stats.h>
+
 #include <osmocom/crypt/auth.h>
 
 #include <openbsc/rest_octets.h>
@@ -148,55 +151,79 @@
 
 
 /* Some statistics of our network */
-struct gsmnet_stats {
-	struct {
-		struct osmo_counter *total;
-		struct osmo_counter *no_channel;
-	} chreq;
-	struct {
-		struct osmo_counter *attempted;
-		struct osmo_counter *no_channel;	/* no channel available */
-		struct osmo_counter *timeout;		/* T3103 timeout */
-		struct osmo_counter *completed;	/* HO COMPL received */
-		struct osmo_counter *failed;		/* HO FAIL received */
-	} handover;
-	struct {
-		struct osmo_counter *attach;
-		struct osmo_counter *normal;
-		struct osmo_counter *periodic;
-		struct osmo_counter *detach;
-	} loc_upd_type;
-	struct {
-		struct osmo_counter *reject;
-		struct osmo_counter *accept;
-	} loc_upd_resp;
-	struct {
-		struct osmo_counter *attempted;
-		struct osmo_counter *detached;
-		struct osmo_counter *completed;
-		struct osmo_counter *expired;
-	} paging;
-	struct {
-		struct osmo_counter *submitted; /* MO SMS submissions */
-		struct osmo_counter *no_receiver;
-		struct osmo_counter *delivered; /* MT SMS deliveries */
-		struct osmo_counter *rp_err_mem;
-		struct osmo_counter *rp_err_other;
-	} sms;
-	struct {
-		struct osmo_counter *mo_setup;
-		struct osmo_counter *mo_connect_ack;
-		struct osmo_counter *mt_setup;
-		struct osmo_counter *mt_connect;
-	} call;
-	struct {
-		struct osmo_counter *rf_fail;
-		struct osmo_counter *rll_err;
-	} chan;
-	struct {
-		struct osmo_counter *oml_fail;
-		struct osmo_counter *rsl_fail;
-	} bts;
+enum {
+	MSC_CTR_CHREQ_TOTAL,
+	MSC_CTR_CHREQ_NO_CHANNEL,
+	MSC_CTR_HANDOVER_ATTEMPTED,
+	MSC_CTR_HANDOVER_NO_CHANNEL,
+	MSC_CTR_HANDOVER_TIMEOUT,
+	MSC_CTR_HANDOVER_COMPLETED,
+	MSC_CTR_HANDOVER_FAILED,
+	MSC_CTR_LOC_UPDATE_TYPE_ATTACH,
+	MSC_CTR_LOC_UPDATE_TYPE_NORMAL,
+	MSC_CTR_LOC_UPDATE_TYPE_PERIODIC,
+	MSC_CTR_LOC_UPDATE_TYPE_DETACH,
+	MSC_CTR_LOC_UPDATE_RESP_REJECT,
+	MSC_CTR_LOC_UPDATE_RESP_ACCEPT,
+	MSC_CTR_PAGING_ATTEMPTED,
+	MSC_CTR_PAGING_DETACHED,
+	MSC_CTR_PAGING_COMPLETED,
+	MSC_CTR_PAGING_EXPIRED,
+	MSC_CTR_SMS_SUBMITTED,
+	MSC_CTR_SMS_NO_RECEIVER,
+	MSC_CTR_SMS_DELIVERED,
+	MSC_CTR_SMS_RP_ERR_MEM,
+	MSC_CTR_SMS_RP_ERR_OTHER,
+	MSC_CTR_CALL_MO_SETUP,
+	MSC_CTR_CALL_MO_CONNECT_ACK,
+	MSC_CTR_CALL_MT_SETUP,
+	MSC_CTR_CALL_MT_CONNECT,
+	MSC_CTR_CHAN_RF_FAIL,
+	MSC_CTR_CHAN_RLL_ERR,
+	MSC_CTR_BTS_OML_FAIL,
+	MSC_CTR_BTS_RSL_FAIL,
+};
+
+static const struct rate_ctr_desc msc_ctr_description[] = {
+	[MSC_CTR_CHREQ_TOTAL] = 		{"chreq.total", "Received channel requests."},
+	[MSC_CTR_CHREQ_NO_CHANNEL] = 		{"chreq.no_channel", "Sent to MS no channel available."},
+	[MSC_CTR_HANDOVER_ATTEMPTED] = 		{"handover.attempted", "Received handover attempts."},
+	[MSC_CTR_HANDOVER_NO_CHANNEL] = 		{"handover.no_channel", "Sent no channel available responses."},
+	[MSC_CTR_HANDOVER_TIMEOUT] = 		{"handover.timeout", "Count the amount of timeouts of timer T3103."},
+	[MSC_CTR_HANDOVER_COMPLETED] = 		{"handover.completed", "Received handover completed."},
+	[MSC_CTR_HANDOVER_FAILED] = 		{"handover.failed", "Receive HO FAIL messages."},
+	[MSC_CTR_LOC_UPDATE_TYPE_ATTACH] = 		{"loc_update_type.attach", "Received location update imsi attach requests."},
+	[MSC_CTR_LOC_UPDATE_TYPE_NORMAL] = 		{"loc_update_type.normal", "Received location update normal requests."},
+	[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC] = 		{"loc_update_type.periodic", "Received location update periodic requests."},
+	[MSC_CTR_LOC_UPDATE_TYPE_DETACH] = 		{"loc_update_type.detach", "Received location update detach indication."},
+	[MSC_CTR_LOC_UPDATE_RESP_REJECT] = 		{"loc_update_resp.reject", "Sent location update reject responses."},
+	[MSC_CTR_LOC_UPDATE_RESP_ACCEPT] = 		{"loc_update_resp.accept", "Sent location update accept responses."},
+	[MSC_CTR_PAGING_ATTEMPTED] = 		{"paging.attempted", "Paging attempts for a MS."},
+	[MSC_CTR_PAGING_DETACHED] = 		{"paging.detached", "Counts the amount of paging attempts which couldn't sent out any paging request because no responsible bts found."},
+	[MSC_CTR_PAGING_COMPLETED] = 		{"paging.completed", "Paging successful completed."},
+	[MSC_CTR_PAGING_EXPIRED] = 		{"paging.expired", "Paging Request expired because of timeout T3113."},
+	[MSC_CTR_SMS_SUBMITTED] = 		{"sms.submitted", "Received a RPDU from a MS (MO)."},
+	[MSC_CTR_SMS_NO_RECEIVER] = 		{"sms.no_receiver", "Counts SMS which couldn't routed because no receiver found."},
+	[MSC_CTR_SMS_DELIVERED] = 		{"sms.delivered", "Global SMS Deliver attempts."},
+	[MSC_CTR_SMS_RP_ERR_MEM] = 		{"sms.rp_err_mem", "CAUSE_MT_MEM_EXCEEDED errors of MS responses on a sms deliver attempt."},
+	[MSC_CTR_SMS_RP_ERR_OTHER] = 		{"sms.rp_err_other", "Other error of MS responses on a sms delive attempt."},
+	/* FIXME: count also sms delivered */
+	[MSC_CTR_CALL_MO_SETUP] = 		{"call.mo_setup", "Received setup requests from a MS to init a MO call."},
+	[MSC_CTR_CALL_MO_CONNECT_ACK] = 		{"call.mo_connect_ack", "Received a connect ack from MS of a MO call. Call is now succesful connected up."},
+	[MSC_CTR_CALL_MT_SETUP] = 		{"call.mt_setup", "Sent setup requests to the MS (MT)."},
+	[MSC_CTR_CALL_MT_CONNECT] = 		{"call.mt_connect", "Sent a connect to the MS (MT)."},
+	[MSC_CTR_CHAN_RF_FAIL] = 		{"chan.rf_fail", "Received a RF failure indication from BTS."},
+	[MSC_CTR_CHAN_RLL_ERR] = 		{"chan.rll_err", "Received a RLL failure with T200 cause from BTS."},
+	[MSC_CTR_BTS_OML_FAIL] = 		{"bts.oml_fail", "Received a TEI down on a OML link."},
+	[MSC_CTR_BTS_RSL_FAIL] = 		{"bts.rsl_fail", "Received a TEI down on a OML link."},
+};
+
+static const struct rate_ctr_group_desc msc_ctrg_desc = {
+	"msc",
+	"mobile switching center",
+	OSMO_STATS_CLASS_GLOBAL,
+	ARRAY_SIZE(msc_ctr_description),
+	msc_ctr_description,
 };
 
 enum gsm_auth_policy {
@@ -241,7 +268,8 @@
 		unsigned int max_distance;	/* TA values */
 	} handover;
 
-	struct gsmnet_stats stats;
+	struct rate_ctr_group *ratectrs;
+
 
 	/* layer 4 */
 	struct mncc_sock_state *mncc_state;
diff --git a/openbsc/src/libbsc/abis_rsl.c b/openbsc/src/libbsc/abis_rsl.c
index b84a0b5..092ec4e 100644
--- a/openbsc/src/libbsc/abis_rsl.c
+++ b/openbsc/src/libbsc/abis_rsl.c
@@ -1207,7 +1207,7 @@
 				TLVP_LEN(&tp, RSL_IE_CAUSE));
 
 	LOGPC(DRSL, LOGL_NOTICE, "\n");
-	osmo_counter_inc(msg->lchan->ts->trx->bts->network->stats.chan.rf_fail);
+	rate_ctr_inc(&msg->lchan->ts->trx->bts->network->ratectrs->ctr[MSC_CTR_CHAN_RF_FAIL]);
 	return rsl_rf_chan_release_err(msg->lchan);
 }
 
@@ -1641,7 +1641,7 @@
 	lctype = get_ctype_by_chreq(bts->network, rqd_ref->ra);
 	chreq_reason = get_reason_by_chreq(rqd_ref->ra, bts->network->neci);
 
-	osmo_counter_inc(bts->network->stats.chreq.total);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_CHREQ_TOTAL]);
 
 	/*
 	 * We want LOCATION UPDATES to succeed and will assign a TCH
@@ -1654,7 +1654,7 @@
 	if (!lchan) {
 		LOGP(DRSL, LOGL_NOTICE, "BTS %d CHAN RQD: no resources for %s 0x%x\n",
 		     msg->lchan->ts->trx->bts->nr, gsm_lchant_name(lctype), rqd_ref->ra);
-		osmo_counter_inc(bts->network->stats.chreq.no_channel);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_CHREQ_NO_CHANNEL]);
 		/* FIXME gather multiple CHAN RQD and reject up to 4 at the same time */
 		if (bts->network->T3122)
 			rsl_send_imm_ass_rej(bts, 1, rqd_ref, bts->network->T3122 & 0xff);
@@ -1837,7 +1837,7 @@
 	rll_indication(msg->lchan, rllh->link_id, BSC_RLLR_IND_ERR_IND);
 
 	if (rlm_cause == RLL_CAUSE_T200_EXPIRED) {
-		osmo_counter_inc(msg->lchan->ts->trx->bts->network->stats.chan.rll_err);
+		rate_ctr_inc(&msg->lchan->ts->trx->bts->network->ratectrs->ctr[MSC_CTR_CHAN_RLL_ERR]);
 		return rsl_rf_chan_release_err(msg->lchan);
 	}
 
diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c
index 5c27862..5ea85d0 100644
--- a/openbsc/src/libbsc/bsc_init.c
+++ b/openbsc/src/libbsc/bsc_init.c
@@ -340,9 +340,9 @@
 		LOGP(DLMI, LOGL_ERROR, "Lost some E1 TEI link: %d %p\n", isd->link_type, trx);
 
 		if (isd->link_type == E1INP_SIGN_OML)
-			osmo_counter_inc(trx->bts->network->stats.bts.oml_fail);
+			rate_ctr_inc(&trx->bts->network->ratectrs->ctr[MSC_CTR_BTS_OML_FAIL]);
 		else if (isd->link_type == E1INP_SIGN_RSL)
-			osmo_counter_inc(trx->bts->network->stats.bts.rsl_fail);
+			rate_ctr_inc(&trx->bts->network->ratectrs->ctr[MSC_CTR_BTS_RSL_FAIL]);
 
 		/*
 		 * free all allocated channels. change the nm_state so the
diff --git a/openbsc/src/libbsc/bsc_vty.c b/openbsc/src/libbsc/bsc_vty.c
index 6584cf0..fbaf06b 100644
--- a/openbsc/src/libbsc/bsc_vty.c
+++ b/openbsc/src/libbsc/bsc_vty.c
@@ -3784,18 +3784,22 @@
 void openbsc_vty_print_statistics(struct vty *vty, struct gsm_network *net)
 {
 	vty_out(vty, "Channel Requests        : %lu total, %lu no channel%s",
-		osmo_counter_get(net->stats.chreq.total),
-		osmo_counter_get(net->stats.chreq.no_channel), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_CHREQ_TOTAL].current,
+		net->ratectrs->ctr[MSC_CTR_CHREQ_NO_CHANNEL].current,
+		VTY_NEWLINE);
 	vty_out(vty, "Channel Failures        : %lu rf_failures, %lu rll failures%s",
-		osmo_counter_get(net->stats.chan.rf_fail),
-		osmo_counter_get(net->stats.chan.rll_err), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_CHAN_RF_FAIL].current,
+		net->ratectrs->ctr[MSC_CTR_CHAN_RLL_ERR].current,
+		VTY_NEWLINE);
 	vty_out(vty, "Paging                  : %lu attempted, %lu complete, %lu expired%s",
-		osmo_counter_get(net->stats.paging.attempted),
-		osmo_counter_get(net->stats.paging.completed),
-		osmo_counter_get(net->stats.paging.expired), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_PAGING_ATTEMPTED].current,
+		net->ratectrs->ctr[MSC_CTR_PAGING_COMPLETED].current,
+		net->ratectrs->ctr[MSC_CTR_PAGING_EXPIRED].current,
+		VTY_NEWLINE);
 	vty_out(vty, "BTS failures            : %lu OML, %lu RSL%s",
-		osmo_counter_get(net->stats.bts.oml_fail),
-		osmo_counter_get(net->stats.bts.rsl_fail), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_BTS_OML_FAIL].current,
+		net->ratectrs->ctr[MSC_CTR_BTS_RSL_FAIL].current,
+		VTY_NEWLINE);
 }
 
 DEFUN(drop_bts,
diff --git a/openbsc/src/libbsc/gsm_04_08_utils.c b/openbsc/src/libbsc/gsm_04_08_utils.c
index 635665a..d4eca4a 100644
--- a/openbsc/src/libbsc/gsm_04_08_utils.c
+++ b/openbsc/src/libbsc/gsm_04_08_utils.c
@@ -304,7 +304,7 @@
 		subscr = conn->subscr;
 	}
 
-	osmo_counter_inc(bts->network->stats.paging.completed);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_PAGING_COMPLETED]);
 
 	/* Stop paging on the bts we received the paging response */
 	paging_request_stop(conn->bts, subscr, conn, msg);
diff --git a/openbsc/src/libbsc/handover_logic.c b/openbsc/src/libbsc/handover_logic.c
index 52fa4af..5424e27 100644
--- a/openbsc/src/libbsc/handover_logic.c
+++ b/openbsc/src/libbsc/handover_logic.c
@@ -103,7 +103,7 @@
 	DEBUGP(DHO, "(old_lchan on BTS %u, new BTS %u)\n",
 		old_lchan->ts->trx->bts->nr, bts->nr);
 
-	osmo_counter_inc(bts->network->stats.handover.attempted);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_HANDOVER_ATTEMPTED]);
 
 	if (!old_lchan->conn) {
 		LOGP(DHO, LOGL_ERROR, "Old lchan lacks connection data.\n");
@@ -113,7 +113,7 @@
 	new_lchan = lchan_alloc(bts, old_lchan->type, 0);
 	if (!new_lchan) {
 		LOGP(DHO, LOGL_NOTICE, "No free channel\n");
-		osmo_counter_inc(bts->network->stats.handover.no_channel);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_HANDOVER_NO_CHANNEL]);
 		return -ENOSPC;
 	}
 
@@ -188,7 +188,7 @@
 	struct gsm_network *net = ho->new_lchan->ts->trx->bts->network;
 
 	DEBUGP(DHO, "HO T3103 expired\n");
-	osmo_counter_inc(net->stats.handover.timeout);
+	rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_HANDOVER_TIMEOUT]);
 
 	ho->new_lchan->conn->ho_lchan = NULL;
 	ho->new_lchan->conn = NULL;
@@ -265,7 +265,7 @@
 	     ho->old_lchan->ts->trx->bts->nr, new_lchan->ts->trx->bts->nr,
 	     ho->old_lchan->ts->trx->arfcn, new_lchan->ts->trx->arfcn);
 
-	osmo_counter_inc(net->stats.handover.completed);
+	rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_HANDOVER_COMPLETED]);
 
 	osmo_timer_del(&ho->T3103);
 
@@ -303,7 +303,7 @@
 		return -ENODEV;
 	}
 
-	osmo_counter_inc(net->stats.handover.failed);
+	rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_HANDOVER_FAILED]);
 
 	new_lchan = ho->new_lchan;
 
diff --git a/openbsc/src/libbsc/net_init.c b/openbsc/src/libbsc/net_init.c
index 6d03ee4..b99f3d2 100644
--- a/openbsc/src/libbsc/net_init.c
+++ b/openbsc/src/libbsc/net_init.c
@@ -80,36 +80,8 @@
 	INIT_LLIST_HEAD(&net->upqueue);
 	INIT_LLIST_HEAD(&net->bts_list);
 
-	net->stats.chreq.total = osmo_counter_alloc("net.chreq.total");
-	net->stats.chreq.no_channel = osmo_counter_alloc("net.chreq.no_channel");
-	net->stats.handover.attempted = osmo_counter_alloc("net.handover.attempted");
-	net->stats.handover.no_channel = osmo_counter_alloc("net.handover.no_channel");
-	net->stats.handover.timeout = osmo_counter_alloc("net.handover.timeout");
-	net->stats.handover.completed = osmo_counter_alloc("net.handover.completed");
-	net->stats.handover.failed = osmo_counter_alloc("net.handover.failed");
-	net->stats.loc_upd_type.attach = osmo_counter_alloc("net.loc_upd_type.attach");
-	net->stats.loc_upd_type.normal = osmo_counter_alloc("net.loc_upd_type.normal");
-	net->stats.loc_upd_type.periodic = osmo_counter_alloc("net.loc_upd_type.periodic");
-	net->stats.loc_upd_type.detach = osmo_counter_alloc("net.imsi_detach.count");
-	net->stats.loc_upd_resp.reject = osmo_counter_alloc("net.loc_upd_resp.reject");
-	net->stats.loc_upd_resp.accept = osmo_counter_alloc("net.loc_upd_resp.accept");
-	net->stats.paging.attempted = osmo_counter_alloc("net.paging.attempted");
-	net->stats.paging.detached = osmo_counter_alloc("net.paging.detached");
-	net->stats.paging.completed = osmo_counter_alloc("net.paging.completed");
-	net->stats.paging.expired = osmo_counter_alloc("net.paging.expired");
-	net->stats.sms.submitted = osmo_counter_alloc("net.sms.submitted");
-	net->stats.sms.no_receiver = osmo_counter_alloc("net.sms.no_receiver");
-	net->stats.sms.delivered = osmo_counter_alloc("net.sms.delivered");
-	net->stats.sms.rp_err_mem = osmo_counter_alloc("net.sms.rp_err_mem");
-	net->stats.sms.rp_err_other = osmo_counter_alloc("net.sms.rp_err_other");
-	net->stats.call.mo_setup = osmo_counter_alloc("net.call.mo_setup");
-	net->stats.call.mo_connect_ack = osmo_counter_alloc("net.call.mo_connect_ack");
-	net->stats.call.mt_setup = osmo_counter_alloc("net.call.mt_setup");
-	net->stats.call.mt_connect = osmo_counter_alloc("net.call.mt_connect");
-	net->stats.chan.rf_fail = osmo_counter_alloc("net.chan.rf_fail");
-	net->stats.chan.rll_err = osmo_counter_alloc("net.chan.rll_err");
-	net->stats.bts.oml_fail = osmo_counter_alloc("net.bts.oml_fail");
-	net->stats.bts.rsl_fail = osmo_counter_alloc("net.bts.rsl_fail");
+	/* init statistics */
+	net->ratectrs = rate_ctr_group_alloc(net, &msc_ctrg_desc, 0);
 
 	net->mncc_recv = mncc_recv;
 	net->ext_min = GSM_MIN_EXTEN;
diff --git a/openbsc/src/libbsc/paging.c b/openbsc/src/libbsc/paging.c
index 9ae28e0..03c91fd 100644
--- a/openbsc/src/libbsc/paging.c
+++ b/openbsc/src/libbsc/paging.c
@@ -260,7 +260,7 @@
 		req, req->subscr->imsi);
 
 	/* must be destroyed before calling cbfn, to prevent double free */
-	osmo_counter_inc(req->bts->network->stats.paging.expired);
+	rate_ctr_inc(&req->bts->network->ratectrs->ctr[MSC_CTR_PAGING_EXPIRED]);
 	cbfn_param = req->cbfn_param;
 	cbfn = req->cbfn;
 
@@ -330,7 +330,7 @@
 	struct gsm_bts *bts = NULL;
 	int num_pages = 0;
 
-	osmo_counter_inc(network->stats.paging.attempted);
+	rate_ctr_inc(&network->ratectrs->ctr[MSC_CTR_PAGING_ATTEMPTED]);
 
 	/* start paging subscriber on all BTS within Location Area */
 	do {
@@ -349,7 +349,7 @@
 	} while (1);
 
 	if (num_pages == 0)
-		osmo_counter_inc(network->stats.paging.detached);
+		rate_ctr_inc(&network->ratectrs->ctr[MSC_CTR_PAGING_DETACHED]);
 
 	return num_pages;
 }
diff --git a/openbsc/src/libmsc/gsm_04_08.c b/openbsc/src/libmsc/gsm_04_08.c
index 1b02efe..c4ecf1c 100644
--- a/openbsc/src/libmsc/gsm_04_08.c
+++ b/openbsc/src/libmsc/gsm_04_08.c
@@ -457,7 +457,7 @@
 	struct gsm_bts *bts = conn->bts;
 	struct msgb *msg;
 
-	osmo_counter_inc(bts->network->stats.loc_upd_resp.reject);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_REJECT]);
 
 	msg = gsm48_create_loc_upd_rej(cause);
 	if (!msg) {
@@ -506,7 +506,7 @@
 
 	DEBUGP(DMM, "-> LOCATION UPDATE ACCEPT\n");
 
-	osmo_counter_inc(bts->network->stats.loc_upd_resp.accept);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_ACCEPT]);
 
 	return gsm48_conn_sendmsg(msg, conn, NULL);
 }
@@ -637,13 +637,13 @@
 
 	switch (lu->type) {
 	case GSM48_LUPD_NORMAL:
-		osmo_counter_inc(bts->network->stats.loc_upd_type.normal);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL]);
 		break;
 	case GSM48_LUPD_IMSI_ATT:
-		osmo_counter_inc(bts->network->stats.loc_upd_type.attach);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH]);
 		break;
 	case GSM48_LUPD_PERIODIC:
-		osmo_counter_inc(bts->network->stats.loc_upd_type.periodic);
+		rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC]);
 		break;
 	}
 
@@ -1063,7 +1063,7 @@
 	DEBUGP(DMM, "IMSI DETACH INDICATION: MI(%s)=%s",
 		gsm48_mi_type_name(mi_type), mi_string);
 
-	osmo_counter_inc(bts->network->stats.loc_upd_type.detach);
+	rate_ctr_inc(&bts->network->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH]);
 
 	switch (mi_type) {
 	case GSM_MI_TYPE_TMSI:
@@ -2002,7 +2002,7 @@
 	     subscr_name(trans->subscr), trans->subscr->extension,
 	     setup.called.number);
 
-	osmo_counter_inc(trans->net->stats.call.mo_setup);
+	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MO_SETUP]);
 
 	/* indicate setup to MNCC */
 	mncc_recvmsg(trans->net, trans, MNCC_SETUP_IND, &setup);
@@ -2080,7 +2080,7 @@
 	
 	new_cc_state(trans, GSM_CSTATE_CALL_PRESENT);
 
-	osmo_counter_inc(trans->net->stats.call.mt_setup);
+	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MT_SETUP]);
 
 	return gsm48_conn_sendmsg(msg, trans->conn, trans);
 }
@@ -2306,7 +2306,7 @@
 	}
 
 	new_cc_state(trans, GSM_CSTATE_CONNECT_REQUEST);
-	osmo_counter_inc(trans->net->stats.call.mt_connect);
+	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MT_CONNECT]);
 
 	return mncc_recvmsg(trans->net, trans, MNCC_SETUP_CNF, &connect);
 }
@@ -2319,7 +2319,7 @@
 	gsm48_stop_cc_timer(trans);
 
 	new_cc_state(trans, GSM_CSTATE_ACTIVE);
-	osmo_counter_inc(trans->net->stats.call.mo_connect_ack);
+	rate_ctr_inc(&trans->net->ratectrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK]);
 	
 	memset(&connect_ack, 0, sizeof(struct gsm_mncc));
 	connect_ack.callref = trans->callref;
diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 20d18a9..fba5208 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -315,14 +315,14 @@
 		rc = smpp_try_deliver(gsms, conn);
 		if (rc == 1) {
 			rc = 1; /* cause 1: unknown subscriber */
-			osmo_counter_inc(conn->bts->network->stats.sms.no_receiver);
+			rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 		} else if (rc < 0) {
 			rc = 21; /* cause 21: short message transfer rejected */
 			/* FIXME: handle the error somehow? */
 		}
 #else
 		rc = 1; /* cause 1: unknown subscriber */
-		osmo_counter_inc(conn->bts->network->stats.sms.no_receiver);
+		rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER]);
 #endif
 		return rc;
 	}
@@ -363,7 +363,7 @@
 	uint8_t address_lv[12]; /* according to 03.40 / 9.1.2.5 */
 	int rc = 0;
 
-	osmo_counter_inc(conn->bts->network->stats.sms.submitted);
+	rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_SUBMITTED]);
 
 	gsms = sms_alloc();
 	if (!gsms)
@@ -633,10 +633,10 @@
 		 * to store this in our database and wait for a SMMA message */
 		/* FIXME */
 		send_signal(S_SMS_MEM_EXCEEDED, trans, sms, 0);
-		osmo_counter_inc(net->stats.sms.rp_err_mem);
+		rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_MEM]);
 	} else {
 		send_signal(S_SMS_UNKNOWN_ERROR, trans, sms, 0);
-		osmo_counter_inc(net->stats.sms.rp_err_other);
+		rate_ctr_inc(&net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_OTHER]);
 	}
 
 	sms_free(sms);
@@ -932,7 +932,7 @@
 
 	DEBUGP(DLSMS, "TX: SMS DELIVER\n");
 
-	osmo_counter_inc(conn->bts->network->stats.sms.delivered);
+	rate_ctr_inc(&conn->bts->network->ratectrs->ctr[MSC_CTR_SMS_DELIVERED]);
 	db_sms_inc_deliver_attempts(trans->sms.sms);
 
 	return gsm411_rp_sendmsg(&trans->sms.smr_inst, msg,
diff --git a/openbsc/src/libmsc/vty_interface_layer3.c b/openbsc/src/libmsc/vty_interface_layer3.c
index 74da1d7..d1041b3 100644
--- a/openbsc/src/libmsc/vty_interface_layer3.c
+++ b/openbsc/src/libmsc/vty_interface_layer3.c
@@ -795,34 +795,42 @@
 
 	openbsc_vty_print_statistics(vty, net);
 	vty_out(vty, "Location Update         : %lu attach, %lu normal, %lu periodic%s",
-		osmo_counter_get(net->stats.loc_upd_type.attach),
-		osmo_counter_get(net->stats.loc_upd_type.normal),
-		osmo_counter_get(net->stats.loc_upd_type.periodic), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_ATTACH].current,
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_NORMAL].current,
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_PERIODIC].current,
+		VTY_NEWLINE);
 	vty_out(vty, "IMSI Detach Indications : %lu%s",
-		osmo_counter_get(net->stats.loc_upd_type.detach), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_TYPE_DETACH].current,
+		VTY_NEWLINE);
 	vty_out(vty, "Location Update Response: %lu accept, %lu reject%s",
-		osmo_counter_get(net->stats.loc_upd_resp.accept),
-		osmo_counter_get(net->stats.loc_upd_resp.reject), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_ACCEPT].current,
+		net->ratectrs->ctr[MSC_CTR_LOC_UPDATE_RESP_REJECT].current,
+		VTY_NEWLINE);
 	vty_out(vty, "Handover                : %lu attempted, %lu no_channel, %lu timeout, "
 		"%lu completed, %lu failed%s",
-		osmo_counter_get(net->stats.handover.attempted),
-		osmo_counter_get(net->stats.handover.no_channel),
-		osmo_counter_get(net->stats.handover.timeout),
-		osmo_counter_get(net->stats.handover.completed),
-		osmo_counter_get(net->stats.handover.failed), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_ATTEMPTED].current,
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_NO_CHANNEL].current,
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_TIMEOUT].current,
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_COMPLETED].current,
+		net->ratectrs->ctr[MSC_CTR_HANDOVER_FAILED].current,
+		VTY_NEWLINE);
 	vty_out(vty, "SMS MO                  : %lu submitted, %lu no receiver%s",
-		osmo_counter_get(net->stats.sms.submitted),
-		osmo_counter_get(net->stats.sms.no_receiver), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_SMS_SUBMITTED].current,
+		net->ratectrs->ctr[MSC_CTR_SMS_NO_RECEIVER].current,
+		VTY_NEWLINE);
 	vty_out(vty, "SMS MT                  : %lu delivered, %lu no memory, %lu other error%s",
-		osmo_counter_get(net->stats.sms.delivered),
-		osmo_counter_get(net->stats.sms.rp_err_mem),
-		osmo_counter_get(net->stats.sms.rp_err_other), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_SMS_DELIVERED].current,
+		net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_MEM].current,
+		net->ratectrs->ctr[MSC_CTR_SMS_RP_ERR_OTHER].current,
+		VTY_NEWLINE);
 	vty_out(vty, "MO Calls                : %lu setup, %lu connect ack%s",
-		osmo_counter_get(net->stats.call.mo_setup),
-		osmo_counter_get(net->stats.call.mo_connect_ack), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_CALL_MO_SETUP].current,
+		net->ratectrs->ctr[MSC_CTR_CALL_MO_CONNECT_ACK].current,
+		VTY_NEWLINE);
 	vty_out(vty, "MT Calls                : %lu setup, %lu connect%s",
-		osmo_counter_get(net->stats.call.mt_setup),
-		osmo_counter_get(net->stats.call.mt_connect), VTY_NEWLINE);
+		net->ratectrs->ctr[MSC_CTR_CALL_MT_SETUP].current,
+		net->ratectrs->ctr[MSC_CTR_CALL_MT_CONNECT].current,
+		VTY_NEWLINE);
 	return CMD_SUCCESS;
 }
 
