diff --git a/TestON/drivers/common/cli/emulator/mininetclidriver.py b/TestON/drivers/common/cli/emulator/mininetclidriver.py
index 659a710..d726f2e 100644
--- a/TestON/drivers/common/cli/emulator/mininetclidriver.py
+++ b/TestON/drivers/common/cli/emulator/mininetclidriver.py
@@ -1267,6 +1267,35 @@
             main.exit()
         return main.TRUE
 
+    def node( self, nodeName, commandStr ):
+        """
+        Carry out a command line on a given node
+        @parm:
+            nodeName: the node name in Mininet testbed
+            commandStr: the command line will be carried out on the node
+        Example: main.Mininet.node( nodeName="h1", commandStr="ls" )
+        """
+        command = str( nodeName ) + " " + str( commandStr )
+        main.log.info( command )
+
+        try:
+            response = self.execute( cmd = command, prompt = "mininet>" )
+            if re.search( "Unknown command", response ):
+                main.log.warn( response )
+                return main.FALSE
+        except pexpect.TIMEOUT:
+            main.log.error( self.name + ": pexpect.TIMEOUT found" )
+            main.cleanup()
+            main.exit()
+        except pexpect.EOF:
+            main.log.error( self.name + ": EOF exception found" )
+            main.log.error( self.name + ":     " + self.handle.before )
+            main.cleanup()
+            main.exit()
+        main.log.info( " response is :" )
+        main.log.info( response )
+        return response
+
     def yank( self, **yankargs ):
         """
            yank a mininet switch interface to a host"""
