diff --git a/openbsc/src/gprs/gb_proxy_main.c b/openbsc/src/gprs/gb_proxy_main.c
index 1b39a2e..71d6086 100644
--- a/openbsc/src/gprs/gb_proxy_main.c
+++ b/openbsc/src/gprs/gb_proxy_main.c
@@ -238,20 +238,17 @@
 		exit(2);
 	}
 
-	rc = nsip_listen(bssgp_nsi, gbcfg.nsip_listen_ip,
-			 gbcfg.nsip_listen_port);
+	rc = gprs_ns_nsip_listen(bssgp_nsi);
 	if (rc < 0) {
 		LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen on NSIP socket\n");
 		exit(2);
 	}
 
-	if (gbcfg.frgre_enabled) {
-		rc = gprs_ns_frgre_listen(bssgp_nsi, gbcfg.nsip_listen_ip);
-		if (rc < 0) {
-			LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen GRE "
-				"socket. Do you have CAP_NET_RAW?\n");
-			exit(2);
-		}
+	rc = gprs_ns_frgre_listen(bssgp_nsi);
+	if (rc < 0) {
+		LOGP(DGPRS, LOGL_FATAL, "Cannot bind/listen GRE "
+			"socket. Do you have CAP_NET_RAW?\n");
+		exit(2);
 	}
 
 	/* Reset all the persistent NS-VCs that we've read from the config */
diff --git a/openbsc/src/gprs/gb_proxy_vty.c b/openbsc/src/gprs/gb_proxy_vty.c
index 4b71b1b..e761720 100644
--- a/openbsc/src/gprs/gb_proxy_vty.c
+++ b/openbsc/src/gprs/gb_proxy_vty.c
@@ -51,14 +51,7 @@
 
 	vty_out(vty, "gbproxy%s", VTY_NEWLINE);
 
-	if (g_cfg->nsip_listen_ip) {
-		ia.s_addr = htonl(g_cfg->nsip_listen_ip);
-		vty_out(vty, " nsip bss local ip %s%s", inet_ntoa(ia),
-			VTY_NEWLINE);
-	}
-	vty_out(vty, " nsip bss local port %u%s", g_cfg->nsip_listen_port,
-		VTY_NEWLINE);
-	vty_out(vty, " nsip sgsn nsei %u%s", g_cfg->nsip_sgsn_nsei,
+	vty_out(vty, " sgsn nsei %u%s", g_cfg->nsip_sgsn_nsei,
 		VTY_NEWLINE);
 
 	return CMD_SUCCESS;
@@ -73,33 +66,9 @@
 	return CMD_SUCCESS;
 }
 
-DEFUN(cfg_nsip_bss_local_ip,
-      cfg_nsip_bss_local_ip_cmd,
-      "nsip bss local ip A.B.C.D",
-      "Set the IP address on which we listen for BSS connects")
-{
-	struct in_addr ia;
-
-	inet_aton(argv[0], &ia);
-	g_cfg->nsip_listen_ip = ntohl(ia.s_addr);
-
-	return CMD_SUCCESS;
-}
-
-DEFUN(cfg_nsip_bss_local_port,
-      cfg_nsip_bss_local_port_cmd,
-      "nsip bss local port <0-65534>",
-      "Set the UDP port on which we listen for BSS connects")
-{
-	unsigned int port = atoi(argv[0]);
-
-	g_cfg->nsip_listen_port = port;
-	return CMD_SUCCESS;
-}
-
 DEFUN(cfg_nsip_sgsn_nsei,
       cfg_nsip_sgsn_nsei_cmd,
-      "nsip sgsn nsei <0-65534>",
+      "sgsn nsei <0-65534>",
       "Set the NSEI to be used in the connection with the SGSN")
 {
 	unsigned int port = atoi(argv[0]);
@@ -117,8 +86,6 @@
 	install_default(GBPROXY_NODE);
 	install_element(GBPROXY_NODE, &ournode_exit_cmd);
 	install_element(GBPROXY_NODE, &ournode_end_cmd);
-	install_element(GBPROXY_NODE, &cfg_nsip_bss_local_ip_cmd);
-	install_element(GBPROXY_NODE, &cfg_nsip_bss_local_port_cmd);
 	install_element(GBPROXY_NODE, &cfg_nsip_sgsn_nsei_cmd);
 
 	return 0;
diff --git a/openbsc/src/gprs/gprs_ns.c b/openbsc/src/gprs/gprs_ns.c
index 4ef3603..8b226b8 100644
--- a/openbsc/src/gprs/gprs_ns.c
+++ b/openbsc/src/gprs/gprs_ns.c
@@ -903,11 +903,12 @@
 }
 
 /* Listen for incoming GPRS packets */
