aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--3rd_party/ixia/ixnetrfc2544.tcl4
-rwxr-xr-x3rd_party/ixia/ixnetrfc2544v2.tcl8
-rwxr-xr-xconf/01_testcases.conf4
-rw-r--r--conf/03_traffic.conf5
-rw-r--r--core/vswitch_controller_p2p.py8
-rw-r--r--docs/testing/developer/design/vswitchperf_design.rst3
-rw-r--r--testcases/testcase.py2
-rw-r--r--tools/functions.py14
-rwxr-xr-xvsperf2
9 files changed, 32 insertions, 18 deletions
diff --git a/3rd_party/ixia/ixnetrfc2544.tcl b/3rd_party/ixia/ixnetrfc2544.tcl
index faab5a68..5dccae3f 100644
--- a/3rd_party/ixia/ixnetrfc2544.tcl
+++ b/3rd_party/ixia/ixnetrfc2544.tcl
@@ -1,7 +1,7 @@
#!/usr/bin/env tclsh
# Copyright (c) 2014, Ixia
-# Copyright (c) 2015-2016, Intel Corporation
+# Copyright (c) 2015-2017, Intel Corporation
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -120,8 +120,6 @@ proc startRfc2544Test { testSpec trafficSpec } {
if {($multipleStreams < 0)} {
set multipleStreams 0
- } elseif {($multipleStreams > 65535)} {
- set multipleStreams 65535
}
if {$multipleStreams} {
diff --git a/3rd_party/ixia/ixnetrfc2544v2.tcl b/3rd_party/ixia/ixnetrfc2544v2.tcl
index cc5a6946..5758f0e4 100755
--- a/3rd_party/ixia/ixnetrfc2544v2.tcl
+++ b/3rd_party/ixia/ixnetrfc2544v2.tcl
@@ -1,7 +1,7 @@
#!/usr/bin/env tclsh
# Copyright (c) 2014, Ixia
-# Copyright (c) 2015-2016, Intel Corporation
+# Copyright (c) 2015-2017, Intel Corporation
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -115,11 +115,7 @@ proc startRfc2544Test { testSpec trafficSpec } {
set numflows 64000
if {$multipleStreams} {
- if {($multipleStreams > 65535)} {
- set numflows 65535
- } else {
- set numflows $multipleStreams
- }
+ set numflows $multipleStreams
set multipleStreams increment
} else {
set multipleStreams singleValue
diff --git a/conf/01_testcases.conf b/conf/01_testcases.conf
index 4851b043..2d5ab93e 100755
--- a/conf/01_testcases.conf
+++ b/conf/01_testcases.conf
@@ -1,4 +1,4 @@
-# Copyright 2015-2016 Intel Corporation.
+# Copyright 2015-2017 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -270,7 +270,7 @@ PERFORMANCE_TESTS = [
"Parameters" : {
"TRAFFIC" : {
"traffic_type" : "rfc2544_throughput",
- "multistream" : "8000",
+ "multistream" : 8000,
},
},
},
diff --git a/conf/03_traffic.conf b/conf/03_traffic.conf
index ccc98e3b..baded627 100644
--- a/conf/03_traffic.conf
+++ b/conf/03_traffic.conf
@@ -1,4 +1,4 @@
-# Copyright 2015 Intel Corporation.
+# Copyright 2015-2017 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -39,7 +39,8 @@ LOG_FILE_TRAFFIC_GEN = 'traffic-gen.log'
# 'multistream' - Defines number of flows simulated by traffic generator.
# Value 0 disables multistream feature
# Data type: int
-# Supported values: 0-65535
+# Supported values: 0-65536 for 'L4' stream type
+# unlimited for 'L2' and 'L3' stream types
# Default value: 0.
# 'stream_type' - Stream type is an extension of the "multistream" feature.
# If multistream is disabled, then stream type will be
diff --git a/core/vswitch_controller_p2p.py b/core/vswitch_controller_p2p.py
index de3fcc0d..0d41b145 100644
--- a/core/vswitch_controller_p2p.py
+++ b/core/vswitch_controller_p2p.py
@@ -1,4 +1,4 @@
-# Copyright 2015 Intel Corporation.
+# Copyright 2015-2017 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -147,7 +147,7 @@ class VswitchControllerP2P(IVswitchController):
if self._traffic['stream_type'] == 'L2':
# iterate through destimation MAC address
dst_mac_value = netaddr.EUI(self._traffic['l2']['dstmac']).value
- for i in range(int(self._traffic['multistream'])):
+ for i in range(self._traffic['multistream']):
tmp_mac = netaddr.EUI(dst_mac_value + i)
tmp_mac.dialect = netaddr.mac_unix_expanded
flow_template.update({'dl_dst':tmp_mac})
@@ -156,7 +156,7 @@ class VswitchControllerP2P(IVswitchController):
elif self._traffic['stream_type'] == 'L3':
# iterate through destimation IP address
dst_ip_value = netaddr.IPAddress(self._traffic['l3']['dstip']).value
- for i in range(int(self._traffic['multistream'])):
+ for i in range(self._traffic['multistream']):
tmp_ip = netaddr.IPAddress(dst_ip_value + i)
flow_template.update({'dl_type':'0x0800', 'nw_dst':tmp_ip})
# optimize flow insertion by usage of cache
@@ -164,7 +164,7 @@ class VswitchControllerP2P(IVswitchController):
elif self._traffic['stream_type'] == 'L4':
# read transport protocol from configuration and iterate through its destination port
proto = _PROTO_TCP if self._traffic['l3']['proto'].lower() == 'tcp' else _PROTO_UDP
- for i in range(int(self._traffic['multistream'])):
+ for i in range(self._traffic['multistream']):
flow_template.update({'dl_type':'0x0800', 'nw_proto':proto, 'tp_dst':i})
# optimize flow insertion by usage of cache
self._vswitch.add_flow(bridge, flow_template, cache='on')
diff --git a/docs/testing/developer/design/vswitchperf_design.rst b/docs/testing/developer/design/vswitchperf_design.rst
index 34f2b227..aa7fb342 100644
--- a/docs/testing/developer/design/vswitchperf_design.rst
+++ b/docs/testing/developer/design/vswitchperf_design.rst
@@ -305,7 +305,8 @@ Detailed description of ``TRAFFIC`` dictionary items follows:
'multistream' - Defines number of flows simulated by traffic generator.
Value 0 disables multistream feature
Data type: int
- Supported values: 0-65535
+ Supported values: 0-65536 for 'L4' stream type
+ unlimited for 'L2' and 'L3' stream types
Default value: 0.
'stream_type' - Stream type is an extension of the "multistream" feature.
If multistream is disabled, then stream type will be
diff --git a/testcases/testcase.py b/testcases/testcase.py
index 4fbf9c04..d17abb61 100644
--- a/testcases/testcase.py
+++ b/testcases/testcase.py
@@ -139,6 +139,8 @@ class TestCase(object):
self._traffic.update({'bidir': bidirectional,
'tunnel_type': self._tunnel_type,})
+ self._traffic = functions.check_traffic(self._traffic)
+
# Packet Forwarding mode
self._vswitch_none = S.getValue('VSWITCH').strip().lower() == 'none'
diff --git a/tools/functions.py b/tools/functions.py
index d00200d9..05bde54f 100644
--- a/tools/functions.py
+++ b/tools/functions.py
@@ -21,6 +21,8 @@ import glob
import shutil
from conf import settings as S
+MAX_L4_FLOWS = 65536
+
#
# Support functions
#
@@ -139,3 +141,15 @@ def settings_update_paths():
tools['dpdk_src'] = S.getValue('PATHS')['dpdk']['src']['path']
S.setValue('TOOLS', tools)
+
+def check_traffic(traffic):
+ """Check traffic definition and correct it if needed.
+ """
+ # in case of UDP ports we have only 65536 (0-65535) unique options
+ if traffic['multistream'] > MAX_L4_FLOWS and \
+ traffic['stream_type'] == 'L4':
+ logging.getLogger().warning('Requested amount of L4 flows %s is bigger than '
+ 'number of transport protocol ports. It was set '
+ 'to %s.', traffic['multistream'], MAX_L4_FLOWS)
+ traffic['multistream'] = MAX_L4_FLOWS
+ return traffic
diff --git a/vsperf b/vsperf
index fea7997b..da6d15e4 100755
--- a/vsperf
+++ b/vsperf
@@ -626,6 +626,8 @@ def main():
# set traffic details, so they can be passed to traffic ctl
traffic = copy.deepcopy(settings.getValue('TRAFFIC'))
+ traffic = functions.check_traffic(traffic)
+
traffic_ctl = component_factory.create_traffic(
traffic['traffic_type'],
loader.get_trafficgen_class())