diff --git a/TestON/tests/USECASE_SdnipI2/Dependency/Functions.py b/TestON/tests/USECASE_SdnipFunction/Dependency/Functions.py
similarity index 98%
rename from TestON/tests/USECASE_SdnipI2/Dependency/Functions.py
rename to TestON/tests/USECASE_SdnipFunction/Dependency/Functions.py
index 1b93f49..0f25012 100644
--- a/TestON/tests/USECASE_SdnipI2/Dependency/Functions.py
+++ b/TestON/tests/USECASE_SdnipFunction/Dependency/Functions.py
@@ -66,11 +66,11 @@
     """
     if len( speakers ) == 0:
         main.log.error( "Parameter speakers can not be empty." )
-        main.clearUp()
+        main.cleanup()
         main.exit()
     if len( peers ) == 0:
         main.log.error( "Parameter speakers can not be empty." )
-        main.clearUp()
+        main.cleanup()
         main.exit()
 
     if expectAllSuccess:
@@ -98,7 +98,7 @@
                              onfail = "Ping test results are Not expected" )
 
     if result == False:
-        main.clearUp()
+        main.cleanup()
         main.exit()
 
 
@@ -114,7 +114,7 @@
     main.step( "Check ping between each host pair" )
     if len( hosts ) == 0:
         main.log.error( "Parameter hosts can not be empty." )
-        main.clearUp()
+        main.cleanup()
         main.exit()
 
     result = True
diff --git a/TestON/tests/USECASE_SdnipI2/Dependency/USECASE_SdnipI2MN.py b/TestON/tests/USECASE_SdnipFunction/Dependency/USECASE_SdnipI2MN.py
similarity index 99%
rename from TestON/tests/USECASE_SdnipI2/Dependency/USECASE_SdnipI2MN.py
rename to TestON/tests/USECASE_SdnipFunction/Dependency/USECASE_SdnipI2MN.py
index 30b7b25..17544d1 100755
--- a/TestON/tests/USECASE_SdnipI2/Dependency/USECASE_SdnipI2MN.py
+++ b/TestON/tests/USECASE_SdnipFunction/Dependency/USECASE_SdnipI2MN.py
@@ -25,8 +25,8 @@
 
 QUAGGA_DIR = '/usr/lib/quagga'
 QUAGGA_RUN_DIR = '/usr/local/var/run/quagga'
-QUAGGA_CONFIG_DIR = '~/OnosSystemTest/TestON/tests/USECASE_SdnipI2/Dependency/'
-onos1IP = '10.128.4.52'
+QUAGGA_CONFIG_DIR = '~/OnosSystemTest/TestON/tests/USECASE_SdnipFunction/Dependency/'
+# onos1IP = '10.254.1.201'
 numSw = 39
 
 
@@ -338,10 +338,11 @@
     swCtl100.cmd( 'ovs-vsctl set-fail-mode swCtl100 standalone' )
 
     # connect all switches to controller
+    '''
     for i in range ( 1, numSw + 1 ):
         swX = net.get( 'sw%s' % ( i ) )
         swX.cmd( 'ovs-vsctl set-controller sw%s tcp:%s:6653' % ( i, onos1IP ) )
-
+    '''
     # Start Quagga on border routers
     '''
     for i in range ( 64514, 64516 + 1 ):
@@ -367,12 +368,12 @@
     hosts = [ peer64514, peer64515, peer64516, host64514];
     startsshds( hosts )
     #
-
+    '''
     forwarding1 = '%s:2000:%s:2000' % ( '1.1.1.2', onos1IP )
     root.cmd( 'ssh -nNT -o "PasswordAuthentication no" \
     -o "StrictHostKeyChecking no" -l sdn -L %s %s & ' % ( forwarding1, onos1IP ) )
 
-
+    '''
     # time.sleep( 3000000000 )
     CLI( net )
 
diff --git a/TestON/tests/USECASE_SdnipI2/Dependency/quagga-sdn.conf b/TestON/tests/USECASE_SdnipFunction/Dependency/quagga-sdn.conf
similarity index 100%
rename from TestON/tests/USECASE_SdnipI2/Dependency/quagga-sdn.conf
rename to TestON/tests/USECASE_SdnipFunction/Dependency/quagga-sdn.conf
diff --git a/TestON/tests/USECASE_SdnipI2/Dependency/quagga64514.conf b/TestON/tests/USECASE_SdnipFunction/Dependency/quagga64514.conf
similarity index 100%
rename from TestON/tests/USECASE_SdnipI2/Dependency/quagga64514.conf
rename to TestON/tests/USECASE_SdnipFunction/Dependency/quagga64514.conf
diff --git a/TestON/tests/USECASE_SdnipI2/Dependency/quagga64515.conf b/TestON/tests/USECASE_SdnipFunction/Dependency/quagga64515.conf
similarity index 100%
rename from TestON/tests/USECASE_SdnipI2/Dependency/quagga64515.conf
rename to TestON/tests/USECASE_SdnipFunction/Dependency/quagga64515.conf
diff --git a/TestON/tests/USECASE_SdnipI2/Dependency/quagga64516.conf b/TestON/tests/USECASE_SdnipFunction/Dependency/quagga64516.conf
similarity index 100%
rename from TestON/tests/USECASE_SdnipI2/Dependency/quagga64516.conf
rename to TestON/tests/USECASE_SdnipFunction/Dependency/quagga64516.conf
diff --git a/TestON/tests/USECASE_SdnipI2/Dependency/zebra.conf b/TestON/tests/USECASE_SdnipFunction/Dependency/zebra.conf
similarity index 100%
rename from TestON/tests/USECASE_SdnipI2/Dependency/zebra.conf
rename to TestON/tests/USECASE_SdnipFunction/Dependency/zebra.conf
diff --git a/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.params b/TestON/tests/USECASE_SdnipFunction/USECASE_SdnipFunction.params
similarity index 88%
rename from TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.params
rename to TestON/tests/USECASE_SdnipFunction/USECASE_SdnipFunction.params
index 1575799..5ba6b2d 100644
--- a/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.params
+++ b/TestON/tests/USECASE_SdnipFunction/USECASE_SdnipFunction.params
@@ -9,7 +9,7 @@
 
     <CTRL>
         <numCtrl>1</numCtrl>
-        <ip1>10.128.4.52</ip1>
+        <ip1>OC1</ip1>
         <port1>6653</port1>
     </CTRL>
 
@@ -25,13 +25,14 @@
     </JSON>
 
     <DEPENDENCY>
-        <path>/USECASE_SdnipI2/Dependency/</path>
+        <path>/USECASE_SdnipFunction/Dependency/</path>
         <topology>USECASE_SdnipI2MN.py</topology>
         <wrapper1>Functions</wrapper1>
     </DEPENDENCY>
 
     <config>
         <peerNum> 3 </peerNum>
+        <switchNum> 39 </switchNum>
     </config>
 
     <timers>
diff --git a/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.py b/TestON/tests/USECASE_SdnipFunction/USECASE_SdnipFunction.py
similarity index 92%
rename from TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.py
rename to TestON/tests/USECASE_SdnipFunction/USECASE_SdnipFunction.py
index ebc4545..ed93999 100644
--- a/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.py
+++ b/TestON/tests/USECASE_SdnipFunction/USECASE_SdnipFunction.py
@@ -1,5 +1,5 @@
 # Testing the functionality of SDN-IP with single ONOS instance
-class USECASE_SdnipI2:
+class USECASE_SdnipFunction:
 
     def __init__( self ):
         self.default = ''
@@ -12,7 +12,7 @@
         """
         import os
         import imp
-        main.log.case( "Start Mininet topology" )
+        main.log.case( "This case is to setup the Mininet testbed" )
         main.dependencyPath = main.testDir + \
                               main.params[ 'DEPENDENCY' ][ 'path' ]
         main.topology = main.params[ 'DEPENDENCY' ][ 'topology' ]