-int nsip_listen(struct gprs_ns_inst *nsi, uint32_t ip, uint16_t udp_port)
+int gprs_ns_nsip_listen(struct gprs_ns_inst *nsi)
 {
 	int ret;
 
-	ret = make_sock(&nsi->nsip.fd, IPPROTO_UDP, ip, udp_port, nsip_fd_cb);
+	ret = make_sock(&nsi->nsip.fd, IPPROTO_UDP, nsi->nsip.local_ip,
+			nsi->nsip.local_port, nsip_fd_cb);
 	if (ret < 0)
 		return ret;
 
diff --git a/openbsc/src/gprs/gprs_ns_frgre.c b/openbsc/src/gprs/gprs_ns_frgre.c
index d58c1d9..979442b 100644
--- a/openbsc/src/gprs/gprs_ns_frgre.c
+++ b/openbsc/src/gprs/gprs_ns_frgre.c
@@ -202,7 +202,7 @@
 	return rc;
 }
 
-int gprs_ns_frgre_listen(struct gprs_ns_inst *nsi, uint32_t ip)
+int gprs_ns_frgre_listen(struct gprs_ns_inst *nsi)
 {
 	int rc;
 
@@ -210,7 +210,11 @@
 	if (nsi->frgre.fd.fd)
 		close(nsi->frgre.fd.fd);
 
-	rc = make_sock(&nsi->frgre.fd, IPPROTO_GRE, ip, 0, nsfrgre_fd_cb);
+	if (!nsi->frgre.enabled)
+		return 0;
+
+	rc = make_sock(&nsi->frgre.fd, IPPROTO_GRE, nsi->frgre.local_ip,
+			0, nsfrgre_fd_cb);
 	if (rc < 0) {
 		LOGP(DNS, LOGL_ERROR, "Error creating GRE socket (%s)\n",
 			strerror(errno));
diff --git a/openbsc/src/gprs/gprs_ns_vty.c b/openbsc/src/gprs/gprs_ns_vty.c
index 7d43944..1922b02 100644
--- a/openbsc/src/gprs/gprs_ns_vty.c
+++ b/openbsc/src/gprs/gprs_ns_vty.c
@@ -68,6 +68,7 @@
 {
 	struct gprs_nsvc *nsvc;
 	unsigned int i;
+	struct in_addr ia;
 
 	vty_out(vty, "ns%s", VTY_NEWLINE);
 
@@ -111,6 +112,21 @@
 			get_value_string(gprs_ns_timer_strs, i),
 			vty_nsi->timeout[i], VTY_NEWLINE);
 
+	if (vty_nsi->nsip.local_ip) {
+		ia.s_addr = htonl(vty_nsi->nsip.local_ip);
+		vty_out(vty, " encapsulation udp local-ip %s%s",
+			inet_ntoa(ia), VTY_NEWLINE);
+		vty_out(vty, " encapsulation udp local-port %u%s",
+			vty_nsi->nsip.local_port);
+	}
+	vty_out(vty, " encapsulation framerelay-gre enabled %u%s",
+		vty_nsi->frgre.enabled ? 1 : 0, VTY_NEWLINE);
+	if (vty_nsi->frgre.enabled) {
+		ia.s_addr = htonl(vty_nsi->frgre.local_ip);
+		vty_out(vty, " encapsulation framerelay-gre local-ip %s%s",
+			inet_ntoa(ia), VTY_NEWLINE);
+	}
+
 	return CMD_SUCCESS;
 }
 
@@ -142,6 +158,15 @@
 static void dump_ns(struct vty *vty, struct gprs_ns_inst *nsi, int stats)
 {
 	struct gprs_nsvc *nsvc;
+	struct in_addr ia;
+
+	ia.s_addr = htonl(vty_nsi->nsip.local_ip);
+	vty_out(vty, "NS-UDP-IP Encapsulation: Local IP: %s, UDP Port: %u%s",
+		inet_ntoa(ia), vty_nsi->nsip.local_port, VTY_NEWLINE);
+
+	ia.s_addr = htonl(vty_nsi->frgre.local_ip);
+	vty_out(vty, "NS-FR-GRE-IP Encapsulation: Local IP: %s%s",
+		inet_ntoa(ia), VTY_NEWLINE);
 
 	llist_for_each_entry(nsvc, &nsi->gprs_nsvcs, list) {
 		if (nsvc == nsi->unknown_nsvc)
@@ -387,6 +412,66 @@
 	return CMD_SUCCESS;
 }
 
+#define ENCAPS_STR "NS encapsulation options\n"
+
+DEFUN(cfg_nsip_local_ip, cfg_nsip_local_ip_cmd,
+      "encapsulation udp local-ip A.B.C.D",
+	ENCAPS_STR "NS over UDP Encapsulation\n"
+	"Set the IP address on which we listen for NS/UDP\n"
+	"IP Address\n")
+{
+	struct in_addr ia;
+
+	inet_aton(argv[0], &ia);
+	vty_nsi->nsip.local_ip = ntohl(ia.s_addr);
+
+	return CMD_SUCCESS;
+}
+
+DEFUN(cfg_nsip_local_port, cfg_nsip_local_port_cmd,
+      "encapsulation udp local-port <0-65535>",
+	ENCAPS_STR "NS over UDP Encapsulation\n"
+	"Set the UDP port on which we listen for NS/UDP\n"
+	"UDP port number\n")
+{
+	unsigned int port = atoi(argv[0]);
+
+	vty_nsi->nsip.local_port = port;
+
+	return CMD_SUCCESS;
+}
+
+DEFUN(cfg_frgre_local_ip, cfg_frgre_local_ip_cmd,
+      "encapsulation framerelay-gre local-ip A.B.C.D",
+	ENCAPS_STR "NS over Frame Relay over GRE Encapsulation\n"
+	"Set the IP address on which we listen for NS/FR/GRE\n"
+	"IP Address\n")
+{
+	struct in_addr ia;
+
+	if (!vty_nsi->frgre.enabled) {
+		vty_out(vty, "FR/GRE is not enabled%s", VTY_NEWLINE);
+		return CMD_WARNING;
+	}
+	inet_aton(argv[0], &ia);
+	vty_nsi->frgre.local_ip = ntohl(ia.s_addr);
+
+	return CMD_SUCCESS;
+}
+
+DEFUN(cfg_frgre_enable, cfg_frgre_enable_cmd,
+      "encapsulation framerelay-gre enabled (1|0)",
+	ENCAPS_STR "NS over Frame Relay over GRE Encapsulation\n"
+	"Enable or disable Frame Relay over GRE\n"
+	"Enable\n" "Disable\n")
+{
+	int enabled = atoi(argv[0]);
+
+	vty_nsi->frgre.enabled = enabled;
+
+	return CMD_SUCCESS;
+}
+
 DEFUN(nsvc_nsei, nsvc_nsei_cmd,
 	"nsvc nsei <0-65535> (block|unblock|reset)",
 	"Perform an operation on a NSVC\n"
@@ -472,6 +557,10 @@
 	install_element(NS_NODE, &cfg_nse_remoterole_cmd);
 	install_element(NS_NODE, &cfg_no_nse_cmd);
 	install_element(NS_NODE, &cfg_ns_timer_cmd);
+	install_element(NS_NODE, &cfg_nsip_local_ip_cmd);
+	install_element(NS_NODE, &cfg_nsip_local_port_cmd);
+	install_element(NS_NODE, &cfg_frgre_enable_cmd);
+	install_element(NS_NODE, &cfg_frgre_local_ip_cmd);
 
 	install_element(ENABLE_NODE, &nsvc_nsei_cmd);
 
diff --git a/openbsc/src/gprs/osmo_gbproxy.cfg b/openbsc/src/gprs/osmo_gbproxy.cfg
index 79f391f..d6b5619 100644
--- a/openbsc/src/gprs/osmo_gbproxy.cfg
+++ b/openbsc/src/gprs/osmo_gbproxy.cfg
@@ -6,11 +6,19 @@
  no login
 !
 gbproxy
- nsip bss local port 23000
- nsip sgsn nsei 101
+ sgsn nsei 101
 ns
  nse 101 nsvci 101
- nse 101 remote-ip 192.168.100.239
- nse 101 remote-port 7777
  nse 101 remote-role sgsn
  nse 101 encapsulation udp
+ nse 101 remote-ip 192.168.100.239
+ nse 101 remote-port 7777
+ timer tns-block 3
+ timer tns-block-retries 3
+ timer tns-reset 3
+ timer tns-reset-retries 3
+ timer tns-test 30
+ timer tns-alive 3
+ timer tns-alive-retries 10
+ encapsulation framerelay-gre enabled 1
+ encapsulation framerelay-gre local-ip 0.0.0.0
diff --git a/openbsc/src/gprs/sgsn_main.c b/openbsc/src/gprs/sgsn_main.c
index 63ef9f5..1956428 100644
--- a/openbsc/src/gprs/sgsn_main.c
+++ b/openbsc/src/gprs/sgsn_main.c
@@ -175,8 +175,9 @@
 	if (rc)
 		exit(2);
 
-	nsip_listen(sgsn_nsi, sgsn_inst.cfg.nsip_listen_ip,
-		    sgsn_inst.cfg.nsip_listen_port);
+	rc = gprs_ns_nsip_listen(sgsn_nsi);
+	if (rc)
+		exit(2);
 
 	while (1) {
 		rc = bsc_select_main(0);
diff --git a/openbsc/src/gprs/sgsn_vty.c b/openbsc/src/gprs/sgsn_vty.c
index a065ba4..2532a88 100644
--- a/openbsc/src/gprs/sgsn_vty.c
+++ b/openbsc/src/gprs/sgsn_vty.c
@@ -54,18 +54,10 @@
 
 	vty_out(vty, "sgsn%s", VTY_NEWLINE);
 
-	if (g_cfg->nsip_listen_ip) {
-		ia.s_addr = htonl(g_cfg->nsip_listen_ip);
-		vty_out(vty, "  nsip local ip %s%s", inet_ntoa(ia),
-			VTY_NEWLINE);
-	}
-	vty_out(vty, "  nsip local port %u%s", g_cfg->nsip_listen_port,
-		VTY_NEWLINE);
-
 	llist_for_each_entry(gctx, &sgsn_ggsn_ctxts, list) {
-		vty_out(vty, "  ggsn %u remote-ip %s%s", gctx->id,
+		vty_out(vty, " ggsn %u remote-ip %s%s", gctx->id,
 			inet_ntoa(gctx->remote_addr), VTY_NEWLINE);
-		vty_out(vty, "  ggsn %u gtp-version %u%s", gctx->id,
+		vty_out(vty, " ggsn %u gtp-version %u%s", gctx->id,
 			gctx->gtp_version, VTY_NEWLINE);
 	}
 
@@ -81,32 +73,6 @@
 	return CMD_SUCCESS;
 }
 
-
-DEFUN(cfg_nsip_local_ip,
-      cfg_nsip_local_ip_cmd,
-      "nsip local ip A.B.C.D",
-      "Set the IP address on which we listen for BSS connects")
-{
-	struct in_addr ia;
-
-	inet_aton(argv[0], &ia);
-	g_cfg->nsip_listen_ip = ntohl(ia.s_addr);
-
-	return CMD_SUCCESS;
-}
-
-DEFUN(cfg_nsip_local_port,
-      cfg_nsip_local_port_cmd,
-      "nsip local port <0-65534>",
-      "Set the UDP port on which we listen for BSS connects")
-{
-	unsigned int port = atoi(argv[0]);
-
-	g_cfg->nsip_listen_port = port;
-
-	return CMD_SUCCESS;
-}
-
 DEFUN(cfg_ggsn_remote_ip, cfg_ggsn_remote_ip_cmd,
 	"ggsn <0-255> remote-ip A.B.C.D",
 	"")
@@ -288,8 +254,6 @@
 	install_default(SGSN_NODE);
 	install_element(SGSN_NODE, &ournode_exit_cmd);
 	install_element(SGSN_NODE, &ournode_end_cmd);
-	install_element(SGSN_NODE, &cfg_nsip_local_ip_cmd);
-	install_element(SGSN_NODE, &cfg_nsip_local_port_cmd);
 	install_element(SGSN_NODE, &cfg_ggsn_remote_ip_cmd);
 	//install_element(SGSN_NODE, &cfg_ggsn_remote_port_cmd);
 	install_element(SGSN_NODE, &cfg_ggsn_gtp_version_cmd);
