# Fields that can be over-ridden at the command line are marked with the corresponding
# option, e.g. "--interval"
+# The OpenStack openrc file to use (must be a valid full pathname). If running
+# in a container, this path must be valid in the container.
+#
+# The only case where this field can be empty is when measuring a system that does not run
+# OpenStack or when OpenStack APIs are not accessible or OpenStack APis use is not
+# desirable. In that case the EXT service chain must be used.
+openrc_file:
-# Name of the image to use for launching the loopback VMs. This name must be
-# the exact same name used in OpenStack (as shown from 'nova image-list')
-# Can be overridden by --image or -i
-image_name: 'nfvbenchvm'
# Forwarder to use in nfvbenchvm image. Available options: ['vpp', 'testpmd']
vm_forwarder: testpmd
-# NFVbench can automatically upload a VM image if the image named by
-# image_name is missing, for that you need to specify a file location where
-# the image can be retrieved
-#
-# To upload the image as a file, download it to preferred location
-# and prepend it with file:// like in this example:
-# file://<location of the image>
-# NFVbench (the image must have the same name as defined in image_name above).
+# By default (empty) NFVBench will try to locate a VM image file
+# from the package root directory named "nfvbench-<version>.qcow2" and
+# upload that file. The image name will be "nfvbench-<version>"
+# This can be overridden by specifying here a pathname of a file
+# that follows the same naming convention.
+# In most cases, this field should be left empty as the packaging should
+# include the proper VM image file
vm_image_file:
# Name of the flavor to use for the loopback VMs
# Number of vCPUs for the flavor
vcpus: 2
# Memory for the flavor in MB
- ram: 8192
+ ram: 4096
# Size of local disk in GB
disk: 0
# metadata are supported and can be added if needed, optional
# value was configured. Must be even.
# Every flow has packets with different IPs in headers
# Can be overriden by --flow-count
-flow_count: 2
+flow_count: 10000
# Used by PVVP chain to spawn VMs on different compute nodes
# Can be overriden by --inter-node
# `gateway_ip_addrs_step`: step for generating router gateway sequences. default is 0.0.0.1
# `udp_src_port`: the source port for sending UDP traffic, default is picked by TRex (53)
# `udp_dst_port`: the destination port for sending UDP traffic, default is picked by TRex (53)
+ # `mac_addrs_left` & `mac_addrs_right`: Lists of MAC addresses corresponding to the number of chains
+ # specified for `service_chain_count`.
+ # - If both lists are empty the far end MAC of the traffic generator will be used for left and right
+ # - The MAC addresses will only be used when `service_chain` is EXT and `no_arp` is true.
+ # - The length of each list must match the number of chains being used.
+ # - The index of each list must correspond to the chain index to ensure proper pairing.
+ # - Below is an example of using two chains:
+ # - mac_addrs_left: ['00:00:00:00:01:00', '00:00:00:00:02:00']
+ # - mac_addrs_right: ['00:00:00:00:01:01', '00:00:00:00:02:01']
ip_addrs: ['10.0.0.0/8', '20.0.0.0/8']
ip_addrs_step: 0.0.0.1
tg_gateway_ip_addrs: ['1.1.0.100', '2.2.0.100']
gateway_ip_addrs_step: 0.0.0.1
udp_src_port:
udp_dst_port:
+ mac_addrs_left:
+ mac_addrs_right:
# Traffic Generator Profiles
# In case you have multiple testbeds or traffic generators,
# `tool`: Traffic generator tool to be used (currently supported is `TRex`).
# `ip`: IP address of the traffic generator.
# `cores`: Specify the number of cores for TRex traffic generator. ONLY applies to trex-local.
+ # `software_mode`: Advice TRex to use software mode which provides the best compability. But
+ # note that TRex will not use any hardware acceleration technology under
+ # software mode, therefore the performance of TRex will be significantly
+ # lower. ONLY applies to trex-local.
# `interfaces`: Configuration of traffic generator interfaces.
# `interfaces.port`: The port of the traffic generator to be used (leave as 0 and 1 resp.)
# `interfaces.switch_port`: Leave empty (reserved for advanced use cases)
tool: TRex
ip: 127.0.0.1
cores: 3
+ software_mode: false
interfaces:
- port: 0
switch_port:
# -----------------------------------------------------------------------------
# These variables are not likely to be changed
-# The openrc file
-openrc_file:
+# Number of seconds to wait for VMs to pass traffic in both directions
+check_traffic_time_sec: 200
# General retry count
generic_retry_count: 100
segmentation_id:
physical_network:
+# In the scenario of PVVP + SRIOV, there is choice of how the traffic will be
+# handled in the middle network. The default (false) will use vswitch, while
+# SRIOV can be used by toggling below setting.
+use_sriov_middle_net: false
+
# EXT chain only. Names of edge networks which will be used to send traffic via traffic generator.
external_networks:
left: 'nfvbench-net0'
right: 'nfvbench-net1'
-# Use 'true' to enable VLAN tagging of packets coming from traffic generator
-# Leave empty if VLAN tagging is enabled on switch or if you want to hook directly to a NIC
-# Else by default is set to true (which is the nominal use case with TOR and trunk mode to Trex)
+# Use 'true' to enable VLAN tagging of packets generated and sent by the traffic generator
+# Leave empty you do not want the traffic generator to insert the VLAN tag. This is
+# needed for example if VLAN tagging is enabled on switch (trunk mode) or if you want to hook directly to a NIC
+# By default is set to true (which is the nominal use case with TOR and trunk mode to Trex)
vlan_tagging: true
# Specify only when you want to override VLAN IDs used for tagging with own values (exactly 2).
# Can be overridden by --interval
interval_sec: 10
-# NDR / PDR configuration ZZ
+# NDR / PDR configuration
measurement:
# Drop rates represent the ratio of dropped packet to the total number of packets sent.
# Values provided here are percentages. A value of 0.01 means that at most 0.01% of all
NDR: 0.001
# Partial Drop Rate in percentage; NDR should always be less than PDR
PDR: 0.1
- # The accuracy of NDR and PDR load percentiles; The actual load percentile that match NDR
- # or PDR should be within `load_epsilon` difference than the one calculated.
+ # The accuracy of NDR and PDR as a percnetage of line rate; The exact NDR
+ # or PDR should be within `load_epsilon` line rate % from the one calculated.
+ # For example, with a value 0.1, and a line rate of 10Gbps, the accuracy
+ # of NDR and PDR will be within 0.1% Of 10Gbps or 10Mbps.
+ # The lower the value the more iterations and the longer it will take to find the NDR/PDR.
+ # In practice, due to the precision of the traffic generator it is not recommended to
+ # set it to lower than 0.1
load_epsilon: 0.1
# Location where to store results in a JSON format. Must be container specific path.
# Can be overriden by --debug
debug: false
+# Set to a valid path name if logging to file is to be enabled
+# Defaults to disabled
+log_file:
+
+# When enabled, all results and/or logs will be sent to a fluentd servers at the requested IPs and ports
+# A list of one or more fluentd servers identified by their IPs and port numbers should be given.
+# For each recipient it is possible to enable both sending logs and performance
+# results, or enable either logs or performance results. For enabling logs or results logging_tag or
+# result_tag should be set.
+
+fluentd:
+ # by default (logging_tag is empty) nfvbench log messages are not sent to fluentd
+ # to enable logging to fluents, specify a valid fluentd tag name to be used for the
+ # log records
+ - logging_tag:
+
+ # by default (result_tag is empty) nfvbench results are not sent to fluentd
+ # to enable sending nfvbench results to fluentd, specify a valid fluentd tag name
+ # to be used for the results records, which is different than logging_tag
+ result_tag:
+
+ # IP address of the server, defaults to loopback
+ ip: 127.0.0.1
+
+ # port # to use, by default, use the default fluentd forward port
+ port: 24224
+
+ # by default (logging_tag is empty) nfvbench log messages are not sent to fluentd
+ # to enable logging to fluents, specify a valid fluentd tag name to be used for the
+ # log records
+
# Module and class name of factory which will be used to provide classes dynamically for other components.
factory_module: 'nfvbench.factory'
factory_class: 'BasicFactory'
+
+# Custom label added for every perf record generated during this run.
+# Can be overriden by --user-label
+user_label: