diff --git a/src/nsd/ping_pong_ns/ping_pong_nsd.yaml b/src/nsd/ping_pong_ns/ping_pong_nsd.yaml
index 0791576..7f213cd 100644
--- a/src/nsd/ping_pong_ns/ping_pong_nsd.yaml
+++ b/src/nsd/ping_pong_ns/ping_pong_nsd.yaml
@@ -22,7 +22,7 @@
         nsd:name: ping_pong_ns
         nsd:short-name: ping_pong_ns
         nsd:vendor: RIFT.io
-        nsd:version: '1.0'
+        nsd:version: '1.1'
         nsd:description: RIFT.io sample ping pong network service
         nsd:constituent-vnfd:
         -   nsd:member-vnf-index: '1'
@@ -34,6 +34,10 @@
             nsd:parameter:
             -   nsd:name: port
                 nsd:value: 5555
+            -   nsd:name: ssh-username
+                nsd:value: fedora
+            -   nsd:name: ssh-password
+                nsd:value: fedora
             nsd:seq: '1'
             nsd:user-defined-script: start_traffic.py
         nsd:input-parameter-xpath:
diff --git a/src/nsd/ping_pong_ns/scripts/start_traffic.py b/src/nsd/ping_pong_ns/scripts/start_traffic.py
index f98bece..87c309f 100755
--- a/src/nsd/ping_pong_ns/scripts/start_traffic.py
+++ b/src/nsd/ping_pong_ns/scripts/start_traffic.py
@@ -19,6 +19,7 @@
 
 import argparse
 import logging
+import paramiko
 import os
 import subprocess
 import sys
@@ -27,55 +28,71 @@
 import yaml
 
 
+def ssh(cmd, host, user, password):
+    """ Run an arbitrary command over SSH. """
+
+    client = paramiko.SSHClient()
+    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
+
+    client.connect(host, port=22, username=user, password=password)
+
+    stdin, stdout, stderr = client.exec_command(cmd, get_pty=True)
+    retcode = stdout.channel.recv_exit_status()
+    client.close()
+
+    return (
+        retcode,
+        stdout.read().decode('utf-8').strip(),
+        stderr.read().decode('utf-8').strip()
+    )
+
+
 def start_traffic(yaml_cfg, logger):
     '''Use curl and set admin status to enable on pong and ping vnfs'''
 
     curl_fmt = 'curl -D /dev/stdout -H "Accept: application/vnd.yang.data' \
                    '+xml" -H "Content-Type: application/vnd.yang.data+json" ' \
-                   '-X POST -d "{{ {data} }}" http://{mgmt_ip}:' \
+                   '-X POST -d "{{ {data} }}" http://127.0.0.1:' \
                    '{mgmt_port}/api/v1/{vnf_type}/{url}'
 
-    def setup_service(mgmt_ip, port, vnf_type, service_ip, service_port):
-        data = '\\"ip\\":\\"{}\\", \\"port\\":5555'.format(service_ip)
-        curl_cmd = curl_fmt.format(
-            mgmt_ip=mgmt_ip,
-            mgmt_port=port,
-            vnf_type=vnf_type,
-            data=data,
-            url='server'
-        )
-
-        logger.debug("Executing cmd: %s", curl_cmd)
-        proc = subprocess.run(curl_cmd, shell=True,
-                              stdout=subprocess.PIPE,
-                              stderr=subprocess.PIPE)
-
-        logger.debug("Process: {}".format(proc))
-
-        return proc.returncode
-
-    def enable_service(mgmt_ip, port, vnf_type):
-        curl_cmd = curl_fmt.format(
-            mgmt_ip=mgmt_ip,
-            mgmt_port=port,
-            vnf_type=vnf_type,
-            data='\\"enable\\":true',
-            url='adminstatus/state'
-        )
-
-        logger.debug("Executing cmd: %s", curl_cmd)
-        proc = subprocess.run(curl_cmd, shell=True,
-                              stdout=subprocess.PIPE,
-                              stderr=subprocess.PIPE)
-
-        logger.debug("Process: {}".format(proc))
-
-        return proc.returncode
+    # Get userid and password for the VNF
+    user = yaml_cfg['parameter']['ssh-username']
+    passwd = yaml_cfg['parameter']['ssh-password']
 
     # Get port from user parameter
     service_port = yaml_cfg['parameter']['port']
 
     service_ip = None
