diff --git a/edge-monitoring/edge_monitoring_server.py b/edge-monitoring/edge_monitoring_server.py
index 16bfe9e..30613fe 100755
--- a/edge-monitoring/edge_monitoring_server.py
+++ b/edge-monitoring/edge_monitoring_server.py
@@ -39,6 +39,12 @@
                     'max': 0.0,
                     'stddev': 0.0
                 }
+            },
+            'iperf': {
+                'cluster': {
+                    'downlink': 0.0,
+                    'uplink': 0.0
+                }
             }
         },
         'signal_quality': {
@@ -72,12 +78,16 @@
 ping_test_ok = prom.Gauge("aetheredge_ping_test_ok", "Last ping test passed", ["name"])
 e2e_tests_down = prom.Gauge("aetheredge_e2e_tests_down", "E2E tests not reporting", ["name"])
 
-# Speedtest metrics
+# Speedtest ping metrics
 ping_dns_min = prom.Gauge("aetheredge_ping_dns_test_min","Last ping test minimum value",["name"])
 ping_dns_avg = prom.Gauge("aetheredge_ping_dns_test_avg","Last ping test average",["name"])
 ping_dns_max = prom.Gauge("aetheredge_ping_dns_test_max","Last ping test maximum value",["name"])
 ping_dns_stddev = prom.Gauge("aetheredge_ping_dns_test_stddev","Last ping test standard deviation",["name"])
 
+# Speedtest iperf metrics
+iperf_cluster_downlink = prom.Gauge("aetheredge_iperf_cluster_downlink_test","Last iperf test downlink result",["name"])
+iperf_cluster_uplink = prom.Gauge("aetheredge_iperf_cluster_uplink_test","Last iperf test downlink result",["name"])
+
 # Signal quality metrics in CESQ format not dB
 # RSRQ: >=53 excellent, 43 ~ 53 good, 33 ~ 43 mid, <=33 bad, 0 no signal
 # RSRP: >=20 excellent, 10 ~ 20 good, 0 ~ 10 mid, 0 no signal
@@ -168,6 +178,12 @@
         pass
 
     try:
+        iperf_cluster_downlink.remove(name)
+        iperf_cluster_uplink.remove(name)
+    except:
+        pass
+
+    try:
         signal_quality_rsrq.remove(name)
         signal_quality_rsrp.remove(name)
     except:
@@ -189,14 +205,21 @@
         connect_status = edge['status']['control_plane']
         ping_status = edge['status']['user_plane']
 
-        speedtest_results_exist = True
+        speedtest_ping_results_exist = True
         if edge['speedtest']['ping']['dns']['avg']:
             ping_dns_min_result = edge['speedtest']['ping']['dns']['min']
             ping_dns_avg_result = edge['speedtest']['ping']['dns']['avg']
             ping_dns_max_result = edge['speedtest']['ping']['dns']['max']
             ping_dns_stddev_result = edge['speedtest']['ping']['dns']['stddev']
         else:
-            speedtest_results_exist = False
+            speedtest_ping_results_exist = False
+
+        speedtest_iperf_results_exist = True
+        if edge['speedtest']['iperf']['cluster']['downlink']:
+            iperf_cluster_downlink_result = edge['speedtest']['iperf']['cluster']['downlink']
+            iperf_cluster_uplink_result = edge['speedtest']['iperf']['cluster']['uplink']
+        else:
+            speedtest_iperf_results_exist = False
 
         cp_status.labels(edge['name']).set(status_codes[connect_status])
         up_status.labels(edge['name']).set(status_codes[ping_status])
@@ -220,12 +243,16 @@
             if connect_status == "connected" and ping_status == "connected":
                 e2e_tests_ok.labels(edge['name']).set(1)
 
-        if speedtest_results_exist:
+        if speedtest_ping_results_exist:
             ping_dns_min.labels(edge['name']).set(ping_dns_min_result)
             ping_dns_avg.labels(edge['name']).set(ping_dns_avg_result)
             ping_dns_max.labels(edge['name']).set(ping_dns_max_result)
             ping_dns_stddev.labels(edge['name']).set(ping_dns_stddev_result)
 
+        if speedtest_iperf_results_exist:
+            iperf_cluster_downlink.labels(edge['name']).set(iperf_cluster_downlink_result)
+            iperf_cluster_uplink.labels(edge['name']).set(iperf_cluster_uplink_result)
+
         if 'signal_quality' in edge.keys():
             signal_quality_rsrq.labels(edge['name']).set(edge['signal_quality']['rsrq'])
             signal_quality_rsrp.labels(edge['name']).set(edge['signal_quality']['rsrp'])
@@ -236,6 +263,8 @@
     res.append(prom.generate_latest(ping_dns_avg))
     res.append(prom.generate_latest(ping_dns_max))
     res.append(prom.generate_latest(ping_dns_stddev))
+    res.append(prom.generate_latest(iperf_cluster_downlink))
+    res.append(prom.generate_latest(iperf_cluster_uplink))
     res.append(prom.generate_latest(last_update))
     res.append(prom.generate_latest(maint_window))
     res.append(prom.generate_latest(connect_test_ok))
@@ -292,15 +321,22 @@
                     'max': 0.0,
                     'stddev': 0.0
                 }
