diff options
author | Volodymyr Mytnyk <volodymyrx.mytnyk@intel.com> | 2019-02-07 08:32:24 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2019-02-07 08:32:24 +0000 |
commit | 4c99c454bd7d0b20f9cc5d16621ae814b8c6e5aa (patch) | |
tree | c366f9a1eb3f82ed86cb853fc82fd5fafad24e4f | |
parent | 88c5dda9712afc71742b164905f21cfff45926fa (diff) | |
parent | 01f17233e122fc7c549007355a650177fda91f26 (diff) |
Merge "Add NSB test descriptors for vIPSEC testcase"
5 files changed, 361 insertions, 0 deletions
diff --git a/etc/yardstick/nodes/pod.yaml.vpp.sample b/etc/yardstick/nodes/pod.yaml.vpp.sample new file mode 100644 index 000000000..15fb410f5 --- /dev/null +++ b/etc/yardstick/nodes/pod.yaml.vpp.sample @@ -0,0 +1,84 @@ +# 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. + +nodes: +- + name: trafficgen + role: TrafficGen + ip: 10.10.201.10 + port: 22 + user: root + username: root + password: r00t + interfaces: + xe0: + driver: igb_uio + local_mac: "90:e2:ba:7c:30:e8" + vpci: "0000:81:00.0" + local_ip: "192.168.100.1" + netmask: "255.255.255.0" + dpdk_port_num: 0 + xe1: + driver: igb_uio + local_mac: "90:e2:ba:7c:30:e9" + vpci: "0000:81:00.1" + local_ip: "192.168.101.1" + netmask: "255.255.255.0" + dpdk_port_num: 1 +- + name: vnf0 + role: VirtualNetworkFunction + ip: 10.10.201.101 + port: 22 + user: root + username: root + password: r00t + interfaces: + xe0: + driver: igb_uio + local_mac: "90:e2:ba:7c:41:a8" + vpci: "0000:ff:06.0" + local_ip: "192.168.100.2" + netmask: "255.255.255.0" + dpdk_port_num: 0 + xe1: + driver: igb_uio + local_mac: "4e:90:85:d3:c5:13" + vpci: "0000:ff:07.0" + local_ip: "1.1.1.1" + netmask: "255.255.255.0" + dpdk_port_num: 1 +- + name: vnf1 + role: VirtualNetworkFunction + ip: 10.10.201.102 + port: 22 + user: root + username: root + password: r00t + interfaces: + xe0: + driver: igb_uio + local_mac: "90:e2:ba:7c:41:a9" + vpci: "0000:ff:06.0" + local_ip: "192.168.101.2" + netmask: "255.255.255.0" + dpdk_port_num: 0 + xe1: + driver: igb_uio + local_mac: "0a:b1:ec:fd:a2:66" + vpci: "0000:ff:07.0" + local_ip: "1.1.1.2" + netmask: "255.255.255.0" + dpdk_port_num: 1 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 |