Merge "Openstack: Using VSPERF to Test on Openstack."
[vswitchperf.git] / conf / 03_traffic.conf
index 6cfbbf2..01747a3 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2015-2017 Intel Corporation.
+# Copyright 2015-2018 Intel Corporation., Tieto
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -23,8 +23,8 @@ LOG_FILE_TRAFFIC_GEN = 'traffic-gen.log'
 # Detailed description of TRAFFIC dictionary items follows:
 #
 #    'traffic_type'  - One of the supported traffic types.
-#                      E.g. rfc2544_throughput, rfc2544_back2back
-#                      or rfc2544_continuous
+#                      E.g. rfc2544_throughput, rfc2544_back2back,
+#                      rfc2544_continuous or burst
 #                      Data type: str
 #                      Default value: "rfc2544_throughput".
 #    'bidir'         - Specifies if generated traffic will be full-duplex (True)
@@ -36,6 +36,12 @@ LOG_FILE_TRAFFIC_GEN = 'traffic-gen.log'
 #                      continuous stream tests.
 #                      Data type: int
 #                      Default value: 100.
+#    'burst_size'    - Defines a number of frames in the single burst, which is sent
+#                      by burst traffic type. Burst size is applied for each direction,
+#                      i.e. the total number of tx frames will be 2*burst_size in case of
+#                      bidirectional traffic.
+#                      Data type: int
+#                      Default value: 100.
 #    'multistream'   - Defines number of flows simulated by traffic generator.
 #                      Value 0 disables multistream feature
 #                      Data type: int
@@ -58,7 +64,6 @@ LOG_FILE_TRAFFIC_GEN = 'traffic-gen.log'
 #                      feature. If enabled, it will implicitly insert a flow
 #                      for each stream. If multistream is disabled, then
 #                      pre-installed flows will be ignored.
-#                      Note: It is supported only for p2p deployment scenario.
 #                      Data type: str
 #                      Supported values:
 #                         "Yes" - flows will be inserted into OVS
@@ -112,7 +117,7 @@ LOG_FILE_TRAFFIC_GEN = 'traffic-gen.log'
 #                      NOTE: It can be modified by vsperf in some scenarios.
 #                      Data type: str
 #                      Default value: "90.90.90.90".
-#        'proto'     - Specifies deflaut protocol type.
+#        'proto'     - Specifies protocol type.
 #                      Please check particular traffic generator implementation
 #                      for supported protocol types.
 #                      Data type: str
@@ -147,9 +152,81 @@ LOG_FILE_TRAFFIC_GEN = 'traffic-gen.log'
 #                      congestion (DEI header field).
 #                      Data type: int (NOTE: must fit to 1 bit)
 #                      Default value: 0
