diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn
index 9e4d702..2bbc508 100644
--- a/library/Osmocom_Gb_Types.ttcn
+++ b/library/Osmocom_Gb_Types.ttcn
@@ -16,6 +16,14 @@
 
 	template (present) BssgpBvci t_BssgpBvciUser := complement (0);
 
+	type enumerated OsmoNsDialect {
+		NS2_DIALECT_UNDEF		('00'H),
+		NS2_DIALECT_STATIC_ALIVE	('01'H),
+		NS2_DIALECT_STATIC_RESETBLOCK	('02'H),
+		NS2_DIALECT_IPACCESS		('03'H),
+		NS2_DIALECT_SNS			('04'H)
+	};
+
 	/* TS 48.016 10.3.7 */
 	type enumerated NsPduType {
 		NS_PDUT_NS_UNITDATA	('00000000'B),
diff --git a/library/RAW_NS.ttcnpp b/library/RAW_NS.ttcnpp
index c8fc518..81836c7 100644
--- a/library/RAW_NS.ttcnpp
+++ b/library/RAW_NS.ttcnpp
@@ -257,4 +257,13 @@
 		}
 }
 
+/* Receive a NS-BLOCK and ACK it */
+public altstep as_rx_ns_block_ack(boolean oneshot := false, integer idx := 0, template NsCause cause := *, template Nsvci nsvci := *) runs on RAW_NS_CT {
+	var PDU_NS ns_rf;
+	[] NSCP[idx].receive(tr_NS_BLOCK(cause, nsvci)) -> value ns_rf {
+		NSCP[idx].send(ts_NS_BLOCK_ACK(oct2int(ns_rf.pDU_NS_Block.nS_VCI.nS_VCI)));
+		if (not oneshot) { repeat; }
+		}
+}
+
 }