@@ -20,15 +20,46 @@
         main.step( "Starting Mininet Topology" )
         topology = main.dependencyPath + main.topology
         topoResult = main.Mininet.startNet( topoFile = topology )
-        stepResult = topoResult
         utilities.assert_equals( expect = main.TRUE,
-                                 actual = stepResult,
+                                 actual = topoResult,
                                  onpass = "Successfully loaded topology",
                                  onfail = "Failed to load topology" )
         # Exit if topology did not load properly
         if not topoResult:
             main.cleanup()
             main.exit()
+        main.step( "Connect switches to controller" )
+
+        global ONOS1Ip
+        ONOS1Ip = os.getenv( main.params[ 'CTRL' ][ 'ip1' ] )
+        # connect all switches to controller
+        swResult = main.TRUE
+        for i in range ( 1, int( main.params['config']['switchNum'] ) + 1 ):
+            sw = "sw%s" % ( i )
+            swResult = swResult and main.Mininet.assignSwController( sw, ONOS1Ip )
+            # swResult = swResult and main.Mininet.assignSwController( sw, ONOS1Ip, port = "6633" )
+        utilities.assert_equals( expect = main.TRUE,
+                             actual = swResult,
+                             onpass = "Successfully connect all switches to ONOS",
+                             onfail = "Failed to connect all switches to ONOS" )
+        if not swResult:
+            main.cleanup()
+            main.exit()
+
+        main.step( "Set up tunnel from Mininet node to onos node" )
+        forwarding1 = '%s:2000:%s:2000' % ( '1.1.1.2', ONOS1Ip )
+        command = 'ssh -nNT -o "PasswordAuthentication no" \
+        -o "StrictHostKeyChecking no" -l sdn -L %s %s & ' % ( forwarding1, ONOS1Ip )
+
+        tunnelResult = main.TRUE
+        tunnelResult = main.Mininet.node( "root", command )
+        if not tunnelResult:
+            main.log.report("Failed to create tunnel")
+            main.cleanup()
+            main.exit()
+        elif "PasswordAuthentication" in tunnelResult:
+            main.log.report("Successfully created tunnel")
+
 
     # This case is to setup ONOS
     def CASE101( self, main ):
@@ -50,8 +81,6 @@
         main.case( "Setting up test environment" )
 
         cellName = main.params[ 'ENV' ][ 'cellName' ]
-        global ONOS1Ip
-        ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
 
         main.step( "Applying cell variable to environment" )
         cellResult = main.ONOSbench.setCell( cellName )
diff --git a/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.topo b/TestON/tests/USECASE_SdnipFunction/USECASE_SdnipFunction.topo
similarity index 96%
rename from TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.topo
rename to TestON/tests/USECASE_SdnipFunction/USECASE_SdnipFunction.topo
index 7259cb1..07109ba 100644
--- a/TestON/tests/USECASE_SdnipI2/USECASE_SdnipI2.topo
+++ b/TestON/tests/USECASE_SdnipFunction/USECASE_SdnipFunction.topo
@@ -20,7 +20,7 @@
         </ONOScli>
 
         <ONOS1>
-            <host>10.128.4.52</host>
+            <host>OC1</host>
             <user>sdn</user>
             <password></password>
             <type>OnosDriver</type>
diff --git a/TestON/tests/USECASE_SdnipI2/__init__.py b/TestON/tests/USECASE_SdnipFunction/__init__.py
similarity index 100%
rename from TestON/tests/USECASE_SdnipI2/__init__.py
rename to TestON/tests/USECASE_SdnipFunction/__init__.py
diff --git a/TestON/tests/USECASE_SdnipI2/network-cfg.json b/TestON/tests/USECASE_SdnipFunction/network-cfg.json
similarity index 100%
rename from TestON/tests/USECASE_SdnipI2/network-cfg.json
rename to TestON/tests/USECASE_SdnipFunction/network-cfg.json
diff --git a/TestON/tests/USECASE_SdnipFunction/sdnip_single_instance b/TestON/tests/USECASE_SdnipFunction/sdnip_single_instance
new file mode 100644
index 0000000..c2c51c6
--- /dev/null
+++ b/TestON/tests/USECASE_SdnipFunction/sdnip_single_instance
@@ -0,0 +1,13 @@
+export ONOS_CELL="sdnip_single_instance"
+
+export ONOS_INSTALL_DIR="/opt/onos"
+export ONOS_NIC=10.254.1.*
+export OC1="10.254.1.201"
+export OCN="127.0.0.1"
+export OCI="${OC1}"
+export ONOS_USER="sdn"                  # ONOS user on remote system
+export ONOS_PWD="rocks"
+
+#export ONOS_APPS="drivers,openflow,config,proxyarp"
+export ONOS_APPS="drivers,openflow,proxyarp"
+