+#    'capture'       - A dictionary with traffic capture configuration.
+#                      NOTE: It is supported only by T-Rex traffic generator.
+#        'enabled'   - Specifies if traffic should be captured
+#                      Data type: bool
+#                      Default value: False
+#        'tx_ports'  - A list of ports, where frames transmitted towards DUT will
+#                      be captured. Ports have numbers 0 and 1. TX packet capture
+#                      is disabled if list of ports is empty.
+#                      Data type: list
+#                      Default value: [0]
+#        'rx_ports'  - A list of ports, where frames received from DUT will
+#                      be captured. Ports have numbers 0 and 1. RX packet capture
+#                      is disabled if list of ports is empty.
+#                      Data type: list
+#                      Default value: [1]
+#        'count'     - A number of frames to be captured. The same count value
+#                      is applied to both TX and RX captures.
+#                      Data type: int
+#                      Default value: 1
+#        'filter'    - An expression used to filter TX and RX packets. It uses the same
+#                      syntax as pcap library. See pcap-filter man page for additional
+#                      details.
+#                      Data type: str
+#                      Default value: ''
+#    'scapy'         - A dictionary with definition of a frame content for both traffic
+#                      directions. The frame content is defined by a SCAPY notation.
+#                      NOTE: It is supported only by the T-Rex traffic generator.
+#                      Following keywords can be used to refer to the related parts of
+#                      the TRAFFIC dictionary:
+#                           Ether_src   - refers to TRAFFIC['l2']['srcmac']
+#                           Ether_dst   - refers to TRAFFIC['l2']['dstmac']
+#                           IP_proto    - refers to TRAFFIC['l3']['proto']
+#                           IP_PROTO    - refers to upper case version of TRAFFIC['l3']['proto']
+#                           IP_src      - refers to TRAFFIC['l3']['srcip']
+#                           IP_dst      - refers to TRAFFIC['l3']['dstip']
+#                           IP_PROTO_sport - refers to TRAFFIC['l4']['srcport']
+#                           IP_PROTO_dport - refers to TRAFFIC['l4']['dstport']
+#                           Dot1Q_prio  - refers to TRAFFIC['vlan']['priority']
+#                           Dot1Q_id    - refers to TRAFFIC['vlan']['cfi']
+#                           Dot1Q_vlan  - refers to TRAFFIC['vlan']['id']
+#        '0'         - A string with the frame definition for the 1st direction.
+#                      Data type: str
+#                      Default value: 'Ether(src={Ether_src}, dst={Ether_dst})/'
+#                                     'Dot1Q(prio={Dot1Q_prio}, id={Dot1Q_id}, vlan={Dot1Q_vlan})/'
+#                                     'IP(proto={IP_proto}, src={IP_src}, dst={IP_dst})/'
+#                                     '{IP_PROTO}(sport={IP_PROTO_sport}, dport={IP_PROTO_dport})'
+#        '1'         - A string with the frame definition for the 2nd direction.
+#                      Data type: str
+#                      Default value: 'Ether(src={Ether_dst}, dst={Ether_src})/'
+#                                     'Dot1Q(prio={Dot1Q_prio}, id={Dot1Q_id}, vlan={Dot1Q_vlan})/'
+#                                     'IP(proto={IP_proto}, src={IP_dst}, dst={IP_src})/'
+#                                     '{IP_PROTO}(sport={IP_PROTO_dport}, dport={IP_PROTO_sport})',
+#    'latency_histogram'
+#                    - A dictionary with definition of a latency histogram provision in results.
+#        'enabled'   - Specifies if the histogram provisioning is enabled or not.
+#        'type'      - Defines how histogram is provided. Currenty only 'Default' is defined.
+#                         'Default' - Default histogram as provided by the Traffic-generator.
+#    'imix'          - A dictionary for IMIX Specification.
+#        'enabled'   - Specifies if IMIX is enabled or NOT.
+#        'type'      - The specification type - denotes how IMIX is specified.
+#                      Currently only 'genome' type is defined.
+#                      Other types (ex: table-of-proportions) can be added in future.
+#        'genome'    - The Genome Encoding of Pkt-Sizes and Ratio for IMIX.
+#                      The ratio is inferred from the number of particular geneome characters.
+#                      Genome encoding is described in RFC 6985. This specification is closest
+#                      to the method described in section 6.2 of RFC 6985.
+#                      Ex: 'aaaaaaaddddg' denotes ratio of 7:4:1 of packets sizes 64:512:1518.
+#                      Note: Exact-sequence is not maintained, only the ratio of packets
+#                      is ensured.
+#                      Data type: str
+#                      Default Value: 'aaaaaaaddddg'
 TRAFFIC = {
     'traffic_type' : 'rfc2544_throughput',
     'frame_rate' : 100,
+    'burst_size' : 100,
     'bidir' : 'True',  # will be passed as string in title format to tgen
     'multistream' : 0,
     'stream_type' : 'L4',
@@ -179,6 +256,33 @@ TRAFFIC = {
         'priority': 0,
         'cfi': 0,
     },
+    'capture': {
+        'enabled': False,
+        'tx_ports' : [0],
+        'rx_ports' : [1],
+        'count': 1,
+        'filter': '',
+    },
+    'scapy': {
+        'enabled': False,
+        '0' : 'Ether(src={Ether_src}, dst={Ether_dst})/'
+              'Dot1Q(prio={Dot1Q_prio}, id={Dot1Q_id}, vlan={Dot1Q_vlan})/'
+              'IP(proto={IP_proto}, src={IP_src}, dst={IP_dst})/'
+              '{IP_PROTO}(sport={IP_PROTO_sport}, dport={IP_PROTO_dport})',
+        '1' : 'Ether(src={Ether_dst}, dst={Ether_src})/'
+              'Dot1Q(prio={Dot1Q_prio}, id={Dot1Q_id}, vlan={Dot1Q_vlan})/'
+              'IP(proto={IP_proto}, src={IP_dst}, dst={IP_src})/'
+              '{IP_PROTO}(sport={IP_PROTO_dport}, dport={IP_PROTO_sport})',
+    },
+    'latency_histogram': {
+        'enabled': False,
+        'type': 'Default',
+    },
+    'imix': {
+        'enabled': False,
+        'type': 'genome',
+        'genome': 'aaaaaaaddddg',
+    },
 }
 
 #path to traffic generators directory.
