Add pktgen test case base files 57/59957/2
authorRodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Mon, 23 Jul 2018 11:18:38 +0000 (12:18 +0100)
committerRodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
Mon, 23 Jul 2018 11:18:56 +0000 (12:18 +0100)
Added pktgen VNF topology, VNF descriptor and traffic profile files.

JIRA: YARDSTICK-1346

Change-Id: Ifb1824edb2dc8db1afa83a53573fb2ed1c2a79ea
Signed-off-by: Rodolfo Alonso Hernandez <rodolfo.alonso.hernandez@intel.com>
samples/vnf_samples/nsut/cmts/cmts-tg-topology.yaml [new file with mode: 0644]
samples/vnf_samples/nsut/cmts/tc_k8s_pktgen_01.yaml [new file with mode: 0644]
samples/vnf_samples/traffic_profiles/pktgen_throughput.yaml [new file with mode: 0644]
samples/vnf_samples/vnf_descriptors/tg_pktgen.yaml [new file with mode: 0644]

diff --git a/samples/vnf_samples/nsut/cmts/cmts-tg-topology.yaml b/samples/vnf_samples/nsut/cmts/cmts-tg-topology.yaml
new file mode 100644 (file)
index 0000000..81323e7
--- /dev/null
@@ -0,0 +1,39 @@
+# 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.
+---
+nsd:nsd-catalog:
+    nsd:
+    -   id: cmts-tg-topology
+        name: cmts-tg-topology
+        short-name: cmts-tg-topology
+        description: cmts-tg-topology
+        constituent-vnfd:
+        -   member-vnf-index: '1'
+            vnfd-id-ref: tg__0
+            VNF model: ../../vnf_descriptors/tg_pktgen.yaml
+        -   member-vnf-index: '2'
+            vnfd-id-ref: vnf__0
+            VNF model: ../../vnf_descriptors/tg_pktgen.yaml
+
+        vld: []
+#        -   id: uplink
+#            name: tg__0 to vnf__0 link 1
+#            type: ELAN
+#            vnfd-connection-point-ref:
+#            -   member-vnf-index-ref: '1'
+#                vnfd-connection-point-ref: sriov01
+#                vnfd-id-ref: tg__0
+#            -   member-vnf-index-ref: '2'
+#                vnfd-connection-point-ref: sriov01
+#                vnfd-id-ref: vnf__0
diff --git a/samples/vnf_samples/nsut/cmts/tc_k8s_pktgen_01.yaml b/samples/vnf_samples/nsut/cmts/tc_k8s_pktgen_01.yaml
new file mode 100644 (file)
index 0000000..cab8bb8
--- /dev/null
@@ -0,0 +1,171 @@
+# 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
+scenarios:
+- type: NSPerf
+  traffic_profile: ../../traffic_profiles/pktgen_throughput.yaml
+  topology: cmts-tg-topology.yaml
+  nodes:
+    tg__0: trafficgen-k8syardstick
+    vnf__0: vnf-k8syardstick
+  options: {}
+  runner:
+    type: IterationIPC
+    iterations: 10
+    interval: 15
+    timeout: 10000
+context:
+  name: k8syardstick
+  type: Kubernetes
+
+  servers:
+    vnf:
+      containers:
+        - image: si-docker.ir.intel.com/vcmts-ubuntu/vcmts-pktgen-uepi
+          args: ["/opt/bin/cmk isolate --conf-dir=/etc/cmk --socket-id=0 --pool=dataplane /vcmts/setup.sh anga_mac_1_ds.pcap ds"]
+          env:
+            - name: LUA_PATH
+              value: "/vcmts/Pktgen.lua"
+            - name: CMK_PROC_FS
+              value: "/host/proc"
+          resources:
+            requests:
+              pod.alpha.kubernetes.io/opaque-int-resource-cmk: "1"
+          ports:
+            - containerPort: 22022
+          volumeMounts:
+            - name: hugepages
+              mountPath: /dev/hugepages
+            - name: sysfs
+              mountPath: /sys
+            - name: sriov
+              mountPath: /sriov-cni
+            - name: host-proc
+              mountPath: /host/proc
+              readOnly: true
+            - name: cmk-install-dir
+              mountPath: /opt/bin
+            - name: cmk-conf-dir
+              mountPath: /etc/cmk
+          securityContext:
+            allowPrivilegeEscalation: true
+            privileged: true
+
+      node_ports:
+        - name: lua  # Lower case alphanumeric characters or '-'
+          port: 22022
+      networks:
+        - flannel
+        - sriov01
+      volumes:
+        - name: hugepages
+          hostPath:
+            path: /dev/hugepages
+        - 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
+
+    trafficgen:
+      containers:
+        - image: si-docker.ir.intel.com/vcmts-ubuntu/vcmts-pktgen-uepi
+          args: ["/opt/bin/cmk isolate --conf-dir=/etc/cmk --socket-id=0 --pool=dataplane /vcmts/setup.sh anga_mac_1_ds.pcap ds"]
+          env:
+            - name: LUA_PATH
+              value: "/vcmts/Pktgen.lua"
+            - name: CMK_PROC_FS
+              value: "/host/proc"
+          resources:
+            requests:
+              pod.alpha.kubernetes.io/opaque-int-resource-cmk: "1"
+          ports:
+            - containerPort: 22022
+          volumeMounts:
+            - name: hugepages
+              mountPath: /dev/hugepages
+            - name: sysfs
+              mountPath: /sys
+            - name: sriov
+              mountPath: /sriov-cni
+            - name: host-proc
+              mountPath: /host/proc
+              readOnly: true
+            - name: cmk-install-dir
+              mountPath: /opt/bin
+            - name: cmk-conf-dir
+              mountPath: /etc/cmk
+          securityContext:
+            allowPrivilegeEscalation: true
+            privileged: true
+
+      node_ports:
+        - name: lua  # Lower case alphanumeric characters or '-'
+          port: 22022
+      networks:
+        - flannel
+        - sriov01
+      volumes:
+        - name: hugepages
+          hostPath:
+            path: /dev/hugepages
+        - 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
+
+  networks:
+    flannel:
+      args: '[{ "delegate": { "isDefaultGateway": true }}]'
+      plugin: flannel
+    sriov01:
+      plugin: sriov
+      args: '[{"if0": "ens802f0",
+               "if0name": "net0",
+               "dpdk": {
+                   "kernel_driver": "i40evf",
+                   "dpdk_driver": "igb_uio",
+                   "dpdk_tool": "/opt/nsb_bin/dpdk-devbind.py"}
+             }]'
+    sriov02:
+      plugin: sriov
+      args: '[{"if0": "ens802f0",
+               "if0name": "net0",
+               "dpdk": {
+                   "kernel_driver": "i40evf",
+                   "dpdk_driver": "igb_uio",
+                   "dpdk_tool": "/opt/nsb_bin/dpdk-devbind.py"}
+             }]'
diff --git a/samples/vnf_samples/traffic_profiles/pktgen_throughput.yaml b/samples/vnf_samples/traffic_profiles/pktgen_throughput.yaml
new file mode 100644 (file)
index 0000000..e222e1d
--- /dev/null
@@ -0,0 +1,21 @@
+# 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: "nsb:traffic_profile:0.1"
+
+name: pktgen
+description: Traffic profile to run throughput tests
+traffic_profile:
+  traffic_type: PktgenTrafficProfile
+  duration: 15
diff --git a/samples/vnf_samples/vnf_descriptors/tg_pktgen.yaml b/samples/vnf_samples/vnf_descriptors/tg_pktgen.yaml
new file mode 100644 (file)
index 0000000..17e6316
--- /dev/null
@@ -0,0 +1,47 @@
+# 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.
+---
+vnfd:vnfd-catalog:
+    vnfd:
+    -   id: PktgenTrafficGen  # NSB class mapping
+        name: pktgen_tg
+        short-name: pktgen_tg
+        description: Pktgen DPDK traffic generator
+        mgmt-interface:
+            vdu-id: pktgen
+            {% if ip is defined %}
+            ip: '{{ ip }}'
+            {% endif %}
+            {% if service_ports is defined and service_ports %}
+            service_ports:
+                {% for port in service_ports %}
+                - port: "{{ port['port']|int }}"
+                  node_port: "{{ port['node_port']|int }}"
+                  target_port: "{{ port['target_port']|int }}"
+                {% endfor %}
+            {% endif %}
+
+        vdu:
+        -   id: pktgen_tg
+            name: pktgen_tg
+            description: Pktgen DPDK traffic generator
+
+        benchmark:
+            kpi:
+                - rx_throughput_fps
+                - tx_throughput_fps
+                - tx_throughput_mbps
+                - rx_throughput_mbps
+                - in_packets
+                - out_packets