diff --git a/ns/NS_Tests.default b/ns/NS_Tests.default
new file mode 100644
index 0000000..951c1c2
--- /dev/null
+++ b/ns/NS_Tests.default
@@ -0,0 +1,27 @@
+[ORDERED_INCLUDE]
+# Common configuration, shared between test suites
+"../Common.cfg"
+
+[LOGGING]
+#*.FileMask := LOG_ALL
+ConsoleMask := ERROR | WARNING | TESTCASE | TIMEROP_START | USER
+
+[MODULE_PARAMETERS]
+Osmocom_VTY_Functions.mp_prompt_prefix := "OsmoNSdummy";
+StatsD_Checker.mp_enable_stats := true;
+
+[TESTPORT_PARAMETERS]
+*.NSVTY.CTRL_MODE := "client"
+*.NSVTY.CTRL_HOSTNAME := "127.0.0.1"
+*.NSVTY.CTRL_PORTNUM := "4240"
+*.NSVTY.CTRL_LOGIN_SKIPPED := "yes"
+*.NSVTY.CTRL_DETECT_SERVER_DISCONNECTED := "yes"
+*.NSVTY.CTRL_READMODE := "buffered"
+*.NSVTY.CTRL_CLIENT_CLEANUP_LINEFEED := "yes"
+*.NSVTY.CTRL_DETECT_CONNECTION_ESTABLISHMENT_RESULT := "yes"
+*.NSVTY.PROMPT1 := "OsmoNSdummy> "
+*.STATSVTY.PROMPT1 := "OsmoNSdummy> "
+
+[MAIN_CONTROLLER]
+
+[EXECUTE]
diff --git a/ns/NS_Tests.fr.cfg b/ns/NS_Tests.fr.cfg
new file mode 100644
index 0000000..91fb5c5
--- /dev/null
+++ b/ns/NS_Tests.fr.cfg
@@ -0,0 +1,57 @@
+[ORDERED_INCLUDE]
+# Common configuration, shared between test suites
+"../Common.cfg"
+# testsuite specific configuration, not expected to change
+"./NS_Tests.default"
+
+[LOGGING]
+
+[MODULE_PARAMETERS]
+NS_Tests.mp_dialect := NS2_DIALECT_IPACCESS
+NS_Tests.mp_nsconfig := {
+	nsei := 2001,
+	role_sgsn := false,
+	handle_sns := false,
+	nsvc := {
+		{
+			provider := {
+				fr := {
+					netdev := "hdlc1",
+					dlci := 16
+				}
+			},
+			nsvci := 1
+		}, {
+			provider := {
+				fr := {
+					netdev := "hdlc2",
+					dlci := 17
+				}
+			},
+			nsvci := 2
+		}, {
+			provider := {
+				fr := {
+					netdev := "hdlc3",
+					dlci := 18
+				}
+			},
+			nsvci := 3
+		}, {
+			provider := {
+				fr := {
+					netdev := "hdlc4",
+					dlci := 19
+				}
+			},
+			nsvci := 4
+		}
+	}
+}
+
+[TESTPORT_PARAMETERS]
+
+[MAIN_CONTROLLER]
+
+[EXECUTE]
+NS_Tests.control
diff --git a/ns/NS_Tests.ttcn b/ns/NS_Tests.ttcn
new file mode 100644
index 0000000..ef8be2a
--- /dev/null
+++ b/ns/NS_Tests.ttcn
@@ -0,0 +1,500 @@
+module NS_Tests {
+
+/* Osmocom NS test suite for NS over framerelay or udp ip.access style in TTCN-3
+ * (C) 2021 sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+ * Author: Alexander Couzens <lynxis@fe80.eu>
+ * All rights reserved.
+ *
+ * Released under the terms of GNU General Public License, Version 2 or
+ * (at your option) any later version.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+import from General_Types all;
+import from Osmocom_Types all;
+import from Osmocom_Gb_Types all;
+import from NS_Types all;
+import from BSSGP_Types all;
+import from UD_Types all;
+import from NS_Emulation all;
+import from Native_Functions all;
+import from IPL4asp_Types all;
+import from RAW_NS all;
+import from Osmocom_VTY_Functions all;
+import from TELNETasp_PortType all;
+
+modulepar {
+	OsmoNsDialect mp_dialect := NS2_DIALECT_IPACCESS;
+	NSConfiguration mp_nsconfig := {
+		nsei := 96,
+		role_sgsn := false,
+		handle_sns := false,
+		nsvc := {
+			{
+				provider := {
+					ip := {
+						address_family := AF_INET,
+						local_udp_port := 21000,
+						local_ip := "127.0.0.1",
+						remote_udp_port := 23000,
+						remote_ip := "127.0.0.1"
+					}
+				},
+				nsvci := 97
+			}
+		}
+	};
+}
+
+type component RAW_Test_CT extends RAW_NS_CT {
+	port TELNETasp_PT NSVTY;
+}
+
+private function f_init_vty() runs on RAW_Test_CT {
+	map(self:NSVTY, system:NSVTY);
+	f_vty_set_prompts(NSVTY);
+	f_vty_transceive(NSVTY, "enable");
+	f_vty_transceive(NSVTY, "nsvc nsei " & int2str(mp_nsconfig.nsei) & " force-unconfigured");
+}
+
+/* ensure no matching message is received within 'tout' */
+function f_ensure_no_ns(integer idx := 0, boolean answer_alive := false, float tout := 3.0)
+runs on RAW_Test_CT {
+	var PDU_NS nrf;
+
+	timer T := tout;
+	var default d := activate(ax_rx_fail_on_any_ns(idx));
+	T.start;
+	alt {
+	[answer_alive] as_rx_alive_tx_ack();
+	[] T.timeout {
+		setverdict(pass);
+		}
+	}
+	deactivate(d);
+}
+
+function f_fails_except_reset(integer idx := 0, float tout := 15.0)
+runs on RAW_Test_CT {
+	var PDU_NS nrf;
+	timer T := 15.0;
+	T.start;
+	alt {
+	[] NSCP[idx].receive(tr_NS_RESET(*, *, *)) {
+		repeat;
+	}
+	[] NSCP[idx].receive(PDU_NS: ?) -> value nrf {
+		setverdict(fail, "Received unexpected NS: ", nrf);
+		mtc.stop;
+	}
+	[] T.timeout {
+		setverdict(pass);
+		}
+	}
+}
+
+testcase TC_tx_reset() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 10.0);
+
+	/* do a NS Reset procedure */
+	f_outgoing_ns_reset();
+
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+testcase TC_tx_reset_tx_alive() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 10.0);
+
+	/* do a NS Reset procedure */
+	f_outgoing_ns_reset();
+
+	/* check outgoing NS procedure */
+	f_outgoing_ns_alive();
+
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+testcase TC_tx_reset_rx_alive() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 10.0);
+
+	/* do a NS Reset procedure */
+	f_outgoing_ns_reset();
+
+	activate(as_rx_ns_unblock_ack());
+	/* check outgoing NS procedure */
+	as_rx_alive_tx_ack(oneshot := true);
+
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.2 unblock procedure
+ *
+ * TTCN  -> NS: reset
+ * TTCN <-  NS: reset ack
+ * TTCN  -> NS: unblock
+ * TTCN <-  NS: unblock ack
+ */
+testcase TC_tx_unblock() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	/* do a NS Reset procedure */
+	f_outgoing_ns_reset();
+	/* send alive acks */
+	activate(as_rx_alive_tx_ack());
+
+	f_outgoing_ns_unblock();
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.2 tx unblock retries
+ *
+ * TTCN  -> NS: reset
+ * TTCN <-  NS: reset ack
+ * TTCN  -> NS: unblock
+ * TTCN <-  NS: unblock ack
+ * TTCN  -> NS: unblock
+ * TTCN <-  NS: unblock ack
+ * TTCN  -> NS: unblock
+ * TTCN <-  NS: unblock ack
+ */
+testcase TC_tx_unblock_retries() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	/* do a NS Reset procedure */
+	f_outgoing_ns_reset();
+	/* send alive acks */
+	activate(as_rx_alive_tx_ack());
+
+	f_outgoing_ns_unblock();
+	f_outgoing_ns_unblock();
+	f_outgoing_ns_unblock();
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.2 block procedure
+ *
+ * TTCN  -> NS: reset
+ * TTCN <-  NS: reset ack
+ * TTCN  -> NS: unblock
+ * TTCN <-  NS: unblock ack
+ * TTCN  -> NS: block
+ * TTCN <-  NS: block ack
+ */
+testcase TC_tx_block() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	/* do a NS Reset procedure */
+	f_outgoing_ns_reset();
+	activate(as_rx_alive_tx_ack());
+
+	f_outgoing_ns_unblock();
+	f_sleep(1.0);
+
+	f_outgoing_ns_block(NS_CAUSE_EQUIPMENT_FAILURE);
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.2 block procedure by vty
+ *
+ * TTCN  -> NS: reset
+ * TTCN <-  NS: reset ack
+ * TTCN  -> NS: unblock
+ * TTCN <-  NS: unblock ack
+ * vty: block nsvc
+ * TTCN <-  NS: block
+ * TTCN  -> NS: block ack
+ */
+function tx_block_by_vty(float guard_secs := 30.0) runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := guard_secs);
+
+	/* do a NS Reset procedure */
+	f_outgoing_ns_reset();
+	activate(as_rx_alive_tx_ack());
+
+	f_outgoing_ns_unblock();
+	f_sleep(1.0);
+
+	f_vty_transceive(NSVTY, "nsvc " & int2str(mp_nsconfig.nsvc[0].nsvci) & " block");
+
+	alt {
+	[] as_rx_ns_block_ack(oneshot := true, nsvci := mp_nsconfig.nsvc[0].nsvci);
+	}
+	setverdict(pass);
+}
+
+testcase TC_tx_block_by_vty() runs on RAW_Test_CT {
+	tx_block_by_vty(30.0);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.2 block precedure by vty and reset the NSVC.
+ *            The NSVC should be still blocked after the reset.
+ */
+testcase TC_tx_block_by_vty_reset() runs on RAW_Test_CT {
+	timer T := 10.0;
+
+	tx_block_by_vty(60.0);
+	f_outgoing_ns_reset();
+
+	var default d := activate(ax_rx_fail_on_any_ns());
+	T.start;
+	alt {
+	[] as_rx_alive_tx_ack();
+	[] T.timeout { setverdict(pass); }
+	}
+	deactivate(d);
+}
+
+/* 48.016 7.4.1 ignore unexpected NS_ALIVE ACK */
+testcase TC_no_reset_alive_ack() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	NSCP[0].send(t_NS_ALIVE_ACK);
+	f_fails_except_reset();
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.3.1 NS_RESET with wrong nsei */
+testcase TC_reset_wrong_nsei() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	NSCP[0].send(ts_NS_RESET(NS_CAUSE_EQUIPMENT_FAILURE, g_nsconfig.nsvc[0].nsvci, g_nsconfig.nsei + 20));
+	NSCP[0].receive(tr_NS_RESET_ACK(g_nsconfig.nsvc[0].nsvci, g_nsconfig.nsei));
+	f_fails_except_reset();
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.3.1 NS_RESET with wrong nsvci */
+testcase TC_reset_wrong_nsvci() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	NSCP[0].send(ts_NS_RESET(NS_CAUSE_EQUIPMENT_FAILURE, g_nsconfig.nsvc[0].nsvci + 20, g_nsconfig.nsei));
+	NSCP[0].receive(tr_NS_RESET_ACK(g_nsconfig.nsvc[0].nsvci, g_nsconfig.nsei));
+	f_fails_except_reset();
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.3.1 NS_RESET with wrong nsvci + nsei */
+testcase TC_reset_wrong_nsei_nsvci() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	NSCP[0].send(ts_NS_RESET(NS_CAUSE_EQUIPMENT_FAILURE, g_nsconfig.nsvc[0].nsvci + 20, g_nsconfig.nsei + 20));
+	NSCP[0].receive(tr_NS_RESET_ACK(g_nsconfig.nsvc[0].nsvci, g_nsconfig.nsei));
+	f_fails_except_reset();
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.3.1 NS_RESET_ACK with wrong nsei */
+testcase TC_reset_ack_wrong_nsei() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	NSCP[0].receive(tr_NS_RESET(*, g_nsconfig.nsvc[0].nsvci, g_nsconfig.nsei));
+	NSCP[0].send(ts_NS_RESET_ACK(g_nsconfig.nsvc[0].nsvci, g_nsconfig.nsei + 20));
+	f_fails_except_reset();
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.3.1 NS_RESET_ACK with wrong nsvci */
+testcase TC_reset_ack_wrong_nsvci() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	NSCP[0].receive(tr_NS_RESET(*, g_nsconfig.nsvc[0].nsvci, g_nsconfig.nsei));
+	NSCP[0].send(ts_NS_RESET_ACK(g_nsconfig.nsvc[0].nsvci + 20, g_nsconfig.nsei));
+	f_fails_except_reset();
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.3.1 NS_RESET_ACK with wrong nsvci + nsei */
+testcase TC_reset_ack_wrong_nsei_nsvci() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	NSCP[0].receive(tr_NS_RESET(*, g_nsconfig.nsvc[0].nsvci, g_nsconfig.nsei));
+	NSCP[0].send(ts_NS_RESET_ACK(g_nsconfig.nsvc[0].nsvci + 20, g_nsconfig.nsei + 20));
+	f_fails_except_reset();
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.3.1 ignore unexpected NS_RESET_ACK after NS_RESET+ALIVE */
+testcase TC_ignore_reset_ack() runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	/* do a NS Reset procedure */
+	f_outgoing_ns_reset();
+
+	/* unblock and alive */
+	alt {
+	[] as_rx_ns_unblock_ack(oneshot := true);
+	[] as_rx_alive_tx_ack();
+	}
+
+	NSCP[0].send(ts_NS_RESET_ACK(g_nsconfig.nsvc[0].nsvci, g_nsconfig.nsei));
+	f_ensure_no_ns(answer_alive := true, tout := 15.0);
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+/* 48.016 7.3 NS_RESET retries */
+testcase TC_reset_retries() runs on RAW_Test_CT {
+	var integer reset := 0;
+
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	alt {
+	[] NSCP[0].receive(tr_NS_RESET(*, *, *)) {
+		reset := reset + 1;
+		if (reset <= 3) {
+			repeat;
+		} else {
+			setverdict(pass);
+		}
+	}
+	}
+
+	f_sleep(1.0);
+}
+
+/* 48.016 behave RESET_ACK got dropped
+ * TTCN  -> NS: reset
+ * TTCN <-  NS: reset ack
+ * TTCN <-  NS: unblock
+ * TTCN  -> NS: reset
+ * TTCN <-  NS: reset ack
+ * TTCN <-  NS: unblock
+ */
+testcase TC_reset_on_block_reset() runs on RAW_Test_CT {
+	var integer i := 0;
+
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 30.0);
+
+	f_outgoing_ns_reset();
+	activate(as_rx_alive_tx_ack());
+
+	alt {
+	[] NSCP[0].receive(t_NS_UNBLOCK) {
+		NSCP[0].send(ts_NS_RESET(NS_CAUSE_EQUIPMENT_FAILURE, g_nsconfig.nsvc[0].nsvci, g_nsconfig.nsei));
+		i := i + 1;
+		if (i < 3) {
+			repeat;
+		} else {
+			setverdict(pass);
+		}
+	}
+	[] NSCP[0].receive(tr_NS_RESET_ACK(g_nsconfig.nsvc[0].nsvci, g_nsconfig.nsei)) { repeat; }
+	}
+
+	f_sleep(1.0);
+}
+
+/* 48.016 7.4 test procedure for frame relay with a single nsvci */
+function f_alive_retries_single(boolean reset := false) runs on RAW_Test_CT {
+	f_init_vty();
+	f_init_ns_codec(mp_nsconfig, guard_secs := 60.0);
+
+	/* do a NS Reset procedure */
+	f_outgoing_ns_reset();
+
+	alt {
+	[] as_rx_ns_unblock_ack(oneshot := true);
+	[] as_rx_alive_tx_ack();
+	}
+
+	/* wait for one alive and answer it */
+	as_rx_alive_tx_ack(oneshot := true);
+	NSCP[0].receive(t_NS_ALIVE);
+	NSCP[0].receive(t_NS_ALIVE);
+	NSCP[0].receive(t_NS_ALIVE);
+	NSCP[0].receive(t_NS_ALIVE);
+	if (reset) {
+		NSCP[0].receive(tr_NS_RESET(*, g_nsconfig.nsvc[0].nsvci, g_nsconfig.nsei));
+	} else {
+		f_ensure_no_ns(tout := 10.0);
+	}
+
+	setverdict(pass);
+	f_sleep(1.0);
+}
+
+testcase TC_alive_retries_single_reset() runs on RAW_Test_CT {
+	f_alive_retries_single(reset := true);
+}
+
+testcase TC_alive_retries_single_no_resp() runs on RAW_Test_CT {
+	f_alive_retries_single(reset := false);
+}
+
+control {
+	execute( TC_tx_reset() );
+
+	/* 48.016 7.2 Block procedure */
+	execute( TC_tx_block() );
+	execute( TC_tx_block_by_vty() );
+	execute( TC_tx_block_by_vty_reset() );
+	// execute( TC_block_other_nsvc() ); // reset, unblock, sleep(1), block over another nsvci 
+	/* 48.016 7.2 Unblock procedure */
+	execute( TC_tx_unblock() );
+	execute( TC_tx_unblock_retries() );
+	// execute( TC_rx_unblock_tx_unblock() ); // wait for an rx unblock pdu, send an unblock pdu, expect unblock ack pdu
+	// execute( TC_unblockable() ); // block a NS-VCI via vty, try block procedure
+
+	/* 48.016 7.2.1 Block Abnormal Condition */
+	/* 48.016 7.2.1 Unblock Abnormal Condition */
+
+	/* 48.016 7.3.1 Abnormal Condition */
+	if (mp_dialect == NS2_DIALECT_STATIC_RESETBLOCK) {
+		execute( TC_reset_wrong_nsei() );
+		execute( TC_reset_wrong_nsvci() );
+		execute( TC_reset_wrong_nsei_nsvci() );
+		execute( TC_reset_ack_wrong_nsei() );
+		execute( TC_reset_ack_wrong_nsvci() );
+		execute( TC_reset_ack_wrong_nsei_nsvci() );
+		execute( TC_reset_retries() );
+		execute( TC_reset_on_block_reset() );
+	}
+	execute( TC_ignore_reset_ack() );
+
+	/* 48.016 7.4 Test procedure on frame relay */
+	execute( TC_tx_reset_tx_alive() );
+	execute( TC_tx_reset_rx_alive() );
+
+	/* 48.016 7.4.1 Abnormal Condition */
+	if (mp_dialect == NS2_DIALECT_STATIC_RESETBLOCK) {
+		// execute( TC_alive_retries_multi() ); // check if alive retries works and block over an alive nsvc
+		execute( TC_alive_retries_single_reset() );
+	} else if (mp_dialect == NS2_DIALECT_IPACCESS) {
+		execute( TC_alive_retries_single_no_resp() );
+	}
+	execute( TC_no_reset_alive_ack() );
+}
+
+}
diff --git a/ns/NS_Tests.udp.cfg b/ns/NS_Tests.udp.cfg
new file mode 100644
index 0000000..f040998
--- /dev/null
+++ b/ns/NS_Tests.udp.cfg
@@ -0,0 +1,34 @@
+[ORDERED_INCLUDE]
+# Common configuration, shared between test suites
+"../Common.cfg"
+# testsuite specific configuration, not expected to change
+"./NS_Tests.default"
+
+[LOGGING]
+
+[MODULE_PARAMETERS]
+NS_Tests.mp_nsconfig := {
+	nsei := 1234,
+	nsvc := {
+		{
+			provider := {
+				ip := {
+					address_family := AF_INET,
+					local_ip := "127.0.0.1",
+					local_udp_port := 22000,
+					remote_ip := "127.0.0.1",
+					remote_udp_port := 23000
+				}
+			},
+			nsvci := 1234
+		}
+	}
+}
+NS_Tests.mp_dialect := NS2_DIALECT_STATIC_RESETBLOCK
+
+[TESTPORT_PARAMETERS]
+
+[MAIN_CONTROLLER]
+
+[EXECUTE]
+NS_Tests.control
diff --git a/ns/expected-results.xml b/ns/expected-results.xml
new file mode 100644
index 0000000..459744d
--- /dev/null
+++ b/ns/expected-results.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0"?>
+<testsuite name='Titan' tests='1' failures='0' errors='0' skipped='0' inconc='0' time='MASKED'>
+  <testcase classname='NS_Tests' name='TC_NS_connect_reset' time='MASKED'/>
+</testsuite>
diff --git a/ns/gen_links.sh b/ns/gen_links.sh
new file mode 100755
index 0000000..6ebee9d
--- /dev/null
+++ b/ns/gen_links.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+BASEDIR=../deps
+
+. ../gen_links.sh.inc
+
+DIR=$BASEDIR/titan.TestPorts.UNIX_DOMAIN_SOCKETasp/src
+FILES="UD_PT.cc  UD_PT.hh  UD_PortType.ttcn  UD_Types.ttcn"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.Libraries.TCCUsefulFunctions/src
+FILES="TCCInterface_Functions.ttcn TCCConversion_Functions.ttcn TCCConversion.cc TCCInterface.cc TCCInterface_ip.h"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.TestPorts.Common_Components.Socket-API/src
+FILES="Socket_API_Definitions.ttcn"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.TestPorts.IPL4asp/src
+FILES="IPL4asp_Functions.ttcn  IPL4asp_PT.cc  IPL4asp_PT.hh IPL4asp_PortType.ttcn  IPL4asp_Types.ttcn  IPL4asp_discovery.cc IPL4asp_protocol_L234.hh"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.ProtocolModules.NS_v7.3.0/src
+FILES="NS_Types.ttcn"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.ProtocolModules.BSSGP_v13.0.0/src
+FILES="BSSGP_EncDec.cc  BSSGP_Types.ttcn"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.ProtocolModules.MobileL3_v13.4.0/src
+FILES="MobileL3_CC_Types.ttcn MobileL3_CommonIE_Types.ttcn MobileL3_GMM_SM_Types.ttcn MobileL3_MM_Types.ttcn MobileL3_RRM_Types.ttcn MobileL3_SMS_Types.ttcn MobileL3_SS_Types.ttcn MobileL3_Types.ttcn"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.ProtocolModules.LLC_v7.1.0/src
+FILES="LLC_EncDec.cc LLC_Types.ttcn"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.ProtocolModules.SNDCP_v7.0.0/src
+FILES="SNDCP_Types.ttcn"
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.TestPorts.AF_PACKET/src
+FILES="AF_PACKET_PT.cc AF_PACKET_PT.hh AF_PACKET_PortType.ttcn AF_PACKET_PortTypes.ttcn "
+FILES+="FrameRelay_Types.ttcn FrameRelay_CodecPort.ttcn FrameRelay_Emulation.ttcn Q931_Types.ttcn Q933_Types.ttcn "
+gen_links $DIR $FILES
+
+DIR=$BASEDIR/titan.TestPorts.TELNETasp/src
+FILES="TELNETasp_PT.cc  TELNETasp_PT.hh  TELNETasp_PortType.ttcn"
+gen_links $DIR $FILES
+
+DIR=../library
+FILES="Misc_Helpers.ttcn General_Types.ttcn Osmocom_VTY_Functions.ttcn Native_Functions.ttcn Native_FunctionDefs.cc GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Templates.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Templates.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc "
+FILES+="StatsD_Types.ttcn StatsD_CodecPort.ttcn StatsD_CodecPort_CtrlFunct.ttcn StatsD_CodecPort_CtrlFunctdef.cc StatsD_Checker.ttcn "
+FILES+="NS_Provider_IPL4.ttcn NS_Provider_FR.ttcn NS_Emulation.ttcnpp "
+FILES+="BSSGP_Emulation.ttcnpp Osmocom_Gb_Types.ttcn "
+FILES+="LLC_Templates.ttcn L3_Templates.ttcn L3_Common.ttcn "
+FILES+="PCUIF_Types.ttcn PCUIF_CodecPort.ttcn RAW_NS.ttcnpp "
+gen_links $DIR $FILES
+
+ignore_pp_results
diff --git a/ns/osmo-ns.fr.cfg b/ns/osmo-ns.fr.cfg
new file mode 100644
index 0000000..d1109ab
--- /dev/null
+++ b/ns/osmo-ns.fr.cfg
@@ -0,0 +1,55 @@
+log gsmtap 127.0.0.1
+ logging level set-all debug
+
+log stderr
+ logging filter all 1
+ logging print level 1
+ logging print category 1
+ logging print category-hex 0
+ logging print file basename last
+ logging print extended-timestamp 1
+ logging level set-all debug
+!
+stats interval 0
+stats reporter statsd
+ prefix TTCN3
+ level subscriber
+ remote-ip 127.0.0.1
+ remote-port 8125
+ flush-period 1
+ mtu 1024
+ enable
+
+line vty
+ no login
+ bind 127.0.0.1
+
+ns
+ bind fr hdlcnet1
+  fr hdlcnet1 frnet
+ bind fr hdlcnet2
+  fr hdlcnet2 frnet
+ bind fr hdlcnet3
+  fr hdlcnet3 frnet
+ bind fr hdlcnet4
+  fr hdlcnet4 frnet
+ bind fr hdlcnet5
+  fr hdlcnet5 frnet
+ bind fr hdlcnet6
+  fr hdlcnet6 frnet
+ bind fr hdlcnet7
+  fr hdlcnet7 frnet
+ bind fr hdlcnet8
+  fr hdlcnet8 frnet
+ nse 2001
+  nsvc fr hdlcnet1 dlci 16 nsvci 1
+  nsvc fr hdlcnet2 dlci 17 nsvci 2
+  nsvc fr hdlcnet3 dlci 18 nsvci 3
+  nsvc fr hdlcnet4 dlci 19 nsvci 4
+ nse 2002
+  nsvc fr hdlcnet5 dlci 20 nsvci 5
+  nsvc fr hdlcnet6 dlci 21 nsvci 6
+ nse 2003
+  nsvc fr hdlcnet7 dlci 22 nsvci 7
+  nsvc fr hdlcnet8 dlci 23 nsvci 8
+
diff --git a/ns/osmo-ns.udp.cfg b/ns/osmo-ns.udp.cfg
new file mode 100644
index 0000000..28237c5
--- /dev/null
+++ b/ns/osmo-ns.udp.cfg
@@ -0,0 +1,93 @@
+!
+! OsmoNSdummy (1.4.0.326-f57c-dirty) configuration saved from vty
+!!
+!
+log stderr
+ logging filter all 1
+ logging color 0
+ logging print category-hex 0
+ logging print category 1
+ logging print extended-timestamp 1
+ logging print level 1
+ logging print file basename
+ logging level force-all info
+ logging level lglobal debug
+ logging level llapd debug
+ logging level linp debug
+ logging level lmux debug
+ logging level lmi debug
+ logging level lmib debug
+ logging level lsms debug
+ logging level lctrl debug
+ logging level lgtp debug
+ logging level lstats debug
+ logging level lgsup debug
+ logging level loap debug
+ logging level lss7 debug
+ logging level lsccp debug
+ logging level lsua debug
+ logging level lm3ua debug
+ logging level lmgcp debug
+ logging level ljibuf debug
+ logging level lrspro debug
+ logging level lns debug
+ logging level lbssgp debug
+log gsmtap 127.0.0.1
+ logging filter all 0
+ logging color 1
+ logging print category-hex 1
+ logging print category 0
+ logging timestamp 0
+ logging print file 1
+ logging level lglobal debug
+ logging level llapd debug
+ logging level linp debug
+ logging level lmux debug
+ logging level lmi debug
+ logging level lmib debug
+ logging level lsms debug
+ logging level lctrl debug
+ logging level lgtp debug
+ logging level lstats debug
+ logging level lgsup debug
+ logging level loap debug
+ logging level lss7 debug
+ logging level lsccp debug
+ logging level lsua debug
+ logging level lm3ua debug
+ logging level lmgcp debug
+ logging level ljibuf debug
+ logging level lrspro debug
+ logging level lns debug
+ logging level lbssgp debug
+!
+stats reporter statsd
+  disable
+  remote-ip 127.0.0.1
+  remote-port 8125
+  mtu 1024
+  level subscriber
+  prefix TTCN3
+  flush-period 1
+  enable
+stats interval 0
+!
+line vty
+ no login
+!
+ns
+ timer tns-block 3
+ timer tns-block-retries 3
+ timer tns-reset 3
+ timer tns-reset-retries 3
+ timer tns-test 12
+ timer tns-alive 3
+ timer tns-alive-retries 3
+ timer tsns-prov 3
+ timer tsns-size-retries 3
+ timer tsns-config-retries 3
+ bind udp local
+  listen 127.0.0.1 23000
+  accept-ipaccess
+ nse 1234
+  nsvc ipa local 127.0.0.1 22000 nsvci 1234
diff --git a/ns/regen_makefile.sh b/ns/regen_makefile.sh
new file mode 100755
index 0000000..fece5d8
--- /dev/null
+++ b/ns/regen_makefile.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+FILES="*.ttcn *.ttcnpp BSSGP_EncDec.cc IPL4asp_PT.cc IPL4asp_discovery.cc TCCConversion.cc TCCInterface.cc UD_PT.cc RLCMAC_EncDec.cc LLC_EncDec.cc TELNETasp_PT.cc Native_FunctionDefs.cc StatsD_CodecPort_CtrlFunctdef.cc "
+
+FILES+="AF_PACKET_PT.cc AF_PACKET_PT.hh "
+
+export CPPFLAGS_TTCN3="-DBSSGP_EM_L3 -DNS_EMULATION_FR"
+
+../regen-makefile.sh NS_Tests.ttcn $FILES