+
+    def exec_cmd(vnf_type, mgmt_ip, port, url, data):
+        curl_cmd = curl_fmt.format(
+            mgmt_port=port,
+            vnf_type=vnf_type,
+            data=data,
+            url=url
+        )
+
+        logger.debug("Executing cmd: %s", curl_cmd)
+        rc, out, err = ssh(curl_cmd, mgmt_ip, user, passwd)
+
+        if rc != 0:
+            logger.error("cmd={}, rc={}, stderr={}, stdout={}".
+                         format(curl_cmd, rc, err, out))
+        else:
+            logger.debug("cmd={}, rc={}, stderr={}, stdout={}".
+                         format(curl_cmd, rc, err, out))
+
+        return rc
+
+    def setup_service(mgmt_ip, port, vnf_type):
+        data = '\\"ip\\":\\"{}\\", \\"port\\":5555'.format(service_ip)
+        return exec_cmd(vnf_type, mgmt_ip, port, 'server', data)
+
+    def enable_service(mgmt_ip, port, vnf_type):
+        data='\\"enable\\":true'
+        url='adminstatus/state'
+        return exec_cmd(vnf_type, mgmt_ip, port, url, data)
+
     # Enable pong service first
     for index, vnfr in yaml_cfg['vnfr'].items():
         logger.debug("VNFR {}: {}".format(index, vnfr))
@@ -95,7 +112,7 @@
             max_tries = 60
             tries = 0
             while tries < max_tries:
-                rc = setup_service(mgmt_ip, port, vnf_type, service_ip, service_port)
+                rc = setup_service(mgmt_ip, port, vnf_type)
                 tries += 1
                 if rc != 0:
                     logger.error("Setup service for pong failed ({}): {}".
@@ -104,13 +121,14 @@
                         return rc
                     else:
                         time.sleep(1) # Sleep for 1 seconds
+                else:
+                    break
 
             rc = enable_service(mgmt_ip, port, vnf_type)
             if rc != 0:
                 logger.error("Enable service for pong failed: {}".
                              format(rc))
                 return rc
-            break
 
     # Add a delay to provide pong port to come up
     time.sleep(1)
@@ -131,7 +149,7 @@
             max_tries = 30
             tries = 0
             while tries < max_tries:
-                rc = setup_service(mgmt_ip, port, vnf_type, service_ip, service_port)
+                rc = setup_service(mgmt_ip, port, vnf_type)
                 tries += 1
                 if rc != 0:
                     logger.error("Setup service for ping failed ({}): {}".
@@ -140,12 +158,13 @@
                         return rc
                     else:
                         time.sleep(1) # Sleep for 1 seconds
+                else:
+                    break
 
             rc = enable_service(mgmt_ip, port, vnf_type)
             if rc != 0:
                 logger.error("Enable service for ping failed: {}".
                              format(rc))
-            break
 
     return rc
 
diff --git a/src/vnfd/ping_vnf/ping_vnfd.yaml b/src/vnfd/ping_vnf/ping_vnfd.yaml
index 44f09ab..f5e577c 100644
--- a/src/vnfd/ping_vnf/ping_vnfd.yaml
+++ b/src/vnfd/ping_vnf/ping_vnfd.yaml
@@ -22,7 +22,7 @@
         short-name: ping_vnf
         logo: rift_logo.png
         vendor: RIFT.io
-        version: '1.0'
+        version: '1.1'
         description: This is an example RIFT.ware VNF
         connection-point:
         -   name: ping_vnfd/cp0
diff --git a/src/vnfd/pong_vnf/pong_vnfd.yaml b/src/vnfd/pong_vnf/pong_vnfd.yaml
index fb7c53c..50f537f 100644
--- a/src/vnfd/pong_vnf/pong_vnfd.yaml
+++ b/src/vnfd/pong_vnf/pong_vnfd.yaml
@@ -22,7 +22,7 @@
         short-name: pong_vnf
         logo: rift_logo.png
         vendor: RIFT.io
-        version: '1.0'
+        version: '1.1'
         description: This is an example RIFT.ware VNF
         connection-point:
         -   name: pong_vnfd/cp0
