diff --git a/src/emuvim/api/zerorpc/compute.py b/src/emuvim/api/zerorpc/compute.py
index 9d59183..4815fa7 100644
--- a/src/emuvim/api/zerorpc/compute.py
+++ b/src/emuvim/api/zerorpc/compute.py
@@ -7,6 +7,9 @@
 import threading
 import zerorpc
 
+import paramiko
+import ipaddress
+
 logging.basicConfig(level=logging.INFO)
 
 
@@ -122,7 +125,7 @@
                                   kwargs.get('network'),
                                   kwargs.get('command'))
         # start traffic source (with fixed ip addres, no use for now...)
-        self.compute_action_start( dc_label, 'psrc', 'profile_source', [{'id':'output'}], None)
+        psrc_status = self.compute_action_start( dc_label, 'psrc', 'profile_source', [{'id':'output'}], None)
         # link vnf to traffic source
         DCNetwork = self.dcs.get(dc_label).net
         DCNetwork.setChain('psrc', compute_name,
@@ -131,6 +134,32 @@
                            cmd='add-flow', weight=None)
 
         ## SSM/SP tasks:
+        # start traffic generation
+        for nw in psrc_status.get('network'):
+            if nw.get('intf_name') == 'output':
+                psrc_output_ip = unicode(nw['ip'])
+                break
+        dummy_iperf_server_ip = ipaddress.IPv4Address(psrc_output_ip) + 1
+        iperf_cmd = 'iperf -c {0} -u -l18 -b10M -t1000 &'.format(dummy_iperf_server_ip)
+
+        psrc_mgmt_ip = psrc_status['docker_network']
+        psrc_user='root'
+        psrc_passw='root'
+
+        # use ssh login when starting command externally
+        ret = self.dcs.get(dc_label).containers.get('psrc').pexec(iperf_cmd)
+        logging.info(ret)
+        self.dcs.get(dc_label).containers.get('psrc').monitor()
+
+        #ssh does not work when exectuted via zerorpc command
+        #psrc_mgmt_ip = '172.17.0.3'
+        #ssh = paramiko.SSHClient()
+        #ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
+        #ssh.connect(psrc_mgmt_ip, username='steven', password='test')
+        #ssh.connect(psrc_mgmt_ip, username='root', password='root')
+
+        #iperf_cmd = 'iperf -c {0} -u -l18 -b10M -t1000'.format(dummy_iperf_server_ip)
+        #stdin, stdout, stderr = ssh.exec_command(iperf_cmd)
         # get monitor data and analyze
 
         # create table
diff --git a/src/emuvim/cli/network.py b/src/emuvim/cli/network.py
index 6b196a3..c524226 100755
--- a/src/emuvim/cli/network.py
+++ b/src/emuvim/cli/network.py
@@ -33,13 +33,14 @@
         vnf_dst_name = self._parse_vnf_name(args.get("destination"))
         vnf_dst_interface = self._parse_vnf_interface(args.get("destination"))
         weight = args.get("weight")
+        # note zerorpc does not support named arguments
         r = self.c.network_action_start(
             #args.get("datacenter"),
             vnf_src_name,
             vnf_dst_name,
-            vnf_src_interface=vnf_src_interface,
-            vnf_dst_interface=vnf_dst_interface,
-            weight=weight)
+            vnf_src_interface,
+            vnf_dst_interface,
+            weight)
         pp.pprint(r)
 
     def remove(self, args):
@@ -52,9 +53,9 @@
             #args.get("datacenter"),
             vnf_src_name,
             vnf_dst_name,
-            vnf_src_interface=vnf_src_interface,
-            vnf_dst_interface=vnf_dst_interface,
-            weight=weight)
+            vnf_src_interface,
+            vnf_dst_interface,
+            weight)
         pp.pprint(r)
 
     def _parse_vnf_name(self, vnf_name_str):
diff --git a/src/emuvim/dcemulator/monitoring.py b/src/emuvim/dcemulator/monitoring.py
index b3ec7ee..6531beb 100755
--- a/src/emuvim/dcemulator/monitoring.py
+++ b/src/emuvim/dcemulator/monitoring.py
@@ -91,7 +91,7 @@
                 if link_dict[link]['src_port_id'] == vnf_interface:
                     # found the right link and connected switch
                     # logging.info("{0},{1}".format(link_dict[link]['src_port_id'], vnf_source_interface))
-                    network_metric['mon_port'] = link_dict[link]['dst_port']
+                    network_metric['mon_port'] = link_dict[link]['dst_port_nr']
                     break
 
         if 'mon_port' not in network_metric:
diff --git a/src/emuvim/dcemulator/net.py b/src/emuvim/dcemulator/net.py
index 633ec6b..ac44d57 100755
--- a/src/emuvim/dcemulator/net.py
+++ b/src/emuvim/dcemulator/net.py
@@ -223,6 +223,7 @@
     # to remove chain do setChain( src, dst, cmd='del-flows')
     def setChain(self, vnf_src_name, vnf_dst_name, vnf_src_interface=None, vnf_dst_interface=None, cmd='add-flow', weight=None):
 
+        logging.info('vnf_src_if: {0}'.format(vnf_src_interface))
         #check if port is specified (vnf:port)
         if vnf_src_interface is None:
             # take first interface by default
diff --git a/src/emuvim/dcemulator/node.py b/src/emuvim/dcemulator/node.py
index d533f97..ad33adf 100755
--- a/src/emuvim/dcemulator/node.py
+++ b/src/emuvim/dcemulator/node.py
@@ -39,7 +39,7 @@
         this compute instance is connected to.
         """
         # format list of tuples (name, Ip, MAC, isUp, status)
-        return [(str(i), i.IP(), i.MAC(), i.isUp(), i.status())
+        return [{'intf_name':str(i), 'ip':i.IP(), 'mac':i.MAC(), 'up':i.isUp(), 'status':i.status()}
                 for i in self.intfList()]
 
     def getStatus(self):
diff --git a/src/emuvim/examples/monitoring_demo_topology.py b/src/emuvim/examples/monitoring_demo_topology.py
index fc515a8..8592d62 100755
--- a/src/emuvim/examples/monitoring_demo_topology.py
+++ b/src/emuvim/examples/monitoring_demo_topology.py
@@ -29,7 +29,7 @@
     """
     1. Create a data center network object (DCNetwork) with monitoring enabled
     """
-    net = DCNetwork(monitor=False)
+    net = DCNetwork(monitor=True)
 
     """
     1b. add a monitoring agent to the DCNetwork