+            },
+            'iperf': {
+                'cluster': {
+                    'downlink': 0.0,
+                    'uplink': 0.0
+                }
             }
         },
         'last_update': time.time()
     }
 
     if 'speedtest' in request.json:
-        req_edge['speedtest'] = {
-            'ping': request.json['speedtest']['ping']
-        }
+        if 'ping' in request.json['speedtest']:
+            req_edge['speedtest']['ping'] = request.json['speedtest']['ping']
+        if 'iperf' in request.json['speedtest']:
+            req_edge['speedtest']['iperf'] = request.json['speedtest']['iperf']
 
     if 'signal_quality' in request.json:
         req_edge['signal_quality'] = request.json['signal_quality']
diff --git a/edge-monitoring/test_edge_monitoring_server.py b/edge-monitoring/test_edge_monitoring_server.py
index fa980cd..33e26f7 100755
--- a/edge-monitoring/test_edge_monitoring_server.py
+++ b/edge-monitoring/test_edge_monitoring_server.py
@@ -26,6 +26,12 @@
                 'max': 6.0,
                 'stddev': 1.0
             }
+        },
+        'iperf': {
+            'cluster': {
+                'downlink': 100.0,
+                'uplink': 10.0
+            }
         }
     },
     'signal_quality': {
@@ -71,11 +77,40 @@
                 'max': 6.0,
                 'stddev': 1.0
             }
+        },
+        'iperf': {
+            'cluster': {
+                'downlink': 100.0,
+                'uplink': 10.0
+            }
         }
     },
     'last_update': time.time()
 }
 
+test_edge_no_iperf = {
+    'name': 'ace-menlo-pixel',
+    'status': {
+        'control_plane': 'connected',
+        'user_plane': 'connected'
+    },
+    'speedtest': {
+        'ping': {
+            'dns': {
+                'min': 2.0,
+                'avg': 4.0,
+                'max': 6.0,
+                'stddev': 1.0
+            }
+        }
+    },
+    'signal_quality': {
+        'rsrq': 30,
+        'rsrp': 80
+    },
+    'last_update': time.time()
+}
+
 
 class MyEvent:
     def __init__ (self, location = "", description = "", summary = "", start = None, end = None, all_day = False):
@@ -119,6 +154,8 @@
         self.assertTrue('aetheredge_ping_dns_test_avg{name="ace-menlo-pixel"} 4.0' in data)
         self.assertTrue('aetheredge_ping_dns_test_max{name="ace-menlo-pixel"} 6.0' in data)
         self.assertTrue('aetheredge_ping_dns_test_stddev{name="ace-menlo-pixel"} 1.0' in data)
+        self.assertTrue('aetheredge_iperf_cluster_downlink_test{name="ace-menlo-pixel"} 100.0' in data)
+        self.assertTrue('aetheredge_iperf_cluster_uplink_test{name="ace-menlo-pixel"} 10.0' in data)
 
     def _assert_signal_quality_metrics_exist(self, data):
         self.assertTrue('aetheredge_signal_quality_rsrq{name="ace-menlo-pixel"} 30' in data)
@@ -301,6 +338,8 @@
         self.assertFalse('aetheredge_ping_dns_test_avg{name="ace-menlo-pixel"}' in data)
         self.assertFalse('aetheredge_ping_dns_test_max{name="ace-menlo-pixel"}' in data)
         self.assertFalse('aetheredge_ping_dns_test_stddev{name="ace-menlo-pixel"}' in data)
+        self.assertFalse('aetheredge_iperf_cluster_downlink_test{name="ace-menlo-pixel"}' in data)
+        self.assertFalse('aetheredge_iperf_cluster_uplink_test{name="ace-menlo-pixel"}' in data)
 
         self._assert_status_metrics_exist(data)
         self._assert_signal_quality_metrics_exist(data)
@@ -349,6 +388,22 @@
         self.assertEqual(data['edge']['speedtest']['ping']['dns']['avg'], 0.0)
         self.assertFalse('signal_quality' in data['edge'])
 
+    def test_backwards_compatible_no_iperf(self):
+        response = self.app.post('/testresults', json=test_edge_no_iperf)
+        data = json.loads(response.get_data(as_text=True))
+        self.assertEqual(data['edge']['name'], 'ace-menlo-pixel')
+
+        response = self.app.get('/edges/metrics')
+        data = response.get_data(as_text=True)
+        print(data)
+
+        self.assertFalse('iperf_cluster_downlink{name="ace-menlo-pixel"}' in data)
+        self.assertFalse('iperf_cluster_uplink{name="ace-menlo-pixel"}' in data)
+
+        response = self.app.delete('/testresults/ace-menlo-pixel')
+        data = json.loads(response.get_data(as_text=True))
+        self.assertEqual(data['result'], True)
+
 
 if __name__ == '__main__':
     suite = unittest.TestLoader().loadTestsFromTestCase(TestEdgeMonitoringServer)
