-# Copyright 2015 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.
# log file for all traffic generator related commands
LOG_FILE_TRAFFIC_GEN = 'traffic-gen.log'
+# TRAFFIC dictionary defines traffic parameters used by all traffic generators.
+# Detailed description of TRAFFIC dictionary items follows:
+#
+# 'traffic_type' - One of the supported traffic types.
+# 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)
+# or half-duplex (False)
+# Data type: str
+# Supported values: "True", "False"
+# Default value: "False".
+# 'frame_rate' - Defines desired percentage of frame rate used during
+# 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
+# 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
+# ignored. Stream type defines ISO OSI network layer used
+# for simulation of multiple streams.
+# Data type: str
+# Supported values:
+# "L2" - iteration of destination MAC address
+# "L3" - iteration of destination IP address
+# "L4" - iteration of destination port
+# of selected transport protocol
+# Default value: "L4".
+# 'pre_installed_flows'
+# - Pre-installed flows is an extension of the "multistream"
+# feature. If enabled, it will implicitly insert a flow
+# for each stream. If multistream is disabled, then
+# pre-installed flows will be ignored.
+# Data type: str
+# Supported values:
+# "Yes" - flows will be inserted into OVS
+# "No" - flows won't be inserted into OVS
+# Default value: "No".
+# 'flow_type' - Defines flows complexity.
+# Data type: str
+# Supported values:
+# "port" - flow is defined by ingress ports
+# "IP" - flow is defined by ingress ports
+# and src and dst IP addresses
+# Default value: "port"
+# 'flow_control' - Controls flow control support by traffic generator.
+# Supported values:
+# False - flow control is disabled
+# True - flow control is enabled
+# Default value: False
+# Note: Currently it is supported by IxNet only
+# 'learning_frames' - Controls learning frames support by traffic generator.
+# Supported values:
+# False - learning freames are disabled
+# True - learning freames are enabled
+# Default value: True
+# Note: Currently it is supported by IxNet only
+# 'l2' - A dictionary with l2 network layer details. Supported
+# values are:
+# 'srcmac' - Specifies source MAC address filled by traffic generator.
+# NOTE: It can be modified by vsperf in some scenarios.
+# Data type: str
+# Default value: "00:00:00:00:00:00".
+# 'dstmac' - Specifies destination MAC address filled by traffic generator.
+# NOTE: It can be modified by vsperf in some scenarios.
+# Data type: str
+# Default value: "00:00:00:00:00:00".
+# 'framesize' - Specifies default frame size. This value should not be
+# changed directly. It will be overridden during testcase
+# execution by values specified by list TRAFFICGEN_PKT_SIZES.
+# Data type: int
+# Default value: 64
+# 'l3' - A dictionary with l3 network layer details. Supported
+# values are:
+# 'enabled' - Specifies if l3 layer should be enabled or disabled.
+# Data type: bool
+# Default value: True
+# NOTE: Supported only by IxNet trafficgen class
+# 'srcip' - Specifies source MAC address filled by traffic generator.
+# NOTE: It can be modified by vsperf in some scenarios.
+# Data type: str
+# Default value: "1.1.1.1".
+# 'dstip' - Specifies destination MAC address filled by traffic generator.
+# NOTE: It can be modified by vsperf in some scenarios.
+# Data type: str
+# Default value: "90.90.90.90".
+# 'proto' - Specifies protocol type.
+# Please check particular traffic generator implementation
+# for supported protocol types.
+# Data type: str
+# Default value: "udp".
+# 'l4' - A dictionary with l4 network layer details. Supported
+# values are:
+# 'enabled' - Specifies if l4 layer should be enabled or disabled.
+# Data type: bool
+# Default value: True
+# NOTE: Supported only by IxNet trafficgen class
+# 'srcport' - Specifies source port of selected transport protocol.
+# NOTE: It can be modified by vsperf in some scenarios.
+# Data type: int
+# Default value: 3000
+# 'dstport' - Specifies destination port of selected transport protocol.
+# NOTE: It can be modified by vsperf in some scenarios.
+# Data type: int
+# Default value: 3001
+# 'vlan' - A dictionary with vlan encapsulation details. Supported
+# values are:
+# 'enabled' - Specifies if vlan encapsulation should be enabled or
+# disabled.
+# Data type: bool
+# Default value: False
+# 'id' - Specifies vlan id.
+# Data type: int (NOTE: must fit to 12 bits)
+# Default value: 0
+# 'priority' - Specifies a vlan priority (PCP header field).
+# Data type: int (NOTE: must fit to 3 bits)
+# Default value: 0
+# 'cfi' - Specifies if frames can or cannot be dropped during
+# 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',
+ 'pre_installed_flows' : 'No', # used by vswitch implementation
+ 'flow_type' : 'port', # used by vswitch implementation
+ 'flow_control' : False, # supported only by IxNet
+ 'learning_frames' : True, # supported only by IxNet
+ 'l2': {
+ 'framesize': 64,
+ 'srcmac': '00:00:00:00:00:00',
+ 'dstmac': '00:00:00:00:00:00',
+ },
+ 'l3': {
+ 'enabled': True,
+ 'proto': 'udp',
+ 'srcip': '1.1.1.1',
+ 'dstip': '90.90.90.90',
+ },
+ 'l4': {
+ 'enabled': True,
+ 'srcport': 3000,
+ 'dstport': 3001,
+ },
+ 'vlan': {
+ 'enabled': False,
+ 'id': 0,
+ '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.
TRAFFICGEN_DIR = os.path.join(ROOT_DIR, 'tools/pkt_gen')
#TRAFFICGEN = 'Ixia'
#TRAFFICGEN = 'Xena'
#TRAFFICGEN = 'Moongen'
+#TRAFFICGEN = 'Trex'
# List of packet sizes to send.
# Expand like this: (64, 128, 256, 512, 1024)
TRAFFICGEN_RFC2889_TRIALS = 1
TRAFFICGEN_LOSSRATE = 0.0
+##############################
+# DUMMY Configuration -- BEGIN
+
+# By default, dummy traffic generator asks for "measured" values.
+# Following dictionary allows to preconfigure these values and
+# to avoid user interaction. It can be useful for automated
+# integration tests.
+# Example of values for continuous traffic type:
+# TRAFFICGEN_DUMMY_RESULTS{'frames rx': 500000,
+# 'frames tx': 500000,
+# 'rx rate %': 100,
+# 'tx rate %': 100,
+# 'frameloss %': 0,
+# 'min latency': 1,
+# 'max latency': 15,
+# 'avg latency': 2.5,
+# }
+#
+TRAFFICGEN_DUMMY_RESULTS = {}
+
+# DUMMY Configuration -- END
+############################
+
#############################
# IXIA Configuration -- BEGIN
TRAFFICGEN_XENA_2544_TPUT_USEPASS_THRESHHOLD = 'false'
TRAFFICGEN_XENA_2544_TPUT_PASS_THRESHHOLD = '0.0'
+# Xena RFC 2544 final verification options
+TRAFFICGEN_XENA_RFC2544_VERIFY = False
+TRAFFICGEN_XENA_RFC2544_VERIFY_DURATION = 120 # in seconds
+# Number of verify attempts before giving up...
+TRAFFICGEN_XENA_RFC2544_MAXIMUM_VERIFY_ATTEMPTS = 10
+# Logic for restarting binary search, see documentation for details
+TRAFFICGEN_XENA_RFC2544_BINARY_RESTART_SMART_SEARCH = True
+
+# Xena Continuous traffic options
+# Please reference xena documentation before making changes to these settings
+TRAFFICGEN_XENA_CONT_PORT_LEARNING_ENABLED = True
+TRAFFICGEN_XENA_CONT_PORT_LEARNING_DURATION = 3
+
# Xena Configuration -- END
###########################
TRAFFICGEN_MOONGEN_LINE_SPEED_GBPS = ''
# MoonGen Configuration and Connection Info-- END
-###################################################
+#################################################
+
+################################################
+# Trex Configuration and Connection Info-- BEGIN
+
+# Example: TRAFFICGEN_TREX_HOST_IP_ADDR = "192.10.1.1"
+# Example: TRAFFICGEN_TREX_USER = 'root'
+# Example: TRAFFICGEN_TREX_BASE_DIR = '/traffic_gen/trex/'
+# Example: TRAFFICGEN_TREX_PORT1 = '00:00:00:00:00:00'
+TRAFFICGEN_TREX_HOST_IP_ADDR = ''
+TRAFFICGEN_TREX_USER = ''
+TRAFFICGEN_TREX_BASE_DIR = ''
+TRAFFICGEN_TREX_PORT1 = ''
+TRAFFICGEN_TREX_PORT2 = ''
+# RFC2544 Throughput execution will end after threshold below is reached.
+# It defines maximal difference between frame rate of successful (i.e. defined
+# frameloss reached) and unsuccessful (i.e. frameloss exceeded) iterations.
+TRAFFICGEN_TREX_RFC2544_TPUT_THRESHOLD = 0.05
+# Latency statistics are collected by separate stream created for each interface.
+# Parameter below defines frequency of packets used for latency measurement in PPS.
+# Value 0 will disable latency specific streams.
+TRAFFICGEN_TREX_LATENCY_PPS = 1000
+# 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
+# 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': {
+ 'type' : 'src',
+ 'src': {
+ 'path': os.path.join(ROOT_DIR, 'src/trex/trex/scripts/automation/trex_control_plane/stl')
+ }
+ }
+}
+# 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
+##############################################