pkt_gen: MoonGen start rates not correct 33/17933/4
authorbmichalo <bmichalo@redhat.com>
Tue, 2 Aug 2016 19:03:36 +0000 (15:03 -0400)
committerbmichalo <bmichalo@redhat.com>
Wed, 3 Aug 2016 19:25:21 +0000 (15:25 -0400)
The VSPERF traffic profile for starting rate is in a
percentage of line rate.  MoonGen programs its
starting rate as Mpps.  Therefore the traffic profile
for VSPERF needs to be converted to a MoonGen format.
There was a hardcoding of 14.88 that was used for the
starting frame rate for all frame sizes.  This needs
to be corrected to take into account all frame sizes.

JIRA: VSPERF-350

Change-Id: Ied71668a560d7d2b03483f9a1192dd2fb4965996
Signed-off-by: bmichalo <bmichalo@redhat.com>
conf/03_traffic.conf
conf/10_custom.conf
docs/configguide/trafficgen.rst
tools/pkt_gen/moongen/moongen.py

index fb9ce83..a5a8629 100644 (file)
@@ -182,10 +182,14 @@ TRAFFICGEN_XENA_PORT1_GATEWAY = '192.168.199.1'
 ###################################################
 # MoonGen Configuration and Connection Info-- BEGIN
 
+# Ex: TRAFFICGEN_MOONGEN_HOST_IP_ADDR = "192.10.1.1"
 TRAFFICGEN_MOONGEN_HOST_IP_ADDR = ''
 TRAFFICGEN_MOONGEN_USER = ''
 TRAFFICGEN_MOONGEN_BASE_DIR = ''
 TRAFFICGEN_MOONGEN_PORTS = ''
+# Ex. 10 Gbps: TRAFFICGEN_MOONGEN_LINE_SPEED_GBPS = '10'
+# Today only 10 Gbps is supported
+TRAFFICGEN_MOONGEN_LINE_SPEED_GBPS = ''
 
 # MoonGen Configuration and Connection Info-- END
 ###################################################
index 044339f..fdb5031 100644 (file)
@@ -87,6 +87,9 @@ TRAFFICGEN_MOONGEN_HOST_IP_ADDR = ""
 TRAFFICGEN_MOONGEN_USER = "root"
 TRAFFICGEN_MOONGEN_BASE_DIR = "/root/MoonGen"
 TRAFFICGEN_MOONGEN_PORTS = "{0,1}"
+# Ex. 10 Gbps: TRAFFICGEN_MOONGEN_LINE_SPEED_GBPS = '10'
+# Today only 10 Gbps is supported
+TRAFFICGEN_MOONGEN_LINE_SPEED_GBPS = '10'
 
 # MoonGen Configuration and Connection Info-- END
 ###################################################
index 63560b9..c26724b 100644 (file)
@@ -303,6 +303,8 @@ can be found here:
 
 https://github.com/emmericp/MoonGen
 
+* Note:  Today, MoonGen with VSPERF only supports 10Gbps line speeds.
+
 For VSPerf use, MoonGen should be cloned from here (as opposed to the afore
 mentioned GitHub):
 
index efd8e00..e14c6a7 100644 (file)
@@ -20,10 +20,11 @@ Moongen Traffic Generator Model
 """
 
 # python imports
-import logging
 from collections import OrderedDict
-import subprocess
+import logging
+import math
 import re
+import subprocess
 
 # VSPerf imports
 from conf import settings
@@ -49,6 +50,13 @@ class Moongen(ITrafficGenerator):
         self._moongen_user = settings.getValue('TRAFFICGEN_MOONGEN_USER')
         self._moongen_ports = settings.getValue('TRAFFICGEN_MOONGEN_PORTS')
 
+        if settings.getValue('TRAFFICGEN_MOONGEN_LINE_SPEED_GBPS') == '10':
+            self._moongen_line_speed = math.pow(10, 10)
+        else:
+            raise RuntimeError(
+                'MOONGEN: Invalid line speed in configuration ' + \
+                'file (today 10Gbps supported)')
+
     @property
     def traffic_defaults(self):
         """Default traffic values.
@@ -157,10 +165,17 @@ class Moongen(ITrafficGenerator):
         if one_shot:
             out_file.write("oneShot = true,\n")
 
-        # Assume 10G line rates at the moment.  Need to convert VSPERF
-        # frame_rate (percentage of line rate) to Mpps for Moongen
+        # Need to convert VSPERF frame_rate (percentage of line rate)
+        # to Mpps for Moongen
+        start_rate = str(
+            (traffic['frame_rate'] / 100) * (self._moongen_line_speed / \
+            (8 * (traffic['l2']['framesize'] + 20)) / math.pow(10, 6)))
+
+        logging.debug("startRate = " + start_rate)
+
+        out_file.write("startRate = " + \
+            start_rate + "\n")
 
-        out_file.write("startRate = " + str((traffic['frame_rate'] / 100) * 14.88) + "\n")
         out_file.write("}" + "\n")
         out_file.close()
 
@@ -476,7 +491,7 @@ class Moongen(ITrafficGenerator):
         if results_match and parameters_match:
             # Assume for now 10G link speed
             max_theoretical_mfps = (
-                (10000000000 / 8) / (frame_size + 20))
+                (self._moongen_line_speed / 8) / (frame_size + 20))
 
             moongen_results[ResultsConstants.THROUGHPUT_RX_FPS] = (
                 float(results_match.group(6)) * 1000000)