8e94eacdce11a3716e121affddf5ae5714f6e44f
[nfvbench.git] / nfvbench / cfg.default.yaml
1 #
2 # NFVbench default configuration file
3 #
4 # This configuration file is ALWAYS loaded by NFVbench and should never be modified by users.
5 # To specify your own property values, always define them in a separate config file
6 # and pass that file to the script using -c or --config <file>
7 # Property values in that config file will override the default values in the current file
8 #
9 ---
10 # IMPORTANT CUSTOMIZATION NOTES
11 # There are roughly 2 types of NFVbench config based on the OpenStack encaps used:
12 # - VLAN (OVS, OVS-DPDK, ML2/VPP)
13 # Many of the fields to customize are relevant to only 1 of the 2 encaps
14 # These will be clearly labeled "VxLAN only" or "VLAN only"
15 # Fields that are not applicable will not be used by NFVbench and can be left empty
16 #
17 # All fields are applicable to all encaps/traffic generators unless explicitly marked otherwise.
18 # Fields that can be over-ridden at the command line are marked with the corresponding
19 # option, e.g. "--interval"
20
21
22 # The OpenStack openrc file to use - must be a valid full pathname. If running
23 # in a container, this path must be valid in the container.
24 #
25 # The only case where this field can be empty is when measuring a system that does not run
26 # OpenStack or when OpenStack APIs are not accessible or OpenStack APis use is not
27 # desirable. In that case the EXT service chain must be used.
28 #
29 # If openrc is not admin some parameters are mandatory and must be filled with valid values in config file such as :
30 # - availability_zone
31 # - hypervisor_hostname
32 # - vlans
33 openrc_file:
34
35 # Forwarder to use in nfvbenchvm image. Available options: ['vpp', 'testpmd']
36 vm_forwarder: testpmd
37
38 # By default (empty) NFVbench will try to locate a VM image file
39 # from the package root directory named "nfvbench-<version>.qcow2" and
40 # upload that file. The image name will be "nfvbench-<version>"
41 # This can be overridden by specifying here a pathname of a file
42 # that follows the same naming convention.
43 # In most cases, this field should be left empty as the packaging should
44 # include the proper VM image file
45 vm_image_file:
46
47 # Name of the flavor to use for the loopback VMs
48 #
49 # If the provided name is an exact match to a flavor name known by OpenStack
50 # (as shown from 'nova flavor-list'), that flavor will be reused.
51 # Otherwise, a new flavor will be created with attributes listed below.
52 flavor_type: 'nfvbench.medium'
53
54 # Custom flavor attributes for the test VM
55 flavor:
56   # Number of vCPUs for the flavor, must be at least 2!
57   vcpus: 2
58   # Memory for the flavor in MB
59   ram: 4096
60   # Size of local disk in GB
61   disk: 0
62   # metadata are supported and can be added if needed, optional
63   # note that if your openstack does not have NUMA optimization
64   # (cpu pinning and huge pages)
65   # you must comment out extra_specs completely otherwise
66   # loopback VM creation will fail
67   extra_specs:
68       "hw:cpu_policy": dedicated
69       "hw:mem_page_size": large
70
71 # Enable multiqueue for all test VM interfaces (PVP and PVVP only).
72 # When enabled, the test VM image will get added the property to enable
73 # multiqueue (hw_vif_multiqueue_enabled='true').
74 # The number of queues per interace will be set to the number of vCPUs configured for
75 # the VM.
76 # By default there is only 1 queue per interface
77 # The max allowed queue per interface is 8.
78 # The valid range for this parameter is [1..min(8, vcpu_count)]
79 # When multiqueue is used the recommended setting is to set it to same value as the
80 # number of vCPU used - up to a max of 8 queues.
81 # Setting to a lower value than vCPU should also work. For example if using 4 vCPU and
82 # vif_multiqueue_size is set to 2, openstack will create 4 queues per interface but the
83 # test VM will only use the first 2 queues.
84 vif_multiqueue_size: 1
85
86 # Name of the availability zone to use for the test VMs
87 # Must be one of the zones listed by 'nova availability-zone-list'
88 # availability_zone: 'nova'
89 # If openrc is not admin set a valid value
90 availability_zone:
91 # To force placement on a given hypervisor, set the name here
92 # (if multiple names are provided, the first will be used)
93 # Leave empty to let openstack pick the hypervisor
94 compute_nodes:
95 # If openrc is not admin set a valid value for hypervisor hostname
96 # Example of value: hypervisor_hostname: "server1"
97 hypervisor_hostname:
98
99 # Type of service chain to run, possible options are PVP, PVVP and EXT
100 # PVP - port to VM to port
101 # PVVP - port to VM to VM to port
102 # EXT - external chain used only for running traffic and checking traffic generator counters,
103 #       all other parts of chain must be configured manually
104 # Can be overriden by --service-chain
105 service_chain: 'PVP'
106
107 # Total number of service chains, every chain has own traffic stream
108 # Can be overriden by --service-chain-count
109 service_chain_count: 1
110
111 # Specifies if all chains share the same right/left/middle networks
112 service_chain_shared_net: false
113
114 # Total number of traffic flows for all chains and directions generated by the traffic generator.
115 # Minimum is '2 * service_chain_count', it is automatically adjusted if too small
116 # value was configured. Must be even.
117 # Every flow has packets with different IPs in headers
118 # Can be overriden by --flow-count
119 flow_count: 10000
120
121 # set to true if service chains should use SRIOV
122 # This requires SRIOV to be available on compute nodes
123 sriov: false
124
125 # Perform port to port loopback (direct or through switch)
126 # Should be used with EXT service chain and no ARP (no_arp: true)
127 # When enabled, the vlans property must contain the same VLAN id for all chains.
128 # Can be overriden by --l2-loopback
129 l2_loopback: false
130
131 # Resources created by NFVbench will not be removed
132 # Can be overriden by --no-cleanup
133 no_cleanup: false
134
135 # Configuration for traffic generator
136 traffic_generator:
137     # Name of the traffic generator, only for informational purposes
138     host_name: 'nfvbench_tg'
139     # this is the default traffic generator profile to use
140     # the name must be defined under generator_profile
141     # you can override the traffic generator to use using the
142     # -g or --traffic-gen option at the command line
143     default_profile: trex-local
144
145     # IP addresses for L3 traffic.
146     # This section describes the addresses to use to fill in the UDP packets sent by the
147     # traffic generator. If you VNFs are L2 forwarders, these fields below do not need to change.
148     # If your VNFs are L3 routers, the fields below must match the static routes in your VNFs
149     # so that UDP packets can be routed back to the peer port of the traffic generator.
150
151     # All of the IPs are used as base for IP sequence computed based on chain or flow count.
152     # (sim-devices-left)---(tg-gateway-left)---(vnf-left)- ...
153     #                                      -(vnf-right)---(tg-gateway-right)---(sim-devices-right)
154     #
155     # `ip_addrs` base IPs used as src and dst in packet header, quantity depends on flow count
156     #            these are used for addressing virtual devices simulated by the traffic generator
157     #            and be a different subnet than tg_gateway_ip_addrs and gateway_ip_addrs
158     # `ip_addrs_step`: step for generating IP sequence. Use "random" for random patterns, default is 0.0.0.1.
159     ip_addrs: ['10.0.0.0/8', '20.0.0.0/8']
160     ip_addrs_step: 0.0.0.1
161     # `tg_gateway_ip_addrs` base IP for traffic generator ports in the left and right networks to the VNFs
162     #                       chain count consecutive IP addresses spaced by tg_gateway_ip_addrs_step will be used
163     # `tg_gateway_ip_addrs__step`: step for generating traffic generator gateway sequences. default is 0.0.0.1
164     tg_gateway_ip_addrs: ['1.1.0.100', '2.2.0.100']
165     tg_gateway_ip_cidrs: ['1.1.0.0/24','2.2.0.0/24']
166     tg_gateway_ip_addrs_step: 0.0.0.1
167     # `gateway_ip_addrs`: base IPs of VNF router gateways (left and right), quantity used depends on chain count
168     #                     must correspond to the public IP on the left and right networks
169     #                     for each left-most and right-most VNF of every chain.
170     #                     must be the same subnet but not same IP as tg_gateway_ip_addrs.
171     #                     chain count consecutive IP addresses spaced by gateway_ip_addrs_step will be used
172     # `gateway_ip_addrs_step`: step for generating router gateway sequences. default is 0.0.0.1
173     gateway_ip_addrs: ['1.1.0.2', '2.2.0.2']
174     gateway_ip_addrs_step: 0.0.0.1
175     # `udp_src_port`: the source port for sending UDP traffic, default is picked by TRex (53)
176     # `udp_dst_port`: the destination port for sending UDP traffic, default is picked by TRex (53)
177     udp_src_port:
178     udp_dst_port:
179
180     # VxLAN only: optionally specify what VLAN tag to use for the VxLAN overlay
181     # This is used if the vxlan tunnels are running on a specific VLAN.
182     # Leave empty if there is no VLAN tagging required, or specify the VLAN id to use
183     # for all VxLAN tunneled traffic
184     vtep_vlan:
185     # VxLAN only: local/source vteps IP addresses for port 0 and 1 ['10.1.1.230', '10.1.1.231']
186     src_vteps:
187     # VxLAN only: remote IP address of the remote VTEPs that terminate all tunnels originating from local VTEPs
188     dst_vtep:
189
190     # L2 ADDRESSING OF UDP PACKETS
191     # Lists of dest MAC addresses to use on each traffic generator port (one dest MAC per chain)
192     # Leave empty for PVP, PVVP, EXT with ARP
193     # Only used when `service_chain` is EXT and `no_arp` is true.
194     #   - If both lists are empty the far end MAC of the traffic generator will be used for left and right
195     #     (this is typicaly used to loop back on the first hop switch or using a loopback cable)
196     #   - The length of each list must match the number of chains being used!
197     #   - The index of each list must correspond to the chain index to ensure proper pairing.
198     #   - Below is an example of using two chains:
199     #     - mac_addrs_left: ['00:00:00:00:01:00', '00:00:00:00:02:00']
200     #     - mac_addrs_right: ['00:00:00:00:01:01', '00:00:00:00:02:01']
201     #     UDP packets sent on port 0 will use dest MAC '00:00:00:00:01:00' for chain #0 and
202     #                                         dest MAC '00:00:00:00:02:00' for chain #1
203     #     UDP packets sent on port 1 will use dest MAC '00:00:00:00:01:01' for chain #0 and
204     #                                         dest MAC '00:00:00:00:02:01' for chain #1
205     #     It is expected that the looping device (L2 forwarder) will rewrite the src and dst MAC
206     #     of the looping UDP packet so that it can reach back to the peer port of the traffic
207     #     generator.
208     #
209     mac_addrs_left:
210     mac_addrs_right:
211
212     # Traffic Generator Profiles
213     # In case you have multiple testbeds or traffic generators,
214     # you can define one traffic generator profile per testbed/traffic generator.
215     # In most cases you only need to fill in the pci address for the 2 ports used by the
216     # traffic generator and leave all other fields unchanged
217     #
218     # Generator profiles are listed in the following format:
219     # `name`: Traffic generator profile name (use a unique name, no space or special character)
220     #         Do not change this field
221     # `tool`: Traffic generator tool to be used (currently supported is `TRex`).
222     #         Do not change this field
223     # `ip`: IP address of the traffic generator.
224     #       The default loopback address is used when the traffic generator runs on the same host
225     #       as NFVbench.
226     # `cores`: Specify the number of cores for running the TRex traffic generator.
227     #          ONLY applies to trex-local.
228     # `software_mode`: Advice TRex to use software mode which provides the best compability. But
229     #                  note that TRex will not use any hardware acceleration technology under
230     #                  software mode, therefore the performance of TRex will be significantly
231     #                  lower. ONLY applies to trex-local.
232     #                  Recommended to leave the default value (false)
233     # `limit_memory`: Specify the memory reserved for running the TRex traffic generator (in MB). Limit the amount
234     #                 of packet memory used. (Passed to dpdk as -m arg)
235     #          ONLY applies to trex-local.
236     # `zmq_pub_port`: Specify the ZMQ pub port number for the TRex traffic generator instance (default value is 4500).
237     #          ONLY applies to trex-local.
238     # `zmq_rpc_port`: Specify the ZMQ rpc port for the TRex traffic generator instance (default value is 4501).
239     #          ONLY applies to trex-local.
240     # `interfaces`: Configuration of traffic generator interfaces.
241     # `interfaces.port`: The port of the traffic generator to be used (leave as 0 and 1 resp.)
242     # `interfaces.switch_port`: Leave empty (deprecated)
243     # `interfaces.pci`: The PCI address of the intel NIC interface associated to this port
244     #                   This field is required and cannot be empty
245     #                   Use lspci to list the PCI address of all devices
246     #                   Example of value: "0000:5e:00.0"
247     # `intf_speed`: The speed of the interfaces used by the traffic generator (per direction).
248     #               Empty value (default) to use the speed discovered by the traffic generator.
249     #               Recommended to leave this field empty.
250     #               Do not use unless you want to override the speed discovered by the
251     #               traffic generator. Expected format: 10Gbps
252     #
253     # `platform`: Optional. Used to tune the performance and allocate the cores to the right NUMA.
254     #             See https://trex-tgn.cisco.com/trex/doc/trex_manual.html (6.2.3. Platform section configuration)
255     #             for more details
256     # `platform.master_thread_id`: Hardware thread_id for control thread. (Valid value is mandatory if platform property is set)
257     # `platform.latency_thread_id`: Hardware thread_id for RX thread. (Valid value is mandatory if platform property is set)
258     # `platform.dual_if`: Section defines info for interface pairs (according to the order in “interfaces” list). (Valid value is mandatory if platform property is set)
259     #                     Each section, starting with “- socket” defines info for different interface pair. (Valid value is mandatory if platform property is set)
260     # `platform.dual_if.socket`: The NUMA node from which memory will be allocated for use by the interface pair. (Valid value is mandatory if platform property is set)
261     # `platform.dual_if.threads`: Hardware threads to be used for sending packets for the interface pair. (Valid value is mandatory if platform property is set)
262     #                     Threads are pinned to cores, so specifying threads actually determines the hardware cores.
263     # Example of values:
264     # platform:
265     #   master_thread_id: 0
266     #   latency_thread_id: 2
267     #   dual_if:
268     #     - socket: 0
269     #       threads: [1]
270     #
271     generator_profile:
272         - name: trex-local
273           tool: TRex
274           ip: 127.0.0.1
275           cores: 4
276           software_mode: false
277           limit_memory: 1024
278           zmq_pub_port: 4500
279           zmq_rpc_port: 4501
280           interfaces:
281             - port: 0
282               pci:
283               switch_port:
284             - port: 1
285               pci:
286               switch_port:
287           intf_speed:
288           platform:
289             master_thread_id:
290             latency_thread_id:
291             dual_if:
292               - socket:
293                 threads:
294
295 # Use 'true' to force restart of local TRex server before next run
296 # TRex local server will be restarted even if restart property is false in case of generator config changes between runs
297 restart: false
298
299 # Simpler override for trex core count and mbuf multilier factor
300 # if empty defaults to the one specified in generator_profile.cores
301 cores:
302
303 # Add cache size in packet generation for TRex field engine (FE).
304 # More information for TRex performance:
305 # https://trex-tgn.cisco.com/trex/doc/trex_stateless.html#_tutorial_field_engine_significantly_improve_performance
306 # If cache_size = 0 (or empty): no cache will be used by TRex (default)
307 # If cache_size < 0: cache_size will be set to flow count value
308 cache_size:
309 # The cache size is actually limited by the number of 64B mbufs configured in the trex platform configuration (see Trex manual 6.2.2. Memory section configuration)
310 # Trex will use 1 x 64B mbuf per pre-built cached packet, assuming 1 pre-built cached packet per flow, it means for very large number of flows, the number of configured mbuf_64 will need to be set accordingly.
311 mbuf_64:
312
313 # mbuffer ratio to use for TRex (see TRex documentation for more details)
314 mbuf_factor: 0.2
315
316 # A switch to disable hdrh
317 # hdrh is enabled by default and requires TRex v2.58 or higher
318 disable_hdrh: false
319
320 # -----------------------------------------------------------------------------
321 # These variables are not likely to be changed
322
323 # Number of seconds to wait for VMs to pass traffic in both directions
324 check_traffic_time_sec: 200
325
326 # General retry count
327 generic_retry_count: 100
328
329 # General poll period
330 generic_poll_sec: 2
331
332 # name of the loop VM
333 loop_vm_name: 'nfvbench-loop-vm'
334
335 # Default names, subnets and CIDRs for PVP/PVVP networks (openstack only)
336 #
337 # If a network with given name already exists it will be reused.
338 # - PVP only uses left and right
339 # - PVVP uses left, middle and right
340 # - for EXT chains, this structure is not relevant - refer to external_networks
341 # Otherwise a new internal network will be created with that name, subnet and CIDR.
342 #
343 # network_type must be 'vlan' (for VLAN and SRIOV) or 'vxlan' (for VxLAN)
344 #              all 3 networks must use the same network type in this release
345 # segmentation_id can be set to enforce a specific segmentation id (vlan ID or VNI if vxlan)
346 #                 by default (empty) the segmentation id will be assigned by Neutron.
347 #                 If specified, it must be unique for each network
348 #                 For multi-chaining, see notes below
349 # physical_network can be set to pick a specific phsyical network - by default (empty) the
350 #                   default physical network will be picked
351 # SR-IOV: both physical_network and VLAN segmentation ID must be provided
352 # VxLAN: the VNI must generally be provided (except special Neutron VxLAN implementations)
353 #
354 # For example to setup 1xPVP using 2 different SR-IOV ports, you must put the appropriate physnet
355 # names under left.physical_network and right.physical_network.
356 # For multi-chaining and non shared networks,
357 # Example of override configuration to force PVP to run on 2 SRIOV ports (phys_sriov0 and phys_sriov1)
358 # using VLAN ID 2000 and 2001:
359 # internal_networks:
360 #    left:
361 #        segmentation_id: 2000
362 #        physical_network: phys_sriov0
363 #    right:
364 #        segmentation_id: 2001
365 #        physical_network: phys_sriov1
366 #
367 # For multi-chaining and non shared network mode (VLAN, SRIOV, VxLAN):
368 # - the segmentation_id field if provided must be a list of values (as many as chains)
369 # - segmentation_id auto-indexing:
370 #   the segmentation_id field can also be a single value that represents the base value from which
371 #   values for each chain is derived using the chain ID as an offset. For example
372 #   if 2000 is specified, NFVbench will use 2000 for chain 0, 2001 for chain 1 etc...
373 #   The ranges of all the networks must not overlap.
374 # - the physical_network can be a single name (all VFs to be allocated on same physnet)
375 #   of a list of physnet names to use different PFs
376 #
377 # Example of 2-chain configuration:
378 # internal_networks:
379 #    left:
380 #        segmentation_id: [2000, 2001]
381 #        physical_network: phys_sriov0
382 #    right:
383 #        segmentation_id: [2010, 2011]
384 #        physical_network: phys_sriov1
385 #
386 # Equivalent to (using auto-indexing):
387 # internal_networks:
388 #    left:
389 #        segmentation_id: 2000
390 #        physical_network: phys_sriov0
391 #    right:
392 #        segmentation_id: 2010
393 #        physical_network: phys_sriov1
394
395 internal_networks:
396     left:
397         name: 'nfvbench-lnet'
398         subnet: 'nfvbench-lsubnet'
399         cidr: '192.168.1.0/24'
400         network_type: 'vlan'
401         segmentation_id:
402         physical_network:
403     right:
404         name: 'nfvbench-rnet'
405         subnet: 'nfvbench-rsubnet'
406         cidr: '192.168.2.0/24'
407         network_type: 'vlan'
408         segmentation_id:
409         physical_network:
410     middle:
411         name: 'nfvbench-mnet'
412         subnet: 'nfvbench-msubnet'
413         cidr: '192.168.3.0/24'
414         network_type: 'vlan'
415         segmentation_id:
416         physical_network:
417
418 # IDLE INTERFACES: PVP, PVVP and non shared net only.
419 # By default each test VM will have 2 virtual interfaces for looping traffic.
420 # If service_chain_shared_net is false, additional virtual interfaces can be
421 # added at VM creation time, these interfaces will not carry any traffic and
422 # can be used to test the impact of idle interfaces in the overall performance.
423 # All these idle interfaces will use normal ports (not direct).
424 # Number of idle interfaces per VM (none by default)
425 idle_interfaces_per_vm: 0
426
427 # A new network is created for each idle interface.
428 # If service_chain_shared_net is true, the options below will be ignored
429 # and no idle interfaces will be added.
430 idle_networks:
431     # Prefix for all idle networks, the final name will append the chain ID and idle index
432     # e.g. "nfvbench-idle-net.0.4" chain 0 idle index 4
433     name: 'nfvbench-idle-net'
434     # Subnet name to use for all idle subnetworks 
435     subnet: 'nfvbench-idle-subnet'
436     # CIDR to use for all idle networks (value should not matter)
437     cidr: '192.169.1.0/24'
438     # Type of network associated to the idle virtual interfaces (vlan or vxlan)
439     network_type: 'vlan'
440     # segmentation ID to use for the network attached to the idle virtual interfaces
441     # vlan: leave empty to let neutron pick the segmentation ID
442     # vxlan: must specify the starting VNI value to be used (cannot be empty)
443     # Note that NFVbench will use as many consecutive segmentation IDs as needed.
444     # For example, for 4 PVP chains and 8 idle
445     # interfaces per VM, NFVbench will use 32 consecutive values of segmentation ID
446     # starting from the value provided.
447     segmentation_id:
448     # physnet name to use for all idle interfaces
449     physical_network:
450
451 # In the scenario of PVVP + SRIOV, there is choice of how the traffic will be
452 # handled in the middle network. The default (false) will use vswitch, while
453 # SRIOV can be used by toggling below setting.
454 use_sriov_middle_net: false
455
456 # EXT chain only. Prefix names of edge networks or list of edge network names
457 # used to send traffic via traffic generator.
458 #
459 # If service_chain_shared_net is true, the left and right networks must pre-exist and match exactly by name.
460 #
461 # If service_chain_shared_net is false, each chain must have its own pre-existing left and right networks.
462 # left and right can take either a string prefix or a list of arbitrary network names
463 # If a string prefix is passed, an index will be appended to each network name to form the final name.
464 # Example:
465 # external_networks:
466 #    left:  'ext-lnet'
467 #    right: 'ext-rnet'
468 # ext-lnet0 ext-rnet0 for chain #0
469 # ext-lnet1 ext-rnet1 for chain #1
470 # etc...
471 # If a list of strings is passed, each string in the list must be the name of the network used for the
472 # chain indexed by the entry position in the list.
473 # The list must have at least as many entries as there are chains
474 # Example:
475 # external_networks:
476 #   left:  ['ext-lnet', 'ext-lnet2']
477 #   right: ['ext-rnet', 'ext-rnet2']
478
479 external_networks:
480     left:
481     right:
482
483 # PVP with L3 router in the packet path only.
484 # Only use when l3_router option is True (see l3_router)
485 # Prefix names of edge networks which will be used to send traffic via traffic generator.
486 # If a network with given name already exists it will be reused.
487 # Otherwise a new edge network will be created with that name, subnet and CIDR.
488 #
489 # gateway can be set in case of L3 traffic with edge networks - refer to edge_networks
490 #
491 # segmentation_id can be set to enforce a specific VLAN id - by default (empty) the VLAN id
492 #                 will be assigned by Neutron.
493 #                 Must be unique for each network
494 # physical_network can be set to pick a specific phsyical network - by default (empty) the
495 #                   default physical network will be picked
496 #
497 edge_networks:
498     left:
499         name: 'nfvbench-net2'
500         router_name: 'router_left'
501         subnet: 'nfvbench-subnet2'
502         cidr: '192.168.3.0/24'
503         gateway:
504         network_type:
505         segmentation_id:
506         physical_network:
507     right:
508         name: 'nfvbench-net3'
509         router_name: 'router_right'
510         subnet: 'nfvbench-subnet3'
511         cidr: '192.168.4.0/24'
512         gateway:
513         network_type:
514         segmentation_id:
515         physical_network:
516
517 # Use 'true' to enable VXLAN encapsulation support and sent by the traffic generator
518 # When this option enabled internal networks 'network type' parameter value should be 'vxlan'
519 vxlan: false
520
521 # Use 'true' to enable VLAN tagging of packets generated and sent by the traffic generator
522 # Leave empty or set to false if you do not want the traffic generator to insert the VLAN tag (this is
523 # needed for example if VLAN tagging is enabled on switch (access mode) or if you want to hook
524 # directly to a NIC).
525 # By default is set to true (which is the nominal use case with TOR and trunk mode to Trex ports)
526 # If VxLAN is enabled, this option should be set to false (vlan tagging for encapsulated packets
527 # is not supported). Use the vtep_vlan option to enable vlan tagging for the VxLAN overlay network.
528 vlan_tagging: true
529
530 # Used only in the case of EXT chain and no openstack or not admin access to specify the VLAN IDs to use.
531 # This property is ignored when OpenStakc is used or in the case of l2-loopback.
532 # If OpenStack is used leave the list empty, VLAN IDs are retrieved from OpenStack networks using Neutron API.
533 # If networks are shared across all chains (service_chain_shared_net=true), the list should have exactly 2 values
534 # If networks are not shared across chains (service_chain_shared_net=false), the list should have
535 # 2 list of vlan IDs
536 # In the special case of l2-loopback the list should have the same VLAN id for all chains
537 # Examples:
538 #   [1998, 1999] left network uses vlan 1998 right network uses vlan 1999
539 #   [[1,2],[3,4]] chain 0 left vlan 1, right vlan 2 - chain 1 left vlan 3 right vlan 4
540 #   [1010, 1010] same VLAN id with l2-loopback enabled
541 #
542 vlans: []
543
544 # ARP is used to discover the MAC address of VNFs that run L3 routing.
545 # Used only with EXT chain.
546 # False (default): ARP requests are sent to find out dest MAC addresses.
547 # True: do not send ARP but use provisioned dest macs instead
548 #       (see mac_addrs_left and mac_addrs_right)
549 no_arp: false
550
551 # Traffic Profiles
552 # You can add here more profiles as needed
553 # `l2frame_size` can be specified in any none zero integer value to represent the size in bytes
554 # of the L2 frame, or "IMIX" to represent the standard 3-packet size mixed sequence (IMIX1).
555 traffic_profile:
556     - name: traffic_profile_64B
557       l2frame_size: ['64']
558     - name: traffic_profile_IMIX
559       l2frame_size: ['IMIX']
560     - name: traffic_profile_1518B
561       l2frame_size: ['1518']
562     - name: traffic_profile_3sizes
563       l2frame_size: ['64', 'IMIX', '1518']
564
565 # Traffic Configuration
566 # bidirectional: to have traffic generated from both direction, set bidirectional to true
567 # profile: must be one of the profiles defined in traffic_profile
568 # The traffic profile can be overriden with the options --frame-size and --uni-dir
569 traffic:
570     bidirectional: true
571     profile: traffic_profile_64B
572
573 # Check config and connectivity only - do not generate traffic
574 # Can be overriden by --no-traffic
575 no_traffic: false
576
577 # Use an L3 router in the packet path. This option if set will create or reuse an openstack neutron
578 # router (PVP, PVVP) or reuse an existing L3 router (EXT) to route traffic to the destination VM.
579 # Can be overriden by --l3-router
580 l3_router: false
581
582 # Test configuration
583
584 # The rate pps for traffic going in reverse direction in case of unidirectional flow. Default to 1.
585 unidir_reverse_traffic_pps: 1
586
587 # The rate specifies if NFVbench should determine the NDR/PDR
588 #  or if NFVbench should just generate traffic at a given fixed rate
589 # for a given duration (called "single run" mode)
590 # Supported rate format:
591 # NDR/PDR test: `ndr`, `pdr`, `ndr_pdr` (default)
592 # Or for single run mode:
593 # Packet per second: pps (e.g. `50pps`)
594 # Bits per second: bps, kbps, Mbps, etc (e.g. `1Gbps`, `1000bps`)
595 # Load percentage: % (e.g. `50%`)
596 # Can be overridden by --rate
597 rate: ndr_pdr
598
599 # Default run duration (single run at given rate only)
600 # Can be overridden by --duration
601 duration_sec: 60
602
603 # Interval between intermediate reports when interval reporting is enabled
604 # Can be overridden by --interval
605 interval_sec: 10
606
607 # Default pause between iterations of a binary search (NDR/PDR)
608 pause_sec: 2
609
610 # NDR / PDR configuration
611 measurement:
612     # Drop rates represent the ratio of dropped packet to the total number of packets sent.
613     # Values provided here are percentages. A value of 0.01 means that at most 0.01% of all
614     # packets sent are dropped (or 1 packet every 10,000 packets sent)
615
616     # No Drop Rate in percentage; Default to 0.001%
617     NDR: 0.001
618     # Partial Drop Rate in percentage; NDR should always be less than PDR
619     PDR: 0.1
620     # The accuracy of NDR and PDR as a percnetage of line rate; The exact NDR
621     # or PDR should be within `load_epsilon` line rate % from the one calculated.
622     # For example, with a value 0.1, and a line rate of 10Gbps, the accuracy
623     # of NDR and PDR will be within 0.1% Of 10Gbps or 10Mbps.
624     # The lower the value the more iterations and the longer it will take to find the NDR/PDR.
625     # In practice, due to the precision of the traffic generator it is not recommended to
626     # set it to lower than 0.1
627     load_epsilon: 0.1
628
629 # Location where to store results in a JSON format. Must be container specific path.
630 # Can be overriden by --json
631 json:
632
633 # Location where to store results in the NFVbench standard JSON format:
634 # <service-chain-type>-<service-chain-count>-<flow-count>-<packet-sizes>.json
635 # Example: PVP-1-10-64-IMIX.json
636 # Must be container specific path.
637 # Can be overriden by --std-json
638 std_json:
639
640 # Prints debug messages (verbose mode)
641 # Can be overriden by --debug
642 debug: false
643
644 # Set to a valid path name if logging to file is to be enabled
645 # Defaults to disabled
646 log_file:
647
648 # When enabled, all results and/or logs will be sent to a fluentd servers at the requested IPs and ports
649 # A list of one or more fluentd servers identified by their IPs and  port numbers should be given.
650 # For each recipient it is possible to enable both sending logs and performance
651 # results, or enable either logs or performance results. For enabling logs or results logging_tag or
652 # result_tag should be set.
653
654 fluentd:
655       # by default (logging_tag is empty) nfvbench log messages are not sent to fluentd
656       # to enable logging to fluents, specify a valid fluentd tag name to be used for the
657       # log records
658     - logging_tag:
659
660       # by default (result_tag is empty) nfvbench results are not sent to fluentd
661       # to enable sending nfvbench results to fluentd, specify a valid fluentd tag name
662       # to be used for the results records, which is different than logging_tag
663       result_tag:
664
665       # IP address of the server, defaults to loopback
666       ip: 127.0.0.1
667
668       # port # to use, by default, use the default fluentd forward port
669       port: 24224
670
671       # by default (logging_tag is empty) nfvbench log messages are not sent to fluentd
672       # to enable logging to fluents, specify a valid fluentd tag name to be used for the
673       # log records
674
675 # Module and class name of factory which will be used to provide classes dynamically for other components.
676 factory_module: 'nfvbench.factory'
677 factory_class: 'BasicFactory'
678
679 # Custom label added for every perf record generated during this run.
680 # Can be overriden by --user-label
681 user_label:
682
683
684 # THESE FIELDS SHOULD BE USED VERY RARELY
685
686 # Skip vswitch configuration and retrieving of stats
687 # Can be overriden by --no-vswitch-access
688 # Should be left to the default value (false)
689 no_vswitch_access: false