diff --git a/openbsc/src/libcommon/gsm_data.c b/openbsc/src/libcommon/gsm_data.c
index a731c1a..6eb39b0 100644
--- a/openbsc/src/libcommon/gsm_data.c
+++ b/openbsc/src/libcommon/gsm_data.c
@@ -87,6 +87,7 @@
 
 	/* Init back pointer */
 	net->bsc_data->network = net;
+	INIT_LLIST_HEAD(&net->bsc_data->mscs);
 
 	net->country_code = country_code;
 	net->network_code = network_code;
@@ -141,14 +142,6 @@
 
 	net->mncc_recv = mncc_recv;
 
-	INIT_LLIST_HEAD(&net->bsc_data->msc.dests);
-	net->bsc_data->msc.ping_timeout = 20;
-	net->bsc_data->msc.pong_timeout = 5;
-	net->bsc_data->msc.core_ncc = -1;
-	net->bsc_data->msc.core_mcc = -1;
-	net->bsc_data->msc.rtp_base = 4000;
-	net->bsc_data->msc.network = net;
-
 	gsm_net_update_ctype(net);
 
 	return net;
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_main.c b/openbsc/src/osmo-bsc/osmo_bsc_main.c
index 6e34105..63e1d8e 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_main.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_main.c
@@ -144,6 +144,8 @@
 extern int bsc_shutdown_net(struct gsm_network *net);
 static void signal_handler(int signal)
 {
+	struct osmo_msc_data *msc;
+
 	fprintf(stdout, "signal %u received\n", signal);
 
 	switch (signal) {
@@ -163,11 +165,8 @@
 	case SIGUSR2:
 		if (!bsc_gsmnet->bsc_data)
 			return;
-		if (!bsc_gsmnet->bsc_data->msc.msc_con)
-			return;
-		if (!bsc_gsmnet->bsc_data->msc.msc_con->is_connected)
-			return;
-		bsc_msc_lost(bsc_gsmnet->bsc_data->msc.msc_con);
+		llist_for_each_entry(msc, &bsc_gsmnet->bsc_data->mscs, entry)
+			bsc_msc_lost(msc->msc_con);
 		break;
 	default:
 		break;
@@ -391,6 +390,7 @@
 
 int main(int argc, char **argv)
 {
+	struct osmo_msc_data *msc;
 	struct osmo_bsc_data *data;
 	int rc;
 
@@ -443,11 +443,14 @@
 		}
 	}
 
-	if (osmo_bsc_msc_init(&bsc_gsmnet->bsc_data->msc) != 0) {
-		LOGP(DNAT, LOGL_ERROR, "Failed to start up. Exiting.\n");
-		exit(1);
+	llist_for_each_entry(msc, &bsc_gsmnet->bsc_data->mscs, entry) {
+		if (osmo_bsc_msc_init(msc) != 0) {
+			LOGP(DNAT, LOGL_ERROR, "Failed to start up. Exiting.\n");
+			exit(1);
+		}
 	}
 
+
 	if (osmo_bsc_sccp_init(bsc_gsmnet) != 0) {
 		LOGP(DNM, LOGL_ERROR, "Failed to register SCCP.\n");
 		exit(1);
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_msc.c b/openbsc/src/osmo-bsc/osmo_bsc_msc.c
index b2962a9..617a59a 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_msc.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_msc.c
@@ -455,3 +455,43 @@
 
 	return 0;
 }
+
+struct osmo_msc_data *osmo_msc_data_find(struct gsm_network *net, int nr)
+{
+	struct osmo_msc_data *msc_data;
+
+	llist_for_each_entry(msc_data, &net->bsc_data->mscs, entry)
+		if (msc_data->nr == nr)
+			return msc_data;
+	return NULL;
+}
+
+struct osmo_msc_data *osmo_msc_data_alloc(struct gsm_network *net, int nr)
+{
+	struct osmo_msc_data *msc_data;
+
+	/* check if there is already one */
+	msc_data = osmo_msc_data_find(net, nr);
+	if (msc_data)
+		return msc_data;
+
+	msc_data = talloc_zero(net, struct osmo_msc_data);
+	if (!msc_data)
+		return NULL;
+
+	llist_add_tail(&msc_data->entry, &net->bsc_data->mscs);
+
+	/* Init back pointer */
+	msc_data->network = net;
+
+	INIT_LLIST_HEAD(&msc_data->dests);
+	msc_data->ping_timeout = 20;
+	msc_data->pong_timeout = 5;
+	msc_data->core_ncc = -1;
+	msc_data->core_mcc = -1;
+	msc_data->rtp_base = 4000;
+
+	msc_data->nr = nr;
+
+	return msc_data;
+}
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_sccp.c b/openbsc/src/osmo-bsc/osmo_bsc_sccp.c
index 6ac3007..cc4eedf 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_sccp.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_sccp.c
@@ -195,7 +195,12 @@
 	struct sccp_connection *sccp;
 
 	net = conn->bts->network;
-	msc = &net->bsc_data->msc;
+	msc = osmo_msc_data_find(net, 0);
+	if (!msc) {
+		LOGP(DMSC, LOGL_ERROR, "Failed to select a MSC.\n");
+		return -1;
+	}
+
 	if (!msc->msc_con->is_authenticated) {
 		LOGP(DMSC, LOGL_ERROR, "Not connected to a MSC. Not forwarding data.\n");
 		return -1;
diff --git a/openbsc/src/osmo-bsc/osmo_bsc_vty.c b/openbsc/src/osmo-bsc/osmo_bsc_vty.c
index 8e687e3..8cf5a14 100644
--- a/openbsc/src/osmo-bsc/osmo_bsc_vty.c
+++ b/openbsc/src/osmo-bsc/osmo_bsc_vty.c
@@ -36,7 +36,7 @@
 
 static struct osmo_msc_data *osmo_msc_data(struct vty *vty)
 {
-	return &bsc_gsmnet->bsc_data->msc;
+	return osmo_msc_data_find(bsc_gsmnet, (int) vty->index);
 }
 
 static struct cmd_node msc_node = {
@@ -48,17 +48,23 @@
 DEFUN(cfg_net_msc, cfg_net_msc_cmd,
       "msc", "Configure MSC details")
 {
-	vty->index = bsc_gsmnet;
-	vty->node = MSC_NODE;
+	int index = 0;
+	struct osmo_msc_data *msc;
 
+	msc = osmo_msc_data_alloc(bsc_gsmnet, index);
+	if (!msc) {
+		vty_out(vty, "%%Failed to allocate MSC data.%s", VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+
+	vty->index = (void *) index;
+	vty->node = MSC_NODE;
 	return CMD_SUCCESS;
 }
 
-static int config_write_msc(struct vty *vty)
+static void write_msc(struct vty *vty, struct osmo_msc_data *msc)
 {
 	struct bsc_msc_dest *dest;
-	struct osmo_bsc_data *bsc = osmo_bsc_data(vty);
-	struct osmo_msc_data *msc = &bsc->msc;
 
 	vty_out(vty, "msc%s", VTY_NEWLINE);
 	if (msc->bsc_token)
@@ -95,6 +101,15 @@
 	llist_for_each_entry(dest, &msc->dests, list)
 		vty_out(vty, " dest %s %d %d%s", dest->ip, dest->port,
 			dest->dscp, VTY_NEWLINE);
+}
+
+static int config_write_msc(struct vty *vty)
+{
+	struct osmo_msc_data *msc;
+	struct osmo_bsc_data *bsc = osmo_bsc_data(vty);
+
+	llist_for_each_entry(msc, &bsc->mscs, entry)
+		write_msc(vty, msc);
 
 	if (bsc->mid_call_txt)
 		vty_out(vty, " mid-call-text %s%s", bsc->mid_call_txt, VTY_NEWLINE);
