diff --git a/openbsc/include/openbsc/gprs_sgsn.h b/openbsc/include/openbsc/gprs_sgsn.h
index 9e855f8..c88a2bb 100644
--- a/openbsc/include/openbsc/gprs_sgsn.h
+++ b/openbsc/include/openbsc/gprs_sgsn.h
@@ -207,6 +207,11 @@
 	struct osmo_timer_list	timer;
 	unsigned int		T;		/* Txxxx number */
 	unsigned int		num_T_exp;	/* number of consecutive T expirations */
+
+	struct osmo_timer_list	cdr_timer;	/* CDR record wird timer */
+	struct timespec		cdr_start;	/* The start of the CDR */
+	uint64_t		cdr_bytes_in;
+	uint64_t		cdr_bytes_out;
 };
 
 #define LOGPDPCTXP(level, pdp, fmt, args...) \
diff --git a/openbsc/include/openbsc/sgsn.h b/openbsc/include/openbsc/sgsn.h
index 7d3a68c..0f9a59f 100644
--- a/openbsc/include/openbsc/sgsn.h
+++ b/openbsc/include/openbsc/sgsn.h
@@ -16,6 +16,11 @@
 	SGSN_AUTH_POLICY_REMOTE
 };
 
+struct sgsn_cdr {
+	char *filename;
+	int interval;
+};
+
 struct sgsn_config {
 	/* parsed from config file */
 
@@ -33,6 +38,9 @@
 
 	int require_authentication;
 	int require_update_location;
+
+	/* CDR configuration */
+	struct sgsn_cdr cdr;
 };
 
 struct sgsn_instance {
@@ -85,4 +93,10 @@
 int sndcp_llunitdata_ind(struct msgb *msg, struct gprs_llc_lle *lle,
 			 uint8_t *hdr, uint16_t len);
 
+
+/*
+ * CDR related functionality
+ */
+int sgsn_cdr_init(struct sgsn_instance *sgsn);
+
 #endif
diff --git a/openbsc/src/gprs/Makefile.am b/openbsc/src/gprs/Makefile.am
index bc3e21e..3d02822 100644
--- a/openbsc/src/gprs/Makefile.am
+++ b/openbsc/src/gprs/Makefile.am
@@ -24,7 +24,7 @@
 			gprs_llc.c gprs_llc_parse.c gprs_llc_vty.c crc24.c \
 			sgsn_ctrl.c sgsn_auth.c gprs_subscriber.c \
 			gprs_gsup_messages.c gprs_utils.c gprs_gsup_client.c \
-			gsm_04_08_gprs.c
+			gsm_04_08_gprs.c sgsn_cdr.c
 osmo_sgsn_LDADD = 	\
 			$(top_builddir)/src/libcommon/libcommon.a \
 			-lgtp $(OSMO_LIBS) $(LIBOSMOABIS_LIBS) -lrt
diff --git a/openbsc/src/gprs/sgsn_cdr.c b/openbsc/src/gprs/sgsn_cdr.c
new file mode 100644
index 0000000..0fcdd3b
--- /dev/null
+++ b/openbsc/src/gprs/sgsn_cdr.c
@@ -0,0 +1,254 @@
+/* GPRS SGSN CDR dumper */
+
+/* (C) 2015 by Holger Hans Peter Freyther
+ * All Rights Reserved
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <openbsc/sgsn.h>
+#include <openbsc/signal.h>
+#include <openbsc/gprs_utils.h>
+#include <openbsc/debug.h>
+
+#include <openbsc/vty.h>
+
+#include <gtp.h>
+#include <pdp.h>
+
+#include <arpa/inet.h>
+
+#include <time.h>
+
+#include <stdio.h>
+#include <inttypes.h>
+
+/* TODO...avoid going through a global */
+extern struct sgsn_instance *sgsn;
+
+/**
+ * The CDR module will generate an entry like:
+ *
+ * IMSI, # Subscriber IMSI
+ * IMEI, # Subscriber IMEI
+ * MSISDN, # Subscriber MISDN
+ * Charging_Timestamp, # Event start Time
+ * Charging_UTC, # Time zone of event start time
+ * Duration, # Session DURATION
+ * Cell_Id, # CELL_ID
+ * Location_Area, # LAC
+ * GGSN_ADDR, # GGSN_ADDR
+ * SGSN_ADDR, # SGSN_ADDR
+ * APNI, # APNI
+ * PDP_ADDR, # PDP_ADDR
+ * VOL_IN, # VOL_IN in Bytes
+ * VOL_OUT, # VOL_OUT in Bytes
+ * CAUSE_FOR_TERM, # CAUSE_FOR_TERM
+ */
+
+
+static void maybe_print_header(FILE *cdr_file)
+{
+	if (ftell(cdr_file) != 0)
+		return;
+
+	fprintf(cdr_file, "timestamp,imsi,imei,msisdn,cell_id,lac,event,pdp_duration,ggsn_addr,sgsn_addr,apni,eua_addr,vol_in,vol_out\n");
+}
+
+static void cdr_log_mm(struct sgsn_instance *inst, const char *ev,
+			struct sgsn_mm_ctx *mmctx)
+{
+	FILE *cdr_file;
+	struct tm tm;
+	struct timeval tv;
+
+	if (!inst->cfg.cdr.filename)
+		return;
+
+	cdr_file = fopen(inst->cfg.cdr.filename, "a");
+	if (!cdr_file) {
+		LOGP(DGPRS, LOGL_ERROR, "Failed to open %s\n",
+			inst->cfg.cdr.filename);
+		return;
+	}
+
+	maybe_print_header(cdr_file);
+	gettimeofday(&tv, NULL);
+	gmtime_r(&tv.tv_sec, &tm);
+	fprintf(cdr_file, "%04d%02d%02d%02d%02d%02d%03d,%s,%s,%s,%d,%d,%s\n",
+		tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
+		tm.tm_hour, tm.tm_min, tm.tm_sec,
+		(int)(tv.tv_usec / 1000),
+		mmctx->imsi,
+		mmctx->imei,
+		mmctx->msisdn,
+		mmctx->cell_id,
+		mmctx->ra.lac,
+		ev);
+
+	fclose(cdr_file);
+}
+
+static void extract_eua(struct ul66_t *eua, char *eua_addr)
+{
+	if (eua->l < 2)
+		return;
+
+	/* there is no addr for ETSI/PPP */
+	if ((eua->v[0] & 0x0F) != 1) {
+		strcpy(eua_addr, "ETSI");
+		return;
+	}
+
+	if (eua->v[1] == 0x21 && eua->l == 6)
+		inet_ntop(AF_INET, &eua->v[2], eua_addr, INET_ADDRSTRLEN);
+	else if (eua->v[1] == 0x57 && eua->l == 18)
+		inet_ntop(AF_INET6, &eua->v[2], eua_addr, INET6_ADDRSTRLEN);
+	else {
+		/* e.g. both IPv4 and IPv6 */
+		strcpy(eua_addr, "Unknown address");
+	}
+}
+
+static void cdr_log_pdp(struct sgsn_instance *inst, const char *ev,
+			struct sgsn_pdp_ctx *pdp)
+{
+	FILE *cdr_file;
+	char apni[(pdp->lib ? pdp->lib->apn_use.l : 0) + 1];
+	char ggsn_addr[INET_ADDRSTRLEN + 1];
+	char sgsn_addr[INET_ADDRSTRLEN + 1];
+	char eua_addr[INET6_ADDRSTRLEN + 1];
+	struct tm tm;
+	struct timeval tv;
+	time_t duration;
+	struct timespec tp;
+
+	if (!inst->cfg.cdr.filename)
+		return;
+
+	memset(apni, 0, sizeof(apni));
+	memset(ggsn_addr, 0, sizeof(ggsn_addr));
+	memset(eua_addr, 0, sizeof(eua_addr));
+
+
+	if (pdp->lib) {
+		gprs_apn_to_str(apni, pdp->lib->apn_use.v, pdp->lib->apn_use.l);
+		inet_ntop(AF_INET, &pdp->lib->hisaddr0.s_addr, ggsn_addr, sizeof(ggsn_addr));
+		extract_eua(&pdp->lib->eua, eua_addr);
+	}
+
+	if (pdp->ggsn)
+		inet_ntop(AF_INET, &pdp->ggsn->gsn->gsnc.s_addr, sgsn_addr, sizeof(sgsn_addr));
+
+	cdr_file = fopen(inst->cfg.cdr.filename, "a");
+	if (!cdr_file) {
+		LOGP(DGPRS, LOGL_ERROR, "Failed to open %s\n",
+			inst->cfg.cdr.filename);
+		return;
+	}
+
+	maybe_print_header(cdr_file);
+
+	clock_gettime(CLOCK_MONOTONIC, &tp);
+	gettimeofday(&tv, NULL);
+
+	/* convert the timestamp to UTC */
+	gmtime_r(&tv.tv_sec, &tm);
+
+	/* Check the duration of the PDP context */
+	duration = tp.tv_sec - pdp->cdr_start.tv_sec;
+
+	fprintf(cdr_file,
+		"%04d%02d%02d%02d%02d%02d%03d,%s,%s,%s,%d,%d,%s,%ld,%s,%s,%s,%s,%" PRIu64 ",%" PRIu64 "\n",
+		tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
+		tm.tm_hour, tm.tm_min, tm.tm_sec,
+		(int)(tv.tv_usec / 1000),
+		pdp->mm ? pdp->mm->imsi : "N/A",
+		pdp->mm ? pdp->mm->imei : "N/A",
+		pdp->mm ? pdp->mm->msisdn : "N/A",
+		pdp->mm ? pdp->mm->cell_id : -1,
+		pdp->mm ? pdp->mm->ra.lac : -1,
+		ev,
+		(unsigned long ) duration,
+		ggsn_addr,
+		sgsn_addr,
+		apni,
+		eua_addr,
+		pdp->cdr_bytes_in,
+		pdp->cdr_bytes_out);
+	fclose(cdr_file);
+}
+
+static void cdr_pdp_timeout(void *_data)
+{
+	struct sgsn_pdp_ctx *pdp = _data;
+	cdr_log_pdp(sgsn, "pdp-periodic", pdp);
+	osmo_timer_schedule(&pdp->cdr_timer, sgsn->cfg.cdr.interval, 0);
+}
+
+static int handle_sgsn_sig(unsigned int subsys, unsigned int signal,
+			void *handler_data, void *_signal_data)
+{
+	struct sgsn_signal_data *signal_data = _signal_data;
+	struct sgsn_instance *inst = handler_data;
+
+	if (subsys != SS_SGSN)
+		return 0;
+
+	switch (signal) {
+	case S_SGSN_ATTACH:
+		cdr_log_mm(inst, "attach", signal_data->mm);
+		break;
+	case S_SGSN_UPDATE:
+		cdr_log_mm(inst, "update", signal_data->mm);
+		break;
+	case S_SGSN_DETACH:
+		cdr_log_mm(inst, "detach", signal_data->mm);
+		break;
+	case S_SGSN_MM_FREE:
+		cdr_log_mm(inst, "free", signal_data->mm);
+		break;
+	case S_SGSN_PDP_ACT:
+		clock_gettime(CLOCK_MONOTONIC, &signal_data->pdp->cdr_start);
+		cdr_log_pdp(inst, "pdp-act", signal_data->pdp);
+		signal_data->pdp->cdr_timer.cb = cdr_pdp_timeout;
+		signal_data->pdp->cdr_timer.data = signal_data->pdp;
+		osmo_timer_schedule(&signal_data->pdp->cdr_timer, inst->cfg.cdr.interval, 0);
+		break;
+	case S_SGSN_PDP_DEACT:
+		cdr_log_pdp(inst, "pdp-deact", signal_data->pdp);
+		osmo_timer_del(&signal_data->pdp->cdr_timer);
+		break;
+	case S_SGSN_PDP_TERMINATE:
+		cdr_log_pdp(inst, "pdp-terminate", signal_data->pdp);
+		osmo_timer_del(&signal_data->pdp->cdr_timer);
+		break;
+	case S_SGSN_PDP_FREE:
+		cdr_log_pdp(inst, "pdp-free", signal_data->pdp);
+		osmo_timer_del(&signal_data->pdp->cdr_timer);
+		break;
+	}
+
+	return 0;
+}
+
+int sgsn_cdr_init(struct sgsn_instance *sgsn)
+{
+	/* register for CDR related events */
+	sgsn->cfg.cdr.interval = 10 * 60;
+	osmo_signal_register_handler(SS_SGSN, handle_sgsn_sig, sgsn);
+
+	return 0;
+}
diff --git a/openbsc/src/gprs/sgsn_libgtp.c b/openbsc/src/gprs/sgsn_libgtp.c
index af5c93d..9972cdd 100644
--- a/openbsc/src/gprs/sgsn_libgtp.c
+++ b/openbsc/src/gprs/sgsn_libgtp.c
@@ -534,6 +534,9 @@
 	rate_ctr_inc(&mm->ctrg->ctr[GMM_CTR_PKTS_UDATA_OUT]);
 	rate_ctr_add(&mm->ctrg->ctr[GMM_CTR_BYTES_UDATA_OUT], len);
 
+	/* It is easier to have a global count */
+	pdp->cdr_bytes_out += len;
+
 	return sndcp_unitdata_req(msg, &mm->llme->lle[pdp->sapi],
 				  pdp->nsapi, mm);
 }
@@ -569,6 +572,9 @@
 	rate_ctr_inc(&mmctx->ctrg->ctr[GMM_CTR_PKTS_UDATA_IN]);
 	rate_ctr_add(&mmctx->ctrg->ctr[GMM_CTR_BYTES_UDATA_IN], npdu_len);
 
+	/* It is easier to have a global count */
+	pdp->cdr_bytes_in += npdu_len;
+
 	return gtp_data_req(pdp->ggsn->gsn, pdp->lib, npdu, npdu_len);
 }
 
diff --git a/openbsc/src/gprs/sgsn_main.c b/openbsc/src/gprs/sgsn_main.c
index 0db90d5..d5f7f65 100644
--- a/openbsc/src/gprs/sgsn_main.c
+++ b/openbsc/src/gprs/sgsn_main.c
@@ -344,6 +344,7 @@
 	gprs_llc_vty_init();
 	gprs_sndcp_vty_init();
 	sgsn_auth_init();
+	sgsn_cdr_init(&sgsn_inst);
 	/* FIXME: register signal handler for SS_L_NS */
 
 	rc = sgsn_parse_config(sgsn_inst.config_file, &sgsn_inst.cfg);