@@ -368,6 +472,12 @@ TRAFFICGEN_STC_WEST_INTF_GATEWAY_ADDR = ""
 # Print additional information to the terminal during the test
 TRAFFICGEN_STC_VERBOSE = "True"
 
+# Live Results Required?
+TRAFFICGEN_STC_LIVE_RESULTS = "True"
+
+# Live results file name
+TRAFFICGEN_STC_LIVERESULTS_FILE = "stc-liveresults.dat"
+
 # Spirent TestCenter Configuration -- END
 #########################################
 
@@ -451,18 +561,31 @@ TRAFFICGEN_TREX_RFC2544_TPUT_THRESHOLD = 0.05
 # Parameter below defines frequency of packets used for latency measurement in PPS.
 # Value 0 will disable latency specific streams.
 TRAFFICGEN_TREX_LATENCY_PPS = 1000
-# Example 10 Gbps: TRAFFICGEN_TREXINE_SPEED_GBPS = '10'
-# Today only 10 Gbps is supported
-TRAFFICGEN_TREX_LINE_SPEED_GBPS = '10'
+# Enablement of learning packets before sending test traffic
+TRAFFICGEN_TREX_LEARNING_MODE = True
+TRAFFICGEN_TREX_LEARNING_DURATION = 5
 # FOR SR-IOV or multistream layer 2 tests to work with T-Rex enable Promiscuous mode
-TRAFFICGEN_TREX_PROMISCUOUS=False
+TRAFFICGEN_TREX_PROMISCUOUS = False
+# Enable below options to force T-rex api to attempt to use speed specified on server
+# side when pushing traffic. For 40G use 40000. For 25G use 25000.
+TRAFFICGEN_TREX_FORCE_PORT_SPEED = False
+TRAFFICGEN_TREX_PORT_SPEED = 10000 # 10G
+TRAFFICGEN_TREX_LIVE_RESULTS = True
+TRAFFICGEN_TREX_LC_FILE = "trex-liveresults-counts.dat"
+TRAFFICGEN_TREX_LE_FILE = "trex-liveresults-errors.dat"
+
+
 PATHS['trafficgen'] = {
-    'trex': {
+    'Trex': {
         'type' : 'src',
         'src': {
-            'path': os.path.join(ROOT_DIR, 'src/trex/trex/scripts/automation/trex_control_plane/stl')
+            'path': os.path.join(ROOT_DIR, 'src/trex/trex/scripts/automation/trex_control_plane/interactive')
     }
   }
 }
+# TRex validation option for RFC2544
+TRAFFICGEN_TREX_VERIFICATION_MODE = False
+TRAFFICGEN_TREX_VERIFICATION_DURATION = 60
+TRAFFICGEN_TREX_MAXIMUM_VERIFICATION_TRIALS = 10
 # TREX Configuration and Connection Info-- END
 ##############################################