Add vIPSEC testcases
[yardstick.git] / samples / vnf_samples / nsut / ipsec / tc_baremetal_rfc2544_ipv4_sw_aesgcm_trex.yaml
1 # Copyright (c) 2019 Viosoft Corporation
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 #      http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 {% set mlr_search = mlr_search or false %}
16 {% set vports = vports or 2 %}
17 {% set tolerance_low = tolerance_low or 0.0 %}
18 {% set tolerance_high = tolerance_high or 0.005 %}
19 {% set frame_size = frame_size or 64 %}
20 {% set tunnels = tunnels or 1 %}
21 {% set flow_count = flow_count or 1 %}
22 {% set worker_threads = worker_threads or [1] %}
23 ---
24 schema: yardstick:task:0.1
25 description: >
26     This is the VPP IPSec performance tests based on the Data Plane Development
27     Kit (DPDK) Cryptodev framework. DUT1 and DUT2 are configured with DPDK SW
28     cryptodev devices and {{ tunnels }} IPsec tunnels between them. DUTs get
29     IPv4 traffic from TG with {{ frame_size }}B packet size and number of flows
30     is {{ flow_count }}, encrypt it and send to another DUT, where packets are
31     decrypted and sent back to TG. Measure successful transmit rate, throughput
32     NDR/PDR with MLR search is {{ "enabled" if mlr_search else "disabled" }}, latency.
33
34 scenarios:
35 {% for worker_thread in worker_threads %}
36 -
37   type: NSPerf
38   traffic_profile: ../../traffic_profiles/ipv4_throughput_latency_vpp.yaml
39   extra_args:
40     vports: {{ vports }}
41   topology: vpp-tg-topology-scale-up.yaml
42   nodes:
43     tg__0: trafficgen.yardstick
44     vnf__0: vnf0.yardstick
45     vnf__1: vnf1.yardstick
46   options:
47     traffic_type: 4
48     rfc2544:
49       allowed_drop_rate: {{ tolerance_low }} - {{ tolerance_high }}
50     framesize:
51       uplink: {'{{ frame_size }}B': 100}
52       downlink: {'{{ frame_size }}B': 100}
53     flow:
54       src_ip:
55         - '10.0.0.0-10.0.0.100'
56       dst_ip:
57         - '20.0.0.0-20.0.0.100'
58       count: {{ flow_count }}
59     vnf__0:
60       collectd:
61         interval: 1
62       # Crypto device type. Type: string - *Example:* HW_cryptodev | SW_cryptodev
63       # Number of RX queues, default value: ${None}. Type: integer
64       vnf_config: {crypto_type: 'SW_cryptodev', rxq: 1, worker_config: '1C/1T',
65                    worker_threads: {{worker_thread}}}
66     vnf__1:
67       collectd:
68         interval: 1
69       vnf_config: {crypto_type: 'SW_cryptodev', rxq: 1, worker_config: '1C/1T',
70                    worker_threads: {{worker_thread}}}
71     tg__0:
72       collectd:
73         interval: 1
74       queues_per_port: 7
75     vpp_config:
76       # Number of tunnels
77       tunnels: {{ tunnels }}
78       # Encryption algorithms - Integrity algorithm. Type: string
79       # Example: aes-gcm | cbc-sha1
80       crypto_algorithms: 'aes-gcm'
81 {% if mlr_search %}
82       # Maximum Frame Rate depend on Ethernet Link Speed and Frame Size
83       # for a 10 Gb/s Ethernet link and 64 bytes,
84       # maximum rate = 10*10^9/((64+8+12)*8)
85       max_rate: {{ (10 * 10 ** 9 / ((frame_size + 8 + 12) * 8)) | int }}
86 {% endif %}
87   runner:
88     type: Duration
89     duration: 500
90 {% endfor %}
91
92 context:
93   type: Node
94   name: yardstick
95   nfvi_type: baremetal
96   file: /etc/yardstick/nodes/vpp-baremetal-{{ vports }}.yaml