From 01f17233e122fc7c549007355a650177fda91f26 Mon Sep 17 00:00:00 2001 From: treyad Date: Tue, 20 Nov 2018 01:43:11 -0800 Subject: Add NSB test descriptors for vIPSEC testcase JIRA: YARDSTICK-1452 Change-Id: Id9731ab52da76efb553a89629ca4639ff3c09650 Signed-off-by: treyad --- .../tc_baremetal_rfc2544_ipv4_sw_aesgcm_trex.yaml | 89 ++++++++++++++++++++++ .../nsut/ipsec/vpp-tg-topology-scale-up.yaml | 65 ++++++++++++++++ .../vnf_samples/vnf_descriptors/tg_vpp_tpl.yaml | 49 ++++++++++++ samples/vnf_samples/vnf_descriptors/vpp_vnfd.yaml | 74 ++++++++++++++++++ 4 files changed, 277 insertions(+) create mode 100644 samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_aesgcm_trex.yaml create mode 100644 samples/vnf_samples/nsut/ipsec/vpp-tg-topology-scale-up.yaml create mode 100644 samples/vnf_samples/vnf_descriptors/tg_vpp_tpl.yaml create mode 100644 samples/vnf_samples/vnf_descriptors/vpp_vnfd.yaml (limited to 'samples') 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 new file mode 100644 index 000000000..7d1f866d5 --- /dev/null +++ b/samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_aesgcm_trex.yaml @@ -0,0 +1,89 @@ +# 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 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, 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: 'aes-gcm' + 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/vpp-tg-topology-scale-up.yaml b/samples/vnf_samples/nsut/ipsec/vpp-tg-topology-scale-up.yaml new file mode 100644 index 000000000..067ef2425 --- /dev/null +++ b/samples/vnf_samples/nsut/ipsec/vpp-tg-topology-scale-up.yaml @@ -0,0 +1,65 @@ +# 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 vports = get(extra_args, 'vports', 2) %} + +nsd:nsd-catalog: + nsd: + - id: ipsec-tg-topology + name: ipsec-tg-topology + short-name: ipsec-tg-topology + description: ipsec-tg-topology + constituent-vnfd: + - member-vnf-index: '1' + vnfd-id-ref: tg__0 + VNF model: ../../vnf_descriptors/tg_vpp_tpl.yaml # Traffic Generator + - member-vnf-index: '2' + vnfd-id-ref: vnf__0 + VNF model: ../../vnf_descriptors/vpp_vnfd.yaml # IPSec + - member-vnf-index: '3' + vnfd-id-ref: vnf__1 + VNF model: ../../vnf_descriptors/vpp_vnfd.yaml # IPSec + vld: +{% for vport in range(0,vports,2|int) %} + - id: uplink_{{loop.index0}} + name: tg__0 to vnf__0 link {{ vport + 1 }} + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe{{ vport }} + vnfd-id-ref: tg__0 + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe{{ vport }} + vnfd-id-ref: vnf__0 + - id: ciphertext + name: vnf__0 to vnf__1 link {{ vport + 2 }} + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '2' + vnfd-connection-point-ref: xe{{ vport + 1 }} + vnfd-id-ref: vnf__0 + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe{{ vport + 1 }} + vnfd-id-ref: vnf__1 + - id: downlink_{{loop.index0}} + name: vnf__1 to tg__0 link {{ vport + 3 }} + type: ELAN + vnfd-connection-point-ref: + - member-vnf-index-ref: '3' + vnfd-connection-point-ref: xe{{ vport }} + vnfd-id-ref: vnf__1 + - member-vnf-index-ref: '1' + vnfd-connection-point-ref: xe{{ vport + 1 }} + vnfd-id-ref: tg__0 +{% endfor %} \ No newline at end of file diff --git a/samples/vnf_samples/vnf_descriptors/tg_vpp_tpl.yaml b/samples/vnf_samples/vnf_descriptors/tg_vpp_tpl.yaml new file mode 100644 index 000000000..7842a0a0a --- /dev/null +++ b/samples/vnf_samples/vnf_descriptors/tg_vpp_tpl.yaml @@ -0,0 +1,49 @@ +# 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. + +vnfd:vnfd-catalog: + vnfd: + - id: TrexTrafficGenVpp # nsb class mapping + name: trexverifier + short-name: trexverifier + description: TRex stateless traffic verifier + mgmt-interface: + vdu-id: trexgen-baremetal + {% if user is defined %} + user: '{{user}}' # Value filled by vnfdgen + {% endif %} + {% if password is defined %} + password: '{{password}}' # Value filled by vnfdgen + {% endif %} + {% if ip is defined %} + ip: '{{ip}}' # Value filled by vnfdgen + {% endif %} + {% if key_filename is defined %} + key_filename: '{{key_filename}}' # Value filled by vnfdgen + {% endif %} + vdu: + - id: trexgen-baremetal + name: trexgen-baremetal + description: TRex stateless traffic verifier + benchmark: + kpi: + - rx_throughput_fps + - tx_throughput_fps + - tx_throughput_mbps + - rx_throughput_mbps + - in_packets + - out_packets + - min_latency + - max_latency + - avg_latency \ No newline at end of file diff --git a/samples/vnf_samples/vnf_descriptors/vpp_vnfd.yaml b/samples/vnf_samples/vnf_descriptors/vpp_vnfd.yaml new file mode 100644 index 000000000..f8aeb5c84 --- /dev/null +++ b/samples/vnf_samples/vnf_descriptors/vpp_vnfd.yaml @@ -0,0 +1,74 @@ +# 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. + +vnfd:vnfd-catalog: + vnfd: + - id: VipsecApproxVnf + name: IpsecVnf + short-name: IpsecVnf + description: VPP IPsec + mgmt-interface: + vdu-id: ipsecvnf-baremetal + {% if user is defined %} + user: '{{user}}' # Value filled by vnfdgen + {% endif %} + {% if password is defined %} + password: '{{password}}' # Value filled by vnfdgen + {% endif %} + {% if ip is defined %} + ip: '{{ip}}' # Value filled by vnfdgen + {% endif %} + {% if key_filename is defined %} + key_filename: '{{key_filename}}' # Value filled by vnfdgen + {% endif %} + connection-point: + - name: xe0 + type: VPORT + - name: xe1 + type: VPORT + vdu: + - id: ipsecvnf-baremetal + name: ipsecvnf-baremetal + description: VPP Ipsec + external-interface: + - name: xe0 + virtual-interface: + type: PCI-PASSTHROUGH + # Substitution variables MUST be quoted. Otherwise Python can misinterpet them. + vpci: '{{ interfaces.xe0.vpci }}' # Value filled by vnfdgen + local_ip: '{{ interfaces.xe0.local_ip }}' # Value filled by vnfdgen + dst_ip: '{{ interfaces.xe0.dst_ip }}' # Value filled by vnfdgen + local_mac: '{{ interfaces.xe0.local_mac }}' # Value filled by vnfdgen + netmask: '{{ interfaces.xe0.netmask }}' # Value filled by vnfdgen + dst_mac: '{{ interfaces.xe0.dst_mac }}' # Value filled by vnfdgen + bandwidth: 10 Gbps + vnfd-connection-point-ref: xe0 + - name: xe1 + virtual-interface: + type: PCI-PASSTHROUGH + # Substitution variables MUST be quoted. Otherwise Python can misinterpet them. + vpci: '{{ interfaces.xe1.vpci }}' # Value filled by vnfdgen + local_ip: '{{ interfaces.xe1.local_ip }}' # Value filled by vnfdgen + dst_ip: '{{ interfaces.xe1.dst_ip }}' # Value filled by vnfdgen + local_mac: '{{ interfaces.xe1.local_mac }}' # Value filled by vnfdgen + netmask: '{{ interfaces.xe1.netmask }}' # Value filled by vnfdgen + dst_mac: '{{ interfaces.xe1.dst_mac }}' # Value filled by vnfdgen + bandwidth: 10 Gbps + vnfd-connection-point-ref: xe1 + routing_table: {{ routing_table }} + benchmark: + kpi: + - packets_in + - packets_fwd + - packets_dropped \ No newline at end of file -- cgit 1.2.3-korg