diff --git a/src/gprs/Makefile.am b/src/gprs/Makefile.am
index 4c7f730..1cf6785 100644
--- a/src/gprs/Makefile.am
+++ b/src/gprs/Makefile.am
@@ -44,6 +44,7 @@
 	gb_proxy.c \
 	gb_proxy_main.c \
 	gb_proxy_vty.c \
+	gb_proxy_ctrl.c \
 	gb_proxy_patch.c \
 	gb_proxy_tlli.c \
 	gb_proxy_peer.c \
diff --git a/src/gprs/gb_proxy_ctrl.c b/src/gprs/gb_proxy_ctrl.c
new file mode 100644
index 0000000..032d8d4
--- /dev/null
+++ b/src/gprs/gb_proxy_ctrl.c
@@ -0,0 +1,85 @@
+/* Control Interface Implementation for the Gb-proxy */
+/*
+ * (C) 2018 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Daniel Willmann
+ *
+ * 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 <osmocom/core/talloc.h>
+
+
+#include <osmocom/gprs/gprs_bssgp.h>
+#include <osmocom/gprs/gprs_ns.h>
+
+#include <osmocom/ctrl/control_if.h>
+#include <osmocom/ctrl/control_cmd.h>
+#include <osmocom/sgsn/gb_proxy.h>
+#include <osmocom/sgsn/debug.h>
+
+extern vector ctrl_node_vec;
+
+static int get_nsvc_state(struct ctrl_cmd *cmd, void *data)
+{
+	struct gbproxy_config *cfg = data;
+	struct gprs_ns_inst *nsi = cfg->nsi;
+	struct gprs_nsvc *nsvc;
+
+	cmd->reply = talloc_strdup(cmd, "");
+
+	llist_for_each_entry(nsvc, &nsi->gprs_nsvcs, list) {
+		if (nsvc == nsi->unknown_nsvc)
+			continue;
+
+		cmd->reply = gprs_nsvc_state_append(cmd->reply, nsvc);
+	}
+
+	return CTRL_CMD_REPLY;
+}
+
+CTRL_CMD_DEFINE_RO(nsvc_state, "nsvc-state");
+
+static int get_gbproxy_state(struct ctrl_cmd *cmd, void *data)
+{
+	struct gbproxy_config *cfg = data;
+	struct gbproxy_peer *peer;
+
+	cmd->reply = talloc_strdup(cmd, "");
+
+	llist_for_each_entry(peer, &cfg->bts_peers, list) {
+		struct gprs_ra_id raid;
+		gsm48_parse_ra(&raid, peer->ra);
+
+		cmd->reply = talloc_asprintf_append(cmd->reply, "%u,%u,%u,%u,%u,%u,%s\n",
+				peer->nsei, peer->bvci,
+				raid.mcc, raid.mnc,
+				raid.lac, raid.rac,
+				peer->blocked ? "BLOCKED" : "UNBLOCKED");
+	}
+
+	return CTRL_CMD_REPLY;
+}
+
+CTRL_CMD_DEFINE_RO(gbproxy_state, "gbproxy-state");
+
+int gb_ctrl_cmds_install(void)
+{
+	int rc = 0;
+	rc |= ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_nsvc_state);
+	rc |= ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_gbproxy_state);
+	return rc;
+}
diff --git a/src/gprs/gb_proxy_main.c b/src/gprs/gb_proxy_main.c
index 474aa52..97e6342 100644
--- a/src/gprs/gb_proxy_main.c
+++ b/src/gprs/gb_proxy_main.c
@@ -46,6 +46,10 @@
 #include <osmocom/sgsn/vty.h>
 #include <osmocom/sgsn/gb_proxy.h>
 
+#include <osmocom/ctrl/control_vty.h>
+#include <osmocom/ctrl/control_if.h>
+#include <osmocom/ctrl/ports.h>
+
 #include <osmocom/vty/command.h>
 #include <osmocom/vty/telnet_interface.h>
 #include <osmocom/vty/logging.h>
@@ -263,6 +267,7 @@
 int main(int argc, char **argv)
 {
 	int rc;
+	struct ctrl_handle *ctrl;
 
 	tall_bsc_ctx = talloc_named_const(NULL, 0, "nsip_proxy");
 	msgb_talloc_ctx_init(tall_bsc_ctx, 0);
@@ -334,6 +339,19 @@
 	if (rc < 0)
 		exit(1);
 
+	/* Start control interface after getting config for
+	 * ctrl_vty_get_bind_addr() */
+	ctrl = ctrl_interface_setup_dynip(gbcfg, ctrl_vty_get_bind_addr(), OSMO_CTRL_PORT_GBPROXY, NULL);
+	if (!ctrl) {
+		LOGP(DGPRS, LOGL_FATAL, "Failed to create CTRL interface.\n");
+		exit(1);
+	}
+
+	if (gb_ctrl_cmds_install() != 0) {
+		LOGP(DGPRS, LOGL_FATAL, "Failed to install CTRL commands.\n");
+		exit(1);
+	}
+
 	if (!gprs_nsvc_by_nsei(gbcfg->nsi, gbcfg->nsip_sgsn_nsei)) {
 		LOGP(DGPRS, LOGL_FATAL, "You cannot proxy to NSEI %u "
 			"without creating that NSEI before\n",
