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/gerrit-log@lists.osmocom.org/.
lynxis lazus gerrit-no-reply at lists.osmocom.orgHello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/457 to look at the new patch set (#2). sgsn: add statistics counter for GPRS and PDP packets Changing the test to allow still allocated block from the rate counters. Change-Id: Ie30e4c3084ee3a138d6b39bb5000234ac814e65f --- M openbsc/include/openbsc/gprs_sgsn.h M openbsc/include/openbsc/sgsn.h M openbsc/src/gprs/gprs_gmm.c M openbsc/src/gprs/gprs_sgsn.c M openbsc/src/gprs/sgsn_main.c M openbsc/tests/sgsn/sgsn_test.c 6 files changed, 78 insertions(+), 3 deletions(-) git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/57/457/2 diff --git a/openbsc/include/openbsc/gprs_sgsn.h b/openbsc/include/openbsc/gprs_sgsn.h index 0e574d8..d0fb9e3 100644 --- a/openbsc/include/openbsc/gprs_sgsn.h +++ b/openbsc/include/openbsc/gprs_sgsn.h @@ -454,4 +454,6 @@ struct sgsn_instance; int sgsn_gtp_init(struct sgsn_instance *sgi); +void sgsn_rate_ctr_init(); + #endif /* _GPRS_SGSN_H */ diff --git a/openbsc/include/openbsc/sgsn.h b/openbsc/include/openbsc/sgsn.h index fe16593..7f6abf7 100644 --- a/openbsc/include/openbsc/sgsn.h +++ b/openbsc/include/openbsc/sgsn.h @@ -20,6 +20,28 @@ SGSN_AUTH_POLICY_REMOTE }; + +enum sgsn_rate_ctr_keys { + CTR_GPRS_ATTACH_REQUEST, + CTR_GPRS_ATTACH_ACKED, + CTR_GPRS_ATTACH_REJECTED, + CTR_GPRS_DETACH_REQUEST, + CTR_GPRS_DETACH_ACKED, + CTR_GPRS_ROUTING_AREA_REQUEST, + CTR_GPRS_ROUTING_AREA_ACKED, + CTR_GPRS_ROUTING_AREA_REJECT, + /* PDP single packet counter / GSM 04.08 9.5.1 - 9.5.9 */ + CTR_PDP_ACTIVATE_REQUEST, + CTR_PDP_ACTIVATE_REJECT, + CTR_PDP_ACTIVATE_ACCEPT, + CTR_PDP_REQUEST_ACTIVATE, /* unused */ + CTR_PDP_REQUEST_ACTIVATE_REJ, /* unused */ + CTR_PDP_MODIFY_REQUEST, /* unsued */ + CTR_PDP_MODIFY_ACCEPT, /* unused */ + CTR_PDP_DEACTIVATE_REQUEST, + CTR_PDP_DEACTIVATE_ACCEPT, +}; + struct sgsn_cdr { char *filename; int interval; @@ -88,6 +110,8 @@ struct llist_head ares_fds; ares_channel ares_channel; struct ares_addr_node *ares_servers; + + struct rate_ctr_group *rate_ctrs; }; extern struct sgsn_instance *sgsn; diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c index 5db69dd..b94c55a 100644 --- a/openbsc/src/gprs/gprs_gmm.c +++ b/openbsc/src/gprs/gprs_gmm.c @@ -288,6 +288,7 @@ #endif LOGMMCTXP(LOGL_INFO, mm, "<- GPRS ATTACH ACCEPT (new P-TMSI=0x%08x)\n", mm->p_tmsi); + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_GPRS_ATTACH_ACKED]); mmctx2msgid(msg, mm); @@ -339,6 +340,7 @@ LOGMMCTXP(LOGL_NOTICE, mm, "<- GPRS ATTACH REJECT: %s\n", get_value_string(gsm48_gmm_cause_names, gmm_cause)); + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_GPRS_ATTACH_REJECTED]); gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh) + 1); gh->proto_discr = GSM48_PDISC_MM_GPRS; @@ -371,6 +373,7 @@ /* MMCTX might be NULL! */ DEBUGP(DMM, "<- GPRS MM DETACH ACC (force-standby: %d)\n", force_stby); + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_GPRS_DETACH_ACKED]); gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh) + 1); gh->proto_discr = GSM48_PDISC_MM_GPRS; @@ -839,6 +842,7 @@ int rc; LOGMMCTXP(LOGL_INFO, ctx, "-> GMM ATTACH REQUEST "); + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_GPRS_ATTACH_REQUEST]); /* As per TS 04.08 Chapter 4.7.1.4, the attach request arrives either * with a foreign TLLI (P-TMSI that was allocated to the MS before), @@ -999,7 +1003,7 @@ power_off = gh->data[0] & 0x8; /* FIXME: In 24.008 there is an optional P-TMSI and P-TMSI signature IE */ - + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_GPRS_DETACH_REQUEST]); LOGMMCTXP(LOGL_INFO, ctx, "-> GMM DETACH REQUEST TLLI=0x%08x type=%s %s\n", msgb_tlli(msg), get_value_string(gprs_det_t_mo_strs, detach_type), power_off ? "Power-off" : ""); @@ -1033,6 +1037,7 @@ struct gsm48_ra_upd_ack *rua; uint8_t *mid; + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_GPRS_ROUTING_AREA_ACKED]); LOGMMCTXP(LOGL_INFO, mm, "<- ROUTING AREA UPDATE ACCEPT\n"); mmctx2msgid(msg, mm); @@ -1079,6 +1084,7 @@ struct gsm48_hdr *gh; LOGP(DMM, LOGL_NOTICE, "<- ROUTING AREA UPDATE REJECT\n"); + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_GPRS_ROUTING_AREA_REJECT]); gmm_copy_id(msg, old_msg); @@ -1141,6 +1147,7 @@ /* Update Type 10.5.5.18 */ upd_type = *cur++ & 0x0f; + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_GPRS_ROUTING_AREA_REQUEST]); LOGP(DMM, LOGL_INFO, "-> GMM RA UPDATE REQUEST type=\"%s\"\n", get_value_string(gprs_upd_t_strs, upd_type)); @@ -1583,7 +1590,7 @@ } #endif -/* Section 9.5.2: Ativate PDP Context Accept */ +/* Section 9.5.2: Activate PDP Context Accept */ int gsm48_tx_gsm_act_pdp_acc(struct sgsn_pdp_ctx *pdp) { struct msgb *msg = gsm48_msgb_alloc_name("GSM 04.08 PDP ACC"); @@ -1591,6 +1598,7 @@ uint8_t transaction_id = pdp->ti ^ 0x8; /* flip */ LOGPDPCTXP(LOGL_INFO, pdp, "<- ACTIVATE PDP CONTEXT ACK\n"); + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_PDP_ACTIVATE_ACCEPT]); mmctx2msgid(msg, pdp->mm); @@ -1635,6 +1643,7 @@ uint8_t transaction_id = tid ^ 0x8; /* flip */ LOGMMCTXP(LOGL_NOTICE, mm, "<- ACTIVATE PDP CONTEXT REJ(cause=%u)\n", cause); + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_PDP_ACTIVATE_REJECT]); mmctx2msgid(msg, mm); @@ -1658,6 +1667,7 @@ uint8_t transaction_id = tid ^ 0x8; /* flip */ LOGMMCTXP(LOGL_INFO, mm, "<- DEACTIVATE PDP CONTEXT REQ\n"); + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_PDP_DEACTIVATE_REQUEST]); mmctx2msgid(msg, mm); @@ -1684,6 +1694,7 @@ uint8_t transaction_id = tid ^ 0x8; /* flip */ LOGMMCTXP(LOGL_INFO, mm, "<- DEACTIVATE PDP CONTEXT ACK\n"); + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_PDP_DEACTIVATE_ACCEPT]); mmctx2msgid(msg, mm); @@ -1963,6 +1974,8 @@ struct msgb *msg; int rc; + rate_ctr_inc(&sgsn->rate_ctrs->ctr[CTR_PDP_ACTIVATE_REQUEST]); + /* * This is painful. We might not have a static GGSN * configuration and then would need to copy the msg diff --git a/openbsc/src/gprs/gprs_sgsn.c b/openbsc/src/gprs/gprs_sgsn.c index 98439de..3e5ebcd 100644 --- a/openbsc/src/gprs/gprs_sgsn.c +++ b/openbsc/src/gprs/gprs_sgsn.c @@ -90,6 +90,40 @@ .class_id = OSMO_STATS_CLASS_SUBSCRIBER, }; +static const struct rate_ctr_desc sgsn_ctr_description[] = { +{"gprs.attempts_request", "attach request received"}, +{"gprs.attempts_accepted", "attach request accepted"}, +{"gprs.attempts_failed", "attach request rejected"}, +{"gprs.detach_request", "detach request received"}, +{"gprs.detach_acked", "detach request acked"}, +{"gprs.routing_area_req", ""}, +{"pdp.activate_requests", ""}, +{"pdp.activate_reject", ""}, +{"pdp.activate_accept", ""}, +{"pdp.request_activate", ""}, +{"pdp.request_activate_rej", ""}, +{"pdp.modify_request", ""}, +{"pdp.modify_accept", ""}, +{"pdp.deactivate_request", ""}, +{"pdp.deactivate_accept", ""}, +{"pdp.attempts", ""}, +{"pdp.attempts_failed", ""}, +{"pdp.updates", ""}, +{"pdp.updates_failed", ""}, +}; + +static const struct rate_ctr_group_desc sgsn_ctrg_desc = { + "sgsn", + "SGSN Overall Statistics", + OSMO_STATS_CLASS_GLOBAL, + ARRAY_SIZE(sgsn_ctr_description), + sgsn_ctr_description, +}; + +void sgsn_rate_ctr_init() { + sgsn->rate_ctrs = rate_ctr_group_alloc(tall_bsc_ctx, &sgsn_ctrg_desc, 0); +} + /* look-up a SGSN MM context based on TLLI + RAI */ struct sgsn_mm_ctx *sgsn_mm_ctx_by_tlli(uint32_t tlli, const struct gprs_ra_id *raid) diff --git a/openbsc/src/gprs/sgsn_main.c b/openbsc/src/gprs/sgsn_main.c index c852840..007db1b 100644 --- a/openbsc/src/gprs/sgsn_main.c +++ b/openbsc/src/gprs/sgsn_main.c @@ -340,6 +340,7 @@ bssgp_nsi = sgsn_inst.cfg.nsi = sgsn_nsi; gprs_llc_init("/usr/local/lib/osmocom/crypt/"); + sgsn_rate_ctr_init(); sgsn_inst_init(); gprs_ns_vty_init(bssgp_nsi); diff --git a/openbsc/tests/sgsn/sgsn_test.c b/openbsc/tests/sgsn/sgsn_test.c index d568807..a96f788 100644 --- a/openbsc/tests/sgsn/sgsn_test.c +++ b/openbsc/tests/sgsn/sgsn_test.c @@ -2410,6 +2410,7 @@ tall_bsc_ctx = talloc_named_const(osmo_sgsn_ctx, 0, "bsc"); tall_msgb_ctx = talloc_named_const(osmo_sgsn_ctx, 0, "msgb"); + sgsn_rate_ctr_init(); sgsn_auth_init(); gprs_subscr_init(sgsn); @@ -2439,7 +2440,7 @@ talloc_report_full(osmo_sgsn_ctx, stderr); OSMO_ASSERT(talloc_total_blocks(tall_msgb_ctx) == 1); - OSMO_ASSERT(talloc_total_blocks(tall_bsc_ctx) == 1); + OSMO_ASSERT(talloc_total_blocks(tall_bsc_ctx) == 2); return 0; } -- To view, visit https://gerrit.osmocom.org/457 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ie30e4c3084ee3a138d6b39bb5000234ac814e65f Gerrit-PatchSet: 2 Gerrit-Project: openbsc Gerrit-Branch: master Gerrit-Owner: lynxis lazus <lynxis at fe80.eu> Gerrit-Reviewer: Jenkins Builder