Add NSB test descriptors for vIPSEC testcase 49/65249/11
authortreyad <treyad@viosoft.com>
Tue, 20 Nov 2018 09:43:11 +0000 (01:43 -0800)
committertreyad <treyad@viosoft.com>
Fri, 18 Jan 2019 03:52:42 +0000 (19:52 -0800)
JIRA: YARDSTICK-1452

Change-Id: Id9731ab52da76efb553a89629ca4639ff3c09650
Signed-off-by: treyad <treyad@viosoft.com>
etc/yardstick/nodes/pod.yaml.vpp.sample [new file with mode: 0644]
samples/vnf_samples/nsut/ipsec/tc_baremetal_rfc2544_ipv4_sw_aesgcm_trex.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/ipsec/vpp-tg-topology-scale-up.yaml [new file with mode: 0644]
samples/vnf_samples/vnf_descriptors/tg_vpp_tpl.yaml [new file with mode: 0644]
samples/vnf_samples/vnf_descriptors/vpp_vnfd.yaml [new file with mode: 0644]

diff --git a/etc/yardstick/nodes/pod.yaml.vpp.sample b/etc/yardstick/nodes/pod.yaml.vpp.sample
new file mode 100644 (file)
index 0000000..15fb410
--- /dev/null
@@ -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 (file)
index 0000000..7d1f866
--- /dev/null
@@ -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 (file)
index 0000000..067ef24
--- /dev/null
@@ -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 (file)
index 0000000..7842a0a
--- /dev/null
@@ -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 (file)
index 0000000..f8aeb5c
--- /dev/null
@@ -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