diff options
Diffstat (limited to 'samples/vnf_samples')
24 files changed, 1229 insertions, 86 deletions
diff --git a/samples/vnf_samples/nsut/agnostic/agnostic_vnf_topology_trex_tmpl.yaml b/samples/vnf_samples/nsut/agnostic/agnostic_vnf_topology_trex_tmpl.yaml index 8af938ba1..f8074f44f 100644 --- a/samples/vnf_samples/nsut/agnostic/agnostic_vnf_topology_trex_tmpl.yaml +++ b/samples/vnf_samples/nsut/agnostic/agnostic_vnf_topology_trex_tmpl.yaml @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. --- -{% set vports = get(extra_args, 'vports', '2') %} +{% set vports = get(extra_args, 'vports', 2) %} nsd:nsd-catalog: nsd: - id: agnostic-topology @@ -49,4 +49,4 @@ nsd:nsd-catalog: - member-vnf-index-ref: '1' vnfd-connection-point-ref: xe{{vport+1}} vnfd-id-ref: tg__0 -{% endfor %}
\ No newline at end of file +{% endfor %} diff --git a/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_concurrent_connections_ixload.yaml b/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_concurrent_connections_ixload.yaml index 8586db677..78fcd98ce 100644 --- a/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_concurrent_connections_ixload.yaml +++ b/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_concurrent_connections_ixload.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (c) 2018-2019 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,19 +16,19 @@ schema: yardstick:task:0.1 {% set page = page or "/1b.html" %} scenarios: -- type: NSPerf +- type: NSPerf-RFC3511 traffic_profile: "../../traffic_profiles/ixload/http_ixload.yaml" topology: agnostic_vnf_topology_ixload_2ports.yaml nodes: - tg__0: trafficgen_1.yardstick - vnf__0: vnf.yardstick + tg__0: trafficgen_0.yardstick + vnf__0: vnf_0.yardstick options: page_object: uplink: [{{page}}] vnf__0: [] runner: - type: Duration - duration: 2 + type: Iteration + iterations: 1 ixia_profile: ../../traffic_profiles/ixload/HTTP-ConcurrentConnections_2Ports.rxf context: type: Node diff --git a/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_connections_ixload.yaml b/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_connections_ixload.yaml index c2f9c426b..a20032c06 100644 --- a/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_connections_ixload.yaml +++ b/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_connections_ixload.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (c) 2018-2019 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,19 +16,19 @@ schema: yardstick:task:0.1 {% set page = page or "/1b.html" %} scenarios: -- type: NSPerf +- type: NSPerf-RFC3511 traffic_profile: "../../traffic_profiles/ixload/http_ixload.yaml" topology: agnostic_vnf_topology_ixload_2ports.yaml nodes: - tg__0: trafficgen_1.yardstick - vnf__0: vnf.yardstick + tg__0: trafficgen_0.yardstick + vnf__0: vnf_0.yardstick options: page_object: uplink: [{{page}}] vnf__0: [] runner: - type: Duration - duration: 2 + type: Iteration + iterations: 1 ixia_profile: ../../traffic_profiles/ixload/HTTP-Connections_2Ports.rxf context: type: Node diff --git a/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_ixload__Requests_Concurrency_template.yaml b/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_ixload__Requests_Concurrency_template.yaml index de2a779f8..250fd2fee 100755 --- a/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_ixload__Requests_Concurrency_template.yaml +++ b/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_ixload__Requests_Concurrency_template.yaml @@ -1,40 +1,40 @@ -# Copyright (c) 2018 Intel Corporation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
----
-schema: yardstick:task:0.1
-{% set users = users or "10000" %}
-{% set page = page or "/1b.html" %}
-scenarios:
-- type: NSPerf
- traffic_profile: "HTTP_requests_concurrency.yaml"
- topology: agnostic_vnf_topology_ixload_2ports.yaml
- nodes:
- tg__0: trafficgen_1.yardstick
- vnf__0: vnf.yardstick
- options:
- simulated_users:
- uplink: [{{users}}]
- page_object:
- uplink: [{{page}}]
- vnf__0: []
- runner:
- type: Duration
- duration: 2
- ixia_profile: ../../traffic_profiles/vfw/HTTP-vFW_IPv4_2Ports_Concurrency.rxf # Need vlan update
-context:
- type: Node
- name: yardstick
- nfvi_type: baremetal
- file: /etc/yardstick/nodes/pod_ixia.yaml
+# Copyright (c) 2018-2019 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +schema: yardstick:task:0.1 +{% set users = users or "10000" %} +{% set page = page or "/1b.html" %} +scenarios: +- type: NSPerf + traffic_profile: "HTTP_requests_concurrency.yaml" + topology: agnostic_vnf_topology_ixload_2ports.yaml + nodes: + tg__0: trafficgen_0.yardstick + vnf__0: vnf_0.yardstick + options: + simulated_users: + uplink: [{{users}}] + page_object: + uplink: [{{page}}] + vnf__0: [] + runner: + type: Duration + duration: 2 + ixia_profile: ../../traffic_profiles/vfw/HTTP-vFW_IPv4_2Ports_Concurrency.rxf # Need vlan update +context: + type: Node + name: yardstick + nfvi_type: baremetal + file: /etc/yardstick/nodes/pod_ixia.yaml diff --git a/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_simulated_users_ixload.yaml b/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_simulated_users_ixload.yaml index b5d341915..6eb617b09 100644 --- a/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_simulated_users_ixload.yaml +++ b/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_simulated_users_ixload.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (c) 2018-2019 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,8 +21,8 @@ scenarios: traffic_profile: "../../traffic_profiles/ixload/http_ixload.yaml" topology: agnostic_vnf_topology_ixload_2ports.yaml nodes: - tg__0: trafficgen_1.yardstick - vnf__0: vnf.yardstick + tg__0: trafficgen_0.yardstick + vnf__0: vnf_0.yardstick options: simulated_users: uplink: [{{users}}] diff --git a/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_throughput_ixload.yaml b/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_throughput_ixload.yaml index 0125a7191..ba7fe4170 100644 --- a/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_throughput_ixload.yaml +++ b/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_throughput_ixload.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (c) 2018-2019 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,8 +20,8 @@ scenarios: traffic_profile: "../../traffic_profiles/ixload/http_ixload.yaml" topology: agnostic_vnf_topology_ixload_2ports.yaml nodes: - tg__0: trafficgen_1.yardstick - vnf__0: vnf.yardstick + tg__0: trafficgen_0.yardstick + vnf__0: vnf_0.yardstick options: page_object: uplink: [{{page}}] diff --git a/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_transactions_ixload.yaml b/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_transactions_ixload.yaml index d82acb2f1..80de61e08 100644 --- a/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_transactions_ixload.yaml +++ b/samples/vnf_samples/nsut/agnostic/tc_baremetal_http_transactions_ixload.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (c) 2018-2019 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,8 +20,8 @@ scenarios: traffic_profile: "../../traffic_profiles/ixload/http_ixload.yaml" topology: agnostic_vnf_topology_ixload_2ports.yaml nodes: - tg__0: trafficgen_1.yardstick - vnf__0: vnf.yardstick + tg__0: trafficgen_0.yardstick + vnf__0: vnf_0.yardstick options: page_object: uplink: [{{page}}] diff --git a/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_ipv4_64B_trex.yaml b/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_ipv4_64B_trex.yaml index db8f95cb2..4394e8029 100644 --- a/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_ipv4_64B_trex.yaml +++ b/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_ipv4_64B_trex.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2019 Intel Corporation +# Copyright (c) 2018-2019 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,7 +19,7 @@ scenarios: traffic_profile: ../../traffic_profiles/ipv4_throughput.yaml topology: agnostic_vnf_topology_trex_tmpl.yaml nodes: - tg__0: tg_0.yardstick + tg__0: trafficgen_0.yardstick vnf__0: vnf_0.yardstick options: framesize: diff --git a/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_ipv4_trex_tmpl.yaml b/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_ipv4_trex_tmpl.yaml index 79c3b906a..71d9074e1 100644 --- a/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_ipv4_trex_tmpl.yaml +++ b/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_ipv4_trex_tmpl.yaml @@ -23,7 +23,7 @@ schema: yardstick:task:0.1 scenarios: - type: NSPerf-RFC2544 - traffic_profile: ../../traffic_profiles/ipv4_throughput.yaml + traffic_profile: ../../traffic_profiles/ipv4_throughput-tmpl.yaml topology: agnostic_vnf_topology_trex_tmpl.yaml extra_args: vports: {{vports}} @@ -48,6 +48,7 @@ scenarios: traffic_type: 4 rfc2544: allowed_drop_rate: {{drop_rate}} + tg__0: queues_per_port: {{queues_per_port}} vnf__0: [] diff --git a/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_latency_ipv4_64B_ixia.yaml b/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_latency_ipv4_64B_ixia.yaml index c054a985b..f20d32d5a 100644 --- a/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_latency_ipv4_64B_ixia.yaml +++ b/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_latency_ipv4_64B_ixia.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (c) 2018-2019 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,7 +19,7 @@ scenarios: traffic_profile: ../../traffic_profiles/ixia_ipv4_latency.yaml topology: agnostic_vnf_topology_ixia_2ports.yaml nodes: - tg__0: tg_0.yardstick + tg__0: trafficgen_0.yardstick vnf__0: vnf_0.yardstick options: framesize: diff --git a/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_latency_ipv4_64B_ixia_L3.yaml b/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_latency_ipv4_64B_ixia_L3.yaml index 1610193d0..36c6bc647 100644 --- a/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_latency_ipv4_64B_ixia_L3.yaml +++ b/samples/vnf_samples/nsut/agnostic/tc_baremetal_rfc2544_latency_ipv4_64B_ixia_L3.yaml @@ -1,4 +1,4 @@ -# Copyright (c) 2018 Intel Corporation +# Copyright (c) 2018-2019 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ scenarios: extra_args: vports: {{ vports }} nodes: - tg__0: tg_0.yardstick + tg__0: trafficgen_0.yardstick vnf__0: vnf_0.yardstick options: framesize: diff --git a/samples/vnf_samples/nsut/cmts/k8s_vcmts_topology.yaml b/samples/vnf_samples/nsut/cmts/k8s_vcmts_topology.yaml new file mode 100755 index 000000000..95ac76964 --- /dev/null +++ b/samples/vnf_samples/nsut/cmts/k8s_vcmts_topology.yaml @@ -0,0 +1,36 @@ +# Copyright (c) 2019 Viosoft Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{% set num_tg = get(extra_args, 'num_tg', 2) %} +{% set num_sg = get(extra_args, 'num_sg', 2) %} + +nsd:nsd-catalog: + nsd: + - id: vcmts-topology + name: vcmts-topology + short-name: vcmts-topology + description: vcmts-topology + constituent-vnfd: + {% for tg_num in range(0, num_tg) %} + - member-vnf-index: '{{ tg_num + 1 }}' + vnfd-id-ref: tg__{{ tg_num }} + VNF model: ../../vnf_descriptors/tg_vcmts_tpl.yaml #VNF type + {% endfor %} + {% for vnf_num in range(0, num_sg * 2) %} + - member-vnf-index: '{{ vnf_num + num_tg + 1 }}' + vnfd-id-ref: vnf__{{ vnf_num }} + VNF model: ../../vnf_descriptors/vnf_vcmts_tpl.yaml #VNF type + {% endfor %} + + vld: [] diff --git a/samples/vnf_samples/nsut/cmts/tc_vcmts_k8s_pktgen.yaml b/samples/vnf_samples/nsut/cmts/tc_vcmts_k8s_pktgen.yaml new file mode 100755 index 000000000..6c85a0892 --- /dev/null +++ b/samples/vnf_samples/nsut/cmts/tc_vcmts_k8s_pktgen.yaml @@ -0,0 +1,360 @@ +# Copyright (c) 2019 Viosoft Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +{% set num_tg = 2 %} +{% set num_sg = 4 %} + +{% set vcmtsd_image = "vcmts-d:perf" %} +{% set qat_on = false %} + +schema: "yardstick:task:0.1" + +scenarios: +- type: NSPerf + traffic_profile: ../../traffic_profiles/fixed.yaml + extra_args: + num_sg: {{ num_sg }} + num_tg: {{ num_tg }} + topology: k8s_vcmts_topology.yaml + nodes: +{% for tg_num in range(0, num_tg) %} + tg__{{ tg_num }}: pktgen{{ tg_num }}-k8syardstick +{% endfor %} +{% for vnf_index in range(0, num_sg) %} + vnf__{{ vnf_index * 2 }}: vnf{{ vnf_index }}us-k8syardstick + vnf__{{ (vnf_index * 2) + 1}}: vnf{{ vnf_index }}ds-k8syardstick +{% endfor %} + + runner: + type: Duration + duration: 120 + + options: + vcmts_influxdb_ip: "10.80.5.150" + vcmts_influxdb_port: 8086 + vcmtsd_values: /etc/yardstick/vcmtsd_values.yaml + pktgen_values: /etc/yardstick/pktgen_values.yaml + pktgen_rate: 6.5 +{% for vnf_index in range(0, num_sg) %} + vnf__{{ vnf_index * 2 }}: + sg_id: {{ vnf_index }} + stream_dir: "us" + vnf__{{ (vnf_index * 2) + 1}}: + sg_id: {{ vnf_index }} + stream_dir: "ds" +{% endfor %} +{% for tg_num in range(0, num_tg) %} + tg__{{ tg_num }}: + pktgen_id: {{ tg_num }} +{% endfor %} + +context: + name: k8syardstick + type: Kubernetes + + servers: +{% for vnf_index in range(0, num_sg) %} + vnf{{ vnf_index }}us: + nodeSelector: + vcmts: "true" + containers: + - image: {{ vcmtsd_image }} + imagePullPolicy: IfNotPresent + env: + - name: CMK_PROC_FS + value: "/host/proc" + command: /bin/bash + args: ['-c', 'mkdir /root/.ssh; cp /tmp/.ssh/authorized_keys ~/.ssh/.; + chmod 700 ~/.ssh; chmod 600 ~/.ssh/*; service ssh restart; + while true ; do sleep 10000; done'] + resources: + requests: + memory: 10Ki +{% if qat_on %} + hugepages-1Gi: 2Gi + qat.intel.com/generic: '1' +{% else %} + hugepages-1Gi: 1Gi +{% endif %} + limits: + memory: 1Gi +{% if qat_on %} + hugepages-1Gi: 2Gi + qat.intel.com/generic: '1' +{% else %} + hugepages-1Gi: 1Gi +{% endif %} + lifecycle: + postStart: + exec: + command: [ "/bin/bash", "-c", "env > /tmp/qat" ] + volumeMounts: + - name: vcmts-configmap-vcmtspod + mountPath: /vcmts-config + - name: hugepages + mountPath: /hugepages + readOnly: false + - name: collectd + mountPath: /opt/collectd/var + readOnly: false + - name: sysfs + mountPath: /sys + readOnly: false + - name: sriov + mountPath: /sriov-cni + readOnly: false + - name: host-proc + mountPath: /host/proc + readOnly: true + - name: cmk-install-dir + mountPath: /opt/bin + - name: cmk-conf-dir + mountPath: /etc/cmk + - name: power-mgmt + mountPath: /opt/power_mgmt + ports: + - containerPort: 22022 + securityContext: + allowPrivilegeEscalation: true + privileged: true + node_ports: + - name: lua # Lower case alphanumeric characters or '-' + port: 22022 + networks: + - flannel + - xe0 + - xe1 + volumes: + - name: vcmts-configmap-vcmtspod + configMap: + name: vcmts-configmap-vcmtspod + defaultMode: 0744 + - name: hugepages + emptyDir: + medium: HugePages + - name: collectd + hostPath: + path: /opt/collectd/var + - name: sysfs + hostPath: + path: /sys + - name: sriov + hostPath: + path: /var/lib/cni/sriov + - name: cmk-install-dir + hostPath: + path: /opt/bin + - name: host-proc + hostPath: + path: /proc + - name: cmk-conf-dir + hostPath: + path: /etc/cmk + - name: power-mgmt + hostPath: + path: /opt/power_mgmt + + vnf{{ vnf_index }}ds: + nodeSelector: + vcmts: "true" + containers: + - image: {{ vcmtsd_image }} + imagePullPolicy: IfNotPresent + env: + - name: CMK_PROC_FS + value: "/host/proc" + command: /bin/bash + args: ['-c', 'mkdir /root/.ssh; cp /tmp/.ssh/authorized_keys ~/.ssh/.; + chmod 700 ~/.ssh; chmod 600 ~/.ssh/*; service ssh restart; + while true ; do sleep 10000; done'] + resources: + requests: + memory: 10Ki +{% if qat_on %} + hugepages-1Gi: 2Gi + qat.intel.com/generic: '1' +{% else %} + hugepages-1Gi: 1Gi +{% endif %} + limits: + memory: 1Gi +{% if qat_on %} + hugepages-1Gi: 2Gi + qat.intel.com/generic: '1' +{% else %} + hugepages-1Gi: 1Gi +{% endif %} + lifecycle: + postStart: + exec: + command: [ "/bin/bash", "-c", "env > /tmp/qat" ] + volumeMounts: + - name: vcmts-configmap-vcmtspod + mountPath: /vcmts-config + - name: hugepages + mountPath: /hugepages + readOnly: false + - name: collectd + mountPath: /opt/collectd/var + readOnly: false + - name: sysfs + mountPath: /sys + readOnly: false + - name: sriov + mountPath: /sriov-cni + readOnly: false + - name: host-proc + mountPath: /host/proc + readOnly: true + - name: cmk-install-dir + mountPath: /opt/bin + - name: cmk-conf-dir + mountPath: /etc/cmk + - name: power-mgmt + mountPath: /opt/power_mgmt + ports: + - containerPort: 22022 + securityContext: + allowPrivilegeEscalation: true + privileged: true + node_ports: + - name: lua # Lower case alphanumeric characters or '-' + port: 22022 + networks: + - flannel + - xe0 + - xe1 + volumes: + - name: vcmts-configmap-vcmtspod + configMap: + name: vcmts-configmap-vcmtspod + defaultMode: 0744 + - name: hugepages + emptyDir: + medium: HugePages + - name: collectd + hostPath: + path: /opt/collectd/var + - name: sysfs + hostPath: + path: /sys + - name: sriov + hostPath: + path: /var/lib/cni/sriov + - name: cmk-install-dir + hostPath: + path: /opt/bin + - name: host-proc + hostPath: + path: /proc + - name: cmk-conf-dir + hostPath: + path: /etc/cmk + - name: power-mgmt + hostPath: + path: /opt/power_mgmt +{% endfor %} + +{% for index in range(0, num_tg) %} + pktgen{{index}}: + nodeSelector: + vcmtspktgen: "true" + containers: + - image: vcmts-pktgen:v18.10 + imagePullPolicy: IfNotPresent + tty: true + stdin: true + env: + - name: LUA_PATH + value: "/vcmts/Pktgen.lua" + - name: CMK_PROC_FS + value: "/host/proc" + command: /bin/bash + args: ['-c', 'mkdir /root/.ssh; cp /tmp/.ssh/authorized_keys ~/.ssh/.; + chmod 700 ~/.ssh; chmod 600 ~/.ssh/*; service ssh restart; + while true ; do sleep 10000; done'] + resources: + requests: + hugepages-1Gi: 9Gi + memory: 200Mi + limits: + hugepages-1Gi: 9Gi + memory: 200Mi + volumeMounts: + - name: sysfs + mountPath: /sys + readOnly: false + - name: hugepages + mountPath: /hugepages + readOnly: false + - name: sriov + mountPath: /sriov-cni + readOnly: false + - name: host-proc + mountPath: /host/proc + readOnly: true + - name: cmk-install-dir + mountPath: /opt/bin + - name: cmk-conf-dir + mountPath: /etc/cmk + - name: pktgen-config + mountPath: /pktgen-config + ports: + - containerPort: 22022 + securityContext: + allowPrivilegeEscalation: true + privileged: true + volumes: + - name: sysfs + hostPath: + path: /sys + - name: hugepages + emptyDir: + medium: HugePages + - name: sriov + hostPath: + path: /var/lib/cni/sriov + - name: cmk-install-dir + hostPath: + path: /opt/bin + - name: host-proc + hostPath: + path: /proc + - name: cmk-conf-dir + hostPath: + path: /etc/cmk + - name: pktgen-config + configMap: + name: vcmts-configmap-pktgen + defaultMode: 0744 + node_ports: + - name: lua # Lower case alphanumeric characters or '-' + port: 22022 + networks: + - flannel + - xe0 + - xe1 +{% endfor %} + + networks: + flannel: + args: '[{ "delegate": { "isDefaultGateway": true }}]' + plugin: flannel + xe0: + args: '[{ "delegate": { "isDefaultGateway": true }}]' + plugin: flannel + xe1: + args: '[{ "delegate": { "isDefaultGateway": true }}]' + plugin: flannel diff --git a/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_hw_aesgcm_IMIX_trex.yaml b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_hw_aesgcm_IMIX_trex.yaml new file mode 100644 index 000000000..a9c0e4860 --- /dev/null +++ b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_hw_aesgcm_IMIX_trex.yaml @@ -0,0 +1,95 @@ +# Copyright (c) 2019 Viosoft Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{% set mlr_search = mlr_search or false %} +{% set vports = vports or 2 %} +{% set tolerance_low = tolerance_low or 0.0 %} +{% set tolerance_high = tolerance_high or 0.005 %} +{% set tunnels = tunnels or 1 %} +{% set flow_count = flow_count or 1 %} +{% set worker_threads = worker_threads or [1] %} +--- +schema: yardstick:task:0.1 +description: > + This is the VPP IPSec performance tests based on the Data Plane Development + Kit (DPDK) Cryptodev framework. DUT1 and DUT2 are configured with DPDK HW + cryptodev devices and {{ tunnels }} IPsec tunnels between them. DUTs get + IPv4 traffic from TG with IMIX packet size and number of flows is + {{ flow_count }}, encrypt it and send to another DUT, where packets are + decrypted and sent back to TG. Measure successful transmit rate, throughput + NDR/PDR with MLR search is {{ "enabled" if mlr_search else "disabled" }}, latency. + +scenarios: +{% for worker_thread in worker_threads %} +- + type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput_latency_vpp.yaml + extra_args: + vports: {{ vports }} + topology: vpp-tg-topology-scale-up.yaml + nodes: + tg__0: trafficgen.yardstick + vnf__0: vnf0.yardstick + vnf__1: vnf1.yardstick + options: + traffic_type: 4 + rfc2544: + allowed_drop_rate: {{ tolerance_low }} - {{ tolerance_high }} + framesize: + uplink: {64B: 28, 570B: 16, 1518B: 4} + downlink: {64B: 28, 570B: 16, 1518B: 4} + flow: + src_ip: + - '10.0.0.0-10.0.0.100' + dst_ip: + - '20.0.0.0-20.0.0.100' + count: {{ flow_count }} + vnf__0: + collectd: + interval: 1 + # Crypto device type. Type: string - *Example:* HW_cryptodev | SW_cryptodev + # Number of RX queues, default value: ${None}. Type: integer + vnf_config: {crypto_type: 'HW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + vnf__1: + collectd: + interval: 1 + vnf_config: {crypto_type: 'HW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + tg__0: + collectd: + interval: 1 + queues_per_port: 7 + vpp_config: + # Number of tunnels + tunnels: {{ tunnels }} + # Encryption algorithms - Integrity algorithm. Type: string + # Example: aes-gcm | cbc-sha1 + crypto_algorithms: 'aes-gcm' +{% if mlr_search %} + # Maximum Frame Rate depend on Ethernet Link Speed and Frame Size + # for a 10 Gb/s Ethernet link and IMIX packet size, + # maximum rate = 10*10^9/(((28*64+16*570+4*1518)/48+8+12)*8) + max_rate: 3351206 +{% endif %} + runner: + type: Duration + duration: 500 +{% endfor %} + +context: + type: Node + name: yardstick + nfvi_type: baremetal + file: /etc/yardstick/nodes/vpp-baremetal-{{ vports }}.yaml
\ No newline at end of file diff --git a/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_hw_aesgcm_trex.yaml b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_hw_aesgcm_trex.yaml new file mode 100644 index 000000000..84a7fe61b --- /dev/null +++ b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_hw_aesgcm_trex.yaml @@ -0,0 +1,96 @@ +# Copyright (c) 2019 Viosoft Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{% set mlr_search = mlr_search or false %} +{% set vports = vports or 2 %} +{% set tolerance_low = tolerance_low or 0.0 %} +{% set tolerance_high = tolerance_high or 0.005 %} +{% set frame_size = frame_size or 64 %} +{% set tunnels = tunnels or 1 %} +{% set flow_count = flow_count or 1 %} +{% set worker_threads = worker_threads or [1] %} +--- +schema: yardstick:task:0.1 +description: > + This is the VPP IPSec performance tests based on the Data Plane Development + Kit (DPDK) Cryptodev framework. DUT1 and DUT2 are configured with DPDK HW + cryptodev devices and {{ tunnels }} IPsec tunnels between them. DUTs get + IPv4 traffic from TG with {{ frame_size }}B packet size and number of flows + is {{ flow_count }}, encrypt it and send to another DUT, where packets are + decrypted and sent back to TG. Measure successful transmit rate, throughput + NDR/PDR with MLR search is {{ "enabled" if mlr_search else "disabled" }}, latency. + +scenarios: +{% for worker_thread in worker_threads %} +- + type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput_latency_vpp.yaml + extra_args: + vports: {{ vports }} + topology: vpp-tg-topology-scale-up.yaml + nodes: + tg__0: trafficgen.yardstick + vnf__0: vnf0.yardstick + vnf__1: vnf1.yardstick + options: + traffic_type: 4 + rfc2544: + allowed_drop_rate: {{ tolerance_low }} - {{ tolerance_high }} + framesize: + uplink: {'{{ frame_size }}B': 100} + downlink: {'{{ frame_size }}B': 100} + flow: + src_ip: + - '10.0.0.0-10.0.0.100' + dst_ip: + - '20.0.0.0-20.0.0.100' + count: {{ flow_count }} + vnf__0: + collectd: + interval: 1 + # Crypto device type. Type: string - *Example:* HW_cryptodev | SW_cryptodev + # Number of RX queues, default value: ${None}. Type: integer + vnf_config: {crypto_type: 'HW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + vnf__1: + collectd: + interval: 1 + vnf_config: {crypto_type: 'HW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + tg__0: + collectd: + interval: 1 + queues_per_port: 7 + vpp_config: + # Number of tunnels + tunnels: {{ tunnels }} + # Encryption algorithms - Integrity algorithm. Type: string + # Example: aes-gcm | cbc-sha1 + crypto_algorithms: 'aes-gcm' +{% if mlr_search %} + # Maximum Frame Rate depend on Ethernet Link Speed and Frame Size + # for a 10 Gb/s Ethernet link and 64 bytes, + # maximum rate = 10*10^9/((64+8+12)*8) + max_rate: {{ (10 * 10 ** 9 / ((frame_size + 8 + 12) * 8)) | int }} +{% endif %} + runner: + type: Duration + duration: 500 +{% endfor %} + +context: + type: Node + name: yardstick + nfvi_type: baremetal + file: /etc/yardstick/nodes/vpp-baremetal-{{ vports }}.yaml
\ No newline at end of file diff --git a/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_hw_cbcsha1_IMIX_trex.yaml b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_hw_cbcsha1_IMIX_trex.yaml new file mode 100644 index 000000000..07afe809e --- /dev/null +++ b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_hw_cbcsha1_IMIX_trex.yaml @@ -0,0 +1,95 @@ +# Copyright (c) 2019 Viosoft Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{% set mlr_search = mlr_search or false %} +{% set vports = vports or 2 %} +{% set tolerance_low = tolerance_low or 0.0 %} +{% set tolerance_high = tolerance_high or 0.005 %} +{% set tunnels = tunnels or 1 %} +{% set flow_count = flow_count or 1 %} +{% set worker_threads = worker_threads or [1] %} +--- +schema: yardstick:task:0.1 +description: > + This is the VPP IPSec performance tests based on the Data Plane Development + Kit (DPDK) Cryptodev framework. DUT1 and DUT2 are configured with DPDK HW + cryptodev devices and {{ tunnels }} IPsec tunnels between them. DUTs get + IPv4 traffic from TG with IMIX packet size and number of flows is + {{ flow_count }}, encrypt it and send to another DUT, where packets are + decrypted and sent back to TG. Measure successful transmit rate, throughput + NDR/PDR with MLR search is {{ "enabled" if mlr_search else "disabled" }}, latency. + +scenarios: +{% for worker_thread in worker_threads %} +- + type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput_latency_vpp.yaml + extra_args: + vports: {{ vports }} + topology: vpp-tg-topology-scale-up.yaml + nodes: + tg__0: trafficgen.yardstick + vnf__0: vnf0.yardstick + vnf__1: vnf1.yardstick + options: + traffic_type: 4 + rfc2544: + allowed_drop_rate: {{ tolerance_low }} - {{ tolerance_high }} + framesize: + uplink: {64B: 28, 570B: 16, 1518B: 4} + downlink: {64B: 28, 570B: 16, 1518B: 4} + flow: + src_ip: + - '10.0.0.0-10.0.0.100' + dst_ip: + - '20.0.0.0-20.0.0.100' + count: {{ flow_count }} + vnf__0: + collectd: + interval: 1 + # Crypto device type. Type: string - *Example:* HW_cryptodev | SW_cryptodev + # Number of RX queues, default value: ${None}. Type: integer + vnf_config: {crypto_type: 'HW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + vnf__1: + collectd: + interval: 1 + vnf_config: {crypto_type: 'HW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + tg__0: + collectd: + interval: 1 + queues_per_port: 7 + vpp_config: + # Number of tunnels + tunnels: {{ tunnels }} + # Encryption algorithms - Integrity algorithm. Type: string + # Example: aes-gcm | cbc-sha1 + crypto_algorithms: 'cbc-sha1' +{% if mlr_search %} + # Maximum Frame Rate depend on Ethernet Link Speed and Frame Size + # for a 10 Gb/s Ethernet link and IMIX packet size, + # maximum rate = 10*10^9/(((28*64+16*570+4*1518)/48+8+12)*8) + max_rate: 3351206 +{% endif %} + runner: + type: Duration + duration: 500 +{% endfor %} + +context: + type: Node + name: yardstick + nfvi_type: baremetal + file: /etc/yardstick/nodes/vpp-baremetal-{{ vports }}.yaml
\ No newline at end of file diff --git a/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_hw_cbcsha1_trex.yaml b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_hw_cbcsha1_trex.yaml new file mode 100644 index 000000000..9e210aeed --- /dev/null +++ b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_hw_cbcsha1_trex.yaml @@ -0,0 +1,96 @@ +# Copyright (c) 2019 Viosoft Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{% set mlr_search = mlr_search or false %} +{% set vports = vports or 2 %} +{% set tolerance_low = tolerance_low or 0.0 %} +{% set tolerance_high = tolerance_high or 0.005 %} +{% set frame_size = frame_size or 64 %} +{% set tunnels = tunnels or 1 %} +{% set flow_count = flow_count or 1 %} +{% set worker_threads = worker_threads or [1] %} +--- +schema: yardstick:task:0.1 +description: > + This is the VPP IPSec performance tests based on the Data Plane Development + Kit (DPDK) Cryptodev framework. DUT1 and DUT2 are configured with DPDK HW + cryptodev devices and {{ tunnels }} IPsec tunnels between them. DUTs get + IPv4 traffic from TG with {{ frame_size }}B packet size and number of flows + is {{ flow_count }}, encrypt it and send to another DUT, where packets are + decrypted and sent back to TG. Measure successful transmit rate, throughput + NDR/PDR with MLR search is {{ "enabled" if mlr_search else "disabled" }}, latency. + +scenarios: +{% for worker_thread in worker_threads %} +- + type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput_latency_vpp.yaml + extra_args: + vports: {{ vports }} + topology: vpp-tg-topology-scale-up.yaml + nodes: + tg__0: trafficgen.yardstick + vnf__0: vnf0.yardstick + vnf__1: vnf1.yardstick + options: + traffic_type: 4 + rfc2544: + allowed_drop_rate: {{ tolerance_low }} - {{ tolerance_high }} + framesize: + uplink: {'{{ frame_size }}B': 100} + downlink: {'{{ frame_size }}B': 100} + flow: + src_ip: + - '10.0.0.0-10.0.0.100' + dst_ip: + - '20.0.0.0-20.0.0.100' + count: {{ flow_count }} + vnf__0: + collectd: + interval: 1 + # Crypto device type. Type: string - *Example:* HW_cryptodev | SW_cryptodev + # Number of RX queues, default value: ${None}. Type: integer + vnf_config: {crypto_type: 'HW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + vnf__1: + collectd: + interval: 1 + vnf_config: {crypto_type: 'HW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + tg__0: + collectd: + interval: 1 + queues_per_port: 7 + vpp_config: + # Number of tunnels + tunnels: {{ tunnels }} + # Encryption algorithms - Integrity algorithm. Type: string + # Example: aes-gcm | cbc-sha1 + crypto_algorithms: 'cbc-sha1' +{% if mlr_search %} + # Maximum Frame Rate depend on Ethernet Link Speed and Frame Size + # for a 10 Gb/s Ethernet link and 64 bytes, + # maximum rate = 10*10^9/((64+8+12)*8) + max_rate: {{ (10 * 10 ** 9 / ((frame_size + 8 + 12) * 8)) | int }} +{% endif %} + runner: + type: Duration + duration: 500 +{% endfor %} + +context: + type: Node + name: yardstick + nfvi_type: baremetal + file: /etc/yardstick/nodes/vpp-baremetal-{{ vports }}.yaml
\ No newline at end of file diff --git a/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_aesgcm_IMIX_trex.yaml b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_aesgcm_IMIX_trex.yaml new file mode 100644 index 000000000..ac7fceef6 --- /dev/null +++ b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_aesgcm_IMIX_trex.yaml @@ -0,0 +1,95 @@ +# Copyright (c) 2019 Viosoft Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{% set mlr_search = mlr_search or false %} +{% set vports = vports or 2 %} +{% set tolerance_low = tolerance_low or 0.0 %} +{% set tolerance_high = tolerance_high or 0.005 %} +{% set tunnels = tunnels or 1 %} +{% set flow_count = flow_count or 1 %} +{% set worker_threads = worker_threads or [1] %} +--- +schema: yardstick:task:0.1 +description: > + This is the VPP IPSec performance tests based on the Data Plane Development + Kit (DPDK) Cryptodev framework. DUT1 and DUT2 are configured with DPDK SW + cryptodev devices and {{ tunnels }} IPsec tunnels between them. DUTs get + IPv4 traffic from TG with IMIX packet size and number of flows is + {{ flow_count }}, encrypt it and send to another DUT, where packets are + decrypted and sent back to TG. Measure successful transmit rate, throughput + NDR/PDR with MLR search is {{ "enabled" if mlr_search else "disabled" }}, latency. + +scenarios: +{% for worker_thread in worker_threads %} +- + type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput_latency_vpp.yaml + extra_args: + vports: {{ vports }} + topology: vpp-tg-topology-scale-up.yaml + nodes: + tg__0: trafficgen.yardstick + vnf__0: vnf0.yardstick + vnf__1: vnf1.yardstick + options: + traffic_type: 4 + rfc2544: + allowed_drop_rate: {{ tolerance_low }} - {{ tolerance_high }} + framesize: + uplink: {64B: 28, 570B: 16, 1518B: 4} + downlink: {64B: 28, 570B: 16, 1518B: 4} + flow: + src_ip: + - '10.0.0.0-10.0.0.100' + dst_ip: + - '20.0.0.0-20.0.0.100' + count: {{ flow_count }} + vnf__0: + collectd: + interval: 1 + # Crypto device type. Type: string - *Example:* HW_cryptodev | SW_cryptodev + # Number of RX queues, default value: ${None}. Type: integer + vnf_config: {crypto_type: 'SW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + vnf__1: + collectd: + interval: 1 + vnf_config: {crypto_type: 'SW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + tg__0: + collectd: + interval: 1 + queues_per_port: 7 + vpp_config: + # Number of tunnels + tunnels: {{ tunnels }} + # Encryption algorithms - Integrity algorithm. Type: string + # Example: aes-gcm | cbc-sha1 + crypto_algorithms: 'aes-gcm' +{% if mlr_search %} + # Maximum Frame Rate depend on Ethernet Link Speed and Frame Size + # for a 10 Gb/s Ethernet link and IMIX packet size, + # maximum rate = 10*10^9/(((28*64+16*570+4*1518)/48+8+12)*8) + max_rate: 3351206 +{% endif %} + runner: + type: Duration + duration: 500 +{% endfor %} + +context: + type: Node + name: yardstick + nfvi_type: baremetal + file: /etc/yardstick/nodes/vpp-baremetal-{{ vports }}.yaml
\ No newline at end of file diff --git a/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_aesgcm_trex.yaml b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_aesgcm_trex.yaml index 7d1f866d5..82f27112d 100644 --- a/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_aesgcm_trex.yaml +++ b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_aesgcm_trex.yaml @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. +{% set mlr_search = mlr_search or false %} {% set vports = vports or 2 %} {% set tolerance_low = tolerance_low or 0.0 %} {% set tolerance_high = tolerance_high or 0.005 %} @@ -22,13 +23,13 @@ --- schema: yardstick:task:0.1 description: > - This is the VPP IPSec performance tests based on the Data Plane - Development Kit (DPDK) Cryptodev framework. DUT1 and DUT2 are configured - with DPDK SW cryptodev devices and {{ tunnels }} IPsec tunnels between - them. DUTs get IPv4 traffic from TG with {{ frame_size }}B packet size - and number of flows is {{ flow_count }}, encrypt it and send to another - DUT, where packets are decrypted and sent back to TG. Measure successful - transmit rate, throughput, latency. + This is the VPP IPSec performance tests based on the Data Plane Development + Kit (DPDK) Cryptodev framework. DUT1 and DUT2 are configured with DPDK SW + cryptodev devices and {{ tunnels }} IPsec tunnels between them. DUTs get + IPv4 traffic from TG with {{ frame_size }}B packet size and number of flows + is {{ flow_count }}, encrypt it and send to another DUT, where packets are + decrypted and sent back to TG. Measure successful transmit rate, throughput + NDR/PDR with MLR search is {{ "enabled" if mlr_search else "disabled" }}, latency. scenarios: {% for worker_thread in worker_threads %} @@ -77,6 +78,12 @@ scenarios: # Encryption algorithms - Integrity algorithm. Type: string # Example: aes-gcm | cbc-sha1 crypto_algorithms: 'aes-gcm' +{% if mlr_search %} + # Maximum Frame Rate depend on Ethernet Link Speed and Frame Size + # for a 10 Gb/s Ethernet link and 64 bytes, + # maximum rate = 10*10^9/((64+8+12)*8) + max_rate: {{ (10 * 10 ** 9 / ((frame_size + 8 + 12) * 8)) | int }} +{% endif %} runner: type: Duration duration: 500 diff --git a/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_cbcsha1_IMIX_trex.yaml b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_cbcsha1_IMIX_trex.yaml new file mode 100644 index 000000000..d3bc14a97 --- /dev/null +++ b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_cbcsha1_IMIX_trex.yaml @@ -0,0 +1,95 @@ +# Copyright (c) 2019 Viosoft Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{% set mlr_search = mlr_search or false %} +{% set vports = vports or 2 %} +{% set tolerance_low = tolerance_low or 0.0 %} +{% set tolerance_high = tolerance_high or 0.005 %} +{% set tunnels = tunnels or 1 %} +{% set flow_count = flow_count or 1 %} +{% set worker_threads = worker_threads or [1] %} +--- +schema: yardstick:task:0.1 +description: > + This is the VPP IPSec performance tests based on the Data Plane Development + Kit (DPDK) Cryptodev framework. DUT1 and DUT2 are configured with DPDK SW + cryptodev devices and {{ tunnels }} IPsec tunnels between them. DUTs get + IPv4 traffic from TG with IMIX packet size and number of flows is + {{ flow_count }}, encrypt it and send to another DUT, where packets are + decrypted and sent back to TG. Measure successful transmit rate, throughput + NDR/PDR with MLR search is {{ "enabled" if mlr_search else "disabled" }}, latency. + +scenarios: +{% for worker_thread in worker_threads %} +- + type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput_latency_vpp.yaml + extra_args: + vports: {{ vports }} + topology: vpp-tg-topology-scale-up.yaml + nodes: + tg__0: trafficgen.yardstick + vnf__0: vnf0.yardstick + vnf__1: vnf1.yardstick + options: + traffic_type: 4 + rfc2544: + allowed_drop_rate: {{ tolerance_low }} - {{ tolerance_high }} + framesize: + uplink: {64B: 28, 570B: 16, 1518B: 4} + downlink: {64B: 28, 570B: 16, 1518B: 4} + flow: + src_ip: + - '10.0.0.0-10.0.0.100' + dst_ip: + - '20.0.0.0-20.0.0.100' + count: {{ flow_count }} + vnf__0: + collectd: + interval: 1 + # Crypto device type. Type: string - *Example:* HW_cryptodev | SW_cryptodev + # Number of RX queues, default value: ${None}. Type: integer + vnf_config: {crypto_type: 'SW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + vnf__1: + collectd: + interval: 1 + vnf_config: {crypto_type: 'SW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + tg__0: + collectd: + interval: 1 + queues_per_port: 7 + vpp_config: + # Number of tunnels + tunnels: {{ tunnels }} + # Encryption algorithms - Integrity algorithm. Type: string + # Example: aes-gcm | cbc-sha1 + crypto_algorithms: 'cbc-sha1' +{% if mlr_search %} + # Maximum Frame Rate depend on Ethernet Link Speed and Frame Size + # for a 10 Gb/s Ethernet link and IMIX packet size, + # maximum rate = 10*10^9/(((28*64+16*570+4*1518)/48+8+12)*8) + max_rate: 3351206 +{% endif %} + runner: + type: Duration + duration: 500 +{% endfor %} + +context: + type: Node + name: yardstick + nfvi_type: baremetal + file: /etc/yardstick/nodes/vpp-baremetal-{{ vports }}.yaml
\ No newline at end of file diff --git a/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_cbcsha1_trex.yaml b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_cbcsha1_trex.yaml new file mode 100644 index 000000000..a70aa49f7 --- /dev/null +++ b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_cbcsha1_trex.yaml @@ -0,0 +1,96 @@ +# Copyright (c) 2019 Viosoft Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +{% set mlr_search = mlr_search or false %} +{% set vports = vports or 2 %} +{% set tolerance_low = tolerance_low or 0.0 %} +{% set tolerance_high = tolerance_high or 0.005 %} +{% set frame_size = frame_size or 64 %} +{% set tunnels = tunnels or 1 %} +{% set flow_count = flow_count or 1 %} +{% set worker_threads = worker_threads or [1] %} +--- +schema: yardstick:task:0.1 +description: > + This is the VPP IPSec performance tests based on the Data Plane Development + Kit (DPDK) Cryptodev framework. DUT1 and DUT2 are configured with DPDK SW + cryptodev devices and {{ tunnels }} IPsec tunnels between them. DUTs get + IPv4 traffic from TG with {{ frame_size }}B packet size and number of flows + is {{ flow_count }}, encrypt it and send to another DUT, where packets are + decrypted and sent back to TG. Measure successful transmit rate, throughput + NDR/PDR with MLR search is {{ "enabled" if mlr_search else "disabled" }}, latency. + +scenarios: +{% for worker_thread in worker_threads %} +- + type: NSPerf + traffic_profile: ../../traffic_profiles/ipv4_throughput_latency_vpp.yaml + extra_args: + vports: {{ vports }} + topology: vpp-tg-topology-scale-up.yaml + nodes: + tg__0: trafficgen.yardstick + vnf__0: vnf0.yardstick + vnf__1: vnf1.yardstick + options: + traffic_type: 4 + rfc2544: + allowed_drop_rate: {{ tolerance_low }} - {{ tolerance_high }} + framesize: + uplink: {'{{ frame_size }}B': 100} + downlink: {'{{ frame_size }}B': 100} + flow: + src_ip: + - '10.0.0.0-10.0.0.100' + dst_ip: + - '20.0.0.0-20.0.0.100' + count: {{ flow_count }} + vnf__0: + collectd: + interval: 1 + # Crypto device type. Type: string - *Example:* HW_cryptodev | SW_cryptodev + # Number of RX queues, default value: ${None}. Type: integer + vnf_config: {crypto_type: 'SW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + vnf__1: + collectd: + interval: 1 + vnf_config: {crypto_type: 'SW_cryptodev', rxq: 1, worker_config: '1C/1T', + worker_threads: {{ worker_thread }}} + tg__0: + collectd: + interval: 1 + queues_per_port: 7 + vpp_config: + # Number of tunnels + tunnels: {{ tunnels }} + # Encryption algorithms - Integrity algorithm. Type: string + # Example: aes-gcm | cbc-sha1 + crypto_algorithms: 'cbc-sha1' +{% if mlr_search %} + # Maximum Frame Rate depend on Ethernet Link Speed and Frame Size + # for a 10 Gb/s Ethernet link and 64 bytes, + # maximum rate = 10*10^9/((64+8+12)*8) + max_rate: {{ (10 * 10 ** 9 / ((frame_size + 8 + 12) * 8)) | int }} +{% endif %} + runner: + type: Duration + duration: 500 +{% endfor %} + +context: + type: Node + name: yardstick + nfvi_type: baremetal + file: /etc/yardstick/nodes/vpp-baremetal-{{ vports }}.yaml
\ No newline at end of file diff --git a/samples/vnf_samples/nsut/vpe/vpe_vnf_topology.yaml b/samples/vnf_samples/nsut/vpe/vpe_vnf_topology.yaml index 4ade967f7..b63f4cc0f 100644 --- a/samples/vnf_samples/nsut/vpe/vpe_vnf_topology.yaml +++ b/samples/vnf_samples/nsut/vpe/vpe_vnf_topology.yaml @@ -21,10 +21,10 @@ nsd:nsd-catalog: constituent-vnfd: - member-vnf-index: '1' vnfd-id-ref: tg__0 - VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml #tg_vpe_upstream.yaml #VPE VNF + VNF model: ../../vnf_descriptors/tg_rfc2544_tpl.yaml #tg_trex_tpl.yaml #TREX - member-vnf-index: '2' vnfd-id-ref: vnf__0 - VNF model: ../../vnf_descriptors/vpe_vnf.yaml #tg_l3fwd.yaml #tg_trex_tpl.yaml #TREX + VNF model: ../../vnf_descriptors/vpe_vnf.yaml #VPE VNF vld: - id: uplink_0 @@ -33,10 +33,10 @@ nsd:nsd-catalog: vnfd-connection-point-ref: - member-vnf-index-ref: '1' vnfd-connection-point-ref: xe0 - vnfd-id-ref: tg__0 #TREX + vnfd-id-ref: tg__0 - member-vnf-index-ref: '2' vnfd-connection-point-ref: xe0 - vnfd-id-ref: vnf__0 #VNF + vnfd-id-ref: vnf__0 - id: downlink_0 name: vnf__0 to tg__0 link 2 @@ -44,7 +44,7 @@ nsd:nsd-catalog: vnfd-connection-point-ref: - member-vnf-index-ref: '2' vnfd-connection-point-ref: xe1 - vnfd-id-ref: vnf__0 #L3fwd + vnfd-id-ref: vnf__0 - member-vnf-index-ref: '1' vnfd-connection-point-ref: xe1 - vnfd-id-ref: tg__0 #VPE VNF + vnfd-id-ref: tg__0 diff --git a/samples/vnf_samples/nsut/vpe/vpe_vnf_topology_ixia.yaml b/samples/vnf_samples/nsut/vpe/vpe_vnf_topology_ixia.yaml index d7e11a696..70e80a7a6 100644 --- a/samples/vnf_samples/nsut/vpe/vpe_vnf_topology_ixia.yaml +++ b/samples/vnf_samples/nsut/vpe/vpe_vnf_topology_ixia.yaml @@ -36,7 +36,7 @@ nsd:nsd-catalog: vnfd-id-ref: tg__0 #TREX - member-vnf-index-ref: '2' vnfd-connection-point-ref: xe0 - vnfd-id-ref: vnf__0 #VNF + vnfd-id-ref: vnf__0 #VNF - id: downlink_0 name: vnf__0 to tg__0 link 2 @@ -44,7 +44,7 @@ nsd:nsd-catalog: vnfd-connection-point-ref: - member-vnf-index-ref: '2' vnfd-connection-point-ref: xe1 - vnfd-id-ref: vnf__0 #L3fwd + vnfd-id-ref: vnf__0 - member-vnf-index-ref: '1' vnfd-connection-point-ref: xe1 - vnfd-id-ref: tg__0 #VPE VNF + vnfd-id-ref: tg__0 diff --git a/samples/vnf_samples/traffic_profiles/ipv4_throughput_latency_vpp.yaml b/samples/vnf_samples/traffic_profiles/ipv4_throughput_latency_vpp.yaml new file mode 100644 index 000000000..1add9bfb4 --- /dev/null +++ b/samples/vnf_samples/traffic_profiles/ipv4_throughput_latency_vpp.yaml @@ -0,0 +1,71 @@ +# Copyright (c) 2019 Viosoft Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +schema: "nsb:traffic_profile:0.1" + +# This file is a template, it will be filled with values from tc.yaml before passing to the traffic generator + +name: rfc2544 +description: Traffic profile to run RFC2544 latency +traffic_profile: + traffic_type: VppRFC2544Profile # defines traffic behavior - constant or look for highest possible throughput + enable_latency: true + test_precision: 0.1 + duration: 30 + lower_bound: 1.0 + upper_bound: 100.0 + step_interval: 0.5 + frame_rate: 100 # pc of linerate + +uplink_0: + ipv4: + id: 1 + outer_l2: + framesize: + 64B: "{{get(imix, 'imix.uplink.64B', '0') }}" + 128B: "{{get(imix, 'imix.uplink.128B', '0') }}" + 256B: "{{get(imix, 'imix.uplink.256B', '0') }}" + 373B: "{{get(imix, 'imix.uplink.373B', '0') }}" + 512B: "{{get(imix, 'imix.uplink.512B', '0') }}" + 570B: "{{get(imix, 'imix.uplink.570B', '0') }}" + 1024B: "{{get(imix, 'imix.uplink.1024B', '0') }}" + 1280B: "{{get(imix, 'imix.uplink.1280B', '0') }}" + 1400B: "{{get(imix, 'imix.uplink.1400B', '0') }}" + 1500B: "{{get(imix, 'imix.uplink.1500B', '0') }}" + 1518B: "{{get(imix, 'imix.uplink.1518B', '0') }}" + outer_l3v4: + proto: 61 + srcip4: "{{get(flow, 'flow.src_ip_0', '10.0.0.0-10.0.0.100') }}" + dstip4: "{{get(flow, 'flow.dst_ip_0', '20.0.0.0-20.0.0.100') }}" + count: "{{get(flow, 'flow.count', '1') }}" +downlink_0: + ipv4: + id: 2 + outer_l2: + framesize: + 64B: "{{ get(imix, 'imix.downlink.64B', '0') }}" + 128B: "{{ get(imix, 'imix.downlink.128B', '0') }}" + 256B: "{{ get(imix, 'imix.downlink.256B', '0') }}" + 373b: "{{ get(imix, 'imix.downlink.373B', '0') }}" + 512B: "{{ get(imix, 'imix.downlink.512B', '0') }}" + 570B: "{{get(imix, 'imix.downlink.570B', '0') }}" + 1024B: "{{get(imix, 'imix.downlink.1024B', '0') }}" + 1280B: "{{get(imix, 'imix.downlink.1280B', '0') }}" + 1400B: "{{get(imix, 'imix.downlink.1400B', '0') }}" + 1500B: "{{get(imix, 'imix.downlink.1500B', '0') }}" + 1518B: "{{get(imix, 'imix.downlink.1518B', '0') }}" + outer_l3v4: + proto: 61 + srcip4: "{{get(flow, 'flow.dst_ip_0', '20.0.0.0-20.0.0.100') }}" + dstip4: "{{get(flow, 'flow.src_ip_0', '10.0.0.0-10.0.0.100') }}" + count: "{{get(flow, 'flow.count', '1') }}"
\ No newline at end of file |